常用的分布式锁实现方式
分布式锁一般有三种实现方式:
- 基于数据库的唯一索引;
- 基于 Redis 的
NX
EX
参数; - 基于 ZooKeeper 的临时有序节点。
简单的 http 性能测试工具,记录一下使用方法。
brew install wrk
sudo apt-get install build-essential libssl-dev git -y
git clone https://github.com/wg/wrk.git wrk
cd wrk
sudo make
# move the executable to somewhere in your PATH, ex:
sudo cp wrk /usr/local/bin
sudo yum groupinstall 'Development Tools'
sudo yum install openssl-devel
sudo yum install git
git clone https://github.com/wg/wrk.git wrk
cd wrk
make
# move the executable to somewhere in your PATH
sudo cp wrk /somewhere/in/your/PATH
简单介绍一下Redis两种持久化策略RDB和AOF的区别。
一些简单的配置,比如端口号port
, 日志位置logfile
等基本配置可自行配置。
# Save the DB on disk:
# 设置sedis进行数据库镜像的频率。
# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)。
# 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)。
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)。
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
# 在进行镜像备份时,是否进行压缩。yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间。
rdbcompression yes
# 一个CRC64的校验就被放在了文件末尾,当存储或者加载rbd文件的时候会有一个10%左右的性能下降,为了达到性能的最大化,你可以关掉这个配置项。
rdbchecksum yes
# 快照的文件名
dbfilename dump.rdb
# 存放快照的目录
dir /var/lib/redis
在mbp笔记本上安装了iTerm2来替换自带的终端,简洁易用,让人一下子就喜欢上,但是使用iTerm2进行ssh连接时,空闲一段时间,连接就会断掉…… 下面就来介绍如何解决iTerm2短连的问题。
[阅读全文]当我写下这篇文章时,基本上进入离开上海的倒计时了。
13年4月份来到上海,转眼间就过去4年了。还记得第一次来到上海,感觉从乡村来到大城市,一切都是那么新鲜,第一次看到如此宽敞的马路,第一次做地铁,第一次看到如此多的高楼大厦,第一次看到如此多的人,感觉生活当如是。慢慢地自己的视野大了,也就习惯了。每天坐着公交、地铁,人如鱼潮,大家急匆匆地来往在上班回家的路上。这应该是大部分外来人的生活写照吧。
其实打心底里还是喜欢上海的,学习就业机会多,教育医疗资源多。但是来到这里,能够认识大家,其中有大学同学,公司交好的同事,这才是一生中最值得怀念的回忆。期间陆陆续续很多人离开,难免有些唏嘘和伤感。
决定去成都,离开上海有伤感,去成都也会有一些陌生感,需要一段时间去适应,但是更多的是期待。
就这样吧,最后,以后去成都玩耍的可以找我。
代理实现可以分为静态代理和动态代理, 下面使用jdk和cglib来分别说明。
具体实现:
public interface Subject {
void request();
}
class RealSubject implements Subject {
public void request(){
System.out.println("Call RealSubject");
}
}
class Proxy implements Subject {
private Subject subject;
public Proxy(Subject subject) {
this.subject = subject;
}
public void request() {
System.out.println("begin");
subject.request();
System.out.println("end");
}
}
public class ProxyTest {
public static void main(String args[]) {
RealSubject subject = new RealSubject();
Proxy p = new Proxy(subject);
p.request();
}
}
单例模式 (Singleton) 也叫单态模式,是设计模式中最为简单的一种模式。
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
这种写法 lazy loading 很明显, 但是致命的是在多线程不能正常工作。
[阅读全文]整理的一些常用的Git指令
echo "# comments" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:your_username/your_project.git
git push -u origin master
若仓库存在直接push
git remote add origin git@github.com:your_username/your_project.git
git push -u origin master
当有多个git账号的时候,比如一个github,用于自己进行一些开发活动,再来一个gitlab,一般是公司内部的git。这两者你的邮箱如果不同的话,就会涉及到一个问题,生成第二个git的key的时候会覆盖第一个的key,导致必然有一个用不了。
[阅读全文]万事开头难,第一次总是有更多的纪念意义。
经过几番折腾,花了一个周末的时间,在github pages上终于把自己的个人博客搭建好了。
本来9月13号我购买了一年的阿里云服务器,用Java搭建好了,结果因为购买服务器是国内的,备案一直没有弄下来,购买的域名也无法使用,也不能退,花的RMB就这样打水漂啦啦啦~
最近接触的东西挺多的,加上之前一直挺喜欢写点东西的,使用过各种第三方博客,但是很多没有坚持下来,不够纯粹,达不到自己想要的,所以才下定决心把个人博客弄起来,希望自己能够坚持下去,加油!