编程
文章平均质量分 89
知识的港湾
高级软件开发工程师
展开
-
代码重构之路 --我的2022年总结
我的代码重构经历及我对代码重构的总结思考。原创 2023-01-18 20:51:45 · 1704 阅读 · 0 评论 -
Linux下一个简单的日志系统的设计及其C代码实现
1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件。在日志文件中存放程序流程中的一些重要信息,包括:变量名称及其值、消息结构定义、函数返回值及其执行情况、脚本执行及调用情况等。通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题。因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求。 本文详细地原创 2015-05-22 15:17:45 · 20420 阅读 · 36 评论 -
【字符串处理算法】将输入字符串中的各个单词反序的算法设计及C代码实现
一、需求描述输入一个字符串,编写程序将该字符串中的各个单词反序拼装并输出。例如,如果输入的字符串是“Hello, how do you do”,那么输出的字符串为“do you do how Hello,”。注意保留各个单词之间的空格及相应的标点符号。 二、算法设计通过观察示例字符串(即“Hello, how do you do”),我们可以看到该字符串中各个单词与空格之间的关系为:单词总数=空格原创 2016-02-15 18:52:12 · 6182 阅读 · 0 评论 -
【字符串处理算法】字符串包含的算法设计及C代码实现
一、需求描述给定一个长字符串和一个短字符串,编写程序判断短字符串中的所有字符是否都在长字符串中。如果是,则长字符串包含短字符串;反之,不包含。为了尽量包含大多数情况,字符串中可以包含大小写英文字母、数字和各种标点符号,并且区分大小写字母。下面举几个例子予以说明:1.如果长字符串是“ABCDE”,短字符串是“ADC”,那么短字符串中的所有字符都在长字符串中,即长字符串包含了短字符串。2.如果长字符串原创 2016-02-17 12:01:34 · 3712 阅读 · 0 评论 -
【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
一、需求描述输入一个字符串,编写程序找出这个字符串中的最长连续字符,并求出其连续出现的次数。例如,“123444445”中的最长连续字符是4,其连续出现的次数为5;“abcddef”中的最长连续字符是d,其连续出现的次数为2;“ab”中的最长连续字符是a,其连续出现的次数为1。 二、算法设计我们可以采取逐个比较字符串中各个字符的办法来获取最长连续字符及其连续出现的次数。程序的总体流程如图1所示。图原创 2016-03-16 17:05:41 · 4237 阅读 · 0 评论 -
【字符串处理算法】字符串转换为整数的算法设计及C代码实现
一、需求描述输入一个由数字构成的字符串,编写程序将该字符串转换为整数并输出。例如,如果输入的字符串是“12345”,那么输出的整数是12345。注意,不要使用C语言的库函数atoi。 二、算法设计我们都知道,如果给定一个整数123,那么其表示方法是:123=1*100+2*10+3。也就是说,一个整数是由其各位上的数字按照位数求和组成的。因此,这个需求的解决方法很简单,只要将字符串中的各位数字按照原创 2016-02-19 14:39:19 · 7884 阅读 · 1 评论 -
【字符串处理算法】删除特定的字符的算法设计及C代码实现
一、需求描述输入一个长字符串和一个短字符串,编写程序从长字符串中将在短字符串出现过的字符删除掉。例如,长字符串为“1234abcd”,短字符串为“3a”,那么经程序处理之后的字符串为“124bcd”;又如,长字符串为“good bye”,短字符串为“obh”,那么经程序处理之后的字符串为“gd ye”。 二、算法设计我们可以通过将长字符串中的字符逐个与短字符串中的字符相比较来判断是否应该将某个字符原创 2016-03-18 17:17:33 · 3845 阅读 · 0 评论 -
【字符串处理算法】回文判断的算法设计及C代码实现
一、需求描述输入一个字符串,编写程序判断这个字符串是否是回文串。为了便于说明,设定输入的字符串分为中文字符串和非中文字符串两种。其中,中文字符串中仅包含中文字符,非中文字符串中不包含中文字符。所谓回文串,是指正读和反读都一样的字符串。下面举几个例子予以说明:1.“level”是一个非中文字符的回文串,因为正读和反读都是“level”。2.“Good”不是一个非中文字符的回文串。3.“我爱我”是一个原创 2016-02-22 17:41:14 · 7242 阅读 · 6 评论 -
【字符串处理算法】获取最长公共子串的算法设计及C代码实现
一、需求描述输入两个字符串,编写程序获取这两个字符串的第一个最长公共子串。例如,输入的字符串为“abcdef”和“fecdba”,那么这两个字符串的第一个最长公共子串为“cd”。 二、算法设计我们可以首先寻找两个字符串中的第一个相等的字符,然后分别向后移动来比较对应位置的字符是否相等。即如果字符串1为“1234abcd”,字符串2为“abd”,那么首先发现字符串1中的第五个字符“a”与字符串2中的原创 2016-03-22 17:14:30 · 3283 阅读 · 0 评论 -
Linux中的静态库和动态库简介及生成过程示例
在实际的软件开发项目中,不是每一行代码都需要我们亲自写。在我们的软件产品中,有一些代码(尤其是函数)的出现频率很高,它们可以被当作公共代码来反复使用。为了避免重复劳动,我们就把这些公共代码编译为库文件,供需要的程序调用。在Linux中,库分为静态库和动态库两种。本文对静态库和动态库进行了详细的介绍,并用实际的C代码演示了这两种库的生成过程。原创 2016-05-05 18:28:32 · 4684 阅读 · 0 评论 -
Linux中在主机上实现对备机上目录及文件的操作的C代码实现
编写程序,完成在主机上实现对备机上目录及文件的操作。例如,主机为A,备机为B,要求编写的程序运行在A机上,该程序实现在B机上创建文件目录及拷贝文件的操作。原创 2015-12-25 15:06:02 · 2232 阅读 · 2 评论 -
两种Linux下非交互式命令的实现
一、概述在Linux环境,有多种实现自动化的脚本语言,如Shell、Python、Perl、Tcl等。Shell语言因与Shell外壳结合紧密,是最常见的实现自动化的脚本语言。同时,在Linux环境中存在大量功能单一的小工具——通常它们在指定输入后,立即就可获得输出,例如echo、cat等字符串/文本打印工具,又或者是如sed、awk等最常用的字符串编辑工具。通过编写Shell脚本,我们可以反复利原创 2015-07-13 19:29:17 · 8173 阅读 · 0 评论 -
HDFS简介及用C语言访问HDFS接口操作实践
本文结合作者本人及同事对HDFS的学习和实践的理解,首先介绍HDFS的特点和重要SHELL命令(hadoop和hdfs命令)的使用,接着介绍HDFS提供的C访问接口LIB HDFS及其跟普通文件系统的C API的异同,然后介绍如何利用LIB HDFS接口实现简单的HDFS客户端并列举相关应用实例,最后针对编写HDFS客户端中遇到的问题进行描述和分析。原创 2015-08-12 17:40:00 · 11809 阅读 · 2 评论 -
用gdb分析core文件及常见gdb命令操作示例
本文以一个实际的程序为例,介绍了用gdb分析core文件的方法和步骤,同时演示了常见gdb命令的操作方法。原创 2015-10-08 19:09:05 · 19340 阅读 · 2 评论 -
SOAP协议和基于SOAP的开发流程详述
简单对象访问协议(SOAP)是交换数据的一种协议规范,是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。在实际的软件开发项目中,SOAP大多用于处理用户数据,也即实现开户、销户、改户和查户等功能。本文根据作者实际从事过的基于SOAP的项目开发,对SOAP协议和基于SOAP的开发流程进行了详细的介绍。希望大家通过此文,能够对基于SOAP协议的开发有一个全面的了解。原创 2015-09-10 18:45:33 · 18175 阅读 · 4 评论 -
读取配置文件的shell脚本实现
读取配置文件的shell脚本实现。原创 2015-12-12 11:13:04 · 12744 阅读 · 4 评论 -
展示C代码覆盖率的gcovr工具简介及相关命令使用示例
对展示C代码覆盖率的gcovr工具进行了简介,并示例了相关命令的用法。原创 2015-12-18 17:09:16 · 14849 阅读 · 0 评论 -
查找栈的增长方向的分析及C代码实现
用C代码实现查看栈的增长方向。原创 2015-12-02 14:31:55 · 3044 阅读 · 5 评论 -
R语言概述
R是一个有着统计分析功能及强大作图功能的软件系统,是由Ross Ihaka和Robert Gentleman共同创立。它是属于GNU系统的一个自由、免费、源代码开放的软件,同时也是一个用于统计计算和统计制图的优秀工具。本文对R进行了详细的介绍。原创 2016-01-26 18:49:41 · 4691 阅读 · 2 评论 -
将前缀和后缀相同的文件移动到同一个目录的算法设计及C代码实现
将前缀和后缀相同的文件移动到同一个目录的算法设计及C代码实现。原创 2016-05-14 13:55:56 · 6254 阅读 · 0 评论 -
将源目录中的文件按照前缀分发到不同目录中的算法设计及C代码实现
将源目录中的文件按照前缀分发到不同目录中的算法设计及C代码实现原创 2016-05-17 19:15:57 · 3754 阅读 · 0 评论 -
Swift中的条件操作和循环
在Swift中,使用if和switch语句来进行条件操作,使用for-in、for、while和repeat-while语句来进行循环。原创 2016-10-28 20:20:43 · 1675 阅读 · 0 评论 -
Nginx+FastCGI编译部署过程详述
最近,因为工作的需要,我们用Nginx+FastCGI部署了一个高性能的Web服务器。在部署的过程中,我们遇到了很多问题,也参考了一些文章,发现很少有文章将整个编译部署的过程讲清楚的。鉴于此,根据我们项目组成功部署Nginx+FastCGI的经验,我写下了这篇文章,可供相关项目的开发人员参考。原创 2017-05-16 11:15:47 · 4538 阅读 · 0 评论 -
JSON简介及具体的JSON消息示例
在互联网软件前端与后台进行消息交互的过程中,需要有一种标准的数据交换格式供前后端采用。在众多的数据交换格式中,JSON(JavaScript Object Notation,JS 对象标记)是应用得比较广泛的,它采用完全独立于编程语言的文本格式来存储和表示数据。本文首先对JSON进行简单的介绍,然后用具体的C代码示范了各类JSON消息的构造方法。原创 2017-05-26 14:40:06 · 6383 阅读 · 8 评论 -
音视频记录和转换工具ffmpeg编译安装说明
本文基于我们在Linux系统中安装部署ffmpeg的实际经验,给出了ffmpeg编译安装说明,并给出了实际的编程说明。原创 2017-05-18 17:09:44 · 1336 阅读 · 0 评论 -
BCD码简介及其与十进制数字字符串之间的转换
大家都知道在计算机中,数据的常用编码格式有二进制、八进制、十进制和十六进制等,这些编码格式之间可以相互转换。在电力通信协议中,很多数据都是用BCD格式来编码的,这些数据需要转换为普通的十进制数字串。本文首先对BCD码进行简单的介绍,然后用代码演示它与十进制数字字符串之间的转换。原创 2017-06-01 22:08:50 · 15187 阅读 · 2 评论 -
“多线程”简介及其C代码实现框架
在一些计算机专业相关的书籍中,大家经常听说“多线程”这个概念。那么什么是“多线程”?什么时候使用“多线程”?在程序设计中使用“多线程”有什么好处呢?很多刚入职的程序员也对“多线程”感到非常的好奇,认为它很“高大上”。本文对“多线程”进行了简单的介绍,并给出了其C代码的实现框架。“单线程”程序 要想理解“多线程”,那么就要先从“单线程”说起。 大家都知道工厂“流水线”作业,里面的工序是一环扣一环的原创 2015-11-16 18:42:48 · 11698 阅读 · 2 评论 -
【GitChat】基于 Linux 的应用层日志系统设计实现
本 Chat 对日志系统和基于 Linux 的应用层日志系统设计方法进行了详细的介绍,并给出了完整的 C 代码实现。具体而言,本 Chat 包含以下内容:日志系统介绍日志系统框架结构日志文件命名、内容格式及生成流程日志系统配套的配置文件说明日志系统设计思路及重要程序流程一个简单日志系统的完整 C 代码实现对日志系统的测试验证本文适合有一定编程经验的软件研发人员阅读。附:...原创 2019-10-03 15:52:29 · 480 阅读 · 0 评论 -
Swift中常量和变量的声明
常量是在程序运行过程中,不会被修改的量。也就是说,常量一经赋值,就不能再次赋值了。变量是在程序运行过程中,可以被多次赋值的量。也就是说,常量即使已经赋值,还可以再次赋值。在Swift中,我们使用let来声明常量,使用var来声明变量。原创 2016-10-26 20:32:47 · 4069 阅读 · 0 评论 -
用shell脚本合并多个文件内容
现有多个具有相同命名格式及内容格式的文件,要求编写shell脚本将它们合并到一个文件中。原创 2016-10-21 20:47:01 · 23497 阅读 · 0 评论 -
Oracle调用接口(OCI)源码剖析(1):创建数据库连接
在笔者所开发过的产品中,有很多都需要与Oracle数据库打交道。为了实现C代码与Oracle数据库的消息交互,Oracle公司为广大的开发者们提供了一个统一的调用接口OCI(Oracle Call Interface)。只要按照规范来调用OCI中的函数,就能够实现C代码与Oracle数据库的交互。原创 2016-09-08 21:35:39 · 5453 阅读 · 0 评论 -
ObjC学习(1):注释、标识符和变量
ObjC学习(1):注释、标识符和变量。原创 2016-07-10 17:11:32 · 2420 阅读 · 2 评论 -
正则表达式介绍及常见用法
正则表达式(Regular Expression),又称正规表示法、常规表示法,在实际的软件开发项目中经常会被使用到。它使用单个字符串来描述、匹配并获取一系列符合某个句法规则的结果。原创 2016-07-25 21:52:58 · 5336 阅读 · 0 评论 -
ObjC学习(2):数据类型(1)
2.1 数据类型分类在ObjC中,所有的变量必须先声明后使用。在声明变量的时候,需要指定变量的类型。声明变量时,只要指定变量的类型和变量名即可,语法格式如下:type varName;ObjC支持的数据类型包括:基本类型、构造类型和指针类型。其中,基本类型包括:整型、字符型、浮点型和枚举型;构造类型包括:数组类型、结构体类型和共用体类型;而指针类型是ObjC中最重要的类型。2.2 基本数据类型2原创 2016-08-16 21:42:25 · 1333 阅读 · 0 评论 -
文件剪切的sh脚本实现
编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作。其中,文件移动之前所在的目录称为源目录,文件移动之后所在的目录称为目的目录。要求当源目录不存在、源目录下无文件及剪切文件成功时,均要在屏幕上输出相关的日志信息;并且,在程序执行之前,只有源目录是存在的,目的目录需要由程序创建。原创 2016-08-19 21:53:13 · 3321 阅读 · 0 评论 -
Oracle调用接口(OCI)源码剖析(2):执行SQL语句并获取结果
接着上一篇文章《Oracle调用接口(OCI)源码剖析(1):创建数据库连接》,我们继续对OCI中执行SQL语句并获取结果的源码进行剖析。该操作主要是由两个函数完成的:CDbExecSql和CDbFetch,其中CDbExecSql函数用于执行普通SQL语句,CDbFetch函数用于获取数据库的返回结果。原创 2016-09-13 21:54:07 · 5171 阅读 · 0 评论 -
Swift REPL简介
Swift REPL简介翻译 2016-09-19 21:36:09 · 1445 阅读 · 0 评论 -
Swift---一门智能型的编程语言
Swift是苹果公司于2014年推出的一门全新的编程语言,目前已进化至第三版。Swift博众编程语言之所长,简单易学,功能强大,可用于开发iOS、macOS、tvOS、watchOS程序。原创 2016-10-09 20:14:05 · 1529 阅读 · 0 评论 -
Oracle调用接口(OCI)源码剖析(3):关闭数据库连接
继创建数据库连接和执行SQL语句并获取结果之后,我们继续对OCI中关闭数据库连接的源码进行剖析。该操作主要是由CDbCloseDb函数完成的。原创 2016-09-20 21:11:23 · 2306 阅读 · 0 评论 -
Linux下如何将数据库脚本文件从sh格式变为sql格式
在从事软件开发的过程中,经常会涉及到在Linux下将数据库脚本文件从sh格式变为sql格式的问题。本文以一个实际的脚本文件为例,说明格式转换的过程。 1. sh文件内容 本文中的文件名为example.sh,其内容如下:#!/bin/bash function Init(){ if [ -f"example.sql" ] then echo"exa原创 2014-07-24 14:27:48 · 3207 阅读 · 0 评论