摘要: 一、JS中的数据类型 基本类型 分为以下六种: 1. string(字符串) 2. boolean(布尔值) 3. number(数字) 4. symbol(符号) 5. null(空值) 6. undefined(未定义) 说明: 1. symbol是ES6中新增的数据类型,symbol 表示独一 阅读全文
posted @ 2019-12-17 13:14 linzj 阅读(1912) 评论(0) 推荐(0) 编辑
摘要: Web Components 是什么? Web Components是W3C定义的新标准,它给了前端开发者扩展浏览器标签的能力,可以自由的定制组件,更好的进行模块化开发,彻底解放了前端开发者的生产力。 Web Components 架构 Web Components在 W3C 规范中的发展有几个模块 阅读全文
posted @ 2016-05-12 17:24 linzj 阅读(2184) 评论(0) 推荐(0) 编辑
摘要: 基本概念 信号在Linux中是一个比较常见的概念,例如我们按Ctrl+C中断前台进程,通过Kill命令结束进程都是通过信号实现的。下面就以Ctrl+C为例简单的说明信号的处理流程: 用户按下Ctrl-C,这个键盘输入产生一个硬件中断。 该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以说发... 阅读全文
posted @ 2016-05-12 14:56 linzj 阅读(2484) 评论(0) 推荐(0) 编辑
摘要: Linux下的Socket编程大体上包括Tcp Socket、Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列。 TCP Socket 基于TCP协议的客户端/服务器程序的一般流程一般如下: 它基本上可以分为三个部分: 一、建立连接:... 阅读全文
posted @ 2016-05-12 14:55 linzj 阅读(824) 评论(0) 推荐(0) 编辑
摘要: 多个线程同时访问共享数据时可能会冲突,比如两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成: 从内存读变量值到寄存器 寄存器的值加1 将寄存器的值写回内存 假设两个线程在多处理器平台上同时执行这三条指令,则可能导致下图所示的结果,最后变量只加了一次而非两次。 如下例子就演示了这一过程: #include #include #include int count... 阅读全文
posted @ 2016-05-12 14:54 linzj 阅读(395) 评论(0) 推荐(1) 编辑
摘要: 线程 有的时候,我们需要在一个基础中同时运行多个控制流程。例如:一个图形界面的下载软件,在处理下载任务的同时,还必须响应界面的对任务的停止,删除等控制操作。这个时候就需要用到线程来实现并发操作。 和信号处理函数的控制在处理完信号之后就结束不同的是,多线程的控制流程可以长期并存,操作系统会在各线程之间调度和切换,就像在多个进程之间调度和切换一样,但创建线程开销要比进程小得多。因此,线程往往也被称... 阅读全文
posted @ 2016-05-12 14:53 linzj 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 每个进程各自有不同的用户地址空间,进程之间要交换数据必须通过在内核中开辟缓冲区,从而实现数据共享。 管道 管道是一种最基本的IPC机制,由pipe函数创建: int pipe(int filedes[2]); 调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读... 阅读全文
posted @ 2016-05-12 14:48 linzj 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。 进程的状态,有运行、挂起、停止、僵尸等状态。 进程切换时需要保存和恢复的一些CPU寄存器。 描述虚拟地址空间的信息。 描述控制终端的信息。 当前工作目录(Current Working... 阅读全文
posted @ 2016-05-12 14:44 linzj 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开、关闭、读、写、定位。在Linux系统中,提供了两套API, 一套是C标准API:fopen、fclose、fread、fwrite、fseek, 另一套则是POSIX定义的系统API:open、close、read、write、seek。 其中POSIX定义的API是系统API,而C标准API是基于系统API的封装,并且提... 阅读全文
posted @ 2016-05-12 14:43 linzj 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 查看栈信息 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息。 下面是一些查看函数调用栈信息的GDB命令: backtrace / bt :打印当前的函数调用栈的所有信息。如: (gdb) bt #0 func (n=250) at t... 阅读全文
posted @ 2016-05-12 14:42 linzj 阅读(719) 评论(0) 推荐(0) 编辑