- 博客(33)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 Java 并发系列:重入锁死
Java 并发系列:重入锁死可重入锁,指的是线程可以重复获得它已经持有的锁。下面这个锁的实现是不可重入的:public class Lock{ private boolean isLocked = false; public synchronized void lock() throws InterruptedException{ w...
2018-07-16 14:42:11
400
原创 Java 并发系列:CAS机制
Java 并发系列:CAS机制在并发程序中,经常有“check and act”的场景:检查某个变量的值,然后再做相应的操作。例如获取锁的例子:class MyLock { private boolean locked = false; public boolean lock() { if(!locked) { locked ...
2018-07-16 12:18:13
579
1
原创 Java 并发系列:阿姆达尔定律
Java 并发系列:阿姆达尔定律阿姆达尔定律,给出定量的计算公式,计算CPU并行运算后的效率提升能力。定义:T = 串行执行总时间B = 不可并行执行的时间 T-B = 可并行执行的时间N = 线程或CPU的个数T(N) = 使用N个线程并行执行的总时间则:T(N) = B + (T(1)-B)/N 根据阿姆达尔定律,可以指导性能优化,分别对B,T-B进行优化。...
2018-07-16 11:54:19
614
原创 Golang中的闭包
闭包的概念闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)参考引用。我个人的理解,闭包就是把函数和变量捆绑打包。闭包是一个函数值,它引用了函数体之外的变量。 这个函数可以对这个引用的变量进行访问和赋值;换句话说这个函数被“绑定”在这个变量上。举例package mainimport "fmt"func adder() func(int) int { sum := 0
2016-04-20 16:46:12
1012
原创 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
2016-04-14 15:31:41
22356
6
原创 使用keepalived实现Redis双机热备、高可用
Redis高可用需求(1)Redis运行在docker容器中;(2)实现双机热备,当redis-master异常时,redis-slave快速切换成master提供服务。 (3)当redis-master数据更新时,redis-slave数据能同步更新。解决方案利用keepalived实现redis的高可用。keepalived利用shell脚本,定期检测redis服务是否正常。当redis服务异
2016-04-11 11:19:04
7281
原创 在ubuntu14.04上构建docker私有镜像库
构建docker私有镜像库环境准备Docker私有镜像库,分为服务端和客户端。服务端和客户端都要有docker环境。除此之外,服务端运行registry容器,完成镜像库的功能。客户端通过docekr pull、push等命令与服务端交互。环境说明如下表: 对象 版本 IP 备注 服务端 Ubuntu 14.04 192.168.142.128 在此主机上搭建镜像库
2016-03-18 18:14:01
1904
原创 在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
2016-03-18 18:09:27
12450
原创 《OpenResty Notes》2016年第02期
目录卷首语执行阶段概念WEB开发实战–HTTP服务中小企业安全体系构建之WAF实战基于OpenResty的百万级长连接推送Linux IO模式下Select、Poll、Epoll详解TCP&HTTP长连接微服务实战(一):微服务架构的优势与不足源文件链接:http://pan.baidu.com/s/1blxiY6
2016-03-04 16:26:29
635
原创 《OpenResty Notes》2016年第01期
过去的2015年,OpenResty发生了很多大事:首届OpenResty大会成功在北京举办,成立了专门的委员会,锤子手机向OpenResty软件基金会捐献奖金…这一件件振奋人心的消息背后,都有一群默默无闻为OpenResty技术的推广而努力的人们。作为一位OpenResty的粉丝及使用者,自己感谢OpenResty技术的贡献者为开源世界提供OpenResty这么优秀的作品,同时也琢磨着自己能为OpenResty的推
2016-01-02 14:57:57
595
原创 《Docker入门》:安装ubuntu14.04镜像
从dockerpool的源中pull镜像由于国内访问docker.io时网速较慢,从docker.com网站上拉取一个docker镜像一般会花费十多分钟。为了解决这个问题,我们从国内的dockerpool网站拉取ubuntu14.04的镜像。首先,添加CA认证, 这样我们接下来的拉取才能够顺利进行:sudo vi /etc/defaults/docker加入以下内容: DOCKER_OPTS=”
2015-12-12 00:44:14
11870
原创 数据库范式-表结构设计规范
数据库表结构设计有一套规范。设计出的表结构应尽量避免不必要地冗余,同时要确证灵活性。只需要遵守公认的范式,就可以达到较合理地设计效果。同时,这些范式也是评价一个数据库表结构设计是否合理的标准。
2015-11-29 23:20:36
1986
原创 基于Redis有序集合的终端在线推送解决方案
在我们的系统中,系统管理员关注所有终端的在线状态。因此,管理系统需要列出每个终端当前是否在线,最后心跳(在线)时间,以及当前系统中所有在线、离线终端数量。这是一个常见的需求。常见的方案是,终端定时给服务端发送心跳信息(例如每隔1分钟发一次心跳信息),服务端在数据库中维护一张终端在线状态表(t_client_status),该表包含终端(mid)、最后心跳时间(last_time)等信息。当管
2015-11-28 00:13:43
1343
原创 beanstalkd高可用方案:keepalived+rsync
本文描述一个beanstalkd高可用方案,实现beanstalkd的主备自动切换功能,当beanstalkd的master主机故障或者beanstalkd故障时,能自动切换到备机运行。
2015-11-26 14:26:02
3986
原创 《读书笔记》系列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来设置用户变量,用户变量可以在
2015-11-26 12:20:57
633
原创 《读书笔记》系列3:C++编程思想
第1章 对象导言极限编程先写测试XP革命性地改变了测试的概念,将它置于与 编码相等的优先地位。事实上,我们需要赢在编写被测试代码之前写测试额,而且这些测试时与代码永远在一起。这些测试必须在每次项目集成是都能成功执行。 先写测试有两个极其重要的作用: (1) 它强制好类的接口有清楚的定义; (2) 写测试的第二个重要作用,是在每次编译软件时运行这些测试。结对编程第3章 C++中的CMake的行为
2015-11-26 11:53:40
562
原创 《读书笔记》系列2:TCP/IP详解
第3章 IP:网际协议IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都已IP数据包格式传输。IP协议不能保证IP数据报能成功地到达目的地。IP仅提供尽力而为的服务。如果发生某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据包,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供。无连接表示IP并不维护任何关于后续数据报
2015-11-26 11:48:08
794
原创 《读书笔记》系列1:UNIX环境高级编程
第七章 进程环境Int main(int argc,char *argv[]);其中argc是命令行的数目,argv是指向参数的各个指针所构成的数组。当内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序将此启动例程指定为程序的起始地址—这是有链接器设置的,链接器由C编译器调用。启动例程从内核取得命令行参数和环境变量值,然后按上述方式调用main函数。 进程终止有8种方式,正常终
2015-11-26 11:20:31
599
原创 《一起学》系列8:网络编程
socket套接字阻塞IO/非阻塞IO同步IO/异步IOselectepoll信号SIGINTSIGHUBTCP协议三次握手/四次挥手状态迁移HTTP协议流量控制拥塞控制OpenSSL
2015-07-30 00:27:15
563
原创 《一起学》系列5:算法与数据结构
排序算法快速排序归并排序堆排序基数排序几个排序算法的比较查找算法二分查找缓存算法LRU数据结构单链表二叉树二叉搜索树栈哈希表红黑树动态规划贪心算法回溯NP最短路算法
2015-07-30 00:17:06
541
原创 《一起学》系列
目录C++语言细节C++面向对象C++对象模型编译链接过程算法与数据结构进程间通信进程、线程模型网络编程Linux内核Nginx、Redis详解
2015-07-29 23:41:55
649
AIX主机上zookeeper C API编译失败,求助
2015-03-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人