- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 Thrift安装总结
近期公司要上RPC框架,综合考量后决定采用Thrift,没想到一个如此流行的RPC框架安装起来全是坑。文章基于centos6.5,thrift0.12.0首先上官方的安装教程,官网只要求了DevelopmentTools,autoconf/automake/bison几个依赖,但实际上远远不够,先安装所需要的依赖:sudo yum install -y automake libtool ...
2019-03-06 15:54:33
738
原创 Spring源码阅读——记录一次非典型异常排查
最近在做微服务技术方案调研,因为eureka的闭源,注册中心准备启用consul,同时consul还可以把配置中心的活干了。搭了一个简单的springboot2.0+consul2.1的demo,模拟了一下配置中心的任务,没啥问题,准备跟现有项目合并,结果合并后springboot无法正常启动,报了一个很诡异的错误:[WARN] [main] 2019-01-03 12:10:14,408...
2019-01-03 18:19:40
5294
2
原创 JAVA代码优化方法
算是一个笔记,摘自《Practical Java》这本早已绝版的电子书,内容基于JDK2.0的老古董,但是很多思想依旧可以借鉴。 使用static,final,private修饰函数以此来触发jvm的方法内联优化 类的实例变量不需要再次初始化的额外操作 尽可能使用基本类型减少使用对象的消耗 优先使用数组,如果需要变长,使用ArrayList,如果需要同步,再考虑...
2018-12-29 00:20:46
174
原创 从==和equals的区别,浅谈Java中的引用
先上两个面试中经常遇见的问题:1.给出以下代码执行后的打印输出:public class lll { static void change(int i){ i=10; } static int changeReturn(int i){ i = 10; return i; } static class ...
2018-12-21 14:02:19
262
原创 Tomcat源码解析——启动过程分析
最近面试一些1~3年的开发人员,问他们tomcat的基础架构发现都是一脸懵逼,这里开贴大概写一下tomcat的整体架构以及启动流程,版本基于7.0.85,后续会不断对文章进行更新。一、tomcat基础架构上个图,这张图算是说的比较明白的。大家可以去翻一下server.xml,精简后会发现如下结构:<?xml version='1.0' encoding='utf-8'?...
2018-12-18 17:52:58
302
转载 Java字节码
原文链接:https://blog.csdn.net/qbg19881206/article/details/22896935这篇文章能让你对Java字节码有个了解,这可以帮你成为一个更好的程序员。就像C或C++编译器将源码编译为汇编码,Java编译器会将Java源码编译成字节码。Java程序员应该花费时间去理解什么是字节码,它是怎样工作的,更重要地是,Java编译器产生了什么样的字节码。在某...
2018-12-14 14:44:29
130
1
转载 不可逆的类初始化过程
原文链接:https://mp.weixin.qq.com/s/HK5JsmGjvOe_93TwlmZNdg类的加载过程说复杂很复杂,说简单也简单,说复杂是因为细节很多,比如说今天要说的这个,可能很多人都不了解;说简单,大致都知道类加载有这么几个阶段,loaded->linked->initialized,为了让大家能更轻松地知道我今天说的这个话题,我不详细说类加载的整个过程,改天...
2018-12-14 10:37:28
137
原创 最近做面试官的经验心得
公司最近想找个初中级java,一到三年的那种,老大安排我筛简历+一面。老实说市面上找工作的程序员,工作经验在这个年龄段的比较多,每天都有五六十封简历过来(小公司大佬勿喷),但是陆陆续续招了一个多月了,仍然没有招到合适的,期间当然也有那种我们觉得合适但是最终没谈拢的,不过大部分来应聘的人员还是存在一些明显的问题,无论是简历还是面试。网上现在大多都是面经,所以今天我想以一个面试官的视角给大家谈一下,找...
2018-12-13 15:41:17
497
1
原创 JVM学习笔记
一、方法区与常量池Java中的方法区实际上是堆内存的一个逻辑划分,属于堆的一部分,用来存放虚拟机加载的类信息,常量,静态变量,JIT编译后的代码数据。虚拟机内存模型中不存在常量池的概念,但是方法区中存在一个叫做运行时常量池的部分。常量池是Class文件中的一个概念,用来存放编译期生成的各种字面量与符号引用,这部分内容在类加载后存入运行时常量池。值得一提的是,运行时常量池具有动态性,并不是只...
2018-12-12 20:18:28
129
原创 JAVA多线程学习笔记
一、如何同时启动多个线程?start以后循环join至主线程 CyclicBarrier中的await屏障点方法二、volatile关键字线程安全需要同时满足三个特性,可见性,原子性,有序性,volatile只满足了可见性和有序性 多线程执行模式中,线程对私有实例变量的访问只会访问栈的私有内存,不会去主内存查询,volitale强制把更新推送到各个栈的私有内存中 volatile可...
2018-11-26 19:35:23
139
原创 史上最全的i++与++i的详细解析,一篇就够
首先放结论,i++线程不安全可能很多人都知道,但++i却是天然的线程安全操作,大家有想过为什么么。首先要明白一点,多线程模式下的安全与否,其根本决定因素是该操作是否是原子操作,所谓的原子操作,就是一个操作不可拆分,放到字节码层面,也就是说一个操作只有一个字节码完成。例如典型的赋值操作”=“。为了解释i++与++i这两个近亲兄弟的差异,我们直接看二者编译后的字节码 i++ 0: al...
2018-05-09 18:41:27
1838
原创 @RequestParam注解中,defaultValue属性的默认值
无聊水一水,程序员们自己找乐子的方式真的层出不穷/** * The default value to use as a fallback when the request parameter is * not provided or has an empty value. * <p>Supplying a default value implicitly sets {@li...
2018-03-13 18:14:40
42514
3
原创 关于Java类中变量的初始化
public class Test { int a; static int b = 123; final static int c; void init(){ int d; } public static void main(String[] args) { int e; System.out.pr...
2018-03-09 13:59:52
586
原创 关于Java静态代码块执行时机的解析(一篇就够用)
首先要给大家区分一个观点,加载与类加载是两个截然不同的过程。Java的“类加载”是一个类从被加载到虚拟机内存中开始,到卸载出虚拟机内存为止的整个生命周期中的一个过程,包括加载,验证,准备,解析,初始化五个阶段。而“加载”指的是类加载的第一个阶段,加载阶段,虚拟机需要完成以下3件事情:1.通过一个类的全限定名来获取定义此类的二进制字节流2.将这个字节流所代表的静态存储结构转化为方法区的运行时
2018-01-23 16:58:41
7492
3
docker从入门到实践(中文版).pdf
2017-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人