Zhang's Wikipedia

玩就玩大的

C++ 资源管理 —— RAII

RAII:在构造函数中申请资源,在析构函数中释放资源。 1. RAII 自动实现锁资源的释放 void bad() { m.lock(); f(); if (COND) return; m.unlock(); } 显然如果提前返回,会导致死锁。 class ...

2018-01-29 23:29:28

阅读数:116

评论数:0

特例模式(Special Case Pattern)与空对象模式(Null Pointer Pattern)—— 返回特例对象而非 null

返回 null 值,基本上是在给自己增加工作量,也是给调用者添乱。只有一处没有检查返回的是否为 null,程序就会抛 NullPointerException 异常。 如果你打算在方法中返回 null 值,不如: 抛出异常,或者返回特例对象。 如果你在调用某个第三方 api 中可能返回 nu...

2018-01-29 22:53:37

阅读数:400

评论数:0

python tricks —— datetime 删除日期中的前导 0

>> from datetime import datetime >> now = datetime.now() >> now.strftime('%Y-%m-%d') '2018-01-29' 如果此时我们想转换为 2018-1-29的形式,有如下的两种方式...

2018-01-29 00:33:56

阅读数:1095

评论数:0

天文网站

1. 八大行星的实时位置 太阳系 内行星包括:水星、金星、地球、火星;

2018-01-28 22:34:01

阅读数:386

评论数:0

认识星座、八大行星的观察

1. 北斗七星 北斗七星属于大熊座,春夏可见; 2. 八大行星 太阳系的八大行星基本位于同一轨道面,如以地球轨道面为基准,相互间轨道倾角的差距甚至不到5度(不包括水星)。太阳系各大行星公转平面与地球黄道平面的倾角为: 金星:金星是内行星,离地球比较近,和地球相当大小,所以...

2018-01-28 22:30:27

阅读数:465

评论数:0

Linux 工具套件 —— binutils、readelf

readelf:Linux 下专门针对 ELF 文件格式的解析器; 1. binutils odjdump:顾名思义,查看显示 obj(目标文件)的内部结构; $ gcc -c hello.c # -c 表示只编译不链接; $ objdump -h hello.o -s:将所有...

2018-01-25 23:29:47

阅读数:162

评论数:0

错误处理与异常处理

1. 异常处理的打包及自定义异常类 ACMEPort port = new ACMEPort(12); try { port.open(); } catch (DeviceResponseException e) { reportPortError(e); logger...

2018-01-24 23:06:41

阅读数:174

评论数:0

数组(数组名)与指针辨异

int arr[] = { 1, 2, 3 }; printf("arr = %p\n", arr); printf("&arr = %p\n", &arr); printf(&qu...

2018-01-24 22:05:27

阅读数:133

评论数:0

Java 代码复用 —— 泛型

public interface Comparable { public int compareTo(T o); } 1. 接口(Comparable:可比较接口) public static boolean less(Comparable v, Comparable w) { ...

2018-01-22 23:41:41

阅读数:136

评论数:0

电压、电流 —— 常用设备的电压电流

1. 电池与电磁 1号、5号、7号电池的电压普遍为 1.5 V; 单体的电压自然是越大越好,为什么在电压越大越好的情况下,1号、5号、7号电池的电压普遍设计成 1.5 v。因为三者的供电原理都是一样的,都是锌锰干电池,其电极材料、电解液成分决定了电池电压, 水的最低分解电压为 1.23V,...

2018-01-21 22:36:23

阅读数:216

评论数:0

重构代码 —— 提取出类

1. 参数对象化 如果函数需要两个,三个或更多的参数,说明其中一些参数需要封装为类了: Circle makeCircle(double x, double y, double radius); Circle makeCircle(Point point, double radius);

2018-01-20 23:47:19

阅读数:103

评论数:0

np.unique 的实现

1. 简单实现 import numpy as np def unique(ar): perm = ar.argsort() aux = ar[perm] flag = np.concatenate(([True], aux[1:] != aux[:-1])) ...

2018-01-20 21:02:06

阅读数:436

评论数:0

重构代码 —— 函数即变量(Replace temp with Query)

函数即变量,这里的函数指的是返回值为某一对象的函数。Replace temp with query,query 是一种查询函数。 example 1 double price() { return this.quantity * this.itemPrice - M...

2018-01-20 17:32:22

阅读数:118

评论数:0

代码健壮性的获得 —— 借助编译器及语言的语法特性

1. 借助编译器 主要利用编译器对语法中一些关键字、修饰符的支持: Java final、static 注意区分 Java 的按值传递和按引用传递,但使用按引用传递时,被调端不会对(没有能力)对调用端造成任何影响, 按引用传递便具备对调用端造成影响的能力,如果在按引用传递的情况下,还想保...

2018-01-20 12:06:36

阅读数:108

评论数:0

代码健壮性 —— 边界条件的判断

边界条件的判断包括: 文件读操作:第一个字符,最后一个字符,倒数第二个字符; 大于号与大于等于号; 1. 数据结构 关于整数: 正数:包括边界值 1、0x7FFF FFFF 负数:包括边界值 0x8000 0000、0xFFFF FFFF 0 关于序列(容器): 序列为空; 序列长...

2018-01-20 11:35:43

阅读数:216

评论数:0

Windows vs Linux:\r\n 与 \r

Linux 下文本文件的换行符为 \n Windows 下文本文件的换行符为 \r\n,占两个字节: \r:归位键(CR),ascii 码为 13 \n:换行键(LF),ascii 码位 10 也即单行无换行文本,其在 Linux 和 Windows 下的大小是一致的; windows 文件有...

2018-01-19 23:17:53

阅读数:165

评论数:0

Java VM(虚拟机) 参数

1. 虚拟机参数:-ea,支持 assert 断言关键字 eclipse 默认是不开启此参数的,也就是虽然编译器支持 assert 关键字,但并不起作用,需要为虚拟机的默认参数中增加此配置选项: 【Window】⇒ 【Preferences】⇒ 【Java】⇒ 【Installed JREs...

2018-01-19 23:03:59

阅读数:1972

评论数:0

eclipse 环境 JUnit 测试框架(junit.framework.* 与 org.junit.*)

如下所示,先通过 build path 导入 junit 环境依赖的 jar 包: 1. junit.framework.* junit.framework.* 主要类和函数: Test TestCase TestSuite 实现并运行(run as => Java ...

2018-01-19 00:36:59

阅读数:395

评论数:0

Python 编码问题

1. “UnicodeDecodeError: ‘gbk’ codec can’t decode with open(filename, 'r') as f: data = f.read() 将其改写为: with open(filename, 'rb') as f: d...

2018-01-18 00:04:33

阅读数:236

评论数:0

Java 面向对象编程 tricks

方法中描述了参数: 1. 构造器重载 重载构造器时,使用描述了参数的静态工厂方法名,这样做的意义何在呢?就在于为动作赋予意义,提升代码的可解释性: 传统的实例化方式: Complex fulcrumPoint = new Complex(23.0); 实例化对象时,显然,new ...

2018-01-16 23:03:14

阅读数:79

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭