自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

_ACME_的博客

PROGRAME LIFE

原创 学习汇总(持续更新)

前言:接触的东西越来越多,学到的东西越来越多,解决的问题越来越多,有时候回想起来,觉得很牛逼,但是细想,却觉得缺少了什么,觉得自己懂得很多,但是又说不上来。所以决定立项,将学到的东西分类汇总,让他们有一个体系,让他们相互连接起来,这样吹起牛来也不至于太尬。 阅读本篇博客注意事项: 目录较长,标题...

2019-11-16 16:47:37 907 0

原创 【从零搭建后端基础设施系列(一)】-- 背景介绍

第一部分:最小系统开发 1. 背景介绍 2. thrift生成插件编写 3. thrift 服务骨架编写 4. web 服务骨架编写 5. linux环境搭建 6. 服务部署 7. 最小系统测试 第二部分:优化最小系统 8. 优化重构最小系统 9. 基于thrift进行二次开发 …… 第三部分:加...

2019-07-20 17:25:14 1887 0

原创 通过手撸线程池深入理解其原理(中)
原力计划

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 摘要:上篇实现了简单的无锁线程池,本篇开始实现有锁线程池。先来思考一下,为什么线程池需要锁?在没有锁的线程池中,就算是单线程提交,也可能会涉及到并发的问题,如果是多线程提交任务,这时候出错的概率基本是...

2020-06-04 01:25:22 39 0

原创 通过手撸线程池深入理解其原理(上)
原力计划

摘要:源码这东西看着能似懂非懂,有些地方你不知道人家为什么这么设计,过后在想可能又忘了,很没有效率。所以我推荐的学习顺序是看书->看源码->造轮子->总结。这一套下来,花的时间确实多,但是毫不夸张的说,能一劳永逸,那一个个知识点就像印在你脑子里一样。所以这次我从一个最简单的线程池...

2020-06-03 01:39:41 54 0

原创 spring单例引起的线程安全问题
原力计划

一、spring单例与多例定义 单例:一个类只能产生一个对象(对应到spring中,注入的对象永远是同一个) 多例:一个类能产生多个对象(对应到spring中,注入的对象永远是新的) @Scope("prototype") @Scope("singleton"...

2020-04-24 20:00:34 859 0

原创 如何理解BeanPostProcessor

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 原始片段 创建bean的时候,有这么一段代码,遍历所有实现了BeanPostProcessor这个接口的类,并一个个调用其中的方法。 protected Object applyBeanPostP...

2020-04-08 20:04:07 174 0

原创 【追根究底】doCreateBean中为什么会对earlySingletonExposure处理两次

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 问题对应的代码片段 protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final...

2019-12-23 23:57:07 359 2

原创 【细品springboot源码】彻底弄懂spring bean的创建过程(下)

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 【细品springboot源码】彻底弄懂spring bean的创建过程(上) 接着上一篇,说到了doCreateBean这个方法,开始创建bean,老规矩,贴关键代码,标号对着解释。 剖析创建...

2019-12-18 23:17:20 346 0

原创 【细品springboot源码】彻底弄懂spring bean的创建过程(上)

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 前言: 为什么网上那么多的bean创建源码解析,我还要再写一篇呢?。第一个原因当然是记录总结加深印象,第二个原因,我希望能将spring bean这个东西用一种通俗易懂的方式写出来,一篇文章就能解释清...

2019-12-16 00:39:40 529 0

原创 【从零搭建后端基础设施系列(十)】-- 服务发现与治理(中)

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 没有看过上篇的点这里【从零搭建后端基础设施系列(十)】-- 服务发现与治理(上) CODE RegistCenter -> master ServiceGovernance -> m...

2019-12-07 20:48:32 185 0

原创 【追根究底】使用@Lazy注解为什么会产生两层代理?

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 CASE A@Component public class A { @Lazy @Autowired B b; public void sayA(){ ...

2019-12-01 19:56:32 185 0

原创 【追根究底】@Lazy注解为什么会失效?

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 @Lazy注解为什么会失效?它并没有失效,一直都是生效着的,之所以认为它失效了,是没有用对它,没有理解它! 我想让B最后再实例化,因为实例化的时候,会为B创建代理,并且加入增强器。但是有些情况,实例化...

2019-12-01 16:57:12 328 0

原创 【从零搭建后端基础设施系列(十)】-- 服务发现与治理(上)

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 什么是服务发现? 服务发现是指使用一个注册中心来记录分布式系统中的全部服务的信息,以便其他服务能够快速的找到这些已注册的服务。 ---- 百度百科 什么是服务治理? 服务治理(SOA g...

2019-11-28 00:04:14 163 0

原创 【追根究底】 为什么@Transactional注解失效了?

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 新手疑问之为什么我已经加上了@Transactional注解,还是失效呢??? 这个很好回答,要么没有生成代理类调用,要么没有开启事务。可以参考细说@Transactional用法及原理 ...

2019-11-21 16:51:51 309 0

原创 【从零搭建后端基础设施系列(九)】-- VM容器化

==> 从零开发一个后端服务(一)–背景介绍 旁白:今天老大拉小黑他们开会,就公司目前机器资源紧缺进行了讨论…… 老大:自从咱公司开始推行微服务化后,机器需求扶摇而上,爆发性增长啊!原来只需要几台机器,现在细分服务后,成倍成倍的长,这咋受得了,所以想听听你们有啥想法 小黑:想法还是有的,只不...

2019-10-30 01:16:47 377 0

原创 1024快乐!

请注意,请注意,这是一篇水文,哈哈哈 15年12月一个突发奇想,脑子一热,就开始在CSDN上写博客,这一写,就坚持了4年。感慨呀感慨呀,趁今天,稍稍审视一下自己为何写博客,都收获了什么。 写博客不是为了写而写,每写一篇博客,我都会问自己,写这篇博客对自己,对别人都有哪些帮助,意义大不大?比如今...

2019-10-24 00:50:42 358 1

原创 带你搞懂Thrift核心源码(JAVA)

注:本篇文章适合使用过thrift,但不识庐山真面目的人阅读 本篇文章主要目的是了解thrift的全貌。读完文章你将收获以下几点 Thrift到底是个什么东西? Thrift在项目中充当的角色? Thrift的架构设计? Thrift的TTransport是什么?(重点) Thrift的TPro...

2019-10-17 01:41:42 573 0

原创 深入浅出JAVA BIO、NIO和AIO(附详细代码实例)

1.深入浅出之BIO 1.1 简单代码示例 1.2 BIO相关概念 1.3 一张图理解BIO 1.4 Q&A 2.深入浅出之NIO 2.1 简单代码示例 2.2 NIO相关概念 2.3 一张图理解NIO 2.4 Q&A 3.深入浅出之AIO 3....

2019-09-12 00:08:20 649 3

原创 【从零搭建后端基础设施系列(八)】-- 自动化部署服务

==> 从零开发一个后端服务(一)–背景介绍 首先,说一下大概的思路 在服务器上部署服务的时候,是不是用的本地打包好的jar包呢?答案是的,所以这种就是手动部署的方式,特别的繁琐。那么如何能在服务器上完成这一步呢? 得先拿到代码吧?怎么拿?本地传上去吗?当然不是,那多low啊。我们直接从g...

2019-08-14 00:53:49 1217 0

原创 【从零搭建后端基础设施系列(七)】-- 第一部分小结

==> 从零开发一个后端服务(一)–背景介绍 一、搭建一个最简易的微服务流程 搭建一个thrift服务 搭建一个web服务(如果不需要和前端打交道,这个服务可省去) 搭建两台linux机器 二、提出问题 能否对thrift进行封装,让服务启动、连接服务等更简洁? 部署服务能否做到自动化...

2019-08-04 23:29:46 1256 0

原创 【从零搭建后端基础设施系列(六)】-- 服务部署与测试

==> 从零开发一个后端服务(一)–背景介绍 一、将代码打包成jar包上传到服务器 1.首先将代码打包成jar包 thrift服务 web服务同理 需要注意的是,IP和PORT要填对,否则连不上thrift服务 2.上传jar包到服务器 这里正好演示一下,python的SimpleHTT...

2019-08-03 01:50:23 1289 0

原创 【从零搭建后端基础设施系列(五)】-- linux环境搭建

==> 从零开发一个后端服务(一)–背景介绍 本章目标:用虚拟机,安装两个Centos7系统,并且安装java环境 一、安装Centos7 参考如何安装CentOS7字符界面这篇文章。 安装好后,如图 二、安装JDK1.8 1.直接使用yum安装 yum search java 选择j...

2019-07-30 00:58:48 595 6

原创 【从零搭建后端基础设施系列(四)】-- web 服务骨架编写

首先,解释一下为什么要和thrift服务拆分出来。 微服务的思想,将一个系统拆分成各个独立的服务,解耦开来,但是注意调用链路不宜过长。否则会影响性能和加大问题的排查难度。 web服务在整个前后端系统中,充当前端和后端的中间人,前端一般通过http请求到web服务,web服务再通过RPC调用thr...

2019-07-26 01:09:40 1305 0

原创 【从零搭建后端基础设施系列(三)】--thrift 服务骨架编写

因为第一部分只是将最小系统骨架搭建出来,能部署,接口调通就行。 PS:目前我也没想到有什么有难度,又有趣的项目,所以在写第一部分的时候,就先搭个骨架,第二部分再想想写个什么好,总得给自己找点乐趣,哈哈。 一、编写thrift文件,生成java文件 1.创建一个maven工程 什么都不选,一路nex...

2019-07-25 01:40:26 1818 4

原创 【从零搭建后端基础设施系列(二)】-- thrift生成插件编写

一.环境准备 安装thrift 方法一:brew install thrift 方法二: 去官网下载并解压https://thrift.apache.org/download。 进入解压后的目录执行configure,make,make install 二、创建maven插件工程 1.new...

2019-07-22 02:00:46 1169 0

原创 细说@Transactional用法及原理

第一天: 小白:小黑,今天发现数据库有好多脏数据,这咋回事? 小黑:(内心OS,什么玩意,都不自己查一下,直接扔个这么广泛的问题给我)呃。。。你要不去检查一下相关操作到数据库接口的逻辑?特别是插入和更新操作的 小白:嗯,有道理,我去check一下。 1个小时后…… 小白:哎,小黑啊,我把相关接口...

2019-07-12 00:58:20 1688 0

原创 jdk1.8 LinkedHashMap源码剖析

LinkedHashMap字面上意思是链表HashMap,那么到底增加了什么特性呢? 从一个简单的case剖析下去 Map<Integer, Integer> map = new HashMap<>(); map.put(3, 3); map.put(5, 5); map....

2019-07-01 01:30:06 312 0

原创 JDK1.8 HashMap put源码剖析

从一个最简单的例子开始剖析hashmap的源码 Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < 10; i++) { map.put(i, i); } 内部都发生了什么? ...

2019-06-30 02:45:44 537 0

原创 插入、快排、堆排、归并、计数和桶排序详解以及测试

代码 核心思想 测试结果 总结 一、代码 package com.example.sort; import java.util.ArrayList; import java.util.Comparator; import java.util.Random; public cla...

2019-05-31 15:21:54 1731 0

原创 java并发编程浅析

建议使用Runnable,使Thread和Task解耦 当需要汇总多线程的计算结果时,使用Callable 取消线程需要注意时间节点,运行前取消则线程不再运行,运行中取消,若不是线程休眠中取消,则只是简单通过标志位通知线程是否响应该操作,运行完成取消,返回false 线程池核心线程是不会被回收的,...

2019-05-23 09:25:42 352 0

原创 剑指offer--用两个栈实现队列

题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型 这个题目简单,但是做得太快可能会掉坑里。 方法一: 如果是第一次做,可能正常的思路就是用栈2当做交换器,push操作存入栈1,pop的时候将栈1导入栈2,弹出后,再导回去。 //push O(1) ...

2019-04-14 01:23:58 324 0

原创 剑指offer--替换空格

题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如, 当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 这个题目其实很简单,没有绕的地方。 但是,做的过程中,发现使用java string的replaceAll方法居然比自己实现的要...

2019-04-13 23:57:17 455 0

原创 spring自定义注解失效的原因

为什么有时候自定义注解不起作用,失效的原因,以及解决办法。

2019-02-27 23:38:11 3713 0

原创 springboot之BeanPostProcessor功能及例子(一)

一、BeanPostProcessor 字面上的意思是bean的后置处理器,什么意思呢?其实就是说,在bean的生命周期中,可以对它干什么。再简单点就是,bean初始化之前干点什么,之后又干点什么。 public interface BeanPostProcessor { @Nullable ...

2019-02-26 23:50:15 4633 0

原创 springboot之事件监听机制

一、观察者模式 1.涉及到的类 public interface Observer { /* 观察者必须要实现这个接口,其实就相当于,A实现了这个接口,B发生改变的时候,顺便调用一下A的update方法。 */ void update(Observable o, ...

2019-02-26 00:43:03 533 0

原创 git用法进阶

前言: 相信很多还没有工作的同学,对于git的用法还普遍停留在git clone,git push,git pull这些命令,并且用的还不深,接下来,将我在工作中常用到的git命令,分享给大家~ 场景一(git push): 小白:嘿~,小黑,最近我遇到了点问题,对git push有点疑惑,可以请...

2018-11-23 00:34:47 1458 0

原创 如何正确使用git和github

因为没用过git,没有过协同开发经验,所以一直不太理解git工具的作用,现在就来梳理一下git工具的用法以及作用。 一、入门篇 从前,有3个人,他们想一起开发一个项目。 小白:听说最近github很火啊,我们要不要去用用。 小黄:哈哈,好啊,正好没用过,要跟上时代。 小黑:同意。...

2018-03-20 23:55:13 25277 17

原创 idea+spring boot+mybatis+restful风格的demo

注:我是在mac下搭建的demo,在windows下同理,这个不存在什么太大差异。后面会有源码,直接导入idea即可,只是环境的配置稍有不同。 一、准备工作 下载最新版idea.。 下载mysql。 下载postman,这是一款用于前后端接口请求测试的神器。 以上自行百度安装。 ...

2018-03-01 03:23:49 7684 8

原创 秋招总结

鸡汤就放在后面喝了,先来点干货从时间线来讲,内推->正式校招 从环节来讲,简历->笔试->面试(技术面+HR面)Q:一般内推几月份开始?A: 7月份就有了,这里建议关注一下牛客网,里面的信息挺多的。Q:内推的流程是什么样的?A:一般有两种方式,一种是直接发简历到员工的邮箱,...

2017-11-13 19:34:53 744 0

原创 C-C++面试知识点总结(三)

目录: 一、基础知识 1.C/C++ 2.STL3.数据结构与算法 4.计算机网络5.操作系统6.数据库二、项目经历 1.纯属个人YY 3.数据结构与算法基础 (1).基本的线性表的实现顺序表:用数组实现,因为空间连续,所以叫做顺序表。 链表:用不连续的节点连接成一条链,所以叫做链表。(2)....

2017-08-14 22:53:20 1760 0

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