我的学习笔记

线程池

多 线 程_zheng_chang_wei的博客-CSDN博客

JVM

JVM_zheng_chang_wei的博客-CSDN博客

MySQL

MySQL_zheng_chang_wei的博客-CSDN博客

集合

Iterable---Collection---List

ArryList,LinkedList,Vector

Collections.synchronizedList(new ArrayList<>());

new CopyOnWriteArrayList();

Iterable---Collection---Set

HashSet,TreeSet,LinkedHashSet

Map

HashMap,Hashtable,TreeMap,LinkedHashMap,ConcurrentHashMap原理

Collections.synchronizedMap(new HashMap<>());

Redis

String ,Hash ,List,Set,Sorted Set

https://blog.csdn.net/zheng_chang_wei/article/details/118309794

kafka

分布式的基于发布订阅模式的消息队列

解耦,可恢复,缓冲,异步通信

String intern()

如果常量池中已经存在该字符串,则直接返回常量池中该对象的引用。否则,在常量池中加入该对象,然后返回引用。

如何重写hashCode()和equals()方法

如何重写hashCode()和equals()方法_司青-已停止更新的博客-CSDN博客

动态代理

Java 静态代理、Java动态代理、CGLIB动态代理 - 腾讯云开发者社区-腾讯云

java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。

Jdk动态代理

代理类实现InvocationHandler,Proxy.newProxyInstance()动态生成代理对象,基于反射

CGLib动态代理

代理类实现MethodInterceptor,代理类对象是由 Enhancer 类创建的,原理是对指定的委托类生成一个子类并重写其中业务方法来实现代理

静态代理缺点:不同的接口要有不同的代理类实现,会很冗余

JDK动态代理:优点:解决了静态代理中冗余的代理实现类问题。

缺点:JDK 动态代理是基于接口设计实现的,如果没有接口,会抛异常。

CGLib动态代理:优点:没有接口也能实现动态代理,而且采用字节码增强技术,性能也不错。

java 锁

java 锁_zheng_chang_wei的博客-CSDN博客

dubbo

11111

ThreadLocal

this为key,value为值,存放在本地线程的ThreadLocalMap中,ThreadLocalMap中的Entry继承了弱引用

https://blog.csdn.net/vicoqi/article/details/79743112

排序算法 

 快速排序:Java基础随笔-快速排序(两种方法)_廖子默的博客-CSDN博客

Linux常用指令

Mybatis缓存

Mybatis缓存_zheng_chang_wei的博客-CSDN博客_mybatis缓存

TCP、UDP、Http、Https

 三次握手的目的是“为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误”

TCP 为什么三次握手而不是两次握手(正解版)_萧萧九宸的博客-CSDN博客_两次握手

常见http请求方法
 http和https区别

SpringCloud

Spring常用注解

Spring常用注解_一筒君的博客-CSDN博客_spring的注解

Springboot自动装配

Spring和Springboot源码

Springboot启动流程SpringBoot启动流程总结_Riven Chen的博客-CSDN博客_springboot执行流程

Bean的生命周期

Spring Bean的生命周期(非常详细) - Chandler Qian - 博客园

Bean的作用域

@Scope 设置Spring容器如何新建Bean实例(方法上,得有@Bean) 
其设置类型包括:

Singleton (单例,一个Spring容器中只有一个bean实例,默认模式), 
Protetype (每次调用新建一个bean), 
Request (web项目中,给每个http request新建一个bean), 
Session (web项目中,给每个http session新建一个bean), 
GlobalSession(给每一个 global http session新建一个Bean实例)

反射实例化对象

反射常用方法_zheng_chang_wei的博客-CSDN博客_反射方法

进程和线程区别

final关键字?final修饰的变量 反射能改吗?

答:反射是可以修改final变量的,当定义为基本数据类型的数据和String的时候,只要赋值的时候右边是常量表达式,就会进行编译器的优化,只要不会被编译器内联优化的final属性就可以通过反射进行有效的修改,那么有那些方法可以避开jvm的编译期优化呢?

方法1.改变赋值方式,取消编译时的自动优化,比如使用三元表达式赋值

final String str= (null!=null?"":"42");

方法2.先定义后赋值,使用空白final

static final int primitiveInt;
    static final Integer i;
    static String str;
 
    static {//这里改为用静态代码块赋值
        primitiveInt = 42;
        wrappedInt = 42;
        stringValue = "42";
    }

 谈谈对Volatile的理解

https://blog.csdn.net/zheng_chang_wei/article/details/115467908

常用数据结构

  • 数组(Array)
  • 队列(Queue)
  • 链表(Linked List)
  • 栈(Stack)
  • 树(Tree)
  • 散列表(Hash)
  • 堆(Heap)
  • 图(Graph)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值