Home

我的治牙经历

2015.1.12,生日,去做了第一轮刮治的第一次治疗。痛不欲生啊。 11月的时候查出来牙周有问题,其实很早就觉得不好了,洗牙之前没去看。洗牙的时候拍了牙片,槽骨吸收的很厉害了。中间又拖了两个月,一个是忙,一个是没挂上号,终于上周去北大口腔挂了号。医生说很严重,侵袭性牙周炎,牙周袋太深,可能还是得手术。 今天第一次刮治。感慨牙这个东西,不意识到的时候不会觉得他的重要,上周探完牙周袋深度就疼了一个周,这次更是痛不欲生的感觉,打了麻药还是这样。而且奇怪的是手刮并不怎么疼,疼的还是超声洗牙石的部分。唯一的安慰是大夫态度都不错。牙科的大夫mm居多,虽然带着口罩都看不清楚长相… 以前还是不重视啊。家庭上也整体不重视。中国还是有很多落后的地方,理念上这么多年都没有更新过来。联想到公务员热和中...

Read more

在命令行使用Shadowsocks翻墙

拜GFW所赐,连tm boot2docker都连接不上了。好在有shadowsocks的服务,可以转成http proxy给命令行使用。 首先安装privoxy。Linux下直接apt-get install privoxy,然后编辑配置文件(etc/privoxy/config): forward-socks5 / 127.0.0.1:1080 . listen-address localhost:8118 #local network do not use proxy forward 192.168.*.*/ . forward 10.*.*.*/ . forward 1...

Read more

Java 中相等的比较

遇到如下一个问题,java中使用复杂类型做Hashkey的时候,构造另一个值相同的对象作为key无法获取map的value。原因其实是java的==判断的依据是两个引用是否指向了同一个对象。实际调用了hashCode函数。内置对象的逻辑相等比较需要使用equals,比如String。而对于非内置对象,equals也同样调用了hashCode来判断相等。 所以对于需要逻辑相等判断的对象,需要override两个函数,比如如下一个getkey的类定义了如何从Map中根据path和type得到一个唯一的对象: class ZkEventKey { EventType type = null; String path = null; ZkEventKey(EventType...

Read more

eclipse多命令行窗口

有时候需要在eclipse中同时运行客户端程序和服务器程序,开始都是一个在eclipse里面运行,另一个在命令行单独启动,未免不方便。后来发现,其实可以直接在eclipse中运行两次。调试视图会有两个显示,同时新建一个console窗口,关联另一个实例的显示就可以同时监视两个程序的输出了。

Read more

协变返回类型

协变返回类型(Convariant Return Type)是指override的函数,返回值有继承关系(子类函数返回类型是父类返回类型的子类)。例子如下:

Read more

Java和C++继承上的一点不同

之前没注意过这里: java继承的时候只会隐藏父类同名同类型的函数。C++直接隐藏了同名的所有函数,如下: public class BaseClass { public void Print(String str){ System.out.println("String" + str); } public void Print(int num){ System.out.println(num); } } public class TestDerived extends BaseClass { public void Print(String str) { System.out.println("String" + str); } public stati...

Read more

使用shadow socks翻墙

拜GFW所赐,连tm boot2docker都连接不上了。而且最近红杏抽风,遂决定买shadowsocks服务翻墙。服务直接在官网购买,90一年,比红杏略便宜一点,主要还是可控性比较大,因为是socks5的代理。 这里购买服务,一年99,这个优惠码可以再打一点折imouto985。之后进入后台可以看到分配给自己的密码,服务器主要是日本,美国和新加坡的,实测貌似日本的响应更快一点。 mac下下载了客户端直接打开配置好地址就能用,linux下需要自己配置代理。 首先下载安装node.js wget http://nodejs.org/dist/v0.10.35/node-v0.10.35.tar.gz tar zxvf node-v0.10.35.tar.gz ...

Read more

java中重用对象的bug

首先这不是java编译器的问题,就是写代码的时候大意了。 有这样一个函数 int parse(String msg, Message out); 解析一个String,返回一个结构体。这么做的目的主要是避开try catch的性能问题,通过返回码来处理异常。这里就很容易出现这样的用法了: Message msg = new Message(); for (xxxx){ if (0 == parse(str, msg)) } 当时觉得还挺好,复用了一个对象。实际明显有问题的,这个对象的生命周期不见得只在for循环内部,一旦引用被传递出去,就会有悬挂(java里是不是不这么叫)的问题。多个引用指向了一个对象,计算结果是不可预测的。 主要问题是j...

Read more