Java
vicosz
这个作者很懒,什么都没留下…
展开
-
springboot解决跨域请求
@Configurationpublic class WebConfig implements WebMvcConfigurer { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) {原创 2022-03-31 14:54:12 · 240 阅读 · 1 评论 -
Spring Cloud文档
注册中心 Spring Cloud Eureka使用 Netflix Eureka 实现服务注册与发现(服务治理)包含服务端组件、客户端组件Eureka 服务端组件:服务注册中心,高可用Eureka 客户端组件:服务注册和发现,客户端服务通过注册和参数配置的方式,嵌入客户端应用。应用启动时,Eureka 客户端向服务注册中心注册提供的服务,周期性发送心跳更新服务租约。从服务端查询当前注册的服务信息并缓存到本地,刷新服务状态负载均衡 Spring Cloud RibbonEureka集成了Ri.原创 2021-10-08 13:02:53 · 200 阅读 · 0 评论 -
zookeeper文档
zookeeper 使用场景命名服务、配置管理、集群管理、分布式锁、队列管理zk有哪些功能集群管理:监控节点存活状态、运行请求Leader选举:主节点挂掉后从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zk 协助完成分布式锁:zk提供两种锁:独占锁、共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,多线线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。zk对分布式锁控制命名服务:在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字.原创 2021-10-08 13:01:44 · 493 阅读 · 0 评论 -
jvm运行时数据区
1.程序计数器:指向当前线程正在执行的字节码的地址和行号,不会出现 OutOfMemoryError2.Java虚拟机栈:不存在垃圾回收问题(栈主要是执行程序)栈帧存储:局部变量表、操作栈,动态链接、方法出口,包含方法执行(入栈)执行结束后(出栈)线程请求的栈深度>虚拟机允许的深度时抛出异常 StackOverflowError虚拟机栈动态扩展,无法申请到足够内存时抛出异常 OutOfMemoryError3.本地方法栈:本地Native方法,会出现异常 StackOverflowError原创 2021-10-08 12:58:54 · 150 阅读 · 0 评论 -
Java并发文档
> 并发编程三要素原子性:共享资源写操作,其他线程只能看到结果。加锁、CAS实现可见性:多线程共享变量,线程修改变量后,其他线程可以立即看到修改的结果。Synchronized、Lock 方法保证任意时刻只有一个线程获取锁,锁释放前把最新值刷新到主内存。volatile 保证可见性有序性:程序执行,为了提高性能,存在编译器和处理器对指令重排问题。volatile 实现> 线程安全和非线程安全线程安全:多线程操作同一个对象不会有问题,synchronized实现线程同步非线程安全:多原创 2021-10-08 12:57:22 · 151 阅读 · 0 评论 -
Synchronized锁升级过程/多线程锁的升级原理
锁的级别从低到高:无锁-偏向锁-轻量级锁-重量级锁偏向锁:一段同步代码被一个线程访问,该线程自动获取锁。降低获取锁的代价轻量级锁:当锁是偏向锁,被另一个线程访问,偏向锁升级为轻量级锁,其他线程自旋尝试获取锁,不会阻塞重量级锁:当锁是轻量级锁,另一个线程自旋一定次数还没有获取锁,膨胀为重量级锁。会阻塞其他申请的线程,性能降低...原创 2021-10-07 14:47:14 · 136 阅读 · 0 评论 -
Java有哪些锁
1.公平锁/非公平锁公平锁:是多个线程按照申请锁的顺序获取锁非公平锁:JVM随机、就近原则分配锁2.可重入锁(递归锁)同一个线程在外层方法获取锁时,进入内层方法会自动获取锁,可以避免死锁ReentrantLock Synchronized 是可重入锁3.独享锁/共享锁(互斥锁/读写锁)独享锁/共享锁是广义说法,互斥锁/读写锁是具体实现独享锁:是锁只能被一个线程持有共享锁:是锁可被多个线程持有ReentrantLock 是互斥锁,ReadWriteLock 读锁是读写锁,写锁是互斥锁4.原创 2021-10-07 14:46:11 · 530 阅读 · 0 评论 -
基本数据类型转换为String有几种方法
a.toString()调用转换String.valueOf(a)底层调用了 Integer.toString(),调用前做空判断a+"" StringBuilder实现,append()拼接 toString()获取字符串原创 2021-10-07 14:37:50 · 324 阅读 · 0 评论