自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

掀衣怒码

求知若渴,虚心若愚

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

原创 mac下fleet启动项目报错gradlew Permission denied (os error 13)

fleet尝鲜

2022-10-13 20:11:01 483 1

原创 工作后学习心得

以前总是以为老师教的不如自己学的。很久一段时间都是自学为主。而且做的试卷只要我没做完的,或者没有做出来的坚决不会听老师讲的。以至于后来试卷越来越多,自己的精力完全跟不上老师的进度了。现在由于工作的原因,一直需要学习东西,又有了不同的感触。一个好的老师可以给你指引方向,做正确的引导,防止你在大片的知识里被某一个细节困住。快速找到一个宏观的纲要,提高学习效率。而且大部分情况下并不是要把所有的都吃透彻的,你只需要弄懂自己需要的即可。但是现在一个好的老师并不好找。这个老师可能是你的同事,同学,朋友,书本。比在学

2022-03-19 10:52:48 163

原创 mac idea设置内存参数后启动不了问题解决

1.访达=>应用程序=>程序上右击显示包内容=>找到macos=》idea脚本2.双击脚本。会在命令窗口看到异常描述信息;在描述信息中可以找到你配置错的配置文件路径。拷贝下来3.通过访达找到该文件,修改正确即可注意这里的配置文件不是bin路径下面的所以只能这样找...

2021-08-16 13:11:50 870

原创 LongAdder原理解析

首先说下他的作用保证原子性的并发计数器,相较于基于cas的AtomicLong该实现性能更高;它内部实现了一个竞争单元列表cells原理是它在并发压力较大的时候会根据线程probe(一个变量,用来取模的)去路由到cells的某个单元上去竞争计数;如果假设为收费站的话,AtomicLong就是单个窗口在工作;LongAdder就是一个主窗口和n个子窗口在工作;当线程发现主窗口有阻塞的时候会转而去尝试在各个子窗口去竞争;而且每个窗口又各自都是基于cas的原子操作;通过这样的方式减少了线程等待时间;lo

2021-08-15 16:30:57 162

原创 求最小差值算法题

给定两个数组,找到一对数字(两个数组各取一个),他们的差值最小。返回这个最小差。输入:arrayOne = [-1, 5, 10, 20, 28, 3]arrayTwo = [26, 134, 135, 15, 17]输出: 2解题思路:假设数组中的值为海拔高度;需要在两座山选择两个差值最小的信号站,来接受信号。这样信号最稳定;开始的时候两个人都在两座山的最低位置;这个时候需要往上爬的那一个肯定是站的低点那一个。每次移动都记录一个当前最低值。直到有一方攀爬结束;这样就能找到一个最低值;这里为什

2021-08-15 16:24:21 988

原创 jdk1.7中hashMap扩容导致死循环问题原因分析

导致死循环的根源是在resize的时候进行元素转移的时候有概率会出现;先说结论:导致问题的根本原因是使用头插法;先贴出来源码:但是哪怕你不看源码也没关系;void transfer(Entry[] newTable, boolean rehash) { int newCapacity = newTable.length; for (Entry<K,V> e : table) { while(null != e) { Entry&lt

2021-05-30 12:39:25 533

原创 foolflow用思维组织代码

foolflow介绍傻瓜工作流;放弃复杂设计,放弃bpmn规范,傻瓜式,足够简单;类似一个有限状态机,比状态机强,介于状态机和工作流之间。在应对一些状态较多的简单场景,又不想引入繁重的工作流引擎的时候可以使用。不用学习bpmn规范,没有心智负担;使用后使代码条理性更强,整个业务的各个阶段的代码不再散落在项目的各个位置。方便管理模型由点node和line来组成一个工作流,整个流程驱动方式为通过当前节点+动作的方式进行驱动;支持单任务和批量任务;业务逻辑通过ActionExecutor接口进行实现

2021-05-17 14:49:44 126

原创 rocketMq源码启动

启动配置ROCKETMQ_HOME为namesrv配置文件conf所在的父目录地址;这里为了方便管理就放在namesrv源码路径下;创建一个conf目录用于存配置文件;

2021-04-20 21:35:39 249

原创 spring源码解读-第二部分面想切面编程

aop

2021-04-15 22:38:54 84

原创 maven排包排不掉问题

现象: 遇到了一个比较老的项目。项目能启动起来。但是maven构建的时候总是会去加载一个仓库中不存在的废弃的jar包版本;项目中又有别的jar包也依赖了这个jar。然后还有好多项目模块也依赖这个jar。所以mave视图里面一片红。笔者又是个洁癖的码农。怎么能忍呢。结果就去尝试看看哪个jar包依赖了这个不存在的jar。结果通过分析依赖关系找了半天,发现所有依赖这个问题包的jar的pom里面的版本又都不是这个有问题的版本;然后试着排包。排除了之后发现还是不行。依旧会去加载这个包。当时挺郁闷的。后来把项目的po

2021-04-14 22:25:08 625

原创 Spring源码解读-第一部分核心部分

第一部分讲解bean加载到ioc容器的整个过程。

2021-04-11 11:33:40 133

原创 spring源码解读-6.bean生命周期

我们知道bean在spring中有两个大的状态。实例化,初始化;那么在bean成长过程中我们是不是可以进行干预,或者进行观察呢?自己生的孩子不可能都不管不问吧。所以在bean成长的各个环节中我们都有办法去干预,或者收到通知。spring通过暴露几个接口的方式来赋予你这个能力;今天的主角是BeanPostProcessor;看下长什么样子先public interface BeanPostProcessor { Object postProcessBeforeInitialization(Object

2021-04-10 23:50:44 72

原创 spring源码解读-5.容器生命周期之修改图纸

spring启动容器的时候允许在加载完成BeanDefinition(我称之为bean的图纸)对bean定义元数据信息进行修改;是通过一个叫做BeanFactoryPostProcessor的接口来实现的;代码位置在refresh() 里面调用invokeBeanFactoryPostProcessors()的方法中;代码逻辑不复杂,自己研究吧。因为使用场景很少,所以不多讲什么了。自己看看吧 public static void invokeBeanFactoryPostProcessors(

2021-04-07 21:52:50 91

原创 spring源码解读-4.把创建的bean丢到容器中

这里呢,说丢到容器中,其实单例bean更有探讨价值;现在主要就来看看单例bean是如何维护在容器中的;大家应该都听过三级缓存。循环依赖这些概念。这里呢就来揭开三级缓存的面纱。以及看看spring中如何解决循环依赖的;...

2021-04-06 23:02:04 256 1

原创 spring源码解读-3.初始化维护依赖关系

上一节我们知道spring创建bean实例的源码所在了。那么现在来看看它是如何对bean进行初始化,维护它的依赖的;这里还得回去去看那个doCreateBean的代码;

2021-04-05 21:35:51 179 1

原创 spring源码解读-2.根据图纸创建bean实例

首先,找到容器刷新方法refresh();上一篇知道在执行完obtainFreshBeanFactory方法之后我们的bean定义信息已经加载出来,存在了DefaultListableBeanFactory(它是同时也是一个BeanDefinitionRegistry)的默认实现中;ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();今天继续开始引路,看看spring的bean是如何创建的;spring容器会

2021-04-04 20:53:04 192

原创 spring源码解读开篇-1.bean图纸加载

好多看源码的小伙伴,像是在玩一个没有主线指引的游戏,在诺大的地图上到处碰壁,时不时钻进死胡同,一次次消磨掉了耐心,失去了再玩下去的勇气;这次呢,我来做你的引导npc;我来说说我的看法其实坚持不下去,真的不怪你。首先:spring已经发展很多年了,你不是从第一行代码看起。其次:先有了设计思想,才有代码实现。而反过来从代码去找思想,就是反人类的做法再者:代码量繁多,你不需要看完所有的代码。只需要看懂关键部分,看懂关键部分之后,其余的细枝末节需要用的时候再去看(借助文档等等工具),你会很轻松的看懂他们

2021-04-04 14:52:02 173

原创 java快速插入海量数据

依赖jar包 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency>java插入工具类import java.s

2021-04-02 16:07:47 216

原创 Spring三级缓存解决循环依赖必要性研讨

由于spring三级缓存处理逻辑的直接读源码比较难理解,所以一气之下按照方法压栈顺序整理了一张图供大家参考;图中各个环节标注了序号,我会按照序号来给你标注出代码位置;可以看到整个过程中bean在三级缓存中的状态;注: 虚线的框表示入栈后立马出栈,但是为了对称性,画在对称的位置关于三级缓存必要性的讨论图中可以看到第2步那里是往第三级缓存放入了一个包含对A早期引用进行操作的工厂函数。在第10步的时候才取出来这个函数进行调用。那么如果我直接在第2步就执行这个函数的逻辑,然后把A直接放到2级缓存,废除掉第3

2021-04-02 11:36:40 265

空空如也

空空如也

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

TA关注的人

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