
java base
ecolifr
这个作者很懒,什么都没留下…
展开
-
java static笔试题
class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int count2 = 0; private SingleTon() { count1++; count2++; } public static SingleTon getInstance() {原创 2020-05-21 15:58:07 · 395 阅读 · 0 评论 -
jvm & tomcat 类加载
jvmbootstrapextapp自定义当JVM运行过程中,用户需要加载某些类时,会按照下面的步骤(父类委托机制): 1 用户自己的类加载器,把加载请求传给父加载器,父加载器再传给其父加载器,一直到加载器树的顶层。 2 最顶层的类加载器首先针对其特定的位置加载,如果加载不到就转交给子类。 3 如果一直到底层的类加载都没有加载到,那么就会抛出异常ClassNotFoundException。因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相原创 2020-05-15 10:51:24 · 263 阅读 · 0 评论 -
gc回收算法及触发条件
minor gceden内存不足full gc元数据区内存不足老年代内存不足System.gc()方法的调用其他CMS GC时出现promotion failed和concurrent mode failure原创 2020-05-15 10:23:15 · 325 阅读 · 0 评论 -
jvm 内存区域划分
原创 2020-05-15 09:32:39 · 137 阅读 · 0 评论 -
java自动拆装箱(Integer)
Integer a = 127;// 等价于 Integer a = Integer.valueOf(127);int b = a;// 等价于 int b = a.intValue();原创 2020-05-13 18:01:58 · 137 阅读 · 0 评论 -
Integer ==校验原理
现象Integer用==做校验时,只能支持-128~127public class IntegerTest { @Test public void test() { Integer a = 127, b = 127; Assert.assertTrue(a == b); a = 128; b = 128; Assert.assertFalse(a == b); a = -127;原创 2020-05-13 17:43:42 · 537 阅读 · 0 评论 -
logback pattern
logback官网pattern原创 2019-12-26 17:55:13 · 306 阅读 · 0 评论 -
httpclient 4.5 超时设置
网上搜索httpclient超时设置:CloseableHttpClient httpClient = HttpClients.createDefault();HttpGet httpGet=newHttpGet("http://www.baidu.com");//HTTP Get请求(POST雷同)RequestConfig requestConfig = RequestConfig.cu...原创 2019-12-20 16:10:52 · 387 阅读 · 0 评论 -
java引用
java引用虚引用(PhantomReference)形同虚设,随时可能被垃圾回收器回收无法通过虚引用来获取一个对象的实例。为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知弱引用(WeakReference在gc时进行回收软引用(SoftReference)在内存空间不足时,进行回收强引用(StrongReference)内存...原创 2019-12-10 17:47:09 · 123 阅读 · 0 评论 -
spi机制(java,springboot,dubbo)
spi机制SPI的全名为Service Provider Interface,为某个接口寻找服务实现的机制。Java SPI约定在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。外部程序装配这个模块的时候,通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的...原创 2019-12-10 10:57:14 · 599 阅读 · 0 评论 -
java线程状态
java线程状态public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread...原创 2019-12-10 09:40:19 · 69 阅读 · 0 评论 -
java retry
retrycontinue @Test public void continueRetry() { System.out.print("continue retry 1:"); // 设置for循环位置 retry: for (int i = 0; i < 2; i++) { for (...原创 2019-11-25 18:01:14 · 134 阅读 · 0 评论 -
synchronized锁升级+实现原理
同步代码块采用monitorenter、monitorexit指令显式的实现monitorenter每一个对象都有一个monitor,一个monitor只能被一个线程拥有。当一个线程执行到monitorenter指令时会尝试获取相应对象的monitor,获取规则如下:monitor的进入数为0该线程可以进入monitor,并将monitor进入数设置为1,该线程即为monitor的拥...原创 2019-11-22 15:23:44 · 231 阅读 · 0 评论 -
java8新增特性
lambdastreamoptionaldate/timeLocal(本地) − 简化了日期时间的处理,没有时区的问题。Zoned(时区) − 通过制定的时区处理日期时间。函数式接口一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口接口默认实现接口可以有实现方法,而且不需要实现类去实现其方法,方法名前面加个 default 关键字方法引用构造器引用...原创 2019-11-21 10:15:21 · 94 阅读 · 0 评论 -
Java8 ConcurrentHashMap
ConcurrentHashMap初始化// 这构造函数里,什么都不干public ConcurrentHashMap() {}public ConcurrentHashMap(int initialCapacity) { if (initialCapacity < 0) throw new IllegalArgumentException(); ...原创 2019-11-20 16:42:00 · 110 阅读 · 0 评论 -
Java8 HashMap
HashMapJava8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其散列表是由数组+链表+红黑树组成。Java7 HashMap查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)O(n)O(n)。为了降低这部分的开销,在 Java8 中,当链表中的元素...转载 2019-11-20 15:34:24 · 85 阅读 · 0 评论 -
maven scope
compile(编译范围)compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。provided(已提供范围)provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。例如,如果你开发了一个web应用,你可能在编译classpath中需要可用的Servlet API...翻译 2019-10-16 11:19:04 · 101 阅读 · 0 评论 -
inheritableThreadLocals实现原理
InheritableThreadLocal类继承了ThreadLocal类,在实现过程中重写了父类的map初始化方法,将参数初始化加入到thread线程中的inheritableThreadLocals,thread.inheritableThreadLocals用于储存可继承线程。使用了InheritableThreadLocal存储后的线程在new thread()的过程中,使用了...原创 2018-12-06 11:01:46 · 317 阅读 · 0 评论 -
Java内存模型的实现
原子性在Java中,为了保证原子性,提供了两个高级的字节码指令monitorenter和monitorexit。在synchronized的实现原理文章中,介绍过,这两个字节码,在Java中对应的关键字就是synchronized。因此,在Java中可以使用synchronized来保证方法和代码块内的操作是原子性的。可见性Java内存模型是通过在变量修改后将新值同步回主内存,在变量读取前...原创 2019-07-08 10:57:11 · 138 阅读 · 0 评论 -
cpu过高排查
top -Hp <PID>printf "%x\n" <TID>将线程id转为16进制jstack <PID> |grep <TID> -A 30查看线程堆栈信息原创 2019-08-19 11:17:28 · 266 阅读 · 0 评论 -
@Autowired 、@Resource、@Inject的区别
@Autowired 与@Resource的区别@Resource是J2EE的注解,作用相当于@Autowired,@Autowired按byType自动注入,而@Resource默认按 byName自动注入。@Autowired与@Resource的区别: 1. @Autowired与@Resource都可以用来装配bean都可以写在字段上,或写在setter方法上。 2. @Au...原创 2019-08-22 10:36:11 · 191 阅读 · 0 评论 -
java图解排序算法
public class SortUtil { /** * 冒泡排序 */ public static void bubbleSort(int[] nums) { if (nums == null || nums.length <= 1) { return; } for (int i ...原创 2019-08-29 16:17:25 · 115 阅读 · 0 评论 -
Boolean.getBoolean
String s = "true";System.out.println(Boolean.getBoolean(s)); //falseSystem.out.println(Boolean.parseBoolean(s)); //true原创 2018-07-02 17:26:11 · 199 阅读 · 0 评论