上一页 1 2 3 4 5 6 7 8 9 ··· 32 下一页
摘要:有符号数转无符号数 不改变数值内容,改变解释方式,一般是负数时会出问题,因为符号位是1,转成无符号位时会被当成数据内容 short x=-1 转成 unsigned short y=(unsigned short)x 长整数转短整数 高位截断,低位保留,会改变符号位 int a=1234 转成 sh 阅读全文
posted @ 2021-01-06 22:03 陶士涵 阅读(32) 评论(0) 推荐(0) 编辑
摘要:算数移位:符号位不变,仅对数值位进行移位 右移高位补0,低位舍弃,若舍弃的位=0,则相当于除以2;若舍弃的位不等于0,则会丢失精度 左移低位补0,高位舍弃,若舍弃的位=0,则相当于乘以2;若舍弃的位不等于0,则会出现严重误差 负数反码移位:高位和低位都补1负数的补码移位:右移->高位补1 ; 左移- 阅读全文
posted @ 2021-01-06 13:43 陶士涵 阅读(48) 评论(0) 推荐(0) 编辑
摘要:要把多个字符串连接起来,可以用+号连接: var name = '小明';var age = 20;var message = '你好, ' + name + ', 你今年' + age + '岁了!';alert(message); 如果有很多变量需要连接,用+号就比较麻烦。ES6新增了一种模板字 阅读全文
posted @ 2021-01-06 11:21 陶士涵 阅读(71) 评论(0) 推荐(0) 编辑
摘要:strict模式JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量: i = 10; // i现在是全局变量在同一个页面的不同的JavaScript文件中,如果都不用 阅读全文
posted @ 2021-01-06 11:14 陶士涵 阅读(21) 评论(0) 推荐(0) 编辑
摘要:原码:用尾数表示真值的绝对值反码:若符号位为0,反码和原码一样;若符号位为1,则数值位全部取反补码:正数的补码=原码;负数的补码=反码末位+1(要考虑进位)移码:补码的基础上,符号位取反(只能表示整数) 用加法运算来代替减法运算例如:14-14 这个运算,如果在8bit的基础上,可以看成计算机天然的 阅读全文
posted @ 2021-01-05 23:23 陶士涵 阅读(124) 评论(0) 推荐(0) 编辑
摘要:定点数和浮点数定点数:小数点固定的数 浮点数:小数点不固定的数 无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值n位无符号数表示范围是:0~ 2^n -1 因为8个二进制位全为1的时候就是 ,第九位数为1的时候-1 有符号数如果机器字长是8位,第八位是符号位,其他七位是尾 阅读全文
posted @ 2021-01-04 19:15 陶士涵 阅读(77) 评论(0) 推荐(0) 编辑
摘要:babel是将 ES2015+ 语法的 JavaScript 代码编译为能在当前浏览器上工作的代码 安装包 npm install --save-dev @babel/core @babel/cli @babel/preset-env npm install --save @babel/polyfi 阅读全文
posted @ 2021-01-04 17:24 陶士涵 阅读(102) 评论(0) 推荐(0) 编辑
摘要:一次磁盘读写操作所需要的时间寻找时间(寻道时间):磁头臂前后移动寻找磁道所需的时间 (系统软件可算法优化)延迟时间:磁头旋转定位到目标扇区所需要的时间 (固定)传输时间:读写数据到扇区所需的时间 (固定) 先来先服务算法:请求的磁道集中的话,性能好.大量进程的时候会性能差 最短寻找时间优先保证每次寻 阅读全文
posted @ 2021-01-04 11:14 陶士涵 阅读(64) 评论(0) 推荐(0) 编辑
摘要:磁盘的结构 磁盘/磁道/扇区的概念盘片里面会一圈圈的划分出很多的磁道,每条磁道会划分出一段一段的扇区,每个扇区存储的数据相同(1KB) 如何在磁盘中读写数据磁盘转动,目标扇区从磁头下面划过就能读写扇区了 盘面/柱面的概念会有很多层的盘面,会有编号,每个盘面对应一个磁头,都在一个磁臂上,会共进退立体的 阅读全文
posted @ 2021-01-04 10:53 陶士涵 阅读(53) 评论(0) 推荐(0) 编辑
摘要:用页面置换算法决定应该换出哪个页面 五种页面置换算法:1)最佳置换算法(OPT)2)先进先出算法(FIFO)3)最近最少使用算法(LRU)4)时钟置换算法(CLOCK)5)改进型的时钟置换算法 最佳置换算法(OPT):每次选择淘汰的页面将是以后永不使用,最长时间内不再被访问的页面,无法实现 先进先出 阅读全文
posted @ 2021-01-03 16:44 陶士涵 阅读(102) 评论(0) 推荐(0) 编辑
摘要:基本地址转换机构:一组硬件机构,将逻辑地址转换成物理地址,需要两次访存,先查页表再查内存具有快表的地址转换机构1)局部性原理2)什么是快表3)引入快表后,地址转换只需要一次访存 局部性原理时间局部性:程序中执行了某条指令,不久后这条指令可能会再次执行;访问了某个变量,不久后可能会再次访问空间局部性: 阅读全文
posted @ 2020-12-31 10:57 陶士涵 阅读(67) 评论(0) 推荐(0) 编辑
摘要:基本分页存储方式 1)把内存分为一个个小分区,再按照分区大小把进程拆分成一个个的小部分,比如每个分区4kb,每个分区就是一个页框/页帧/页存块/物理块,页框号从0开始 2)将进程也分成和页框大小相等的一个个区域,称为页/页面,每个页面也有个编号,页号也是从0开始的 3)将进程分页然后离散的分配到内存 阅读全文
posted @ 2020-12-30 22:33 陶士涵 阅读(58) 评论(0) 推荐(0) 编辑
摘要:首次适应算法每次从低地址开始查找,找到第一个能满足大小的空闲分区,顺序查找空闲分区链或者空闲分区表 最佳适应算法(最小分配)按照容量递增从小到大的顺序查找,每次分配内存按前面顺序查找,找到第一个合适的,会留下很多外部碎片 最坏适应算法(最大分配)按容量从大到小顺序查找 邻近适应算法每次分配内存时,从 阅读全文
posted @ 2020-12-30 19:27 陶士涵 阅读(210) 评论(0) 推荐(0) 编辑
摘要:连续分配:系统为程序分配的是连续的内存空间 单一连续分配:内存分为系统区和用户区,只有一道用户程序占据整个用户区,无外部碎片,有内部碎片,内存利用率低固定分区分配:分为系统区和用户区,用户区划分多个分区,每个分区一个程序,无外部碎片,有内部碎片,利用率低 动态分区分配:可变分区分配,根据进程的大小动 阅读全文
posted @ 2020-12-30 19:11 陶士涵 阅读(67) 评论(0) 推荐(0) 编辑
摘要:内存空间的扩充:覆盖技术,交换技术,虚拟存储技术 覆盖技术-解决程序大小超过物理内存总和问题(现在基本不用了),增加了编程负担 思想:1)将程序分为多个段,常用的段常驻内存,不常用的段需要时调入内存2)内存分为一个"固定区",若干个"覆盖区"3)需要常驻的放在"固定区",调入后不在调出(除非运行结束 阅读全文
posted @ 2020-12-30 17:55 陶士涵 阅读(70) 评论(0) 推荐(0) 编辑
摘要:什么是内存 1.存储单元 用于存放数据的硬件,程序执行前先放到内存中才能被CPU处理2.内存地址 给内存存储单元编地址,从0开始每个地址对应一个存储单元,可以按字节编址,也可以按字长编址,一个存储单元一个字节或字长 内存运行的基本原理 1.指令的工作原理 内存有数据段和程序段,指令存放在程序段,变量 阅读全文
posted @ 2020-12-30 17:18 陶士涵 阅读(53) 评论(0) 推荐(0) 编辑
摘要:调度的三个层次高级调度(作业调度):操作系统调入作业,把作业从外存调入内存,建立相应的PCB,作业运行结束才调出,只发生一次中级调度(内存调度):引入虚拟存储技术,将暂时不能运行的进程调至外存等待,等时间再调入内存,进程状态为挂起状态,PCB还是常驻内存可能会发生多次低级调度(进程调度):在就绪队列 阅读全文
posted @ 2020-12-30 14:10 陶士涵 阅读(99) 评论(0) 推荐(0) 编辑
摘要:线程的概念和多线程模型 线程是处理机调度的单位,进程是资源分配单位 多CPU,各个线程占用不同CPU 每个线程都有一个线程ID,线程控制块TCB 线程也有就绪阻塞运行状态 同一进程不同线程间共享资源 线程几乎不拥有系统资源 用户级线程:是应用程序通过线程库实现(用户视角)内核级线程:操作系统内核完成 阅读全文
posted @ 2020-12-30 13:39 陶士涵 阅读(48) 评论(0) 推荐(0) 编辑
摘要:进程通信:进程之间的信息交换进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立 共享存储 1)两个进程对共享空间的访问必须是互斥的 2)基于数据结构的共享,慢是低级通信 3)基于存储区的共享,高级通信,在内存中画出一块共享存储区,数据形式存储位置都由进程控制 消息传递 阅读全文
posted @ 2020-12-30 12:06 陶士涵 阅读(61) 评论(0) 推荐(0) 编辑
摘要:进程控制:创建新的进程,撤销已有进程,实现进程状态转换创建完成,提交 >就绪队列 >调度,切换 >CPU >完成/异常结束 用原语实现进程控制,原语的特点是执行期间不允许中断,只能一气呵成,这种不可中断操作就是原子操作原语采用"关中断指令"和"开中断指令" 1.进程的创建: 从无-->创建态-->就 阅读全文
posted @ 2020-12-30 11:53 陶士涵 阅读(67) 评论(0) 推荐(0) 编辑
摘要:进程的三种基本状态:运行态-占用cpu,并在cpu运行,单核cpu最多只能有一个进程处于运行态就绪态-具备运行条件,但是没有空闲cpu,暂时不能运行,万事具备只差CPU阻塞态-等待某事件 另外两种状态创建态-分配资源,初始化PCB终止态-回收资源,撤销PCB 状态转换就绪态-->运行态 [进程被调度 阅读全文
posted @ 2020-12-30 11:20 陶士涵 阅读(62) 评论(0) 推荐(0) 编辑
摘要:程序段,数据段,PCB组成了进程实体,创建进程就是创建进程中的PCB,撤销进程实体中的PCB PCB是进程的唯一标识 1.进程描述信息 2.进程控制和管理信息 3.资源分配清单 4.处理机相关信息 进程的组织(执行,就绪,阻塞状态): 链接方式,按照进程状态分为多个队列,持有指向各个队列的指针 索引 阅读全文
posted @ 2020-12-29 23:10 陶士涵 阅读(46) 评论(0) 推荐(0) 编辑
摘要:1.当中断发生时,cpu立即进入核心态 2.当中断发生后,当前进程进入暂停状态,操作系统内核对中断进行处理 3.对于不同的中断信号,会进行不同的处理 有了中断,才能实现程序的并发运行,cpu从用户态转入核心态,使用特权指令进行操作系统的管理工作(进程切换,分配io设备) 中断分为内中断和外中断,内中 阅读全文
posted @ 2020-12-29 22:33 陶士涵 阅读(80) 评论(0) 推荐(0) 编辑
摘要:指令:cpu能识别执行的最基本命令 指令分为特权指令和非特权指令,特权指令如内存清零指令,非特权指令如普通的加减乘除指令 内核程序在核心态执行特权指令 操作系统内核: 1.时钟管理-实现计时功能 2.中断处理-负责实现中断机制 3.原语 1)位于操作系统底层,最接近硬件的程序 2)运行具有原子性 3 阅读全文
posted @ 2020-12-29 22:13 陶士涵 阅读(55) 评论(0) 推荐(0) 编辑
摘要:并发性 1.并发:两个或多个事件交替执行 2.操作系统的并发性:同时存在着多个运行着的程序,一个单核cpu同一时刻只能运行一个程序,操作系统负责协调 多个程序交替执行,宏观上看起来是同时进行的 3.如果有多个核心的cpu,那么程序是可以并行同时执行的 共享性 两种资源共享方式:互斥共享和同时共享 互 阅读全文
posted @ 2020-12-29 21:22 陶士涵 阅读(230) 评论(0) 推荐(0) 编辑
摘要:1.HashTable中的有个字段记录元素个数,每插入一个元素或者unset删掉元素时会更新这个字段。这样在进行count()函数统计数组元素个数时就能快速的返回。 2.在PHP中可以使用字符串或者数字作为数组的索引 , 数字索引直接就可以作为哈希表的索引,数字也无需进行哈希处理 , 在PHP数组中 阅读全文
posted @ 2020-12-29 11:47 陶士涵 阅读(126) 评论(0) 推荐(0) 编辑
摘要:开放寻址法:又称开放定址法,当哈希冲突发生时,从发生冲突的那个单元起,按照一定的次序,从哈希表中寻找一个空闲的单元,然后把发生冲突的元素存入到该单元。这个空闲单元又称为开放单元或者空白单元。开放寻址法需要的表长度要大于等于所需要存放的元素数量,非常适用于装载因子较小(小于0.5)的散列表。 查找时, 阅读全文
posted @ 2020-12-28 17:37 陶士涵 阅读(99) 评论(0) 推荐(0) 编辑
摘要:1) 单线程 2) Init 函数 如果包P1中导入了包P2,则P2中的init函数Happens Before 所有P1中的操作main函数Happens After 所有的init函数3) Goroutine Goroutine的创建Happens Before所有此Goroutine中的操作G 阅读全文
posted @ 2020-12-28 15:07 陶士涵 阅读(115) 评论(0) 推荐(0) 编辑
摘要:在2014年2月10号以前的php存储变量的结构是: Zend/zend.h struct _zval_struct { /* Variable information */ zvalue_value value; /* value */ zend_uint refcount__gc; zend_u 阅读全文
posted @ 2020-12-28 12:06 陶士涵 阅读(37) 评论(0) 推荐(0) 编辑
摘要:php是弱类型语言 , 但是并不表示没有数据类型 PHP 支持 10 种原始数据类型。 四种标量类型: bool(布尔型)int(整型)float(浮点型,也称作 double)string(字符串) 四种复合类型: array(数组)object(对象)callable(可调用)iterable( 阅读全文
posted @ 2020-12-28 11:14 陶士涵 阅读(56) 评论(0) 推荐(0) 编辑
摘要:会panic的几种情况 1.向已经关闭的channel发送数据 2.关闭已经关闭的channel 3.关闭未初始化的nil channel 会阻塞的情况: 1. 从未初始化nil channel中读数据 2. 向未初始化nil channel中发数据 3.在没有读取的groutine时,向无缓冲ch 阅读全文
posted @ 2020-12-26 18:17 陶士涵 阅读(61) 评论(0) 推荐(0) 编辑
摘要:defer语句在不对的位置出现 , 会出现错误 file, err := os.Open("/null") defer file.Close() if err != nil { fmt.Println("open error! ", err) return } res, err := http.Ge 阅读全文
posted @ 2020-12-26 15:47 陶士涵 阅读(58) 评论(0) 推荐(0) 编辑
摘要:引用类型 1. 切片slice 2.映射map 3.函数func 4.方法(p *P)func 5.通道channel 值类型 数组 bool int string float 指针类型 nil可以赋值给引用类型和指针类型,不能赋值给值类型会报panic错误 阅读全文
posted @ 2020-12-26 14:52 陶士涵 阅读(67) 评论(0) 推荐(0) 编辑
摘要:Go语言的常量有个不同寻常之处。虽然一个常量可以有任意一个确定的基础类型,例如int或float64,或者是类似time.Duration这样命名的基础类型,但是许多常量并没有一个明确的基础类型。 math.Pi就是无类型的浮点数常量 const ( E = 2.718281828459045235 阅读全文
posted @ 2020-12-25 22:29 陶士涵 阅读(139) 评论(0) 推荐(0) 编辑
摘要:闭包的特点是: 1.函数里面嵌套函数 2.函数内部可以引用函数外部的参数和变量 3.参数和变量不会被垃圾回收机制回收 这个问题输出啥 function Foo(){ var i=0; return function(){ document.write(i++); } } var f1=Foo(), 阅读全文
posted @ 2020-12-25 16:59 陶士涵 阅读(64) 评论(0) 推荐(0) 编辑
摘要:一个字符串是一个不可改变的字节序列,字符串通常是用来包含人类可读的文本数据。和数组不同的是,字符串的元素不可修改,是一个只读的字节数组。每个字符串的长度虽然也是固定的,但是字符串的长度并不是字符串类型的一部分。由于Go语言的源代码要求是UTF8编码,导致Go源代码中出现的字符串面值常量一般也是UTF 阅读全文
posted @ 2020-12-25 10:54 陶士涵 阅读(178) 评论(0) 推荐(0) 编辑
摘要:go语言圣经中的解释: 数组和slice之间有着紧密的联系。 一个slice是一个轻量级的数据结构,提供了访问数组子序列(或者全部)元素的功能,而且slice的底层确实引用一个数组对象。 一个slice由三个部分构成:指针、长度和容量。 指针指向第一个slice元素对应的底层数组元素的地址,要注意的 阅读全文
posted @ 2020-12-23 22:21 陶士涵 阅读(143) 评论(0) 推荐(0) 编辑
摘要:函数的定义如下: spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool 官方的解释是: 如果需要多条 autoload 函数,s 阅读全文
posted @ 2020-12-23 16:10 陶士涵 阅读(74) 评论(0) 推荐(0) 编辑
摘要:该函数的定义如下: class_exists ( string $class_name [, bool $autoload = true ] ) : bool 第二个参数就是表示是否自动调用autoload函数 class_name 类名。名字的匹配是不分区大小写的。 autoload 是否默认调用 阅读全文
posted @ 2020-12-23 15:54 陶士涵 阅读(55) 评论(0) 推荐(0) 编辑
摘要:目前go-fly客服系统是通过内存来记录客服和访客的映射关系 , 不能用于分布式的环境下 , 只能单机使用 , 后续如果要支持分布式 , 可以考虑redis的pub/sub机制 1.基于pub/sub的特点,他的典型使用场景就是实时消息系统,比如即时聊天,群聊等功能 2.还常用作减轻高并发的I/O写 阅读全文
posted @ 2020-12-18 10:53 陶士涵 阅读(87) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 32 下一页