BT种子嗅探器:DHT

之前写了原理篇,在原理篇里简单的介绍了一下DHT,但是还不够详细。今天我们就专门详细的讲一下嗅探器的核心-DHT,这里默认原理篇你已经读了。

背景知识

DHT全称 Distributed Hash Table,中文翻译过来就是分布式哈希表。它是一种去中心化的分布式系统,特点主要有自动去中心化,强大的容错能力,支持扩展。另外它规定了自己的架构,包括keyspace和overlay network(覆盖网络)两部分。但是他没有规定具体的算法细节,所以出现了很多不同的实现方式,比如Chord,Pastry,Kademlia等。BitTorrent中的DHT是基于Kademlia的一种变形,它的官方名称叫做 Mainline DHT。

DHT人如其名,把它看成一个整体,从远处看它,它就是一张哈希表,只不过这张表是分布式的,存在于很多机器上。它同时支持set(key, val),get(key)操作。DHT可以用于很多方面,比如分布式文件系统,DNS,即时消息(IM),以及我们最熟悉的点对点文件共享(比如BT协议)等。

下面我们提到的DHT默认都是Mainline DHT,例子都是用伪代码来表示。读下面段落的时候要时刻记着,DHT是一个哈希表。

Mainline DHT

Mainline DHT遵循DHT的架构,下面我们分别从Keyspace和Overlay network两方面具体说明。

Keyspace

keyspace主要是关于key的一些规定。

Mainline dht里边的key长度为160bit,注意是bit,不是byte。在常见的编译型编程语言中,最长的整型也才是64bit,所以用整型是表示不了key的,我们得想其他的方式。我们可以用数组方式表示它,数组类型你可以选用长度不同的整型,比如int8,int16,int32等。这里为了下边方便计算,我们采用长度为20的byte数组来表示。

在mainline dht中,key之间唯一的一种计算是xor,即异或(还记得异或的知识吧?)。我们的key是用长度为20的byte数组来表示,因此我们应该从前往后依次计算两个key的相对应的byte的异或值,最终结果得到的是另外一个长度为20的byte数组。算法如下:

​for i = 0; i < 20; i++ {
​ result[i] = key1[i] ^ key2[i];
​}

 

读到这里,你是不是要问xor有啥用?还记得原理篇中DHT的工作方式吗?

xor是为了找到好友表中离key最近的k个节点,什么样的节点最近?就是好友中每个节点和key相异或,得到的结果越小就越近。这里又衍生另外一个问题,byte数组之间怎么比较大小?很简单,从前往后,依次比较每一个byte的大小即可。

在Mainline DHT中,我们用160bit的key来代表每个节点和每个资源的ID,我们查找节点或者查找资源的时候实际上就是查找他们的ID。回想一下,这是不是很哈希表? 🙂

另外聪明的你可能又该问了,我们怎么样知道每个节点或者每个资源的ID是多少?在Mainline DHT中,节点的ID一般是随机生成的,而资源的ID是用sha1算法加密资源的内容后得到的。

OK,关于key就这么多,代码实现你可以查考这里。

Overlay network

Overlay network主要是关于DHT内部节点是怎么存储数据的,不同节点之间又是怎样通信的。

首先我们回顾一下原理篇中DHT的工作方式:

DHT 由很多节点组成,每个节点保存一张表,表里边记录着自己的好友节点。当你向一个节点A查询另外一个节点B的信息的时候,A就会查询自己的好友表,如果里边包含B,那么A就返回B的信息,否则A就返回距离B距离最近的k个节点。然后你再向这k个节点再次查询B的信息,这样循环一直到查询到B的信息,查询到B的信息后你应该向之前所有查询过的节点发个通知,告诉他们,你有B的信息。

整个DHT是一个哈希表,它把自己的数据化整为零分散在不同的节点里。OK,现在我们看下,一个节点内部是用什么样的数据结构存储数据的。

节点内部数据存储 – Routing Table

用什么样的数据结构得看支持什么样的操作,还得看各种操作的频繁程度。从上面工作方式我们知道,操作主要有两个:

在我(注意:“我”是一个节点)的好友节点中查询离一个key最近的k个节点(在Mainline DHT中,k=8),程度为频繁
把一个节点保存起来,也就是插入操作,程度为频繁

首先看到“最近”、“k”,我们会联想到top k问题。一个很straightforward的做法是,用一个数组保存节点。这样的话,我们看下算法复杂度。top k问题用堆解决,查询复杂度为O(k + (n-k)*log(k)),当k=8时,接近于O(n);插入操作为O(1)。注:n为一个节点的好友节点总数。

当n很大的时候,操作时间可能会很长。那么有没有O(log(n))的算法呢?

联想到上面堆的算法,你可能说,我们可以维护一个堆啊,插入和查询的时候都是O(log(n))。这种做法堆是根据堆中元素与某一个固定不变的key的距离来维护的,但是通常情况下,我们查询的key都是变化的,因此这种做法不可行。

那还有其他O(log(n))的算法吗?

经验告诉我们,很多O(log(n))的问题都和二叉树相关,比如各种平衡二叉树,我们能不能用二叉树来解决呢?联想到每个ID都是一个160bit的值,而且我们知道key之间的距离是通过异或来计算的,并且两个key的异或结果大小和他们的共同前缀无关,我们应该想到用Trie树(或者叫前缀树)来解决。事实上,Mainline DHT协议中用的就是Trie树,但是与Trie树又稍微有所不同。在Trie树里边,插入一个key时,我们要比对key的每一个char和Trie里边路径,当不一致时,会立刻分裂成一个子树。但是在这里,当不一致时,不会立刻分裂,而是有一个长度为k的buffer(在Mainline DHT中叫bucket)。分两种情况讨论:

  • 如果bucket长度小于k,那么直接插入bucket就行了。
  • 如果bucket长度大于或等于k,又要分两种情况讨论:
    • 第一种情况是当前的路径是该节点ID(注意不是要插入的key,是“我”自己的ID)的前缀,那么就分裂,左右子树的key分别是0和1,并且把当前bucket中的节点根据他们的当前char值分到相应的子树的bucket里边。
    • 第二种情况是当前路径不是该节点ID的前缀,这种情况下,直接把这个key丢掉。

如果还没有理解,你可以参照Kademlia这篇论文上面的图。

插入的时候,复杂度为O(log(n))。查询离key最近的k个节点时,我们可以先找到当前key对应的bucket,如果bucket里边不够k个,那么我们再查找该节点前驱和后继,最后根据他们与key的距离拍一下序即可,平均复杂度也为O(log(n))。这样插入和查询都是O(log(n))。

代码实现你可以查考这里。

节点之间的通信 – KRPC

KRPC比较简单,它是一个简单的rpc结构,其是通过UDP传送消息的,报文是由bencode编码的字典。它包含3种消息类型,request、response和error。请求又分为四种:ping,find_node, get_peers, announce_peer。

  • ping 用来侦探对方是否在线
  • find_node 用来查找某一个节点ID为Key的具体信息,信息里包括ip,port,ID
  • get_peers 用来查找某一个资源ID为Key的具体信息,信息里包含可提供下载该资源的ip:port列表
  • announce_peer 用来告诉别人自己可提供某一个资源的下载,让别人把这个消息保存起来。还记得Angelababy那个例子吗?在我得到她的微信号后,我会通知所有我之前问过的人,他们就会把我有Angelababy微信号这个信息保存起来,以后如果有人再问他们有没有Angelababy微信号的话,他们就会告诉那个人我有。BT种子嗅探器就是根据这个来得到消息的,不过得到消息后我们还需要进一步下载。

跳出节点,整体看DHT这个哈希表,find_node和get_peers就是我们之前说的get(key),announce_peer就是set(ke, val)。

剩下的就是具体的消息格式,你可以在官方文档上看到,这里就不搬砖了。

实现KRPC时,需要注意的有以下几点:

  • 每次收到请求或者回复你都需要根据情况更新你的Routing Table,或保存或丢掉。
  • 你需要实现transaction,transaction里边要包含你的请求信息以及被请求的ip及端口,只有这样当你收到回复消息时,你才能根据消息的transaction id做出正确的处理。Mainline DHT对于如何实现transaction没有做具体规定。
  • 一开始你是不在DHT网络中的,你需要别人把你介绍进去,任何一个在DHT中的人都可以。一般我们可以向 router.bittorrent.com:6881、 dht.transmissionbt.com:6881 等发送find_node请求,然后我们的DHT就可以开始工作了。

KRPC的实现你可以参考这里。

总结

DHT整体就是一张哈希表,首先我们本身是里边的一个节点,我们向别人发送krpc find_node或get_peers消息,就是在对这个哈希表执行get(key)操作。向别人发送announce_peer消息,就是在对这个哈希表执行set(key, val)操作。

OK,今天就说到这里,关于怎么样下载,我们下篇再说

转自:https://github.com/shiyanhui/dht/wiki

bt种子搜索原理

前言

之前看到L灯 这个十分火的工具,其利用了P2P的思想,就想了解一下P2P相关的协议。看了下最流行的BT协议官方文档,就产生了实现BT协议的想法,顺便根据协议实现了一个BT种子嗅探器。

也有人将BT种子嗅探器称为BT种子爬虫,个人觉得其行为特性和传统的web爬虫相差较大,反而和嗅探器很类似,因此暂且称之为BT种子嗅探器吧。

接下来将写一系列文章来介绍其原理和具体实现方式。这篇文章先提纲挈领,介绍其工作原理,以对全局有一个把握。后序的文章再介绍具体细节。

背景知识

在讲原理之前首先你得具备BitTorrent(简称BT)协议的一些基本知识,以便于理解接下来要讲的嗅探器。BT协议其实是一个协议簇,BEP-3 是其基本协议内容,其他的大部分都是围绕这个来进行扩展或补充。要想从BT网络中下载一个资源,必须具备以下部分:

  • 种子文件(也就是我们常说的种子,后缀是 .torrent,本质上是一个由bencode编码的文本文件,其把资源分成很多虚拟块,并记录每个块的hash值,另外上面还记录着其他信息,比如文件大小、名字、Tracker服务器等)
  • BT客户端(需要有专门解析BT协议的程序,这样才能下载,比如迅雷,电驴)
  • Tracker服务器 (记录着peer和种子相关信息,起着中心调控的作用)

下载资源的时候,客户端首先根据bencode(bencode是BT协议中的编码方式)解码种子文件,得到Tracker服务器的地址和资源信息,通过和Tracker服务器沟通得到其他已经下载该资源的peers信息(其他已经拥有该资源的客户端或者发布该资源的人),然后再和这些peers沟通得到自己想要的部分,即互通有无。由于把文件分成很多块来同时从不同的地方下载,这也就是为什么BT通常下载快的原因。

DHT协议

通过上面我们知道,Tracker服务器在资源下载的过程中起着至关重要的作用,只有通过它我们才能得到其他peers的信息,才能够下载,但这同时也成了BT协议的一个弱点,如果Tracker服务器挂掉了或者被封被屏蔽,整个网络也就瘫痪了。由于一些资源都是有版权的,还有一些资源是限制级的,比如色情资源,Tracker服务器很容易被迫关闭或被墙。后来聪明的人类发明了另外一种协议,就是 Distributed hash table, 简称DHT,这个协议就是用来弥补这个弱点的。

BT协议簇中的DHT协议 是基于 Kademlia协议 建立的,其基本思想很好理解。DHT 由很多节点组成,每个节点保存一张表,表里边记录着自己的好友节点。当你向一个节点A查询另外一个节点B的信息的时候,A就会查询自己的好友表,如果里边包含B,那么A就返回B的信息,否则A就返回距离B距离最近的k个节点。然后你再向这k个节点再次查询B的信息,这样循环一直到查询到B的信息,查询到B的信息后你应该向之前所有查询过的节点发个通知,告诉他们,你有B的信息。

举个例子,比如我现在想要Angelababy的微信号(额…我要干嘛),我就从自己的微信好友中挑出k个最可能认识她的人,然后依次问他们有没有Angelababy的微信号,假如其中一个认识,那么他就会给我Angelababy的微信号,我也就不继续问其他人了。假如他不认识,他就给我推荐k个他微信好友中最有可能认识Angelababy的k个人,然后我再继续这k个人,就这样循环一直到我问到为止。OK,现在我已经得到了Angelababy的微信号,我就会告诉之前所有我问过的人,我有Angelababy的微信号。

当客户端下载资源的时候,他会利用上述方式查找peers信息,这样每个人都充当了Tracker的作用,也就解决了上面那个问题。

嗅探器原理

终于到核心部分了。

BT种子嗅探器就是利用了DHT协议得到peer信息后会向他之前查询过的节点发送通知这一点,这就是嗅探器的核心。

剩下的工作就是我们要让更多的节点发给我们通知。那么如何让更多的节点发给我们通知呢?

  • 我们要不断的查询自己的好友节点表,并对返回回来的节点进行查询,这样才会有更多的人认识我们
  • 别人向我们查询Target的时候,我们要伪装成Target的好友,返回结果里边包括自己,这样会有更多被查询、收到通知的机会

这就是BT种子嗅探器的原理,简单吧 🙂

种子下载器

在BT网络中,通过上述原理收到信息并不是种子,而是发送消息者的ip和port、种子infohash(可以理解为种子的id)。我们如果想要得到种子的话,还需要做一番工作。这里涉及到另外一个非常重要的协议 BEP-09,BEP-09规定了如何通过种子infohash得到种子。

这里不铺开讲,仅说下大致过程。首先同我们收到的消息里边的 ip:port 建立TCP连接,然后发送握手消息,并告知对方自己支持BEP-09协议,然后向对方请求种子的信息,收到对方返回的种子信息后,依次或同时请求每一个块。最有所有块收集完后,对其进行拼接并通过sha1算法计算其infohash,如果和我们请求的infohash值相同则保存起来,否则丢掉。

应用

这样你可以得到非常多的种子信息,你可以对其进行索引建立自己的BT种子搜索引擎,建立自己的海盗湾。但你需要注意版权问题和色情资源问题。
转自:https://github.com/shiyanhui/dht/wiki

免费的https证书letsencrypt

在前几天给网址换成https,在地址栏会看到一把绿色小锁,表示你访问的网站受到安全保护。letsencrypt是的免费的自动化的安全证书,我的博客是用的wordprss和lnmp搭建的。

我们需要https?

相信今年的315晚会,的一个小环节,演示手机app,在公共的wifi那里打开手机APP,相关的购物信息,家庭地址啥时间产生的交易时间,都会给抓取到。这其中的原因是用了公共场所的wifi,但更重要的是因为经过wifi联网的数据是没加密的。再有,在你们浏览器打开百度、京东等网站,右下角弹窗,或者手机浏览器打开在正中间,电信运营商在中间插入他们的代码。https比https多s,用了ssl传输加密协议433端口,保护内容安全完整性。淘宝 百度 谷歌 京东等都启用https,数据安全非常重要。https的站点,搜索引擎权重高点,目前百度联盟不支持https,无法显示广告,站点配置301跳转。通信过程下图

https

选择letsencrypt证书

首先它是免费的,有效期3个月,其次安装方便只需要几行linux命令就可以,证书自动更新。在我们国内也可以选择沃通,个人的免费证书有效期2年,具体的安装自己去搜索。当然你也可以使用你在生成的证书,缺点就是浏览器会提醒证书不信任,不建议继续访问。letsencrypt证书目前各大浏览器内置信任。作为个人站来说letsencrypt符合你的使用,如果你有钱去申请收费的也可以。

安装

请先备份数据库,利用worpdress导出xml,前提是服务器按照了lnmp,具体的安装请访问:lnmp.org

下载程序

安装git程序:Debian/Ubuntu:apt-get install git ,CentOS:yum install git-core
git clone https://github.com/letsencrypt/letsencrypt.git
cd letsencrypt

mkdir -p /home/wwwroot/域名/.well-known/acme-challenge 创建临时目录

证书生成

./letsencrypt-auto certonly --email 邮箱 -d 域名 --webroot -w /网站目录完整路径 --agree-tos

提示:Had a problem while installing Python packages
停止:/etc/init.d/mysql stop
内存512MB需要增加交换分区

dd if=/dev/zero of=/swapfile bs=1024 count=524288
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

启动:/etc/init.d/mysql start
安装完成后可执行

swapoff /swapfile

Nginx虚拟主机的设置

server
{
listen 443 ssl;
server_name www.freeyun.com freeyun.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.freeyun.com;
ssl_certificate /etc/letsencrypt/live/www.freeyun.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.freeyun.com/privkey.pem;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

include wordpress.conf;
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
#include pathinfo.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}

access_log off;
}


server
{
listen 80;
server_name www.freeyun.com freeyun.com;
location /.well-known/ {
add_header Content-Type 'text/plain;';
root /home/wwwroot/www.freeyun.com;
}
location / {
return 301 https://www.freeyun.com$request_uri;
}
}

证书续期

cat >/root/renew-ssl.sh<<EOF
#!/bin/bash
mkdir -p /网站目录完整路径/.well-known/acme-challenge
/root/letsencrypt/letsencrypt-auto --renew-by-default certonly --email 邮箱 -d 域名 --webroot -w /网站目录完整路径 --agree-tos
/etc/init.d/nginx reload
EOF
chmod +x /root/renew-ssl.sh

安装crontab :

yum install vixie-cron crontabs
chkconfig crond on
service crond start

添加执行crontab -e定时任务:

0 3 */60 * * /root/renew-ssl.sh

网站内容更新成https方式

强调备份数据
安装:Search & Replace插件执行
http://www.freeyun.com/wp-content/uploads/
替换为:https://www.freeyun.com/wp-content/uploads/

浏览器不出现绿色小锁,还有http的引用,右键查看网页源码查找引用http部分,如果是用站长统计请更新成https方式,部分主题也可能出现不支持https请换成https模式

引用资料

HTTPS的工作原理:
http://www.cnblogs.com/ttltry-air/archive/2012/08/20/2647898.html
免费SSL安全证书Let’s Encrypt安装使用教程:

http://www.vpser.net/build/letsencrypt-free-ssl.html

letsencrypt的限制:
https://community.letsencrypt.org/t/rate-limits-for-lets-encrypt/6769

网站搬家

wordpress架的网站在外面好长时间,终于决定搬回来了,记录搬家到阿里云的过程。

原因

在美国的虚拟主机,便宜的,一年100多块,速度上还是接受,有每个月宽带限制,几个网站共用一个IP的,对于国内的虚拟主机价格实惠,做个小站流量小。通过DNSPOD监控发现有偶尔的无法访问,另外访问速度相对慢一点。在某些原因,写文章审核保存草稿比较慢,无法接受,通常我一篇文章写几个小时反复的查看,排版。上面种种原因,要搬到国内。

过程

1、购买云主机

通过对比选择阿里云,目前国内有腾讯云,盛大云,百度云等,价格上面阿里云优惠,还有是万网被阿里云收购,在云主机上面经历过几年的验证,稳定可靠性有保 证。另外我腾讯没512MB内存云服务器,我网站没有必要弄1GB内存云服务器。服务器地域青岛一个月49.5,在网上找个优惠码打9折。当然如果你想要1G内存的,也可以购买腾讯云。操作系统就选择linux centos 7.0。

2、备份数据:

一般在虚拟主机都有phpmyadmin,通过界面导出整个网站数据库。还有一种方法是利用wordpress工具->导出,来导出xml数据。不建议IE浏览器做这种操作,否则存在导出数据不全。拷贝你的wordpress程序。

3、安装环境

安装Xshell,登录到你的云主机。

用于相互传送文件的工具,运行:yum install lrzsz

lrzsz的命令说明 rz :本地文件到服务器,sz xx:服务器文件到本地。

安装lnmp(Nginx、PHP、MySQL、phpMyAdmin)命令:wget -c https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp

上面执行时间有点长,看你主机性能。

按照提示是在mysql密码。

4、恢复网站数据

添加vhost执行: lnmp add vhost  (注意选择支持伪静态)

删除是有的插件,防止某些插件导致网站502错误等。

4.1可视化恢复:

将你备份的程序拷贝至你的目录(比如我的www.freeyun.com)下,phpmyadmin创建数据库,恢复你的sql文件,或者你登录后台通过xml的文件恢复数据。

4.2mysql命令恢复,注意mysql命令后面的分号(;):

mysql -u root -p;//登录数据库

CREATE DATABASE IF NOT EXISTS wordpress DEFAULT CHARSET utf8 COLLATE utf8_general_ci;//创建数据库wordpress

show databases;//显示全部数据库
use wordpress;//选择数据库
source  /~/wordpress.sql;//导入数据文件
drop database wordpress;//销毁wordpress数据库

为了正常升级wordpess 及插件执行:chown www:www -R www.freeyun.com

目录www.freeyun.com 下的user.ini文件无法直接修改,而且是隐藏文件可能在winscp下可能无法看到,建议使用vim编辑器或nano编辑器进行修改。

如要修或删除需要先执行:chattr -i /网站目录/.user.ini

修改完成后再执行:chattr +i /网站目录/.user.ini

如果你想要访问你的网站,你需要wp_options下面siteurl的值修改成你服务器IP地址。

5、配置mail

为了你的主机支持wordpress mail的,即发表评论,你收到邮件通知,回复评论,人家评论者收到恢复。有两种方法

  • 安装WP-Mail-SMTP插件,
  • 安装postfix这个配置有点复杂,作为sendmail的代替者,速度秒发e-mail,我后面文章再补写一篇文章

6、备案

分两步审核,第一是阿里云审核,第二是你身份证属地通信管理局,具体就看阿里云的提示,我第一步3天时间(包括了邮寄资料的时间),第二步8个工作日。这期间,你要把你的dns指向阿里云IP。

结束语

2015-8-26通过的备案,备案期间,天天上去看管局通过没,接不到管局电话。经过几天观察,没发现有宕机,访问速度杠杠的,最近在由于我网站的图片有些多,是不是得用七牛的加速下下。gravatar 的大头像有点烦,国内是加载不到,禁用中。

免费国外cdn网站提速推介

我空间在美国,在国内没备案,想让国内的访问快。国外的免费cdn网站加速incapsula,使用香港节点ping值110左右。当然国内也有个安全宝,它会给你提供日本的节点,但是及不稳定。

注册帐号

  • 登录https://www.incapsula.com/
  • 点击PRICING&SINGN UP,点击Free
  • 填入注册信息
    • First name:名字
    • Last name:姓
    • Email address:电子邮箱
    • Password:至少8位密码
    • Confirm password:重复至少8位密码
  • 到你的邮箱激活帐号。

添加网站

点击Add a website:填入你的域名。

incapsula自动扫描你的网站记录。点击Continue。

分配国外的ip节点给你。写着啥 iI completed th Dns chaanges,不管它。。

修改域名dns记录

把你的域名A 记录值改成45.64.64.200

上dnspod的dns修改图

dnspod

香港节点:45.64.64.0/24

全部CDN节点:http://bgp.he.net/AS19551#_prefixes

去除incapsula的小广告,点击Sites,点击域名,点Settings,点General,把Web Seal 的勾去掉,点Save.

写在后面

cdn服务商

  • 国内的cdn :百度云加速,腾讯云加速,360云加速 ,加速乐,新浪云加速,七牛云储存,安全宝(据说给百度已收购)。根据在网上的评论360云加速目前是好的选择。这里得说下网宿科技,相信看视频的朋友都可能留意到这个号称”中国最大的CDN及IDC综合服务提供商”。乱七八糟,都在抢占市场。
  • 国外的cdn :CloudFlare,Google PageSpeed Service

cnd好处

  1. 访问速度快,给你分配了最近的节点,这个技术是通过dns来智能识别。
  2. 抗攻击,真实的ip地址你是不知道。
  3. 对网站的seo不影响

Windows 10 技术预览版 Build 9926

正式版将会在8月初!

windows10 windows7的接盘手,系统将统一PC、手机、Xbox等多个平台

参加Insider通过windows7 windows8/8.1升级到Windows 10(不推荐)

https://insider.windows.com/ 需要有hotmail.com帐号

全新安装,下载地址[含中文](推荐安装双系统)

全部语言镜像下载:http://windows.microsoft.com/en-us/windows/preview-iso

64位中文: http://iso.esd.microsoft.com/W9TPI/B6B0A0278A90510669EAB90ABF80B22A/Windows10_TechnicalPreview_x64_ZH-CN_9926.iso

32位中文:http://iso.esd.microsoft.com/W9TPI/B6B0A0278A90510669EAB90ABF80B22A/Windows10_TechnicalPreview_x32_ZH-CN_9926.iso

系列号: NKJFK-GPHP7-G8C3J-P6JXR-HQRJR

WIN7 系统制作U盘系统:Windows 7 USB DVD Download Tool教程和地址:

http://www.microsoftstore.com/store?Action=html&Locale=en_US&SiteID=msus&ThemeID=29553000&pbPage=Help_Win7_usbdvd_dwnTool

老毛桃制作U盘系统:

http://www.laomaotao.net/

WIN10各个功能操作官方演示:

http://windows.microsoft.com/en-us/windows/preview-new-start

window10-9926

wordpress访问速度提升

缘由

wordpress打开前台很块,可是在打开后台的时候就会花大概10秒钟时间,或更长时间,往往怀疑是主机空间的问题!其实不是,用火狐浏览器发现一直在加载fonts.googleapis.com及gravatar.com!对应了谷歌的字体库和大头贴,众所周知的原因!在国内是无法访问的,使用了Akismet自动屏蔽垃圾评论,每次都记录操作日志会导致数据库的表wp_commentmeta过大!

下面给出推荐解决方法!

使用插件替换掉谷歌的字体库

解决方法:

1、安装插件:Useso take over Google

用360前端公共库Useso接管Google字体库和Google公共库,无需设置,插件安装激活后即刻生效。

2、打开主题下的functions.php 文件,将以下代码复制粘贴保存即可

function mytheme_get_avatar($avatar) {
$avatar = str_replace(array(“www.gravatar.com”,”0.gravatar.com”,”1.gravatar.com”,”2.gravatar.com”),”gravatar.duoshuo.com”,$avatar);
return $avatar;
}
add_filter( ‘get_avatar’, ‘mytheme_get_avatar’, 10, 3 );

3、使用phpmyadmin 管理数据库,清理wp_commentmeta表

或者使用WP Clean Up插件清理数据库,操作数据库要谨慎。

参考链接:

http://www.brunoxu.com/use-360-front-public-library-took-over-google-fonts-and-public-library.html

http://www.freehao123.com/wordpress-gravatar/

白银时代

上个月在住院的时候看完了王小波的《黄金时代》,还没写它的阅读后的。现在写写他《白银时代》

我叫王二,未来的世界是银色的,在大学的二年级就是1.8米高的。我喜欢老师,是读物理的,天天起来热力学,就这样开始了,常做梦“未来的世界是银色的”。老师说的。

是位作家,喜欢在公司办公室枪毙别人草稿,给枪毙的人会”气哼哼“踩我脚。写着一部小说叫《我和老师》。在小说里,描述着老师的性感,喜欢趟在我身上,就算床是只能睡一个人的,都叫我不要动。写着,,,太出格了,上司大姐把我“枪毙”了。是个历史的博士,给公司安排去改造,因为我犯错误了,犯的是思想的错误。犯思想错误是最重的那种,公司把我车,信用卡,房子都收了,送了另外的身份,去做小工。之前为了不给安置,我还特意去弄了张-哲学家的卡片,是我师妹帮我的,我师妹也给我害了。在公司还有个女作家需要说明下,天天起来,问我“怎么写小说”。女作家在之前给公司叫去讨厌生活,谁知道半夜路上给四个人轮奸了。算了体验生活了吧,天问问写小说,我给了她一推数学题。。

公司安排我去改造:做小工,一般公司还会派个女人过来一起住,起初我是安安分分的,我给了自取了M,那个女人自然就叫F了。我就想着,F是公司派的吧。来监视我的,晚上我们都睡在同一张床上,F就脱了衣服睡觉,但是我对F没兴趣。不过我也不怕F去报我的都在干些什么。期间:我的《我和老师》小说在法国获奖了,有好多钱,都给公司收走。后来F说了,她是是心理学的,来我这里就是为了研究我的病情,像我这种人,犯错误的人都会有一种病,病的名字我也忘了。我“不干白不干”,F感觉她亏了,本来想研究我病了,最后和我做爱,天天干了很多。。。露骨了。。F走了。。

我有两个舅舅,大舅是数学家,曾经去美国留学。他导师说他是数学天才,是我和通信我才知道的。大舅回国后继续研究数学,给他导师寄研究结果,告诉他这些国外早就研究了。变傻瓜了。。。是回国变的,我舅妈是给物理老师。游泳就喜欢靠着她盯着胸部,才有骂我是”小坏蛋“。大舅是派出所的常客,还有个小阿姨,是派出所的,叫我大舅脱光,o(︶︿︶)o 唉后面我就不说了。。。大舅动过手术,心脏臭了,。死了,。。大舅妈嫁了有钱人,还常给我(当时我在改造)打电话问在那里。

2015年,小舅是个画家,有执业照的,天天起来画,有次小偷来到家里,看他画的,怕他出事,告诉他“画不是这样画的”。得说下小偷,小偷会把你家里垃圾收走,打扫你房间干净,再偷你钱。听说小偷在派出所死了,小偷尸体生前的遗嘱:给医学院,那女学生都抢着他尸体。教员,问小舅:“你画的是什么”。小舅不知道,其实小舅说是牛啊,猪,,,就不就用去监狱了,每次都要我领回来,我妈年纪大嘛。小舅常卖画给小日本人。小舅给蹲监狱,认识了我小舅妈。赶去劳改了,这夫妻的生活不谈了。小舅妈漂亮啊,蹲监狱都能够带一个回来,早知道我去蹲算了。有必要补充,我和小舅长的挺像的。小舅为了生存下,说爱小舅妈,先是利用,后才占便宜。小舅妈现代话“公务员”。小舅也出来了,要多谢我小舅妈

在说这些之前我干许多职业,去守厕所,收小费,不给小费的,狠狠的踹几脚,他们就乖乖给。结果是知道的,不能干下去了,。。。既然我那像我小舅,那我就是一个艺术家。天天想艺术的味道。说小那收画的小日本人,有次,他带黑人老婆在大街上逛,派出所的人把她抓走了,打到出了很多水,问是不是卖画的,小日本人赶紧去找大使馆,派出所赶紧改头换面,美容院的,在美容。有小日本人带着白色的老婆也是在大街上逛,又给派出所抓走了,后面你们就知道了,柔道院。我在大街上嘛,突然一个人扣住我袖口,大声“是不是王二”,平静的回“我是王二的外甥”。那人就是派出所的,你以为他走远了?偷偷在后面跟着我,看我是不是很紧张。如我给抓了,我就一给练拳的。

最好一段记的模糊了,王二在思考艺术的真谛。

再读《大秦帝国》

之前一直想写一些阅读《大秦帝国》后评论的,在学校时没静心认真的去读,也有其中的原因:“不喜欢看所谓的小说”。第一次接触到的是因为电视剧,是在大二的时候吧!一口气看完第一部,很受震撼!法制让一个秦国由弱走到强一直到最后的死亡!《大秦帝国》一共六部,4000多页,我还第二次阅读还没完成只写下部分的感受流水账。

从这套书里面,体制是很重要的,就算是在领导层次出错走向下滑甚至灭亡的路上,体制都可以保障到一个国家及一个企业等的还有充足的时间给予挽救,这个可以从跨国公司(IBM,Intel等公司)有体会的。算是中国中央集权制的一种体会吧。感受下封建社会的集权制,就像这种说的。帝国,没那个国家敢称为帝国,帝国是具备三种要素:其一,统一辽阔的国土(小国家没有帝国);其二,专制统治(民主制没有帝国);其三,强大的军事扩张(无扩张不成帝国)。秦帝国存在总才15年的时间,它的影响是深远的。包括我本人都不是很喜欢秦国的历史,秦始皇“焚书坑儒”这段历史太让人。。

书里面让你体会一个历史的史诗,波澜壮阔的场面。如果喜欢历史的人可以读《二十四史》如果想就加清朝的话就二十五史了,然后对比不同朝代诞生,繁荣走到灭亡,相信会收获不少的。。。下面就只谈谈这套书秦朝的一些感受

第一部 黑色裂变

   起点:秦献公在秦魏大战深受重伤,嬴渠梁(秦献公次子)临危即位:秦孝公。在秦国受六国围攻下,秦献公割地、贿赂及平定内乱让秦国过渡灭顶之灾。在平衡庙堂里的各种势力,大量搜集人才实施秦孝公大战略,变法。引出历史著名“商鞅变法”,通常变法的人,一般没好的结局,在中国历史上变法的变法可以找的到他们最后去处。这些人思想具备前瞻性,也正是前瞻性,不断接受旧势力的考验。如没国君的强有力的支持,充分的放权。过程:“变法的人,拟出草稿,让国君审阅->以国君名义对外公开”,国君不干预内部事物,就算是国君的亲戚,都不会干预。其中最重要的一点是,让变法的人具备极高的地位,确立其威望,“法制”还是“人治”。秦国强大了,秦孝公劳累病倒嬴驷即为(秦惠王),最后是旧势力以古法“车裂商鞅”,密谋复辟旧体制触发第二部的->国命纵横。

第二部 国命纵横

秦惠王平定旧视力,让上一代退出舞台,起用忠实于新法的年轻官吏,继续变法,。苏秦、张仪也开始走向历史舞台,看点“连横合纵”。“合纵”:联合弱国共同抵抗强国,“连横”:联合强国制衡第三国。苏秦和张仪为主角的展开了精彩的外交攻防。张仪,代表秦国连横,苏秦:六国合纵,系六国宰相。透露下,两人的位置一开始是相反的,苏秦,第一次是进的秦国。两人的关系是师兄弟。连横合纵,不过是给各个国家一次变法强大的机会,让它们公平竞争。张仪结好燕国,派出人质,埋下伏笔。不管是连横还是合纵,最终赢家都是秦国,它变得越来越强大,而六国却越来越微弱了。 苏秦入了齐国,主导齐国变法,后遭旧贵族买凶杀害。秦惠王病倒,原因不明,张仪退隐。。。。。尚武力的秦武王即位。

第三部 金戈铁马

秦武王率领大军进军雒阳,举鼎重伤后暴毙。下诏迎回燕国做人质的少年秦稷即位秦昭王,母子稳定朝局。齐闵王集结六国围攻秦国,被白起以少击败并趁机扩大秦国版图。齐闵王不过是想借助六国时机好吞并宋国,可惜了,再和燕国结下仇恨(集结六国中齐闵王杀掉燕国大将,并要燕国道歉)。燕国名将乐毅秘密联结五国(楚国不在内)围攻齐国,下文等我看完了。。。。。

这一部重点是:范雎:“远交近攻”

第四部 阳谋春秋

第五部 铁血文明

第六部 帝国烽烟