- 博客(11)
- 资源 (3)
- 收藏
- 关注
转载 Redis的scan命令
熟悉Redis的人都知道,它是单线程的。因此在使用一些时间复杂度为O(N)的命令时要非常谨慎。可能一不小心就会阻塞进程,导致Redis出现卡顿。有时,我们需要针对符合条件的一部分命令进行操作,比如删除以test_开头的key。那么怎么获取到这些key呢?在Redis2.8版本之前,我们可以使用keys命令按照正则匹配得到我们需要的key。但是这个命令有两个缺点:没有limit,我们只能一次性获取所有符合条件的key,如果结果有上百万条,那么等待你的就是“无穷无尽”的字符串输出。 keys命令是遍历
2020-06-30 10:46:15 617
转载 redis内存淘汰策略
Redis作为当前最常用的开源内存数据库,性能十分高,据官方数据表示Redis读的速度是110000次/s,写的速度是81000次/s 。而且Redis支持数据持久化,众多数据结构存储,master-slave模式数据备份等多种功能。但是长期将Redis作为缓存使用,难免会遇到内存空间存储瓶颈,当Redis内存超出物理内存限制时,内存数据就会与磁盘产生频繁交换,使Redis性能急剧下降。此时如何淘汰无用数据释放空间,存储新数据就变得尤为重要了。对此,Redis在生产环境中,采用配置参数maxmemo
2020-06-30 09:29:10 149
原创 ThreadLocal分析
1.ThreadLocal的作用:ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只有在指定的线程中可以获取到存储的数据,对于其他线程来说则无法取到数据。2.TheadLocal的set方法(存入数据) public void set(T value) { Thread t = Thread.currentThread(); //获取当前线程 ThreadLocalMap map = getMap(t)..
2020-06-29 19:31:07 172
原创 nginx 负载均衡,反向代理配置
1.DNS域名解析:host文件:在Windows中可以通过C:\Windows\System32\drivers\etc\hosts文件来设置。2.外网映射工具:可以让外网访问本地应用程序:常用的外网测试工具有natapp、ngrok3.nginx应用场景: 1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服...
2020-06-29 16:05:49 335
原创 git 删除本地未提交的内容
1.将未提交的内容存到堆栈区git stash2.清空堆栈区git stash clear二:其他相关命令将未提交的内容存到堆栈区并且命个名 : git stash save 名字查看堆栈区列表: git stash list把堆栈区最近的一次提交恢复(先进后出): git stash pop删除指定的列表项: git stash drop 名称(类似:stash@{0})...
2020-06-28 17:36:54 2114
原创 git 回滚到某次提交
1. 查看提交日志: git log2. 回滚到某个指定的版本:git reset --hard 版本号(commit后的字符串)
2020-06-28 17:23:13 648
转载 mybatis中的执行器
mybatis在执行期间,主要有四大核心接口对象:执行器Executor,执行器负责整个SQL执行过程的总体控制。参数处理器ParameterHandler,参数处理器负责PreparedStatement入参的具体设置。语句处理器StatementHandler,语句处理器负责和JDBC层具体交互,包括prepare语句,执行语句,以及调用ParameterHandler.parameterize()设置参数。结果集处理器ResultSetHandler,结果处理器负责将JDBC查询结果映射到j
2020-06-15 11:26:55 896
转载 volatile保证可见性和禁止指令重排序的原理
下面这段话摘自《深入理解Java虚拟机》: “观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令” lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),内存屏障会提供3个功能: 1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成; 2)它会强制将对缓存的修改操作立即写入主存;
2020-06-12 15:39:18 1553 1
原创 java 单例模式中双重检查锁 volatile 的作用?
作用:保证有序性,禁止指令重排序。原因: 在执行instance = new Singleton()语句时,一共是有三步操作的。1.堆中分配内存2.将创建的对象放到分配的内存中3.将instance引用指向内存地址。在这三步有可能会产生指令重排序即有两种结果可能产生:123与132。只产生两种结果的原因是存在as-if-serial语义(不管怎么重排序,单线程程序的执行结果不会改变),as-if-serial语义决定了12与13的依赖关系即23肯定在1之后执行,但是23之...
2020-06-12 14:53:40 611
原创 mybatis中将数据库表名或列名当作参数
1.操作方式: 在mybatis xml中使用 ${列名/表名} 而不是 #{列名/表名}说明:${} 只是简单的字符串替换,#{}则是预编译。2.产生问题: 问题:${}会产生sql注入问题。 解决方式: 1.如果只是select 语句 ,可以在service方法中添加@Transactional(readOnly = true) (只读事务),也可以在service方法中限制列名和表名的范围。 2.如果是in...
2020-06-12 11:16:27 2923
转载 ForkJoinPool线程池原理分析
一、引言算法领域有一种基本思想叫做“分治”,所谓“分治”就是将一个难以直接解决的大问题,分割成一些规模较小的子问题,以便各个击破,分而治之。比如:对于一个规模为N的问题,若该问题可以容易地解决,则直接解决;否则将其分解为K个规模较小的子问题,这些子问题互相独立且与原问题性质相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解,这种算法设计策略叫做分治法。许多基础算法都运用了“分治”的思想,比如二分查找、快速排序等等。基于“分治”的思想,J.U.C在JDK1.7时引入了一套Fork/
2020-06-11 19:24:41 1783
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人