
java
mrsbai
这是一个很懒的人
展开
-
关于java的HashMap
直入主题。点击如入HashMap的源码,我们能看到map也是用数组实现的,只不过数组类型是,而Entry也实现了Map,而我们实际上总是说的map key对应的其实是Entry的key。 接下来我们来看Entry的属性,我们能看到我们最熟悉的key、value、hash,但是next是什么呢?我们这里先保持下疑问。 接下来我们来看我们最常用的put方法,!我们可以看出答题可以分四部分。第一,根据原创 2016-01-29 12:45:31 · 380 阅读 · 0 评论 -
Class path contains multiple SLF4J bindings
遇到了几次这个问题了,在此记录下。原因是SLF4J选择要加载的log实现时,发现有多个实现,不知道选择哪个,就报错了。我们现在都使用springboot,springboot默认使用logback,通常情况下是不会有这个异常的。但是当我们也直接或者间接引用其他SLF4J实现的时候,就会报此异常。我这里间接引用了<groupId>org.slf4j</groupId>...原创 2019-09-04 18:42:30 · 117 阅读 · 0 评论 -
找不到org.springframework.web.WebApplicationInitializer的类文件
找不到org.springframework.web.WebApplicationInitializer的类文件遇到好几次这个问题了,再次记录下。原因是缺少spring web启动依赖的原因。<dependency> <groupId>org.springframework.boot</groupId> &l...原创 2019-09-04 17:41:27 · 14166 阅读 · 0 评论 -
闭包的理解
今天被小伙伴问到了闭包,虽然自己原来也看到一些关于闭包的文章,但是发现自己什么都说不出,所以又到了学习的时刻了。 首先先去百科了下闭包的概念: 闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。咱们将这段话拆分开说:能到读取到其他原创 2017-12-10 18:45:36 · 238 阅读 · 0 评论 -
泛型
?和T可能是由于自己对泛型的理解不够,所以第一次看到?时是还很陌生,都不知道这个东西是什么。查过后才了解,原来“?”就是和Object所表达的是一样的事情,一般用于返回值,不知道返回值是什么的类型的时候,可以用?表示。大家都知道java的泛型是一种假的泛型,只在编译阶段生效,其实在运行阶段都是一种类型执行的强制类型转换,所以我是不是能认为?在运行阶段就是转换成Object去运行了呢?原创 2017-12-09 16:57:38 · 141 阅读 · 0 评论 -
first lambda表达式
代码行业日新月异,不get点新技能都快要被淘汰了,今天第一次写lambda表达式,在此记录一下。public class Test { @Data static class Person{ private String name; private Integer age; public Person(String name, Integer原创 2017-09-07 18:25:07 · 443 阅读 · 0 评论 -
关于threadlocal的理解
最近在哪里接触到了threadlocal,但是发现自己对threadlocal的理解很少,基本不知道是做什么的。所以,处于一种学习的目的,找了很多介绍threadlocal的文章。看了很多的博客文章,大多都介绍了threadlocal的概念。以下给出我看了这么多文章的对其的理解,threadlocal可以翻译成“线程局部变量”,是用来存储线程局部变量的地方,可以保证线程安全问题,其内部实现是Thre原创 2017-09-06 20:44:08 · 338 阅读 · 0 评论 -
关于java.security包下面的坑
最近写一个AES加密的算法,本地测试没有问题后,就提交测试了。但是在测试那里一直就有问题。对相同的字符串加密后的结果,每次居然不同!!excuese me?? 后来查询资料才找到,问题居然出现在SecureRandom这个类上,如果只是new一个对象使用的话,在linux环境下每次加密的结果不一致,但是在windows下一致!!所以需要每次setseeds解决。原创 2017-06-27 16:10:19 · 840 阅读 · 0 评论 -
wait和nofity的不眠不休
最近将要离职,所以又到了一波恶补知道的时候了,多线程是必不可少的,然后就遇到了wait和notify。大家都知道,wait和nofify是成对使用的,所以我也秉着这个原则,写出了以下demo第一次运行果然如我所料, 但是当我再运行一次的时候,发现thread1一直在wait,notify不管用?excuse me? 我百思不得其解。经过询问一位大神,大神就指出我的问题所在,各位看官能看出问题吗?原创 2017-04-28 17:45:31 · 711 阅读 · 0 评论 -
maven的笔记
查找maven包依赖的信息地址:http://search.maven.org/原创 2016-03-09 17:45:19 · 251 阅读 · 0 评论 -
java内存可见性
可见性是关于在哪些情况下,一个线程执行的结果对另一个线程是可见的问题。在本例中的问题正是由于主线程对stop变量的写入操作结果,对t1线程是不可见的所导致的。在单线程中,如果向某个变量先写入值,然后再没有其他写入操作的情况下读取这个变量,那么总能得到相同的值。但是,当读操作与写操作在不同的线程中执行时,情况却并非如此。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值。为了确保多个线程转载 2016-02-19 17:45:14 · 541 阅读 · 0 评论 -
java synchronized的理解以及内置锁和对象锁
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的转载 2016-02-03 11:25:17 · 5210 阅读 · 1 评论 -
关于List的扩容问题
大家都知道List是个动态数组,所以说动态数组嘛,说明白了其实也是数组,而数组本身只能是固定大小的。所以这就引出了一个很老生长谈的问题,其实其实也是数组。 关于这点我们可以看ArrayList的源码就能看出问题,,每次扩容都会比较现在的容量是否够用,如果不够用就扩容1.5倍,调用Arrays.copyOf方法,而这个方法又是这样实现的所以每次都是new一个新的数组! 如果一个list初始化容量为原创 2016-01-26 18:26:20 · 10139 阅读 · 0 评论 -
springboot maven package Unable to find main class
使用springboot多次遇到了这个异常,在此记录下。是因为springboot把程序打包成独立运行的jar包了,而独立运行的jar需要配置一个main class才可以。springboot将程序打包成独立jar是依靠<build> <plugins> <plugin> <groupId>org.springframewor...原创 2019-09-05 14:22:01 · 498 阅读 · 0 评论