- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 Netty一般需要的调优参数
勇敢就是,在你还没开始的时候就知道自己注定会输,可你依然要去做,一个人很少能赢,但也总有赢的时候,。Linux系统参数ulimit -n进行 TCP 连接时,系统为每个 TCP 连接创建一个 socket 句柄,也就是一个文件句柄,但是 Linux对每个进程打开的文件句柄数量做了限制,如果超出:报错 “Too many open file”。一般系统默认1024.修改方法:echo ulimit -n 65535 >>/etc/profile source /etc/prof.
2020-06-29 23:49:00
1496
原创 BeanFactory是怎样处理Bean生命周期的?
随着医学的发展,干点缺德事不要紧,生孩子没屁眼可以做人工肛门,怕什么?BeanFactory的默认实现为\DefaultListableBeanFactory,其中Bean生命周期与方法映射如下:BeanDefinition注册阶段->registerBeanDefinitionBeanDefinition合并阶段->getMergedBeanDefinitionBean实例化前阶段->resolveBeforeInstantiationBean实例化阶段->crea.
2020-05-16 22:18:08
287
原创 leetcode 876题链表的中间节点
在人世间有一种庸俗实例的大合唱,谁一旦对它屈服,就永远沉沦了。给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。方法一:数组将链表内容存到数组里,通过数组下标访问代码和复杂度分析不放了,很垃圾的做法方法二:单指针法第一次遍历获取长度,第二次遍历根据长度取节点代码和复杂度分析不放了方法三:快慢指针法 public L...
2020-04-02 00:14:08
156
原创 leetcode 19题删除链表的倒数第N个节点
我心中的曾经执剑的少年,此刻也混迹在市井之中。给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。方法一:两次遍历算法先遍历一遍长度,再删除 长度-n 的节点,代码不再写了复杂度分析时间复杂度:O(L),该算法对列表进行了两次遍历,首先计算了列表的长度 L 其次找到第 (L - n) 个结点。 操作执行了 2L-n 步,时间复杂度为 O(L) 。空间复杂度:O(1)...
2020-04-02 00:03:29
104
原创 leetcode 21题合并两个有序链表
我什么都没有,只有,一个不确定的明天,一个不知道的未来将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。方法 1:递归 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null){ return l2; ...
2020-04-01 23:54:37
250
原创 leetcode 206题反转链表
身无饥寒,父母无愧于你;人无长进,你以何待父母近期记录一些leetcode经典题方法一:迭代public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; while (curr != null) { ListNode nextTemp...
2020-04-01 11:47:59
146
1
原创 JVM调优工具
boleh!jmap查看实例个数以及占用内存大小num:序号instances:实例数量bytes:占用空间大小classname:类名称,[C is a char[],[S is a short[],[I is a int[],[B is a byte[],[[I is a int[][]堆信息堆内存dump也可以设置内存溢出自动导出dump文件(内存很大的时候,...
2019-11-10 06:45:37
327
2
原创 JVM垃圾收集器
相信科学,中度自律,高度洁癖Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)只会使用一条垃圾收集线程去完成垃圾收集工作,更重要的是它在进行垃圾收集工作的时候必须暂停其他所有的工作线程(“StopThe World” ),直到它收集结束。新生代采用复制算法,老年代采用标记-整理算法。ParNew收集器(-XX:+UseParNewGC)P...
2019-11-06 09:48:35
201
原创 垃圾收集机制
平庸这东西犹如白衬衫上的污痕,一旦染上便永远洗不掉,无可挽回。大对象直接进入老年代大对象就是需要大量连续内存空间的对象(比如:字符串、数组)。JVM参数 -XX:PretenureSizeThreshold 可以设置大对象的大小,如果对象超过设置大小会直接进入老年代,不会进入年轻代,这个参数只在 Serial 和ParNew两个收集器下有效。长期存活的对象将进入老年代如果对象在 Ede...
2019-10-29 23:37:30
136
原创 类加载机制
完成功能优先于优化代码!类加载过程多个java文件经过编译打包生成可运行jar包,最终由java命令运行某个主类的main函数启动程序,这里首先需要通过类加载器把主类加载到JVM。主类在运行过程中如果使用到其它类,会逐步加载这些类。注意,jar包里的类不是一次性全部加载的,是使用到时才加载。类加载到使用整个过程有如下几步:加载 >> 验证 >> 准备 >&...
2019-10-29 23:12:56
98
原创 nginx(二)
代理相关参数proxy_pass # 代理服务proxy_redirect off; # 是否允许重定向proxy_set_header Host $host; # 传 header 参数至后端服务proxy_set_header X-Forwarded-For $remote_addr; # 设置request header 即客户端IP 地址proxy_connect_timeout...
2019-10-11 17:27:46
115
原创 nginx(一)
不在深夜做决定,不在情绪不好的时候做决定yum安装nginx依赖环境yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-develnginx源码获取http://nginx.org/en/download.html寻找稳定版本并下载wget http://nginx...
2019-10-10 18:01:14
108
原创 Mysql锁和事务
小舟从此逝,江海寄余生。事务(Transaction)及其ACID属性原子性(Atomicity) :事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。一致性(Consistent) :在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确...
2019-10-09 23:11:23
129
原创 mysql索引优化
自由一定是相对的,只有自律的人,才能有自由。首先要经常使用explain命令来查看语句是否需要优化explain主要列含义select_type列表示对应行是简单还是复杂的查询。1)simple:简单查询。查询不包含子查询和union2)primary:复杂查询中最外层的select3)subquery:包含在 select 中的子查询(不在 from 子句中)4)derived...
2019-10-05 20:09:54
116
原创 ThreadPoolExecutor线程池实现原理
要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。前提摘要private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING,0));private static final int COUNT_BITS = Integer.SIZE - 3;private static final int CAPAC...
2019-09-28 18:40:52
151
原创 java7中hashmap多线程死锁原因及java8解决原理
java7中// hashmap put过程中产生扩容java.util.HashMap#putjava.util.HashMap#addEntryjava.util.HashMap#resizejava.util.HashMap#transfer// 移动原来的数组rehash后放到新数组void transfer(Entry[] newTable, boolean rehash)...
2019-09-26 22:45:42
2662
4
原创 ArrayBlockingQueue阻塞队列解析
小舟从此逝,江海寄余生。先看构造方法java.util.concurrent.ArrayBlockingQueue#ArrayBlockingQueue(int)java.util.concurrent.ArrayBlockingQueue#ArrayBlockingQueue(int, boolean)public ArrayBlockingQueue(int capacity, ...
2019-09-23 23:29:16
242
原创 Semaphore共享锁解析
Tell me how can I go on without somebody to love首先看Semaphore的构造方法public Semaphore(int permits) { sync = new NonfairSync(permits);}java.util.concurrent.Semaphore.NonfairSync#NonfairSyncNon...
2019-09-22 16:35:51
418
原创 ReetrantLock独占锁解析
自由一定是相对的,只有自律的人,才能有自由。首先看ReetrantLock的构造方法public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();}基于传入的boolean变量决定创建公平锁or非公平锁,sync是ReetrantLock的成员变量,并发包下的很多类都是...
2019-09-22 15:29:52
187
原创 关于指令重排内存屏障和总线风暴
指令重排java语言规范规定JVM线程内部维持顺序化语义。即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执行顺序可以与代码顺序不一致,此过程叫指令的重排序。从源码到最后执行的指令序列过程是:源码->编译器优化重排序->指令级并行重排序->内存系统重排序->最后执行的指令序列内存屏障内存屏障可以禁止指令重排序从上图可以看出:1)当第二个操作是vola...
2019-09-18 22:52:18
6854
1
原创 记录几个别人遇到的面试题
什么时候缓存一致性协议会失效1)存储长度大于一个缓存行2)cpu不支持缓存一致性协议jmm规定每个线程要有工作内存,有什么好处试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。多例类的使用场景有哪些之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,其中有使用池化来节省开销的,比如数据库连接池,...
2019-09-18 18:01:44
105
原创 springboot内嵌tomcat的jar包启动流程
白茶清欢无别事,我在等风也等你。苦酒折柳今相离,无风无月也无你调用SpringApplication.runorg.springframework.boot.SpringApplication#run(java.lang.Class<?>, java.lang.String...)org.springframework.boot.SpringApplication#run(j...
2019-09-17 17:39:54
1723
原创 spring集成mybatis关键代码解析
白茶清欢无别事,我在等风也等你。苦酒折柳今相离,无风无月也无你一)初始化<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.test.dao.UserMapper"/> ...
2019-09-12 17:52:08
110
原创 mybatis主要流程代码解析
白茶清欢无别事,我在等风也等你。苦酒折柳今相离,无风无月也无你一)mybatis启动构建statement流程org.apache.ibatis.session.SqlSessionFactoryBuilder#build(java.io.InputStream)org.apache.ibatis.session.SqlSessionFactoryBuilder#build(java.i...
2019-09-12 12:23:44
209
原创 mybatis一级缓存和二级缓存
但曾相见便相知,相见何如不见时。 安得与君相诀绝,免教生死作相思一)一级缓存(本地缓存,会话级别)org.apache.ibatis.binding.MapperProxy#invokeorg.apache.ibatis.binding.MapperMethod#executeorg.apache.ibatis.session.defaults.DefaultSqlSession#se...
2019-09-11 18:13:56
144
原创 spring事务
一)创建代理类事务跟aop很类似,在开启事务时注册一个InfrastructureAdvisorAutoProxyCreator的组件这是他的继承结构同aop,在spring容器启动时会注册该后置处理器,同时spring注册bean时会先循环调用后置处理器的before方法,而事务的后置处理器的postProcessBeforeInstantiation方法也同样是在父类AbstractA...
2019-09-09 23:43:49
115
原创 spring aop(二)
以JdkDynamicAopProxy(jdk代理)为例org.springframework.aop.framework.JdkDynamicAopProxy#invoke调用方法时,进入代理对象的invoke方法List<Object> chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(meth...
2019-09-09 12:00:37
240
原创 spring aop(一)
且挨过三冬四夏,暂受些此痛苦。雪尽后再看梅花。一)spring启动时注册所有bean后置处理器org.springframework.context.support.AbstractApplicationContext#refresh首先看这个方法,再之前文章中我们知道spring容器启动时会调到这个方法registerBeanPostProcessors(beanFactory);...
2019-09-06 14:49:00
269
原创 Spring Bean实例化过程详解
且挨过三冬四夏,暂受些此痛苦。雪尽后再看梅花。这篇讲解SpringBean实例化过程的关键代码,代码目录可以查找上篇。首先是getBean->doGetBeanfinal String beanName = this.transformedBeanName(name);这里传入的名称可能是别名,做别名解析 protected Object getSingleton(St...
2019-09-03 22:23:40
2350
2
原创 Spring Bean的实例化过程
>org.springframework.beans.factory.support.AbstractBeanFactory#getBean(java.lang.String) @Override public Object getBean(String name) throws BeansException { return doGetBean(name, null, null, ...
2019-08-30 23:27:11
447
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人