![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
a_ran
程序员,公众号:进击的代码
展开
-
oh-my-zsh git 慢/卡顿问题解决
在 oh-my-zsh 进入 包含 git 仓库目录时,会变的平时慢/卡顿如下图:原因是因为 oh-my-zsh 要获取 git 更新信息解决办法:设置 oh-my-zsh 不读取文件变化信息(在 git 项目目录执行下列命令)$ git config --add oh-my-zsh.hide-dirty 1效果如下图:如果你还觉得慢,可以再设置 oh-原创 2017-06-02 19:02:07 · 29808 阅读 · 4 评论 -
jsoncpp linux平台编译和 arm移植
jsoncppsoncpp is an implementation of a JSON (http://json.org ) reader and writer in C++. JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to rea原创 2015-04-25 23:15:09 · 6427 阅读 · 4 评论 -
json-c arm移植
json-cJSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into th原创 2015-04-25 23:10:35 · 5676 阅读 · 1 评论 -
libiconv arm移植
libiconvThis library provides an iconv() implementation, for use on systems which don’t have one, or whose implementation cannot convert from/to Unicode.下载http://ftp.gnu.org/pub/gnu/libico原创 2015-04-25 22:33:47 · 3826 阅读 · 0 评论 -
curl arm移植
curlcurl is a command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SF原创 2015-04-26 07:48:44 · 3574 阅读 · 0 评论 -
libpcap arm移植
libpcapa portable C/C++ library for network traffic capture.下载http://www.tcpdump.org/#latest-release或者到这里:http://download.csdn.net/detail/chinaeran/8631799编译注:此处使用 arm-linux-gnue原创 2015-04-26 07:44:34 · 4974 阅读 · 0 评论 -
libini arm移植
libiconvAn INI file parser that can read, edit and create large INI files. Usable under Microsoft Windows, DOS, Linux, etc. Supported languages are C, C++, Visual Basic, Java, TCL, Perl, Python, e原创 2015-04-26 07:47:13 · 2534 阅读 · 0 评论 -
C语言结构体初始化的三种方法
直接上示例了#include struct student_st{ char c; int score; const char *name;};static void show_student(struct student_st *stu){ printf("c = %c, score = %d, name = %s\n", stu->c, stu->score, stu原创 2015-03-30 19:46:38 · 21652 阅读 · 1 评论 -
Linux socket 网络编程常见问题总结
网络编程常见问题总结 串讲(一) 网络编程常见问题总结 6 I& I! E- x8 Z+ p- U- B 在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. . e3 Y0 @* _- e1 G- B% R 对于网络编程的更多详细说明建议参考下面的书籍 《UNIX网络编程》 《转载 2015-03-06 16:17:56 · 4907 阅读 · 0 评论 -
Linux socket 阻塞与非阻塞,同步与异步、I/O模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理转载 2015-03-05 17:05:39 · 5616 阅读 · 0 评论 -
每个 C 程序员都应知道的关于未定义行为的那点事(中篇)
译自:http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html(可能需翻墙)原日译版:http://blog-ja.intransient.info/2011/05/c-23.html 在第一部分,我们讨论了是什么未定义行为,以及它如何允许 C 及 C++ 编译器产生较“安全”语言性能为高之代转载 2015-01-06 09:18:25 · 3201 阅读 · 0 评论 -
每个 C 程序员都应知道的关于未定义行为的那点事(上篇)
译自:http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html(可能需翻墙)原日译版:http://blog-ja.intransient.info/2011/05/c-13.html 人们有时会问为什么打开优化后 LLVM 编译出的代码会引发 SIGTRAP。仔细钻研之后,他们发现 Clang 生转载 2015-01-06 09:14:44 · 2611 阅读 · 0 评论 -
cconv arm移植
cconvcconv(pronunciation: see-conv.) is iconv based simplified-traditional chinese conversion tool. It is NOT only transcoding programm, but also TRANSLATE tools between the Simplified Chinese and原创 2015-04-25 22:35:28 · 1319 阅读 · 0 评论 -
Linux fork 后 wait 获取子进程结束的状态示例
使用 fork 后,可能需要获取 fork 的进程的运行状况,比如有没有异常、崩溃。wait 在 man 中关键的描述如下:All of these system calls are used to wait for state changes in a child of the calling process, and obtain information about the child原创 2015-07-01 23:18:52 · 3927 阅读 · 0 评论 -
do {...} while (0) 在宏定义中的作用
如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:12#define __set_task_state(tsk, state_v转载 2015-06-15 10:55:24 · 962 阅读 · 0 评论 -
CentOS 6 升级 gcc 和 g++ 的方法
CentOS 6 系统自带的 gcc 或者 g++ 的版本是:g++ (GCC) 4.4.6. GCC 版本太旧,导致了很多使用上的不便,如:无法使用g++ -std=c++11 命令来编译 C++11、无法使用Vim的很多插件(YouCompleteMe等)。因此,有必要对它进行升级。对 GCC 升级无法直接使用:yum update gcc以下是升级的详细过程。转载 2017-08-03 16:23:23 · 2181 阅读 · 0 评论 -
c/c++ max/min 4种实现方法
1. 简单的宏实现#define max(a,b) (((a) > (b)) ? (a) : (b))#define min(a,b) (((a) 2. 内核的宏实现/* safe min & max *//* avoid ++/-- expand twice *//* compile warning if type diff */#define min(x, y) ({ \原创 2017-07-10 12:02:17 · 20783 阅读 · 2 评论 -
linux 下好用的 git 代码查看工具
在 git 合并两个分支产生冲突时,需要手动合并,而有些时候并不是很容易对比出该怎么合并,这就需要 git 代码查看工具来对比两个分支中当时同时修改了什么,该怎么合并以前项目有 redmine git 网站,现在发现 giggle 或 gitg 也很好用,特此记录注:个人更推荐 giggle,因为 gitg 查看代码时并不能查找(醉),giggle 浏览代码更方便安装方法:查看原创 2017-07-19 15:53:36 · 4389 阅读 · 0 评论 -
c/c++ curl smtp 发送邮件 foxmail 中文乱码问题解决
在Linux下,当使用 libcurl 库发送邮件时,发现 windows 下的 foxmail 接收邮件乱码,而浏览器端不乱码。解决办法:内容类型和 utf-8 编码设置在设置邮件内容 "To: ", 'From: ' 等内容之前添加:"content-type:text/plain;charset=utf-8\r\n"即可此外,如果你想发送 html 格式的邮件内容,可以设原创 2017-07-05 11:51:05 · 3488 阅读 · 0 评论 -
c/c++ curl smtp 发送邮件太长导致段错误的问题
在Linux下,使用 libcurl 库发送邮件,当邮件长度超过16000字节时(具体应该为 16000 ~ 17000之间), 执行到 curl_easy_perform(curl); 会发送段错误下面看一下 curl 提供的 smtp 示例:#include #include #include /* This is a simple example showing ho原创 2017-07-10 12:03:35 · 2346 阅读 · 0 评论 -
线程创建 pthread_create 中自定义参数注意事项
1. 函数原型intpthread_create(pthread_tthread, const pthread_attr_tattr, void(start_routine) (void), voidarg);本文主要讨论最后一个参数,同时传递多个的问题(如果只传递一个 int char 等长度小于指针的数据类型,可以直接传,然后在线程内把 (v原创 2017-02-10 18:34:10 · 5076 阅读 · 1 评论 -
Linux C语言 格式化输出时间函数 strftime()
今天在做根据日期时间+ID作为文件名存储时,用到了格式化时间的要求,如果单纯用struct tm这个结构体中获取到的信息来拼接字符串的话,如果是个位数,则不会在前面补0,比如我需要的是20130306,如果采用snprintf拼接字符串时获取到的时201336,这与我之前设想的有所不同,记得以前曾经自己实现过一个格式化的函数,但是比较繁琐。于是google了一下竟然还真有一个这样的函数:strft转载 2014-11-13 09:28:14 · 9025 阅读 · 1 评论 -
Linux中内存buffer和cache的区别
细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.先来说说free命令[root@server ~]# free -m total used free转载 2016-01-13 18:28:06 · 5769 阅读 · 0 评论 -
Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
获取本地 ip 地址,mac,通过域名获取对应的 ip,是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数),直接上代码:#include #include #include #include #include #include #include #include #include #include #include #define MAC_S原创 2014-12-11 20:15:03 · 9479 阅读 · 0 评论 -
Source Insight 3.X utf8 支持插件
继上次SI多标签插件之后,因为公司内部编码改为 utf8 编码, 因此特意做了这个Source Insight 3.X utf8 插件.下载链接: http://download.csdn.net/detail/chinaeran/9106117安装说明:解压msimg32.dll sihook.dll siutf8.dll 到Source Insight 3.X安装目录转载 2015-09-15 09:17:25 · 2304 阅读 · 0 评论 -
Linux 线程分离状态
线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用转载 2015-02-10 20:09:12 · 2299 阅读 · 0 评论 -
Linux 线程调度与优先级设置
Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平转载 2015-02-12 10:46:17 · 34789 阅读 · 1 评论 -
阮一峰:Make 命令教程
代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建。本文介绍Make命令的用法,从简单的讲起,不需要任何基础,只要会使用命令行,就能看懂。我的参考资料主要是Isaac转载 2015-02-25 13:58:54 · 4836 阅读 · 0 评论 -
ubuntu/linux mint 创建proc文件的三种方法(三)
在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试。大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法。方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险);方法二:使用proc_create和seq_file创建proc文件(较方法三简洁);方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整);示例四:在proc文件中使用内核链表的一个示例(用的方法三)。原创 2014-07-10 02:53:48 · 9854 阅读 · 2 评论 -
ubuntu/linux mint 创建proc文件的三种方法(四)
在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试。大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法。方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险);方法二:使用proc_create和seq_file创建proc文件(较方法三简洁);方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整);示例四:在proc文件中使用内核链表的一个示例(用的方法三)。原创 2014-07-10 02:57:11 · 2763 阅读 · 0 评论 -
Linux rmdir 命令实现(特别版)
本文地址:http://blog.csdn.net/a_ran/article/details/25250583在学习linux系统编程的时候,实现了rmdir命令的特别版本。因为rmdir只能删除空文件夹,而我实现的功能相当于 rm -rf path...实现的功能: 递归删除指定文件夹的所有文件程序说明:1. my_rmdir(): 即为递归删除动作的自定义函原创 2014-05-10 23:09:29 · 2928 阅读 · 1 评论 -
Linux ls 命令实现(简化版)
在学习linux系统编程的时候,实现了ls命令的简化版本。实现的功能如下:1. 每种文件类型有自己的颜色 (- 普通文件, d 目录文件, l 链接文件, c 字符设备文件, b 快设备文件, p 管道文件, s socket文件。共7种)2. 支持的参数有 -hali (a: 显示隐藏文件, i: 显示inode节点号,l: 以列表形式显示文件的详细信息,h: 人类可读的文件大小显示原创 2014-05-07 08:21:07 · 5852 阅读 · 1 评论 -
工厂模式简介(C++实现)
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍工厂模式的实现。 工厂模式属于创转载 2014-02-18 11:03:22 · 1050 阅读 · 0 评论 -
杨辉三角的变形 庞果网 (C/C++实现)
注:已通过测试题目详情: 1 1 1 1 1 2 3 2 11 3 6 7 6 3 1以上三角形的数阵,第一行只有一个数1, 以下每行的每个数,是恰好是它上面的数,左上的数和右上数等3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-原创 2014-02-11 17:34:35 · 1697 阅读 · 0 评论 -
排列搜索 庞果网(C语言版,虽实现了,但未通过测试,时间超过3s,使用的是全排序方法,愿大神指导)
注:虽然没有通过测试,但学会了用递归实现全排序的方法(话说此题的通过率真低呀,哪位高手知道正确答案呢?)题目详情:设数组a包含n个元素恰好是0..n - 1的一个排列,给定b[0],b[1],b[2],b[3],问:有多少个0..n-1的排列a,满足(a[a[b[0]]]*b[0]+a[a[b[1]]]*b[1]+a[a[b[2]]]*b[2]+a[a[b[原创 2014-02-08 23:18:09 · 2364 阅读 · 4 评论 -
寻找直方图中面积最大的矩形(C语言版)
寻找直方图中面积最大的矩形。我是用循环实现的,肯定不是最优的算法,欢迎留言讨论。给定直方图,每一小块的height由N个非负整数所确定,每一小块的width都为1,请找出直方图中面积最大的矩形。原创 2013-12-20 11:21:55 · 3653 阅读 · 0 评论 -
C++ explicit关键字 详解(用于构造函数)
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性转载 2013-12-18 22:36:26 · 19562 阅读 · 1 评论 -
C++ STL std::copy 详解
如果要把一个序列(sequence)拷贝到一个容器(container)中去,通常用std::copy算法,代码如下:std::copy(start, end, std::back_inserter(container)); 这里,start和end是输入序列(假设有N各元素)的迭代器(iterator),container是一个容器,该容器的接口包含函数push_back。假设conta转载 2013-12-17 23:37:16 · 47985 阅读 · 5 评论 -
经典问题----倒水(详细解析)
倒水 有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。 我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。 可以进行的操作是: 把一个容器灌满; 把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸); 用一个容器的水倒入另外一个容器,直到倒出水的容器空或者倒入水的容器满。 问是否能够通过有限次操作,使得水缸最后恰好有C升水。转载 2013-12-17 12:30:45 · 16082 阅读 · 1 评论 -
Linux系统编程之访问文件夹及其文件属性
1. 文件夹操作:opendir, readdir, closedir2. 文件属性:lstat代码示例如下实现功能:获取指定文件夹下所有的文件(使用递归),因此就能计算所有文件大小之类的啦。。。#include #include #include #include #include #include #include #include #define BUF_原创 2014-08-19 20:33:02 · 1728 阅读 · 0 评论