自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 grpc 线程池

关闭grpc Spring引导中的自定义线程池执行程序 - java - SO中文参考 - www.soinside.com

2023-07-12 19:52:26 151

原创 高并发解决方案

1、单体应用垂直扩容提高硬件配置:CPU、内存、磁盘,但不可能永无止境的提升。2、单体应用水平扩容搭建应用集群(tomcat集群),但入口只有一个,需配置负载均衡,需注意session共享!!!服务器端实现:nginx、F5客户端实现:springcloud的Ribbon、dubbo3、应用拆分单体应用逐步庞大,代码复杂,维护困难,按业务维度拆分应用,使用分布式开发,针对并发量高的应用进行扩容(集群)即可。同一进程内的调用变成远程方法调用远程调用技术:httpclient

2022-03-19 11:25:26 4166 1

原创 String不可变

String不可变String str1 = new String("hello");String str2= str1;System.out.println("str1 == str2:" + (str1 == str2));//trueSystem.out.println("str1.equals(str2):" + str1.equals(str2));//truestr1 = "world";System.out.println("str1的值 = :" + str1);/.

2022-03-19 10:03:39 67

原创 脑裂及解决方法

脑裂指一个集群由于网络的故障,被分为至少两个彼此无法通信的单独集群,此时如果两个集群都各自工作,则可能会产生严重的数据冲突和错误。redis哨兵机制-脑裂:主节点由于网络等原因,不能被哨兵感知,选举出新主节点,然后数据仍写入旧主节点,新主节点无法同步数据,旧主节点网络恢复后,被哨兵降级为从节点,从而造成数据丢失。解决:min-slaves-to-write 1 // 要求至少有1个slavemin-slaves-max-lag 10 // 数据复制和同步的...

2022-03-18 14:26:55 3851

原创 JVM垃圾回收

1、运行时数据区域堆:(线程共享)数组+对象+字符串常量池虚拟机栈:(线程私有)局部变量表、操作数栈、动态链接、方法返回地址本地方法栈:执行本地方法的区域方法区:(线程共享)运行常量池+类常量池+类信息1.6存在永久代(堆),1.8存在元空间(直接内存)程序计数器:(线程私有)记录线程执行的字节码地址...

2022-03-11 16:32:40 409

原创 Mybatis缓存

一级缓存(本地缓存)默认开启sqlSession级别的缓存,每一次会话都对应自己的一级缓存,作用范围比较小,一旦会话关闭就查询不到了;一级缓存默认是一直开启的,是SqlSession级别的一个Map;与数据库同一次会话期间查询到的数据会放在本地缓存中。以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库。失效:1、sqlsession不同(会话不同)2、sqlsession相同,查询缓存中没有的数据3、sqlsession相同,但两次查询之间执行了增删改操作增

2022-03-09 16:07:35 802

原创 Mysql日志

undo log主要用于事务回滚时恢复原来的数据mysql在执行sql语句时,会将一条逻辑相反的日志保存到undo log中。undo log中记录的是逻辑日志。undo log与ReadView合作可以实现多版本并发控制MVCC(Mutil-Version Concurrency Control)。...

2022-03-08 14:32:59 411

原创 消息队列及注意事项

1、作用异步处理:减少请求等待服务解耦:多个服务间减低依赖流量削峰:请求放入队列,作为缓存,减少高并发的巨多请求的影响2、模式队列模型:RabbitMQ一条消息只能被一个消费者消费发布/订阅模型: kafka、rocketMQ一条消息被多个消费者消费,消息发到topic,谁要谁订阅3、确保消息不丢失4、消息重复消费前置条件判断、版本号控制、数据库的约束:唯一键/关键字段5、消息有序全局有序:不常见一个生产者(producer)生产消息、消息服务

2022-03-03 14:19:12 1778

原创 Redis数据类型、持久化

一、数据类型1、String字符串--二进制安全整数等任何数据、最大512M应用:粉丝数、微博数2、hash哈希存field-value结构(k-v),适合存对象信息应用:用户信息3、list列表字符串列表,按插入顺序排序,可左插入、左删除、右插入、右删除应用:粉丝列表4、set集合无序、去重的字符串集合,可取交集、并集、差集,内部是value为null的hashmap,还可以判断某个成员是否在集合里应用:粉丝列表、共同好友5、sorted-set有序集合

2022-03-02 20:51:14 466

原创 Redis快在哪里?

1、内存2、高效的数据结构SDS简单动态字符串(使用长度+空闲长度+实际内容)记录了使用长度:时间复杂度o(1),性能提高空闲长度:空间预分配,修改不需要频繁分配长度,使用长度>1M,分配1M,否则多分配自身长度的空闲长度惰性释放:缩短长度,不急着释放,下次增加可直接使用空闲空间二进制安全:SDS记录使用长度,C只认“\0”,二进制数据丢失linkedlist双端列表记录前后节点,list结构有头尾指针,节点数量ziplist压缩列表占用内存字节数+头到尾偏移量

2022-03-02 20:15:06 510

原创 Redis

1、缓存击穿大量的请求获取某个 key 对应的值,而这个 key 在某个时间突然失效了,意味着大量的请求就无法在缓存中获取数据了,而是去请求数据库了,这样很有可能导致数据库被击垮。解决:不要设置过期时间了,如果该key的数据更新了,那么就通过互斥锁的方式将其更新。如果不使用互斥锁的方式很容易导致数据不一致的情况,这里为了保证缓存和数据库的一致性,就只能牺牲一点点的效率了。2、缓存穿透某个不存在的key一直被访问,结果发现数据库中也没有这样的数据,最终导致访问该key的所有请求都直接请

2022-03-01 21:36:54 127

原创 数据库隔离级别

1、4种隔离级别2、mysql:可重复读oracle:读已提交3、mysql实现可重复读--MVCC(多版本并发控制)基于乐观锁,实现读已提交和可重复读每行记录增加隐藏的两列,trx_id(当前行最新修改的事务id)和roll_pointer(指向更新前的undo log)每开启一个事务,事务版本号会递增read view,包括4个部分可重复读:查询会生成一个read view1、事务id<最小值,说明是之前事务的数据,直接返回2、事务id>最小值,且

2022-03-01 20:59:54 491

原创 JVM垃圾回收

1、运行时区域虚拟机栈、本地方法栈、程序计数器、1.8后:本地内存(直接内存+元空间(方法区))+堆1.8前:本地内存(直接内存)+堆(方法区+其他)2、堆是垃圾回收的主要区域判断垃圾引用计数法:(不被使用)有一个引用,对象头+1弊端:循环引用,a引用b,b引用a,无法回收可达性算法:(常用)以GC ROOT为起点的引用链上的对象不被回收3、GC ROOT4、对象可回收,一定会被回收?5、垃圾回收算法标记-清除法:标记需回收对象,再进行清除。.

2022-03-01 19:34:51 98

原创 Spring事务失效

@Trancastional注解失效场景:1、被注解描述的方法的修饰符不是public2、通过调用类内部方法间接调用开启事务的方法(直接调用,事务正常)3、异常被捕获,未抛出到方法外

2022-02-28 16:37:59 162

原创 Spring

1、AOPjdk代理:基于接口cglib代理:不必基于接口2、传播特性3、数据库隔离级别Oracle:read-commitedMysql:repeatable-read4、spring隔离级别(5种)默认:使用数据库隔离级别与数据库隔离级别一一对应...

2022-02-28 16:24:49 232

原创 设计模式-单例

实现方式:1、饿汉:开始就创建对象,造成不必要的内存消耗。2、懒汉:需要时再创建。初始版本:线程不安全,出现创建多个实例对象获取方法加锁:性能低双重判断:先判断是否创建,再加锁,指令重排造成获取未初始化完全的对象(加volicate避免)静态内部类:实例对象为类变量,安全又高效饿汉:可以通过反射创建两个实例对象。3、枚举枚举不能被反射。...

2022-02-27 17:14:59 112

原创 Mysql索引

1、索引分类:2、索引失效:3、大数据量表添加索引

2022-02-27 16:24:42 1022

原创 JAVA线程池

1、减少线程创建和销毁的消耗,提高线程复用2、参数:核心线程数、最大线程数、空闲的非核心线程存活时间、存活单位、任务队列、线程工厂、拒绝策略。allowCoreThreadTimeout:默认false,表示核心线程不可消耗。3、创建:Excutors创建:固定线程数、单个线程、无穷线程(队列无效)ThreadPoolExcutor创建:灵活配置参数4、工作流程:小于核心线程数,则创建线程,大于核心线程数,则加入队列,队列满了且未达到最大线程数,则创建线程,队列满且达到最大线

2022-02-27 15:25:42 133

原创 Synchrnized升级

无锁升级为偏向锁:线程访问同步代码块,查看对象头是否存储本线程,没有则通过CAS替换markword。偏向锁升级为轻量级锁:轻量级锁升级为重量级锁:

2022-02-27 14:32:33 201

原创 HashMap

HashMap-1.7容量:数组大小,也叫哈希表大小(默认1>>4=16)加载因子:元素装多满(默认0.75)阈值:容量*加载因子容量达到阈值则进行扩容

2022-02-27 11:54:16 336

原创 useGeneratedKeys属性

Springboot中 Mybatis 配置文件 Mapper参数useGeneratedKeys=“true” keyProperty=“id”useGeneratedKeys设置为 true 时,表示如果插入的表id以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键id返回...

2020-10-05 14:59:13 475

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除