自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LYH66的专栏

stay hungry stay foolish

  • 博客(42)
  • 资源 (6)
  • 收藏
  • 关注

原创 记录使用Promise和await的一个小坑

今天写了一段类似这样的代码function Sleep(){ return new Promise((resolve, reject)=>{ setTimeout(() => { reject("failed") }, 1000); })}async function Test1(){ let ret = await Sleep().ca...

2019-04-13 14:44:14 361

原创 浅析epoll

什么是epoll多路复用io接口select/poll的增强版本,显著提高程序在大量并发连接中只有少量活跃情况下的cpu利用率epoll的优缺点优点1. 支持大数目的FD2. IO效率不随FD数量增加而线性下降3. 使用mmap加速用户空间和内核空间的消息数据传递缺点1. 活动连接比较多的时候,频繁调用epoll_await性能会下降明显epoll的使用主要函数定义int e...

2019-04-10 12:06:44 302

原创 Session 和 Token

Cookie 、Session 和Token Cookie、Session和Token是当下互联网的两个非常重要的东西起源众所周知,http协议是无状态的,每个http请求(http 1.0)从浏览器发起请求到服务器处理完请求后,就结束了,客户端和服务器的TCP链接就断开了。一个网站服务器程序是要服务很多用户的,每天要处理非常多的这种http请求,其中每个人又会发很多这种请求,那...

2018-05-18 13:22:58 1095

翻译 getopt_long()使用方法

本文内容大部分翻译自Linux Man Page 用于学习如何解析命令行参数,其中讲解了getopt、getopt_long、getopt_long_only等函数的用法和区别。

2015-11-29 19:55:39 7374

原创 Shutdown程序源码学习笔记

本文提到的shutdown程序是cygwin下的开源程序shutdown(源码)C语言字符串操作strrchr(str, ch):该函数返回ch字符在str(C语言字符串)中最后出现的位置(即一个指针),如果不存在,则返回NULL指针。头文件:string.hstrcasecmp(str1, str2):该函数忽略大小写来比较str1和str2两个字符串的内容,如果相等则返回0,如果

2015-11-29 13:51:23 1361

原创 文件编码学习笔记

几种常见的编码ASCII:ASCII算是我们最早接触的一个编码,记得学C语言的char类型时候就开始认识它了,它的范围是0-127,它除了包含所有的英文字母和英文标点符号外还有一些不可打印的控制符号,比如制表符(0x9)、换行符(0xA)等等。GB2312:从上面可知,ASCII编码只有0-127的范围,而我们中国的汉字博大精深,经过几千年的历史和文化沉淀,常用的汉字也有好几千个,所以ASCII

2015-11-26 17:04:55 756

原创 C++与C#网络传输中的编码转换

近期的项目因为客户端用的是Unity3D(使用C#),服务端用的是C++(VS2013,Windows)。所以当他们相互传输中文字符串的时候不能正常工作。经过一番研究,把最终的解决方案分享出来。思路本方案的思路就是保证服务端和客户端间的通信使用utf8编码。所以他们在给对方发中文数据时候都要转成utf8格式。服务端方式一:因为vs2013中C++的中文字符串(比如string str="测试")是

2015-08-27 16:32:43 2259

原创 Libevent0.1之测试Libevent自带的例子

因为0.1版本的只支持linux版本,所以本文章中的测试环境是在ubuntu下进行。准备工作下载0.1版本的libevent。开始先解压下载下来的源码Download$ tar xzvf libevent-0.1.tar.gz编译库文件Download$ cd libeventDownload/libevent$ ./configureDownload/libe

2015-06-02 14:45:16 2295

原创 Libevent0.1学习之queue.h

最近打算研究一下libevent网络库,发现用了FreeBSD的queue.h中的尾队列来存储各种事件队列。下面就是一些学习queue.h的一些笔记。queue.h中定义了一系列的宏操作去实现单链表、双链表、简单队列、尾队列和循环链表。queue.h的内容见文章结尾。他们的特点对比如下: 单链表: 头部定义:一个指向第一个元素的指针 entry定义:一个指向下一个元素的指针 删除任意元素时

2015-06-02 13:44:11 2148

原创 Queue学习之Singly-Linked List

早就听说了libevent这个开源网络库的大名,刚好最近时间比较闲,所以就拜读一下。计划是从0.1版本(最早版)开始看起,因为我想看一下libevent成长历史和网络通信方面的相关技术发展。在libevent0.1版本中,核心就是event这个结构体了。而这个结构体中又用了sys/queue.h中的TAIL QUEUES。因此打算先学习一下sys/queue.h中提到的几个queue。本文将会讲解一

2015-05-27 15:58:08 2403

原创 C#操作Mysql数据库的存储过程

近期在工作中接触了一套游戏服务端的代码,它是用C#写的逻辑,其中发现在客户端登陆的时候,服务端中处理登陆验证的模块没有先对账户名的合法性进行验证,而且还直接用sql语句拼接账户名的方法去查询数据库,很明显者存在一个SQL注入漏洞,为此我对写这代码的同胞鄙视了一番。鄙视归鄙视,作为一个5好青年,当然不会让这个洞存在下去。于是,我想了一会,觉得先要对接收到的账户名做合法性验证,然后sql语句要改成存储过

2015-03-23 16:37:20 7020

原创 C++学习笔记之智能指针

引言众所周知,C++中最让程序员头疼的就是关于内存的问题,其中不外乎以下几点: 1. 缓冲区溢出 2. 野指针 3. 重复释放内存 4. 不配对的new/delete 5. 内存泄露 其中大多数的问题都是对指针的不正确使用带来的。为此C++标准库中对原始指针做了一些封装,比如auto_ptr,使得指针更容易使用,但是还是存在众多不足。而在Boost库中,对原始指针做了更多的封装,弥补了a

2015-03-18 15:45:28 754

原创 Java学习笔记之Java的String类

Java学习笔记之Java的String类String类的一些概括String类型不属于8种基本数据类型,它是一个类。String类是不可变类,任何对String对象的改变都会产生新的String对象。(所以若要使用一个内容变动大的字符串,应该用StringBuffer类)用”=”操作符创建字符串 String s0 = "test"; String s1 = "test";

2015-02-09 09:56:45 651

原创 Java学习笔记之获取当前目录或文件

近来在项目中遇到一个关于获取项目目录下配置文件的问题?在eclipse中可以正确获取配置文件,但是当项目打包成jar包后就出现"找不到文件"的异常。特此研究了一下java中获取当前目录和获取项目中文件的方法。实验代码如下import java.io.File;import java.io.IOException;import java.net.URL;public class

2014-11-13 09:59:44 1462

原创 Java学习笔记之接口和抽象类

前言最近遇到了接口和抽象类的使用,搞不明白二者的区别,所以特地研究了下而这,笔记如下。接口和抽象类的定义抽象类:包含抽象方法的一个类叫做“抽象类”。接口:可将其想象成为一个“纯”抽象类,它只声明类方法,不提供方法的实现细节。接口和抽象类的特点抽象类:1.如果一个类A继承了抽象类B,并且没有实现抽线类B中的抽象方法,

2014-10-17 21:23:23 837

原创 Ubuntu下创建Wifi(AP)

前言

2014-09-26 21:29:17 2437 1

原创 配置PHP中的mail方法发送邮件

我的环境:XAMPP v3.2.1准备工作1.检查有没有sendmail程序,在xampp安装目录下的sendmail文件夹下。没有则下载sendmail.zip(http://glob.com.au/sendmail/),然后解压并放在在xampp目录下。2.去mail.google.com注册一个google的邮箱,比如账号:[email protected],密码:passwd

2014-01-11 10:44:36 27806

原创 windows获取时间方法

方法一:用c语言库函数中的time函数、ctime函数和ctime_s()函数time函数:头文件:time.h功能:获取当前的系统时间,返回一个time_t类型(即一个大整数)。用法:time_t time(time_t * timer)ctime函数:头文件:time.h功能:ctime功能是 把日期和时间转换为字符串用法:char *ctime

2013-11-06 13:47:39 3363

原创 引用与指针

/**************** *引用传参 ****************/#include using namespace std;void fun(int &a){ a = 1;}int main(){ int a; fun(a); cout<<a;} ;main()函数中:1000: int a;100

2013-09-09 10:56:35 609

原创 Qt中xml元素的遍历

#include #include #include #include int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QDomDocument doc; QFile file("H:\\Soft\\QQ\\AuI18N\\2052\\StringBundle.xml"

2013-09-09 10:53:15 6058

原创 int test(a,b,c)中的形参

void test3_1(int a, int b, int c){ cout<<*(&c-2);//标记行1}void test3(){ int x,y,z; cin>>x>>y>>z; test3_1(x,y,z);}输入:1 2 3输出:1在标记行1中输出的是1,即是a的值,因为函数调用中,是按实参表从右到左的顺序把参数压入栈中,且地址从高到低所以c的地址-

2013-08-26 13:47:49 1901

原创 由5/2想到的

c/c++中有一表达式如:5/4 + 3.0/2 + 4 + 6.0 其中,5/4的结果为1,因为5和4分别为int型(c/c++中这种常量整数默认为int类型),所以他们的运算结果为int型。3.0/2的结果为1.5,因为3.0为double(c/c++中这种常量小数默认为double类型),所以他们的结果为double型。4为int型6.0为double型

2013-08-26 13:44:52 858 1

原创 由a+=a-=a*=a想到的

#include using namespace std;int main(){int a = 12;a += a -= a *= a;coutreturn 0;}结果a为:0;;;编译环境:vs2008;010914C5  mov         eax,dword ptr [a] ;a*=a010914C8  im

2013-08-16 08:46:30 2863

原创 cocos2d-x的CCLayer触摸事件

假如HelloWorldLayer继承了CCLayer类,我要在HelloWorldLayer图层里写多点触摸事件。1.首先要重写下列三个函数 virtual void ccTouchesBegan(CCSet *touches,CCEvent *pEvent); virtual void ccTouchesMoved(CCSet *touches,CCEvent *pEvent);

2013-08-04 10:40:05 1824

原创 由'\\n'所想到的

编译环境:vs2008(XP) #include using namespace std;int main(){ cout<<'\\n'<<endl; return 0;}代码如上,结果是23662(5C6Eh);'\\n'中经过编译器解析后内存实际的内容是'\n',因为'\'的Assic码是5Ch(十进制92),'n'是6Eh(十进制110)#include

2013-08-01 14:16:28 798

原创 cocos2d-x 精灵触摸事件

Cocos2d-x版本:cocos2d-2.1rc0-x-2.1.3编译环境:vs2010(XP)#ifndef __TOUCHABLESPRITE_h__#define __TOUCHABLESPRITE_h__#include "cocos2d.h"USING_NS_CC;class TouchableSprite: public CCSprite, public

2013-07-30 22:42:25 2625 1

原创 《软件调试》读书笔记二

二、函数返回值1.如果返回值是EAX寄存器能够容纳的整数、字符和指针(4字节或小于4字节),那么返回值存在EAX中源代码:/** @brief: 测试函数返回值为int型的情况下,存储返回值的方法 @environment: VS2008 */#include int fun_int(void){int a;return a;}

2013-07-29 22:07:52 1002

原创 慎用CCARRAY_FOREACH

第一次使用CCARRAY_FOREACH遍历一个CCArray数组并且删除数组里的东西时发生出乎意料的结果:类似代码如下:CCArray *children = this->getChildren();CCObject *temp = NULL;CCARRAY_FOREACH(children, temp){ CCSprite *sprite = dynamic_cast

2013-07-29 10:34:34 6307 5

原创 《软件调试》读书笔记一

一、分页机制关键词:CR0、CR2、CR3、CR4、页目录、页目录表项、页表、页表项、内存页(物理内存被分成若干个特定大小的页,也叫物理页)CR0:该寄存器中的PG标志用于是否启用分页分页机制CR2:该寄存器中保存的是一个线性地址CR3:该寄存器中保存的是页目录的物理地址(指基地址)CR4:该寄存器中的PAE(Physical Address E

2013-07-28 09:38:58 1080

原创 cocox2d-x HelloWorld分析

cocos2d版本:cocos2d-2.1rc0-x-2.1.3编译环境:vs2010(XP系统)1.首先看到main.cpp中AppDelegate app;这是一个变量的定义,而且它的类型是一个类,不是基本类型,所以它会调用该类的构造函数,而且应该是默认构造函数,跳到AppDelegate类的构造函数实现中,发现函数体是空的,但是AppDelegate类是继承自CCAppl

2013-07-27 14:03:36 1455

原创 浅谈排序算法(三)之堆排序

堆排序主要思想:1.初始化数串成大顶堆(或小顶堆)  1.1 先初始化一个非叶节点的小子树为大顶堆(或小顶堆)  1.2 再初始化数串中的每个子树成大顶堆(或小顶堆)2.由步骤1中得到的堆顶即是当前未排序数串的最大值。由此继续循环得到下个最大值 堆排序与选择排序有点相似,都是先通过循环比较得到 未排序数串中的最大值,然后把它给已排序的数串中。但是选择排序中循环比较时会出

2012-05-23 22:35:42 769

原创 状态机处理文本

/***删除C/C++源代码中的注释*/#include int main( int argc, char *argv[] ){ //定义各种状态 enum{NONE,PRE_LINE,LINE,ALL,PREEND_ALL,ALL_END} state = NONE; char *fileinput, *fileoutput; FILE *fpinput, *

2012-05-14 21:33:00 844

原创 浅谈排序算法(二)之选择排序

选择排序是比较好理解的,交换操作在0和(n-1)之间,比较次数O(n^2);其中交换次数最好情况是已排序,交换0次,最坏情况是逆序,交换n-1次,而冒泡排序最坏要交换n*(n-1)/2次。选择排序主要有两个循环,外循环控制未排序的项,而内循环扫描出剩下未排序中的最大值(或最小值)代码一:int comp_asc(int a, int b) //升序{ return a -

2012-05-14 12:27:36 617

原创 浅谈排序算法(一)之冒泡排序

首先介绍的是,相对来说比较简单的冒泡排序。冒泡排序,其基本思想是(如果我们是要从小到大排序):用两个循环(暂且称为内循环和外循环吧),内循环中:从第1位开始依次比较相邻的两个数的大小,如果前一位比后一位大,则交换两个他们的值,一直比较到最后;这样一趟下来的话,那么最大的那个数就在最后那个位置了。一次内循环就可以选出一个数的正确位置。所以外循环的次数最多就是该排序数列的大小代码一:

2012-05-05 19:03:34 792

原创 c语言中的各种变量是如何存储的(二)

本次讲常量数据,常量数据一般放在.rodata段(ro代表read only)。常量数据有哪些呢,一般有字符串常量和带const的变量;代码一:int main(){       char *str = "abcdef";        return 0;}lyh@debian:~/test$ objdump -h rodata | grep

2012-04-28 12:24:26 4894 1

原创 c语言中的各种变量是如何存储的(-)

众所周知,c语言中有全局变量,局部变量,常量数据。。。 其中,全局变量又有初始化和不初始化。int array[1024];int main(){ return 0;}lyh@debian:~/test$ gcc -g bss.c -o bsslyh@debian:~/test$ objdump -h bss | grep bssbss:     f

2012-04-26 19:10:30 2385

原创 大小端字节序的判断

/********** 环境:vc++6.0**********************/用union实现大小端字节序:/******************** * union大小字节端 ********************/union test{ short i; char str[sizeof(short)];}tt;void main(

2012-04-19 17:52:49 3285 1

原创 函数结束后,里面的局部变量还可以用吗

int *fun1(){ int a = 1; return &a;}int main(){ int *p =fun1(); cout *p = 100; cout return 0;}结果:*p=1*p=100以上可以看出a在fun1中是个局部变量,按理说该函数结束后,a变量应该不能访问了,但是上面的例子中,通过返回a的地址,在

2012-04-02 16:59:42 2882 1

原创 C++中的引用

引用就是对象的另一个名字--这是《c++primer》中介绍引用里的一句话;而且很多c++参考书中都有“引用是另一个对象的别名”这一说;这句话很容易让人引起误会。看下面的例子:int main(){ int a; int &b = a; a = 1; cout cout b = 2; cout cout  cout cout return 0

2012-03-26 12:47:08 641

原创 UNIX环境高级编程中的apue.h和apueerror.h

相信很多一开始看《unix环境高级编程》的新手们按照书上的代码的话,会遇到编译时找不到err_sys等这类问题(因为只包含了apue.h)解决办法如下:/************** * *apueerror.h * *************/#include #include #include /* for definition of errno */#i

2012-03-21 13:28:29 4259 2

QQ、微信默认emoj表情

QQ、微信默认emoj表情,

2019-04-25

JDK9,Java9

官网的JDK9已经下架了,这个是原来官网一模一样的版本

2018-12-25

The Introvert Advantage How to Thrive in an Extrovert World

The Introvert Advantage How to Thrive in an Extrovert World

2014-07-01

ASM 汇编语言编辑器

ASM 汇编语言编辑器ASM 汇编语言编辑器

2011-10-02

ASCII及进制转换

ASCCI及进制转换,字符串转十六进制,各进制转换

2011-10-02

Intel汇编语言程序设计

Intel汇编语言程序设计+第四版.zip

2011-07-31

空空如也

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

TA关注的人

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