自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 GetFileAttributes函数整理

2018-05-10 00:13:51 5435

原创 批处理中for循环的自增自减问题

批处理(Batch),也称为批处理脚本,文件的扩展名为.bat 。批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理有着非常强大的处理功能。下面是我在使用批处理是遇到的一个坑,关于for循环中自增自减问题: 目的:大概简单说就是一个循环中变量递增,并新开一个进程将该值作为参数传入 代码:@echo offset /a n=5for

2017-09-22 22:17:04 14136 3

原创 Lua中的垃圾回收机制

遇到问题: 在运行lua脚本时,出现下面报错说内存不足:>lua -e "io.stdout:setvbuf 'no'" "最大值最小值检查.lua" lua: not enough memory>Exit code: 1原因是,lua解释器是32位的,它的内存大小只有2GB,当它内存不够时就会出现上述提示。lua语言虽然会自己回收释放掉的资源,但是,它的回收机制并不是实时回收的,而是,他会将

2017-09-18 22:18:04 5497

原创 C#中的多线程与线程死锁

多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。线程是程序中一个单一的

2017-09-18 18:01:22 8991

原创 NLog类库小结

Nlog简介: Nlog是一款可以通过自动化配置来把log信息指定写入 win console,Sql server,甚至是通过STMP 发送邮件的log engine的类库,它可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。而且NLog的使用也很简单,只用在工程中添加N

2017-09-18 13:21:17 2420

原创 文件查找函数

在介绍文件查找函数之前,我们先看一下需要用到的文件信息结构体_finddata_t吧,它的结构如下:struct _finddata_t{ unsigne attrib; //所查找文件的属性 time_t time_create; //文件的创建时间 time_t time_access; //文件最后一次被访问的时间 time_t

2017-09-16 15:26:23 1021

原创 C#中string类型的常用方法总结

在C#语言中,字符串是System.String类的一个引用类型,但与其他引用类型不同的是,C#将字符串视为一个基本类型,它可以申请为一个常量,也可以直接给它赋值。由于C#中的字符串是由System.String类派生而来的引用对象,因此可以使用String类的方法来对字符串进行各种操作。下面通过几个例子来讲述String类的几个重要方法以及字符串拘留池机构。1、字符串的复制: (1)、Strin

2017-09-15 17:50:05 27946 3

原创 《Effective python》第一章节读后感

python是一种常用的解释性语言,它相对于C\C++来说,使用起来更加方便,所以在工作和学习中,一些小工具的实现用python完成是个不之选。此处对python的优缺点就不过多介绍了,有兴趣的同学可以了解下:http://www.cnblogs.com/rourou1/p/6039108.html《Effective python》第一章主要介绍了python代码中的一些规范,以及如何是代码看起来

2017-09-13 16:36:06 454

原创 UNIX网络编程:I/O复用技术(select、poll、epoll)

Unix下可用的I/O模型一共有五种:阻塞I/O 、非阻塞I/O 、I/O复用 、信号驱动I/O 、异步I/O。此处我们主要介绍第三种I/O符复用。 I/O复用的功能:如果一个或多个I/O条件满足(输入已准备好读,或者描述字可以承接更多输出)时,我们就被通知到。这就是有select、poll、epoll实现。I/O复用应用场合: 1、当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使

2016-06-16 23:26:49 2544

原创 UNIX网络编程:高性能网络服务

Linux的一个应用优势是可用于设计各种高性能网络服务程序,高性能得一个特点就是实现并发访问处理,及服务程序能够同时为多个在线用户提供服务,高性能服务程序得应用非常广泛,在当前流行得Web服务器,各种游戏服务器中都能看到它的身影,而多进程网络服务程序,多线程网络服务程序,以及线程池网络服务程序的实现会更加提高网络服务的性能。高性能网络服务程序简介 高性能网络服务程序在当前的LINUX环境下应用非常

2016-06-09 20:02:18 2239 2

转载 TCP:三次握手与四次挥手

原博客地址:http://blog.csdn.net/l953972252/article/details/51605099TCP协议在运输层工作,当客户端想要连接服务器,TCP协议要求 客户端和服务器共需要3次数据传输,才能确保客户端和服务器已经连通,我们把这个过程称为——3次握手。为什么是3次握手呢?我先来举一个现实中的例子。我给你打电话时,当拨号过去时,相当于我发送了第一次握手,表示我想和你通

2016-06-07 20:14:58 605

原创 UNIX网络编程:socket套接字(TCP与UDP)

套接字简介:套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行,Linux所提供的

2016-06-07 18:46:38 6020 1

原创 C语言之unsigned、signed问题

我们都知道计算机的语言中只有”0”、”1”码。但是计算机语言中也有负数。我们再C语言中,unsigned是无符号数,而signed是有符号数,那么计算机有是怎样标记有符号数的正负呢。 计算机虽然只能看的”0”、”1”,但是它也懂得做个标记。计算机是通过把基本数据类型的最高位腾出来,用来存符号,同时约定如下:最高位如果是 1,表明这个数是负数,其值为除最高位以外的剩余位的值添上这个“-”号;如果最

2016-06-02 22:26:40 2694

原创 C语言之内存对齐浅谈

C语言中关于一个变量所占内存问题大家都很了解,比如int型占4字节,char占1字节。但是关于结构体的大小好向并不那么容易。下面我们先看一个简单的例子。 计算一下下面结构体的大小:struct A{};处看这个结构体,它内部没有任何成员,很容易让人误以为它的大小为0,但是,经过测试,我们发现了一件很神奇的事情——在C语言和C++中,它所占内存不同。在C语言中,它的大小为0而在C++中它的大小为1

2016-06-02 15:44:48 759

转载 进程—僵尸进程与孤儿进程

原博客地址:http://blog.csdn.net/l953972252/article/details/51399576在探讨这个问题之前,我们先来弄清什么是进程。 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线

2016-06-01 20:44:41 2632

原创 UNIX网络编程:读写锁

之前我们整理了互斥锁与条件变量问题它保证了共享资源的安全,但在多线程中我们也会经常对共享数据进行读、写操作。也就是说对某些资源的访问会 存在两种可能的情况,一种是访问必须是排查性的,就是独占的意思,这称作写操作;另一种情况就是访问方式可以是共享的,就是说可以有多个线程同时去访问某个资源,这种就称作读操作。这个问题模型是从对文件的读写操作中引申出来的。读写锁比起mutex具有更高的适用性,具有更高的并

2016-06-01 17:13:09 2776

原创 UNIX网络编程:互斥锁和条件变量

在网络编程中,一般都是多线程的编程,这就出现了一个问题:数据的同步与共享。而互斥锁和条件变量就是为了允许在线程或进程间共享数据、同步的两种最基本的组成部分。它们总能够用来同步一个进程中的多个线程。 再进入互斥锁和条件变量之前,我们先对多线程的一些相关函数进行简单介绍:多线程简单介绍和相关函数: 通常,一个进程中包括多个线程,每个线程都是CPU进行调度的基本单位,多线程可以说是在共享内存空间中并发

2016-05-31 16:30:57 3027

原创 UNIX网络编程:消息队列

IPC中除了管道PIPE、FIFO、信号量和共享内存区意外,还有一个很重要的形式——消息队列。消息队列相比共享内存来说,它本身带有同步机制。 消息队列是将消息按队列的方式组织成的链表,每个消息都是其中的一个节点。 消息队列的运行方式与命名管道非常相似。欲与其他进程通信的进程只要将消息发送到消息队列中,目的进程就从消息队列中读取需要的消息。需要注意的是,消息队列的长度以及每个消息的大小都是有

2016-05-19 15:29:58 970

原创 UNIX网络编程:共享内存区

IPC形式除了管道、FIFO、信号量以外,还有共享内存区和消息队列。这里主要堆共享内存进行介绍。 共享内存区是可用IPC形式中最快的。一旦这样的内存区映射到共享它的进程地址空间,这些进程间数据的传递就不再涉及内核。共享内存与其他进程通信方式相比较,不需要复制数据,直接读写内存,是一种效率非常高的进程通信方案。但它本身不提供同步访问机制,需要我们自己控制。在LINUX中,只要把共享内存段连接

2016-05-17 17:32:01 3273

原创 UNIX网络编程:信号量semphore

信号量是一种用于提供不同进程间或一个给定进程的不同线程件同步手段的原语.信号量是一个特殊的整数值,主要用来控制多个进程对临界资源的互斥访问,进程根据信号量来判断是否有 访问的资源。 信号量是一个计数器,可用于同步多进程对共享数据对象得访问,为了获得共享资源,进程需要执行以下操作: 1、测试控制该资源的信号量 2、若此信号量的值为正,则进程可以使用该资源,进程将信号

2016-05-16 22:03:14 7182

原创 UNIX网络编程之管道与FIFO

管道是最初的Unix IPC形式,它们的最大局限是没有名字,所以,管道只能用于有亲缘关系的进程只见使用。之后,慢慢随着FIFO的加入,这点才有所改观。FIFO也成为又名管道。管道和FIFO的共同点就是它们都是通过read和write函数进行访问的。管道: 管道时有pipe函数创建,提供一个单路数据流。也就是说,所有的管道都是半双工。 管道创建方法: #include <unistd.h>

2016-05-16 18:05:11 3984

原创 STL:序列式容器vector总结

说起数组我们都不陌生,但在C++中,除了数组还多了一个“新朋友”那就是vector。其实vector本质上与array的数据安排以及操作方式也其为相似。它俩唯一的差别就是空间灵活性。无论在C语言还是C++中,array的空间一旦申请完成就不能进行更改,如果需要更大空间来存储数据,便得重新申请一个新的数组并将原来的数值拷贝过去,然后再将原来数组释放,而这一切都需要用户自己完成。而vector不同的是,

2016-05-12 15:20:08 4204

原创 STL:二级空间配置器浅谈

我们在编写程序过程中,需要内存时,我们第一反应就是malloc,但是这样容易产生内————存碎片,比如先申请50字节的空间,紧接着有申请了13字节空间,最后有申请了100字节空间,假设刚好这部分空间是连续的,那么当中间13字节空间释放后,之后一只在申请的空间都大于13字节,这是,这块空间就会形成内存碎片无法被利用。在STL中提到了空间适配器,它主要分为两级:一级空间适配置器,二级空间配置器。一级空间

2016-05-09 16:22:10 3759

原创 boost库:智能指针(auto_ptr、scoped_ptr、shared_ptr)浅谈

无论C还是C++中,我们从一开始接触他们,老时就开始强调在使用后要对内存进行释放,以免发生内存泄露,但是,我们总有粗心的时候,C++中提出了只能指针的概念,用只能指针类来管理所申请的内存,伴随着函数的结束,智能指针自动调用析构函数对其进行释放。智能指针(auto_ptr) *auto_ptr指针的所有权可以转移,可以在函数只见传递,但同一时刻只能有一个auto_*ptr管理指针,当auto_ptr

2016-04-25 21:54:03 787

原创 vim下ctags+taglist环境的搭建

随着学习的深入,我们所看代码越来越庞大,这令我们在查找某个函数时特别头疼,下来我们一起学习下vim下的还将搭建:ctags优点ctags可以对文件生成tags标签,达到快速查找的效果。ctags可以定位的类型: 1)用#define定义的宏 2)枚举型变量的值 3)函数的定义、原型和声明 4)名字空间(namespace) 5)类型定义(typedefs) 6)变量(包括定义

2016-04-24 22:06:01 5769

原创 C++应用:简易五子棋游戏

在实现五子棋小游戏时,首先应该分为棋盘和玩家,我们先定义两个类:chessboard、player。分别提供棋盘的构造和玩家及游戏规则的确定。下面我们看下代码:chessboard.h: 对棋盘chessboard类型进行定义#ifndef _CHESSBOARD_H_#define _CHESSBOARD_H_#include <iostream>using namespace std;clas

2016-04-17 21:44:41 16379 5

原创 C++之深浅拷贝

我们都知道,在C++中会用一个类变量构造同类变量时会用到拷贝构造函数。对于一般变量,我们在使用过程中并没有什么问题,定义也非常简单,一般我们所使用的都是浅拷贝,其实浅拷贝和深拷贝各有各的好处: 浅拷贝节省空间,但有时会出错,深拷贝更加安全,但有时候会造成不必要的空间浪费。观察下面函数://如果Test类只有一个data值时:Test(const Test &t){ data

2016-04-16 21:59:27 557

原创 C++之类的六个默认成员函数

在C++类中同样的默认成员函数一共有六个,即使用户不定义,编译器也可以给出。分别为: 1、构造函数; 2、析构函数; 3、拷贝构造函数; 4、赋值运算; 5、取地址运算; 6、const取地址运算;我们一下述程序为例:#include <iostream>using namespace std;class complex{public: complex()

2016-04-16 20:17:42 506

原创 《C++编程思想》第二章习题

《C++编程思想》第二章主要介绍了编译及注意问题、输入、输出流、字符串string的使用以及标准容器vector。编译过程:编译分为四个阶段:预处理、编译优化阶段、汇编过程、连接程序。预处理:预处理主要是对宏定义的处理以及所包汉头文件的替换、以及条件编译指令的处理。从而生成一个没有宏定义、没有头文件、条件编译指令的输出文件。编译、优化阶段:通过语法分析、词法分析等,在确定没有语法错误后生成中间文件

2016-04-08 20:28:23 681

原创 C++之运算符重载

在C语言和C++中,一般的运算符只能对基本类型数据进行操作,而不支持用户自定义类型,比如下面:#include <iostream>using namespace std;class Int{public: Int(int i = 0):m_i = i {} ~Int() {}private: int m_i;}int main(){

2016-04-08 16:11:30 1684

原创 C++之模版应用(顺序表)

C语言中Swap()函数大家都很熟悉:void Swap(int &a, int &b){ int temp = 0; temp = a; a = b; b = temp;}void Swap(double &a, double &b){ int temp = 0; temp = a; a = b; b = temp;}不难看

2016-04-06 22:47:04 615

原创 redhat下qt的安装

QT简介: Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech 公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Linguist 等部分 Qt 支持所有 Unix 系统,当然也包括 Linux,还支持 WinNT/Win2k,Win95/98 平台QT的优点:基本上,Qt 同 X Wi

2016-03-31 23:20:27 9031

原创 Nginx下的https配置

https: https(Secure Hypertext Transfer Protocol) 安全超文本传输协议 它是以安全为目标的http通道,即它是http的安全版,它使用安全套接字层(SSL)进行信息交换。它在使用之前需要先得到证书。 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接

2016-03-30 23:16:32 2942

原创 nginx安装

安装前准备好安装包nginx-1.9.9.tar.gz(此处所用版本) 下载地址: 这里写链接内容1、先将安装包解压:tar xvf nginx-1.9.9.tar.gz 2、对nginx进行配置:指定默认安装目录/usr/local/lnmp/nignx,并指定http相关模块: 配置过程可能会遇到下列问题:显示缺少下述软件,用yum install 进行安装: 准备好该软件,继续

2016-03-16 16:52:37 424

原创 排序算法总结之快速排序、归并排序、shell排序

快速排序:快排效率高,时间复杂度最理想为 O(nlogn) ,最差时间为O(n^2),该算法不稳定。其主要思想如下:快排是每次将序列第一个数当作一个参考值,分别将比参考值大的数放到参考值右侧,小于参考值的数放到参考值左边,将序列一分为二,对得到的两个数列再分别进行上述操作,直到排序完成。实现过程: 快排程序: 归并(分治)排序: 归并排序实质上是对将序列拆分为有序序列,然后对有序序列进行合并,

2016-03-04 23:06:19 1649

原创 排序算法总结之插入排序、选择排序

插入排序与选择排序的时间复杂度为O(n^2),而且算法都不稳定,因为它在排序过程中并不是将相邻的两个数进行交换。插入排序:它是用i和j分别记录两个下标。i从1开始,j从0开始到i-1为一次循环。插入算法的思想是,每次将array[i]插入到下标i之前的有序序列中的适当位置。插入排序的方法如下:手动步骤: eg:8 44 66 71 35 8 fo

2016-03-03 14:42:31 630

原创 排序算法总结之冒泡排序

排序的方法很多,但每种算法都有自己的特点。本文总结了排序算法,排序算法最坏情况循环n *n 次,所以时间复杂度为O(n^2),而且算法稳定,易懂是该算法的特点冒泡排序: 冒泡排序易于理解和接收,它是通过随机给定一个数组,然后让下标i和j分别指向array[0]和array[1]。比较array[j]和array[j-1],如果array[j-1]>array[j],则互换并且j++。比较

2016-03-02 22:12:06 612

原创 YUM仓库的配置

刚安装完成的虚拟机,不能下载安装命令。所以在安装完虚拟机后配置yum仓库也特别重要,这样才能更好的利用linux下的工具及命令安装yum其实本质上就是解除了各种PRM包之间的依赖性,时我们在安装过程中更加方便,直接用yum install 【安装名称】 -y 即可。1、在安装时,首先需要与虚拟机版本相同iso镜像。即版本号和系统位数都相同,这里因为系统为7.0版本,64位,所以用的是rhel-se

2016-03-01 17:55:16 1045

原创 rhel7.0虚拟机的安装过程

在安装之前,需要rhel-server-7.0-x86_64-dvd.iso安装镜像。安装过程如下: 1、在Terminal下键入virt-manager进入如下界面: 2、点击上图中file下面的第一个图标新建虚拟机,并在name栏写入新建虚拟机名称,并选择安装方式: 安装方式分为四种: Local install media(ISO image or CDROM):本地源安装。 N

2016-03-01 13:07:55 3490

原创 linux 基本命令

【文件与目录管理】:       cd、 pwd、 ls、 touch、 rm、 mkdir、 rmdir、 echo、 cp、 mv、       cat与tac、 more/less、 head/tail、 nl、 od、 stat、 file、 evince      【文件、目录权限】:            chown、 chgrp、 chmod、 uma

2016-02-29 14:38:55 933

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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