深入理解跳表及其在Redis中的应用
跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代平衡树的一种数据结构。本篇文章将对跳表的实现及在Redis中的应用进行学习。
Wesley13 Wesley13
4年前
ubuntu下使用ufw保护docker容器
docker会默认开启iptablesNAT规则,如果使用pport:port这种形式暴露端口是得不到ufw的防护的。因为ufw操作的实际上是filter规则链,并没有提供简单的操作nat链的方案。经过一番google之后,终于解决这个问题,现总结如下。两步走第一步,禁用docker操作iptables的功能
Wesley13 Wesley13
4年前
Java中的ThreadLocal功能演示
除了使用synchronized同步符号外,Java中的ThreadLocal是另一种实现线程安全的方法。在进行性能测试用例的编写过程中,比较简单的办法就是直接使用synchronized关键字,修饰对象、方法以及类。但是使用synchronized同步,这可能会影响应用程序的可伸缩性以及运行效率。但是如果要在多个
Wesley13 Wesley13
4年前
APP渠道:APP渠道归因的探索及一点思考
!(https://oscimg.oschina.net/oscnet/3b823d1a37ec21075a65979133517f356c5.jpg)APP渠道归因之痛APP分析与网站分析最大的不同之处在于:在网站端完成渠道归因那是轻松简单加愉快,但APP的渠道归因却是个巨大无比的坑。这个坑有多大呢?有专门做APP渠道归因的公司,做到被
Stella981 Stella981
4年前
Django admin应用开发(3) 批量操作
第三节adminActions3.1实现批量操作在Djangoadmin实现批量操作是比较简单的。第一步,定义一个回调函数,将在点击对象列表页面上的“执行”按钮时触发(从用户的角度来看的确如此,但在Django内部当然还需要一些检查操作,见下文详述)。它的形式如defaction\_handl
Easter79 Easter79
4年前
SpringCloud:Ribbon负载均衡
1.概述SpringCloudRibbon是基于NetflixRibbon实现的一套客户端       负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。
Wesley13 Wesley13
4年前
Java消息服务JMS详解
JMS:Java消息服务(JavaMessageService)JMS是用于访问企业消息系统的开发商中立的API。企业消息系统可以协助应用软件通过网络进行消息交互。JMS的编程过程很简单,概括为:应用程序A发送一条消息到消息服务器的某个目得地(Destination),然后消息服务器把消息转发给应用程序B。因为应
Wesley13 Wesley13
4年前
mq要如何处理消息丢失、重复消费?
如果要你实现一个支付宝向余额宝转账的功能,比如:账户a从支付宝转出5000余额宝转入5000,该怎么做呢?可能有些人会说,这还不简单,直接上图!(https://oscimg.oschina.net/oscnet/7d47d132357446109035157b25361ec7.png)支付宝先给账户a减5000,调用余额
Wesley13 Wesley13
4年前
Java系统架构
如果你所在的公司/团队还没有应用监控基础设施,如何让系统在上线后及时知道发生了问题?其中一个非常简单的方案就是对日志进行实时扫描监控.怎么做?不管你用的是什么框架,你的日志库应该可以设置日志级别.将日志级别打印在日志行的最开始.例如:ERRORxxxWARNxxx
Stella981 Stella981
4年前
Linux集群架构
一、集群介绍集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。集群的特点:高性能(Performance)、价格有效(Costeffectiveness)、可伸缩性(Scalability)、高可用性(Ava