随笔分类 -  Java

摘要:多线程在工作中多多少少会用到,我们知道启动 多线程调用的是 start() 方法,而不是 run() 方法,你知道原因吗? 在探讨这个问题之前,我们先来了解一些多线程的基础知识~ 线程的状态 Java 中,定义了 6 种线程状态,在 Thread 类可以找到: 这 6 种状态之间的关联,可以看下面这 阅读全文
posted @ 2020-05-12 14:58 平头哥的技术博文 阅读(1760) 评论(1) 推荐(1) 编辑
摘要:本文聊一下 JUC 下的 LinkedBlockingQueue 队列,先说说 LinkedBlockingQueue 队列的特点,然后再从源码的角度聊一聊 LinkedBlockingQueue 的主要实现~ LinkedBlockingQueue 有以下特点: LinkedBlockingQue 阅读全文
posted @ 2020-05-08 13:18 平头哥的技术博文 阅读(1014) 评论(1) 推荐(1) 编辑
摘要:ArrayList 是我们常用的工具类之一,但是在多线程的情况下,ArrayList 作为共享变量时,并不是线程安全的。主要有以下两个原因: 1、 ArrayList 自身的 elementData、size、modCount 在进行操作的时候,都没有加锁; 2、这些变量没有被 volatile 修 阅读全文
posted @ 2020-05-07 15:01 平头哥的技术博文 阅读(1009) 评论(0) 推荐(1) 编辑
摘要:事务我们都不陌生,我们常说的事务一般都是指单机事务,即本地事务。那分布式事务是什么? 分布式事务就是由多个本地事务组合而成的事务 ,一般在分布式场景下才会出现。 比如电商平台中,我们在购物的时候,下单支付这个过程看上去是一气呵成的,但是背后可能是多个系统的分工合作。订单系统、支付系统、物流系统等。这 阅读全文
posted @ 2020-04-21 09:22 平头哥的技术博文 阅读(607) 评论(0) 推荐(0) 编辑
摘要:你可能没有看过 RocketMQ 的架构图,没关系,一起来学习一下,RocketMQ 架构图如下: 在 RocketMQ 中,有四个角色: Producer :消息的生产者,每个 MQ 中间件都有。 Consumer :消息的消费者,每个 MQ 中间件都有。 NameServer :RocketMQ 阅读全文
posted @ 2020-04-10 09:13 平头哥的技术博文 阅读(1043) 评论(0) 推荐(0) 编辑
摘要:我们知道 RocketMQ 是一款高性能、高可靠的分布式消息中间件,高性能和高可靠是很难兼得的。因为要保证高可靠,那么数据就必须持久化到磁盘上,将数据持久化到磁盘,那么可能就不能保证高性能了。 RocketMQ 在兼容这两方面做的不错,先从磁盘说起, 现代的磁盘都是高性能的,写速度并不一定比网络的数 阅读全文
posted @ 2020-04-09 09:13 平头哥的技术博文 阅读(3496) 评论(0) 推荐(1) 编辑
摘要:在职场上,我们首先需要过硬的专业知识,它是我们的生存之本。但是人是惰性的,很多时候并不会主动输入,那么大学所学的那些专业知识,其实不足以对抗漫长的职业生活。 想要在职场上走的好,除了专业知识之外,我们还需要具备哪些能力?最近在看吴军老师的《谷歌方法论》,在里面找到了相应的答案。除了专业知识之外,我们 阅读全文
posted @ 2020-04-05 09:49 平头哥的技术博文 阅读(738) 评论(0) 推荐(0) 编辑
摘要:扫二维码登录现在比较常见,比如微信、支付宝等 PC 端登录,并且好像每款 APP 都支持扫码登录,不搞个扫码登录都不好意思。作为技术人员,不知道您对这背后的实现逻辑是否敢兴趣,反正我是一直都对这背后实现好奇。最近刚好看到一个关于扫码登录原理的视频,于是就整理出来了这篇文章,希望对您有所帮助。 本文共 阅读全文
posted @ 2020-04-01 09:01 平头哥的技术博文 阅读(7058) 评论(3) 推荐(28) 编辑
摘要:在 JUC 包下,有一个 Semaphore 类,翻译成信号量,Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。Semaphore 跟锁(synchronized、Lock)有点相似,不同的地方是,锁同一时刻只允许一个线程访问某一资源, 阅读全文
posted @ 2020-03-31 09:31 平头哥的技术博文 阅读(692) 评论(0) 推荐(0) 编辑
摘要:消息中间件使用广泛,常用来削峰填谷、系统解耦、异步处理。异步处理可能是使用的最多的场景了,比如现在的技术博客网站,都采用积分制,用户发表一篇文章后,可以获取想要的积分,为了提升系统的性能,给用户加积分的操作可以异步处理,并不需要放在同步流程中。 我们可以把用户ID,需要增加的积分封装成一条消息投递到 阅读全文
posted @ 2020-03-12 09:32 平头哥的技术博文 阅读(1237) 评论(3) 推荐(3) 编辑
摘要:做一件事很难,要做好一件事就更难了,影响的因素太多了。今天就谈一谈我认为要做好一件事情的三个基本要素,供大家参考。 1、心态 能否做好一件事,心态有着决定性作用。 在做事的时候,必须切实行动,不能抱着试一试的心态,如果是这种心态,那么最终都会以失败而告终。 试一试的心态更多的是一种借口,在还没有做之 阅读全文
posted @ 2020-02-19 20:26 平头哥的技术博文 阅读(1311) 评论(0) 推荐(0) 编辑
摘要:看到了一道面试题:“为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?为什么不能用两次握手进行连接?”,想想最近也到金三银四了,所以就查阅了相关资料,整理出来了这篇文章,希望对你们有所帮助。 TCP 连接 我们先来补一下基础什么是 TCP 协议? 传输控制协议( Transmission 阅读全文
posted @ 2020-01-08 09:35 平头哥的技术博文 阅读(2372) 评论(0) 推荐(5) 编辑
摘要:作为职场新人,在职场这门学问中,我们都还没有入门,这是我听完曹政老师的知识星球年终福利课《职场的真相》之后的感悟,曹政老师这门课针对的就是我们这样的职场新人,在课中曹政老师讲述了他自己当年在职场中所犯的错误并且指导年轻人该如何在职场中前行,虽然里面的不少观点在曹政老师的很多公众号文章中有提到过,但是 阅读全文
posted @ 2019-12-23 10:11 平头哥的技术博文 阅读(653) 评论(0) 推荐(2) 编辑
摘要:在开发中,我们经常使用 HashMap 容器来存储 K V 键值对,但是在并发多线程的情况下,HashMap 容器又是不安全的, 因为在 put 元素的时候,如果触发扩容操作,也就是 rehash ,就会将原数组的内容重新 hash 到新的扩容数组中,但是在扩容这个过程中,其他线程也在进行 put 阅读全文
posted @ 2019-12-09 16:30 平头哥的技术博文 阅读(978) 评论(0) 推荐(0) 编辑
摘要:这是今天我们在技术群里面讨论的一个知识点,讨论的相当激烈,由于对这一块使用的比较少,所以对这一块多少有些盲区。这篇文章总结了所讨论的内容,希望这篇文章对你有所帮助。 在 Java 开发中,对象拷贝或者说对象克隆是常有的事,对象克隆最终都离不开 直接赋值 、 浅拷贝 、 深拷贝 这三种方式,其中直接赋 阅读全文
posted @ 2019-12-04 11:11 平头哥的技术博文 阅读(541) 评论(0) 推荐(1) 编辑
摘要:Redis 是一款比较常用的 NoSQL 数据库,我们通常使用 Redis 来做缓存,这是一篇关于 Redis 安装的文章,所以不会涉及到 Redis 的高级特性和使用场景,Redis 能够兼容绝大部分的 POSIX 系统,例如 Linux、OS X 等,但是很遗憾不支持在 Windows 上安装, 阅读全文
posted @ 2019-11-18 16:09 平头哥的技术博文 阅读(1674) 评论(1) 推荐(1) 编辑
摘要:Java 内存模型跟上一篇 JVM 内存结构很像,我经常会把他们搞混,但其实它们不是一回事,而且相差还很大的,希望你没它们搞混,特别是在面试的时候,搞混了的话就会答非所问,影响你的面试成绩,当然也许你碰到了半吊子面试官,那就要恭喜你了。Java 内存模型比 JVM 内存结构复杂很多,Java 内存模 阅读全文
posted @ 2019-11-12 09:55 平头哥的技术博文 阅读(717) 评论(1) 推荐(0) 编辑
摘要:最近在看《 JAVA并发编程实践 》这本书,里面涉及到了 Java 内存模型,通过 Java 内存模型顺理成章的来到的 JVM 内存结构,关于 JVM 内存结构的认知还停留在上大学那会的课堂上,一直没有系统的学习这一块的知识,所以这一次我把《 深入理解Java虚拟机JVM高级特性与最佳实践 》、《 阅读全文
posted @ 2019-11-05 11:16 平头哥的技术博文 阅读(658) 评论(0) 推荐(1) 编辑
摘要:可见性问题 可见性是指一个线程对共享变量进行了修改,其他线程能够立马看到该共享变量更新后的值 ,这视乎是一个合情合理的要求,但是在多线程的情况下,可能就要让你失望了,由于每个 CPU 都有自己的缓存,每个线程使用的可能是不同的 CPU ,这就会出现数据可见性的问题,先来看看下面这张图: 对于一个共享 阅读全文
posted @ 2019-10-31 09:21 平头哥的技术博文 阅读(871) 评论(2) 推荐(0) 编辑
摘要:最近拜读了“阿里工程师的自我修养”手册,12 位技术专家分享生涯感悟来帮助我们这些菜鸡更好的成长,度过中年危机,我收获颇多,其中有不少的方法技巧和我正在使用的,这让我觉得我做的这些事情是对的,我走在了一条正确的道路上。我们程序员这个行业不像医生、律师等其他行业,那些行业可谓是越老越吃香,但是我们不一 阅读全文
posted @ 2019-10-23 09:26 平头哥的技术博文 阅读(3428) 评论(18) 推荐(19) 编辑