![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
文章平均质量分 55
总结
小净.
这个作者很懒,什么都没留下…
展开
-
混用StringRedisTemplate和RedisTemplate,同时使用@Autowired和@Resource。导致序列化不一致问题
简单记录下重构项目遇到的坑。问题描述: 数据存入redis后,反序列化操作时报错。业务层引用其他业务层,此时其他业务层通过@Autowired注入了【RedisTemplate】,将数据存入redis。但是查询业务时,最先注入的是【StringRedisTemplate】。导致反序列化失败。一、@Autowired和@Resource区别: @Resource装配顺序 1. 如果同时指定name和type,则从Spring上下文中找到唯一匹配的bean进行装配 2. 如果只指定name,则从上原创 2021-04-28 17:36:30 · 1476 阅读 · 0 评论 -
redis
Redisc语言编写,可承受十万次的QPS ,redis的指令式原子性的一、为何快1、完全基于内存,绝大不分请求是存粹内存操作的,执行效率高。 2、数据结构简单,对数据操作比较简单。没有数据关联3、单线程,(一般使用多线程,将io线程和业务线程分开,用线程池避免线程的频繁创建和销毁)redis使用的是io多路复用函数 文件处理器二、数据模型1、String:最基本最常用(key,val),最大存储512M,二进制安全(意思可以包含任何文件,比如jpg图片,序列化的对象 )。保存字符串的对原创 2020-10-15 17:33:51 · 201 阅读 · 0 评论 -
线程-线程池
一、Thread中的start和run方法的区别 1. start()方法会创建一个新的子线程 2. run()方法只是Thread的一个不同方法二、Thread和Runnable是什么关系 1. Thread 是一个类需要继承该类 ![Thread实现](https://img-blog.csdnimg.cn/20201014144427502.jpg#pic_center) 2. Runnable 是一个接口需要实现该接口 ![Runnable实现](https://img-blog原创 2020-10-14 14:48:04 · 210 阅读 · 0 评论 -
MySql-引擎-索引-事务-锁
MySql存储引擎1、 myisam不支持事务,不支持外键约束,索引文件和数据文件分开,这样在内存里可以缓存更多的索引,对查询的性能会更好,适用于那种少量的插入,大量查询的场景。之前报表系统用,所以当时用myisam比较多,但是后来人家几乎都不用了。2、innodb现在一般用mysql都是innodb,很少用其他的存储引擎,而且国内用其他存储引擎的场景和公司也不多,所以用innodb就可以了,而且这个也是mysql 5.5之后的默认存储引擎。主要特点就是支持事务,走聚簇索引,强制要求有主键,支..原创 2020-05-29 16:36:04 · 203 阅读 · 0 评论 -
HashMap原理
hashing(哈希法)的概念散列法(Hashing)是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快,这种方法一般用来在数据库中建立索引并进行搜索,同时还用在各种解密算法中。对比:Hashtable、HashMap、TreeMapHashtable 是早期Java类库提供的一个哈希表实现,本身是同步的,不支持 null 键和值,由于同步导致的性能开销,所以已经很少被推荐使用。HashMap与 H.转载 2020-05-29 15:11:53 · 200 阅读 · 0 评论 -
Spring Boot自动配置原理
Spring Boot自动配置原理 引言不论在工作中,亦或是求职面试,Spr...转载 2020-05-29 11:33:51 · 247 阅读 · 0 评论 -
TCP/IP-浏览器请求过程-HTTPS
TCP/IP四层网络模型:数据链路层、网络层、传输层、应用层1、数据链路层:数据链路层把物理层的各个电脑连接起来了,传输最底层的0和1电路信号。2、网络层:是基于ip协议。一个子网内的机器之间通信,就是在数据包里写上对方的mac地址,然后交换机广播出去ok了;但是如果是跨子网的通信,就是写上对方的ip地址,然后先通过mac地址广播到路由器,让路由器再根据另外一个子网的ip地址转换为mac地址,通过另外一个子网的交换机广播过去3、传输层:主要为两台主机上的应用提供端到端的通信。TCP协议和UDP协议..原创 2020-05-27 14:36:57 · 762 阅读 · 0 评论 -
JVM-回收-参数-OOM
1、jvm加载图2、什么时候进行垃圾回收:1)jvm的内存其实是有限制的,不可能是无限的,2核4G的机器,堆内存也就2GB左右,4核8G的机器,堆内存可能也就4G左右,栈内存也需要空间,metaspace区域放类信息也需要空间在jvm里必然是有一个内存分代模型,年轻代和老年代2)比如说给年轻代一共是2GB内存,给老年代是2GB内存,默认情况下eden和2个s的比例:8:1:1,eden是1.6GB,S是0.2GB3)如果说eden区域满了,此时必然触发垃圾回收,young gc简称ygc原创 2020-05-25 18:10:43 · 271 阅读 · 0 评论 -
Spring总结(AOP-IOC-事务-动态代理-Bean线程)
Spring一套web程序,在启动Tomcat后,他会监听一个端口将所有的请求交给servlet和jsp来处理。如果没有spring的话,我们需要将业务相关的Bean一个个的new。这时代码就想当臃肿,维护性比较差,一旦业务变化必将大批量的改动。这时Spring IOC 就可以解决这样的问题。IOC 简称控制反转,依赖注入 。它引入了工厂设计模式。也就是说通过xml(在早期用的比较多像Struts)或者注解的形式引入,你就不用一个个的去new这些Bean,维护相关依赖。 将这Bean统一交给Spring.原创 2020-05-25 15:39:41 · 406 阅读 · 0 评论 -
synchronized-CAS-ConcurrentHashMap -java内存模型-volatile
1、线程池的底层工作原理描述:系统是不可能说让他无限制的创建很多很多的线程的,会构建一个线程池,有一定数量的线程,让他们执行各种各样的任务,线程执行完任务之后,不要销毁掉自己,继续去等待执行下一个任务fixed线程池(fixed,队列,LinkedBlockingQueue,无界阻塞队列):ExecutorService threadPool = Executors.newFixedThreadPool(3)提交任务,先看一下线程池里的线程数量是否小于corePoolSize(线程池中定义的数量)。如原创 2020-05-20 11:06:48 · 1213 阅读 · 1 评论