个人亲测
文章平均质量分 74
Nicolas_Xu
一位精通法语的程序员
展开
-
C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting
这篇文章建大的介绍了如何编写一个智能指针。介绍: 什么是智能指针?答案想必大家都知道,智能指针的目的就是更好的管理好内存和动态分配的资源,智能指针是一个智能的指针,顾名思义,他可以帮助我们管理内存。不必担心内存泄露的问题。实际上,智能指针是一个行为类似于指针的类,通过这个类我们来管理动态内存的分配和销毁。方便客户端的使用。相比于一般指针,智能指针主要体现在它使用的容易和便捷性。原创 2015-01-28 15:25:24 · 778 阅读 · 0 评论 -
编写一个简单的license文件控制器
编写一个很简单的通过文件内容读取相关key/value的权限控制器:文件内容可以如下:#注释Car.IsPrivate True通过阅读以上的文件来获得软件所有的权限控制。1. 先编辑一个存储 key/value 对的数据结构 KVPairstruct KVPair { KVPair(void) : _keu(), _val原创 2015-04-14 10:00:57 · 1223 阅读 · 0 评论 -
Linux 下 套接字 Socket 通信原理和实践,附有详细案例
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?转载 2015-04-15 10:18:13 · 3847 阅读 · 3 评论 -
C++易混知识点 6: 如何通过生命周期使用mutex互斥锁自动加锁和释放
在涉及到多线程操作的时候,对于那些静态变量我们一定要加以保护。我们通常会使用到的是互斥锁,通过对锁的获取和释放来保证始终只有一个线程对关键数据进行操作,但这样带来的问题也是很直接的: 繁琐的操作。1. 首先我们先定义一个互斥锁的类,class EfMutex{ public: EfMutex(int type = PTHREAD_MUTEX_RECURSIVE) :原创 2015-04-15 14:36:24 · 1838 阅读 · 0 评论 -
unix/linux下信号处理函数Signal()详解
signal()函数理解在 这个头文件中。signal(参数1,参数2);参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。参数2:我们处理的方式(是系统默认还是忽略还是捕获)。一般有3中方式进行操作。(1)eg: signal(SIGINT ,SIG_ING );//SI转载 2015-04-28 10:08:10 · 7224 阅读 · 1 评论 -
unix/linux创建新进程,父子进程详解,附有案例
fork()用来创建进程fork(void)在linux中所有进程都是由init进程直接或间接创建成功:在父进程中将返回子进程的PID;子进程返回0,以区别父进程失败:父进程中返回-1 1 #include 2 #include 3 #include 4 5 int main(int argc,char *argv[]) 6 {转载 2015-04-28 10:25:18 · 8305 阅读 · 0 评论 -
Linux下创建维护服务进程Daemon的注意点,附有详细案例讲解
unix系统下所有进程都工作在前台和后台,在前台工作的进程通常和用户直接交互(通常是通过terminal,比如我们ls -ltr,会在当前terminal显示文件列表),但是在后台运行的进程都是自己运行。用户可以检查它的工作状态,但是不知道它在干嘛。维护进程指的就是这种工作在后台的进程。接下来分几步来讲解下如何创建一个维护进程,并且实现标准输入输出重定向的工作。1. 维护进原创 2015-04-28 16:55:53 · 733 阅读 · 0 评论 -
Linux: 学习如何制作RPM包, SPEC文件如何编写
一 RPM介绍RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;现在应为RPM Package Manager的缩写。在Fedora、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用; RPM包中除了包括转载 2015-08-27 11:07:47 · 4007 阅读 · 0 评论 -
gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
一、概述C和C++编译器是集成的,编译一般分为四个步骤:预处理(preprocessing)编译(compilation)汇编(assembly) -------------------- as连接(linking) --------------------- ld gcc 认为预处理的文件是(.i)是C文件,并且设定C形式的连接;g++ 认为转载 2015-04-14 16:35:22 · 23532 阅读 · 5 评论 -
详解C/C++语言中Static 变量 或者 static函数的作用
1. 今天被问到C语言中Static假如修饰一个函数的话,这个Static 起到什么作用。之前因为特别注意到这个问题,但一时之间可能说不出全部,我回答了关于 作用域的区别,其实是对的,因为其他文件无法访问这个函数了,static把这个函数局限于在这个文件当中,某种意义上“隐藏了”这个函数,但不够具体。 在某个文件中,例如a.cc文件中,假如我们定义如下char a = 'A';原创 2016-05-13 14:29:57 · 732 阅读 · 0 评论 -
详解C++各种智能指针: auto_ptr, shared_ptr, weak_ptr, scoped_ptr
C++ 中经常被问到的一个问题就是如何分辨各种智能指针。 先归纳起来做一个综合的比较: auto_ptrauto_ptr是现在标准库里面一个轻量级的智能指针的实现,存在于头文件 memory中,之所以说它是轻量级,是因为它只有一个成员变量(拥有对象的指针),相关的调用开销也非常小。auto_ptr在03标准中出现,是最早的C++标准库里的智能指针,主要是通过将指针通转载 2016-05-13 16:57:48 · 12034 阅读 · 0 评论 -
Makefile 中命令的@,-@,+@符号 作用, 案例分析
make/makefile中的加号+,减号-和at号@的含义shell 命令每个目标都可以具有与其关联的一系列 shell 命令,这些命令通常用来创建目标。此脚本中的每一条命令都必须以制表符开始。虽然任何目标都能够显示在相关性行上,但除非使用 :: 操作符,否则这些相关性中只有一个能够通过创建脚本来跟随。如果命令行的第一个或前两个字符是 @ (at 符号)、原创 2016-07-12 10:33:49 · 11700 阅读 · 0 评论 -
Linux环境下最新版GCC安装总结--详细说明附案例(CentOS下安装最新版GCC 5.3.0)
1. GCC这篇文章主要用来提供一些常见的指导,通常我们在安装GCC过程中都会出现常见的问题,官方的安装文件可以访问官方网址: Installing GCC 我们主要从 “源文件来安装GCC” 因为不同的操作系统不同的版本已经GCC所需要的必要的软件的版本不同,我们通常都是在下载完源代码文件后根据自身电脑的配置来完成编译和安装。2. 下载GCC源代码GCC主原创 2016-06-14 10:54:13 · 6085 阅读 · 0 评论 -
详解如何编译一个跨平台GCC
How to Build a GCC Cross-CompilerGCC is not just a compiler. It’s an open source project that lets you build all kinds of compilers. Some compilers support multithreading; some support shared li转载 2016-06-22 13:22:28 · 5725 阅读 · 0 评论 -
网络工程师,路由器4种模式详解:AP,Router,Repeater,Bridger (接入点,无线路由,中继,桥接)
对于大多人来说使用路由器只会使用的就是PPPOE拨号,其他的都不是很懂,其实我们平时使用的是路由模式,那这次即将带来的各种模式有什么区别,又适合什么场合使用呢?这次就给朋友们说说路由器AP、路由、中继、桥接模式之间的区别。现在的路由大多数已经开始支持多中网络连接模式,那么我们就挑一款模式最全的路由来了解各种模式的区别吧。什么路由你猜对了么?当然是TP-Link迷你无线路原创 2016-06-23 16:39:28 · 40291 阅读 · 3 评论 -
文件系统深度理解之inode解读
一、问题: 在一台Linux服务器的/data分区内创建文件时,系统提示磁盘空间不足,用df -h命令查看了一下磁盘使用情况,发现/data分区只使用了66%,还有12G的剩余空间。 二、分析问题: 用df -i查看了一下/data分区的索引节点(inode),发现已经用满(IUsed=100%),导致系统无法创建新目录和文件。inode译成中文就是索引节点,每个存储设备(例如转载 2017-04-11 11:35:52 · 3827 阅读 · 0 评论 -
GDB 调试积累心得,断点,查栈,下一步,跳入,跳出等简单操作
调试相关程序,直接在binary加gdb调试gdb ./bin.x86_64/Regression进入后, 1. 添加断点b ParamsTest.cc:3562. 开始运行run3. 程序停在断点处,单步调试(进入)s4. 查看当前代码l5. 单步调试(不进入)n6. 跳出当前代码(之前跳入调试)finish7. 继续单步调试原创 2015-03-03 18:54:28 · 12417 阅读 · 0 评论 -
Linux环境编程1. 实例详解文件锁(file lock)的两种不同类型,advisory lock和mandatory lock
文件锁(File Lock)是一种在特定的时间内只允许一个进程进行访问文件的机制,通过使用文件锁,可以使得多进程访问文件更加安全。在这片文章中,我们会探索两种不同的文件锁,并且通过实际案例去了解他们的机制和不同之处。我们会举以下两个例子来解释为什么文件锁(file lock)是必须的原创 2015-02-06 15:30:59 · 7886 阅读 · 0 评论 -
C++易混知识点2. 函数指针和指针函数的区别
我们时常在C++开发中用到指针,指针的好处是开销很小,可以很方便的用来实现想要的功能,当然,这里也要涉及到指针的一些基本概念。指针不是基本数据类型,我们可以理解他为一种特殊类型的对象,他占据一定空间,但是所带来的好处就是C++如此强大的深层次原因了。1. 指针函数, ( __type__ * func( void, int,) )顾名思义,他是一个函数,只不过和一般函数区分原创 2015-01-22 14:41:38 · 569 阅读 · 0 评论 -
使用php 和html 建立一个论坛,附上sql数据库存储信息
首先预览一下最终成果图:(可以点击用户名称转到个人页面,发表前必须登陆,或者登记一个新用户进行发言)在这里建立一个以php,html 连接数据库进行操作的建议论坛,废话不多说,首先介绍一下各文件信息:我们可以看到,其中forum.php为主登陆页面,其中包含显示论坛信息,和登录信息,format.css为简单的修饰论坛文件,在这里我们需要建立两个表单,一个表单forum为几原创 2012-06-02 16:39:44 · 2000 阅读 · 0 评论 -
QT下 TableWidget 实现右键菜单栏,以及TableWidget整体美化工作。
QT TableW原创 2014-07-01 18:27:41 · 7793 阅读 · 0 评论 -
C++易混知识点1: 指针常量和常量指针的区别,附有详细案例解释
熟悉C++也已经有一些年头了,今天突然翻出当年浏览的书籍,对一些概念居然生疏了,指针常量和常量指针由于 指针 这一特殊的对象而变得难以区别。今天将他们的区别通过详细的案例来加以区分。原创 2015-01-22 10:06:30 · 863 阅读 · 0 评论 -
Perl 脚本自动杀死指定process 所有进程
#!/bin/usr/perluse warnings;use strict;system("ps -ef | grep valgrind | grep -v grep | cut -c 10-15 | xargs kill -9");其中 grep -v grep 排除因为前面的grep valgrind 的原创 2014-07-02 11:02:19 · 1719 阅读 · 0 评论 -
C++易混知识点3. New Operator, Operator New, Placement New 实例分析,比较区别
我们知道,C++中引入了New 这个内置符号,很大方便了指针的使用,程序员不必关注与这块堆上新分配的内存是如何来的,如何初始化的,然后如何转换为我们想要的类型指针的。现在,我们重点来分析下这个NEW内置符号背后的步骤和所调用到的函数。1. New Operator (__type__ * a = new a();)C 语言当中,我们在新申请一块内存的时候,通常使用的是malloc,原创 2015-01-23 14:28:27 · 725 阅读 · 0 评论 -
QT 国际化和本地化,附上实际案例以及一些使用心得和注意点
直接在做一个国际化和本地化的工作,对QT的国际化就行了一些了解。原创 2014-07-11 17:32:56 · 2337 阅读 · 1 评论 -
Perl 脚本在给定的文件夹目录中递归查找文件
最近在工作中使用到了Perl 脚本,需要在给定目录下对各类编译过的原创 2014-07-01 16:01:35 · 2162 阅读 · 0 评论 -
3D建模和3D渲染技术专题二:windows下minGW,OPENGL开发环境的搭建和libQGLViewer的安装
这一章主要讲解下3D建模和渲染的环境搭建。原创 2014-07-24 21:50:08 · 3640 阅读 · 0 评论 -
详细介绍附代码:使用jquery,和php文件构建一个简单的在线聊天室,通过ip显示googlemap
最近学习了关于使用最为流行的jquery发送请求,在实践中以最为简单的聊天室作为测验的辅助工具,对相关网页开发有一个初步的认识,希望大家能够一起学习进步。 首先介绍一下相关文件信息和功能,因为最简单的聊天室需要一个客户端和服务器端,因此我们建立一个index.html文件来实现所有客户端的内容:显示聊天室,获取聊天信息并加以实时显示,发送聊天信息便于存储,获得相关google地图信原创 2012-06-02 06:27:38 · 1720 阅读 · 0 评论 -
QT 国际化扩展所感 an extending QT Translator (自己实现翻译逻辑,编辑更方便)
QT中提供了支持国际化的QTranslator,原创 2014-07-16 13:05:15 · 1021 阅读 · 0 评论 -
filezilla和putty的ssh工具配置和使用:
最近需要从远程登录使用服务器进行操作,因此研究了下关于一些使用ssh协议的相关软件,有比较广泛使用的putty工具和sftp管理文件的filezilla,都是相当方便简单,这里想大家介绍一下两款工具的配置和使用情况。 对于常用的public key - private key 设置,我们常常会自己保存一个private key, 服务器端加载public key,两者原创 2012-09-04 20:57:38 · 5262 阅读 · 0 评论 -
系统装机:Windows7下Ubuntu 双系统安装图文详解,开机默认启动为windows
最近尝试了一下安装ubuntu和windows双系统的安装方法, 网上看到了很多关于这类安装方面的技巧和注意方法,但总是看的不是很是清楚和明白。因此将本人的安装过程和大家分享一下,自己安装了一下,全部通过。注意的是:大家可能感到兴趣的安装完了ubuntu之后,假如长时间不去用它,所占的银盘空间,拖累的运行速度实在是让人难以忍受,但是在ubuntu界面下启动时往往对如何删除ubuntu感到棘手,原创 2012-09-04 16:24:45 · 1471 阅读 · 0 评论 -
C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意
大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问。没有深究。其实这里面真是涉及到了C++面向对象设计当中的封装特性。只暴露那些需要的成员和成员函数,不必过多曝露所有的成员。第一:private、public、protected访问的范围。 pr原创 2015-01-30 14:51:59 · 1869 阅读 · 0 评论 -
Linux下编辑文件方式Emacs 操作快速指南,快捷键速记
这两天一直在熟悉Emacs,之前linux环境下用的最多的是VIM,没有其他原因,就是因为VIM容易记,快捷性强,很容易上手。这不,刚开始学Emacs的时候,觉得很不适应,组合键太多,给人的第一印象就是难学难记,不过,还是印着头皮操作了一把,发现EMACS的好处是很明显的,扩展性很强,组合键一旦掌握之后就能很熟练的操作。十分便捷和快速。原创 2015-02-03 14:52:05 · 2826 阅读 · 0 评论 -
汇编语言学习小结
汇编语言是仅次于机器语言的底层语言,学习汇编语言可以让我们更好的理解CPU的工作方式和原理,可以帮我们更好的写好高级语言 我们通常使用的C,C++,C#语言都是基于汇编语言的高级语言。通常这些高级语言在机器中变为可执行文件的时候,都会经历以下几个步骤预处理(头文件引入,宏替换,内联函数替换等)编译(编译器会对文件进行语法检查) 汇编(会将上述高级语言转换为汇编语言 mov,add,sub原创 2017-07-27 15:39:42 · 707 阅读 · 0 评论