随笔分类 -  程序设计

编程模式(schema) —— 表驱动法(table-driven)
摘要:使用表驱动法,而非繁琐冗长的 if/else, switch case(本身也代表一种代码坏味道),也是替身编程质量的重要手段,表驱动法是一种编程模式(schema)—— 从表里面查找信息而不使用逻辑语句(if/else, switch/case)。事实上,凡是能... 阅读全文
posted @ 2017-10-10 23:39 未雨愁眸 阅读(704) 评论(0) 推荐(0)
assert 的理解
摘要:assert 可以实现如下功能:保证参数之间的大小等约束关系;函数执行过程中得到的中间结果是否符合预期;def gen_batch(batch_size, skip_window, num_skips): assert batch_size % num_skip... 阅读全文
posted @ 2017-06-03 19:01 未雨愁眸 阅读(389) 评论(0) 推荐(0)
结构化编程 —— 顺序、分支(选择)、循环
摘要:sequence、conditional(selection)、selection1. 为什么只有这三种结构计算机中所有的存储都有 01 两种状态,因此整个计算机的数据就有 2^n 种状态,这些状态可以分别视为平面图上的点,而程序就是操作这些点进行状态转移的有向图... 阅读全文
posted @ 2017-03-16 23:12 未雨愁眸 阅读(434) 评论(0) 推荐(0)
编程语言版本的查询
摘要:对于 Windows 用户而言,需要首先进入 cmd 命令行界面,Python:C:\Users\hasee> python --versionJavaC:\Users\hasee> java -version 阅读全文
posted @ 2017-02-21 18:01 未雨愁眸 阅读(255) 评论(0) 推荐(0)
编程军规 —— Java 篇
摘要:提高代码的可读性,规避容易出现的错误。0. 共性对象或引用的非空性判断: 强制类型转换时;函数返回时;函数的输入参数;任务执行的成功或失败判断; 文件打开;网络连接;数据库连接;内存申请;尤其对于 java 语言,使用反射机制时的,类不存在;连接要关闭,资源要释放... 阅读全文
posted @ 2016-12-18 13:09 未雨愁眸 阅读(120) 评论(0) 推荐(0)
转义及编码(\u, \x)
摘要:首先前面的 \表示转义,\x:只是 16 进制的意思,后边跟两位,则表示单字节编码;\d:十进制;\o:八进制;对于 \xaa ⇒ chr(0xaa) ⇒ chr(16*a+a)\u:unicode 码;一般其后跟 4 个 16 进制数,因此,一般为 unicode-... 阅读全文
posted @ 2016-11-10 19:07 未雨愁眸 阅读(291) 评论(0) 推荐(0)
特殊字符
摘要:\xHH:HH 表示十六进制数;C 语言(Python)有时输出的字符串会这样提示;>> chr(20)'\x14'也即在命令行环境下,无法显示 ASCII 码表的第 20 个元素(16 进制的 14)所表示的特殊字符, 阅读全文
posted @ 2016-11-09 22:50 未雨愁眸 阅读(223) 评论(0) 推荐(0)
编程思想 —— 哨兵的使用
摘要:LDA:Leading Dimension of AView topic - leading dimension? Clarification of the leading dimension in CUBLAS when transposing 完整的说法是:le... 阅读全文
posted @ 2016-11-02 21:01 未雨愁眸 阅读(856) 评论(0) 推荐(0)
递归缩写
摘要:GNU:GNU’s Not UnixLinux:Linux Is Not UniXEMACS:EMACS Makes A Computer Slow PNG:PNG’s Not GIFRPM:RPM Package Manager 阅读全文
posted @ 2016-10-22 11:44 未雨愁眸 阅读(200) 评论(0) 推荐(0)
开源软件的许可(License)
摘要:自由软件基金会(Free Software Foundation):FSF0. GNUGNU (GNU is Not Unix 的递归缩写)计划,又称革奴计划,是由 Richard Stallman 在 1983 年 9 月 27 日公开发起的。它的目标是创建一套完全... 阅读全文
posted @ 2016-10-22 11:34 未雨愁眸 阅读(1245) 评论(0) 推荐(0)
visual studio 编译器在辨异 C/C++ 程序时的注意事项
摘要:1. 数组大小的限制visual studio 对数组的维数(元素的个数)没有限制,但要求数组的 size (sizeof() 后的结果,所占内存的大小)不得超过 0x7fff ffff = 2^31-1;bool arr[1 << 31]; ... 阅读全文
posted @ 2016-10-20 18:15 未雨愁眸 阅读(132) 评论(0) 推荐(0)
位运算应用及其注意事项
摘要:1. 可能发生的溢出使用 64 位整数时发生的溢出。试编写代码,使其能够确认无符号的 64 位整数的位掩码(bitmask)a 的第 b 位(从右向左数)是否已经打开。bool isBitSet(unsigned long long a, int b) { re... 阅读全文
posted @ 2016-10-16 12:17 未雨愁眸 阅读(213) 评论(0) 推荐(0)
多层循环的意义
摘要:双层循环的经典使用场景:冒泡排序希尔排序1. 多层循环的含义多层循环,就像剥洋葱一样,一层一层地拨开,核心的处理逻辑隐藏在内层循环,更重要的意义在于,在外层循环所代表的不同变量下,内层循环执行的逻辑是是一样的。比如对于冒泡排序,外层循环限制的仅仅是内层循环的起始位置;... 阅读全文
posted @ 2016-10-04 11:52 未雨愁眸 阅读(185) 评论(0) 推荐(0)
声明与定义
摘要:声明:听其言(extern、以及类的前向声明 forward declaration),定义:观其行;1. 变量从编译原理上来说,声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存。而定义就是分配了内存(存在客观上的实物)。考虑下面的... 阅读全文
posted @ 2016-09-24 19:50 未雨愁眸 阅读(166) 评论(0) 推荐(0)
while 常见程序逻辑
摘要:1. 查找List L;Position P = L;while (P && P->Element != Key) { P = P->Next;}return P; 阅读全文
posted @ 2016-09-21 10:25 未雨愁眸 阅读(188) 评论(0) 推荐(0)
C/C++ 变量的初始化
摘要:局部变量,初始化为垃圾值,局部静态变量初始化为 0;1. 二维数组// 作为局部变量int arr[4]; // 全是垃圾值int arr[4] = {1}; // 第一个元素为 1,其他默认初始化为 0int arr2[2][3]... 阅读全文
posted @ 2016-09-21 08:19 未雨愁眸 阅读(151) 评论(0) 推荐(0)
函数多个“返回值”
摘要:1. 通过参数确切地说,通过参数列表中,引用类型的参数,本质上返回值仍只有一个,且为基本数据类型;int foo(int n, int& x);获取一个数列中仅出现一次(奇数次)的两个数(其他数均出现 2 次(偶数次))class Solution {public: ... 阅读全文
posted @ 2016-09-19 18:54 未雨愁眸 阅读(208) 评论(0) 推荐(0)
递归与尾递归
摘要:递归:recursion,尾递归:tail recursionWhat is tail recursion?普通递归会不断地累积占用栈空间,当到达一个峰值之后,再不断减小;1. 从普通递归到尾递归尾递归和一般的递归不同在对内存的占用,普通递归创建 stack 累积... 阅读全文
posted @ 2016-09-18 15:29 未雨愁眸 阅读(502) 评论(0) 推荐(0)
编程常见处理逻辑
摘要:remove 函数的返回值一般为 bool 类型,用以判断是否成功;如果要求序列有序,插入操作之前首先进行的 search 操作,寻找合适的位置,如果查找得到,则无需再次插入,如果返回为空,则插入在指定的位置;1. 含有父指针的二叉树结点含有父指针的二叉树结点,一般会... 阅读全文
posted @ 2016-09-18 12:04 未雨愁眸 阅读(247) 评论(0) 推荐(0)
程序思维
摘要:程序思维,本质上是计算机的思维。计算思维与人的思维有相似的地方,但又不完全一致,设置起始以及遍历结束的位置,规定运算流程,计算机便可以不厌其烦地重复执行下去。对在未来会被覆盖的值,事先进行保存;1. 在一个函数内部调用另一个函数 ⇒ 功能拆分在一个函数内部(比如函... 阅读全文
posted @ 2016-09-17 17:49 未雨愁眸 阅读(279) 评论(0) 推荐(0)