自定义博客皮肤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架构师联盟

公众号:Java架构师联盟

  • 博客(40)
  • 收藏
  • 关注

原创 阿里重磅出击,整理形成每个优秀程序员都应遵循的代码原则和规范

前言现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:数据库的表结构和索引、设计缺陷可能带来软件上的架构缺陷或性能风险、工程结构混乱导致后续维护艰难、没有鉴权的漏洞代码易被黑客攻击等等。那这样的话,我们在项目开发的过程中,就需要要更加优秀的程序猿,但是,这个优秀不仅仅是技术能力牛逼,还有其他方面,我们来看一下。什么是优秀的程序员?首先我们会先提出这个问题,如果你向10个人问这个问题,尽管可能答案不同,但是少有一点应

2020-06-30 21:44:27 455

原创 耐心看,1个Dubbo漏洞,35道必问面试题,Dubbo没什么可神秘的

Dubbo漏洞无意中在网上看到了这样的一条新闻,说是我们360监测发现了Dubbo官方发布的危险漏洞通告,而且尴尬的是,世界上受影响最大的居然是中国,有图有真相我感觉这也从侧面证明了一件事情,就是为什么面试的时候这些神奇的技术会问的那么频繁了,这一次真的是找到真相了,那我们来看一下到底是怎么回事吧0x01 漏洞背景2020年06月23日, 360CERT监测发现 Apache Dubbo 官方 发布了 Apache Dubbo 远程代码执行 的风险通告,该漏洞编号为 CVE..

2020-06-29 22:56:01 474

原创 一位Google高管审查了20,000+简历,他发现了这5个致命的错误

工作与生活的平衡下班划水摸鱼时间,我比较喜欢浏览一下各类新闻网页,比如说ins,这不,我就在ins上看到了这样的一篇文章,内容很简单,就是简历,但是就是这样一份简历,却让这位Google高管震惊不已,这5个错误是怎么做到全球统一的啊在您的一生中,您会将数十(即使不是数百)份简历发送给不同的雇主。谷歌前人事运营高级副总裁,现任CEO和Humu的联合创始人Laszlo Bock熟悉求职经历。在他的职业生涯中,他也发送了数百份简历。但是,与大多数人相比,博克对杰出简历的模样有着独特的见..

2020-06-29 17:25:38 335

原创 程序猿工作的时候,耳机里到底再放什么?

说实话,其实可能什么都没有,比如我,我可能早上上班之后我就带着耳机,可是直到下班我都不会去开音乐播放器,只是单纯的带着耳机,但是你问我为什么,抱歉,我也不知道为什么。对于认识程序员或身边有程序员的人来说,这是一种常见的现象。当他们写代码时,他们经常戴着耳机。那么为什么程序员在工作时喜欢戴耳机呢?有大神总结了这么几点,来吧,一个萝卜一个坑,看看有没有你我只想安静点!这个是大多数时候的我只是戴着耳机,没什么好听的。只是想让别人知道,我很忙,请不要打扰我的工作。大多数时候,戴耳机不仅是为了..

2020-06-29 16:38:38 394

原创 作为程序员,这些东西,你可以不用,但你不能没有

不知道大家的桌面式怎么样的,我的桌面式干干净净的,你说我的电脑里东西少吗?开发的、测试的、美工的、娱乐的还真不少,但是,打开电脑就看到桌面全是各种各样的图标,我是很难受,但是,win10的搜索功能帮我解决了一些问题就是下图这个但是,这只是让我的桌面整洁了,在正常的开发过程中,下面的这些软件才是起到排头兵的作用,帮我节省了大量的时间而且提升了我的工作效率,这里就分享给大家本地文件搜索:EverythingEverything可以说是速度最快的文件搜索软件了,其速度之快令人震惊,百G硬.

2020-06-28 22:19:58 1763 2

原创 5天,2W+字整理数据库实操指令,附练习题,再说数据库学不明白

朋友工作的原因,端午节也没闲着,陪这个祸害整理了一下数据库的sql指令,并且整理配套的习题进行练习使用,我正好也没啥事,疫情的原因啥也干不了,就陪他整理一波,顺便薅一波羊毛,嘿嘿嘿不过,因为真的是文字太多了,所以只展示一部分,需要完整文档以及sql文件的,关注公众号:Java架构师联盟,添加小助手获取第一天:第一节课:数据库基本概念学习1、数据 书其实就是表示信息的一种特殊符号的集合例如:图片、txt、音频、视频等等引入:互联网的发展交互的其实就是数据2、数据库: 图书馆

2020-06-28 15:13:36 292

原创 过关斩将,我最后输在sql的书写和执行顺序上,细节决定成败啊

有的时候就是这样,我们大众普遍接受的,可能最后发现是错的,就像陈思成的那个电影说的,我们曾经认为根本没有的,后来发现;它确确实实存在。有一些我们深信不疑的,后来却明白;根本就没有。比方说我今天要讲的这个哭笑不得的例子,虽然最后也拿到了offer,但是,这个真的是给我问懵了,来看一下怎么回事吧1. 书写顺序按以下的顺序书写sql语句SELECT 查询列表.FROM 表 1【连接类型】 JOIN 表2ON 连接条件WHERE 筛选条件GROUP BY 分组列表HAVING

2020-06-27 17:30:00 278

原创 阿里数据库开发规范解释:关联查询,为什么要建议小表驱动大表?

有的时候我们在操作数据库时会将两个或多个数据表关联起来通过一些条件筛选数据,在关联表时我们要遵循一些原则,这样会使我们编写的SQL 语句在效率上快很多。一、优化原则小表驱动大表,即小的数据集驱动大得数据集。在知道什么是小表驱动达大表之前,我们先来了解两个查询关键字,IN 与 EXISTS。我们通过两段查询语句先来了解一下它们的作用。我建立了两张表,一张员工表,一张部门表,员工表中有部门id 这个属性,将这两张表关联起来。我们先使用IN 来查询数据:SELECT*FROMt_emp...

2020-06-22 23:17:53 651

原创 自从用完Gradle后,有点嫌弃Maven了!速度贼快!

前段时间帮朋友调试一个ETL程序,但是可悲的事我的超级小电脑让我重做了一下系统,啥也没有了,最可气的就是maven依赖的下载,要命了,改了下载源也没快那里去,突然想起来几天前看的一个技术 Gradle,所以,我就借这个机会用一下试试,用完我深刻感叹,真香啊maven不足相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服:1. Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么.

2020-06-22 21:22:59 780

原创 5000+收藏的Spring Boot面试核心,助你乘风破浪

面试官问的好多技术我都用到了,但面试官的问题我们时却不能给出准确的答案。我们平常在项目中主要关注使用,程序run起来就ok了,很少去了解原理、架构、和性能调优。这样在面试问题中总有一种无法直击问题本质的无力感,很难充分表现自己,最终影响面试结果。其实,这是很多Java研发人员遇到的普遍问题,不清楚原理,虽然用起来没问题,但讲起来有困难!为了避免此类问题,本文针对面试中涉及到的Spring Boot核心知识点进行了总结,帮助大家查漏补缺,在技术面试中能够一路通关!本文目录1. Spring

2020-06-20 03:11:38 248 2

原创 一个老牌程序员说:做Java开发,怎么可以不会这 20 种类库和 API

在正常的工作中,除了一些比较偏门技术问题之外,其实很多的编程业务都是大同小异,这也是为什么都练就了一身成功的cv大法,但是呢,cv大法好,也需要一本好的cv秘籍。这就是我们在开发的过程中常用的一些类库,这些类库在日常的开发工作中帮助我们解决不少的麻烦。本文总结了日志、JSON解析、单测、XML解析、字节码处理、数据库连接池、集合类、邮件、加密、嵌入式SQL数据库、JDBC故障诊断以及序列化等20个方面的常用类库。都是你日常开发经常可能要用到的,现在不用不要紧,但是你要知道有这么一篇文章可以供你参考。..

2020-06-19 22:05:22 437

原创 为什么面试问源码,源码带给你的不仅仅是一份工作,更多的是这些

个人觉得大多数情况下跟着一篇优秀的博客配合着看就足够了,之后再自己写博客总结一遍加深印象,画一下流程图基本都能理顺。(图为学AQS时本人画的获取独占锁流程图)1|2类关系配合idea看类之间的关系(ctrl+alt+shift+u)的功能也能更好的理解整个项目的整体架构。因为很多源码其实并不是真的复杂,只是为了扩展性优雅简洁等原因建立了大量的接口和抽象类以及各种设计模式,使得项目看起来很庞大很复杂,借助这个功能有利于你排除掉一些你暂时不想去关心的设计逻辑。知道那个部分才是最核心的逻辑..

2020-06-19 02:56:20 1943 1

原创 为了让你理解spring,附源码讲解AOP,在不明白你对的起我吗?

Spring的两大核心功能是IOC和AOP。当我们使用Spring的AOP功能时是很方便的。只需要进行下面的配置即可。Copy@Component@Aspectpublic class MyAspect {//PointCut匹配的方法必须是Spring中bean的方法//Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合.//下面定义的这些切入点就可以通过&& ||组合private static Logger logger =

2020-06-18 03:20:52 256

原创 这才是递归题正确的打开方式,面试官听了都说精辟

算法思路大家都知道,一个方法自己调用自己就是递归,没错,但这只是理解递归的最表层的理解。那么递归的实质是什么?答:递归的实质是能够把一个大问题分解成比它小点的问题,然后我们拿到了小问题的解,就可以用小问题的解去构造大问题的解。那小问题的解是如何得到的?答:用再小一号的问题的解构造出来的,小到不能再小的时候就是到了零号问题的时候,也就是 base case 了。那么总结一下递归的三个步骤:Base case:就是递归的零号问题,也是递归的终点,走到最小的那个问题,能够直接.

2020-06-17 21:31:57 817 1

原创 看源码时发现MyBatis中使用的9大设计模式,顺道看了一遍设计模式

前言源码、设计模式,听到这个词我就脑袋大,但是你有什么办法,只能学习啊,这不,在看mybatis源码 的时候,还发现了设计模式的影子,顺便又重新看了一遍设计模式(文末有惊喜),我们来看一下,mybatis种用的什么玩意,让我又从头看了一遍设计模式设计模式Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBu

2020-06-17 15:30:55 227

原创 全民谈架构,涨姿势?了解一下Kafka消费位移可好?

摘要:Kafka中的位移是个极其重要的概念,因为数据一致性、准确性是一个很重要的语义,我们都不希望消息重复消费或者丢失。而位移就是控制消费进度的大佬。本文就详细聊聊kafka消费位移的那些事,包括:概念剖析kafka的两种位移关于位移(Offset),其实在kafka的世界里有两种位移:分区位移:生产者向分区写入消息,每条消息在分区中的位置信息由一个叫offset的数据来表征。假设一个生产者向一个空分区写入了 10 条消息,那么这 10 条消息的位移依次是 0、1、…、9; 消费位移:

2020-06-17 02:01:12 329

原创 redis终面,当被问到Redis,面试官傻眼了,当场录用我

Redis简介:先说说Redis是什么吧小老弟?Redis是互联网技术领域使用最为广泛的存储中间件,它是「 Remote DictionaryService」的首字母缩写,也就是「远程字典服务」。Redis 以其超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。国内外很多大型互联网公司都在使用Redis, 比如Twitter、 YouPorn、 暴雪娱乐、Github、 StackOverflow、 腾讯、阿里、京东、华为、新浪微博等等,很多中小型公司也都有应用。

2020-06-15 17:40:03 770

原创 天天在公司写业务代码,面几家挂几家,难道写业务代码没出路吗?

写在最前面有的时候,不是说你行不行,而是说你想不想的问题,现在你浪费时间的努力学习,是为了在未来你可以更好选择自己想要的生活作为一个程序员,平时总是陷在业务开发里,每天忙敲着代码,从系统开发到 Bug 修改,感觉自己已经如鱼得水。偶尔一次聚会,听说了和自己一起开始工作的同学早已经年薪多少万。而现在自己待的的公司总是不提涨薪,于是也想跳槽看看新机会,找个新平台,好好发展。而面试的时候,那些再熟悉不过的面试题怎么也回答不到点上。比如使用Spring框架有什么好处呢?再或者mysql 支持的复制类

2020-06-15 02:16:19 676

原创 一个周末都闲不住的程序猿,图解git操作文件命令(建议收藏)

图片时间为证,哎,一个周末都闲不住的程序猿,为了应付七大姑八大姨家小孩子的面试需求,我整理了一些文档,本身想传到网盘让他们自己下载着看去,但是好像,貌似这个文件有点大,就网盘那个尿性,不是氪金玩家玩什么啊然后我就想起来我神奇的小git了,但是,哎,我不多说了,正好趁着文件在上传的过程,我只有进行一次详细的演示,如果最近也刚好在玩这个的,可以参考一下,在演示完怎么上传和下载文件之后,会有一些操作命令的总结1、在git中新建一个repository最后点击create reposity

2020-06-14 19:36:28 318

原创 我为什么经过好几面拿到offer,来了两天就离职,你不清楚嘛?

大周末的,闲来无聊,就在各大论坛上闲逛,当然不是为了看一下我们的程序猿小姐姐们或者幸灾乐祸一下还在加班的各位,然后,突然看到有一个帖子,题目跟我的题目差不多。然后我就点进去了,看完后我差点离开这个美丽的人间,这都是什么”人性化“操作啊,我们来看一下怎么回事把原来,有一个哥们,在疫情期间被离职了,然后好不容易找到一份工作,我想应该是想要当作中间的跳板,缓冲一下吧,毕竟生活压力挺大的,(哎,说多了都是眼泪啊)然后经历了好几次面试后,对于薪资待遇以及工作环境都很满意,就接了公司的offer,.

2020-06-14 17:32:14 888 2

原创 面试官:这7张图要是都学会,我还问什么mysql调优(建议收藏)

前言MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 表格一般包括以下:表头(header): 每一列的名称; 列(col): 具有相同数据类型的数据的集合; 行(row): 每一行用来描述某个人/物的具体信息; 值(value): 行的具体信息, 每个值必须与该列的数据类型相同; 键(key): 表中用来识别某个特定的人物的方法, 键的值在当前列中具有唯一性。但是就是这些简简单单的表格,却衍生

2020-06-13 16:46:16 505

原创 不会这些,真正牛逼的技术不属于你,更不用说帮你升职加薪

对于开发来说,我们在工作中普遍都会用到各个开源框架,比如最基础的 Spring,使开发网络编程变得特别简单的 Netty 框架,还有成为目前微服务框架首选的 Spring Cloud 等。在多个框架之上,我们仅需使用几行代码,即可实现业务需要的复杂功能,大大减少了工作量。也正因如此,不少人只会用框架,看不懂源码,不了解其底层机制与实现原理,成了一名只会搬运源码库的开发。说白了,就是真正牛逼的技术不属于你。可了解框架中的很多知识和代码,对解决开发中的类似问题是极其有帮助的。因为它们是经过时..

2020-06-13 13:50:08 1878 1

原创 “锁”不明白?本文带你轻松理解锁状态和锁升级(建议收藏)

一、前言锁的状态总共有四种,级别由低到高依次为:无锁、偏向锁、轻量级锁、重量级锁,这四种锁状态分别代表什么,为什么会有锁升级?其实在 JDK 1.6之前,synchronized 还是一个重量级锁,是一个效率比较低下的锁,但是在JDK 1.6后,Jvm为了提高锁的获取与释放效率对(synchronized )进行了优化,引入了 偏向锁 和 轻量级锁 ,从此以后锁的状态就有了四种(无锁、偏向锁、轻量级锁、重量级锁),并且四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级,也就是说只能进行

2020-06-13 13:31:01 471

原创 来点硬核的,话不多说,直接手写布隆过滤器以及算法图解

前言缓存穿透概念当查询一个一定不存在的数据,由于缓存不命中,去查询数据库也无法查询出结果,因此不会写入到缓存中,这会导致每个查询都去请求数据库,造成缓存穿透。解决方案:布隆过滤对所有的可能查询的参数以hash形式存储,在控制器层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力。bloomfilter就类似于一个hash set,用于快速判某个元素是否存在于集合中,其典型的应用场景就是快速判断一个key是否存在于某容器,不存在就直接返回。举例:将真实正确Id在添加完成之后.

2020-06-11 16:49:50 668

原创 一份超详细 Spring Boot 知识清单,面试之前看一看(建议收藏)

在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框架的应用,它是Spring对“约定优先于配置”理念的最佳实践产物,它能够帮助开发者更快速高效的构建基于Spring生态圈的应用。那Spring Boot有何魔法?自动配置、起步依赖、Actuator、命令行界面(CLI) 是Spring Boot最重要的4大核心特性,其中CLI是Spring Bo

2020-06-11 15:48:55 529

原创 面试官:能跟我说一下rm删除文件之后,空间都发生了什么吗?

但凡知道Linux指令的,相信一定听过这样的一行命令:rm -rf /*,哪怕不知道这行命令,总听过一句话,删库跑路吧,那么,rm删除一个文件之后,就是单纯的把文件删除然后释放空间吗产生一个指定大小的随机内容文件我们先看一下当前各个挂载目录的空间大小:$ df -h/dev/sda11 454M 280M 147M 66% /boot我这里挑选了其中一个结果展示(你可以选择任一挂载目录),接下来准备在/boot下生成一个文件。首先我们产生一个50M大小的文件:

2020-06-10 21:27:03 383

原创 性能调优还不会?这就是你急切需要的JVM性能调优,拿走不谢

if 快还是 switch 快?HashMap 的初始化 size 要不要指定,指定之后性能可以提高多少?各种序列化方法哪个耗时更短?无论出自何种原因需要进行性能评估,量化指标总是必要的。在大部分场合,简单地回答谁快谁慢是远远不够的,如何将程序性能量化呢?这就需要我们的主角 JMH 登场了!JMH 简介JMH(Java Microbenchmark Harness)是用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级。该工具是由 Oracle 内部实现 JIT

2020-06-10 20:59:14 553

原创 老大,我想获取MySQL插入数据的自增ID,该怎么弄?

mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢?方法一:是使用last_insert_idmysql> SELECT LAST_INSERT_ID();产生的ID 每次连接后保存在服务器中。这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。这个值不能被其它客户端影响,即.

2020-06-09 16:21:59 1469

原创 一本阿里开发手册,很简单,却让我如此沉迷

最近,无意中从网上搜索到一本很神奇的书籍,书籍来源是一个神奇的公司--阿里,看名字我以为内容很简单,就是单纯的一本开发手册,然后我就没有继续看,可是在某一个深夜,吃鸡成盒了几次之后,“气急败坏”的转战小说,在电子书中又看到这本书,本着深夜苦读的精神状态,于是,我就打开“仔细”的品读起来。可是,真的是处于程序员的基因吗?我居然被吸引了,比方说这一条开发规范,是关于关于常量定义的规约,具体内容如下:图中的反例是将数据缓存起来,并使用魔法值加链路 id 组成 key,这就可能会出现其他开发人员在复

2020-06-09 16:15:06 2676

原创 程序猿之间的鄙视链,你在第几层

鄙视像条食物链,是个绕不开的怪圈。在这个怪圈中,每一个人,都在链条的最末端。朋友圈有鄙视链,相亲有鄙视链,程序员圈也有鄙视链看完下面的鄙视链,你是哪一层?↓↓↓↓【1】努力成为全栈,吊打产品经理而更加牛逼的,相信大家听过这样一段话:Java和PHP谁是世界上最好的语言,那到底谁是呢?评论区说一下您支持谁啊,而对于常见的编程语言,我也整理了一下的编程语言鄙视链汇编处于鄙视链的顶端,网传当年雷军写的汇编语言,点赞无数,由此可见一斑。...

2020-06-09 14:56:43 5700 11

原创 写给身边的程序员朋友的一封信:火箭和螺丝从来是相互依存的

之前一段时间断更了一段时间,是因为在之前的一个深夜,我被一个电话吵醒,来电的是一个快三十岁的程序员,也是我很好的朋友,电话那头传来的是哭泣声,我没有开口,接通电话之后,我就坐在床上,听他哭,等他开口,女朋友在旁边说:大晚上的,干啥呢?梦游啊,哄睡女朋友后,我就在客厅和他聊天,第一次有那种场景,一个快三十的老爷们,蹲在自家黑漆漆的车库里抱头大哭是一种什么场景。他告诉我他被裁员了。因为疫情影响,公司不景气,几乎裁掉了一半人员。而他这位所谓的技术骨干,也在裁员名单的行列中​。他说现在背着的200万的房贷,

2020-06-03 21:45:16 443

原创 闭关“锁”国?不,你错了,一文带你探究Java锁的深层次原理

一、乐观锁 VS 悲观锁悲观锁和乐观锁大概是大家听到最多的两种锁了,这两种锁的区分更多的是思想上。对于一个操作,悲观锁认为自己在操作过程中,一定有别的线程也要来修改这个数据,所以一定会加锁。而乐观锁则不认为会有别的线程来干扰自己,所以不需要加锁。在Java中,synchronized关键字和Lock的实现类都是悲观锁,而乐观锁一般采用无锁编程,也就是CAS算法来实现的。首先说一说悲观锁1、悲观锁悲观锁的流程:1、线程尝试去获取锁 2、线程加锁成功并执行操作,其他线程等.

2020-06-03 20:30:46 352

原创 谁再说mybatis难,反手就是一张思维导图,看完再说难

目录缓存简介一级缓存#什么是MyBatis一级缓存#怎么开启一级缓存#哪些因素会使一级缓存失效#一级缓存源码解析#一级缓存使用建议#二级缓存#什么是MyBatis二级缓存#怎么开启二级缓存#哪些因素会使二级缓存失效#二级缓存使用建议#简单总结#一级缓存#二级缓存#从spring到mybatis,好像已经不仅仅是考察单纯的框架了,更多的是考察底层的源码,运行原理,那就是拧螺丝,但是不会造火箭你连更好拧螺丝的机会都没有有的朋友会说,底层原理

2020-06-03 17:17:54 697

原创 看呆了!没见过这么学习redis的,这也太全面了吧!怎么可能不会

很多人受限于公司规模,没有用过Redis!或者只是单纯的用过,没有详细的进行了解过,甚至说学习了,但是在平时工作的过程中没有应用过,所以遗忘了,但是面试大中型互联网公司,Redis是个绕不过去的坎。以下这些Redis相关的面试题,你看是不是很眼熟!1.Redis支持的数据类型?2.什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?3.Redis 有哪些架构模式?讲讲各自的特点4.使用过Redis分布式锁么,它是怎么实现的?5.使用过Redis做异步队列么,你是怎么

2020-06-03 14:59:43 343

原创 阿里P9整理这份文档,只为让你透过源码,看懂AQS的前世今生

什么是可重入锁?ReentrantLock 是可重入锁,什么是可重入锁呢?可重入锁就是当前持有该锁的线程能够多次获取该锁,无需等待。可重入锁是如何实现的呢?这要从 ReentrantLock 的一个内部类 Sync 的父类说起,Sync 的父类是AbstractQueuedSynchronizer(后面简称AQS)。什么是AQS?AQS 是 JDK1.5 提供的一个基于 FIFO 等待队列实现的一个用于实现同步器的基础框架,这个基础框架的重要性可以这么说,JCU 包里面几乎所有的有关锁、多线程

2020-06-02 22:31:47 238

原创 这个防止误删的命令真的太骚气了,但是我好喜欢

文件是我们在电脑里最珍贵的财富,我们经常工作了老半天,然后出来的成果就只是一个文件而已。特别是程序员,我们写了半天的代码,结果也就是一个个代码文件而已。但是,我们都有过这样惨痛的经历——工作了老半天,结果不小心把文件删除了……这时候,你的心情是怎样的?痛苦?自责?无奈?今天就给大家介绍一个命令,它将给你的重要文件加一把锁,防止误删除或误修改,为你的宝贝文件保驾护航!chattr命令简介这里我们需要使用到一个命令是:chattr,这个命令在大部分的 Linux 发行版里都有,所以对于它的.

2020-06-02 20:51:17 514

原创 阿里P8都建议收藏的Nginx的配置参数中文说明,你还不快收藏起来

前言Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服...

2020-06-02 13:10:10 502

原创 美团|阿里等大厂专家一致同意:35岁从来不是程序员的终点!

引言古人云:“活到老,学到老。”互联网算是最辛苦的行业之一,“加班”对工程师来说已是“家常便饭”,同时互联网技术又日新月异,很多工程师都疲于应付,叫苦不堪。以至于长期以来流传一个很广的误解:35岁是程序员工作的终点。注:仅代表个人意见,有问题可以大家一起交流如何在繁忙的工作中做好技术积累,构建个人核心竞争力,相信是很多工程师同行都在思考的问题。本文是我自己的一些总结,试图从三个方面来解答: 第一部分阐述了一些学习的原则。任何时候,遵循一些经过检验的原则,都是影响效率的重要因素,正确的方法.

2020-06-01 21:56:28 313

原创 面试官问我:你要如何合理地估算线程池大小?幸好我看过这个代码

如何合理地估算线程池大小?这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线程完成,继续假设平均每个线程处理一个Transaction的时间为4s。那么问题转化为:如何设计线程池大小,使得可以在1s内处理完20个Transaction?计算过程很简单,每个线程的处理能力为0.25TPS,那么

2020-06-01 19:02:14 314

原创 好烦,一封报警邮件,大量服务节点 redis 响应超时,又要加班了

因实际应用中出现经常 Redis 超时问题,StackExchange.Redis 在 Github 上 Timeouts 一文从多个方面进行分析,并提供相应的解决方案, 为方便日后再次出现该问题时快速查阅,特写下本文作为技术笔记,同时给英文不太好的程序员(媛)提供参考。对于使用过 StackExchange.Redis 的程序员(媛),经常碰到类似于以下的异常:Timeout performing GET keyName, inst: 1, mgr: ExecuteSelect, err: .

2020-06-01 18:56:53 1390

空空如也

空空如也

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

TA关注的人

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