ThreadLocal不好用?那是你没用对!

2021-05-13
阅读 19 分钟
2.5k
确实如此,ThreadLocal 原本设计是为了解决并发时,线程共享变量的问题,但由于过度设计,如弱引用和哈希碰撞,从而导致它的理解难度大和使用成本高等问题。当然,如果稍有不慎还是导致脏数据、内存溢出、共享变量更新等问题,但即便如此,ThreadLocal 依旧有适合自己的使用场景,以及无可取代的价值,比如本文要介绍了...
封面图

额!Java中用户线程和守护线程区别这么大?

2021-05-06
阅读 9 分钟
4.7k
在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知,所以本文磊哥带你来看二者之间的区别,以及守护线程需要注意的一些事项。
封面图

Semaphore自白:限流器用我就对了!

2021-04-21
阅读 5 分钟
1.7k
大家好,我是 Semaphore,我的中文名字叫“信号量”,我来自 JUC(java.util.concurrent)家族。我们家族有很多优秀的成员,比如:CountDownLatch(等待其他线程都执行完再执行某线程),CyclicBarrier(循环阻塞一组线程,直到某个事件达成),当然我也不比他们弱哦 罒ω罒。以下是我的个人简历,希望各位读者老爷们给个好...
封面图

CyclicBarrier:人齐了,司机就可以发车了!

2021-04-09
阅读 5 分钟
2.9k
上一篇咱讲了 CountDownLatch 可以解决多个线程同步的问题,相比于 join 来说它的应用范围更广,不仅可以应用在线程上,还可以应用在线程池上。然而 CountDownLatch 却是一次性的计数器,以王者农药来说,咱们不可能一场团战就决定比赛的输赢,所以在某些场景下,咱们是需要重复使用某个等待功能的,这就是我们今天要介...
封面图

CountDownLatch:别浪,等人齐再团!

2021-03-31
阅读 4 分钟
2k
一入王者深似海,从此对象是路人。哈喽观众老爷们你们好,在下战神吕布字奉先,今天给大家来一部吕布的教学视频!咳咳,不对。大家好,我是磊哥,今天给大家来一篇 CountDownLatch 的文章。在开始之前,先问大家一个非常专业的技术性问题:打团战最怕_____?一道非常简单的送分题,如果答不对,那磊哥就要批评你了,哈哈...
封面图

Swagger增强神器:Knife4j!5大增强功能预览

2021-03-22
阅读 3 分钟
7.4k
Swagger 是开发中最常用的框架之一了,但 Swagger 本身又有很多不完善的地方,比如,在众多的接口中查询某一个接口,又或者是把所有的接口导出成 Word 格式等,都无法在 Swagger 中实现。
封面图

最新版Swagger 3升级指南和新功能体验!

2021-03-15
阅读 5 分钟
19.4k
Swagger 3.0 发布已经有一段时间了,它于 2020.7 月 发布,但目前市面上使用的主流版本还是 Swagger 2.X 版本和少量的 1.X 版本,然而作为一名合格的程序员怎么能不折腾新技术呢?所以本期就大家带来一篇最新版 Swagger 的内容,本文会带大家看最新版 Swagger 有哪些改变?又是如何将老版本 Swagger 升级到新版的?
封面图

阿里巴巴Druid,轻松实现MySQL数据库连接加密!

2021-03-02
阅读 6 分钟
3.9k
现在的开发习惯,无论是公司的项目还是个人的项目,都会选择将源码上传到 Git 服务器(GitHub、Gitee 或是自建服务器),但只要将源码提交到公网服务器就会存在源码泄漏的风险,而数据库配置信息作为源码的一部分,一旦出现源码泄漏,那么数据库中的所有数据都会公之于众,其产生的不良后果无法预期(比如某某酒店的信息...
封面图

try-catch-finally中的4个大坑,不小心就栽进去了!

2021-01-28
阅读 8 分钟
4.5k
在 Java 语言中 try-catch-finally 看似简单,一副人畜无害的样子,但想要真正的“掌控”它,却并不是一件容易的事。别的不说,咱就拿 fianlly 来说吧,别看它的功能单一,但使用起来却“暗藏杀机”,若您不信,咱来看下面的这几个例子...
封面图

大龄程序员10年编程生涯的转型之旅,2020年新的开始

2021-01-13
阅读 2 分钟
2.1k
冬日里的阳光透过床边的窗户照进屋内,此刻我正在为一个突如其来的 BUG 忙得焦头烂额,指尖轻轻的在键盘上敲打着,阳光透过窗户照在电脑的屏幕上略微有些反光,于是我放下手中的工作,迎着阳光照进来的方向向窗外望去,碧空如洗、云光粼粼,美的一塌糊涂。

Socket粘包问题终极解决方案—Netty版(2W字)!

2021-01-13
阅读 27 分钟
3.2k
上一篇我们讲了《Socket粘包问题的3种解决方案》,但没想到评论区竟然炸了。介于大家的热情讨论,以及不同的反馈意见,本文就来做一个扩展和延伸,试图找到问题的最优解,以及消息通讯的最优解决方案。

Socket粘包问题的3种解决方案,最后一种最完美!

2021-01-06
阅读 8 分钟
4.1k
在 Java 语言中,传统的 Socket 编程分为两种实现方式,这两种实现方式也对应着两种不同的传输层协议:TCP 协议和 UDP 协议,但作为互联网中最常用的传输层协议 TCP,在使用时却会导致粘包和半包问题,于是为了彻底的解决此问题,便诞生了此篇文章。

MySQL为Null会导致5个问题,个个致命!

2020-12-31
阅读 5 分钟
5.8k
在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示:“兵马未动粮草先行”,看完了相关的配置之后,我们先来创建一张测试表和一些测试数据。

文件写入的6种方法,这种方法性能最好

2020-12-22
阅读 10 分钟
14k
在 Java 中操作文件的方法本质上只有两种:字符流和字节流,而字节流和字符流的实现类又有很多,因此在文件写入时我们就可以选择各种各样的类来实现。我们本文就来盘点一下这些方法,顺便测试一下它们性能,以便为我们选出最优的写入方法。

线程池的7种创建方式,强烈推荐你用它...

2020-12-17
阅读 11 分钟
2.2k
但随着时间的推移,集成电路上可容纳的晶体管数量已趋向饱和,摩尔定律也渐渐失效,因此多核 CPU 逐渐变为主流,与之相对应的多线程编程也开始变得普及和流行起来,这当然也是很久之前的事了,对于现在而言多线程编程已经成为程序员必备的职业技能了,那接下来我们就来盘一盘“线程池”这个多线程编程中最重要的话题。

求求你,别再用wait和notify了!

2020-12-15
阅读 10 分钟
7.2k
Condition 是 JDK 1.5 中提供的用来替代 wait 和 notify 的线程通讯方法,那么一定会有人问:为什么不能用 wait 和 notify 了? 哥们我用的好好的。老弟别着急,听我给你细说...

双“11”搞促销?用贪心算法来盘他!

2020-11-13
阅读 3 分钟
1.9k
这几年商家为了刺激消费是变着花样的推出各种各样的活动,以某多多为首的运营式电商更是让我们看到了营销的无限“潜力”。这不,最近刚赶上双 11,小区便利店的老王头也推出了一项「空酒瓶子换酒」的促销活动,它的规则是这样的。

嗯,查询滑动窗口最大值的这4种方法不错....

2020-11-09
阅读 6 分钟
1.7k
这是一道比较基础的算法题,涉及到的数据结构也是我们之前讲过的,我这里先买一个关子。这道面试题最近半年在亚马逊的面试中出现过 28 次,在字节跳动中出现过 7 次,数据来源于 LeetCode。

23张图!万字详解「链表」,从小白到大佬!

2020-11-05
阅读 11 分钟
2.9k
链表和数组是数据类型中两个重要又常用的基础数据类型,数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决和平衡此问题于是就有了链表这种数据类型。

队列实现栈的3种方法,全都击败了100%的用户!

2020-11-03
阅读 6 分钟
2.3k
本文已收录至 Github《小白学算法》系列:[链接]之前我们讲过《用两个栈实现一个队列》,而今天我们要讲的是「用队列实现栈」,它们都属于常见的面试题,而我们今天要用多种方法来实现队列到栈的“转变”。老规矩,先来回顾一下栈(Stack)和队列(Queue)的特性和常见方法。栈是后进先出(LIFO)的数据结构,常见方法如下...

小白学算法:买卖股票的最佳时机!

2020-10-29
阅读 3 分钟
1.6k
今天蚂蚁集团(支付宝)正式上市了,毫无疑问这一举措又造就了一大批富豪,然而作为局外人的我们,也只有羡慕的份了。明明可以考运气吃饭,咱非得靠实力,你说冤不冤啊?

算法图解:如何用两个栈实现一个队列?

2020-10-26
阅读 3 分钟
5.5k
队列和栈是计算机中两个非常重要的数据结构,经过前面的学习(《队列》、《栈》)我们知道了它们各自的特点,队列是先进先出(FIFO)的,而栈是先进后出(FILO)的,那如何用栈来实现队列呢?这可是一道经典的面试题,所以本文我们就来实现一下。

Java中的5大队列,你知道几个?

2020-10-23
阅读 10 分钟
2.6k
通过前面文章的学习《一文详解「队列」,手撸队列的3种方法!》我们知道了队列(Queue)是先进先出(FIFO)的,并且我们可以用数组、链表还有 List 的方式来实现自定义队列,那么本文我们来系统的学习一下官方是如何实现队列的。

一文详解「队列」,手撸队列的3种方法!

2020-10-21
阅读 5 分钟
1.9k
前面我们介绍了栈(Stack),队列和栈是比较像的一种数据结构。我们可以想象有很多辆汽车正在通过单行道的隧道,所有车辆不能插队、不能掉头,先进来的车也先出去,我们可以把这种特征的数据结构称之为队列。

忘记MySQL密码怎么办?一招教你搞定!

2020-10-20
阅读 2 分钟
2k
在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错。那如果我们不小心忘记了 MySQL 的密码,该如何处理呢?别着急,本文教你一招搞定。

最新版MySQL在MacOS上的安装与使用!

2020-10-20
阅读 3 分钟
25.2k
在 MacOS 上安装最新版的 MySQL 有三种方法:使用 Docker 安装;使用 Homebrew 运行 brew install mysql 安装;使用安装包安装。我们本文将采用最常规的方式,也就是安装包的方式进行安装,这也是我推荐给新手的安装方式,因为这种安装方式更直观更可控一些,比如对 MySQL 版本的选择和密码配置等,那接下来我们就直接开...

B站真题:如何判断括号是否有效?

2020-10-18
阅读 4 分钟
2.4k
经过前面文章的学习,我想很多朋友已经看出来了,我接下来要写的是一个关于「算法图解」的系列文章,中间可能会穿插少量的其他类型的文章,但「算法和数据结构」会是我今年文章输出的重点内容。

你不知道的MySQL,以及MariaDB初体验

2020-10-17
阅读 4 分钟
2k
MySQL 是一个跨世纪的伟大产品,它最早诞生于 1979 年,距今已经有 40 多年的历史了,而如今比较主流的 Java 语言也只是 1991 年才诞生的,也就是说 MySQL 要比 Java 的诞生还早十几年,不得不惊叹二者强大的生命力。

算法图解:如何找出栈中的最小值?

2020-10-16
阅读 5 分钟
2.6k
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

推荐一款 MySQL 开源客户端,免费 + 跨平台 + 使用便捷!

2020-10-14
阅读 2 分钟
3.3k
再来看工具使用的动图:从上图可以看出此工具有超级实用的关键字提示功能,还可以很直观的显示数据库和表信息,我们只需要按快捷键 F9 就可以执行选中的 SQL 语句了。