搭建本地git服务器

Submitted by Lizhe on Thu, 07/20/2017 - 11:46

其实下载编译完全可以使用yum

参考一下创建文件夹和用户就可以了

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

yum install gcc perl-ExtUtils-MakeMaker

wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz

tar -zvxf git-2.10.0.tar.gz

cd git-2.10.0

make all prefix=/usr/local/git

make install prefix=/usr/local/git

echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

source /etc/bashrc

git --version

useradd -m gituser

passwd gituser

mkdir -p /data/repositories

free命令的available

Submitted by Lizhe on Thu, 07/20/2017 - 10:27

3.14内核新增了一个内存信息MemAvailable , 当调用free命令时可以显示为available

之前没留意过

[root@VM_167_46_centos etc]# free -h
                         total         used             free      shared     buff/cache      available
Mem:           993M        253M        334M         39M               405M             556M
Swap:           2.0G          82M             1.9G

我们知道used + free + buff 基本等于 total

used是被使用的

free是完全没有被使用的

shared是被程序之间可以(已经被)共享使用的

buffers是指用来给块设备做的缓冲大小,它只记录文件系统的metadata以及 tracking in-flight pages

cached是用来给文件做缓冲

Java 编码安全 (1) 如何比较数组

Submitted by Lizhe on Wed, 07/19/2017 - 12:07

先看下面的代码

int[] a = new int[10];
 int[] b = new int[10];
        
System.out.println(a==b);

上面代码会直接打印出 false , 正常来讲初始化的int数组值应该都是0 , 那为什么两个数组不相等呢

rootcause在于, 数组并不会重写Object.equals() 方法, 而原始的equals方法比较的是引用

两个数组的引用不同, 自然结果是false 

正确的做法应该是使用Arrays.equals(a,b)

import java.util.Arrays;

关于"在用户设定的时间发送邮件"的功能设计

Submitted by Lizhe on Mon, 07/17/2017 - 17:23

这个问题其实还是Brian问的, 他真的去做那个 "拍卖系统" 了

这个拍卖系统有一个需求是  " 假设用户设定的拍卖开始时间是2017年1月1日中午12点, 那么系统需要在拍卖会开始之前半个小时给参与的bidder们发送提醒邮件"

这个功能看起来貌似很简单, 不过仔细想起来以前好像还真没碰到类似的

1. 发送邮件的job触发一次之后, 就会被移除 ( 不像springbatch或者crontab那种定时器触发, 要触发好多次)

2. job的数量不固定, 以前做的job都是程序员设定的, 不会由用户创建, 所以如果job数量特别大,可能会出问题

3. job的触发时间是用户设定的, 如果同一时间有大量job需要触发, 而且如果邮件发送特别慢的话,也可能会出问题

 

下面给出两个解决方案

  • 使用atd服务实现
  • 使用redis+rabbitmq写代码实现

总的来说各有利弊, 下面请看详细

 


第一种, 使用atd服务实现

安装atd服务
yum -y install at

centos7+openstack (5) neutron配置

Submitted by Lizhe on Sat, 07/15/2017 - 23:41

 

开始之前我建议你先关闭SELinux

 

临时关闭SELinux
setenforce 0

临时打开SELinux
setenforce 1

开机关闭SELinux
编辑/etc/selinux/config文件,将SELINUX的值设置为disabled

查看SELinux状态
执行getenforce命令

 

修改/etc/neutron/neutron.conf 文件

 

cat /etc/neutron/neutron.conf|grep -v "^#"|grep -v "^$"