阅读 Linux 内核源码——共享内存

2015-10-15
阅读 16 分钟
14.2k
我看的是linux-4.2.3的源码。参考了《边干边学——Linux内核指导》(鬼畜的书名)第16章内容,他们用的是2.6.15的内核源码。

ubuntu12.04安装LDAP服务器和客户端

2015-06-10
阅读 2 分钟
5.8k
LDAP (Lightweight Directory Access Protocol) 是一个集中用户管理系统。试想,当企业中搭建了多个服务比如redmine和gitlab,每个都需要重新开一个账号是非常麻烦的,也不利于管理。LDAP为用户管理提供了统一的接口,它的后端相当于一个数据库,当是以目录树和文件的形式存放的,这样它不需依赖任何数据库。

混淆id的一种方法

2015-05-29
阅读 3 分钟
9.3k
众所周知,在web应用的API中,总是会出现数据库item的id。比如GET /posts/1表示获取id为1的文章内容。这样做十分简洁,但存在被人爬数据的风险。比如我可以大致猜测或者试一下id的范围,1,2,3...10000这样迭代地爬数据。如果服务器不做访问限制,很轻易就能把所有数据就能爬下来。而且,这样的数字id也会暴露一些信息,...

轻松将sqlAlchemy中的对象转换为dict

2015-05-15
阅读 1 分钟
30.6k
在用sqlAlchemy写web应用的时候,经常会用json进行通信,跟json最接近的对象就是dict,有时候操作dict也会比操作ORM对象更为方便,毕竟不用管数据库session的状态了。

数据库存储时间的时区问题

2015-05-07
阅读 1 分钟
21.2k
TIMESTAMP是标准的unix timestamp,它存储的是1970-1-1到现在经过的秒数,4字节存储。mysql用这个类型还蛮方便的,一个是有很多内置的函数和trigger来处理它,比如CURRENT_TIMESTAMP宏,最关键的是在取数据的时候mysql会自动帮你处理DST和时区的问题。

数据库varchar长度最佳实践

2015-05-07
阅读 1 分钟
16.3k
主要以mysql的InnoDB或MyISAM为例,其他数据库中基本也有varchar类型并需要提供长度的参数。 需要说明的是,例如VARCHAR(3)表示的是这一列最多存3个字符而不是3个字节,比如可以存“一二三”,实际存储时是编码为utf-8的。

C库中没有itoa以及C++中string没有split方法的原因

2015-04-02
阅读 1 分钟
6.8k
个人见解,欢迎讨论。这其实源于c/c++需要自己管理内存,而一个好的惯例是 自己申请的内存要自己释放掉 所以c/c++库函数一般都不会返回指针,你会说有些函数返回指针了呀,如 {代码...} 但实际返回的是你传入的__dest,内存还是你申请的 另外像一些用c实现的容器会返回指针,比如我们自己实现一个stack可以这样 {代码......

我的c++最佳实践

2015-03-26
阅读 2 分钟
5k
这种方法的好处是不用自己手动释放内存,而且数组大小可以动态变化(不过通常我们使用多维数组时不会变化它的大小)。 缺点是比较丑陋,一串vector会很长,尤其是> >不能连在一起否则编译器会认为是移位或者流提取运算符,尽管在c++11中可以连在一起写了。

c++使用vector或指针创建多维数组

2015-03-25
阅读 2 分钟
9k
这种方法的好处是不用自己手动释放内存,而且数组大小可以动态变化(不过通常我们使用多维数组时不会变化它的大小)。 缺点是比较丑陋,一串vector会很长,尤其是> >不能连在一起否则编译器会认为是移位或者流提取运算符,尽管在c++11中可以连在一起写了。

ubuntu14.04中zip解压后文件名乱码

2015-03-16
阅读 1 分钟
4.6k
这个主要是因为zip文件对文件名的编码默认为当前环境的locale,如在windows下压缩的zip文件,在linux下其中的中文名便会乱码。

ubuntu14.04安装opencv2.4.10

2015-03-16
阅读 1 分钟
6.9k
cmake完后会输出类似configure一样的信息 确保Java, Python, TBB, OpenGL, V4L, OpenGL and Qt都被检测到了

Java中避免NullPointerException的一些方法

2015-01-10
阅读 2 分钟
24.8k
在字符串常量上调用equals {代码...} 如果strOject == null,那下面一种方法就会抛出NullPointerException 用valueOf代替toString {代码...} 原因类似 使用null-safe的库 如Apache commons中的StringUtils,下面这些方法都不会抛出NullPointerException {代码...} 函数尽量不要返回null,而是返回一个空的对象 Collectio...

将C++编译为Flash可用的swc

2015-01-06
阅读 2 分钟
4.3k
注意操作系统是Windows 这个编译器本来是adobe公司开发的,叫flascc,后来adobe将其开源,叫crossbridge 再后来adobe放弃了对它的维护,现在由社区进行维护,还叫crossbridge 我使用的是adobe手上的最后一个版本,crossbridge 1.0.1github地址下载地址,下载那个zip包就好了社区维护的crossbridge的github地址,仅供参考

C语言中的指针和字符串

2015-01-05
阅读 3 分钟
5.7k
如是上图,假设字母A处于内存的第400号格子,那么后面几个字母也是紧跟着的。 变量s本身并没有储存字符串,而存的是字符串的首地址400。也即,s指向这个字符串。

进制转换

2015-01-04
阅读 3 分钟
4.9k
注意进制不同时,数值还是一样大的。因此C(16进制)只是12(10进制)的另一种表示,而不是另一个数值。其实我的意思是,表示10进制外的其他进制时都应该用字符串。

当我#include或import的时候,我到底干了什么?

2015-01-02
阅读 2 分钟
6.3k
但如果没有第一句#include <stdio.h>,编译是通不过的 因为printf这个函数没有被声明,因为C语言要求,函数必须先声明再调用

vim cheatsheet

2014-12-04
阅读 1 分钟
2.9k

eclipse代码规范需要调整的选项

2014-11-25
阅读 1 分钟
3.2k
Code Style Window->Prefrerence->Java->Code Style->Formatter 这个根据自己需要调整 保存时行为 Window->Prefrerence->Java->Editor->Save Actions 首先激活“Perform the selected actions on save” 仅仅选择"Organize imports"和"Additional actions" 点击“Configure”,打开新的对话框 Code ...

PEP 20 -- The Zen of Python

2014-11-11
阅读 1 分钟
2.7k
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats puri...

编程中注意的事项

2014-11-11
阅读 1 分钟
1.6k
字符串相等比较使用"asd".equals(str)而不是str.equals("asd"),后者在str为null时会抛NPE,前者会返回一个我们想要的false

[翻译]PEP 7 -- C语言风格指南

2014-11-10
阅读 3 分钟
3.6k
原文[链接] 介绍 这篇文档给出了C语言编码的风格约定,包括Python中用C实现的部分。关于Python编码风格的约定,请参阅PEP-8 [1] 注意,有些约定并不一定要恪守。下面是打破约定的两个很好的理由: 某个约定使得代码难以阅读,即使是对于那些习惯于阅读风格良好的代码的人。 某个约定使得新增代码与已有代码不一致(可能...

Arrays.asList()返回的是一固定长度的List,不支持add() remove() clear()等操作

2014-11-10
阅读 1 分钟
4.2k
注意上面那个ArrayList是Arrays的内部类,同样extends了AbstractList但没有实现add()那些方法,所以就蛋疼了

ubuntu或archlinux下用xl2tpd连接zju的vpn

2014-11-09
阅读 2 分钟
8.2k
换了ubuntu 14.10,发现官方的openswan的包没出来,而ppa中的network-manager-l2tp依赖于openswan。不得已只能退回丑陋的命令行使用xl2tpd的方法。

elasticsearch不使用analyzer

2014-10-30
阅读 1 分钟
7.3k
没有用到elasticsearch的全文搜索特性,反而它的分词给我带来很多困扰。比如一个字段是 {代码...} 我想用正则表达式去匹配,却只能使用单个词的匹配比如W.*g或者D.*i 而不能使用整个句子的匹配W.*i 这个问题可以参考[链接] 以下是我自己的记录 mapping中增加not_analyzed参数 {代码...} 改变analyzer的type为keyword {代...

[转载] ubuntu 命令 dpkg -l

2014-10-27
阅读 1 分钟
2.2k
转载自[链接] dpkg -l 每条记录对应一个软件包,每条记录的第一, 二, 三个字符是软件包的状态标识, 后边依此是软件包名称,版本号, 和简单描述。 第一个字符为期望值,它包括: u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求。 i 用户请求安装软件包。 r 用户请求卸载软件包。 p 用户请求清除软件包。...

最大连续子列之和

2014-09-28
阅读 1 分钟
2.5k
以前在数据结构的书上看过这么一种解法 {代码...} 但这种解法被我算法课的老师喷了,说这样看不出算法的思路。 而最大连续子列之和是dp(动态规划)问题,应该用先有动态规划的递推式再写程序。 但事实上标准的动态规划解法也是有一点tricky的,我们递推的实际上是 max_endwith[i]: 存A[0...i]中以A[i]结尾的最大连续子...

Hibernate-core 4.3.6 Final 配置中出现的一些小问题

2014-09-17
阅读 2 分钟
13.9k
九月 17, 2014 9:29:52 下午 org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreationINFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException

python Sequence type

2014-09-16
阅读 2 分钟
2.5k
其实本来是要reverse一下list的,就去查了一下list[::-1]是什么意思,发现还有很多要注意的地方,所以就记一下。 主要是参照[链接] 首先Sequence type有三种 list tuple range slice [i:j:k]表示的是slice of s from i to j with step k, 对三种类型都有用 {代码...} range中参数是range(start, stop[, step]) initializ...

sqlalchemy连接mysql中文乱码问题

2014-09-11
阅读 1 分钟
10.9k
我用的dialect是pymysql,先看了一下pymysql,发现果然在这一层就已经出问题了 如果用纯pymysql的话,在连接数据库的时候要加上charset='utf8' {代码...} 然后在sqlalchemy这一层的做法是在dsn字符串后面加上?charset=utf8 {代码...} 参考[链接] 感谢

google的ip段

2014-09-09
阅读 1 分钟
6.7k
[链接] 这个是通过用curl和nmap测试google ip段所有ip来找到可用的一个项目 然后再改下host,就可以使用大部分google的服务了