摘要:
如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页 写满,就会自动开辟一个新的页。 如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录 都要被插到现有索引页得中间某个位置, 频繁的移动、分页操作造成了大量的碎片,得到了不 阅读全文
2021年8月15日
摘要:
1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 3.帮助服务器避免排序和临时表 4.将随机IO变为顺序IO。 5.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 阅读全文
摘要:
非关系型数据库也叫NOSQL,采用键值对的形式进行存储。 它的读写性能很高,易于扩展,可分为内存性数据库以及文档型数据库,比如 Redis,Mongodb,HBase 等等。 适合使用非关系型数据库的场景: 阅读全文
摘要:
关系型数据库的优点 容易理解。因为它采用了关系模型来组织数据。 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询(带where子句的查询) 非关系型数据库的优点 不需要经过SQL层的解析,读写效率高。 基于键值对,数据的扩展性很好。 可以支持多种类型数据的存储,如图片,文档等等。 阅读全文
2021年8月14日
摘要:
(1)内存分配未成功,却使用了它。 (2)内存分配虽然成功,但是尚未初始化就引用它。 (3)内存分配成功并且已经初始化,但操作越过了内存的边界。 例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for循环语句中,循环次数很容易搞 错,导致数组操作越界。 (4)忘记了释放内存,造成内存 阅读全文
摘要:
1、最佳置换法(OPT) 最佳置换算法(OPT,Optimal) :每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问 的页面,这样可以保证最低的缺页率。 最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的 是哪个页面。操作系统无法提前预判页面访问 阅读全文
摘要:
死锁是指两个(多个)线程相互等待对方数据的过程,死锁的产生会导致程序卡死,不解锁程序将永远无法进行下去。 1、死锁产生原因 举个例子:两个线程A和B,两个数据1和2。线程A在执行过程中,首先对资源1加锁,然后再去给资源2 加锁,但是由于线程的切换,导致线程A没能给资源2加锁。线程切换到B后,线程B先 阅读全文
摘要:
从操作系统层面上看,malloc是通过两个系统调用来实现的: brk和mmap brk是将进程数据段(.data)的最高地址指针向高处移动,这一步可以扩大进程在运行时的堆大小 mmap是在进程的虚拟地址空间中寻找一块空闲的虚拟内存,这一步可以获得一块可以操作的堆内存。 通常,分配的内存小于128k时 阅读全文
摘要:
应用数据与静态资源分离 将静态资源(图片,视频,js,css等)单独保存到专门的静态资源服务器中,在客户端访问的时候从 静态资源服务器中返回静态资源,从主服务器中返回应用数据。 客户端缓存 因为效率最高,消耗资源最小的就是纯静态的html页面,所以可以把网站上的页面尽可能用静态的来 实现,在页面过期 阅读全文
摘要:
频繁修改:需要频繁创建和销毁的优先使用多线程 计算量:需要大量计算的优先使用多线程 因为需要消耗大量CPU资源且切换频繁,所以多线程好一 点 相关性:任务间相关性比较强的用多线程,相关性比较弱的用多进程。因为线程之间的数据共享和同 步比较简单。 多分布:可能要扩展到多机分布的用多进程,多核分布的用多 阅读全文