ssh 免密登陆

ssh 免密登陆

原理:

用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器ServerB上后,就可以使用ssh命令无需密码登录到另外一台机器ServerB上。

e.g. ServerA 免密登陆 ServerB

在ServerA,ssh-keygen -t rsa ,三次回车生成id_rsa,在~/.ssh/目录下会生成id_rsa(私钥) id_rsa.pub(公钥)这两个文件;然后将公钥拷贝到

ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@ServerB:~/.ssh/authorized_keys

登陆ServerB,变更~/.ssh/authorized_keys 权限

chmod 600 ~/.ssh/authorized_keys

这样就可以在ServerA免密登陆ServerB了。authorized_keys可以放多个公钥,那时就不能用scp命令了。

出海捕鱼,翻过那山看世界,ss部署指南

Shadowsocks 部署指南

自制梯子的思路是先购买国外机房的一个虚拟服务器,通过一个服务做转发代理,比如在墙内访问google,实际会转发到国外的虚拟服务器上,通过国外机器的服务转发访问。最后再开启tcp单边加速算法,让你的代理速度飞起来

比较专业的说法是,引用wikipedia:

Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。

在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口使用客户端软件与其连接。在成功连接到服务器后,客户端会在用户的电脑上构建一个本地Socks5代理。浏览网络时,网络流量会被分到本地socks5代理,客户端将其加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网

下文包含以下几个部分:

  1. 购买vps
  2. 安装服务端ssserver
  3. 配置服务端ssserver
  4. 服务器防火墙设置
  5. 客户端(windows 和macosx)下载安装配置
  6. 开启BBR加速算法,油管4k不是梦

centos下 安装和配置、自动备份、恢复、迁移 gitlab

centos下 安装和配置、自动备份、恢复、迁移 gitlab

内容:

  • 安装配置
  • 邮件配置
  • 默认端口变更、域名配置
  • 自动备份
  • 恢复
  • 迁移

环境:centos 6.5


经纬度纠偏

民用地图不能反映真实经纬度坐标,存在一定偏差,感兴趣的一定知道为什么,不做过多解释

经纬度纠偏工具包,全文只有代码~~~

  • mapbar地图纠偏
  • 百度地图纠偏
  • 火星坐标纠偏
  • 经纬度距离计算

判断平面内点在多变形内外的射线算法及实现

判断一个点是否在多边形内&GIS LBS 系统中的应用说明

如何判断一个点是否在多边形内部?

  1. 面积和判别法:判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。
  2. 夹角和判别法:判断目标点与所有边的夹角和是否为360度,为360度则在多边形内部。
  3. 引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。

1.2.都非常好理解,但是1.2. 并不适合所有的多边形,比如说凹多边形。关于射线算法,好像没有公式证明,不过网上很多论文可以google到.

实例一
图一:点延伸出的射线穿过不规则多边形,往左射线交5点,往右射线交3点,所以判断点在多边形内

多边形要规避一些极端情况,比如自我闭合等情况,具体可以参考Determining Whether A Point Is Inside A Complex Polygon

关于GIS/LBS上的应用,问,该算法是否可以判断经纬度坐标是否在一个标记的地图围栏中(任意多边形),答案是可以,但是需要注意两个问题:


道格拉斯-普克抽稀算法

道格拉斯-普克抽稀算法,是用来对大量冗余的图形数据点进行压缩以提取必要的数据点。

文章包括三部分

  1. 算法原理
  2. 代码实现(csharp)
  3. 实际应用举例对比(图)

道格拉斯普克算法原理

该算法实现抽稀的过程是:

1)对曲线的首末点虚连一条直线,求曲线上所有点与直线的距离,并找出最大距离值dmax,用dmax与事先给定的阈值D相比:
2)若dmax<D,则将这条曲线上的中间点全部舍去;则该直线段作为曲线的近似,该段曲线处理完毕。
  若dmax≥D,保留dmax对应的坐标点,并以该点为界,把曲线分为两部分,对这两部分重复使用该方法,即重复1),2)步,直到所有dmax均<D,即完成对曲线的抽稀。
 
显然,本算法的抽稀精度也与阈值相关,阈值越大,简化程度越大,点减少的越多,反之,化简程度越低,点保留的越多,形状也越趋于原曲线。


Guava BloomFilter 实现

Guava BloomFilter 实现

Guava BloomFilter 改进点

  1. 重写了 bitset,可以参见 LockFreeBitArray类的实现 ,突破了int.maxsize 大约21亿的限制
  2. 采用MurmurHash3 非加密型哈希函数,对大块的数据,具有较高的平衡性与低碰撞率。en.wikipedia.org100w字符串hash,1s+
  3. 论文Less Hashing, Same Performance!Building a Better Bloom Filter,提到只需要两个;论文用google翻译了一部分,见
  4. 32位散列函数这个技巧并不会显着降低Bloom过滤器的性能;guava 具体做法见 BloomFilterStrategies 类的MURMUR128_MITZ_32MURMUR128_MITZ_64两种策略的实现
  5. 添加元素过程中,并非执行了 optimalNumOfHashFunctions 次hash 操作,改为一次MurmurHash3,和optimalNumOfHashFunctions次基础运算,大大减少了计算次数,提高了性能
  6. BloomFilter 一直被标记为@Beta,但已经在google很多产品中得到运用

Bloom Filter 概念和原理

  Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。

  Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。

适用场景

  • 黑名单
  • 爬虫重复URL检测
  • 字典纠缠
  • 磁盘文件检测
  • CDN(squid)代理缓存技术

以爬虫重复URL举例:

  假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为了避免形成“环”,就需要知道蜘蛛已经访问过那些URL。给一个URL,怎样知道蜘蛛是否已经访问过呢?稍微想想,就会有如下几种方案:

  1. 将访问过的URL保存到数据库。

  2. 用HashSet将访问过的URL保存起来。那只需接近O(1)的代价就可以查到一个URL是否被访问过了。

  3. URL经过MD5或SHA-1等单向哈希后再保存到HashSet或数据库。

  4. Bit-Map方法。建立一个BitSet,将每个URL经过一个哈希函数映射到某一位。

  方法1~3都是将访问过的URL完整保存,方法4则只标记URL的一个映射位。
  
以上方法在数据量较小的情况下都能完美解决问题,但是当数据量变得非常庞大时问题就来了。


团队代码协作规范 及 产品发布流程 v2

基于Gitflow 工作流 + 测试/预演/生产 环境 产品发布上线流程

团队代码协作规范 及 产品上线发布流程

团队代码协作规范 - 基于git flow工作流

git-flow


banner字符图案生成

linux 下3个有趣的小工具,用来生成 banner字符图案:

banner: 使用#来组成
figlet: 使用-,等普通字符生成
toilet:使用一些复杂的彩色特殊字符生成


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×