近期评论

Archive for the ‘技术’ Category

深入CAS原理

JDK中所有的CAS到最后都要用到这个方法:

public final native boolean compareAndSwapObject
(Object var1, long var2, Object var4, Object var5);
这个方法有4个参数,奇怪的是序号不是1234,而是1245,没有javadoc和任何注释,是个native方法,代码实现是用C++写的。

这个方法到底干什么的? Read the rest of this entry »

图数据库及图计算

概述

arangodb一种内存数据,一种基于document的nosql数据库。

比起neo4j性能和设计都要好很多。用户界面也好很多。支持单点模式和集群模式。

相比传统的数据库,和新型的nosql数据,图数据库有一个非常特别的地方,就是图计算,这是它的优势。

劣势在于如何把现实生活的数据抽象成图数据,也就是建模过程。这个反而更难些。

这里做一个开端,普及一些基础的图计算知识。

Read the rest of this entry »

怎样部署魔兽世界私服

how to install wow game server ?  Let us do it !

魔兽世界是一个古老又经典的大型网络游戏,当年火爆程度是其他所有游戏没法匹敌的,而这款游戏有对应开源服务端,客户端只需要使用官方对应的客户端即可。

怎么样搭建一个服务端呢?这里以客户端3.3.5即80 WLK版本为例说明。

提供官方安装文档:
https://trinitycore.atlassian.net/wiki/display/tc/Linux+Core+Installation

安装依赖包:
yum -y install readline-devel mysql-devel bzip2-devel

升级cmake:
wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz –no-check-certificate
tar -zxvf cmake-3.5.2.tar.gz
cd cmake-3.5.2
./configure –prefix=/usr/local/cmake-3.5.2
make -j16
make install

Read the rest of this entry »

SOCK_RAW构造ICMP隐蔽通道

客户端

参考上一节,用SOCK_RAW构成ICMP请求包,由于ICMP数据包结构只是RFC规定的格式,完全可以打破,只需要在服务端也运行一个perl脚步,针对客户端的格式数据进行处理即可实现利用icmp通信,利用发送命令,做任何操作等。

另外构造任何格式的数据包,跟校验和没有关系。

注意下面脚本中的pack参数a*表示不限字节长度,全部包含进来。

Read the rest of this entry »

lvs健康检查

lvs是一个高性能且比较成熟的解决方案,但是要玩的转不容易。这里谈谈健康检查的问题。

后端检查默认使用的模块是TCP_CHECK,这个模块的效果是每个一段时间定时探测后端的服务器的端口是否开放。

配置如下:

Read the rest of this entry »

TCP连接的弱点

这是一种比较新型的攻击方式,最近在调试国外的域名,发现当我部署一个网站服务器到国外服务器后,其他配置都正确,始终访问不了域名。

这个问题消耗了我半天的时间,刚开始感到非常奇怪…… Read the rest of this entry »

mysql性能调优之log

mysql调优涉及到很多方面,网上有很多的调优参数的帖子或博客,看起来都是浮云,有些明显是错误的,或者砍掉不用的,无效的,竟然也在那样的博客里面到处复制粘贴。

曾经我问过一个DBA,mysql主从同步延如何解决,这个工作五年以上的DBA竟然告诉我说增加线程数量可以提高同步效率,现在看来,我只有呵呵。且看我之前写过一段以源码为最终依据的技术分享: Read the rest of this entry »

如何清除大量垃圾评论

一段时间以来,随着我的网站越来越受欢迎,访问量越来越大,活跃用户和评论也越来越多。

但是也带来了一些问题,比如数据库性能瓶颈,大量垃圾评论。


垃圾评论是很多博主烦恼的问题,我的网站目前一个月不清理,一共会有60000条左右的评论。下面来谈谈我是怎么解决垃圾评论问题的。

Read the rest of this entry »

内核调优tcp_max_syn_backlog和somaxconn的区别

       The  behavior of the backlog argument on TCP sockets changed with Linux 2.2.  Now it specifies the queue length for completely established sockets waiting
       to be accepted, instead of the number of incomplete connection requests.  The maximum length of  the  queue  for  incomplete  sockets  can  be  set  using
       /proc/sys/net/ipv4/tcp_max_syn_backlog.   When syncookies are enabled there is no logical maximum length and this setting is ignored.  See tcp(7) for more
       information.

       If the backlog argument is greater than the value in /proc/sys/net/core/somaxconn, then it is silently truncated to that value; the default value in  this
       file is 128.  In kernels before 2.4.25, this limit was a hard coded value, SOMAXCONN, with the value 128.

socket接收的所有连接都是存放在队列类型的数据结构中,关键问题是这种队列有两个,而且其长度都是可以设置的。

分别是下面两个内核参数:

/proc/sys/net/ipv4/tcp_max_syn_backlog

/proc/sys/net/core/somaxconn

其中:

Read the rest of this entry »

如何大幅提高网站的访问速度

最近在用一个wordpress的统计插件:WP statistics

这个插件看起来优雅美观,还有图表,可以统计每天的访问量,目前的PV大概平均20,000左右,高峰期接近50,000PV。刚开始觉得这个插件非常不错。但是用了一个月左右,发现我的网站越来越卡了。加载速度慢的难以忍受,尤其是刚开始的页面。

Read the rest of this entry »