上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 54 下一页
摘要: 首次适应算法每次从低地址开始查找,找到第一个能满足大小的空闲分区,顺序查找空闲分区链或者空闲分区表 最佳适应算法(最小分配)按照容量递增从小到大的顺序查找,每次分配内存按前面顺序查找,找到第一个合适的,会留下很多外部碎片 最坏适应算法(最大分配)按容量从大到小顺序查找 邻近适应算法每次分配内存时,从 阅读全文
posted @ 2020-12-30 19:27 唯一客服系统开发笔记 阅读(1233) 评论(0) 推荐(0) 编辑
摘要: 连续分配:系统为程序分配的是连续的内存空间 单一连续分配:内存分为系统区和用户区,只有一道用户程序占据整个用户区,无外部碎片,有内部碎片,内存利用率低固定分区分配:分为系统区和用户区,用户区划分多个分区,每个分区一个程序,无外部碎片,有内部碎片,利用率低 动态分区分配:可变分区分配,根据进程的大小动 阅读全文
posted @ 2020-12-30 19:11 唯一客服系统开发笔记 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 内存空间的扩充:覆盖技术,交换技术,虚拟存储技术 覆盖技术-解决程序大小超过物理内存总和问题(现在基本不用了),增加了编程负担 思想:1)将程序分为多个段,常用的段常驻内存,不常用的段需要时调入内存2)内存分为一个"固定区",若干个"覆盖区"3)需要常驻的放在"固定区",调入后不在调出(除非运行结束 阅读全文
posted @ 2020-12-30 17:55 唯一客服系统开发笔记 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 什么是内存 1.存储单元 用于存放数据的硬件,程序执行前先放到内存中才能被CPU处理2.内存地址 给内存存储单元编地址,从0开始每个地址对应一个存储单元,可以按字节编址,也可以按字长编址,一个存储单元一个字节或字长 内存运行的基本原理 1.指令的工作原理 内存有数据段和程序段,指令存放在程序段,变量 阅读全文
posted @ 2020-12-30 17:18 唯一客服系统开发笔记 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 调度的三个层次高级调度(作业调度):操作系统调入作业,把作业从外存调入内存,建立相应的PCB,作业运行结束才调出,只发生一次中级调度(内存调度):引入虚拟存储技术,将暂时不能运行的进程调至外存等待,等时间再调入内存,进程状态为挂起状态,PCB还是常驻内存可能会发生多次低级调度(进程调度):在就绪队列 阅读全文
posted @ 2020-12-30 14:10 唯一客服系统开发笔记 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 线程的概念和多线程模型 线程是处理机调度的单位,进程是资源分配单位 多CPU,各个线程占用不同CPU 每个线程都有一个线程ID,线程控制块TCB 线程也有就绪阻塞运行状态 同一进程不同线程间共享资源 线程几乎不拥有系统资源 用户级线程:是应用程序通过线程库实现(用户视角)内核级线程:操作系统内核完成 阅读全文
posted @ 2020-12-30 13:39 唯一客服系统开发笔记 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 进程通信:进程之间的信息交换进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立 共享存储 1)两个进程对共享空间的访问必须是互斥的 2)基于数据结构的共享,慢是低级通信 3)基于存储区的共享,高级通信,在内存中画出一块共享存储区,数据形式存储位置都由进程控制 消息传递 阅读全文
posted @ 2020-12-30 12:06 唯一客服系统开发笔记 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 进程控制:创建新的进程,撤销已有进程,实现进程状态转换创建完成,提交 >就绪队列 >调度,切换 >CPU >完成/异常结束 用原语实现进程控制,原语的特点是执行期间不允许中断,只能一气呵成,这种不可中断操作就是原子操作原语采用"关中断指令"和"开中断指令" 1.进程的创建: 从无-->创建态-->就 阅读全文
posted @ 2020-12-30 11:53 唯一客服系统开发笔记 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 进程的三种基本状态:运行态-占用cpu,并在cpu运行,单核cpu最多只能有一个进程处于运行态就绪态-具备运行条件,但是没有空闲cpu,暂时不能运行,万事具备只差CPU阻塞态-等待某事件 另外两种状态创建态-分配资源,初始化PCB终止态-回收资源,撤销PCB 状态转换就绪态-->运行态 [进程被调度 阅读全文
posted @ 2020-12-30 11:20 唯一客服系统开发笔记 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 程序段,数据段,PCB组成了进程实体,创建进程就是创建进程中的PCB,撤销进程实体中的PCB PCB是进程的唯一标识 1.进程描述信息 2.进程控制和管理信息 3.资源分配清单 4.处理机相关信息 进程的组织(执行,就绪,阻塞状态): 链接方式,按照进程状态分为多个队列,持有指向各个队列的指针 索引 阅读全文
posted @ 2020-12-29 23:10 唯一客服系统开发笔记 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 1.当中断发生时,cpu立即进入核心态 2.当中断发生后,当前进程进入暂停状态,操作系统内核对中断进行处理 3.对于不同的中断信号,会进行不同的处理 有了中断,才能实现程序的并发运行,cpu从用户态转入核心态,使用特权指令进行操作系统的管理工作(进程切换,分配io设备) 中断分为内中断和外中断,内中 阅读全文
posted @ 2020-12-29 22:33 唯一客服系统开发笔记 阅读(898) 评论(0) 推荐(0) 编辑
摘要: 指令:cpu能识别执行的最基本命令 指令分为特权指令和非特权指令,特权指令如内存清零指令,非特权指令如普通的加减乘除指令 内核程序在核心态执行特权指令 操作系统内核: 1.时钟管理-实现计时功能 2.中断处理-负责实现中断机制 3.原语 1)位于操作系统底层,最接近硬件的程序 2)运行具有原子性 3 阅读全文
posted @ 2020-12-29 22:13 唯一客服系统开发笔记 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 并发性 1.并发:两个或多个事件交替执行 2.操作系统的并发性:同时存在着多个运行着的程序,一个单核cpu同一时刻只能运行一个程序,操作系统负责协调 多个程序交替执行,宏观上看起来是同时进行的 3.如果有多个核心的cpu,那么程序是可以并行同时执行的 共享性 两种资源共享方式:互斥共享和同时共享 互 阅读全文
posted @ 2020-12-29 21:22 唯一客服系统开发笔记 阅读(2079) 评论(0) 推荐(0) 编辑
摘要: 1.HashTable中的有个字段记录元素个数,每插入一个元素或者unset删掉元素时会更新这个字段。这样在进行count()函数统计数组元素个数时就能快速的返回。 2.在PHP中可以使用字符串或者数字作为数组的索引 , 数字索引直接就可以作为哈希表的索引,数字也无需进行哈希处理 , 在PHP数组中 阅读全文
posted @ 2020-12-29 11:47 唯一客服系统开发笔记 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 开放寻址法:又称开放定址法,当哈希冲突发生时,从发生冲突的那个单元起,按照一定的次序,从哈希表中寻找一个空闲的单元,然后把发生冲突的元素存入到该单元。这个空闲单元又称为开放单元或者空白单元。开放寻址法需要的表长度要大于等于所需要存放的元素数量,非常适用于装载因子较小(小于0.5)的散列表。 查找时, 阅读全文
posted @ 2020-12-28 17:37 唯一客服系统开发笔记 阅读(624) 评论(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 唯一客服系统开发笔记 阅读(396) 评论(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 唯一客服系统开发笔记 阅读(159) 评论(0) 推荐(0) 编辑
摘要: php是弱类型语言 , 但是并不表示没有数据类型 PHP 支持 10 种原始数据类型。 四种标量类型: bool(布尔型)int(整型)float(浮点型,也称作 double)string(字符串) 四种复合类型: array(数组)object(对象)callable(可调用)iterable( 阅读全文
posted @ 2020-12-28 11:14 唯一客服系统开发笔记 阅读(199) 评论(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 唯一客服系统开发笔记 阅读(218) 评论(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 唯一客服系统开发笔记 阅读(199) 评论(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 唯一客服系统开发笔记 阅读(316) 评论(0) 推荐(0) 编辑
摘要: Go语言的常量有个不同寻常之处。虽然一个常量可以有任意一个确定的基础类型,例如int或float64,或者是类似time.Duration这样命名的基础类型,但是许多常量并没有一个明确的基础类型。 math.Pi就是无类型的浮点数常量 const ( E = 2.718281828459045235 阅读全文
posted @ 2020-12-25 22:29 唯一客服系统开发笔记 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 闭包的特点是: 1.函数里面嵌套函数 2.函数内部可以引用函数外部的参数和变量 3.参数和变量不会被垃圾回收机制回收 这个问题输出啥 function Foo(){ var i=0; return function(){ document.write(i++); } } var f1=Foo(), 阅读全文
posted @ 2020-12-25 16:59 唯一客服系统开发笔记 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 一个字符串是一个不可改变的字节序列,字符串通常是用来包含人类可读的文本数据。和数组不同的是,字符串的元素不可修改,是一个只读的字节数组。每个字符串的长度虽然也是固定的,但是字符串的长度并不是字符串类型的一部分。由于Go语言的源代码要求是UTF8编码,导致Go源代码中出现的字符串面值常量一般也是UTF 阅读全文
posted @ 2020-12-25 10:54 唯一客服系统开发笔记 阅读(857) 评论(0) 推荐(0) 编辑
摘要: go语言圣经中的解释: 数组和slice之间有着紧密的联系。 一个slice是一个轻量级的数据结构,提供了访问数组子序列(或者全部)元素的功能,而且slice的底层确实引用一个数组对象。 一个slice由三个部分构成:指针、长度和容量。 指针指向第一个slice元素对应的底层数组元素的地址,要注意的 阅读全文
posted @ 2020-12-23 22:21 唯一客服系统开发笔记 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 函数的定义如下: spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool 官方的解释是: 如果需要多条 autoload 函数,s 阅读全文
posted @ 2020-12-23 16:10 唯一客服系统开发笔记 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 该函数的定义如下: class_exists ( string $class_name [, bool $autoload = true ] ) : bool 第二个参数就是表示是否自动调用autoload函数 class_name 类名。名字的匹配是不分区大小写的。 autoload 是否默认调用 阅读全文
posted @ 2020-12-23 15:54 唯一客服系统开发笔记 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 目前go-fly客服系统是通过内存来记录客服和访客的映射关系 , 不能用于分布式的环境下 , 只能单机使用 , 后续如果要支持分布式 , 可以考虑redis的pub/sub机制 1.基于pub/sub的特点,他的典型使用场景就是实时消息系统,比如即时聊天,群聊等功能 2.还常用作减轻高并发的I/O写 阅读全文
posted @ 2020-12-18 10:53 唯一客服系统开发笔记 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 在登录的时候 , 对安全性比较高的业务 , 需要进行限制指定IP或IP段才能登录 , 企邮企业有的就限制只能在本企业内登录 这个时候设计一下数据库 , 实现这个功能可以这样 表结构: CREATE TABLE `iplimit_list` ( `id` int(10) unsigned NOT NU 阅读全文
posted @ 2020-12-17 15:16 唯一客服系统开发笔记 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 哈希表的完整结构 , 因为他是多个哈希一层层嵌套的 , 所以会是这样的结构 触发rehash的时机 字典类型容量变化过程叫做rehash,需要满足一定的条件才能触发扩容机制服务器当前没有进行BGWRITEAOF或者BGSAVE命令,且当前键值对个数超过一维数组的大小,才会触发扩容。 如果当前键值对个 阅读全文
posted @ 2020-12-17 13:49 唯一客服系统开发笔记 阅读(1671) 评论(0) 推荐(1) 编辑
摘要: redis hash的底层是压缩列表 和 哈希表两种形式 ,哈希表的形式是下面这样一层层嵌套的 , 转载自公众号 CodeSheep 源码中这几种类型的定义 这里面的哈希结点dictEntry使用链地址法解决哈希冲突问题 字典dict里存了两个哈希表dictht , 用于处理rehash过程 , 哈 阅读全文
posted @ 2020-12-17 13:21 唯一客服系统开发笔记 阅读(643) 评论(0) 推荐(0) 编辑
摘要: Golang开发 1.GO语言基础 [日常] 搭建golang开发环境 [日常] Go语言圣经前言 [日常] Go语言圣经-声明,变量,赋值,类型,包和文件习题 [日常] Go语言圣经--作用域,基础数据类型,整型 [日常] Go语言圣经--浮点数习题 [日常] Go语言圣经--复数,布尔值,字符串 阅读全文
posted @ 2020-12-17 11:29 唯一客服系统开发笔记 阅读(704) 评论(1) 推荐(0) 编辑
摘要: ls命令是最常用的linux命令之一了 , 当要按时间或者按照大小进行排序文件的时候 , 可以使用以下参数 按时间倒序排列 ll -tr -t是按时间排序 -r是倒序 按大小倒序排列 ll -Srh -S 大写S是按大小排序 -r是倒序 -h是格式化文件大小, 看起来更直观 阅读全文
posted @ 2020-12-15 19:04 唯一客服系统开发笔记 阅读(1816) 评论(0) 推荐(0) 编辑
摘要: go-fly客服系统快捷回复功能 , 需要获取到分组名以及分组名下的回复内容 数据库的表结构是 , group_id是关联字段 , user_id是用户id: CREATE TABLE `reply_group` ( `id` int(11) NOT NULL AUTO_INCREMENT, `gr 阅读全文
posted @ 2020-12-15 18:58 唯一客服系统开发笔记 阅读(1664) 评论(0) 推荐(0) 编辑
摘要: 前面我们使用list实现过队列 , 现在就来看一下list的底层结构 list有两种实现方式: 1. 压缩链表 压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry),每个节点可以保存一个字节数组 阅读全文
posted @ 2020-12-14 19:04 唯一客服系统开发笔记 阅读(1062) 评论(0) 推荐(0) 编辑
摘要: 上一篇是单机当前进程的滑动窗口限流 , 这一个是使用go redis list结构实现的滑动窗口限流 , 原理都一样 , 但是支持分布式 原理可以参考上一篇介绍 func LimitFreqs(queueName string, count uint, timeWindow int64) bool 阅读全文
posted @ 2020-12-14 18:42 唯一客服系统开发笔记 阅读(1128) 评论(0) 推荐(0) 编辑
摘要: 本代码基于原博客java版本的GO实现 , 原文解释也比较详细 , 这里也放上原文链接:https://www.cnblogs.com/dijia478/p/13807826.html 具体解释如下 , 代码在最下面 1.10秒内通过5次 , 这条线就是队列list,当第一个事件进来,队列大小是0, 阅读全文
posted @ 2020-12-14 14:06 唯一客服系统开发笔记 阅读(1706) 评论(0) 推荐(1) 编辑
摘要: 部门中有个字段存储的是十进制数字 , 但是表示的意思是转成二进制后 ,每一个位代表不同功能的开关状态 当超过32个功能开关的时候 , 就需要将int类型转换成bigint类型 , 原因就是int只能存储4个字节也就是2的32次方的整型值 , 装不下了, 下面就是具体的存的范围 bigint从 -2^ 阅读全文
posted @ 2020-12-14 11:48 唯一客服系统开发笔记 阅读(2173) 评论(0) 推荐(0) 编辑
摘要: 今天听到看部门同事有遇到IO过高的问题 , 简单的查询了下 iostat命令: %user:CPU处在用户模式下的时间百分比。 %nice:CPU处在带NICE值的用户模式下的时间百分比。 %system:CPU处在系统模式下的时间百分比。 %iowait:CPU等待输入输出完成时间的百分比。 %s 阅读全文
posted @ 2020-12-11 11:10 唯一客服系统开发笔记 阅读(843) 评论(0) 推荐(0) 编辑
摘要: 随着业务的增长,一般的公司都会经历一个从单库单表到分库分表的过程 , 需要考虑以下要素判断是否开始分库分表 1. 如果mysql单库的QPS超过1000就要考虑分库了 , 一般根据业务进行分库 目前新浪邮箱的主库是sinanet 各种辅助库 userservice客服系统 sinastore 文件存 阅读全文
posted @ 2020-12-10 17:20 唯一客服系统开发笔记 阅读(1080) 评论(0) 推荐(0) 编辑
上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 54 下一页