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