自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 typescript保证同步的理解

首先,我先说一下:恕我直言,脚本真JB操蛋,虽然TS引入了类型,因为兼容JS,也是操蛋。再加上nodejs的事件循环。官方文档不人性,小众语言,尼玛,不给初学者活路。OK,发泄完了,现在来说下TS对于异步事件的同步控制吧。 关键字:promise,async,await,事件循环,异步IO具体怎么实现的自己去看。如果你要控制一小段的同步:比如查询A表之后,根据A的数据再去删除B数据...

2018-07-27 16:00:14 7141 1

原创 node.js异步控制流程 回调,事件,promise和async/await

首先nodejs的事件循环:最开始的main函数就是一个事件,事件处理完了之后,返回到事件循环,如果上个事件处理过程有异步IO的,那么在本次的事件循环中就会判断该异步IO是否符合,符合的话就去执行这个事件,如果什么事件都没有了的话,那么整体推出 写这个问题是因为最近看到一些初学者用回调用的不亦乐乎,最后代码左调来又调去很不直观。首先上结论:推荐使用async/await或者co/y...

2018-07-18 18:33:30 314

原创 js文件和ts文件的简单编译和调试

1.nodejs文件的编译1.1.如果安装好了nodejs环境,那么直接用node xx.js就可以执行这个js文件。1.2.如果用的是vscode的话,那么我们要创建一个目录,然后用vscode打开该目录,创建xx.js,然后点击调试按钮,看launch program是不是提示没有配置xxx,是的话,点击旁边的按钮,会生成一个.vscode目录,以及.vscode下的launch.js...

2018-07-17 16:02:05 9478

原创 nodejs,visual studio code, typescript安装过程

由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境。安装Node.js目前Node.js的最新版本是7.6.x。首先,从Node.js官网下载对应平台的安装程序,网速慢的童鞋请移步国内镜像。在Windows上安装时务必选择全部组件,包括勾选Add to Path。安装完成后,在Windows环境下,请打开命令提示符,然后输入node -...

2018-07-17 14:11:27 311

原创 gcc 和常见的gdb

首先:Gcc的编译流程分为了四个步骤:    1.预处理,生成预编译文件(.文件):        Gcc –E hello.c –o hello.i    2.编译,生成汇编代码(.s文件):(如果要加入gdb的话,在这一步加入-g即可)        Gcc –S hello.i –o hello.s    3.汇编,生成目标文件(.o文件):        Gcc –c hello.s –o...

2018-07-10 22:16:40 311

原创 同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别

POSIX同步IO、异步IO、阻塞IO、非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下。POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步IO按POSIX的描述似乎把同步和阻塞划等号,异步和非阻塞划等号,但是为什么有的人说同步IO不等于阻塞IO...

2018-07-10 20:32:06 131

原创 G++和常用的GDB调试命令

知识储备一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如:> cc -g hello.c -o hello> g++ -g hello.cpp -o hello12如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址实例gdb...

2018-07-07 20:21:30 947 1

原创 epoll ET(边缘触发) LT(水平触发)

EPOLL事件有两种模型:Edge Triggered (ET) 边缘触发只有数据到来,才触发,不管缓存区中是否还有数据。(客户端关闭的时候也会触发)Level Triggered (LT) 水平触发只要有数据都会触发。 首先介绍一下LT工作模式:LT(level triggered)是缺省的工作方式,并且同时支持block和no-block socket.在这种做法中,内核告诉你一个文件描述符是...

2018-07-05 00:02:52 291

原创 accept函数的第二个参数的含义

今天主要回顾下listen的第二个参数的意义。 话说现在现在都是用框架写业务代码。真的很少在去关注最基本的socket函数的意义了。该忘得都忘得差不多了。~~~  要慢慢捡起来。  主要是在看redis网络这块的时候它的第二个参数设置的是500多。  而且突然想到当初几年前腾讯电话面试问过我第二个参数是什么意思。当时我一股脑就说成connet的连接数量了。哈哈  2b.照例 先上图,再解析首先这个...

2018-07-04 22:38:11 1743 2

原创 Linux 静态库和动态库 使用说明

Linux下程序运行中,有两种库,静态库和动态库。    静态库:名字一般为libxxx.a,编译时会整合到可执行程序中,优点是运行时不需要外部函数库支持,缺点是编译后程序较大,一旦静态库改变,程序需要重新编译。    动态库:名字一般为libxxx.M.N.so,M为主版本号,N为副版本号。优点是运行时,有需要时才动态调用外部库中的函数,节省空间,缺点是运行环境中必须提供相应的库,动态库更新升级...

2018-07-02 21:31:59 178

原创 进程和线程结束之后回首那些资源

        1.进程结束的时候。操作系统已经为进程分配了独立的地址空间,也就是说当进程退出时整个地址空间都不复存在。那么是不是除了共享的内存,匿名管道,其他的比如malloc出来的空间、socket描述符、epoll描述符、线程锁什么的都不用释放。但是最好自己释放        2.线程结束的时候。一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_ex...

2018-07-01 15:27:07 294

原创 死锁的产生以及如何避免死锁

一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。当然其实单个进程或者单个线程重复加同一把锁也会,虽然我们有时候会觉得不可思议,但是有的时候调用的是别人的函数,还是有可能的。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,...

2018-07-01 13:49:31 1398

原创 备忘录模式

备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态[DP]。举个简单的例子,我们玩游戏时都会保存进度,所保存的进度以文件的形式存在。这样下次就可以继续玩,而不用从头开始。这里的进度其实就是游戏的内部状态,而这里的文件相当于是在游戏之外保存状态。这样,下次就可以从文件中读入保存的进度,从而恢复到原来的状态。这就是备忘录模式...

2018-07-01 11:15:29 133

原创 中介者模式

中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式的例子很多,大到联合国安理会,小到房屋中介,都扮演了中间者的角色,协调各方利益。       本文就以租房为例子,如果没有房屋中介,那么房客要自己找房东,而房东也要自己找房客,非常不方便。有了房屋中介机构就方便了,房东可以把要出租的房屋信息放到中介机构...

2018-07-01 11:15:00 172

原创 职责链模式

职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。其思想很简单,考虑员工要求加薪。公司的管理者一共有三级,总经理、总监、经理,如果一个员工要求加薪,应该向主管的经理申请,如果加薪的数量在经理的职权内,那么经理可以直接批准,否则将申请上交给总监。总监的处理方式也一样,总经理可以处理所有请求。这就...

2018-07-01 11:14:43 152

原创 观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。它还有两个别名,依赖(Dependents),发布-订阅(Publish-Subsrcibe)。可以举个博客订阅的例子,当博主发表新文章的时候,即博主状态发生了改变,那些订阅的读者就会收到通知,然后进行相应的动作,比如去看文章,或者收藏起来。博主与读者之间存在种一对多的依赖关系。下面...

2018-07-01 11:14:27 127

原创 信号中断 与 慢系统调用

1. 术语1.1. 慢系统调用(Slow system call)该术语适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用是指调用永远无法返回,多数网络支持函数都属于这一类。如:若没有客户连接到服务器上,那么服务器的accept调用就会一直阻塞。慢系统调用可以被永久阻塞,包括以下几个类别:(1)读写‘慢’设备(包括pipe,终端设备,网络连接等)。读时,数据不存在,需要等待;写时,缓冲区满或其他...

2018-07-01 11:13:13 177

minibug系统

实现nurses界面和bug管理系统操作

2015-11-23

空空如也

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

TA关注的人

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