songxu 发布的文章

go语言致命的bug

通常运算符的优先级大体是算术>关系>逻辑>赋值,但按位取与运算符本应划为算术运算符,但c语言应该把它划为逻辑运算符,导致按位取与运算符的优先级低于关系运算符,这是很多c语言初学者最容易犯的错误,但go语言又一反常态,把按位取与运算符划为算术运算符,导致按位取与运算符的优先级高于关系运算符,因为大部分语言的运算符优先级都是参照c语言的,导致很多从其它语言转向go语言的程序员在写go程序时,尤其不喜欢加括号爱装逼的,很容易犯这样一个致命错误!

由马路边故意放置一块尖锐大石头引发我对社会深刻地批判

在中国经济最发达的城市上海,依然存在很多低素质现象!早上骑电车赶地铁,结果在平坦的马路中间出现一块尖锐的大石头,试想这块石头是无意掉落还是有意为之,很显然无意掉落的概率几乎为零。其实在上海,每天都会发生类似这样低素质行为,试想在全国其它地区包括首都在内都无一例外,更别说其它地区了,所以为什么很多新兴企业发展不起来,无人零售店很快无人问津,AI公司被国外收购,究其原因还是国民素质普遍低下,高科技的发展是需要国民素质作为根基的。现代城市看似高楼林立、车水马龙、灯红酒绿,但推动城市向前发展的根基和动力(国民素质、核心技术)一直就没有本质上的提升!为什么作为二战的战败国日本发展如此迅速,而作为战胜国的中国发展却如此缓慢,虽然我对日本的侵华战争深深的痛恶,但还是不得不承认日本在很多方面都领先中国的客观事实,我早在5年前去过一趟日本,感觉自己一直被新闻媒体给误导了,因侵华战争而迁怒所有的日本人,但事实上我在日本的一个多星期,并没有感觉到日本人对中国人多么的排外,虽然日本人口密度高,节奏比中国一线城市还要高很多,但很少遇到乱挤不排队的现象,如果遇到了,那你可能是遇到中国的旅游团了,让我印象最深的就是日本的环境,日本几乎所有的地方都是可以随便坐下来而不用担心有灰尘,所有的水龙头的水包括室内和室外都是可以饮用的而不用担心喝了会拉肚子。说到这,很多人认为我有点崇洋媚外,但事实永远胜于雄辩,当你去过一趟日本或德国这样的国家,然后在回到中国时,那种反差不用我说你内心都会有深刻地体会!所以中国想快速发展赶超发达国家,若国民素质一直提升不了,核心技术自己研制不出来,那就是自欺欺人、痴人说梦!

golang 源码编译安装

在version<=1.4,golang的所有组件都是用c+asm写的,之后的版本是用go+asm写的,所以安装早期的版本只需要gcc即可,但是后期版本的安装需要依赖早期的版本,下面分别从1.4版本和1.8.3两个版本分别介绍其源码安装过程

  • 1.4版本

    cd ~/package
    wget https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
    tar zxvf go1.4-bootstrap-20170531.tar.gz go1.4
    cd go1.4/src/
    CGO_ENABLED=0 ./all.bash

    若只想使用1.4版本,此时可以在~/.bash_profile中添加export PATH=$PATH:~/package/go1.4/bin

  • 1.8.3版本

    cd ~/package
    wget https://github.com/golang/go/archive/go1.8.3.tar.gz
    tar zxvf go1.8.3.tar.gz go1.8.3
    export GOROOT_BOOTSTRAP=~/package/go1.4
    cd go1.8.3/src
    ./all.bash

    若想用1.8.3版本,可以把~/bash.profile文件中的go1.4改成go1.8.3即可

postgresql源码编译安装

1. 安装依赖

sudo apt-get install build-essential gdb bison flex zlib1g-dev libreadline-dev

2. 创建postgres用户并切换

adduser postgres
su postgres

3. 源码编译安装

git clone http://git.postgresql.org/git/postgresql.git
cd postgresql    
./configure --prefix=$HOME/postgresql    
make && make install

4. 启动数据库

cd $HOME/postgresql/    
mkdir data    
cd bin    
./initdb -D ../data/    
./pg_ctl -D ../data/ -l logfile start

5. 连接数据库

./psql