Java 并发系列:重入锁死 Java 并发系列:重入锁死可重入锁,指的是线程可以重复获得它已经持有的锁。下面这个锁的实现是不可重入的:public class Lock{ private boolean isLocked = false; public synchronized void lock() throws InterruptedException{ w...
Java 并发系列:CAS机制 Java 并发系列:CAS机制在并发程序中,经常有“check and act”的场景:检查某个变量的值,然后再做相应的操作。例如获取锁的例子:class MyLock { private boolean locked = false; public boolean lock() { if(!locked) { locked ...
Java 并发系列:阿姆达尔定律 Java 并发系列:阿姆达尔定律阿姆达尔定律,给出定量的计算公式,计算CPU并行运算后的效率提升能力。定义:T = 串行执行总时间B = 不可并行执行的时间 T-B = 可并行执行的时间N = 线程或CPU的个数T(N) = 使用N个线程并行执行的总时间则:T(N) = B + (T(1)-B)/N 根据阿姆达尔定律,可以指导性能优化,分别对B,T-B进行优化。...
Golang中的闭包 闭包的概念闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)参考引用。我个人的理解,闭包就是把函数和变量捆绑打包。闭包是一个函数值,它引用了函数体之外的变量。 这个函数可以对这个引用的变量进行访问和赋值;换句话说这个函数被“绑定”在这个变量上。举例package mainimport "fmt"func adder() func(int) int { sum := 0
postgresql双机热备、高可用方案(采用pacemaker+corosync实现) PostgreSQL高可用环境说明操作系统centos7:[root@10 ~]# cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core)[root@10 ~]# uname -aLinux 10.16.93.179 3.10.0-327.10.1.el7.x86_64 #1 SMP Tue Feb 16 17:03:50 U
使用keepalived实现Redis双机热备、高可用 Redis高可用需求(1)Redis运行在docker容器中;(2)实现双机热备,当redis-master异常时,redis-slave快速切换成master提供服务。 (3)当redis-master数据更新时,redis-slave数据能同步更新。解决方案利用keepalived实现redis的高可用。keepalived利用shell脚本,定期检测redis服务是否正常。当redis服务异
在ubuntu14.04上构建docker私有镜像库 构建docker私有镜像库环境准备Docker私有镜像库,分为服务端和客户端。服务端和客户端都要有docker环境。除此之外,服务端运行registry容器,完成镜像库的功能。客户端通过docekr pull、push等命令与服务端交互。环境说明如下表: 对象 版本 IP 备注 服务端 Ubuntu 14.04 192.168.142.128 在此主机上搭建镜像库
在centos7上部署kubernetes 部署kubernetes环境准备K8S 分为 master 和 slave 两类角色。环境说明如下表: 对象 版本 IP 备注 k8s-master centos7 XX.XX.XX.179 K8S的master所在主机 etcd-server centos7 XX.XX.XX.179 etcd服务所在主机,与master在同一机器 k8s-slav
《OpenResty Notes》2016年第02期 目录卷首语执行阶段概念WEB开发实战–HTTP服务中小企业安全体系构建之WAF实战基于OpenResty的百万级长连接推送Linux IO模式下Select、Poll、Epoll详解TCP&HTTP长连接微服务实战(一):微服务架构的优势与不足源文件链接:http://pan.baidu.com/s/1blxiY6
《OpenResty Notes》2016年第01期 过去的2015年,OpenResty发生了很多大事:首届OpenResty大会成功在北京举办,成立了专门的委员会,锤子手机向OpenResty软件基金会捐献奖金…这一件件振奋人心的消息背后,都有一群默默无闻为OpenResty技术的推广而努力的人们。作为一位OpenResty的粉丝及使用者,自己感谢OpenResty技术的贡献者为开源世界提供OpenResty这么优秀的作品,同时也琢磨着自己能为OpenResty的推
《Docker入门》:安装ubuntu14.04镜像 从dockerpool的源中pull镜像由于国内访问docker.io时网速较慢,从docker.com网站上拉取一个docker镜像一般会花费十多分钟。为了解决这个问题,我们从国内的dockerpool网站拉取ubuntu14.04的镜像。首先,添加CA认证, 这样我们接下来的拉取才能够顺利进行:sudo vi /etc/defaults/docker加入以下内容: DOCKER_OPTS=”
数据库范式-表结构设计规范 数据库表结构设计有一套规范。设计出的表结构应尽量避免不必要地冗余,同时要确证灵活性。只需要遵守公认的范式,就可以达到较合理地设计效果。同时,这些范式也是评价一个数据库表结构设计是否合理的标准。
基于Redis有序集合的终端在线推送解决方案 在我们的系统中,系统管理员关注所有终端的在线状态。因此,管理系统需要列出每个终端当前是否在线,最后心跳(在线)时间,以及当前系统中所有在线、离线终端数量。这是一个常见的需求。常见的方案是,终端定时给服务端发送心跳信息(例如每隔1分钟发一次心跳信息),服务端在数据库中维护一张终端在线状态表(t_client_status),该表包含终端(mid)、最后心跳时间(last_time)等信息。当管
beanstalkd高可用方案:keepalived+rsync 本文描述一个beanstalkd高可用方案,实现beanstalkd的主备自动切换功能,当beanstalkd的master主机故障或者beanstalkd故障时,能自动切换到备机运行。
《读书笔记》系列4:MySQL开发者SQL权威指南 第五章 select常用元素(1) 使用select A as B 时,B可以出现在select语句的其他子句中,除了From和Where子句之外。即select A as B from C where B…是错误的,只能只用select A as B from C where A…。原因是B这个列名并不属于这个表,只是在select语句块的结果。 (2) 使用SET来设置用户变量,用户变量可以在
《读书笔记》系列3:C++编程思想 第1章 对象导言极限编程先写测试XP革命性地改变了测试的概念,将它置于与 编码相等的优先地位。事实上,我们需要赢在编写被测试代码之前写测试额,而且这些测试时与代码永远在一起。这些测试必须在每次项目集成是都能成功执行。 先写测试有两个极其重要的作用: (1) 它强制好类的接口有清楚的定义; (2) 写测试的第二个重要作用,是在每次编译软件时运行这些测试。结对编程第3章 C++中的CMake的行为
《读书笔记》系列2:TCP/IP详解 第3章 IP:网际协议IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都已IP数据包格式传输。IP协议不能保证IP数据报能成功地到达目的地。IP仅提供尽力而为的服务。如果发生某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据包,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供。无连接表示IP并不维护任何关于后续数据报