分类归档:技术尝鲜

Haproxy让Shadowsocks变的更强大

悲剧开始

8月初的时候发现上外网就非常困难,只是那会没注意,国庆节后回家,发现封网更是凶狠,用mtr命令跟踪后发现几乎连境外所有ssl请求都被抛弃,而本地ssh至linode也是时好时坏,VPN各协议均无法接入,后来虽用ssh tunnel的方式连上外网,但网速比较慢体验较差,难道就没有办法解决这个问题了么?

希望燃起

在研究了诸多方案后,最终选择Shadowsocks,因为其客户端和服务端可设置多种加密方法进行通讯,在通过GFW的时只是常规的TCP包,并没有明显的特征码,这样就减少了GFW的干扰,从而实现较顺畅的上网体验,但是本地直连linode服务器还是有干扰,类似以前的Google重置,而此时ssh tunnel的方式又让我想到的新的办法。
阅读全文…

仿余额宝收益图实现

问题描述

最近的android客户端中需要实现类似余额宝中的折线收益图,乍一看似乎比较简单,但还是有不少细节需要解决,所以我们还是选择了Android-GraphView做为基础来进行改造.对于基本的折线功能,Android-GraphView已经能满足,但对于折线粗细,x轴等距分布以及最后一个记录的标记提示,以及空心小圆点都需要处理,如图显示.UI图例
阅读全文…

双色球背后的程序

突发奇想

首先这个题目有点大,但我实在想不出更好的标题了,这一切也是由于最近与小伙伴们讨论双色球,简单来说双色球就是一种排列组合小游戏,但又区别于全排列,它只针对数值而不针对位置,而其又区别蓝球与红球,那么我们很简单的就可以算出其全组合的可能数值,即红球33选6,33!/(6! * (33-6)!) = 1107568,蓝球16选1,全组合就是1107568 * 16 = 17721088,想一想这也确实很夸张,别说中头奖了,甚至中三等奖也是低概率事件,那么我们是否有办法提高中奖概率呢,个人认为肯定是有的,毕竟双色球只是一种伪随机.

程序实现

经过挖掘与分析,貌似能提高双色球中奖概率的条件有以下几种,例如红球分区,和值,跨度,奇偶比,质合比,012路比等等,那么我们可以将这类限制抽象成条件,但前提是我们需要将所有的组合全部列举出来,然后通过条件去缩小范围,这里我们有了第一个问题,即生成红球的所有组合,然后输出到一个文件里,代码看起来应该是这样

阅读全文…

Mac安装Eclipse与IDEA

最近将开发环境全面转至macbook上,但发现在安装java的过程中并不是那么一帆风顺,这里简单记录下遇到的问题以及解决方案.

Mac上安装Java7

首先我们需要去oracle下载最新的jdk,笔者拿到的最新的版本是1.7.0_45-b18,这里没有什么好说的,直接下载安装即可,安装完毕后需要在.bash_profile或者.zshrc文件中设置JAVA_HOME,代码如下

然后执行source让其生效.
最后在终端中执行如下命令判断JAVA_HOME是否正确设置

安装IntelliJ IDEA

下载好IntelliJ IDEA解压执行发现弹出提示需要安装1.6,查阅了资料后发现需要修改idea中的Info.plist.
打开plist后找到如下项,将1.6改成1.7后再次运行就发现idea可以正常启动了.

安装Eclipse

下载好eclipse解压执行,发现依旧提示需要安装1.6,多方查阅后发现似乎是oracle更新了某些JVM的设置,我们需要找到jdk的Info.plist
执行如下命令

找到JVMCapabilities配置项,修改成如下所示,最后重启机器即可.

Memcached CAS详解

什么是cas

Memcached于1.2.4版本新增CAS协议,类同于Java并发包中CAS(Compare and Set)原子操作,用来处理同一item被多个线程更改过程的并发问题.

基本原理

基本原理非常简单,简而言之就是”版本号”.每个存储的数据对象都有一个版本号.在Memcached中,每个key关联有一个64bit长度的long型唯一数值,表示该key对应value的版本号.
这个数值由Memcached产生,从1开始,且同一Memcached不会重复,在两种情况下这个版本数值会加,即新增与更新,而删除item版本值不会减小.
阅读全文…

第 1 页,共 3 页123