- 博客(95)
- 资源 (12)
- 收藏
- 关注
原创 用#include的文件中的内容给变量赋值
/*** * data.h*/{1, 1},{2, 2},{3, 3},/*** * main.c*/#include <stdio>struct Data { int a; int b;};static g_array[] = {#include "data.h"};int main(int argc, char ** argv){ in...
2019-09-27 10:37:58
1033
2
转载 shell脚本函数的用法
#!/bin/bashdo_config() { echo "do_config"}do_make() { echo "do_make"}do_install() { echo "do_install"}print_usage() { echo "Usage: do_config, do_make, do_install"}case "$1" in "conf...
2019-07-22 13:46:31
316
原创 [代码片段] 字符串替换
void replace(string& orignStr, const string& oldStr, const string& newStr) { size_t pos = 0; string::size_type newStrLen = newStr.length(); string::size_type oldStrLen = oldStr...
2019-03-25 19:44:34
284
原创 [代码片段] 创建TCP套接字
#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <sy...
2019-03-25 19:24:30
279
原创 Ubuntu14.04 运行VNote 后话
在安装了dbus后,重启机器后发现启动停留在黑屏,无法进入桌面环境了,可急死人了。再次重启,这是按着Ctrl+Shift+F1 虽然可以进入ubuntu终端界面,不过ifconfig后发现,连不上网络了。百度了一些相关信息后,发现很多网友都遇到了更新dbus后与我一样的问题。此时想着,最近也就安装了dbus这个软件,先卸载把。在dbus的源码目录下执行:make uninstall顺利地...
2019-03-25 11:35:03
650
原创 Yocto 解题录:QA Issue: PN: lib-Test is upper case
Yocto默认将recipe生成rpm包,为了生成ipk包,可以做如下修改:将build/conf/local.conf中的PACKAGE_CLASSES ?= "package_ipk package_rpm"改成PACKAGE_CLASSES ?= "package_rpm"这就是告诉Yocto,优先生成ipk包,生不成ipk包,再生成rpm包之后,做个测试,尝试为recpie...
2019-03-21 20:23:50
912
原创 [代码片段] 打开文件读写
打开文件读int fd = open(pcm_file, O_RDONLY, 0)读文件static ssize_t safe_read(int fd, void *buf, size_t count) { ssize_t result = 0, res; while (count > 0) { if ((res = read(fd, buf, count)) == 0) ...
2019-03-21 19:51:10
157
原创 Ubuntu14.04 运行VNote
本机Ubuntu14.04 已经安装了Qt5.11使用如下命令clone vnote的源码git clonegit@github.com:tamlok/vnote.git --recursive // vnote使用了git submodule,使用--recursive选项clone所有submodulecd vnoteqmake // 生成Makefile文件make...
2019-03-21 11:38:46
1383
原创 Yocto 解题录:No rule to make target `clean'
话说遇到这个问题,是很困惑的,这clean任务怎么会报错呢。在把recipe写好后,执行:bitbake michaelmaeditor报以下错误:Log data follows:| DEBUG: Executing shell function do_configure| NOTE: make clean| make: *** No rule to make targe...
2019-03-19 20:22:42
4676
原创 Yocto 解题录:Unable to start bitbake server
今天尝试重新拿从github上面clone一份yoctoproject进行构建,执行以下步骤git clone git://git.yoctoproject.org/poky.git poky_newcd poky_newsource oe-init-build-envvim conf/local.conf 将下面变量前的“#”符号删除 DL_DIR ?= "$...
2019-03-18 20:05:11
19179
1
原创 libssh2库的接口设计模式
C语言的项目代码的架构设计很少有书籍介绍到,今天来谈论一下一个通用的软件代码架构模型。项目工程中有include目录和src目录。src目录中的所有文件最终会被生成一个so文件。在部署的时候将这个so文件和include目录中的所有h文件一起发布,这样,当用户程序包含了include目录中的文件后,就能使用其中的API函数了。接着,就以libssh2.h这个文件做说明。这个文件没有包含任何...
2019-03-17 12:17:34
805
原创 AS3.3 import AIDLMusicPlayer
未来工作要和AS打交道了。AS的版本是3.3,自己的系统是ubuntu 14.04 64,今天在此记下如何成功import一个github工程的日志。首先在自己的目录下执行git clone https://github.com/agxxxx/AIDLMusicPlayer.git这样,在执行的目录下会多出一个名叫AIDLMusicPlayer的目录,这个里面就是接下来要导入到A...
2019-03-13 21:10:23
183
转载 [代码片段]linux设置套接口非阻塞特性
void set_noblocking(int sock){ int opts = fcntl(sock, F_GETFL); if(opts < 0) { perror("fcntl(sock, F_GETFL)"); exit(1); } opts = opts | O_NONBLOCK; if(fcntl...
2018-07-24 23:07:08
294
转载 输出重定向使用案例总结
假设两个文件 test.sh存在和test1.sh不存在ls test.sh test1.sh 1>svc.txt 把正确输出重定向到文件svc.txtls test.sh test1.sh 1>svc.txt 2>err.txt 把正确输出重定向到文件svc.txt,把错误输出重定向到文件err.txtls test.sh test1.sh 2>&...
2018-07-08 22:08:41
324
转载 关于临时变量的值的修改
#include <iostream>int A(){ return 1;}class B{public: int m;public: B() :m(0) { } B& operator++() { ++(this->m); return *th...
2018-07-08 21:54:22
606
转载 windows cmd 设置颜色
windows cmd 设置颜色恢复到默认设置 直接键入color命令设置颜色 键入color 背景色前景色 背景色取值 颜色效果 前景色取值 颜色效果 0 黑色 8 灰色 1 蓝色 9 淡蓝色 2 绿色 A 浅绿色 3 浅绿色 B 淡浅绿色 4 红色 C 淡...
2018-06-26 22:48:06
2439
原创 if_else_switch_case写法
第一段#define FUNCTION_COOUNT 3#define UNDEFINED -1typedef struct { int nFunction_num; int (*pFun)(int* nInput,int* nOutput);}DISPATCH_ITEMS;DISPATCH_ITEMS sDispatcher[FUNCTION_COOUNT];
2018-01-24 21:11:36
253
原创 我感觉我要学GO之一
要学一下GO了,工作中要用到。第一步我不怎么关心语法啊什么的,我而是关心一个GO工程的目录结构是怎么样的。通过学习这篇文章《理解Golang包导入》,我大体初步了解了一个Go工程的基本结构。以下在windows下使用LiteIDE进行Go的开发与测试目录结构:G:\Go_project\pkgtest\----------------------pkg\------------
2017-10-06 16:27:37
416
原创 [cmake] 使用静态库archive文件
上一篇文章中,我们制作了一个archive文件,那接下来就是如何使用它了。首先来看一下程序的目录结构t2├── build├── CMakeLists.txt└── src ├── CMakeLists.txt └── main.c最外层的CMakeLists.txt中内容为CMAKE_MINIMUM_REQUIRED(VERSION 2.8)PROJECT(M
2017-07-16 21:25:33
1462
原创 [cmake] 制作一个静态库archive
学习cmake的原因:最近又捣鼓cmake了,源于浏览github的时候,发现很多项目都是必须由cmake安装,感觉是大势所趋啊。同时也接触了autotools,qmake,scons等其他的构建工作,不过感觉还是cmake简单,高效。因为,居然仅花了半天时间就成功的把项目由qmake切换到cmake了,还没有什么大错误,真是太神奇了。一开始看见cmake,很畏惧,因为cmake的语句好抽象,
2017-07-10 22:47:10
1449
原创 C和C++文件混合编译
一个项目中若同时存在.c文件和.cpp文件,该如何编译呢?首先,来看一下编译的一些小知识:1.gcc编译*.c/*.cpp文件依据各自的文件类型各自编译为C型目标文件和C++型目标文件2.g++编译*.c/*.cpp文件,都是编译为C++类型的目标文件3.在第2点基础上,使用g++时,不论是*.c还是*.cpp都将链接std c++库。而gcc是一句各自文件类型链接相应的std c
2017-06-07 23:52:24
80774
5
原创 linux动态库so的运用
so文件的运用在C和C++变成中运用的非常广泛,以下博文是我的使用心得。一.so的静态加载在gcc(或者g++)中使用-l 参数在编译器加载so文件。这样的使用场景,应用程序必须要有于so一同发布的h文件,因为h文件就是so的一个符号列表索引,没有了这个h文件,从何谈起调用so中的函数。二.so的动态加载使用dlsym等函数在应用程序运行时加载so文件。由于dlsym等系列
2017-06-06 22:40:36
689
原创 dup和dup2
阅读一些C或者C++第三方库开源源码的时候,有些源码中会使用dup和dup2这两个函数,由于在工作中基本上用不到这两个函数,所以它们对阅读源代码提升了一些难度。虽然当时看过相关博文后能理解,不过过了一段时间就又忘了,今天不算总结,就把这两个函数的经典特性给blog出来。先看一下dup和dup2函数的原型:#includeint dup(int fd);int dup2(int fd1,
2017-06-06 03:45:08
605
原创 python 阅读github上某项目所得总结
有如下例子程序a = [1, 2, 3]b = (1, 2, 3)if isinstance(a, (list, tuple)): print('1.ok')else: print('1.error')if isinstance(b, (list, tuple)): print('2.ok')else: print('2.error')if isinstance(a,
2017-03-16 23:04:07
871
原创 python 生成器和lambda的故事
今天在思考python表推导的语法的时候,很好奇这样的结果:a = [ x for x in [1, 2, 3] ]b = ( x for x in [1, 2, 3] )print('a type: {}'.format(type(a)))print('b type: {}'.format(type(b)))输出:a type: b type: 感觉[和]两个符号表示列表,那么
2017-03-14 23:39:50
1061
原创 python 给生成器发信息
有如下函数:def gen(): li = [1, 2, 3, 4] for i in li: yield ia = gen()try: while True: print(a.next())except StopIteration: print('generator ({}) has finished.'.format('a'))print(gen)print(
2017-03-12 22:55:29
315
原创 python 继承中的self和__init__
有如下继承关系:#python 2.7class GrandFather: def __init__(self): print('grandfather') print('---{}\'s __init__ with addr: {}'.format(self.__class__.__name__, self))
2017-03-11 23:30:11
2051
原创 python 构建一个回调函数2
class Test: def __init__(self): self.f_list = [] def register(self, function): if function in self.f_list: pass else: self.f_list.append(function) def do_test(self): params = []
2017-03-11 22:49:08
600
原创 python 构建一个回调函数
在工作中,回调函数使用的场景是非常多的,下面的例子程序利用了python的属性机制构建了一个回调函数class Callback: def __init__(self, instance, function_name): self.instance = instance self.function_name = function_name def action(self, par
2017-03-11 22:26:22
8433
原创 python 那些待深入理解的东西
class Father:#2.7版本的老式类 def __init__(self): pass def function(self): print(type(self)) print(isinstance(self, Son)) print(isinstance(self, Father)) print(self.mlist)class Son(Father):
2017-03-10 00:13:35
295
原创 Linux命令之tr
1.tr '[0*4]' '*' 若data.txt中的任意行中出现了连续4个0,就是4个****替换。必须是[0*4]形式,不能是0*4,否则数字4会被替换成*,原因是[0*4]是tr的语法[CHAR*REPEAT],儿后面是*也可以是****,这里只使用了一个*,是因为tr的一个特性:当SET1(上面的[0*4])的长度大于SET2(上面的*)时,SET2会重复SET1的最后一个字符。例如
2017-02-13 23:04:43
431
原创 linux下把log4cxx封装成so动态库文件(一)
这是一个经常遇到的问题,在软件开发过程中,需要将某些功能封装成一个独立的模块,这样维护升级也很方便。现在我们就要把开源日志库log4cxx封装成so动态加载库文件。在上一篇文章《log4cxx日志库RedHat下安装》中,我们已经将log4cxx安装在home/mac/log4cxx/log4cxx下了,那么接下来的操作我们就继续在这个路径下进行。还是先tree一下/home/mac/lo
2014-07-27 20:56:29
3217
原创 log4cxx日志库RedHat下安装
今天领导交给我一个任务:把log4cxx库在Redhat系统上面安装起来首先,我得到信息,安装这个库一共需要三个软件apr-1.4.6.tar.gzapr-util-1.4.1.tar.gzapache-log4cxx-0.10.0.tar.gz安装顺序是从上到下的,为什么,因为后者的安装依赖前者。我整理了一下思路,有如下几个问题:1.安装log4cxx库到
2014-07-21 23:16:36
1935
原创 C语言实现状态设计模式
#include #include #include #ifndef VIRTUAL#define VIRTUAL#endif#ifndef DELETE#define DELETE(X) do { free(X);X = NULL; } while(0)#endif#define NEW(TYPE,pInstance,SUBTYPE) struct TYPE* pInst
2014-05-09 18:13:23
2158
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人