
C Plus Plus
文章平均质量分 79
inrgihc
这个作者很懒,什么都没留下…
展开
-
关于Linux上的$ORIGIN解说
RPATH代表运行时搜索路径。根据Wikipedia的说法,“rpath指定在可执行文件或库中硬编码的运行时搜索路径。动态链接加载程序使用rpath查找所需的库” 动态链接是所需共享库的一种“惰性”链接,不是在编译阶段,而是在运行一个可执行文件的后期。如果设置了rpath,覆盖或补充系统默认的共享库搜索路径,则共享库的路径将被编码到可执行文件的头中,就像扩展PATH系统变量链一样。$ORIGIN是一个特殊的变量,指示实际的可执行文件名。它在运行时解析到可执行文件的位置,在设置RPATH时非常有用。示例。原创 2024-03-05 18:56:09 · 1133 阅读 · 0 评论 -
Shell开发之VScode 远程编写调试
使用VSCode进行shell开发的常用插件如下:1、安装远程开发插件:Remote Development2、安装格式化插件:shell-format3、shell语法提示插件:shellman4、运行bash脚本插件:Code Runner参考:https://blog.youkuaiyun.com/u010953692/article/details/103324732...原创 2020-04-11 22:14:31 · 1229 阅读 · 1 评论 -
C++ 里的序列化探索
一、序列化的定义在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这个将 程序数据转化成能被存储并传输的格式的过程被称为“序列化”(Serialization),而它的逆过程则可被称为“反序列化” (Deserialization)。简单来 说,序列化就是将对象实例的状态转换为可保持或传输的格式的过程。与序列化相对的...原创 2020-01-16 11:03:30 · 480 阅读 · 0 评论 -
一个基于boost.asio实现的服务器端与客户端通信的网络协议
一个基于boost.asio实现的服务器端与客户端通信的网络协议。依赖boost.asio库的使用;目标socket stream的解析; tcp protocol自定义协议; TCP分包与粘包;编译git clone https://github.com/tangyibo/librtaio.gitcd librtaiomake cleanmake all...原创 2019-12-28 00:28:11 · 451 阅读 · 0 评论 -
一个网站新闻页通用的正文抽取组件libnpce
一、背景 在舆情系统中,通常会有一个网络新闻爬虫子系统,准实时的采集互联网上的媒体新闻数据,以供上层聚类事件分析。这类新闻数据的组成元素包括:标题 发布时间 来源及其URL链接地址 正文文本内容 正文图片信息(图片位置、图片的URL路径等) 其他二、libnpce组件 新闻文章正文抽取News Passage Content Extractor (NPCE),是...原创 2019-12-28 00:12:54 · 387 阅读 · 1 评论 -
STL中的函数对象
STL不但使我们能够更轻松、更快捷地编写复杂的代码,而且使编写的代码既标准又高度优化。std::vector names;// ...std::sort(names.begin(), names.end()); STL另一个优雅之处在于高度可配置。在以上的代码中,使用string的小于(class State{public: // ... int p转载 2015-11-19 15:17:00 · 432 阅读 · 0 评论 -
HTML网页截图工具开发包CutyCapt简介
CutyCapt是基于Qt实现的跨平台的将HTML网页转化成矢量图形和位图图像格式的命令行工具(比如,SVG, PDF, PS, PNG, JPEG, TIFF, GIF等) (1)在Windows上安装CutyCapt 到如下的网站上即可下载到可执行的二进制文件 下载网站:http://sourceforge.net/projects/cutycapt/files/cutyca转载 2015-11-25 21:24:44 · 1137 阅读 · 0 评论 -
for-switch-continue的嵌套使用问题。
continue一般不能用于switch,但如果switch位于循环,则可用。但此时,break只是跳出switch,会继续执行switch后的语句,而用continue则会使得程序不仅跳出switch语句,同时也跳出本次循环,不再执行switch后的语句,直接进入下轮循环。 可参见:http://blog.sina.com.cn/s/blog_70ec9a6f01011yt4.html转载 2015-12-29 17:01:54 · 3939 阅读 · 0 评论 -
在C语言中利用PCRE实现正则表达式
PCRE(Perl Compatible Regular Expressions即:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之中的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库。和Boost正则表达式库的比较显示,双方转载 2015-12-08 18:14:11 · 475 阅读 · 0 评论 -
基础开发库的安装与使用文档
目 录1 SCons安装与使用...22 JsonCpp安装与使用...32.1 JsonCpp的安装...32.2 JsonCpp的使用...32.2.1 生成json代码...32.2.1 解析json代码...43 boost安装与使用...43.1 boost的安装...43.2 boost的测试...64 Mon原创 2015-10-24 19:25:59 · 1334 阅读 · 0 评论 -
Win32程序(例如MFC、后台服务等)使用AllocConsole()添加调试用控制台
一、AllocConsole 函数为调用进程分配一个新的控制台。使用步骤:1. AllocConsole();//分配控制台2. HANDLE g_hOutput=GetStdHandle(STD_OUTPUT_HANDLE );//获取标准输出设备句柄3. WriteConsole(g_hOupput,lpBuffer,lpNumberofcharswritten,lpRes转载 2016-02-21 23:44:09 · 5032 阅读 · 0 评论 -
C++进行CGI的WEB编程
什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。 CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下: 公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准。 目前的版本是 CGI/1.1,CGI/1.2 版本正在推进中。原创 2015-11-24 10:15:04 · 1983 阅读 · 0 评论 -
从n个数中提取出最大的m个数的算法与采用stl的实现
经常会在面试中被问及如下的算法问题:问题:在n个数中寻找最大的m个数解决的办法:经网上查找,说采用堆排序是最优的解决算法,算法如下:【算法伪代码】 0-建立一个最小堆(优先队列),最小堆的大小控制在m之内 1-for 每个数: 2-----if 这个数比最小堆的堆顶元素大: 3---------弹出最小堆的最小元素原创 2015-11-18 18:47:07 · 1093 阅读 · 0 评论 -
mongo的关键字学习一
$exists关键字mongo中查找存在comments字段的文档记录db.app_doc.find({"comments":{$exists:true}})$unset关键字Mongo中删除comments字段,使用$unset关键字db.app_doc.update({"comments":{$exists:true}},{$unset:{"commen原创 2015-11-16 14:36:40 · 1623 阅读 · 0 评论 -
一个C++矩阵类的实现
#ifndef _MATRIX_H_#define _MATRIX_H_#include using std::vector;/*类功能:矩阵类 *原理:采用数组的数组来实现*/templateclass SeqMatrix{public:explicit SeqMatrix(size_t row=原创 2015-10-20 21:41:59 · 1584 阅读 · 0 评论 -
Linux下 C/C++程序调试技巧
1、调试工具– cgdb1.1 cgdb简介cgdb可以看作gdb的界面增强版,用来替代gdb的gdb -tui。cgdb主要功能是在调试时进行代码的同步显示,这无疑增加了调试的方便性,提高了调试效率。界面类似vi,符合unix/linux下开发人员习惯,所以如果熟悉gdb和vi,几乎可以立即使用cgdb。1.2 cgdb主要功能1) 相比GDB,增加了语法加亮的代码窗口,显示原创 2015-10-20 21:22:42 · 759 阅读 · 0 评论 -
Linux下的静态链接库和动态链接库编程
1、链接库概述Linux下得库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。动态库而言:某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝转载 2015-10-20 21:27:12 · 520 阅读 · 0 评论 -
Windows下的VC++动态链接库编程
1、基础概念1.1 链接库的概述动态链接库DLL(DynamicLinkable Library),你可以简单的把它看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该...原创 2015-10-20 21:31:49 · 4429 阅读 · 0 评论 -
Linux下的网络编程模型总结
1、网络编程概述1.1 套接字socket网络程序设计主要依靠套接字接受和发送信息来实现。Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,每一个Socket都用一个半相关描述:{协议,本地地址,本地端口}一个完整的Socket则用一个相关描述:{协议,本地地址,本地端口,远程地址,远程端口}每一个Socket有一个本地的唯一Socket号原创 2015-10-20 21:25:06 · 534 阅读 · 0 评论 -
Windows系统下C++socket TCP编程步骤
#include #include voidmain(){WORDwVersionRequested;WSADATA wsaData;interr;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if原创 2015-10-20 21:42:54 · 501 阅读 · 0 评论 -
Windows系统下C++ Socket UDP编程
/************服务端程序*************/#include #include void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );原创 2015-10-20 21:43:30 · 2911 阅读 · 3 评论 -
ACE的线程管理机制
一、线程的创建与管理不同的操作系统下用c++进行过多线程编程时,不同操作系统API提供了相同或是相似的功能,但是它们的API的差别却极为悬殊。ACE_Thread提供了对不同OS的线程调用的简单包装,通过一个通用的接口进行处理线程创建、挂起、取消和删除等问题,为跨平台开发提供了支持。1.1、线程入口函数所有线程必须从一个指定的函数开始执行,该函数称为线程函数,它必须具有下列原型:v原创 2015-10-20 21:35:10 · 661 阅读 · 0 评论 -
函数递归与栈的实用
问题:求斐波那契数列的递归方法与非递归方法栈是一种应用范围广泛的数据结构,适用于各种具有"后进先出"特性的问题。递归函数是指在一个函数、过程或数据结构的定义中又应用了它自身的函数。#include #include using std::cout;using std::endl;using std::stack;//非转载 2015-10-20 21:40:35 · 277 阅读 · 0 评论 -
sizeof使用的相关总结
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 一、采用sizeof来求结构体的大小 1、 sizeof应用在结构上的情况 请看下面的结构:struct MyStruct{翻译 2015-10-20 21:44:42 · 400 阅读 · 0 评论 -
在进行软件项目开发相关的软件总结(逐步添加中....)
软件项目开发相关的软件 软件名称 软件全称 软件功能 备注 phabricator 代码review工具 Redmine Redmine是用Ruby开发的基于web的...原创 2015-10-20 21:38:00 · 269 阅读 · 0 评论