对于《三体》,我算是一个书粉了,2017年左右就看了原著第一部,对书中幽灵倒计时、秦始皇计算机、古筝计划等名场面记忆犹新,也是由衷佩服大刘的脑洞。
王竞原,负责网游刀锋铁骑项目,高级开发工程师,使用C++已有10年,非常喜欢C++,特别是C++11。希望能与广大的C++爱好者多交流。 一、什么是Android的C/C++ NativeCrash Android上的Crash可以分两种: 1、Java Crash java代码导致jvm退出,弹出“程序已经崩溃”的对话框,最终用户点击关闭后进程退出。 Logcat 会在“AndroidRuntime”tag下输出Java的调用栈。 2、Native Crash 通过NDK,使用C/C++开发,导致
先讲个故事,我大二的老弟小阿巴,昨天用 IDEA 开发工具初始化了个 Java Spring Boot 的项目。明明操作流程和往常一模一样,结果项目却跑不起来。
我在组内推广 Kotlin 遇到不少挑战,虽然我自己觉得它确实是一门优秀的语言,有着丰富的特性,能提高我们开发效率,减少 bug 的出现,但同事们并不觉得。而且他们的观点往往不是“Kotlin 并没有比 Java 好多少”,而是“Kotlin 就没比 Java 好“。Kotlin 语法不习惯;Kotlin 这样强推这么多年,也不温不火,说明 Kotlin 不行。
在我早期出了很多源码解读文章的时候,就有朋友私信我,要我出一篇关于 Idea 调试的小技巧的文章。
程序员和BUG之间的关系很奇妙, 相互都不喜欢对方, 又离不开对方, 是一对相爱相杀相互纠缠永远无法摆脱对方的对手。 每一个BUG都是程序员无意创造出来的,程序员对于BUG的态度完全是恨的咬牙切齿。 很多场景下,当有人反应程序员写的程序有BUG的时候, 程序员的第一反应是这个BUG肯定不是自己的代码有问题产生的, 而是由外部因素起的。比如说某张网页显示效果出错, 前端程序员第一反应肯定是用户的浏览器有缓存或者使用了什么老掉牙的浏览器在浏览他做的网页; 再比如说某个程序访问数据库出错, 后端程序员第一反应也肯
🎉欢迎来到Java学习路线专栏~那些让我苦笑不得的 Bug:编码之路的坎坷经历
高并发编程一直是 Java 领域的高阶内容,有时候 bug 诡异的出现,又诡异的消失,很难重现,很难追踪,让人抓狂。
有时候程序员往往会陷入为了写代码而写代码的怪圈,没有意识到代码是为了解决现实问题的。当问题有更简便的解决方案时,写代码未必就是必须。记住:你不是别人花钱让你在屏幕上写字符的程序猿,而是让你解决问题的专业人士。Fagner Brack 的总结非常有见地。
首先,需要明确的是,用 Java 通常构建多线程安全的程序 “非常” 困难,如果还没有体会到 “非常” 的话,阅读《Java Concurrency in Practice》(中文名叫做《Java 并发编程实战》,在我的书单里面,我认为它基本是最好的系统介绍 Java 并发的书了)可能可以改变你的看法。
这次讨论的话题,其实在我长期的写代码中也会遇到,就是代码中命名规范的问题,有人说,不就是一个名字吗,可以就是一个名字,知道有多少人去吐槽这个吗?这可不是一个小问题,很多时候,我们会遇到很多bug,奇怪的bug。其实都是我们的命名不规范导致的。
从入职以来,我一直在从事于开发Android版的Edge浏览器。这么长时间下来,我也慢慢从完全不知如何上手,提个PR都困难,到现在能够负责独立开发一个比较大的功能模块了。
1 想清楚,写清楚,说清楚,才是真正的清楚! 2 多花点时间沟通清楚需求,才能把握正确方向! 3 修复需求错误的成本是代码错误的几十倍! 4 程序员最大的坏习惯就是:急于动手写代码! 5 提高开发效率的捷径:一次做对,不返工! 6 写代码之前三件事: 弄清楚做什么; 说清楚怎么做; 想清楚怎么测! 7 职业的程序员设计程序,业余的程序员调试程序; 8 拷贝粘贴式的作业方式,最容易导入bug,最难调试! 9 重复代码是万恶之源! 10 小函数,小方法,以功能命名,可以消除注释! 11 做一点,
先说结论,我支持将逻辑写在 Java 等应用系统中。 观察了一下,传统企业以及绝大部分转型中的企业的 Java 应用中,很神奇的是,他们的开发人员包括我自己以前,大家都非常非常希望使用一个 SQL 来完成所有的逻辑的编写,非常多企业更是把数据库的存储过程和数据库自定义函数来完成。 老实说,这样子确实会提高开发的效率,因为不用写那么多查库聚合的操作,一切都在 SQL 中搞定了。另一方面来看,这确实会让 Java 代码看起来很鸡肋,好像只是把数据从 web 层到数据层的一个管道而已,一切 if else 能
须理清“SUT的功能”,“SUT的所有输入”,“每一个输入的取值范围”,“SUT的所有输出”,“根据功能推出每一个输出的预期值”。
前言:一般公司都会有一些开发规范,但是事实上,简单看那么一两遍并不能养成习惯,或者将这些规范记住。特别的,对于一些新手,写的代码往往会很糟糕。回头看看你一两年前写的代码就会知道,所谓的”糟糕“是什么一种感觉。
首先明确:只有Hotspot才有永久代。BEA JRockit、IBMJ9等来说,是不存在永久代的概念的。原则上如何实现方法区属于虚拟机实现细节,不受《Java虚拟机规范》管束,并不要求统一
前言: 已经数月没有来社区了,写博客贵在坚持,一旦松懈了,断掉了,就很难再拾起来。但是每每看到自己博客里的博文的浏览量每天都在增加,都在无形当中给了我继续写博客的动力。最近这两天有听到Jbehave这个名词,上网查了一通,原来是和测试相关的,之前一直做开发,没有做过真正意义上的测试,对于测试的理解更是少之又少。通过这两天的查阅,现将自己的一些理解以及常见概念罗列出来。 正文: Behavior Driven Development,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA
偶现 bug 是一种类似于外太空50足隐身蝎子的东西。这种噩梦是如此稀少以至于它很难观察,但其出现频率使得它不能被忽视。你不能调试因为你不能找到它。
作为一个开发人员最不想看到的就是BUG,可见性的问题可能还不是最关键的,至少我们可以找到问题,很快解决,一般BUG也不会重复出现;但今天要学习的内存溢出就不一样的,很难从根本上解决;因它与各方面的环境
Java下标越界java.lang.ArrayIndexOutOfBoundsException
有一个下发配置的服务,这个配置服务的实现有点特殊,服务端下发配置到各个服务的本地文件,当然中间经过了一个agent,如果没有agent也就无法写本地文件,然后由client端的程序监听这个配置文件,一旦文件有变更,就重新加载配置,画个架构图大概是这样:
该工具重写了 Log4j 框架,并且引入了大量丰富的特性,该框架被大量用于业务系统开发,用来记录日志信息。
在日常开发过程中难免会因为一时疏忽而留下一些Bug,这些Bug就是埋在程序里的定时炸弹,如果不能及时铲除就会导致程序的不稳定,异常或闪退的现象,从而导致用户的体验的下降。那么怎么才能找出这些埋在程序里的定时炸弹呢? 对程序员来说最头疼的事情莫过于找Bug了,尤其是找自己程序中的Bug,因为人的思维是有误区的,他很容易陷入当时开发程序时的思维,这样就很难发现埋藏在程序中的Bug。接下来就给大家分享一个Bugs分析的工具FindBugs。 Findbugs是由 National Science
没有代码,就没有bug。程序员在编码时,总会比不避免的出现bug。倒不是因为我们热爱制造bug,创造机会和测试妹子频繁沟通。而是现实情况很复杂,存在着很多不确定性。尤其是那些崩溃从stacktrace上来看,完全想象不到和项目代码之间的直接联系。
相信程序员们都有一个共同的女朋友。这个女朋友总是阴魂不散,时不时还不忘调戏下男朋友程序员,而且你依然对她欲罢不能、想入非非。
其实无论是成为程序员还是成为一名优秀的程序员,只要不是做算法岗,都不太需要优秀的数学能力,高中数学足矣。
为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东。不管你使用 Java 还是其它的什么语言,都离不开它。而且这玩意是跨语言的,学好之后不管在哪门语言中都能用得上。
工作做螺丝钉,面试造火箭,我想这个是每个程序员比较头疼的事情,但是又有必须经历的流程,我们再聊聊高并发中的原子性、可见性和有序性。
前两周参加完 ThinkInLamp 的 PHP 架构师大会,听鸟哥一上午的分享,感慨很多,PHP 业界虽然方向不明荒废了两三年的时间,终究还是又重新崛起了。
代码审查是指阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。现在,越来越多的团队倡导要进行代码审查活动,而本文作者通过一幅漫画,来诠释其对代码审查的理解,观点可能不符合大家的常规心理。以下为
点击关注公众号,Java干货及时送达 英国作家奥斯卡·王尔德曾说过,人们给自己犯过的错误取名叫做经验。因此可想而知,经验不足的开发人员在编程道路上还有很多未曾踩过的坑。 在本文中,我会给你讲讲一些大多数开发人员都踩过的坑,希望对你有所启发和帮助,以防止你也重蹈覆辙。 1、重新实现API中已有的代码 大多数开发人员都会利用某种框架来减轻工作的负担。对于没有使用该框架经验的开发人员来说,掌握框架的API提供的所有功能非常困难。 因此,他们常常会重新实现API中已有的某些代码。没有经验的开发人员更有可能踩这个坑
每个IT企业,尤其是初创企业,非常苦恼:找不到好的程序员。现在大学、软件学院及各种培训机构,每年培养几十万的程序员,毕业的每个人都有同样困恼:找不到好的工作。问题出在哪里呢?
我开始报了个培训班学习测试,但实际培训班教你的东西都是特别基础的,说有用呢确实有用,说没用呢,用处也不是特别的大
转自:foreverhuylee 博客地址:http://blog.csdn.net/foreverhuylee/article/details/38590751
在使用一些 App 的时候,竟然被我发现了一个应该是由于前端粗心而导致的 bug,在 2019.12.30 出发,结果 App 上显示的是 2020.12.30(吓得我以为我的订单下错了,此处是不是该把程序员拉去祭天了)。
我写了我是怎样追踪这些年遇到的最有趣 bug 的。最近我重新浏览了这所有的 194 个条目(历时 13 年),看看我从这些 bug 中学到了学到了那些重要的经验教训。我分为编码、测试和调试三大类。
我相信每个接受过老项目的程序员可能都吐槽过 “前人的代码都是屎”。一个已经有些年头的项目,几乎肯定可以看到——到处拷贝来拷贝去的代码,随处可见的拼写错误,头重脚轻的函数……再看一看当年的提交者,可能是公司里的元老,甚至是大 boss,不禁心里暗暗的鄙视,怀疑是否自己进错了公司。
转行码农一直是个比较火热的话题,也有很多读者咨询过这个问题,转成功的也不少,比如下面这位香港的同学:
现在基于 spring web 的同步微服务有一个非常大的缺陷就是:相对于基于 spring-webflux 的异步微服务,基于 spring-web 的同步微服务没有很好的处理客户端有请求超时配置的情况。当客户端请求超时时,客户端会直接返回超时异常,但是调用的服务端任务,在基于 spring-web 的同步微服务并没有被取消,基于 spring-webflux 的异步微服务是会被取消的。目前,还没有很好的办法在同步环境中可以取消这些已经超时的任务。
Android 平台中,代码的正确性,是每个版本 Android 系统的安全性、稳定性,及其质量的重中之重。C/C++ 语言中的内存安全漏洞,仍然是最难解决的错误来源。我们投入了大量的精力和资源来检测、修复和缓解这类 bug,这些努力有效地防止了大量 bug 进入 Android 系统。然而,尽管做出了这些努力,内存安全漏洞仍然是稳定性问题的主要原因。并且,在 Android 系统高严重性的安全漏洞中,其始终占据大约 70% 的比例。
作者 | Henrik Warne 翻译 | 郑芸 在《程序员,你会从 Bug 中学习么?》一文中,我写了我是怎样追踪这些年遇到的最有趣 bug 的。最近我重新浏览了这所有的 194 个条目(历时 1
前言 在元旦假期到来之际,我刚好准备出去飘几天,然而在使用一些 App 的时候,竟然被我发现了一个应该是由于前端粗心而导致的 bug,在 2019.12.30 出发,结果 App 上显示的是 2020.12.30(吓得我以为我的订单下错了,此处是不是该把程序员拉去祭天了)。
在一个成熟的团队中,CodeReview是整个研发流程中不可或缺的一步,而那些即将走向成熟的团队可能对CodeReview有很多的误解和问题,也不清楚CodeReview该如何去做,本文笔者将结合自己的经验和知识,谈谈我对CodeReview流程的一些理解和建议 。
领取专属 10元无门槛券
手把手带您无忧上云