- 博客(104)
- 资源 (1)
- 收藏
- 关注
原创 swig使用介绍
swig是Simplified Wrapper and Interface Generator的简称,它是一个能将C和C++的程序与其他各种高级语言诸如Perl,Python,Ruby和Tcl进行连结的开发工具。swig的官方中文网站:http://www.swig.org/translations/chinese什么是typemaptymemap are an advanced cu...
2018-08-01 20:47:50
4517
1
原创 shell下的数学运算
经常需要使用shell来进行简单的额加、减、乘、除数学运算,每次都需要现查。因此在此记录一下所有相关的shell数学运算的方法,做一个小小的总结。shell下数学运算主要以以下几种:1、[]sum=$[$a+$b]2、(())sum=$((a+b))3、exprsum=$(expr $a+$b)4、awksum=$(echo $a, $b | awk '{printf("%d", $1+$2)}'...
2018-03-02 19:06:43
541
翻译 generator下send()的作用
我们先看一下下面这个generator,它不会被send函数所影响。它在初始化时接受数字参数,并且不被send所影响:>>> def double_number(number):... while True:... number *=2 ... yield number... >>> c = double_number(4)>>> c.s
2018-01-06 17:03:58
1216
原创 boost相关
Linux平台下的boost安装:http://www.cnblogs.com/huliangwen/p/5424033.html
2017-12-22 17:06:03
324
翻译 thread中join和detach的区别
C++中的thread对象通常来说表达了执行的线程(thread of execution),这是一个OS或者平台的概念。当thread::join()函数被调用,调用它的线程会被block,直到线程的执行被完成。基本上,这是一种可以用例知道一个线程已结束的机制。当thread::join()返回时,OS的执行的线程已经完成,C++线程对象可以被销毁。当thread::detach()函数
2017-05-04 19:11:27
63027
翻译 在测试中mock的作用
一篇很好的介绍mock的文章http://stackoverflow.com/questions/3622455/what-is-the-purpose-of-mock-objects
2017-03-11 15:32:18
2070
翻译 boost interprocess_condition解析
boost中的interprocess_condition类是一个放在共享内存或内存映像文件中的条件变量。interprocess_condition主要的public成员函数有:1. void notify_one()如果有一个线程正在等待本线程(*this),改变那个线程到已准备好的状态。否则没有任何作用。2. void notify_all()改变等待本线程(*this)
2017-03-04 13:18:33
1726
原创 C++ new placement语法
今天在学习boost的共享内存时,看网上的一段代码。主要实现的功能是一个进程写一份跟踪数据至共享内存缓存区,另一个进程一个接一个打印出来。第一个进程写跟踪数据,然后等待,直到另一个进程打印这份数据。为达到此目的,我们可以使用两个条件变量:第一个用于阻塞发送者直到第二个进程打印出此消息,第二个用于阻塞接受者直到缓存区中有数据供打印。但是,下面的代码让我感到很是困惑://Map the who
2017-03-03 20:20:01
1132
原创 指针的引用
为什么会有指针的引用呢?我们假设这样一个问题,如果一个函数的参数是一个指针,而我在该函数中修改了该指针指向的内容,这会发生什么呢?如下所示:void my_func(int *p){ int m = 10; p = &m;}int main(int argc, char** argv){ int n = 2; int *pn = &n; std
2017-02-27 19:27:13
307
翻译 stringstream
又是利用stringstream来将string转换到其它数字类型是很方便的。stringstream的使用和iostream的使用很类似,学习上来说并不是一个负担。stringstream既可以用来读取string,也可以用来写入string。它主要作用于string buffer,但是并没有真正的I/O渠道。stringstream类的基本函数有str(), 放回在stri
2017-02-26 14:00:18
605
原创 boost学习
boost::scoped_ptr: 用于确保动态分配的对象能够被正确地删除。boost::interprocess::interprocess_mutex: 一个非递归的、匿名的互斥锁,可以放在共享内存或者内存映像文件中。boost::scoped_lock: 你可以确保在任何情况下离开执行范围都会解锁mutex.注意,这不仅仅实说你可能忘记调用unlock();并且,在你的mute
2017-02-26 10:17:22
389
原创 C++ 11相关知识学习
std::mutexstd::mutex定义在头文件中。mutex类是一个同步原型,用来保护共享数据被多个线程同步访问的同步。mutex提供互斥,非递归拥有权语义:一个调用线程拥有一个mutex。从它成功调用lock或者try_lock,知道它调用unlock。当一个线程拥有一个mutex,所有其它的线程将如果想要尝试获得mutex的拥有权,则会接收一个false,或者被b
2017-02-25 17:56:19
380
原创 微软无人机虚拟训练平台AirSim学习
AirSim的全称为“Aerial Informatics and Robotics Platform”。该平台的目的是训练自动驾驶无人机,并使它们更安全。
2017-02-18 17:28:30
2961
原创 使用synergy实现鼠标和键盘在两台机器间的共享
随着开发工作的任务越来越重,一台电脑已远不能满足我们的日常工作。因此越来越多的企业为员工配备了两台电脑,通常为一台笔记本和一台台式机。这里我就记录一下我是如何用synergy实现两台电脑之间共享键盘和鼠标的。首先需要安装synergy,synergy是一款跨平台的软件,它支持Windows,Linux和Mac。可以去http://symless.com/download/free/下载你需要的
2017-01-13 20:06:43
2576
原创 正负号标记法在数组相关程序中的使用
正负号标记法在一些关于数组的编程中往往能起到一些出其不意的效果,在这里我以几个示例来解释一下正负号标记法的用法。1,我们看一下LeetCode的第448题。该题告知你一个有n个元素的数组,数组的所有元素介于1到n之间(包含1与n),但是 一些元素出现了两次,其他的元素都只出现一次,找出所有没有出现的数值。要求你不用额外的空间,并且在O(n)时间复杂度下解决该问题。你可以假设返回的列表不算在额外的元...
2016-11-20 22:26:23
2464
原创 ssh无密码登录最简单的方法
只需要一条简单的命令即可实现ssh无密码登录,执行如下命令:ssh-copy-id username@ip然后会提示你输入密码,正确输入密码后,再执行ssh username@ip后就可以直接无密码登录到另一台机器了。简单吧,仅仅一条命令而已。
2016-11-20 21:54:08
485
原创 C/C++基础知识
1. 指针和引用的区别一个指针可以被多次赋值,但是引用只可以在创建的时候就必须初始化,初始化完毕后就不可改变;一个指针有它自己的内存地址和栈上的大小(x86上面为4byte),但是引用与原有变量共享相同的内存地址,但是在栈上仍然占用一些内存空间。指针可以指向NULL,但是引用必须引用一个有效的对象;一个指针需要使用*来访问它指向的内存地址,但是引用可以直接使用它引用的对象。指向类或者结
2016-11-05 12:58:54
392
原创 Ubuntu升级gcc版本到5.2.0
工作中需要将Linux机器上现有的4.7.3的gcc升级到5.2.0。在此记录下整个升级过程。1. 首先下载gcc 5.2.0的源码,gcc的官网在这里。也可以通过命令行进行下载。wget ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz22. 将下载下来的.tar.bz2文件进行
2016-09-28 14:00:46
5585
翻译 Linux中的共享库和gcc
对于程序员来说库(libraries)是必不可少的一个工具。可以将预先存在的代码进行编译,然后直接使用。它们经常提供通用的功能,像链表或者二叉树等可以用来存放各种数据,或者特定的功能像数据库的接口,比如MySQL。大多数大的软件工程包含许多的模块,其中的一些模块可能会在后面别的项目中用到,或者你只是出于组织的意愿想将其独立开。当你有一个重用的,或者逻辑独特的函数集,你将其编为一个库将会是非常有
2016-08-06 17:49:53
2426
原创 如何根据字典的键或值来排序
在Python中的字典是一个非常有用的容器,可以存储一些值的集合,并且可以通过键来访问它。字典的值可以是任何对象类型(字典甚至可以嵌入另一个字典中),键可以为任何可hash的对象,也就是它不可以被改变(所以字符串并不是唯一合法的键,但是可变的比如列表就绝对不能作为键)。不像Python的列表或者元组,在dict对象中的键值对并没有特别的顺序,也就意味着我们可以有一个如下的字典: numb...
2016-07-24 18:26:04
18168
原创 Python字典以键或值排序
>>> dict1={"Beijing":34, "Shanghai":40, "Guangzhou":29}>>> sorted(dict1.iteritems(), key=lambda A:A[0])[('Beijing', 34), ('Guangzhou', 29), ('Shanghai', 40)]>>> sorted(dict1.iteritems(), key=lambda
2016-06-24 16:53:48
1890
原创 bash中字符串和数组的遍历
让我们看如下的bash scriptA="china fengxi zhongguo"echo "echo varialbe A directly:" $Aecho ""echo "loop string"for i in $A;do echo $idoneA=("china" "fengxi" "zhongguo")echo "echo array directl
2016-06-24 16:46:34
8321
翻译 为什么在C++中需要虚函数
我自己是一个C++新手,这里是我对什么事虚函数,以及为什么我们需要它的理解:我们有这样两个类:class Animal{public:void eat() { std::cout << "I'm eating generic food."; }}class Cat : public Animal{public:void eat() { std::cout << "I'm
2016-06-19 17:14:33
693
翻译 C语言的内存布局
一个典型C程序的的内存表达包括如下部分:1. 文本段2. 初始化数据段3. 未初始化数据段4. 栈区5. 堆区一个运行进程额典型的内存布局1. 文本段一个文本段,也被称作代码段或者简称为文本,是一个程序在对象文件或者在内存中的其中一部分,包含可执行的指令。在内存区,文本段可能放在堆区或者栈区的下面,这主要是为了防止堆或栈的溢出从而覆盖它。通常情况下,
2016-06-19 12:03:20
708
原创 动态规划学习
1,最长子数组问题dp[i]表示以A[i]结尾的最大子数组的和。这种情况下有两种可能,一、dp[i]只包含A[i];二、dp[i]不只包含A[i],也包含前面的一些数字,至少要包含A[i-1],这种情况下,dp[i]=dp[i-1]+A[i]。所以得到如下dp[i]的递归关系式:dp[i] = max(A[i], dp[i-1]+A[i])同时 ,我们需要得到初始值,也就是dp[0],
2016-06-06 21:56:04
442
原创 强大的awk
1, 实现对文件的转置,具体看Leetcode的194题。#!/bin/bashawk '{for(i=1;i<=NF;i++){ A[FNR, i]=$i}}END{for(i=1;i<=NF;i++){ for(j=1;j<=FNR;j++){ printf A[j,i]" " } print ""}}' file.txt
2016-06-05 22:17:06
605
翻译 从多个表中检索记录
你把记录放在数据库中并没有什么好处,除非你从中检索它们,并对它们进行处理。这就是SELECT语句的目的--帮助你获得你的数据。SELECT可能是SQL语句中使用最频繁的语句了,但是它也可能是最需要技巧的一个;你选择使用的限制条件可能很复杂,并且涉及到对许多表中的列进行比较。SELECT语句的基本语法看起来像:SELECT selection_list # What...
2016-06-03 22:21:16
1216
原创 MySQL相关问题总结
1. 完全复制一个表比如数据库中有一个表A,我想生成一个表B,其内容与表A的内容完全一致,可以理解是对表A做一个备份。可以通过如下命令实现该功能:create table B as (select * from A);上面是最简单的命令实现该功能。当然还有更复杂一些的实现,比如我将表A通过mysqldump命令将其dump到一个A.sql文件里。fengxi@ubuntu:~$ m
2016-05-22 09:20:03
389
翻译 Python super()深度思考
如果你不曾被Python的内置super()函数所折服,很可能是你不知道它能够做什么,或者如何有效地使用它。很多文章写过super(),但是很多写的是错的。此文试着在以下方面进行提高:提供实际用例给一个它如何工作的清楚的模型显示每次让它工作的关键技术(showing the tradecraft for getting it to work every time)给出在使用super()建立类时的...
2016-05-20 11:37:38
1519
原创 查看进程id命令pidof
pidof命令的作用是显示指定程序的进程id。比如我想要知道当前vim进程的id,那么我就可以用pidof vim来得到进程id。如下所示:fengxi@ubuntu:~/C/linux_c/section5$ pidof vim4459
2016-05-14 16:50:49
1388
1
原创 Linux 监控内存,CPU,负载,硬盘等小结
1. 监控内存vmstat如下是执行vmstat后的输出:fengxi@ubuntu:~/bash$ vmstatprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi
2016-05-12 22:23:06
954
原创 Python write模式导致的bug
今天遇到一个因为写文件模式不正确导致的一个bug。因为这个bug很难被发现,所以我觉得有必要将这一个bug记录下来,往后再有使用write()函数的时候,就得小心,究竟是模式为"w",还是"wb"呢。简单说一下问题。有一个文件有很多行,我需要读取每一行,然后将每一行的内容写到一个文本文件中,然后再将文本文件的内容转为二进制文件。最后对这个二进制文件再进行处理。需求看似不复杂,一眼就能看明白。但
2016-05-11 14:17:07
2344
原创 awk getline命令解析
getline命令是我个人认为awk最强大的一个命令。因为它彻底改变了awk的运行逻辑。awk本质上就是一个for循环,它每次对输入文件的一行进行处理,然后转而执行下一行,直到整个文件的每一行都被执行完毕。整个过程是自动的,你无需做什么。但是,getline命令却可以让你去控制循环。当然,getline命令执行后,awk会设置NF,NR,FNR和$0等这些内部变量。我们先看一个简单的例子,打印
2016-05-10 22:52:18
11848
3
原创 awk参数处理
awk使用ARGC和ARGV来在命令行中传入一些变量到awk脚本中。其中:ARGC包含传入awk脚本的参数的总数目ARGV为一个包含所有传入awk脚本的参数的数组,该数组下标从0到ARGC-1。当你传入5个参数,ARGC的值为6ARGV[0]总是"awk"下面简单的一个例子展示了ARGC和ARGV怎么工作的:fengxi@ubuntu:~/bash/awk$ cat argum
2016-05-08 18:51:51
1172
原创 awk字符串函数总结
在这里总结一下awk的字符串函数。1. 长度函数length()2. 分段函数split()语法如下:split(input-string, output-array, separator)split函数将一个字符串分隔到一个数组中。它有三个参数,第一个为输入字符串,也就是要处理的字符串;第二个为一个输出数组;第三个为分隔符。3. 字符串抽取函数substr()语法如下
2016-05-08 18:06:32
16528
原创 pytest skip函数
在实际工作中,经常需要skip过某个test case,比如现阶段某个feature还没有开发完毕,但是先把test cases写到了pytest中,因此需要先把这个test case给skip掉。所以skip在pytest中有很大的用途,掌握这个skip功能会极大地提升工作效率。这里就列一下我所知道的skip掉test case的方法。方法一:使用@pytest.mark.skip(
2016-05-05 16:44:27
5708
翻译 Fixture终结/执行tear down代码
pytest支持当fixture跑出它的范围时指定的终结代码的执行。通过接受一个request对象到你的fixture函数,你可以调用它的request.addfinalizer一次或多次。# content of conftest.pyimport smtplibimport pytest@pytest.fixture(scope="module")def smtp(reques
2016-05-04 18:18:25
1404
原创 line ending对AWK print的影响
今天用awk的print想按照我想要的格式去打印,我的命令为: awk 'BEGIN{ORS="\n"} {if(NR由于payload.xml的数据过多,我只想打印前30行数据。结果如下: hello20002270008040FF010081DF02010381F40207FBE8040E03F0081FE7E01038007C207BCFD840E07DF081FEFBE100 h
2016-05-04 14:38:38
676
vcruntime140.dll丢失导致wamp安装失败解决方法
2016-02-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人