自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员七哥

一个热爱生活的程序员,写文章也喜欢出视频,专注于Java技术干货分享

  • 博客(110)
  • 资源 (2)
  • 收藏
  • 关注

原创 Redis面试那些事(30问与答)

大家好,我是七哥。自从上次分享了小伙伴在实习和秋招期间历经几十场面试总结下来的 MySQL 面试那些事,小伙伴反响很不错,连我这平均阅读100左右的号,那篇文章也获得了将近900的阅读量,我猜应该很多小伙伴都热心转给了睡在自己上铺的兄弟。公众号:七哥聊编程。所以今天咱继续安排,七哥苦苦滴从最近面试的小伙伴那里收集了 Redis 面试常考题(包括Oppo、字节、快手、阿里等公司),还贴心的整理了答案,快来看看你能答对几个。一、基础篇什么是RedisRedis 是一个使用 C 语言写成的,开源

2021-10-01 19:36:40 362

原创 开发第一个RESTful应用程序,已经从困难到简单

大家好呀,我是七哥。本篇是《Spring江湖路》系列文章的第 4 回,持续更新中…本文提供完整代码示例,详见 https://gitee.com/isevenluo/spring-road/ 的 spring-road02 目录。公众号:七哥聊编程,回复【pdf】获取精选计算机电子书资源!大家都知道,我们要用 Spring 创建一个RESTful 应用程序,是需要为框架做很多事情的,比如往项目的构建文件中添加各种库依赖,还要自己写各种配置文件,因为 Spring 虽然牛逼的提供了很多优秀的特性,但

2021-07-27 10:15:11 277

原创 人手一套!本地编译Spring源码,让你的阅读如丝般顺滑

大家好,我是七哥。之前不是在B站出了那个离开 Spring 框架我们要如何写接口的视频,带着大家实现一个mini版的 Spring 框架嘛。这个呀,就有小伙伴在评论区就提出了困惑,自己在学习 Spring 的时候,这个源码环境有些搞不定。 那这怎么能行,不能因为这点小困难就让小伙伴放弃呀。文章目录1. 下载Spring源码2. 阅读Spring的官方编译文档3. 修改配置从本地下载gradle修改远程仓库4. 开始编译构建5. 导入IDEA6. 验证测试7. 总结这里咱就不在赘述读Spring源码

2021-07-18 15:18:57 815 2

原创 创建 SpringBoot 应用程序的三种方式,你都知道了?

本篇是《Spring江湖路》系列文章的第2回,持续更新中…获取精选计算机电子书资源!文章目录本文内容使用 Spring Initilalizr 创建项目的几种方式1. 使用 Spring InitialIzr 的 Web 界面2. 通过 IntelliJ IDEA 使用3. 通过 Spring Boot CLI 使用安装 Spring Boot CLISpring Boot CLI 使用 Initializr总结大家好呀,我是七哥。在上一篇文章,我们花了10分钟了解了 Spring Boot 能做什

2021-07-18 10:50:20 608

原创 Spring Boot 永远滴神!10分钟快速入门,Java程序员必看

大家好呀,我是七哥。最近家里添加了一个小宝贝,近两周忙的是手忙脚乱的,所以《Spring江湖路》也搁置了一段时间。这不慢慢适应了生活的节奏,抽时间就来更新了。不过说句题外话,我之前是觉得我不喜欢孩子的,又哭又闹的,麻烦 !!结果我宝宝出生后,我爱不释手,住院的那几天我连着两天没睡觉就盯着孩子看,生怕她饿了、哭了 。抱在怀里,看到她人生第一次喝奶,那太可爱了,也感到很神奇,这么小,嘴一碰奶瓶就使劲喝了起来。奶爸上线了,后面有机会在写,我们步入今天的正题。今天这篇文章是我们《Spring江湖路》正

2021-07-12 08:37:38 241 3

原创 白嫖?为铁粉准备的Java开发学习路线(2021最新版,含自学资源)

大家好呀,我是七哥。路线图和自学资源都在下面,我先叨叨两句:七哥整理的这份 《2021版 Java开发工程师学习路线》 适合于初、中、高级别的 Java 程序员,也确实是非常用心的,花费了两个周末的时间。同时我自己也是按照这个路线来学习的,建议收藏 或者 分享给和你关系好的小伙伴。七哥也结合市场上各家公司对应职位等级所需要掌握的技术知识和薪资范围进行了匹配划分,在学习过程中多参考,做到心中有数(想想你要拿多高的工资就得付出多大的努力),当然这个是市场普遍水平,不是绝对!区别于其它学习

2021-07-11 10:51:13 632

原创 M1芯片Mac 安装git

M1芯片Mac 安装git本文git安装是使用了mac下的包管理工具homebrew,如果你还没有安装,那真是太不应该了,作为一个开发人员,首先你要安装homebrew,因为它实在是太方便了。homebrew安装教程:M1芯片Mac Homebrew 安装直接使用homebrew安装即可:brew install gitgit ssh 配置查看是否已配置: cd ~/.ssh 如果不能进入该目录,说明没生成过;检查下是否配置过git账户: git config --list重

2021-04-21 08:33:16 14986 1

原创 M1芯片Mac Homebrew 安装

M1芯片Mac Homebrew 安装ARM版Homebrew需要安装在/opt/homebrew路径下,早期的时候需要手动创建目录执行命令,目前使用最新脚本不需要手动操作。直接执行:/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"然后还需设置环境变量,具体操作步骤如下:从macOS Catalina(10.15.x) 版开始,Mac使用zsh作为默认Shell,使

2021-04-21 08:27:43 9179 1

原创 Mac M1 安装 iTerm2+Oh My Zsh+zsh-syntax-highlighting 真香!

Mac M1 Terminal 安装(iTerm2+Oh My Zsh+zsh-syntax-highlighting)# 系列文章目录网上的教程已经很多了,但是很多还是不够详细,我这里总结了一个全面的教程。查看系统shell是否安装zsh用下面这个命令即可查看(M1默认使用的是 zsh):echo $SHELL安装iTem2iTerms2 下载地址点击这里:https://iterm2.com/iterm2的设置里选择 profiles --> colors 中选择 So

2021-04-21 08:05:20 6217 5

原创 Java学习路线图(2020最新版)

你们要的Java学习路线图来了,七哥结合目前工作以及各大主流公司面试和使用的技术整理出了2020最新版Java学习路线图,适合于初、中、高级别的Java程序员,我自己也是按照这个路线来学习的,建议收藏。同时也结合市场上各家公司对应职位等级所需要掌握的技术知识和薪资范围进行了匹配划分,仅供大家参考(市场普遍水平,不是绝对)。学习路线第一阶段:Java基础学习Java基础知识,可供选择的书很多,但它们大都有着一个缺点,那就是内容庞杂,有些内容脱离实际,甚至是过时。对此,在这一阶段,我精选了Java的.

2020-11-15 13:42:18 1029

原创 面试官:Java线程池了解?如果你还回答不好,那还不赶快收藏!

本文已收录到七哥的github:https://github.com/coderluojust/qige_blogs,感谢每颗star。写在前面本文将根据面试中常被问到的 Java线程池 展开抽丝剥茧的解析,这个问题可以说是百分之百会在Java程序员面试中被问到,因为在工作中这个需求实在是太普遍了。Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。本文成文的思路将根据面试中问答的流程展开,读者完全可以将本文展开的知识点作为回答此问题的常规套路,如果..

2020-11-09 07:05:40 208

原创 想使用多线程来提高处理速度,却还不知道使用CountDownLatch与CyclicBarries?

本文已收录到七哥的github:https://github.com/coderluojust/qige_blogs,感谢每颗star。上一篇文章介绍了Java并发包中提供的实现限流的工具类,不了解的小伙伴可以点击查阅:Semaphore是如何实现限流效果的,今天我们学习下控制、协调多线程同步的工具类 CountDownLatch 与 CyclicBarrier。 它们俩主要用在当我们想使用多线程技术来提高程序的运行效率时,常常需要汇总结果,那么如果控制线程之间的步调一致就是需要解决的问题。背景.

2020-11-08 08:16:27 205

原创 一个线程中断引发Bug的“爆肝”排查经历

背景在之前的版本上线了一个接收大数据推送交易数据文件的接口,这个接口要做的逻辑就是解析文件,分批入库。 当然为了数据的可靠性,以及支持重推,最终的流程大概就是这样:上面的流程就是每日增量文件的处理流程,除此之外,还有一个历史交易数据的全量文件也需要推送过来,这个文件由于只推送一次,而且无法按照日期来支持重推,所以就约定只推一次(现在看来这里的处理方法是有点粗糙了。。),下个版本我将初始化接口对应的代码干掉。版本上线后,业务在验证时发现不对劲,开始在开发业务验证群爆出问题:交易数据对不上! 既然不对.

2020-11-04 08:33:47 351

原创 阻塞队列之ArrayBlockingQueue源码解析

之前的文章我们学了 ConcurrentHashMap、 ConcurrentLinkedQueue 等线程安全容器,而且也说了 Java并发包中的 Concurent 开头的并发容器都是非阻塞的,是使用 CAS 自旋操作实现的线程安全。 今天我们来学习实现线程安全的另一种方法:就是「阻塞」形式,即使用锁,这样的容器也被称为阻塞队列。什么是阻塞队列阻塞队列支持阻塞的插入和移除。支持阻塞的插入:就是当队列满了的情况下,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除:就是当队列为空的情况下,队列

2020-11-02 08:51:10 334 2

原创 Java并发|Semaphore如何实现并发控制(限流)

大家好,我是七哥,今天是2020.10.24,也是我们程序员的节日,在这里祝大家节日快乐。絮叨一下今天我们一起来学习下如何使用JDK提供的并发工具类来实现限流。 在之前的工作中,我们有一个限流的场景,那就是在调用关联方系统的时候需要限流,因为提供服务方是保险的核心系统,大家应该都懂这种系统支持的并发不会大,为了保护双方系统的可用性,作为调用方我们在调用的时候也会做一个限流控制。 这种场景在工作中很常见,之前面试的时候也经常会被问到:Java并发包你有哪些使用场景?你可能已经想到了,我们当时的解决方案.

2020-10-25 09:44:36 1269

原创 Java并发|Semaphore如何实现限流器

大家好,我是七哥,今天是2020.10.24,也是我们程序员的节日,在这里祝大家节日快乐。絮叨一下今天我们一起来学习下如何使用JDK提供的并发工具类来实现限流。在之前的工作中,我们有一个限流的场景,那就是在调用关联方系统的时候需要限流,因为提供服务方是保险的核心系统,大家应该都懂这种系统支持的并发不会大,为...

2020-10-25 00:53:35 81

原创 Java并发| Atomic包下的原子操作类使用与原理解析

我们为什么一定要学习 Atomic 包下的这些原子操作类呢? 下面告诉你原因。Java中有那么一些类,是以Atomic开头的。这一系列的类我们称之为原子操作类。以最简单的类AtomicInteger为例。它相当于一个int变量,我们执行Int的 i++ 的时候并不是一个原子操作。而使用AtomicInteger的incrementAndGet却能保证原子操作。 更新变量这种场景下效果和 synchronized 相同,却要简单高效的多。这篇文章主要介绍了 Java并发包下 Atomic包中的原子操作

2020-09-30 10:20:21 1355 2

原创 想成为优秀的Java程序员,你需要读哪些书?

如果你想成为一名优秀的程序员,那么你需要做什么?七哥认为最重的就是——多读书!那么你可能要问了,书籍那么多我该读哪本呢?答案是读那些经典地经受住时间考验的书。今天我分享给大家三本属于Java开发人员都应该必读的Java书籍。如果你已经做了2-3年的程序员,那么很可能你已经读过这些书了。但是如果你还没有读过,那么你阅读它们的最佳时机就是--现在!你不会后悔把时间和金额投资在这些书上,因为回报是无限的。划重点:本次推荐的三本书,免费送出5本给支持七哥的小伙伴们 !!! ...

2020-09-23 23:21:51 380

原创 我是如何从电脑小白走上编程之路

❝这篇文章,主要分享笔者从一个对于电脑的掌握只会开机打游戏的电脑小白,通过机缘巧合的运气走上编程之路,打开了人生的新方向。之后毕业到工作也都算是顺风顺水,进入世界500强企业。对于有些人来说这可能不算什么,但是对于一个农村出来的普通一本大学的穷小子来说,这是我之前不敢想的。我很感谢我学了编程,很感谢这个互联网时代。这里只是分享记录自己的成长经历和一些感受,不感兴趣的就不用往下看了哈。❞前言在进入大学校园后,我是学通信专业的,大一的时候听大二的学长说,我们专业毕业后基本上都是去拉网线,做销售,一个

2020-08-27 22:44:45 1623 4

原创 设计模式系列汇总

写在前面这是我们学习设计模式的最后一章了,今天没有具体的设计模式讲解,而是针对于前面我们学习的常用的设计模式的总结。我们要知道,现实开发工作中,情况要复杂的多,往往可能要组合多种模式来解决一个普遍的问题,希望这一篇文章可以指引你的方向 。。。设计模式系列文章目录《据说是程序员工作中用到的最多的模式:策略模式解析》《暗中等待:观察者模式解析》《穿了马甲你就牛逼了:装饰者模式解析》《工厂模式-简单工厂、工厂方法、抽象工厂解析》《单例模式的3种经典实现》《常用设计模式之命令模式解析》《神头鬼脸之适配器模

2020-08-09 11:22:23 229

原创 代理模式解析,静态代理、动态代理一文全都告诉你

Proxy Pattern经过两个月的学习,我们的设计模式系列学习也将近到了尾声。不过设计模式这东西一时半会肯定是掌握不下来的,需要我们在后续的工作中持续的去练习。有了这方面的思维,剩下的就是靠自己刻意训练了。今天带来的是代理模式,Proxy Pattern。这个模式想必大家都不陌生,因为 Java 程序员面试一般都会问的 Spring Aop 经过会说到动态代理,这其实就是代理模式的一种实现。 不过大部分人可能都没有系统的去了解过,本文的目的就是彻底搞清楚代理模式的小99。阅读之前也思考关于代理模式

2020-08-09 10:41:36 417

原创 设计模式系列:状态模式解析

State Pattern这篇文章,我们来聊聊状态模式,大家可以好好看看。我觉得这个模式在我们平时工作中的使用场景还是挺多的,而且很有意思。老规矩我们还是先抛出文章的整体结构,大家带着目的阅读,效果也会更好。同时也能决定是否感兴趣要不要继续看下去。文章脉络APP抽奖活动问题状态模式介绍以及类图状态模式如何解决APP抽奖活动问题状态模式在实际项目-借贷平台的应用解析注意事项和细节APP抽奖活动问题这里给出一个需求,大家先思考下如果让你来实现设计,你会如何实现?用户每次抽奖前要扣除50积分,中

2020-08-09 09:56:12 299

原创 设计模式系列11-组合模式解析

COMPOSITE今天为大家带来死磕设计模式系列的第11个模式,属于结构型模式的--组合模式。带着问题出发什么是组合模式?组合模式解决了什么问题?适用场景是什么?定义将对象组合成树形结构以表示“部分-整体”的层次结构。Composite 使得用户对单个对象和组合对象的使用具有一致性。如果业务中需要定义复杂的数据结构,可以用树形嵌套来表示,那么组合模式就有用武之地了。动机比如在绘图编辑器中,用户可以使用简单的组件创建复杂的图表。用户可以组合多个简单组件以形成一些较大的组件,这些组件又可以

2020-08-07 20:30:52 212

原创 行为型模式:迭代器模式解析

ITERATOR今天是设计模式学习系列的第10篇,今天要学习的是 -- 迭代器模式。带着问题出发什么是迭代器模式?迭代器解决了什么问题?适用场景?定义迭代器模式 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。问题一个聚合对象,如列表,数组,树型结构等,应该提供一种方法来让别人访问它的元素,而又不需要暴露内部结构。此外针对不同的需要,可能要以不同的方式遍历这个聚合对象。但是由于聚合对象内部结构不一样,遍历方式不一样,所以会对使用者造成很大的烦恼,因为要针对不同的聚

2020-07-28 23:59:25 935

原创 最有用的设计模式之一-模板方法

今天是设计模式学习系列的第9篇,为大家带来一个使用特别广的设计模式 -- 模板方法模式。从问题出发什么是模板方法模式?常说的钩子方法是什么?和模板方法的关联?模板方法模式和策略模式好像有点像,如何区分?JDK 中的具体体现?模式解析一如既往的为了方便理解,我们从一个日常开发中的例子出发。做保险系统的都知道,保险分为很多种类,比如:产险、寿险、养老险、健康险、车险等。 我们作为后台开发者在设计开发这些保险产品上线的时候,首先要分析下这几个险种购买流程的共同点?这些保险在产品购买时的流程如下(举个

2020-07-25 20:20:25 215

原创 设计模式之外观模式解析

今天是设计模式学习系列的第8篇--外观模式。开篇问题什么是外观模式?外观模式和适配器模式的区别?外观模式解析首先我们先看一个场景,我们平常肯定都是用银行的app,在注册时,都要经过实名认证这个步骤。但是实名这个功能它是非常复杂的,包括验密、上传证件、OCR识别、联网核查等不同的步骤。如果一个客户要使用实名这个功能如果要他一个个对接,那估计头都大了,对接是如此的复杂。 怎么办?接下来我们看看外观模式如何解决这团混乱,好让平台客户可以轻松的使用实名功能。有了外观模式,通过实现一个提供更合理接口的外

2020-07-25 19:55:58 264

原创 神头鬼脸之适配器模式

今天是设计模式学习系列的第7篇--适配器模式。开头三问?什么是适配器模式?什么是类的适配器模式、对象的适配器模式、接口的适配器模式?适配器模式和装饰者模式的区别?适配器模式的使用场景?带着这几个问题,开始我们今天的学习吧。适配器模式解析说到适配器模式,其实顾名思义不难理解,我举一个例子。相信很多朋友都有去过香港买东西,比如我曾经去香港买了一个 ipad air,但是呢,港版的它的充电器插头和我们大陆的插座是不适配的。但是我已经买回来了,这个插头可是不能直接充电的,那怎么办呢?这时候我去淘宝

2020-07-18 22:31:05 303

原创 常用设计模式之命令模式解析

今天是设计模式学习系列的第6篇,命令模式!带着问题出发什么是命令模式?命令模式的好处是什么?命令模式的使用场景?命令模式解析简单的来说,命令模式就是 将 请求的调用者 和 请求的接收执行者 分隔开来。举一个生活中常见的例子,比如你去餐馆点餐,你选好菜品下单,这时候服务员过来,拿着菜单啥都不用管,直接把菜单给厨房就好了,厨房做好菜,服务员返回给顾客。在这个例子中,服务员就是请求的调用者,她不用管具体的订单是什么,只知道拿到订单就给厨师(调用执行方法),而厨师就是请求的接收执行者,顾客就作为命令创

2020-07-18 22:12:53 303

原创 单例模式的3种经典实现

今天来学习单例模式,这个模式比较简单,但是应用确实挺广的,属于入门级的设计模式。带着问题出发什么是单例模式?单例模式的几种实现?单例模式介绍单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。省去了new操作符,降低了系统内存的使用频率,减轻GC压力。其实概念很简单,即:「确保一个类只有一个实例,并提供全局访问点。」实现饿汉单例p

2020-07-12 09:59:13 324

原创 工厂模式-简单工厂、工厂方法、抽象工厂解析

今天来学习一个使用非常广泛、也非常有威力的设计模式--「工厂模式」,主要核心还是在于帮助我们针对抽象编程,而不是针对具体类编程。从问题出发简单工厂是什么?是不是一个设计模式?如果使用?工厂方法是什么?抽象了什么?抽象工厂是什么?抽象了什么?工厂方法和抽象工厂的区别?简单工厂模式简单工厂不算是一个真正的设计模式,而更像是一种我们的编程习惯,但是在平时编码中这不失为一个简单的方法,可以将客户程序从具体类解耦。介绍工厂类拥有一个工厂方法(create),接受了一个参数,通过不同的参数实例化不同的产品

2020-07-12 09:47:46 222

原创 穿了马甲你就牛逼了:装饰者模式解析

❝本文是设计模式系列的第三篇文章,今天主要学习装饰者模式。❞不知道大家没有有这样一种感觉,在看书学习时,感觉都看懂了,可是过一段时间就忘,因此我们从开头就先问自己几个问题,过一段时间就回过头了复习下这几个问题,从而巩固学到的知识,在你的大脑中将这些知识点串起来。 希望能不断反复的思考,将点成线,最终形成知识块,消化掉它。带着问题学习什么是装饰者模式?什么场景下需要使用装饰者模式?如何实现装饰者模式?常用框架或源码中有哪些案例可以体现?装饰者模式的概念我们先来看看装饰者模式的说明:❝「装饰

2020-06-26 14:23:23 330

原创 暗中等待:观察者模式解析

设计模式想必大家都懂一些,不仅能体现平时设计写代码的基本功,而且也是面试时的高频考点。今天来讲解学习下 观察者模式。 本文在讲解具体模式的同时,也会列举 jdk 以及 常用框架中使用到的地方,帮助大家加深理解。设计模式的学习,我的建议是,首先弄懂它的含义,和前人已经总结沉淀下来的设计原则。将这些概念记在心里,当工作中碰见对应的需求开发工作时,按照原则去认真思考、设计实现,最终符合要求的结果往往就已经是一些设计模式的具体实现了。场景举例首先列出一个实战场景,用这个场景来讲述观察者模式是什么,以及为什.

2020-06-23 12:47:44 268

原创 据说是程序员工作中用到的最多的模式:策略模式解析

这是从零学习设计模式的第一篇文章,也算是入门篇吧。大家都知道设计模式很重要,掌握设计模式是一个高级开发乃至架构师都必须要具备的技能。 但是不知道有没有这样的感觉,每次看设计模式的概念都差不多能看懂,但是就是不会用,而且不能够识别一些优秀的代码具体是运用了什么设计模式? 最终的结果就是,慢慢的忘记,脑海中的设计模式只是一个很大很虚的概念。我目前就属于这种状态,为了能够提高自己的编码设计能力,在工作中设计出有弹性,好维护,能更好的应付业务变化的代码,准备认真学习一边设计模式。其实大学期间就断断续续看过《H

2020-06-20 12:57:31 561

原创 死磕Java并发编程(9):无界线程安全队列ConcurrentLinkedQueue源码解析

这篇文章理解起来不难,相比于 ConcurrentHashMap 比较简单,因为不涉及扩容以及数据迁移等操作,相信你读完一定会有收获的。本文是死磕Java并发编程系列文章的第 9 篇,主角就是 java 并发包中提供的 ConcurrentLinkedQueue 这是一个线程安全且无界的队列(因为是基于链表实现的,所以无界) ,在并发编程中经常需要用到线程安全的队列,面试线程池时,其中的队列也可以采用这个队列来实现,它线程安全,且采用先进先出的规则排序。通过整个并发系列文章的学习,我们能想到如果要实现

2020-05-12 14:32:06 648

原创 死磕Java并发编程(8):CurrentHashMap如何实现高效地线程安全?在Java8中有哪些设计实现的演进?

这篇文章一开始我以为会比较简单,但是在深入源码分析时,遇到了很大的阻碍,比前面我们分析AQS以及读写锁的源码要难理解的多,断断续续也写了4天了。 如果你看完还是没有理解的话,那我在这里表示深深的歉意,同时也欢迎你和我一起沟通。本文是死磕Java并发编程系列文章的第 8 篇,主角就是 java 并发包中提供的 CurrentHashMap 这是一个线程安全且高效的HashMap ,也是面试的高...

2020-05-07 00:54:43 2171 2

原创 死磕Java并发编程(7):读写锁 ReentrantReadWriteLock 源码解析

这是《死磕Java并发编程》系列的第7篇文章 我们在一起来看看 读写锁 ReentrantReadWriteLock 的源码分析,基于Java8。阅读建议:由于Java并发包中的锁都是基于AQS实现的,本篇的读写锁也不例外。如果你还不了解的话,阅读起来会比较吃力。建议先阅读上一篇文章关于 AbstractQueuedSynchronizer 的源码解析。什么是读写锁?提到锁,你可能会想到...

2020-05-02 16:19:34 326

原创 死磕Java并发编程(6):AQS详解,这次就彻底搞懂Java并发包中的锁原理,不用每次面试都去背一遍了

你是不是在面试过程中经常被问到了解Java中的锁? 可能你也会从网上的博客文章中看到过相关概念和知识,可是如果没有深入理解,对锁这块知识做相关的梳理,形成自己的知识脑图,过不久就会忘记。结果就是每次面试都得从头复习一遍,费时费力。今天开始Java并发中锁的学习,主要的目的是梳理学习Java并发包中有关锁的API和组件。目标是知道如何使用以及具体实现原理。真正做到知其然知其所以然,才能得心应...

2020-04-26 09:25:04 664 4

原创 第一次面试腾讯就挂了,但是对于我的收获非常多

今天是2020.04.18日,我第一次面试腾讯的岗位。 由于最近已经提了离职并且拿到了比较满意的offer,所以这次面腾讯的时候不是很紧张。面试时间是前一天晚上的10点打电话给我约的。 接下来就进入正题,讲一下面试经过。本次面试是在牛客网采用的视频面试,首先让我做了自我介绍,大概讲了下个人的基本信息和履历以及掌握的技术栈。面试官在牛客网敲出了一道题,让我用代码实现,题目本身很简单,就是将a,b...

2020-04-18 15:03:39 1287 8

原创 Java开发这么久,这些线程的基础知识你确定都会了?

熟悉Java开发的同学都知道,Java天生支持多线程编程的。这篇文章我们主要来学习下Java线程的基础知识,从线程的启动到不同线程间的通信方式,目的是更系统的掌握Java线程基础。本文的讲解主要从以下几个点展开:什么是线程线程都有哪几种状态线程的启动和终止线程间的通信利用本文讲解的线程知识,实现一个简单的线程池如果上面列出的这几个点,你都已经熟练的掌握了,那么可能本文就无法给你带来帮助...

2020-04-12 12:58:41 296 2

原创 happens-before是什么?JMM最最核心的概念,看完你就懂了

happens-before是JMM最核心的概念。对应Java程序员来说,理解happens-before是理解JMM的关键。我的并发系列文章,前面三篇学习了 Java并发机制底层实现的三个关键要素:volatile、synchronized、原子性操作。以及Java内存模型是为了解决在并发环境下由于 CPU缓存、编译器和处理器的指令重排序 导致的可见性、有序性问题。 其中重点学习了 vo...

2020-04-06 15:53:45 750

Java问题定位技术.pdf

本书介绍的定位技术主要有:内存泄漏定位,线程堆栈分析等。内存定位套路比较固定, 但线程堆栈分析需要一定的火候,它需要一定的悟性和长期的修炼。在可靠性和稳定性问题 的定位中,线程堆栈分析是最有力的武器,掌握了这个定位工具,会大大增强自己的"内功"。如果您是从C++/C转到Java上的程序员,那么线程堆栈应该不是陌生的技术,但对于原 生的Java程序员来说, 很多人不清楚还有这个这个密门绝技。 什么是线程堆栈1? 线程堆栈也称 作线程调用堆栈。Java线程堆栈是虚拟机中线程(包括锁)状态的一个瞬间快照,即系统在某 个时刻所有线程的运行状态,包括每一个线程的调用堆栈, 锁的持有情况等信息。 每一种Java虚 拟机(SUN JVM、 IBM JVM、 JRokit、 GNU JVM等等)都提供了线程转储(thread dump)的后门。有需要的朋友可以下载看看

2019-05-14

计算机网络自顶向下方法.中文第6版.rar

计算机网络:自顶向下方法 最新第7版 原版完整高清 非扫描 可复制 可搜索 书签全 计算机网络必看书籍

2019-05-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除