编程坑太多,Map 集合怎么也有这么多坑?一不小心又踩了好几个!

2020-05-07
阅读 5 分钟
2.1k
点赞再看,养成习惯,微信搜索『程序通事』,关注就完事了!点击查看更多历史文章 上一篇 List 踩坑文章中,我们提到几个比较容易踩坑的点。作为 List 集合好兄弟 Map,我们也是天天都在使用,一不小心也会踩坑。 今天我就来总结这些常见的坑,再捞自己一手,防止后续同学再继续踩坑。 本文设计知识点如下: 不是所有的 M...

设计数据库 ER 图太麻烦?不妨试试这两款工具,自动生成数据库 ER 图!!!

2020-04-30
阅读 5 分钟
15.7k
一边开发着新需求,一边改着旧项目的 Bug。再加上这个项目算是从别人那交给过来的,这部分新功能代码并不是很熟,改 Bug 的时候又需要理清楚上下文逻辑,非常耗时间。

一口气带你踩完五个 List 的大坑,真的是处处坑啊!

2020-04-23
阅读 7 分钟
2.9k
List 可谓是我们经常使用的集合类之一,几乎所有业务代码都离不开 List。既然天天在用,那就没准就会踩中这几个 List 常见坑。 今天我们就来总结这些常见的坑在哪里,捞自己一手,防止后续同学再继续踩坑。 本文设计知识点如下: ArrayList 这是李逵,还是李鬼? 以前实习的时候,写过这样一段简单代码,通过 Arrays#asL...

轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?|原创

2020-04-16
阅读 4 分钟
3.4k
ps:付款码支付别称有很多,如微信支付端支付产品为付款码支付(之前的文档叫做刷卡支付),而支付宝端产品为当面付-条支付,而有些文档会成为二维码被扫支付。下文统一使用微信的定义方式,统称为付款码支付。

我去,还在这样读写 excel 这也太低效了吧!

2020-04-12
阅读 8 分钟
3.1k
小黑哥,最近我在负责公司报表平台开发,需要导出报表到 excel 中。每次使用 POI 开发,都要写长长的一坨代码,好几次因为没加入判空判断,导致生成失败。想跟你请教下有没有更加高效一点读写 excel 方法?

惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密|原创

2020-04-09
阅读 6 分钟
4.6k
出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方。

大部分程序员还不知道的 Servelt3 异步请求,原来这么简单?

2020-04-06
阅读 6 分钟
2.3k
前言 博文地址:[链接] 当一个 HTTP 请求到达 Tomcat,Tomcat 将会从线程池中取出线程,然后按照如下流程处理请求: 将请求信息解析为 HttpServletRequest 分发到具体 Servlet 处理相应的业务 通过 HttpServletResponse 将响应结果返回给等待客户端 整体流程如下所示: 这是我们日常最常用同步请求模型,所有动作都交给...

坚持写作快两年了,有些私藏工具跟你们分享

2020-04-03
阅读 5 分钟
2.6k
小黑碎碎念 翻看掘金专栏的第一篇文章,2018 年 6 月 5 日发布,没想到自己坚持写作已经将近一年半多了。 刚开始写作完全不知道写什么,所以刚开始文章也比较水,主要分享一些常用开源工具类的用法。 后来偶然的机会,看到同事一段比较有意思的代码。 刚看到时完全不解,请教同事之后,明白其中的原因。仔细一想,这是一...

还不知道事务消息吗?这篇文章带你全面扫盲!

2020-03-30
阅读 8 分钟
1.7k
在分布式系统中,为了保证数据一致性是必须使用分布式事务。分布式事务实现方式就很多种,今天主要介绍一下使用 RocketMQ 事务消息,实现分布事务。

面试官再问我如何保证 RocketMQ 不丢失消息,这回我笑了!

2020-03-25
阅读 5 分钟
2.5k
最近看了 @JavaGuide 发布的一篇『面试官问我如何保证Kafka不丢失消息?我哭了!』,这篇文章承接这个主题,来聊聊如何保证 RocketMQ 不丢失消息。 0x00. 消息的发送流程 一条消息从生产到被消费,将会经历三个阶段: 生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker 存储阶段,消息将会存储在 Broker ...

启动崩盘!IDEA 2020 无法启动的解决办法|赠送 IDEA 2020 新功能

2020-03-22
阅读 3 分钟
2.7k
博文地址:[链接] 今天早上看到 IDEA 可以升级新版本,想着体验一下新功能,点击升级,然后全部项目工程无法打开。 报错信息如下: {代码...} 在项目窗口选择项目工程也不行,出现闪退现象。 网上搜索了一把,没有找到具体的解决办法,没办法只能靠自己。 突然想到可以看一下 IDEA 相关日志,看下是否有什么有用的报错信...

程序员需要了解依赖冲突的原因以及解决方案

2020-02-24
阅读 5 分钟
2.3k
依赖冲突是日常开发中经常碰到的过程,如果运气好,并不会有什么问题。偏偏小黑哥有点背,碰到好几次生产问题,排查一整晚,最后发现却是依赖冲突的引起的问题。

每日一技|活锁,也许你需要了解一下

2020-02-19
阅读 7 分钟
2.1k
前两天看极客时间 Java 并发课程的时候,刷到一个概念:活锁。死锁,倒是不陌生,活锁却是第一次听到。 在介绍活锁之前,我们先来复习一下死锁,下面的例子模拟一个转账业务,多线程环境,为了账户金额安全,对账户进行了加锁。 {代码...} 上述例子中,当两个线程进入转账方法,线程 1 获取账户 6000001 这把锁,线程 2 ...

Dubbo 服务 IP 注册错误踩坑经历

2020-02-17
阅读 3 分钟
3.7k
这个系统当前对外采用 Restful 接口,内部远程采用 Dubbo,服务注册中心使用 zookeeper。服务当前设定只会调用本机房内服务。

情人节到了,Postman 都脱单了,那你咧?

2020-02-14
阅读 3 分钟
3k
通过它可以完成 Http 接口的调试,测试同学也可以基于此做一些自动化测试。另外 Postman 还提供其他高级功能,不过需要另外收费,毕竟商业公司还是要恰饭啊。

每日一技|巧用 Telnet 调试 Dubbo 服务

2020-02-05
阅读 3 分钟
6.4k
如果仅是简单的服务,涉及少量数据变更,我们可以直接使用 SQL,变更数据状态。但是有些情况下,服务需要联动调用其他系统,变更其他系统数据。这种情况下,变更数据非常麻烦,需要与其他系统开发沟通,整理数据,一起变更。如果涉及还涉及外部系统,数据变更几乎玩不下去了。

定时任务莫名停止,Spring 定时任务存在 Bug??

2020-01-31
阅读 5 分钟
2.4k
春节放假,小黑哥坐上高铁回家,突然想到一次生产问题。那是小黑哥参加工作第一年,那一年国庆假期,小黑哥提前一天请假回家办个护照。那时候刚开始负责一个生产系统,所以工作日请假,还是有点担心,就怕问题看小黑哥不在,悄然上门。

Leader:这样的 Bug 你也写的出来???

2020-01-28
阅读 4 分钟
1.6k
Hello~各位读者新年好!不知道大家春节假期是否已延长,小黑哥刚接到通知,假期延长到 2 月 2 号,另外回去之后需要在家办公,自行隔离两周。还没试过在家办公,小黑哥就怕到时候生物钟还没调整过来,一觉睡醒已经是下午了。。。

持续输出|我的 2019 年

2020-01-19
阅读 3 分钟
1.7k
2019 年的年终总结,年底的时候就想去写了,不过那时候一直在忙其他事,一直拖到现在。趁着春节前最后一个周末,回顾一下 2019 年,顺便再给 2020 年立下几个 flag。

2020 年的第一天,程序员鸭血粉丝又碰上生产事故

2020-01-07
阅读 3 分钟
2k
hello~各位读者新年好,我是鸭血粉丝(大家可以称呼我为「阿粉」),一位喜欢吃鸭血粉丝的程序员!2019 年,阿粉写了很多 bug,这不前一段时间 OOM 差点就把服务器搞挂。跨年的时刻,阿粉默默立下一个 flag,2020 年再见 bug。

原生线程池这么强大,Tomcat 为何还需扩展线程池?

2019-12-05
阅读 3 分钟
3.5k
Tomcat/Jetty 是目前比较流行的 Web 容器,两者接受请求之后都会转交给线程池处理,这样可以有效提高处理的能力与并发度。JDK 提高完整线程池实现,但是 Tomcat/Jetty 都没有直接使用。Jetty 采用自研方案,内部实现 QueuedThreadPool 线程池组件,而 Tomcat 采用扩展方案,踩在 JDK 线程池的肩膀上,扩展 JDK 原生线程池。

🙀Java 又双叒叕发布新版本,这么多版本如何灵活管理?

2019-11-27
阅读 3 分钟
3.3k
不知不觉 JDK13 发布已有两个月,不知道各位有没有下载学习体验一番?每次下载安装之后,需要重新配置一下 Java 环境变量。等到运行平时的项目又需要切回之前 JDK 版本,这又需要重新环境变量。这么重复配置显然非常低效,又不能灵活切换版本。

手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理

2019-11-18
阅读 10 分钟
3.6k
一天下午正在摸鱼的时候,测试小姐姐走了过来求助,说是需要改动测试环境 mock 应用。但是这个应用一时半会又找不到源代码存在何处。但是测试小姐姐的活还是一定要帮,突然想起了 Arthas 可以热更新应用代码,按照网上的步骤,反编译应用代码,加上需要改动的逻辑,最后热更新成功。对此,测试小姐姐很满意,并表示下次...

聊聊缓存淘汰算法-LRU 实现原理

2019-10-29
阅读 4 分钟
2k
我们常用缓存提升数据查询速度,由于缓存容量有限,当缓存容量到达上限,就需要删除部分数据挪出空间,这样新数据才可以添加进来。缓存数据不能随机删除,一般情况下我们需要根据某种算法删除缓存数据。常用淘汰算法有 LRU,LFU,FIFO,这篇文章我们聊聊 LRU 算法。

还在重复写空指针检查代码?考虑使用 Optional 吧!

2019-10-25
阅读 5 分钟
1.8k
如果要给 Java 所有异常弄个榜单,我会选择将 NullPointerException 放在榜首。这个异常潜伏在代码中,就像个遥控炸弹,不知道什么时候这个按钮会被突然按下(传入 null 对象)。

一文教你安全的关闭线程池

2019-10-13
阅读 4 分钟
1.9k
上篇文章 ShutdownHook- Java 优雅停机解决方案 提到应用停机时需要释放资源,关闭连接。对于一些定时任务或者网络请求服务将会使用线程池,当应用停机时需要正确安全的关闭线程池,如果处理不当,可能造成数据丢失,业务请求结果不正确等问题。

ShutdownHook - Java 优雅停机解决方案

2019-10-12
阅读 2 分钟
2.9k
想象一下,如果你现在刚好在 word 上写需求文档,电脑突然重启。等待开机完成,你可能会发现写了一个小时文档没有保存,就这么没了。。。 一个正在运行 Java 应用如果突然将其停止,影响不止数据丢失,还会造成其他影响。比如: 请求丢失:内存队列中等待执行请求丢失 数据丢失:处于内存缓存中数据未持久化到磁盘 文件损...

协作,才能更好的中断线程

2019-10-09
阅读 3 分钟
1.9k
聊起中断,大家可能最熟悉的例子就是线程休眠。下面就是一个线程休眠的 demo,在这个例子中,当我们调用 sleep 方法,该方法将会抛出一个需要捕获的中断异常,这里捕获该异常并直接返回。

Kafka 异步消息也会阻塞?记一次 Dubbo 频繁超时排查过程

2019-10-08
阅读 7 分钟
3.6k
线上某服务 A 调用服务 B 接口完成一次交易,一次晚上的生产变更之后,系统监控发现服务 B 接口频繁超时,后续甚至返回线程池耗尽错误 Thread pool is EXHAUSTED。因为服务 B 依赖外部接口,刚开始误以为外部接口延时导致,所以临时增加服务 B dubbo 线程池线程数量。配置变更之后,重启服务,服务恢复正常。一段时间之...

面试官:都说阻塞 I/O 模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?

2019-09-30
阅读 3 分钟
2.1k
使用 Java 阻塞 I/O 模型读取数据,将会导致线程阻塞,线程将会进入休眠,从而让出 CPU 的执行权,直到数据读取完成。这个期间如果使用 jstack 查看线程状态,却可以发现Java 线程状态是处于 RUNNABLE,这就和上面说的存在矛盾,为什么会这样?