用R做一些很酷的事情

r 用来做数据统计、分析和绘图。 但是 r 也可以做一些其他 cool 的事情,譬如计算微分,譬如生成随机数。

抽样方法

sample() 函数可以用来抽样, 也可以用来模拟随机事件,譬如:

Tags: 

Putty中文乱码

使用 putty 连接服务器的时候,有时候会遇到中文乱码问题。大体思路就是, putty 客户端的编码和服务器编码一致。首先,首先 me 们得知道服务器使用的编码, 可以通过下面命令查看:

  1. $ echo $LANG $LANGUAGE

Tags: 

Java序列化

先看一段代码:

Tags: 

一个 Servlet 的小例子

Servlet 在 Java Web 的 MVC 模型中主要担当控制器的角色,然而 Servlet 却不仅仅只能做控制器。最初动态页面技术是 CGI,每过来一个 url 请求,调用一个对应的 cgi 程序,也就是创建一个子进程;该子进程负责生成 html 文档然后传送给浏览器等客户端。cgi 程序的缺点就是每一个请求都要创建进程,占用资源比较多,响应效率也比较低,后来 Java 就有了 Servlet 的技术。Servlet 可以说和 CGI 类似,是将 url 请求交给对应的 Java class 处理,在第一次使用的时候加载内存和初始化,后面相同的请求则复用该 class 。

担当 View 角色的 JSP,实际上也是在 web 容器中生成了相应的 servlet,客户端接收到的 html 文档就是对应的 servlet 输出出来的。在 MVC 中担当视图的 JSP 应该将业务逻辑(比如将用户名和密码插入数据库和判断等)交给 Model 层,而自己完全负责显示数据。Servlet 可以担当 Model 的作用,虽然在 MVC 中其不需要那么做。

Tags: 

java并发编程

不堪回首的面试中,几乎都有问 Java,或是几乎都在问 Java,O__O"… Java 在企业中使用的太多,更重要的也许是因为它 open source 勒。相对来说,c++ 就不大成功,语言极其复杂;而 c# 的可移植性则是它的最大问题,虽然 linux 或是 mac 下也有移植的项目 Mono 。本篇就是关于 Java 并发多线程的部分,因为 me 最初面试的时候,人家问的就是多线程,而且 me 回答的很不好,O__O"…

  1. 创建线程
  2. 线程池
  3. 线程本地存储

A. 创建线程

Java 中创建线程有三种方式,一种是继承 java.lang.Thread 类,重写其中的 public void run() 方法;另一种是实现 java.lang.Runnable 接口,同样重写 public void run() 方法。这两种线程执行方法是不带返回值的,所以 java 另外提供了一种 Callable 的创建方法。

Tags: 

名不见经传的od命令

查看文本文件可以使用众多 app,也可以使用命令 cat、less、more、tail、head 等。然而对于非文本文件来说,前面的方法往往力不从心。而且存在一些场景,文本文件我们看不清楚真相,譬如 \r \n 这些空白字符。我曾经就遇到过一个在mac下多行显示的文本在windows下看是一行。当然这个问题更多的是不同系统换行符的差异。我还遇到另外一个场景,就是文本文件太大,有 200+M,如果用文本工具还未打开就卡死,真的很捉急。

这里就介绍一个查看文件的利器 —— od 。

让我们先一睹其主要用法:

Tags: 

pkill的简单实现

life is short.

生活中遇到一个问题:我要删除进程,然而我并不知道 pid, 只知道 name 或是 name 的一部分,譬如 nginx、 node 等。 如果有 pid 的话,直接 kill -9 pid 就可以了,现在只知道 name,那我想到的是首先在进程 table 中搜索一把,找到 pid 然后一一删除。因为需要经常操作,所以我就写了个 killp 的工具。后来不经意间发现原来 linux 下本就有个 pkill 的工具,名字还真是高度相似,←_←

pkill 的功能比较强,可以带很多参数,我也不想一一介绍,i dont care。我现在只知道 pkill yes 就可以删除所有 name 为 yes 的进程。如果想了解更多,直接 man pkill 去吧。

下面是我的 killp 的实现,一个 shell 脚本,供参考:

Tags: 

布尔代数

布尔代数,也就是关于 0/1 的代数。如果将 0 视作假,1 视作真,也是逻辑代数。如果将 0 视为空集,1 视为全集的话,布尔代数就变成了集合代数。

在 0/1 的基础上定义三种运算:与 & 、或 | 以及取反 ~ ,具体如下:

Tags: 

golang md5计算

消息摘要算法(message degist)

md5是经典的“消息摘要”算法之一,也就是生成一段文本的一个 hash 值,位数固定 128 位(16个字节)。消息摘要算法的几个特点:

  1. 单向不可逆:根据文本很容易计算hash值,但是根据hash值很难反推出文本;
  2. 反碰撞:给出既定的hash值,很难找到一段文本也是同一个hash值;

golang 计算 md5 方法甚是简单,可以看下面的 demo:

Tags: 

Pages