自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(37)
  • 资源 (4)
  • 收藏
  • 关注

原创 C++ 资源管理 —— RAII

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

2018-01-29 23:29:28 739

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

返回 null 值,基本上是在给自己增加工作量,也是给调用者添乱。只有一处没有检查返回的是否为 null,程序就会抛 NullPointerException 异常。如果你打算在方法中返回 null 值,不如:抛出异常,或者返回特例对象。如果你在调用某个第三方 api 中可能返回 null 值的方法,可以考虑用新方法中进一步打包(封装)这个方法,在更上层的代码中抛出异常或返回特例对象;

2018-01-29 22:53:37 3243 1

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

>> from datetime import datetime>> now = datetime.now()>> now.strftime('%Y-%m-%d')'2018-01-29'如果此时我们想转换为 2018-1-29的形式,有如下的两种方式:法 1:分别转换为 int 型以消除前导 0:year = str(int(now.strftime('%Y')))mont

2018-01-29 00:33:56 6780 2

原创 天文网站

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

2018-01-28 22:34:01 5508

原创 Linux 工具套件 —— binutils、readelf

readelf:Linux 下专门针对 ELF 文件格式的解析器;1. binutilsodjdump:顾名思义,查看显示 obj(目标文件)的内部结构;$ gcc -c hello.c # -c 表示只编译不链接;$ objdump -h hello.o-s:将所有段的内容以 16 进制的方式显示出来;-d:将所有包含指令的段反汇编;

2018-01-25 23:29:47 1047

原创 错误处理与异常处理

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

2018-01-24 23:06:41 894

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

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

2018-01-24 22:05:27 731

原创 Java 代码复用 —— 泛型

public interface Comparable { public int compareTo(T o);}1. 接口(Comparable:可比较接口)public static boolean less(Comparable v, Comparable w) { return v.compareTo(w) 0;}当然也可以将参数中的 Comparab

2018-01-22 23:41:41 1106 1

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

1. 电池与电磁1号、5号、7号电池的电压普遍为 1.5 V;单体的电压自然是越大越好,为什么在电压越大越好的情况下,1号、5号、7号电池的电压普遍设计成 1.5 v。因为三者的供电原理都是一样的,都是锌锰干电池,其电极材料、电解液成分决定了电池电压, 水的最低分解电压为 1.23V,实际分解电压考虑到极化等因素会比 1.23 V更高,但并不会高出太多,如果电池电压过高,自己便把自己的

2018-01-21 22:36:23 1450

原创 重构代码 —— 提取出类

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

2018-01-20 23:47:19 724

原创 np.unique 的实现

1. 简单实现import numpy as npdef unique(ar): perm = ar.argsort() aux = ar[perm] flag = np.concatenate(([True], aux[1:] != aux[:-1])) return aux[flag]if __name__ == '__main__': ar

2018-01-20 21:02:06 1448 1

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

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

2018-01-20 17:32:22 751

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

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

2018-01-20 12:06:36 716

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

边界条件的判断包括:文件读操作:第一个字符,最后一个字符,倒数第二个字符;大于号与大于等于号;1. 数据结构关于整数:正数:包括边界值 1、0x7FFF FFFF负数:包括边界值 0x8000 0000、0xFFFF FFFF0关于序列(容器):序列为空;序列长度为 1;序列满;关于二叉树:树位空;只有根元素;只有一个左子树,或右子树;2. 对

2018-01-20 11:35:43 1985 1

原创 Windows vs Linux:\r\n 与 \r

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

2018-01-19 23:17:53 953

原创 Java VM(虚拟机) 参数

1. 虚拟机参数:-ea,支持 assert 断言关键字eclipse 默认是不开启此参数的,也就是虽然编译器支持 assert 关键字,但并不起作用,需要为虚拟机的默认参数中增加此配置选项:【Window】⇒ 【Preferences】⇒ 【Java】⇒ 【Installed JREs】右侧对点中待配置参数的JREs,对其进行编辑:如下图所示: 2. Java 堆

2018-01-19 23:03:59 10005

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

如下所示,先通过 build path 导入 junit 环境依赖的 jar 包: 1. junit.framework.*junit.framework.* 主要类和函数: TestTestCaseTestSuite实现并运行(run as => Java Application,因其有 java 应用所需的入口函数:main 函数)如下的代码:import

2018-01-19 00:36:59 1959

原创 Python 编码问题

1. “UnicodeDecodeError: ‘gbk’ codec can’t decodewith open(filename, 'r') as f: data = f.read()将其改写为:with open(filename, 'rb') as f: data = f.read()但这样读取到的文件内容,不可直接读取。为了阅读的方便,可进一步为其指定

2018-01-18 00:04:33 863

原创 Java 面向对象编程 tricks

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

2018-01-16 23:03:14 657

原创 python 编码 —— codecs 库

1. 对文件读写import codecsfout = codecs.open('test.html', 'w', encoding='UTF-8')fout.write('')fout.write(''fout.close()很自然地可将其改造为 with 结构,with 结构会自动执行 fout 的 close() 方法(查阅 codecs 的源码发现,codecs.op

2018-01-15 23:15:23 1577

原创 mxnet(gluon)—— 模型、数据集、损失函数、优化子等类、接口大全

1. 数据集dataset_train = gluon.data.ArrayDataset(X_train, y_train)data_iter = gluon.data.DataLoader(dataset_train, batch_size, shuffle=True)for data, label in data_iter: ...2. 模型gluon.n

2018-01-15 00:07:12 2874

原创 机器学习套路 —— 样本集的拆分(正样本、负样本)

collect negative samples of adaboost algorithm for face detection 机器学习中的正负样本所谓正样本(positive samples)、负样本(negative samples),对于某一环境下的人脸识别应用来说,比如教室中学生的人脸识别,则教室的墙壁,窗户,身体,衣服等等便属于负样本的范畴。负样本通过采集的方式获取,也可通

2018-01-14 20:03:17 22113

原创 编程理论 —— 计算图框架

当前大部分的深度学习框架(tensorflow、theano、mxnet)都要求能否构建计算图,以及编译计算图来自动求导;1. 命令式编程与符号式编程命令式编程,程序中可能会存在 for或 if 形式的控制流,即循环迭代的次数和 if 分支的执行都取决于入参,不同的输入会使得程序的执行不同。对于计算图框架来说,这就对应于动态图,即图的结构(不只是结果)会随着输入的变化而发生变化;r

2018-01-14 19:18:05 1271

转载 Python with 结构

一段基本的 with 表达式,其结构是这样的:with EXPR as VAR: BLOCKEXPR 可以是任意表达式; as VAR 是可选的。其一般的执行过程是这样的:计算 EXPR ,并获取一个上下文管理器。上下文管理器(上下文管理器,实现了 __exit__/__enter()__/__exit()__方法的类的实例化对象)的__exit()__方法被保存起来用于之...

2018-01-14 19:01:12 1006

原创 树莓派外设、模块、传感器 —— 数码管(F3461BH)

1. 4 位 8 段(7+点)数码管树莓派GPIO入门05-驱动数码管显示数字 其内部电路图及各个段的引脚控制如下: 共阳与共阴:数码管从电源极性上分共阳和共阴两种。解释一下,如果数码管上每一个独立的发光二极管都单独引出两根引脚,一根接正极(阳)一根接负极(阴),那么一个8段数码管就需要16根引脚来控制。但其实这8段数码管完全可以在内部共用一个阳级,只控制各段发光二极管

2018-01-14 12:40:47 2870

原创 树莓派版本及各种引脚

0. 板载组件板载组件:尤其注意wifi、Bluetooth 的位置(开发板的左上角) 1. 注意树莓派版本的差异【Raspberry Pi 3试用体验】与树莓派2对比不变: 从板卡外观上看,硬件设计布局基本没有改变,甚至电容电感的位置都没有变化。从下面的对比图(左侧:树莓派2 右侧:树莓派3)可以看出。在电源管理,HDMI输出接口,...

2018-01-14 12:33:50 13380

原创 树莓派(Arduino)仿真软件 —— Fritzing

Fritzing 官网:Fritzing Fritzing下载地址:Fritzing Download windows 下降 zip 文件解压后,免安装双击 exe 即可运行;

2018-01-13 23:33:20 14368 1

原创 树莓派视频监控 —— 使用 mjpg

下载到树莓派本地:$ wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip$ unzip master.zip # 会解压为 mjpg-streamer-master 目录安装依赖库及C/C++项目编译工具:sudo apt-get install libjpeg8-devsudo apt-g

2018-01-13 19:29:00 1141

原创 物质之学 —— 金属

1. 锡锡,金属元素,一种有银白色光泽的的低熔点(焊锡丝)的金属元素,在化合物内是二价或四价,不会被空气氧化(焊锡丝),主要以二氧化物(锡石)和各种硫化物(例如硫锡石)的形式存在。元素符号Sn。锡是大名鼎鼎的“五金”——金、银、铜、铁、锡之一。用途: 青铜器(Bronze Ware)是由青铜合金(红铜与锡的合金)制成的器具,诞生于人类文明时期的青铜时代。锡在我国古代常被用来制作青铜。

2018-01-13 16:50:57 684

原创 树莓派相机操作 —— luvcview 的安装、raspistill:摄像头命令

MMAL (Multimedia Abstraction Layer)0. 图像及视频操作RaspiCam Documentation1. 运行树莓派配置工具>> sudo raspi-config2. root 登陆 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如hal...

2018-01-13 00:13:12 12735 2

原创 树莓派(Linux)与镜像源

树莓派学习笔记——修改树莓派软件源1. linux 镜像源文件>> vim /etc/apt/sources.list可在树莓派官网 http://www.raspbian.org/RaspbianMirrors,找到最新的软件源镜像地址,官网提供的国内镜像源如下: 在官网提供的镜像源地址外,国内阿里云也提供了相关的镜像源:https://mirrors.aliyun.c

2018-01-12 23:58:46 1223

原创 Python 爬虫 —— 文件及文件夹操作

0. 文件名、路径信息、拓展名等#取文件后缀>>> os.path.splitext("/root/a.py")('/root/a', '.py')#取目录与文件名>>> os.path.split("/root/a.py")('/root', 'a.py')>>> os.path.basename("/root/a.py")'a.py'>>> os.path.dir

2018-01-11 00:04:17 2986

原创 著名站点的爬虫 —— 豆瓣

1. 爬取“喜欢这部剧集的人也喜欢 ”import requestsfrom bs4 import BeautifulSoupurl = "https://movie.douban.com/subject/25953429/"soup = BeautifulSoup(requests.get(url).text, 'html.parser')also_likes = set()l

2018-01-06 23:58:19 3800

原创 物联网 —— 常用传感器模块

1. HC-SR501探究人体红外传感器HC-SR501HC-SR501人体红外传感器(PIR)模块。其工作原理人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是靠探测人体发射的10UM左右的红外线而进行工作的。人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时

2018-01-03 22:56:40 3701

原创 Python 标准库 —— 邮件(email)与邮件服务器(smtplib)

你真的懂邮件吗?邮件包括如下四部分内容:发送人:from_addr接收人:to_addr主题:subject正文:msg其中发送者,接收者,又需要两部分的内容构成:用户名(字符串形式)及其邮件地址(xx@xx.com)。from email.mime.text import MIMETextfrom email.header import Headerfrom email.utils

2018-01-03 22:48:15 2945

原创 User-Agent 及其构造

url = ...user_agent = ...headers = {'User-Agent' : user_agent}req = requests.request(url=url, headers=headers)1. 构造 UA# firefox 浏览器user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:57.0) Gecko/

2018-01-03 21:37:47 2376

原创 Python 爬虫 —— 网页内容解析(lxml)

1. lxmlfrom lxml import etreeetree 下的 HTML 对象,其构造函数接受 requests.request 的返回值对象:url = ...user_agent = ...headers = {'User-Agent' : user_agent}req = requests.request(url=url, headers=headers)html = et

2018-01-03 21:28:49 1612

Python-2.7.3.tgz

学习《Python 源码剖析》一书所用的 Python 源码文件。

2016-04-29

文件工具类

解决java 运行 MapReduce 相关代码时报权限错误的问题。

2016-03-15

上网日志数据(hadoop用)

简单格式的数据、

2016-03-10

matlab字幕拼接用视频截图

配套于《用matlab实现视频截图字幕部分的拼接》[http://blog.csdn.net/lanchunhui/article/details/50539019]

2016-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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