首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

揪出代码的坏味道

几种常见的代码坏味道: - 重复代码 - 魔数 - 注释掉的代码和死代码 - 打印调试 - 带有数字后缀的变量 - 本该是函数或者模块的类 - 嵌套列表解析式 - 空的except块和糟糕的错误信息 坏味道代码带来的问题...2、魔数 魔数没有表明数字的目的,降低了代码的可读性,使其难以维护,而且容易出现难以察觉的拼写错误。...嵌套列表解析式(或者集合/字典解析式)在少量的代码中包含了大量的复杂性,降低了代码可读性。...优化坏味道的方法 1、重复代码 解决重复代码的方法是去重,简单地说,通过把代码放在一个函数或者循环中,使其在代码中只出现一次。 2、魔数 解决方法是使用常量替代魔数。...日志文件可以记录程序的大量信息,能够用来比较一次运行产生的信息和以往运行的信息。 5、带有数字后缀的变量 如果在一系列的变量中使用数字后缀,那么可以考虑用某种数据结构代替它们,比如列表或字典。

50420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Matplotlib 中文用户指南 4.8 XeLaTeXLuaLaTeX 设置

    可能的值为xelatex(默认值),lualatex和pdflatex。 请注意,当选择pdflatex时,必须在序言中配置字体和 unicode 处理。...在 Windows 上,可能需要修改PATH环境变量来包含 latex,dvipng 和 ghostscript 可执行文件的目录。详细信息请参阅环境变量和在窗口中设置环境变量。...确保你想要做的事情在 LaTeX 文档中可实现,你的 LaTeX 语法是有效的,并且你正在使用原始字符串,如果必要的话,避免意外的转义序列。...pgf.preamble rc设置提供了大量的灵活性,以及导致问题的许多方法。遇到问题时,尝试最小化或禁用自定义序言。 配置 unicode-math 环境可能有点棘手。...在极端情况下,这可能导致 TeX 内存不足:TeX capacity exceeded, sorry(TeX 容量过大,对不起)。

    1.6K20

    VSCode配置LaTex写作环境(70%完成度)

    然后就是得安装这两个插件 latex-workshop.showContextMenu 在设置页面输入上面的命令,打开激活 会在菜单内部出现 latex-workshop.view.outline.sections...是否打开大纲功能 workbench.settings.editor 在设置页面是否使用GUI或者json配置 对于一个长久要使用的工作环境,配置一个工作区时必要的 对于以上的更改,可以看到在下面的文件夹内做出了同步的修改...我们这里再把新的设置打开 latex-workshop.addtexroot 在命令板打开,选择指定的文件 如果你不想显式的设置根文件 可以使用如下的写法来隐式指派 \begin{document...我觉得没有用,日后也可以使用 这个是使用轮询来检测文件的情况,是否来编译 开始构建前的延迟 清理构建的中间文件 何时清理辅助文件 要清理的文件扩展名 何时清理中间文件 来看看重中之重 在配置的...➞ bibtex ➞ pdflatex × 2", "tools": [ "pdflatex", "bibtex", "pdflatex

    1.7K30

    快速入门系列--CLR--02多线程

    这个过程存在不小的风险,因此也对发布后的生产服务器进行了密切的监控,结果还是出现了个别应用出现异常的情况,很快的占用了大量的服务器内存和CPU等资源。...此外,CLR在执行垃圾回收时,CLR必须挂起所有线程,并且遍历他们的栈来对堆中对象进行标记,因为大量线程对于垃圾回收的性能影响也非常的大,建立费资源,回收也费资源,因此需要非常慎重的考虑,当然多核情况下的并行计算确实非常的吸引人哈...Sleep()和Suspend(),前者挂起指定的时间,后者在恢复前始终挂起,请谨慎使用Suspend和Resume的组合。...如果木有线程则创建,在完成任务以后,该线程不会自行销毁,而是以挂起的状态返回到线程池。直到应用程序再次向线程池发出请求时,线程池里挂起的线程就会再度激活执行任务。...在Framewok4.0中最大线程数默认为250*CPU数,一般在1000左右,本机情况如下: ?

    91990

    将rmd文件输出为含中文的pdf:踩过的坑及最终解决

    number_sections: yes toc: yes 做过的失败尝试1安装rticles包rticles包提供了适用于各类场景的rmd模板,安装以后便可以选择支持中文的模板,在rstudio...not set up for use with LaTeX.Try other LaTeX engines instead (e.g., xelatex) if you are using pdflatex...not set up for use with LaTeX.Try other LaTeX engines instead (e.g., xelatex) if you are using pdflatex...See 一个测试.log for more info.停止执行再检查一遍发现fatal error居然是……发现有一段报错一直出现,但是没有在意 Locale 'Chinese (Simplified)...https://github.com/rstudio/tinytex/issues/439划重点RMarkdown输出pdf首先需要latex的支持,因此要下载tinytex包,而此时输出pdf,则会出现

    95410

    Linux性能优化篇-了解CPU上下文切换

    存在大量的进程竞争cpu,也就是存在大量的可运行进程,但是我们都知道cpu一个时间段其实只能运行一个进程,其他的进程也都只是在等待,并不会大量耗尽cpu资源的情况,而是cpu按照时间片给大量进程运行,所以可以想象在不停的切换不停的进程的情况下是不是也在消耗...Linux是一个多用户用任务的操作系统,他支持远远大于cpu的进程数运行,而cpu每次却只能运行一个任务,所以其实这些任务其实并不是在同时运行,整个过程是cpu轮流运行任务,给用户带来的假象。...最后跳转到程序计数器所指向的位置,恢复进程运行 而保存上下文和恢复上下文过程不是免费的,大概每次上下文切换会花费几十纳秒到数微妙之间,当大量进程时,这个cpu上下文切换是相当可观的,会花费大量时间在保存和恢复...怎么查看系统上下文切换情况 过多的cpu上下文切换会导致花费大量的时间消耗在寄存器、内核栈及虚拟内存的保存与恢复中,缩短cpu在规定时间片内真正运行的时间,导致系统性能大幅下降。...to 软中断 所以回到上下文切换多少合适,这个数值还是取决于cpu性能,如果想要系统比较稳定,这个值可以尽量控制在几百到一万之间,如果超过一万或者指数级增量,一般都是出现性能问题。

    5K76

    分布式应用异常测试一二说

    单机的异常如果处理不当,会引起整个环境中的资源不可用,从而导致环境中的每个单机都出现异常。...; 本地读:打开一个不存在的文件,是否有对应处理逻辑; 网络存储:服务不可用; 应用连接: 短连接:请求方未设置超时时间,长时间等待响应方的响应,从而导致请求的大量堆积,线程池的处理线程被用完,导致大量新的用户请求被拒绝...; 长连接:在网络出现异常状况后,断开的连接是否能重新建立,请求方如拿到失效的连接,是否能处理异常; 数据库: 数据源切换:如果所切换的数据源连接处于不可用状态或宕机时,是否会长时间等待或重试; 表锁、...行锁:长时间更新操作,导致其他对此表的修改操作被挂起; 慢SQL的预防:通过对SQL的提前分析,来预防慢SQL相关的问题,及时告知DBA进行优化; 缓存: key的失效:在获取不到key后,是否能正常处理...; 缓存服务不可用; 消息中间件: 消息记录表切换:是否丢失; 清除消息记录:是否丢失记录; 服务发现: 服务不可用:是否有其他处理措施; 单台不可用:是否能重新选举,重新建立连接; 应用容器: 连接数:

    97560

    抢红包案例分析以及代码实现(二)

    线程2在查询红包数时,如果线程1还未释放排他锁,它将等待。 线程3同线程2,依次类推。...当然,如果更新失败,表示在更新操作之前有其他线程已经更新了该红包数,那么就可以尝试重入机制来保证更新成功。 ---- 总结 1....---- 悲观锁(抽象的描述,不真实存在这个锁) 悲观锁是在操作数据时,认为此操作会出现数据冲突,所以在进行每次操作时都要通过获取锁才能进行对相同数据的操作,所以悲观锁需要耗费较多的时间。...---- 悲观锁导致性能下降的原因探究 对于悲观锁来说,当一条线程抢占了资源后,其他的线程将得不到资源,那么这个时, CPU 就会将这些得不到资源的线程挂起,挂起的线程也会消耗 CPU 的资源尤其是在高并发的请求中...在高并发的过程中,使用悲观锁就会造成大量的线程被挂起和恢复,这将十分消耗资源,这就是为什么使用悲观锁性能不佳的原因。

    66210

    C# 线程池ThreadPool用法简介

    前言: 自从task出现后,threadpool地位直线下降,但是一些老的程序员用惯了threadpool,我们在继承开发的时候也会时常看到这个用法,所以我们也很有必要熟悉认识它。 什么是线程池?...说得简单一点,每新建一个线程都需要占用内存空间和其他资源,而新建了那么多线程,有很多在休眠,或者在等待资源释放;又有许多线程只是周期性的做一些小工作,如刷新数据等等,太浪费了,划不来,实际编程中大量线程突发...线程池中的线程执行完指定的方法后并不会自动消除,而是以挂起状态返回线程池,如果应用程序再次向线程池发出请求,那么处以挂起状态的线程就会被激活并执行任务,而不会创建新线程,这就节约了很多开销。...只有当线程数达到最大线程数量,系统才会自动销毁线程。因此,使用线程池可以避免大量的创建和销毁的开支,具有更好的性能和稳定性,其次,开发人员把线程交给系统管理,可以集中精力处理其他任务。 3....还可以设置最小线程数。

    1.8K30

    一文搞懂select、poll和epoll区别

    这带来缺点: 单个进程可监视的fd数量被限制,即能监听端口的数量有限 单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是3232,同理64...需要维护一个用来存放大量fd的数据结构,使得用户空间和内核空间在传递该结构时复制开销大。...它将用户传入的数组拷贝到内核空间 然后查询每个fd对应的设备状态: 如果设备就绪 在设备等待队列中加入一项继续遍历 若遍历完所有fd后,都没发现就绪的设备 挂起当前进程,直到设备就绪或主动超时...没有最大连接数限制,因其基于链表存储,其缺点: 大量fd数组被整体复制于用户态和内核地址空间间,而不管是否有意义 如果报告了fd后,没有被处理,那么下次poll时会再次报告该fd 所以又有了epoll模型...虽然都要睡眠和交替,但是select和poll在“醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,这节省了大量的CPU时间。

    3.4K20

    重启Tomcat时,报错deployDirectory Deploying web application directory解决办法

    而刚开机的时候需要大量的随机比特,这个时候产生随机数的随机效果就不是很理想了。    ...接下来解释一下 /dev/urandom  和  /dev/random  这两种不同的文件的区别, /dev/random 在不能产生新的随机数的情况下会阻塞程序,程序挂起便没法继续执行,直到熵池产生新的随机字节后才能返回...,程序再接着执行,这就是  /dev/random 比 /dev/urandom 产生大量随机数的速度要慢的原因,也是为什么使用这个文件生成随机数时,tomcat启动的速度被拖慢的原因。...而 /dev/urandom 这种方式在不能产生新的随机数时不会阻塞程序,当然了,这样的话生成随机数的效果没有  /dev/random 这种方式好,这对于加解密这样的应用来说并不是一个很好的选择。    ...但在一个服务器缺乏这样的活动,可能会出现问题。

    1.4K20

    LaTex安装(texlive+TeXmaker)

    这么大都装了,也不差它一个了 点击这里 选中文,这里还是把TeXworks去掉了 漫长的安装过程,装3800个 建议将实时扫描关掉 tex -v latex -v xelatex -v pdflatex...因为频繁的出现DVI,这里也研究一下什么叫DVI 安装完成的时候不要点叉号关掉 该添加变量了 找到这里 C:\texlive\2022\bin\win32 记录这里路径,然后系统和用户都添加...重新开CMD试一下 OK,安装完毕 我们在测试一下: \documentclass{article} \begin{document} Hello world!...如果需要引用大量参考文献,则可以将文献添加进我的图书馆,点击星号即可添加: 添加文献到图书馆 在图书馆中可以批量选择导出: 批量导出bibtex 我们平时也遇到这些命令 模板的内容 https...写东西以后编译 一般是F5 鼠标在pdf上面单击会出现放大镜 可以方便的跳转源,以及可以反色 反色 一个较为完善地自动补全 当然了,VSCode可能才是心水之选,但是太难搞了。

    1.4K20

    干货 | 携程基于Quasar协程的NIO实践

    IO密集型系统在高并发场景下,会有大量线程处于阻塞状态,性能低下,JAVA上成熟的非阻塞IO(NIO)技术可解决该问题。...协程只是一种抽象,最终的执行者是线程,每个线程只能同时执行一个协程,但大量的协程可以只拥有少量几个线程执行者,协程的调度器负责决定当前线程在执行那个协程,其余协程处于休眠并被调度器保存在内存中。...另一方面,协程挂起后恢复执行时,也可能会在另一个线程上运行。出现两个线程操作共享资源的异常。同时未持有锁的线程释放时,会出现IllegalMonitorStateException异常。 ?...集群CPU核数在保留一定的业务冗余以应对业务高峰的情况下,缩减至1/5。...在新线程而不是新协程中使用挂起方法时,会出现同样的问题。

    1.7K30

    【暴力搜索】解数独,你会吗?!!

    解数独 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。...数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字,空白格用 '.' 表示。...题目数据 保证 输入数独仅有一个解 解题思路:暴力搜索 + 布尔值数组判断 ​ 首先这道题如果是暴力搜索加上判断合法性的时候使用暴力检查的话,那么也是可以的话,所谓的暴力检查就是选了这个数字后,去遍历它所在的行...有效的数独 这道题是一样的,只不过我们在进行填数独之前,得先了解当前表中的已有数字的情况,所以就需要 先做个初始化,遍历一下原表,将原表中已有的数字映射到对应的布尔值数组中,将其设为 true! ​...然后无非就是遍历过程中判断三个数组对应位置是否出现过元素,只需要判断其是否为 true 即可,true 就表示出现过,则直接 continue 就行,而至于如何判断三个数组对应位置是否出现过元素,我们已经在

    6810

    一篇极其容易上手的 LaTex 学习文档

    TeXworks 默认的排版工具是 pdfLaTeX。如果你希望更改这个默认值,可以在编辑 - 首选项 - 排版 - 处理工具 - 默认 中修改。...\end{document} 将文档保存在你希望的位置,然后在排版工具的下拉选框中选中 XeLaTeX 后,按下绿色的编译按钮。一会儿,如果没有意外,屏幕的右边就会出现编译之后结果。...这个控制序列总是与 end 成对出现。这两个控制序列以及他们中间的内容被称为「环境」;它们之后的第一个必要参数总是一致的,被称为环境名。...你可以将导言区理解为是对整篇文档进行设置的区域——在导言区出现的控制序列,往往会影响整篇文档的格式。 通常在导言区设置页面大小、页眉页脚样式、章节标题样式等等。...ASCII 字符简单理解,就是在半角模式下你的键盘能直接输出的字符。 在 XeTeX 出现之前,为了能让 TeX 系统排版中文,国人曾使用了 天元、CCT、CJK 等手段处理中文。

    2.6K20
    领券