博客园 - 深夜里的程序猿
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=166252
2019-05-20T03:59:12Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
feed.cnblogs.com
https://www.cnblogs.com/coding-night/p/10893410.html
聊聊Java里常用的并发集合 - 深夜里的程序猿
前言 在我们的程序开发过程中,如果涉及到多线程环境,那么对于集合框架的使用就必须更加谨慎了,因为大部分的集合类在不施加额外控制的情况下直接在并发环境中直接使用可能会出现数据不一致的问题,所以为了解决这个潜在的问题,我们要么在自己的业务逻辑中加上一些额外的控制,例如锁,或者我们直接使用Java提供的可
2019-05-20T03:59:00Z
2019-05-20T03:59:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 在我们的程序开发过程中,如果涉及到多线程环境,那么对于集合框架的使用就必须更加谨慎了,因为大部分的集合类在不施加额外控制的情况下直接在并发环境中直接使用可能会出现数据不一致的问题,所以为了解决这个潜在的问题,我们要么在自己的业务逻辑中加上一些额外的控制,例如锁,或者我们直接使用Java提供的可 <a href="https://www.cnblogs.com/coding-night/p/10893410.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10856473.html
文本相似度计算之余弦定理 - 深夜里的程序猿
前言 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中。用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,反之越接近0就表示两个向量相似度越低,这就叫"
2019-05-13T06:40:00Z
2019-05-13T06:40:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中。用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,反之越接近0就表示两个向量相似度越低,这就叫" <a href="https://www.cnblogs.com/coding-night/p/10856473.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10830320.html
【轻松一刻】Java制作字符动画 - 深夜里的程序猿
前言 今晚闲来无事,整理了一下电脑中尘封已久的旧代码,看着那些年自己写过的代码,踩过的坑,顿时老泪纵横。正当在感叹之际,突然发现在“马克思”文件夹下出现了一个好玩的项目,那就是N年前刚学Java时写的GIF转字符动画的小玩具,虽然是个小玩意,但是在当时能搞点东西出来还是非常有成就感的。 正文 效果展
2019-05-08T02:28:00Z
2019-05-08T02:28:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 今晚闲来无事,整理了一下电脑中尘封已久的旧代码,看着那些年自己写过的代码,踩过的坑,顿时老泪纵横。正当在感叹之际,突然发现在“马克思”文件夹下出现了一个好玩的项目,那就是N年前刚学Java时写的GIF转字符动画的小玩具,虽然是个小玩意,但是在当时能搞点东西出来还是非常有成就感的。 正文 效果展 <a href="https://www.cnblogs.com/coding-night/p/10830320.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10818065.html
轻松搞懂Java中的自旋锁 - 深夜里的程序猿
前言 在之前的文章《一文彻底搞懂面试中常问的各种“锁”》中介绍了Java中的各种“锁”,可能对于不是很了解这些概念的同学来说会觉得有点绕,所以我决定拆分出来,逐步详细的介绍一下这些锁的来龙去脉,那么这篇文章就先来会一会“自旋锁”。 正文 出现原因 在我们的程序中,如果存在着大量的互斥同步代码,当出现
2019-05-06T02:15:00Z
2019-05-06T02:15:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 在之前的文章《一文彻底搞懂面试中常问的各种“锁”》中介绍了Java中的各种“锁”,可能对于不是很了解这些概念的同学来说会觉得有点绕,所以我决定拆分出来,逐步详细的介绍一下这些锁的来龙去脉,那么这篇文章就先来会一会“自旋锁”。 正文 出现原因 在我们的程序中,如果存在着大量的互斥同步代码,当出现 <a href="https://www.cnblogs.com/coding-night/p/10818065.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10794391.html
如何优化代码中大量的if/else,switch/case? - 深夜里的程序猿
前言 随着项目的迭代,代码中存在的分支判断可能会越来越多,当里面涉及到的逻辑比较复杂或者分支数量实在是多的难以维护的时候,我们就要考虑下,有办法能让这些代码变得更优雅吗? 正文 使用枚举 这里我们简单的定义一个表示状态的枚举。 public enum Status { NEW(0),RUNNABLE
2019-04-30T02:02:00Z
2019-04-30T02:02:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 随着项目的迭代,代码中存在的分支判断可能会越来越多,当里面涉及到的逻辑比较复杂或者分支数量实在是多的难以维护的时候,我们就要考虑下,有办法能让这些代码变得更优雅吗? 正文 使用枚举 这里我们简单的定义一个表示状态的枚举。 public enum Status { NEW(0),RUNNABLE <a href="https://www.cnblogs.com/coding-night/p/10794391.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10772631.html
如何提高使用Java反射的效率? - 深夜里的程序猿
前言 在我们平时的工作或者面试中,都会经常遇到“反射”这个知识点,通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等,但是在使用的同时又伴随着另一种声音的出现,那就是“反射”很慢,要少用。难道反射真的很慢?那跟我们平时正常创建对象调用方法比慢多少? 估计很多人都没去测试过,只是”道听
2019-04-26T02:01:00Z
2019-04-26T02:01:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 在我们平时的工作或者面试中,都会经常遇到“反射”这个知识点,通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等,但是在使用的同时又伴随着另一种声音的出现,那就是“反射”很慢,要少用。难道反射真的很慢?那跟我们平时正常创建对象调用方法比慢多少? 估计很多人都没去测试过,只是”道听 <a href="https://www.cnblogs.com/coding-night/p/10772631.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10760561.html
程序猿必知必会Linux命令之awk - 深夜里的程序猿
前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数据出现的频次以及总数等等。那么这时候awk就很值得我们去学习了。 正文 在Linux中,awk、se
2019-04-24T01:37:00Z
2019-04-24T01:37:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数据出现的频次以及总数等等。那么这时候awk就很值得我们去学习了。 正文 在Linux中,awk、se <a href="https://www.cnblogs.com/coding-night/p/10760561.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10748708.html
Java日志正确使用姿势 - 深夜里的程序猿
前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了。但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名严谨的程序员,怎么能让这种事情发生呢?所以下面我们就来了解一下关于日志的那些正确使用姿势。 正文 首
2019-04-22T02:27:00Z
2019-04-22T02:27:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了。但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名严谨的程序员,怎么能让这种事情发生呢?所以下面我们就来了解一下关于日志的那些正确使用姿势。 正文 首 <a href="https://www.cnblogs.com/coding-night/p/10748708.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/java.html
“==”、“equals()”、“hashcode()”之间的秘密 - 深夜里的程序猿
前言 万丈高楼平地起,今天的聊点基础而又经常让人忽视的话题,比如“==”与“equals()”区别?为何当我们重写完"equals()"后也要有必要去重写"hashcode()"呢? ... 带着这些问题,我们一起来探究一下。 概念 "==":它主要是判断符号两边的“对象”的值是否相等,而这里的“值
2019-04-20T03:22:00Z
2019-04-20T03:22:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 万丈高楼平地起,今天的聊点基础而又经常让人忽视的话题,比如“==”与“equals()”区别?为何当我们重写完"equals()"后也要有必要去重写"hashcode()"呢? ... 带着这些问题,我们一起来探究一下。 概念 "==":它主要是判断符号两边的“对象”的值是否相等,而这里的“值 <a href="https://www.cnblogs.com/coding-night/p/java.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10733985.html
使用ConcurrentHashMap一定线程安全? - 深夜里的程序猿
前言 老王为何半夜惨叫?几行代码为何导致服务器爆炸?说好的线程安全为何还是出问题?让我们一起收看今天的《走进IT》 正文 CurrentHashMap出现背景 说到ConcurrentHashMap的出现背景,还得从HashMap说起。 老王是某公司的苦逼Java开发,在互联网行业中,业务总是迭代得
2019-04-19T01:31:00Z
2019-04-19T01:31:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 老王为何半夜惨叫?几行代码为何导致服务器爆炸?说好的线程安全为何还是出问题?让我们一起收看今天的《走进IT》 正文 CurrentHashMap出现背景 说到ConcurrentHashMap的出现背景,还得从HashMap说起。 老王是某公司的苦逼Java开发,在互联网行业中,业务总是迭代得 <a href="https://www.cnblogs.com/coding-night/p/10733985.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10721478.html
大白话搞懂什么是同步/异步/阻塞/非阻塞 - 深夜里的程序猿
前言 在最近的一些面试中,跟应聘者聊了比较多关于“同步/异步,阻塞/非阻塞”相关的话题,发现大家对于这些概念的理解都比较模糊,甚至有的同学会反问“他们不就是同一个东西吗?”。所以借着这么一个机会,我想用一些尽量简单的例子,尽量简洁的语言来聊聊自己对于这些概念的看法。 正文 这篇文章想通过一个老王“候
2019-04-17T01:50:00Z
2019-04-17T01:50:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 在最近的一些面试中,跟应聘者聊了比较多关于“同步/异步,阻塞/非阻塞”相关的话题,发现大家对于这些概念的理解都比较模糊,甚至有的同学会反问“他们不就是同一个东西吗?”。所以借着这么一个机会,我想用一些尽量简单的例子,尽量简洁的语言来聊聊自己对于这些概念的看法。 正文 这篇文章想通过一个老王“候 <a href="https://www.cnblogs.com/coding-night/p/10721478.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10708750.html
Java异常处理最佳实践及陷阱防范 - 深夜里的程序猿
前言 不管在我们的工作还是生活中,总会出现各种“错误”,各种突发的“异常”。无论我们做了多少准备,多少测试,这些异常总会在某个时间点出现,如果处理不当或是不及时,往往还会导致其他新的问题出现。所以我们要时刻注意这些陷阱以及需要一套“最佳实践”来建立起一个完善的异常处理机制。 正文 异常分类 首先,这
2019-04-15T01:16:00Z
2019-04-15T01:16:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 不管在我们的工作还是生活中,总会出现各种“错误”,各种突发的“异常”。无论我们做了多少准备,多少测试,这些异常总会在某个时间点出现,如果处理不当或是不及时,往往还会导致其他新的问题出现。所以我们要时刻注意这些陷阱以及需要一套“最佳实践”来建立起一个完善的异常处理机制。 正文 异常分类 首先,这 <a href="https://www.cnblogs.com/coding-night/p/10708750.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10701033.html
Java单元测试神器之Mockito - 深夜里的程序猿
什么是 Mock 测试 Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。什么是不容易构造的对象呢?例如HttpServletRequest,需要在有servlet容器环境中创建获取。那不容易获取的对象呢?如一个JedisCluster,
2019-04-13T06:26:00Z
2019-04-13T06:26:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】什么是 Mock 测试 Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。什么是不容易构造的对象呢?例如HttpServletRequest,需要在有servlet容器环境中创建获取。那不容易获取的对象呢?如一个JedisCluster, <a href="https://www.cnblogs.com/coding-night/p/10701033.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10694055.html
解放程序员双手之Supervisor - 深夜里的程序猿
前言 对于大部分程序员来说,主要工作都是进行编码以及一些简单的中间件安装,这就导致了很多人对于“运维”相关的工作会比较生疏。例如当我们拥有一台自己的服务器以后,可能会在上面跑一跑自己blog程序,mysql,nginx等等。当程序越来越多了没有一个统一的入口管理启停,也可能会遇到一些特殊的原因导致程
2019-04-12T01:31:00Z
2019-04-12T01:31:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 对于大部分程序员来说,主要工作都是进行编码以及一些简单的中间件安装,这就导致了很多人对于“运维”相关的工作会比较生疏。例如当我们拥有一台自己的服务器以后,可能会在上面跑一跑自己blog程序,mysql,nginx等等。当程序越来越多了没有一个统一的入口管理启停,也可能会遇到一些特殊的原因导致程 <a href="https://www.cnblogs.com/coding-night/p/10694055.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10681246.html
女朋友也能看懂的Zookeeper分布式锁原理 - 深夜里的程序猿
前言 关于分布式锁,在互联网行业的使用场景还是比较多的,比如电商的库存扣减,秒杀活动,集群定时任务执行等需要进程互斥的场景。而实现分布式锁的手段也很多,大家比较常见的就是redis跟zookeeper,今天我们主要介绍的是基于zookeeper实现的分布式锁。 这篇文章主要借用Curator框架对z
2019-04-10T01:13:00Z
2019-04-10T01:13:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 关于分布式锁,在互联网行业的使用场景还是比较多的,比如电商的库存扣减,秒杀活动,集群定时任务执行等需要进程互斥的场景。而实现分布式锁的手段也很多,大家比较常见的就是redis跟zookeeper,今天我们主要介绍的是基于zookeeper实现的分布式锁。 这篇文章主要借用Curator框架对z <a href="https://www.cnblogs.com/coding-night/p/10681246.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10674832.html
论JVM爆炸的几种姿势及自救方法 - 深夜里的程序猿
前言 如今不管是在面试还是在我们的工作中,OOM总是不断的出现在我们的视野中,所以我们有必要去了解一下导致OOM的原因以及一些基本的调整方法,大家可以通过下面的事例来了解一下什么样的代码会导致OOM,帮助我们以后在工作中能够通过异常信息来判断是JVM里面哪个区域出现了问题。 先介绍一下笔者的相关编码
2019-04-09T01:10:00Z
2019-04-09T01:10:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 如今不管是在面试还是在我们的工作中,OOM总是不断的出现在我们的视野中,所以我们有必要去了解一下导致OOM的原因以及一些基本的调整方法,大家可以通过下面的事例来了解一下什么样的代码会导致OOM,帮助我们以后在工作中能够通过异常信息来判断是JVM里面哪个区域出现了问题。 先介绍一下笔者的相关编码 <a href="https://www.cnblogs.com/coding-night/p/10674832.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10672448.html
优化代码里的 “ 坏味道 ” - 深夜里的程序猿
“ 一颗老鼠屎,坏了一锅粥,代码也是如此。” 在我们的项目中,也许在刚开始开发的时候,大家都会遵从一些规范来实施,但是当业务进度催的紧,或者人员变动,随着时间的迁移,项目不断的迭代以后,这时的代码可能就会出现一些“坏味道”了。 “坏味道”代码的出现可能不会影响我们的业务逻辑,大家自然也就比较容易忽视
2019-04-08T10:37:00Z
2019-04-08T10:37:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】“ 一颗老鼠屎,坏了一锅粥,代码也是如此。” 在我们的项目中,也许在刚开始开发的时候,大家都会遵从一些规范来实施,但是当业务进度催的紧,或者人员变动,随着时间的迁移,项目不断的迭代以后,这时的代码可能就会出现一些“坏味道”了。 “坏味道”代码的出现可能不会影响我们的业务逻辑,大家自然也就比较容易忽视 <a href="https://www.cnblogs.com/coding-night/p/10672448.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10668660.html
Redis的正确使用姿势 - 深夜里的程序猿
前言 说到分布式缓存,可能大多数人脑海浮现的就是redis了,为什么redis能够在竞争激烈的缓存大战中脱颖而出呢?原因无非有一下几点:性能好,丰富的特性跟数据结构,api操作简单。但是用的人多了,就会出现很多不规范或者疏忽的地方,严重的时候甚至会导致生产事故,所以我们有必要来聊聊在Redis使用过
2019-04-08T01:35:00Z
2019-04-08T01:35:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 说到分布式缓存,可能大多数人脑海浮现的就是redis了,为什么redis能够在竞争激烈的缓存大战中脱颖而出呢?原因无非有一下几点:性能好,丰富的特性跟数据结构,api操作简单。但是用的人多了,就会出现很多不规范或者疏忽的地方,严重的时候甚至会导致生产事故,所以我们有必要来聊聊在Redis使用过 <a href="https://www.cnblogs.com/coding-night/p/10668660.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10664118.html
作为面试官,我是如何甄别应聘者的包装程度 - 深夜里的程序猿
前言 周六了,聊点非技术的话题,不知道是否有读者是“996”呢,最近因为一个github项目把这个话题又带火了,看来大家的“怨念”都比较深,人生嘛,出来奋斗总是要吃点苦的,但是身体又是革命的本钱,所以二者怎么权衡,见仁见智咯。 今天转载一下我年少有为的前同事coody写的文章,在金三银四的时候,作为
2019-04-07T01:38:00Z
2019-04-07T01:38:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 周六了,聊点非技术的话题,不知道是否有读者是“996”呢,最近因为一个github项目把这个话题又带火了,看来大家的“怨念”都比较深,人生嘛,出来奋斗总是要吃点苦的,但是身体又是革命的本钱,所以二者怎么权衡,见仁见智咯。 今天转载一下我年少有为的前同事coody写的文章,在金三银四的时候,作为 <a href="https://www.cnblogs.com/coding-night/p/10664118.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/coding-night/p/10660926.html
求求你别用SimpleDateFormat了! - 深夜里的程序猿
前言 啊哈哈,标题写的比较随意了,其实呢最近在各种面试以及博客中,SimpleDateFormat出镜率确实是比较高了,为什么?其实聪明的你们肯定知道,那必须是有坑呗,是的,那我们就以案例来分析一下到底会有那些坑,或者还有没有其他更优的替代方案呢? 正文 首先我们来看一下可能会出现在DateUtil
2019-04-06T02:01:00Z
2019-04-06T02:01:00Z
深夜里的程序猿
https://www.cnblogs.com/coding-night/
【摘要】前言 啊哈哈,标题写的比较随意了,其实呢最近在各种面试以及博客中,SimpleDateFormat出镜率确实是比较高了,为什么?其实聪明的你们肯定知道,那必须是有坑呗,是的,那我们就以案例来分析一下到底会有那些坑,或者还有没有其他更优的替代方案呢? 正文 首先我们来看一下可能会出现在DateUtil <a href="https://www.cnblogs.com/coding-night/p/10660926.html" target="_blank">阅读全文</a>