- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 redis集群的3种模式
1.主从模式2.哨兵模式3.cluster模式一、主从模式一个master可以有多个slave,但是一个slave只能对应一个matser;matser可以进行读写操作,slave一般都是只读的,master每次接收到写命令都会同步发送给slave;master挂了之后,不会在slave节点中重新选一个master,redis不再提供写服务,需要重启master后redis才会重新对外提供写服务;缺点:master宕机,redis就不提供写服务了,不具备自动容错和恢复功能。
2020-12-25 13:50:00 265 1
原创 redis非阻塞IO多路复用模型
redis客户端对服务端的每次调用都经历了发送命令、执行命令、返回结果。redis使用单线程,单线程指的是网络请求模块使用了一个线程,即一个线程处理了所有网络请求。但是其它模块仍使用了多个线程。为什么要用IO多路复用技术?因为与用户网络传输是需要等待的,读写操作等待用户输入输出都是阻塞的,IO操作在一般情况下往往不能直接返回,这会导致某一文件的IO阻塞导致整个进程无法对其它客户提供服务。(我们希望第一次的IO如果需要等待,那么就进行第二次的IO,其实就是规避了等待的时间。)所以使用IO多路复用解
2020-12-25 12:08:51 851
原创 redis数据类型
1.String字符串2.List列表3.Hash: redis key field value redis hash 是一个String类型的field字段和value的映射表,hash特别适合用于存储对象。4.Set集合5.zset有序集合
2020-12-23 17:04:47 79
原创 如何防止异步请求的重复提交
针对一个接口有多个重复的提交,在前端那一层就得做控制。前端自然有他的方法前台去抖动、防快速操作。这里,我是后端开发,前端的措施我们就不细究了。即使前端做了防重复提交,我们后端依然也要做好防重复提交。下面有几种防重复提交的方法:1.基于缓存的数据验证例如有一个订单插入的请求,这里我们需要用到订单的流水号(orderId),因为orderId肯定是唯一的。请求request进来的...
2019-10-10 15:49:47 1159
原创 多线程的实现方式
前言 本文从两方面介绍线程,一:线程的生命周期,二多线程实现的方式1:线程的生命周期线程的生命周期的几种状态:新建状态就绪状态:当线程调用start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。运行状态:如果就绪状态的线程获取CPU资源,就可以执行run()方法,此时线程便处于运行状态。阻塞状态:可...
2019-05-29 17:55:53 165
原创 怎么使用多线程?
实现多线程的方式有很多种,今天我们就来说下目前最好用的多线程的实现方式,使用ExecutorService。为什么说它好用,是因为new Thread的弊端有很多。下面有张表格可以对比下:new Thread的弊端 ExecutorService a:每次new Thread新建对象性能差; a:可以重用存在的线程,减少对象创建、消亡的开销,性能佳 b:线程缺乏统一管理,...
2019-05-29 17:28:31 3566 2
原创 post方式传参,在程序中获取不到传的值
public CommonResult deleteRole(Integer roleid){ System.out.println(roleid);}post方式,传参是json格式的话,上述方法打印是null;实际上前端已经传了,只是我们接收的方式不对。解决方法一:使用注解@RequestBody,需要使用JSONObject转换 public
2017-05-27 17:53:54 2782
原创 spring注入List不允许,解决办法
报的错误:Failed to instantiate [java.util.List]: Specified class is an interface翻译:无法实例化List
2017-05-27 17:02:07 1569
原创 mybatis 中sql语句传递多个参数
Mapper中的接口:PermissionEntity selectPermission(Integer roleid, Integer menuid);那么对应的映射文件:SELECT p.* from menu m,permission p WHERE m.Menuid=p.Menuid AND p.Roleid = #{0} AND p.Menuid = #{1}
2017-05-27 16:45:59 2033
原创 Hibernate运行过程
Hibernate的运行过程:1.应用程序先调用Configuration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactory对象。2.然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象。
2017-05-05 10:32:47 969
原创 在idea中如何使用git
本文解决的问题:在idea中使用git如何进行版本回退,和如何进行分支的合并。 一、版本回退 1.右击这个项目或是某个具体的文件,使用show history查看版本的commit id 。 2.得到结果页面如下:双击某个可以看到看到针对某个版本都改了哪些东西。
2017-03-24 11:31:38 1882
原创 建自己的博客的第一天,不忘初心!
今天我在CSDN上有了自己的博客。想这一天已经好久了,可是,“哎呀,别误人子弟了”——内心的这种声音每每让我放弃了这个念头。所以,我就告诉自己,要慢慢学习然后有一天也要在这里开一个良心博客。现在,我依然不是什么大牛,也不是什么牛B哄哄的人物,我只是一棵小草,但,不会永远是棵小草。
2017-03-23 19:40:31 210
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人