- 博客(48)
- 收藏
- 关注
原创 HashMap的扩容机制、ConcurrentHashMap的原理
HashMap的扩容机制、ConcurrentHashMap的原理(n - 1) & hash : 相当于hash % n;public V put(K key, V value) { return putVal(hash(key), key, value, false, true);} // (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); 将高16位 向又移参与运算为的是使结果更加分散;
2020-10-11 19:50:36
545
原创 Tomcat流程图分析
org.apache.catalina.startup.Bootstrap 启动类synchronized (daemonLock) { if (daemon == null) { // Don't set daemon until init() has completed Bootstrap bootstrap = new Bootstrap(); try {
2020-10-11 19:49:34
459
原创 Spring doCreateBean 方法解析
大纲理解先通过反射创建实例再给属性赋值调用相关初始化方法首先看下doGetBean的方法 /** * 返回一个Bean * * Return an instance, which may be shared or independent, of the specified bean. * @param name the name of the bean to retrieve
2020-10-11 19:45:18
760
原创 Spring init Bean
总结:Spring init Bean之前,已经将Bean properties完成设值; /** * Initialize the given bean instance, applying factory callbacks * as well as init methods and bean post processors. * <p>Called from {@link #createBean} for traditionally defined beans, *
2020-10-11 15:27:55
195
原创 理解Spring框架
正常情况下:一个类产生了对象,才可以使用对象的方法;如果是在很多地方使用该对象就要使用new关键字,产生了很多的耦合;所以框架Spring框架能给我们帮助的就是只需要产生一个这样的对象,在使用的地方进行注入就可以了;那现在面临两个问题,对象哪里来?对象如何被注入?这两个问题,就是框架要解决的事情;对象通过工厂来进行创建注入就是依赖注入,通过@autowired方式要创建对象,必须通过工厂来创建,如果保证只要一个工厂就可以创建所有的对象呢?所有是通过反射,反射必然要有类的全限.
2020-10-11 15:27:11
289
原创 类的初始化,类的实例化
有main方法的类先进行类初始化;类初始化 :静态变量、静态代码块;谁在先,先执行谁;先父类后子类;类的初始化只会执行一次;子类的实例初始化:实例变量、非静态方法;谁在先,先执行谁;子类在执行初始化的时候,子类重载l父类的test() 方法,所以父类的test() 方法前面会有this指向,所以会执行子类的test()方法;类的实例化会执行多次;...
2020-04-07 22:19:28
158
原创 单点登录
码云单点登录项目 xxl:登录任何一个项目,如果没有进行登录就要跳转到登录服务器,后面的redirect_url 是登录成功后需要callback的地址;再接着去登录服务器,如果没有登录就到登录页,填写登录信息后把redirect_url 放在后面;登录成功后将cookie放在redis中,然后跳到redirect_url页面,然后在页面存放cookie;跳转页后面也带上cooki...
2020-04-07 22:15:50
216
原创 Annotation注解
四个元注解@Documented 注解是否包含在包内@Target 标注的地方@Retention 什么时候使用@Inherited 是否被子类继承1.)@Retention – 定义该注解的生命周期 ● RetentionPolicy.SOURCE : 在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们不...
2020-03-28 14:16:25
117
原创 Java泛型
为啥要有泛型在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCastException1.类型擦除泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。2.什么是泛型中的限定通配符和非限定通配符 ?限定通...
2020-03-28 13:32:45
87
原创 类加载机制
== 和equals== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。情况2:类覆盖了...
2020-03-14 12:32:24
95
原创 Synchonized, Lock
synchonized 是不可以被中断的;lock 是可以被中断的,tryLock( long time)方法;synchonized 是通过获取monitor的控制权monitorEnter ,monitorExit 是一次锁的控制流程;synchonized 即使锁内出现了异常,也会自动释放锁;AtomicInteger :CAS( compare and swap)CAS 和...
2020-03-14 12:32:01
152
原创 消息队列、redis知识
互联网面试技术点RabbitMq : 首先 publisher 生产者将消息(Message)发送给 Broker(rabbitmq服务器)---> 交换机 (Exchange) 每个交换机(Exchange)可以绑定多个队列(Queue),所以路由键(routerKey)的功能就是指定发送到匹配的队列中去; 队列和交换机有一个绑定关系(Binding),所以路由键实际是匹...
2020-03-14 12:31:39
137
原创 并发、多线程
1.线程的状态创建之后是new状态、start() 之后是ready状态、获得cpu之后是running状态,jvm把ready、running统称为runable状态;当执行wait()之后是WAITING状态、sleezp(long)wait(long) 可以设置超时时间,超时后变进入RUNNABLE状态;当线程调用同步方法没有获取到锁的情况下,进入block状态、线程执行完run方...
2020-03-14 12:31:15
83
原创 JAVA异常图
Thrown 可以抛出去的;分为Error 和ExceptionError为错误,严整的问题,程序无法解决;Exception 分为运行时异常和非运行时异常;自定义的都是运行时异常...
2020-03-14 12:30:22
360
原创 springmvc
3、SpringMVC工作原理?答:1)客户端发送请求到DispatcherServlet2)DispatcherServlet查询handlerMapping找到处理请求的Controller3)Controller调用业务逻辑后,返回ModelAndView4)DispatcherServlet查询ModelAndView,找到指定视图5)视图将结果返回到客户端4、SpringM...
2020-03-14 12:28:45
123
原创 JAVA 基础
Java 序列化中如果有些字段不想进行序列化,怎么办?对于不想进行序列化的变量,使用 transient 关键字修饰。transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。transient 只能修饰变量,不能修饰类和方法。35 Java 中 IO 流Java 中 IO 流分为几种?按照...
2020-03-14 12:27:49
133
原创 SpringBoot
可以看出大概可以把 @SpringBootApplication 看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。根据 SpringBoot官网,这三个注解的作用分别是:@EnableAutoConfiguration:启用 SpringBoot 的自动配置机制@ComponentScan: 扫描被@Compo...
2020-03-11 22:15:06
138
原创 Go 基础
匿名函数匿名函数多用于实现回调函数和闭包。func main() {// 将匿名函数保存到变量add := func(x, y int) {fmt.Println(x + y)}add(10, 20) // 通过变量调用匿名函数 //自执行函数:匿名函数定义完加()直接执行 func(x, y int) { fmt.Println(x + y) }(10, 20)}匿...
2020-03-11 22:11:41
85
原创 冒泡算法
private static void sort(int[] array) { for (int i = 0; i < array.length - 1; i++) { for (int j = i + 1; j < array.length; j++) { if (array[i] > array[j])...
2020-01-17 13:24:52
79
原创 mysql 存储过程(去除尾部为0的数据)
DROP PROCEDURE IF EXISTS truncatZero;CREATE PROCEDURE truncatZero ( IN num_limit INT )BEGINDECLARE i INT DEFAULT 1;DECLARE rate VARCHAR(20) ;WHILE i <= num_limit DOSELECT most_rate INTO rate ...
2020-01-15 16:37:55
665
原创 mysql锁
文章目录锁一、全局锁二、表锁三、行锁锁一、全局锁Flush tables with read lock;当前客户端断开连接时候,锁就会去除;二、表锁lock tables t1 read,t2 wirte; 这个语句,则其他线程写t1、读写t2的语句都会被阻塞。同时,线程A在执行unlock tables之前,也只能执行读t1、读写t2的操作如果安全地给小表加字段?首先要解决长事务...
2020-01-14 17:01:30
102
原创 mysql事务
特性:原子性、一致性、隔离性、持久性;分类1、扁平事务<使用最频繁的事务,要么都成功提交,要么都失败回滚>2、带有扁平点的扁平事务<允许事务回滚到同一个事务中比较早的一个状态>3、链事务<回滚到最近的一个保存点,在所有的事务都提交之后才会释放锁,并且下一个事务的开始需要上一个事务来进行通知>4、嵌套事务<树结构,只有当父级事务提交之后子级事务才...
2020-01-14 13:42:47
76
原创 mysql索引
类型:1,Normal:普通的索引;允许一个索引值后面关联多个行值;2,UNIQUE:唯一索引;允许一个索引值后面只能有一个行值;之前对列添加唯一约束其实就是为这列添加了一个unique索引;当我们为一个表添加一个主键的时候,其实就是为这个表主键列(设置了非空约束),并为主键列添加了一个唯一索引;3,Fulltext:全文检索,mysql的全文检索只能用myisam引擎,并且性能较...
2020-01-14 10:50:30
117
原创 表结构对性能的影响
1。适当的冗余(数据库三大范式)(范式就是属性不可分割,二范式就是要有主键,三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余);2.大表拆小表(属性值不超过20个,数据不超过1000万, 有大数据的列单独拆成小表)3. 常用属性分离为小表...
2020-01-14 09:25:58
363
原创 Spring中同一个service调用方法不回滚的解决方法
在java配置类上添加注解@EnableAspectJAutoProxy(exposeProxy = true)方式暴漏代理对象,然后在service中通过代理对象AopContext.currentProxy()去调用方法。@Servicepublic class HelloWorldServiceImpl implements HelloWorldService { @Autow...
2020-01-13 14:44:54
1444
1
原创 IDEA使用文档地址
https://www.w3cschool.cn/intellij_idea_doc/intellij_idea_doc-pat12ctv.html
2020-01-12 16:47:07
123
原创 比较arraylist 和linkedList的效率(数据小于100000 linkedList插入快)
ArrayDeque的应用场景是什么?在很多场景下可以用来代替LinkedList,可以用做队列或者栈
2020-01-09 17:19:57
572
原创 EasyExcel
import com.alibaba.excel.EasyExcelFactory;import com.alibaba.excel.ExcelWriter;import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener;import com.alib...
2020-01-03 17:27:09
335
原创 异步接口调用
http的异步调用package com.example.asyncmethod;import com.fasterxml.jackson.annotation.JsonIgnoreProperties;@JsonIgnoreProperties(ignoreUnknown=true)public class User { private String name; priva...
2020-01-02 15:48:41
1235
1
原创 Spring获取ApplicationContext ,以及Bean
Spring中获取Bean 的方式:(根据方法名称获取Bean)Spring在代码中获取bean的几种方式最实用的方法是: import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework....
2020-01-02 13:39:51
780
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人