travis-ci自动编译github page
使用travis-ci自动更新github page配置github pages仓库master分支为github pages发布分支。
blog-source分支为blog源文件分支。
blog使用gor引擎gor使用
linux下编译gor生成gor可执行二进制文件。
配置travis-ci参考:
手把手教你使用Travis CI自动部署你的Hexo博客到Github上
.travis.yml文件配置如下:1language: bash
env:
global:
- GH_REF: github.com/sakyawang/sakyawang.github.com.git
branches:
only:
- blog-source
script:
chmod +x gor
./gor compile
after_script:
cp -rf CNAME ./compiled
cd compiled
git init
git config user.name “user@gma ...
面向对象设计基本原则
面向对象设计原则SOLID参考:
https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
http://www.cnblogs.com/hellojava/archive/2013/03/18/2966684.html
1. S – Single Responsibility Principle 职责单一原则
对象应该仅具有一种单一功能。概念上和unix的设计原则 “Do one thing and do it well”很相似。听起来很简单但是实践起来很难。
比如,现在有一些图形要计算所有图形的面积。
12345678910111213141516171819202122232425class Circle { private double radius; public Circle Circle(double radius) { this.radius = radius; } private ...
基于jdk序列化和tcp的rpc调用
基于jdk序列化和tcp的rpc调用RPC调用图
1、2和服务注册未实现
文件说明AbstractService 抽象服务类
RpcRequest 服务请求对象
RpcResponse 服务返回结果对象
RpcClient rpc客户端
RpcServer rpc服务端
UserService 用户服务
User 用户对象
UserParam 用户参数对象
代码展示
AbstractService
public abstract class AbstractService<T extends RpcRequest, F extends RpcResponse> implements Serializable {
public abstract F execute(T request);
}
RpcRequest
public class RpcRequest<T extends Serializable> implements S ...
Centos7 安装配置elasticsearch-head
Centos7 安装配置elasticsearch-head安装nodejs
配置yum源
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
安装nodejs和npm
yum install -y nodejs
配置淘宝npm镜像
通过config命令
npm config set registry https://registry.npm.taobao.org
npm info underscore (如果上面配置正确这个命令会有字符串response)
命令行指定
npm --registry https://registry.npm.taobao.org info underscore
编辑 ~/.npmrc 加入下面内容
registry = https://registry.npm.taobao.org
安装phantomjs(elasticsearch-head依赖)
下载
安装配置 tar xvf phantomjs-2.1.1-linux- ...
nexnus搭建maven私服配置导包
nexnus搭建maven私服配置导包安装配置
下载安装包
sudo wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.3.1-01-unix.tar.gz
安装运行
tar zxvf nexus-3.3.1-01-unix.tar.gz
cd nexus-3.3.1-01/
nohup ./nexus run
maven setting.xml配置
<servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
pom.xml配置
<repositories>
...
entos7 下yum安装nginx并配置开机启动
centos7下yum安装nginx并配置开机启动
新增yum源
/etc/yum.repo.d下新建nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
安装
sudo yum install nginx
配置
官网配置
vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.c ...
centos7 lvs扩容
centos7 lvs扩容
创建新分区
fdisk -l //查看可用硬盘(如:sda)
fdisk /dev/sda
n //新增分区
w //保存操作
修改分区格式为lvm
fdisk /dev/sda
t //修改分区类型
L //显示分区类型表
8e //修改分区类型为lvm
w //保存修改
创建物理卷
pvcreate /dev/sda3 //创建物理卷sda3,最好重启一下
centos卷组扩展
pvs //查看物理卷列表
vgs //查看卷组列表
vgextend centos /dev/sda3 //centos卷组追加/dev/sda3物理卷
逻辑卷扩展
lvs / ...
阿里巴巴java开发手册
根据阿里巴巴java开发手册.pdf转化。
一、编程规约(一) 命名规约
【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例: _name / _name / $Object / name / name$ / Object$
【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。
反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
正例: alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / BO / DTO / VO 等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:ma ...
java代理
(1)Proxy 毕竟是通过反射实现的,必须在效率上付出代价:有实验数据表明,调用反射比一般的函数开销至少要大 10 倍。而且,从程序实现上可以看出,对 proxy class 的所有方法调用都要通过使用反射的 invoke 方法。因此,对于性能关键的应用,使用 proxy class 是需要精心考虑的,以避免反射成为整个应用的瓶颈。
(2)CGLib封装了asm,可以再运行期动态生成新的class。ASM 能够通过改造既有类,直接生成需要的代码。增强的代码是硬编码在新生成的类文件内部的,没有反射带来性能上的付出。同时,ASM 与 Proxy 编程不同,不需要为增强代码而新定义一个接口,生成的代码可以覆盖原来的类,或者是原始类的子类。
(3)CGLib在不同频次的调用性能会发生变化,体现为调用频次越高、性能越好。
(4)不同版本的JDK中JDK Proxy的性能也不尽相同,越高版本的JDK(JDK7及以上),性能提升越明显。
设计模式解读之一: 策略模式
转自:http://www.javaeye.com/topic/328262
当我们掌握了Java的语法,当我们了解了面向对象的封装、继承、多态等特性,当我们可以用Swing、Servlet、JSP技术构建桌面以及Web应用,不意味着我们可以写出面向对象的程序,不意味着我们可以很好的实现代码复用,弹性维护,不意味着我们可以实现在维护、扩展基础上的代码复用。
一把刀,可以使你制敌于无形而于江湖扬名,也可以只是一把利刃而使你切菜平静。Java,就是这把刀,它的威力取决于你使用的方式。当我们陷入无尽无止重复代码的泥沼,当我们面临牵一发而动全身的维护恶梦, 你应该想起“设计模式”这个行动秘笈。
面向对象的精义,看似平淡,其实要经过艰苦实践才能成功。而构造OO系统的隐含经验于是被前人搜集而成并冠以“设计模式”之名。我们应该在编码行动初始就携带以它。接下来,让我们步“四人组”先行者之后,用中国文字、用实际案例领略模式于我们代码焕然一新的改变。
设计模式解读之一: 策略模式1. 模式定义
把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分;
2. 问题缘起
...