CE递归遍历主界面控件 结果: TMainForm:MainForm -TSplitter:Splitter1 -TPanel:Panel1 --TAddresslist: TTreeviewWithScroll: THeaderControl: -TPanel:Panel4 --TLabel:La ...
分类:
其他好文 时间:
2018-06-21 23:38:54
阅读次数:
556
在分布式系统中,之前单一的用synchronized或lock已经不适用了。分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本博客讨论为第二种 代码实现 现象:模拟多个线程去运算同一个数据 可以发现数据计算是不规则的 输出值为混 ...
分类:
其他好文 时间:
2018-06-19 13:59:52
阅读次数:
186
业务背景:存储请求参数token ,token唯一 ,且新的生成旧的失效 思路:因为是多台机器,获取token存入redis,保持唯一,考虑使用redis来加锁,其实就是在redis中存一个key,其他机器发现key有值的话就不进行获取token的请求。 SET操作会覆盖原有值,SETEX虽然可设置 ...
分类:
其他好文 时间:
2018-06-16 21:44:57
阅读次数:
731
Redis+lua进行类似秒杀的实现由于项目需要,需要多线程去获取和修改数据库的库存,考虑到给数据库加锁效率低,所以采用redis+lua来进行实现。redis的单线程操作特性来执行lua脚本,通过lua脚本来保证原子性。如果通过单纯的redis指令来进行更改,在读和写之间会存在多线程并发更新的问题。1.首先定义redis数据结构goodId:{"total":100,"released":0;}
分类:
其他好文 时间:
2018-06-11 13:43:49
阅读次数:
148
"gtihub" 实现方法 代码构成:主函数,加上类电梯,加上结构体乘客,加上lua脚本3个。 基本思路: 运行前: 输入数据。 启动lua虚拟机。 运行时: 检查请求:检查有没有新的请求,有则放入总请求向量中。 同步:将新的请求同步到每个电梯的请求向量中,并判断是否可以前往该请求楼层,标记不能前往 ...
分类:
其他好文 时间:
2018-05-13 10:41:55
阅读次数:
110
分布式锁在多实例部署,分布式系统中经常会使用到,这是因为基于jvm的锁无法满足多实例中锁的需求,本篇将讲下redis如何通过Lua脚本实现分布式锁,不同于网上的redission,完全是手动实现的 我们先来看一个无锁的情况下会导致什么问题: 这是一个普通的更新用户年龄的功能,各层代码如下,访问con ...
分类:
其他好文 时间:
2018-05-06 12:13:48
阅读次数:
128
本文节选自《可伸缩服务架构:框架与中间件》 第四章《缓存的本质和缓存使用的优秀实践》。 4 分布式缓存的通用方法 笔者所在的多家互联网公司大量使用了缓存,对分布式缓存的应用可谓遍地开花,笔者曾供职的一家社交媒体网站,号称是世界上使用缓存最多的公司。毋庸置疑,缓存帮助我们解决了很多性能问题,甚至帮助我 ...
分类:
其他好文 时间:
2018-05-03 19:42:06
阅读次数:
195
Suricata是一个免费的开源,成熟,快速和强大的网络威胁检测引擎。Suricata引擎能够实时入侵检测(IDS),联机入侵防御(IPS),网络安全监控(NSM)和离线pcap处理。Suricata使用功能强大且广泛的规则和签名语言检查网络流量,并具有强大的Lua脚本支持来检测复杂的威胁。
分类:
其他好文 时间:
2018-04-23 11:11:56
阅读次数:
1107
编写LUA脚本 该脚本功能:先检查redis中某个key的值是否与期望的值V1一致,如果一致则将其修改为新的值V2并返回true,否则返回false。其实就是CAS。 注意,lua脚本中的变量都要是local 的,不可以是全局变量。否则会报错。详见 http://doc.redisfans.com/ ...
分类:
编程语言 时间:
2018-04-14 11:19:10
阅读次数:
317
在实际工作过程中,可以使用lua脚本来解决一些需要保证原子性的问题,而且lua脚本可以缓存在redis服务器上,势必会增加性能。 不过lua也会有很多限制,在使用的时候要注意。 在Redis中执行Lua脚本有两种方法:eval和evalsha eval 其中: <1> script:你的lua脚本 ...
分类:
其他好文 时间:
2018-04-14 11:10:48
阅读次数:
533