如何设置Redis Hash结构中field的过期时间 1.背景不知道大家有没有用Redis的Hash数据结构来缓存一种类的多个不同对象实体的经历,把不同对象的ID作为Hash的field,对象的JSON序列化字符串作为value。如果这个Hash里面的对象太多,且有部分对象过了一定时间后就不会再被访问到,这个时候我们是不是会想到要给其中某些field(后面暂且称之为子元素吧)给设置过期时间,不然的话,如果Hash里面的对象数量一直增长,将会造成Red 2022-03-14 技术分享 #Redis
如何查询日志中有多少个IP登录 “如何查询日志中有多少个IP登录?”,这是我之前面试百度实习生被问到的问题,当时因为没有什么经验也答得不好。因为最近经常有碰到类似的需求,所以令我又想起了这个问题。 如果IP在日志中的一行出现的位置是这样的: 1"time":"2021-08-16T18:28:02.187","ip":"127.0.0.1" 如果只 2021-08-16 技术分享 #Linux #面试题
1小时 -> 8秒! 最近优化了一个需求,从原来的1小时到现在的只需要8秒! 因为数据在两个表,需要查询两次,然后合并两个集合的不同数据,于是有了这个需求。 一开始想到的方法是遍历小集合的每一个元素,然后在大集合中删除和当前小集合的元素中相同id的元素。用到了removeIf方法,但是执行下来发现1百多万的数据操作用了1个小时,这是无法忍受的。本想着也就是一个for循环啊,怎么会这么慢,于是查看了一下List的remo 2020-11-19 技术分享 #性能优化
Java serialVersionUID 有什么作用? 我们都知道对象要序列化和反序列化要实现Serializable接口,但是仅仅知道这一点似乎还少了一点,那就是serialVersionUID要不要声明。 有时候我们似乎不声明serialVersionUID也不会报错,但是有时候又会莫名其妙的收到InvalidClassException错误。似乎我们有必要来了解一下serialVersionUID的作用到底是什么了。 在没有显示声明serialV 2020-10-09 技术分享
怎么合并一个实例的两个不同对象 在工作过程中,我们可能会遇到这么一个需求,就是对于同一个类的两个不同对象(就是不为空的属性各不同)怎么合并他们成一个对象,并且包含他们两个的所有属性。 因为要获取一个对象的所有属性,我们自然想到要用反射,于是就有了下面的代码: 123456789101112131415161718192021222324252627public static <T> T combineSydwCore 2020-09-28 技术分享
关于freeswitch听不到客户端声音的那些事 在初次使用freeswitch的过程中,经常会碰到听不见对方声音的问题。产生这种问题的根本原因还是因为NAT穿越的问题。如果freeswitch和客户端在一个网络上是不会出现这个问题的,主要还是因为freeswitch和客户端一个在内网中,一个在公网中。客户端和freeswitch通信是通过路由器的NAT穿越完成。比如说freeswitch是部署在公网的一台服务器上,而客户端是安装在用户的内网的一 2020-08-23 技术分享
我们的劳动究竟创造了多少价值 我们劳动创造的价值怎么去衡量?这是最近我在思考的一个问题。因为工作久了就会思考工作的意义到底是什么,人毕竟是一种需要意义才能存活的生物嘛。 在写这篇文章之前,我一直认为劳动创造的价值是不是就是直接或者间接和大自然交换所产生的价值,比如开采石油的企业就创造了价值,农民种植农作物也是创造了价值,但是等我写完这篇文章,我发现这只是表面现象,真正的本质还不是这些。 要讨论劳动创造的价值,那么我们得从人类的 2020-08-16 人生哲学
如何删除Redis Hash数据结构中的子键呢? Redis可以设置某个键的过期时间这个我们都知道,可是你知道怎么过期删除Hash键中某个子键吗? Redis中可没有直接提供这样设置Hash键的子键的过期方法,但是我们可以自己用Redis实现这个需求。 这里我们需要借用Redis中另外一个数据结构,那就是ZSET。我们在往Hash键中增加一个子键的时候,同时把该子键将要过期的时间戳当做score放进一个ZSET数据结构的键中,在用一个定时任务去定 2020-07-22 技术分享
如何减少重复日志 在实际项目中,你可能会遇到被大量重复日志刷屏的苦恼,这种短时间内重复的日志不仅浪费服务器内存,而且影响你看其他日志。那么你可能会想,有没有一种方法能够让我既打印出这些日志,但又不想重复日志太多的方法。最近我就遇到了这种需求,有些日志不能不打,不然出了问题回过头来发现没有日志也不好定位问题,但是有时候因为定时任务的原因,这种日志又比较多,于是我就想着怎么去减少这种重复的日志。 最朴素的想法就是给重复 2020-07-22 技术分享
volatile为什么能禁止指令重排 在回答题目之前我们先来思考这样一个问题,就是指令重排是什么,我们为什么又要禁止它,以及在什么时候要禁止指令重排? 我们都知道,像Java等高级语言最后都要被编译器转换为机器语言,或者称作机器指令,以便能被机器直接执行。所以,我们编写的程序最后都是一条条机器指令,从而能被CPU执行。在计算机组成原理这门课中,我们知道,这些指令被放在指令寄存器中,由程序计数器PC去指示CPU下一条该执行那条指令。CP 2020-07-05 技术分享