本文并不是吐槽Lint的不好,而是在学习Lint过程碰到问题,心态是奔溃的,以及解决每个问题带来的喜感。 不知道大家有没有注意项目中黄色代码块的提示,如下图所示: ?...或者红色标记的代码(并没有任何错误),如下图所示: ? 上文黄色的提醒和红色警告,都是来自Android Studio内置的Lint工具检查我们的代码后而作出的动作。...也就是说,通过Lint工具,我们可以写出更高质量的代码和代码潜在的问题,妈妈再也不用担心我的同事用中文命名了。也可以通过定制Lint相关配置,提高开发效率。...本文开始的红色错误可以通过注解来消除(一般建议是根据提示进行修正,除非明白自己在做什么),可以在类或该代码所在的方法添加@SuppressLint。 ?...不,还不知道Lint真正用来干嘛呢? 2.3 检查项目质量 不好容易开发了个APP,准备开始上班摸鱼了。还让代码自查?那就通过Lint来看看代码质量如何吧。
帮助找到bug:对代码进行重构,可以深入理解代码的作为,在搞清楚程序结构的同时,想不把bug揪出来都难。 提高编程速度:良好的设计是快速开发的根本,改善设计、提高可读性,减少错误,这些都是提高质量。...3、何时重构 任何情况下我都反对专门拨出时间进行重构。重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地的进行。...修改错误的时候 review代码的时重构 间接层和重构 计算机科学是这样一门科学:它相信所有的问题都可以通过增加一个间接层来解决。...每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中。 如何确定提炼哪一段代码?寻找注释是一个很好的技巧。它们通常能指出代码用途和实现手法之间的语义距离。...常常只使用搬移函数和搬移字段简单地移动对象行为,就可以解决这些问题。如果这两个重构手法都需要用到,我会首先使用搬移字段,再使用搬移方法。
作者:小村医 https://www.jianshu.com/p/3f04b6aebad2 狗屎一样的代码如何重构? 重构不止是代码整理,它提供了一种高效且受控的代码整理技术。...帮助找到bug:对代码进行重构,可以深入理解代码的作为,在搞清楚程序结构的同时,想不把bug揪出来都难。 提高编程速度:良好的设计是快速开发的根本,改善设计、提高可读性,减少错误,这些都是提高质量。...3、何时重构 任何情况下我都反对专门拨出时间进行重构。重构本来就不是一件应该特别拨出时间做的事情,重构应该随时随地的进行。...修改错误的时候,review代码的时重构 间接层和重构 计算机科学是这样一门科学:它相信所有的问题都可以通过增加一个间接层来解决。...每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中。 如何确定提炼哪一段代码?寻找注释是一个很好的技巧。它们通常能指出代码用途和实现手法之间的语义距离。
狗屎一样的代码如何重构? 重构不止是代码整理,它提供了一种高效且受控的代码整理技术。...提高编程速度:良好的设计是快速开发的根本,改善设计、提高可读性,减少错误,这些都是提高质量。 3、何时重构 任何情况下我都反对专门拨出时间进行重构。...修改错误的时候,review代码的时重构 间接层和重构 计算机科学是这样一门科学:它相信所有的问题都可以通过增加一个间接层来解决。...每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中。 如何确定提炼哪一段代码?寻找注释是一个很好的技巧。它们通常能指出代码用途和实现手法之间的语义距离。...常常只使用搬移函数和搬移字段简单地移动对象行为,就可以解决这些问题。如果这两个重构手法都需要用到,我会首先使用搬移字段,再使用搬移方法。
这点我以前确实没想过 刚看到这个观点的时候,我是很不以为然的,谁让它标题不吸引人>>>《构建测试体系》 就这标题,谁不知道要测试啊。还好我没有“以貌取文”,我认真的看了下去。...为什么调试会花掉大把时间,因为工程大啊,你说它突然来个段错误,你知道是哪里段错误?段错误会死机,那不死机的呢?...那有问题就是有问题啊,专项解决不是效率更高吗!!! 行吧,我写,那怎么写啊? 怎么写那是个人自己的事情。...但是,我想说的是,测试代码,最好写在功能类之前,这样可以预先界定功能类的具体功能,也可以把思路清晰一下。 至于测试代码要测试哪些东西?...一般测试的地方: 1、寻找内存边界条件,防止越界(段错误) 2、寻找特殊的,可能导致错误的条件。 3、测试最高容量、效率,如线程池、epoll等。 4、测试数据库调度。
还有就是在跟团队协作的时候,每个人都保持同一个风格进行代码书写,这样团队内部相互去看别人的代码的时候,就可以更容易的看懂。 ESLint实战小技巧全揭秘 那么ESLint如何去使用呢?...现在我们就可以到terminal里面输入 $ npm run lint 来检验项目里的代码是否符合ESLint的规则。...怎么在项目中预处理错误,eslint-loader来帮忙 我希望在项目开发的过程当中,每次修改代码,它都能够自动进行ESLint的检查。...里面就会马上报错,此刻我猜想terminal的内心活动应该是:“TMD,写的什么烂代码,天天写bug气得我每次脸都涨的通红”~~~ 幸运的是,机器是没有感情的,我们却可以嗨皮地立马定位到错误,然后把它改掉就可以了...写在最后 这就是ESLint,辅助编码规范的执行,有效控制项目代码的质量。更多操作指南可以前往官网了解,这里只提供在公司项目中快速上手ESLint的技巧,以及在实战项目中碰到的问题的解决方案。
给大家分享一下:我是如何用 AI 辅助写作的 标题平淡无奇、素材不够充实、遣词造句缺乏吸引力,这些问题是每个刚开始写作的人都会碰到的。...如果不确定如何提要求,也可以提供你觉得好的文章内容和标题,AI 会根据这些进行参考。 第四,生成封面图 写完文章后,很多人都会为配图而发愁。我们可以利用 AI 来帮助完成这一步骤。...尽管大部分 AI 模型无法直接根据文章内容生成封面图,或生成的图片与内容关联不大,但我们可以结合不同的 AI 工具来完成这一任务。...我自己的操作流程是:让 Kimi 根据文章内容编写绘图模型提示语,然后交给豆包根据提示语生成图片。 不要局限于某个 AI 模型,要灵活运用不同 AI 的长处。...第五,模版化写作 当你写了足够数量的文章,形成了固定的模板和风格后,你就可以让 AI 来代替你写作。 例如: 请根据我发给你的【参考资料】和【模板】,写一篇文章,主要读者是逻辑学初学者。
新故事背景: 上周末的,半夜11点多写完了《我用100行代码来支援青岛抗击疫情》,大概的内容是帮助之前的同学来处理几个excel匹配的问题。...因为这里的关于打电话产生的描述并没统一规定,最后统计出来的96句不重样的描述。那么如何达到如下图所需要的效果呢?...解决思路: 我一开始的解决思路是,在看原始数据上,户籍地这一栏多数都是写的地址的全称,比如说山东省青岛市黄岛区嘉陵江路777号XXX小区等等。...上篇文章说,我在写一个关于打工人如何处理excel类的问题教程,我是真的在有准备。...好了,今天就分享到这里,我是马拉松程序员,可不至于代码!
上篇文章介绍了我博客的一个架构,这里具体说下我是如何快速的通过git和fabric来持续部署我的博客的。...先来说一个场景,我前几天上线了一个 OSQA _ 系统,为了方便以后来的网友在博客留言里提问时看到我有这样的一个系统,所以我决定在留言框上方加一句话,也就是现在在留言上方看到的那个文案...简单的背后一定是有复杂的支撑,不过我这小小的博客不用很复杂。下面开始阐述下背后的原理 搭建git服务器 不要被题目吓到,只是一个简单的git仓库,基于本地协议(文件系统)。...到此你的git服务器就搭建好了,你本地可以直接push代码到服务器上。 用fabric快速部署 所谓部署,其实就是把你最新的代码放到运行的环境中去,然后重启服务。...上篇文章有提到,我用supervisor来管理我的Django进程,所以我需要做的就是在部署代码的地方pull一下最新的代码然后重启supervisor,不需要考虑virtuanlenv的事情。
近期发现,开发功能的时候发现了一个 mq 消费顺序错乱(历史遗留问题),导致业务异常的问题,看看我是如何解决的 问题抛出 首先,简单介绍一下情况: 线上 k8s 有多个 pod 会去消费 mq 中的消息...思考解决 对于这个问题如何解决呢?...,然后按照顺序处理消息即可,但是这个方式弊端比较明显 当发送了多个批量大包消息的时候,B 服务如果自身处理不过来,也会导致类似的问题,无法根治 需要 B 服务新增和修改的代码较多,肯定谈不下来 而且对于绑定策略的服务来说...2.1 初始化 mq 消费者,并开启协程进行消费 2.2 对 redis 锁进行续期,此处咱们 10 秒续期一次 3 若拿锁失败,则休息 10 秒再去拿锁 这样来处理的话,我们就可以应对多个 pod 来消费同一类消息的时候...,保证同时只有一个 pod 在处理 mq 中的消息了,当然如果正在处理消息的 pod 出现了异常,对于其他 pod ,最晚会在 40 秒之后拿到锁,对于大量的消息来说,这个还是可以容忍的 对应的代码逻辑如下
相信大部分读者对“死锁”这个词都是略有耳闻的,但从我对后端开发岗位的面试情况来看很多同学往往对死锁都还没有系统的了解。...这样一来,线程只会向前单向等待锁释放,自然也就无法形成一个环路了。 其实大部分死锁解决方法不止可以用于多线程编程领域,还可以扩展到更多的并发场景下。...在这种情况下,我们可以对方案进行扩充,例如Linux在内存映射代码就使用了一种锁分组排序的方式来解决这个问题。...数据库在被外部应用调用的过程中是没办法获知外部应用的逻辑细节的,所以自然也就没办法用之前说的种种方法来解决死锁问题,只能通过事后检测并恢复来对死锁问题做最低限度的保障。...相信大家可以在不同的场景中都能找到适合该场景的解决方案,但是锁本质上是容易引入问题的,所以如果不是确有必要,最好不要贸然用锁来进行处理。
1.由同事抛的一个问题开始 最近项目组的一个同事遇到了一个问题,问我的意见,一下子引起的我的兴趣,因为这个问题我也是第一次遇到。...平时自认为对spring循环依赖问题还是比较了解的,直到遇到这个和后面的几个问题后,重新刷新了我的认识。...下面用一张图告诉你,spring是如何解决循环依赖的: ? 图1 细心的朋友可能会发现在这种场景中第二级缓存作用不大。...我非常负责任的告诉你程序能够正常启动。...答案在AbstractBeanFactory类的doGetBean方法的这段代码中: ? 它会检查dependsOn的实例有没有循环依赖,如果有循环依赖则抛异常。 4.出现循环依赖如何解决?
我菊花一紧,裤子还没来得及提。这是我入职拼多多后第一次遇到的线上告警。 从告警提示来看,是新生代垃圾回收次数过多,换种角度想想,应该是代码中某个地方创建了太多的对象,而且很快就被回收。...要知道拼多多的交易额数据是非常多的。虽然已经在代码里限定了同步粒度是1000条一次,但是还是非常频繁的创建和销毁对象。而且数据必须重新封装,这是无法避免的,那怎么解决呢? 3....这是从任务粒度的角度去解决,把任务分的更细,这个方案是可行的,也是有效果的。 但是就在昨天,又一次告警了……说明把任务拆分后,虽然可以降低负载,但是仍然没法满足预设的阈值。 4....我简单抽象一下如何将任务分片去让所有机器调度,而且保证任务的完整性。...2)调度平台非常重要,我之前参与的一个项目也有很多定时器,但是缺少一个统一的调度平台,代码里定时器乱飞,这里有个@Scheduled,那里也有个,有时候你根本不知道哪个定时器在执行。
所以,我开始向ChatGPT提出我的需求 于是给出了以下这些对话 当我一步一步按照它给我的步骤来实现时。前面还是挺顺的。 首先是添加方式。直接在这里就能添加了 刚开始的时候。...baidu.com 然后运行发现是能正常运行的 现在的问题就是如何利用快捷键来实现把Chrome的地址栏添加到文件夹里面了。...开发Chrome插件的经验较少,所以目前不太知道如何设定一个快捷键来实现这一功能 于是曲线救国,在这里 曾经分享过如何来利用alfred来实现对一些快捷操作来完成的。...当然在这过程中并非也一直这么顺利,有一些类似于的错误,好在ChatGPT大部分也都能一一解决 The error you're encountering, "ReferenceError: XMLHttpRequest...一些思考 待解决 目前是利用了alfred来解决写入文件的问题。后续需要摒弃到alfred这个软件。 解决完上面这条后,仍然需要利用快捷键来实现对地址栏的添加 如果解决完了上面这2个问题。
有许多情况可能导致 Web 服务器响应具有特定错误代码的请求——我们将介绍常见的潜在原因和解决方案。...这意味着返回的实际状态代码取决于服务器软件如何处理特定错误——本指南通常应该为您指明正确的方向 现在您已经对 HTTP 状态代码有了一个高层次的了解,我们将看看常见的错误。...这通常发生在以下情况: 服务器之间的网络连接不良 由于性能不佳,执行请求的后端服务器速度太慢 网关或代理服务器的超时时间太短 结论 现在您已经熟悉了最常见的 HTTP 错误代码以及这些代码的常见解决方案...,您应该有一个很好的基础来解决 Web 服务器或应用程序的问题。...如果您遇到本指南中未提及的任何错误代码,或者您知道所描述的其他可能的解决方案,请随时在评论中讨论它们!
2.程序中的实例 我们的代码中也许存在许多纰漏,导致用户使用时程序突然停止工作,例如下面简单的Java代码完成一个加法器: import java.util.Scanner; public class...2.关键字try、throw、throws、catch、finally try: 尝试执行被此关键字作用的代码块A,若出现异常则忽略代码块A中剩下的代码。...3.try-catch块 try语句块中代码执行时发生三种情况: try语句块中代码正常执行完毕,没有任何异常,那么catch语句块的代码将不会被执行。...try语句块中代码执行过程中产生异常,并且该异常跟catch中声明的异常类型相符合,那么try语句块中剩余的代码将被忽略,catch语句块的代码将被执行。...5.多重catch块 一段代码可能会产生多个异常。 依次对每个catch块声明的异常对象进行检查,找到执行第一个与try抛出的异常类型匹配的catch块,之后的catch块将被忽略。
REST本身跟http无关,但是目前http是与它相关的唯一实例。REST有着优雅、简洁的特性,本文是根据豆瓣api来谈谈自己对restful的一些理解。...把动作转换成资源 比如,上述接口中,用户收藏某本书对外暴露的接口是”/v2/book/:id/collection”,收藏动作通过post方法来展现,而不直接写着api中,collection “收藏...2xx: 请求正常处理并返回 3xx: 重定向 4xx: 客户端请求有错误 5xx: 服务端请求有错误 比如豆瓣api返回的状态码说明: 状态码 含义 说明 200 ok 请求成功 201 created...5.使用通用的错误码 通用错误码,具体产品由具体产品api给出。...比如豆瓣api: 错误码 错误信息 含义 999 unknow_v2_error 未知错误 1000 need_permission 需要权限 1001 uri_not_found 资源不存在 … ….
具体症状为:我的电脑打不开或者提示windows脚本宿主错误;各分区下存在autorun.inf以及随机数字为文件名的vbs文件,无法彻底删除;文件关联被修改;插入U盘自动感染等。...打开搜索,删除各分区根目录下的vbs文件和autorun.inf,删除系统分区windows文件夹下的随机数字文件名的vbs文件。 3....按win+r快捷键输入msconfig,切到启动选项卡,去掉随机数字文件名的vbs启动项。 4. win+r输regedit,打开注册表,搜索随机数字文件名的vbs文件。...(文件名看电脑各分区下的vbs文件即可)将找到的所有键值里的双引号内的内容以及双引号删除(应为一个vbs文件的路径)。 5. 完成以上步骤以后,发现我的电脑打不开,很多常见文件格式无法打开。...只是win+e打不开了,这点暂时还不知该如何修复。
虽然如今可能知道“命令与征服”系列的人不多了,但在当年那个时代,这可是包括我本人在内的很多人的电脑启蒙游戏(能跟其媲美的估计就是《大富翁》了),甚至到现在还对其中 NPC 的台词记忆犹新。...后来我才知道这游戏剧情其实挺猎奇的,大意是:1950年,爱因斯坦发明了时间机器,回到1933年的德国杀死了希特勒,想以此避免第二次世界大战,结果没想到带来了新的战争……但实际上大多数玩家压根就不关心这些...眼看这都是要尘封在记忆里的事情了,没想到最近,EA 悄咪咪地在 Github 上搞了个大事情: 把《命令与征服》的代码给开源了!...这个项目支持几乎所有的操作系统平台(我就是在 Mac 上跑的),你可以直接从官网下载打包好的游戏来玩(完全复刻原版),也可以把项目拿到本地之后进行修改和编译。...用默认设定好的 bleed 分支,这是最新的代码,而不是 master 分支。
代码是用来描述逻辑的,而混乱的代码是Bug源头。 现在借助各种IDE或lint工具,基本上可以规避各种奇奇怪怪的写法,保证代码风格的统一。...到最后可能只剩下了“重构”这条路,然而重构并不是万能药,往往会由于人力、时间、收益等因素夭折~ 记得之前看见过一种关于让代码随着维护越改越好的架构的思考,但是就“技术债务”这一点来看,如果单纯依赖架构来限制程序员不留下技术债务...important或者再加个标签.xxx .title之类的覆盖一下,以至于社区出现各种诸如BEM命名规则的方案,来解决这种情况。...蹩脚的封装 我们无法预知代码的改动,但可以编写方便后续维护的代码,如何从维护者的角度衡量”易于维护“的代码呢? 在过去很长一段时间内,我都认为:只要改动的地方少,代码就“易于维护”。...低廉的改动成本 在使用框架时,如果某个功能实现起来比较麻烦,我们想到的是如何实现这个功能,而不是如何修改底层框架来满足我们的需求。
领取专属 10元无门槛券
手把手带您无忧上云