guotianqing的博客

人生如画,画如人生。

Linux c 遍历目录及目录下文件

背景 某项目中需要对指定目录下的所有文本文件加密,于是需要搜索指定目录下所有的文本文件。 要想搜索,先要能够遍历指定目录下所有文件,并且支持对递归子目录的遍历。 分析 我们知道,许多操作系统中的目录结构都是使用树结构。 使用递归的方法定义树是比较容易的。一棵树地一些节点的集合。 这个集合可以...

2019-04-06 13:31:16

阅读数 23

评论数 0

历年春晚广告

概述 春晚,是每个中国人每年的期待。 与节目内容同样值得关注的,恐怕就是在春晚这个超级黄金时段播放的广告了。 这里不讨论广告的价格及价值,仅描述广告的行业,因为我觉得,它也代表了中国社会当前发展最迅猛的行业。 历史回顾 从1984年第二届春晚开始,广告便出现了。 1984:钟表,倒计时画面使用...

2019-03-31 15:21:23

阅读数 15

评论数 0

linux c 线程池简介

概述 在服务器开发过程中,使用并行/并发编程是经常会遇到的事情。 基于进程的服务器和基于线程的服务器的区别就不详述了,这里简介一下多线程的优缺点: 优点: 多个线程同时执行,提高了程序的执行效率 提高了资源利用率 缺点: 线程越多,cpu调度的开销越大 程序的复杂度上升 使用线程池的优点...

2019-03-31 15:10:18

阅读数 28

评论数 0

Linux C中判断cpu大小端序的几种方法

背景 在网络编程中,处理协议时,经常会遇到大小端序的问题,处理出错就会得到错误的结果。 一般而言,x86和arm处理器使用小端序,而PowerPC使用大端序,在网络中传输的字节使用大端序。 作为程序员,需要根据工程标准,进行大小端序的转换。 基本概念 大端序(大端模式):是指数据的低位保存在内...

2019-03-24 13:32:04

阅读数 30

评论数 1

有效的括号

问题 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例: 输入: "()" 输出:...

2019-03-02 19:32:58

阅读数 41

评论数 0

最长公共前缀

问题描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 例子: 输入: ["flower","flow","flight"] 输出: &...

2019-02-27 22:30:42

阅读数 22

评论数 0

atoi精简实现

问题描述 实现一个 atoi 函数,使其能将字符串转换成整数。 要求如下: 该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续...

2019-02-24 21:57:11

阅读数 24

评论数 0

最长回文子串

问题 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效...

2019-02-18 22:24:00

阅读数 33

评论数 0

寻找两个有序数组的中位数

问题 本问题来自leetcode。 给定两个大小为 m 和 n 的有序数组 A 和 B。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例: A = [1, 3] B = [2] 则中位数...

2019-02-17 13:13:06

阅读数 320

评论数 0

umount一个目录后,ls查看该目录下仍有文件

问题 最近在调试一个嵌入式设备flash上的目录时,出现一个看似奇怪的现象: 执行卸载目录命令: umount test后,ls test查看该目录下仍存在文件。 重启设备,在mount前,ls查看时仍然有上述文件。 感觉很奇怪,查看了资料,原来是把该目录mount在了flash上,解决了这个问题...

2019-02-02 19:42:39

阅读数 113

评论数 0

scp免密码远程传输文件

背景 在工作和学习环境中,经常需要使用多台服务器进行开发测试,免不了在各个服务器之间传输文件。 scp是经常使用的用于远程传输文件的指令。 scp的安全性要求输入对端的的密码,如果频繁从同一台主机向另一主机传输文件,实在是麻烦。 设置免密码传输 在发送端主机上执行ssh-copy-id命...

2019-01-20 20:58:10

阅读数 130

评论数 0

Source Insight4.0常用设置

1. 显示文档文件名标签 在Source Insight4.0中打开多个文件时,在文档显示窗口会显示文件内容,但新打开的文档会覆盖掉原先的文档。 且不会显示每个文档的文件名标签,此时如果想要查看原来的文件,就要找到原来的文件再打开,特别麻烦。 在SI4.0中设置时,选择 view-tab即可打开文...

2019-01-20 20:26:16

阅读数 54

评论数 0

精简Makefile模板

概述 关于Makefile的介绍,可以参考Makefile文件编写及make命令使用简介。 Makefile在linux上编程中不可或缺。不管是大型的工程还是只有几个c文件的小项目,如果每次都要从头开始编写Makefile,就是一个重复造轮子的过程了。 因为Makefile中一些基本的框架和...

2019-01-06 11:33:20

阅读数 66

评论数 0

远程过程调用(RPC)简介

Remote Procedure Calls(远程过程调用) 本文译自:https://www.cs.rutgers.edu/~pxk/417/notes/03-rpc.html 简介 sockets是客户端/服务器网络通信模型中的基础,它为程序与程序之间建立连接、收发信息提供了相对简单的机...

2018-09-24 12:19:39

阅读数 365

评论数 0

使用UltraEdit复制16进制数据

背景 最近需要处理一些数据,以前总是使用UltraEdit处理诸如文本、二进制数据,有时也简单地看代码、脚本等。用习惯了,感觉也顺手了。 用UE查看数据很方便,但复制数据时却遇到了一点麻烦。 使用工具生成了一些二进制存储的随机数,打开后会同时显示十六进制和字符。这是,选中数据复制时,粘贴的却...

2018-09-15 20:24:30

阅读数 1209

评论数 0

git中submodule子模块的添加、使用和删除

背景 项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率。 使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可。 本文主要讲解子模块相关的基础命令,详细使用请参考man page。 子模块的添加 添加子模块非常简...

2018-09-04 22:32:19

阅读数 10222

评论数 4

linux中的网络命名空间的使用

背景 项目中使用了网络命名空间,用来隔离不同空间中的应用。 命名空间的使用,类似虚拟化技术,在同一台物理机上,创建的多个命名空间相互独立,各个空间的进程独立运行,互不干扰。 在此作一总结,学习加深理解。 linux命名空间 命名空间(Linux namespace)是linux内核针...

2018-09-03 22:29:24

阅读数 688

评论数 0

linux文件描述符限制及使用详解

背景 最近调试一款网关设备,它部署在客户端和服务端之间。在工作时,它同时接收来自客户端的连接,同时又向服务端建立连接。 网关在完全接收来自客户端的数据后,会校验数据合法性,只有数据合法,网关才会向服务器建立连接并转发数据。 这样,当存在一个客户端和服务端的通信时,网关有可能需要同时建立两个连...

2018-09-02 11:26:36

阅读数 892

评论数 0

safe_free不safe——如何正确free动态分配的存储空间

简介 与java等语言不同,c语言编码中需要手动管理使用的内存。这增加了程序对内存使用和管理的灵活性,但也增加了程序员的负担。 在使用内存时可以使用malloc()簇函数,使用完毕后务必手动使用free()释放内存,否则内存泄漏可能导致服务崩溃。 safe_free不safe 之前在程...

2018-08-23 21:29:42

阅读数 261

评论数 0

调试陷入死循环程序的方法

概述 应用程序陷入死循环后,界面可能不会有任何输出,所有的业务也不通,不易定位。 陷入死循环的程序占用的cpu使用率较高,通常可以通过使用top命令看出来。 对于多线程的程序,需要耐心调试,本文给出笔者近期使用的方法。 调试步骤 测试程序 编写一个多线程进入死循环的测试程序,如...

2018-08-20 22:25:08

阅读数 1663

评论数 0

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