Mustache使用

Mustache

链接: http://www.cnblogs.com/yaozhenfa/p/js_mustache.html

手册文档: http://mustache.github.io/mustache.5.html

github地址: http://mustache.github.io/

设计模式总结

设计模式原则

  1. 第一个原则:找出应用中可能需要改变之处,把它们独立出来,不要和那些不需要改变的代码混在一起;
  2. 第二个原则:针对接口编程,而不是针对实现编程;
  3. 原则三:多用组合,少用继承;
  4. 原则四:为交互对象之间的松耦合设计而努力;

设计模式

  1. 策略模式(Strategy pattern):定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户; 【可以把每组的行为想象成一个算法族,然后以组合方式,一个Character角色可以“有一个”weaponBehavior”行为,行为就是一组算法族】
  2. 观察者模式(Observer):定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有用依赖者都会收到通知并自动更新;出版者+订阅者=观察者模式; 【使用Java内置的观察者模式,Obervable可观察的,Observer观察者】 【后续】

重构方法总结

  1. 重构之前必须要有一套可靠的测试机制
  2. 某类的方法内应该有来自该类的信息,否则就是放错了地方;
  3. 执行结果不会再任何改变,运用replace Temp with Query()
  4. 运用Extract Method()重构方法
  5. State模式【Gang of Four】 State模式或者Strategy模式
  6. 尽量将不稳定的变化造成的影响降低到最小;只在有变化的类里面操作;
  7. Extract Method, Move Method, Replace Conditional with Polymorphism, Self Encapsulate Field, Replace Type Code with State/Strategy.
  8. 重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察的前提下,提高其理解性,降低其修改成本;
  9. 重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构;
  10. 三次准则:第一次做某件事时只管去做;第二次做类似的事情会产生反感,但无论如何还是可以去做;第三次再做类似的事,你就应该重构。【事不过三,三则重构】
  11. 构造函数:Replace Temp with Query(以查询取代临时变量)

keepalived安装和配置

#keepalived安装和配置 ## 安装 bash [root@node1 ~]# wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz [root@node1 ~]# tar zxvf keepalived-1.2.13.tar.gz [root@node1 keepalived-1.2.13]# cd keepalived-1.2.13 [root@node1 keepalived-1.2.13]# ./configure --prefix=/usr/local/keepalived --disable-fwmark [root@node1 keepalived-1.2.13]# make [root@node1 keepalived-1.2.13]# make install [root@node1 keepalived-1.2.13]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ [root@node1 keepalived-1.2.13]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ [root@node1 keepalived-1.2.13]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ [root@node1 keepalived-1.2.13]# cd /etc/init.d/ [root@node1 init.d]# chkconfig --add keepalived [root@node1 init.d]# chkconfig keepalived on [root@node1 init.d]# mkdir -p /etc/keepalived [root@node1 init.d]# vim /etc/keepalived/keepalived.conf

twemproxy代理redis和memcached

简介

twemproxy,是一个轻量级的管理cache集群的,主要服务对象是memcached集群和redis集群。github网站在: twemproxy

安装步骤

			apt-get install automake
			apt-get install libtool
			git clone git://github.com/twitter/twemproxy.git
			cd twemproxy
			autoreconf -fvi
			./configure --enable-debug=log
			make
			src/nutcracker -h
  • 备注:如果提示automake、autoconf、libtool版本过低,并且没有网络的情况的,请自行下载最高版本的:
  • http://mirrors.ustc.edu.cn/gnu/
  • 执行三部曲:./configure && make && make install 即可
  • 如果提示被占用:请输入: src/nutcracker -s [端口]

  • redis相关配置资料:redis单机多实例、主从配置

配置

修改配置文件nutcracker.yml vim ./conf/nutcracker.yml

redis1:
  listen: 0.0.0.0:9999 #使用哪个端口启动Twemproxy
  redis: true #是否是Redis的proxy
  hash: fnv1a_64 #指定具体的hash函数
  distribution: ketama #具体的hash算法
  auto_eject_hosts: true #是否在结点无法响应的时候临时摘除结点
  timeout: 400 #超时时间(毫秒)
  server_retry_timeout: 2000000 #重试的时间(毫秒)
  server_failure_limit: 0 #结点故障多少次就算摘除掉
  servers: #下面表示所有的Redis节点(IP:端口号:权重)
		   - 127.0.0.1:6379:1
		   - 127.0.0.1:6380:1
		   - 127.0.0.1:6381:1
		   - 127.0.0.1:6382:1
  • 备注:如果需要twemproxy自动摘除异常redis节点,则需要配置server_retry_timeout一个超大数值,并且设置server_failure_limit为0;
  • 启动twemproxy,为了方便调试,可以新建一个nutcracker.backup.yml

              cp conf/nutcracker.yml conf/nutcracker.backup.yml
              ./src/nutcracker -c /opt/module/twenproxy/conf/nutcracker.backup.yml
    
  • 客户端连接redis1:

              redis-cli -h 127.0.0.1 -p 9999
              set key1 name1
              set key2 name2
              get key1
              get key2
    

以上是twenproxy安装配置与测试连接

故障节点自动摘除测试

  • 第一步,打开两个窗口,窗口1输入: > redis-cli -h 127.0.0.1 -p 9999 > set key1 name1 > set key2 name2

  • 第二步,打开窗口2输入: > redis-cli -h 127.0.0.1 -p 6379 > get key1 > “name1” (返回name1)
  • 第三步,现在需要将redis 6379关闭: > ps -aux | grep redis #找到redis 6379的进程号 > kill -9 进程号

  • 现在重复第一步、然后重复第二步,这个时候服务连接成功,就窗口2中需要连接6380端口的redis > redis-cli -h 127.0.0.1 -p 6380 > get key1 > “name1” (返回name1)

  • 自动摘除异常redis成功;

优点

这是一个轻量级的 Redis和memcached代理。使用它可以减少缓存服务器的连接数,并且利用它来作分片。这个代理的速度是相当快的,明月在网上查到会有20%的性 能损耗,但明月用redis-benchmark做了测试,发现性能几乎是无损的,甚至有时更快。后来找到英文原文,作者是说最差情况下,性能损耗不会多 于20%。明月觉得这个很了不起,按道理说,有了一层代理,怎么说都得折损一部分性能,但是他切能使得访问更快。看了源码,原来是用了pipeline. 首先redis是支持使用pipeline批处理的。twemproxy与每个redis服务器都会建立一个连接,每个连接实现了两个FIFO的队列,通 过这两个队列实现对redis的pipeline访问。将多个客户端的访问合并到一个连接,这样既减少了redis服务器的连接数,又提高了访问性能。 # 缺点 虽然可以动态移除节点,但该移除节点的数据就丢失了。 redis集群动态增加节点的时候,twemproxy不会对已有数据做重分布.maillist里面作者说这个需要自己写个脚本实现 性能上的损耗

使用fullpage.js和animate.css打造全屏滚动网站

简介

如今我们经常看到很多大型网站,比如QQ浏览器、网易邮箱、百度史记、小米饮水机等,都是采用几幅很大的图片作为背景,然后再添加一些简单的内容,显得格外高大上;于是乎便找到了全屏滚动插件fullpage.js,效果非常好!再配合上animate.css动画就非常完美啦。 fullpage.jpg

前话

 做为程序员的我,其实并不浪漫,但一直想给女朋友一份独特的礼物,于是想到做一个浪漫网站可以永远记住我们之间的爱情;爱真的就是很疯狂的,爱会让人充满了无限能量;从开始的点点滴滴生活记录、到我们在一起的相片搜集筛选、到图片美工处理、到网站搭建技术熟悉、最后到手机移动端的适配;花了我整整4-5天的时间、每天晚上下班回来都会做到2-3点,想到心中的她看到我给她制作的网站,脸上绽放开心的笑容时,我就没有丝毫困意;这或许真的就是爱情的力量吧!O(∩_∩)O