自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(558)
  • 资源 (9)
  • 收藏
  • 关注

原创 Leetcode 995. K 连续位的最小翻转次数——差分数组

文章目录引入差分数组题解引入题目:995. K 连续位的最小翻转次数内容不做赘述,这道题如果用模拟的方式是会超时的:也就是在循环的过程中,对于K大小的数组,每一位与1取异或。可以看到这样的效率很低,其复杂度为O(KN)。更好的办法是用差分数组。差分数组如果给你一个包含5000万个元素的数组,然后会有频繁区间修改操作,那什么是频繁的区间修改操作呢?比如让第1个数到第1000万个数每个数都加上1,而且这种操作时频繁的。此时你应该怎么做?很容易想到的是,从第1个数开始遍历,一直遍历到第1000万个

2021-09-05 14:46:26 341

原创 面试准备:海量数据的处理方式

文章目录背景数据排序分治字典树数据去重哈希压缩存储空间面试题汇总1. TopK2. 查找中位数3. 随机选择K个数4. 找出出现次数最多的IP背景海量数据的处理主要包括三个方面:数据排序数据统计数据计算我们可以简单的来算算 5亿个数在内存中的占用:(64bit)*5*1e8 约为(按1000换算) 4Gbyte,所以内存一次一般装不下。对于这类大数的处理,本文会总结一些方法。数据排序分治根据数据存在文件中的位置分裂文件到批量小文件中这里我们的做法是每次读取待排序文件的1e4个

2021-08-26 16:10:23 484

原创 Java BufferedInputStream原理及设计模式分析

文章目录背景源码分析FileInputStreamBufferedInputStream装饰器模式总结背景BufferedInputStream和其他InputStream常常放在一起使用:BufferedInputStream是套在某个其他的InputStream外,起着缓存的功能,用来改善里面那个InputStream的性能,它自己不能脱离里面那个单独存在。比如FileInputStream是读取一个文件来作InputStream。所以你可以把BufferedInputStream套在File

2021-08-24 10:22:00 2037 4

原创 Java架构直通车——秒杀系统 分析和设计

文章目录秒杀系统业务特点 & 技术挑战架构原则 & 设计前端设计网关设计服务端设计数据库层设计服务重启与服务降级其他优化点案例:利用消息中间件和缓存实现简单的秒杀系统本文旨在系统性的梳理两个经典系统的实现。秒杀系统业务特点 & 技术挑战正常电子商务流程:(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货秒杀业务流程:(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;结合业务

2021-08-19 16:14:43 371

原创 面试准备:分布式事务协议汇总

文章目录基本概念ACIDBASECAP强一致性协议2PC3PCTCCSagaATZABPAXOSRaftPoW最终一致性协议基于MQ基于BinlogRefer:BASE介绍、CAP介绍2PC介绍、3PC介绍、 TCC介绍Saga模式介绍、AT模式介绍ZAB介绍、 PAXOS介绍、Raft共识算法BlockChain学习——奖励机制与共识机制MQ 生产端可靠性投递和消费端幂等性保障方案、Mysql Binlog不止是主从同步基本概念ACID原子性(Atomic):一个事务中的所有操作

2021-08-15 16:01:16 411

原创 面试准备:MySQL建立索引的原则

文章目录1. =和in可以乱序2. 最左前缀匹配原则3. 尽量选择区分度高的列作为索引4. 索引列不能参与计算5. 尽量的扩展索引,不要新建索引6. 为经常需要排序、分组和联合操作的字段建立索引7. 为常作为查询条件的字段建立索引8. 限制索引的数目9. 尽量使用数据量少的索引10. 尽量使用前缀来索引11. 删除不再使用或者很少使用的索引1. =和in可以乱序比如:a = 1 and b = 2 and c = 3建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的

2021-08-15 11:28:45 706 3

原创 LevelDB——Compaction操作理解

文章目录LevelDBLevelDB组件LevelDB读/写操作读写LevelDB压缩操作(Compaction)Minor CompactionMajor CompactionLevelDBLevelDB的数据是存储在磁盘上的,采用LSM-Tree的结构实现。LSM-Tree将磁盘的随机写转化为顺序写,从而大大提高了写速度。为了做到这一点LSM-Tree的思路是将索引树结构拆成一大一小两颗树,较小的一个常驻内存,较大的一个持久化到磁盘,他们共同维护一个有序的key空间。写入操作会首先操作内存中的树

2021-08-07 17:46:43 568

原创 面试总结:测试常见面试题汇总

文章目录理论测试流程测试用例设计方法App测试和Web测试的区别典型测试场景聊天功能测试用例怎么设计?怎么测试微信朋友圈?【TODO】怎么测试微信红包?问题分析网页很卡是为什么?APP闪退的原因总结理论测试流程测试需求分析:理解需求,学习业务点制定测试计划:根据测试需求确定测试计划,安排测试人力、进度安排;制定风险评估与规避措施方案测试设计阶段:设计测试用例并做评审测试执行阶段:搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理(推进bug修改并做回归测试)直到测试结束测试评估阶

2021-08-03 21:13:29 3942

原创 面试总结:Golang常见面试题汇总

文章目录1. golang协程为什么比线程轻量?2. Golang中数组与切片比较?3. make和new的区别? go语言中的引用类型包含哪些?4. uint,int?5. 说说go语言的channel特性?6. 线程模型有哪些?为什么 Go Scheduler 需要实现 M:N 的方案?Go Scheduler 由哪些元素构成呢?7. context包的用途?8. 简述一下你对Go垃圾回收机制的理解?9. 混合写屏障?1. golang协程为什么比线程轻量?go协程调用跟切换比线程效率高。线程

2021-06-28 21:04:56 9747 3

原创 Leetcode 背包问题汇总

文章目录背包月背包:大小与数量背包月本月是背包月,接连出了好几个背包问题,其难点在于对于问题的建模和分析。比如下面两道题:474. 一和零494. 目标和这两道题的不同点在于:前者是求大小,而后者是求数量。又比如下面这道题:1049. 最后一块石头的重量 II它的解法实际上就是一个典型的求大小的01背包问题——容量有限情况下的问题,而难点在于“建模”。ttodo 硬币又比如背包问题的变种:1449.数位成本和为目标值的最大数字这是无限可拿的完全背包问题,容量有限而可装

2021-06-10 16:16:28 1565 2

原创 零拷贝的实现原理

文章目录引入DMAPageCache零拷贝mmapsendfileSG-DMA使用零拷贝技术的项目引入在Java架构直通车——Kafka介绍和高性能原因一节中,介绍了Kafka的Zero Copy技术。本文将深入探究一下Zero Copy的缘起和原理。零拷贝,其实说的不是真的没有拷贝,文件传输必然经历从磁盘到网卡的过程,这个过程无论如何也会有拷贝的。零拷贝说的是CPU不参与到拷贝过程。在了解零拷贝之前,需要知道什么是DMA、什么是PageCache。DMA在没有 DMA 技术前,I/O 的过程是

2021-05-25 15:52:21 474

原创 Java并发编程实战——CAS与Unsafe

文章目录什么是CASUnsafe类AtomicInteger什么是CASCAS的全称为Compare-And-Swap,直译就是对比交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值。其实现方式是基于硬件平台的汇编指令,就是说CAS是靠硬件实现的,JVM只是封装了汇编调用,那些AtomicInteger类便是使用了这些封装后的接口。CAS 方式为乐观锁,synchronized 为悲观锁。因此使用 CAS 解决并发问题通常情况下性能更优。但使用

2021-05-12 16:14:42 238

原创 Java架构直通车——DispatcherServlet详解

文章目录引入DispatcherServlet处理流程DispatcherServlet与WebApplicationContext处理流程DispatcherServlet源码分析init()service()destroy()前文介绍了Java架构直通车——理解Tomcat架构设计,我们知道Tomcat实际上就是Servlet容器,引入Spring MVC框架是围绕DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时

2021-05-11 16:28:16 1144

原创 Java架构直通车——理解Tomcat架构设计

文章目录引入Socket与SeverSocket一个简单Web容器设计与实现理解Tomcat架构设计什么是ServletTomcat——Servlet容器引入Socket与SeverSocketSocketSocket是网络连接的一个端点。套接字使得一个应用可以从网络中读取和写入数据。放在两 个不同计算机上的两个应用可以通过连接发送和接受字节流。在 Java 里边,套接字指的是java.net.Socket类。public Socket (java.lang.String host, int

2021-05-11 15:20:47 264 2

原创 Java架构直通车——以Tomcat为例谈双亲委派模型的破坏

文章目录引入Tomcat类加载器是怎么样的?引入之前文章Java架构直通车——以JDBC为例谈双亲委派模型的破坏谈到了对于双亲委派模型的破坏,原因是启动类、拓展类加载器并不能加载jdbc Driver,而只有应用类加载器可以;所以需要在启动类加载器中获取到应用类加载器并加载这个类。而在Tomcat中,也是由于同样的原因:在Java核心类里面有SPI(Service Provider Interface),它由Sun编写规范,第三方来负责实现。SPI需要用到第三方实现类。如果使用双亲委派模型,那么第

2021-05-11 14:55:52 218

原创 Leetcode4.寻找两个正序数组的中位数——每次去掉一半

文章目录引入解法引入题目不再做赘述,参考: 4. 寻找两个正序数组的中位数记得以前做过一个题目,是通过两个PriorityQueue来寻找中位数的例子,其中一个从小到大排序,另一个从大到小排序。而本题的情况则是从两个排序好的数组中找到中位数,当然可以用最暴力的方法通过两个指针找到中位数,这时候的复杂度是O(M+N)。然鹅,题目中提示使用O(log(M+N))的方式来找到这个中位数,毫无疑问是让我们使用二分法来找。所以如何二分呢?解法这道题没什么新奇的解法,主要是考虑边界条件,以及如果使用二分的

2021-05-10 14:54:31 167

原创 HTTP详解,HTTP1.0、HTTP1.1 和 HTTP2.0 的区别

文章目录引入:HTTP的历史HTTP1.0和HTTP1.1的一些区别HTTP2.0和HTTP1.X相比的新特性HTTPS与HTTP的一些区别引入:HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有

2021-04-18 18:02:00 459

原创 Linux内核内存管理算法Buddy和Slab

文章目录Buddy分配器CMASlab分配器总结Buddy分配器假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框。这个时候,在这段内存上不能找到连续的5个空闲的页框,就会去另一段内存上去寻找5个连续的页框,这样子,久而久之就形成了页框的浪费。为了避免出现这种情况,Linux内核中引入了伙伴系统算法(Buddy system)。把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,512和1024个连续页框的页

2021-04-08 17:36:37 732

原创 处理器对原子操作的实现

文章目录引入单核多核引入原子操作对于我们来说,是非常熟悉的概念。从用户角度,可以用原子操作来替换重量级的锁同步,从而提高程序性能。底层实现角度,原子操作可以用于构建各种更重量级的同步操作,比如锁或屏障之类的。对于原子操作的实现来说,需要分开考虑单处理器单核系统,和多处理器系统多核系统。单核对于单处理器单核系统来说,只要保证操作指令序列不被打断即可实现原子操作(当然,对于内存的读写操作,需要地址对齐,否则就不是一次的内存读写了,当然也就不是原子操作)。对于简单的原子操作,cpu实现上会提供单条指令

2021-04-08 14:50:49 388

原创 Distributed Database System —— Mysql Binlog实现异地多活

文章目录引入数据冲突数据回环解决方案引入数据库架构在部署时,往往会部署到不同的地区,甚至跨洲,这样做有一些好处:部署到多个地区(IDC),不同的用户可以选择离自己最近的机房进行访问。比如部署到华北地区时,北京用户访问该数据库可能就会比上海用户速度快,而如果在华东地区再部署一个数据库时,可能上海用户延迟高的情况就会得到优化。解决容灾问题。这里容灾不是单台机器故障,而是指机房断电,自然灾害,或者光纤被挖断等重大灾害。一旦出现这种问题,将无法正常为用户提供访问,甚至出现数据丢失的情况。当然有一个问题

2021-03-10 20:44:19 271 1

原创 Distributed Database System —— Mysql Binlog不止是主从同步

文章目录引入Binlog应用场景读写分离数据恢复保证数据最终一致性异地多活引入Mysql 5.0以后,支持通过binary log(二进制日志)以支持主从复制。复制允许将来自一个MySQL数据库服务器(master) 的数据复制到一个或多个其他MySQL数据库服务器(slave),以实现灾难恢复、水平扩展、统计分析、远程数据分发等功能。下面以mysql主从复制为例,讲解一个从库是如何从主库拉取binlog,并回放其中的event的完整流程。mysql主从复制的流程如下图所示:主要分为3个步骤:

2021-03-10 18:08:17 149 1

原创 Distributed Database System —— Multi-raft协议介绍

文章目录Multi-Raft协议Multi-Raft需要解决的问题Multi-Raft实现细节Raft协议已经详细介绍过,不做赘述,在Crdb中使用了Multi-Raft协议,那么Multi-Raft协议是如何工作的呢?Multi-Raft协议下面是Crdb里对于Multi-Raft的介绍,说明了在分布式环境下,为什么要开始使用Multi-Raft协议。In CockroachDB, we use the Raft consensus algorithm to ensure that your d

2021-03-09 18:04:24 1426

原创 Distributed Database System —— 什么是嵌入式数据库?

文章目录什么是嵌入式数据库(Embedded Database)数据库服务器的架构嵌入式数据库架构区别像Oracle、Sybase、MySQL和SQL Server这些大家熟知的数据库都属于数据库服务器(当然不排除某些也提供嵌入式版本),而像SQLite、Berkeley DB、包括在Crdb里使用的RocksDB、Pebble、Hyperledger Fabric中使用的CouchDB 等属于嵌入式数据库。那么什么是嵌入式数据库呢? 为什么要使用嵌入式数据库? 嵌入式数据库有什么优势?以及它的应用场景

2021-03-09 17:10:45 305 2

原创 Distributed Database System —— CockroachDB文档阅读

文章目录[Architecture Overview](https://www.cockroachlabs.com/docs/stable/architecture/overview.html)SQL Layer为了简单表示,在今后这个系列的文章,都以CRDB或者crdb来表示CockroachDB。要了解这个NewSQL数据库,我们先从Architecture Overview开始,从Cockroach labs提供的文档开始了解。Architecture OverviewCockroachDB

2021-03-09 16:59:02 288 1

原创 深入分析Kqueue & Kevent

文章目录为什么用Kqueue?什么是Kqueue?Kqueue怎么运行?一个示例为什么用Kqueue?Wiki上的解释:kqueue 是一种可扩展的事件通知接口。2000 年 7 月发布的 FreeBSD 4.1 中首次引入了 kqueue,随后也被 NetBSD、OpenBSD、macOS 等操作系统支持。kqueue 在内核与用户空间之间充当输入输出事件的管线。因此在事件循环的迭代中,进行一次 kevent(2) 系统调用不仅可以接收未决事件,还可以修改事件过滤器。简单解释,Kqueue是

2020-12-20 17:31:04 966

原创 Distributed Database System —— Write Intent In CockroachDB

文章目录概述两阶段提交Phase 1: PreparePhase2: Commit or Rollback概述CockroachDB实现了 Serializability 的分布式 ACID 事务,本文主要理解原子性和隔离性的实现方案。由于在CockroachDB(以下简称CRDB)中存在多个Range,所以一次事务可能会涉及到多个Range上的存储, 所以 CRDB 是使用 Two-Phase Commit 来保证事务在多个 store 同时进行事务修改操作的原子性。不过CRDB在此基础上做了很多

2020-12-20 15:16:04 437

原创 Distributed System Transaction —— 各种一致性(Consistency)的讨论

文章目录概述一致性需要考虑的几个问题各种一致性顺序一致性线性一致性因果一致性和最终一致性概述在Distributed System Transaction —— 什么是线性一致性(Linearizability)?一文中,介绍过一致性这样的概念,对于一致性,简单的分类是“强一致”和“弱一致”,但这只是一种统称,实际上可以分为:(弱->强)最终一致性(Eventual)因果一致性(Casual)顺序一致性(Sequential)线性一致性(Linearizable)所以强一致是包含顺序

2020-12-16 17:32:09 523

原创 Distributed Database System —— Snapshot Isolation 快照隔离的各种实现方案

文章目录SI & MVCCSI运作过程SI & Write SkewSSISI & MVCC快照隔离(SI,Snapshot Isolation)是讨论隔离性时常见的术语,可以做两种的解读,一是具体的隔离级别,SQL Server、CockroachDB都直接定义了这个隔离级别;二是一种隔离机制用于实现相应的隔离级别,在Oracle、MySQL InnoDB、PostgreSQL等主流数据库中普遍使用。多版本并发控制(MVCC,multiversion concurrency c

2020-12-15 21:15:57 839

原创 Distributed Database System —— 分布式数据库的两种架构风格

文章目录概述PGXC:单体数据库的自然演进NewSQL:革命性的新架构概述总的来说,分布式数据库大多可以分为两种架构风格一种是 NewSQL,它的代表系统是 Google Spanner;另一种是从单体数据库中间件基础上演进出来的,被称为 Prxoy 风 格,没有公认的代表系统,便于理解,所以选了一个出现较早的产品来指代这种风 格,这就是 PostgreSQL-XC(下文简称 PGXC)。数据库从逻辑上拆分为 5 个部分,分别是客户端通讯管理器 (Client Communications M

2020-12-15 16:58:51 713 2

原创 Distributed System Transaction —— 什么是线性一致性(Linearizability)?

文章目录Linearizability & SerializabilityLinearizability场景举例分布式系统中的Linearizability数据库中的Linearizability线性一致性实践如何保证线性一致性如何验证线性一致性Linearizability & SerializabilityLinearizability(线性一致性) 可以用来衡量一个分布式系统的正确程度,来自于《Linearizability: A Correctness Condition for

2020-12-15 14:25:04 639

原创 Distributed System Transaction —— 2PL

文章目录2PL2PL两阶段锁(two-phase locking)是用来解决多线程之间的竞态条件的,其算法非常简单,数据库中的每一个数据对象都有两种锁:(S)hared lock 和 e(X)clusive lock,即常见的读写锁。操作和锁的对应关系很简单:如果一个transaction想要读取 [公式] ,那它必须获取 [公式] 上的shared lock;如果一个transaction想要写入 [公式] ,那它必须获取 [公式] 上的exclusive lock。那么读写锁是怎么实现2PL

2020-12-14 20:24:50 188

原创 Distributed System Clocks分布式系统时钟解决方案

文章目录PT(Physical Time) & TT(True Time)LC(Logic Clock)VC(Vector Clock)HLC(Hybird Logic Clock)Naive HLC改进HLC本文将首先依次简单介绍分布式系统下的物理时钟(Physical Time,也称PT),逻辑时钟(Logical Clock,也称LC),向量时钟(Vector Clock,也称VC),真实时钟(True Time,也称TT)的基本概念,然后着重笔墨介绍混合逻辑时钟(Hybrid Logica

2020-12-08 16:18:47 1126

原创 投资理财笔记——以贴现的方式看待基金

文章目录DDMDCFDDM关于DDM的相关知识,我在股票价值分析中写过,DDM模型认为股票价值决定于分红而不是未来的股价。而在基金购买中,我认为不可以盲目崇拜于分红,也就是基金的累计净值和净值之差。因为分红势必会出售部分股票以分红,这在实际上是损害投资者利益的:虽然投资者看似拿到了钱,但是这笔钱如果用于再投资,再次买入基金时会收取手续费。基金所持有资金减少股息贴现模型是股票估值的一种模型,是收入资本化法运用于普通股价值分析中的模型。以适当的贴现率将股票未来预计将派发的股息折算为现值,以评估股

2020-12-04 20:43:02 272

原创 投资理财笔记——基金申赎策略

文章目录申赎策略申购赎回申赎策略申购基金申购时,需要关注:基金规模选择规模较大的基金(至少大于3亿元),防止基金被清盘(开放式基金一般不规定自己的存续期限,但在某些情况发生时,开放式基金可能作出清盘的决定,通过清算和分配基金资产结束其存在)。成立年限选择成立年限大于3年的,时间太短的基金可能还没得到市场很好的检验(除非你有把握,或者对这个基金经理很有信心)。挑选费用较低的基金基金费用包括管理费、托管费、申购费、赎回费等费用,这些费用在基金成本占比大的话收益影响就较大。但是总的来说,指数基

2020-12-03 20:09:10 363

原创 投资理财笔记——什么是开放式基金

文章目录Open-Ended Funds & Close-Ended FundsOEF 分类净值Open-Ended Funds & Close-Ended Funds开放式基金(Open-Ended Funds)又称共同基金,是指基金发起人在设立基金时,基金单位或者股份总规模不固定,可视投资者的需求,随时向投资者出售基金单位或者股份,并可以应投资者的要求赎回发行在外的基金单位或者股份的一种基金运作方式。投资者既可以通过基金销售机构购买基金使得基金资产和规模由此相应的增加,也可以将所

2020-11-30 11:31:30 545

原创 投资理财笔记——理财的心理建设 & 基金概念入门

文章目录理财的心理预期基金概念入门理财的心理预期学习投资理财的目的,是为了更清晰的认识到自己买的理财产品是什么,它的风险有哪些,是否能够承担这样的风险。其目的并不是在于赚更多的钱,因为风险和收益是成正比的,目的在于更清晰的认识,认识投资失败的后果,有一个大致的心理预期。财富自由的4%法则:4%法则是说如果一年支出100k,那么要实现财富自由,按照一年4%的年化收益,需要在投资理财上的投入资金应该是100k/4%=2500k。当然,目前我认为4%的年化处于一个风险比较低的范围,我自己的一个心理预期是

2020-11-29 15:38:38 391

原创 InnoDB存储引擎——表的逻辑存储及实现

文章目录表的逻辑存储结构表分区表的逻辑存储结构在InnoDB存储引擎上,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table),如果一个表没有指定主键,那么会:首先判断是否存在唯一非空索引,如果有则为主键。否则InnoDB会自动创建一个6个字节大小的指针。所有的数据都被逻辑的存放在一个空间里,成为表空间。表空间又由段(Segment)、区(extent)、页(page)组成。表空间表空间分为独立表空间和共享表空间。如果启用了独立表空

2020-11-23 16:14:16 156

原创 InnoDB存储引擎——InnoDB关键特性

文章目录插入缓冲InnoDB存储引擎的关键特性包括:插入缓冲(Insert Buffer)两次写(Double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻接页(Flush Neighbor Page)插入缓冲

2020-11-23 15:32:41 290

原创 InnoDB存储引擎——缓冲池

文章目录缓冲池缓冲池中的三种链CheckPoint技术缓冲池虽然InnoDB是基于磁盘存储的,但是由于CPU和磁盘速度的巨大鸿沟,所以对于数据库中的页的修改操作,首先会修改在缓冲池中的页,然后再以一定频率刷新到磁盘上。具体来看,在缓冲池中占主要(大部分)的是索引页和数据页,但缓冲池还会包含undo页、插入缓冲、自适应哈希索引、InnoDB存储的锁信息、数据字典信息等。从InnoDB 1.x开始,允许有多个缓冲池实例(默认值为1),每个页根据哈希值被平均分配到不同的缓冲池实例中,减少数据库内部的资源

2020-11-22 18:47:47 180

原创 深入理解Go——反射reflect

文章目录反射使用常见场景反射原理反射的基本函数反射使用常见场景需要反射的 2 个常见场景:有时你需要编写一个函数,但是并不知道传给你的参数类型是什么,可能是没约定好;也可能是传入的类型很多,这些类型并不能统一表示。这时反射就会用的上了。有时候需要根据某些条件决定调用哪个函数,比如根据用户的输入来决定。这时就需要对函数和函数的参数进行反射,在运行期间动态地执行函数。在讲反射的原理以及如何用之前,还是说几点不使用反射的理由:(1)与反射相关的代码,经常是难以阅读的。在软件工程中,代码可读性也是一

2020-10-26 19:08:12 416

软件工程需求分析作业模版.doc

软件工程需求分析作业模版,北邮大作业。

2020-06-24

滑动窗口协议--SDL最终版

北邮滑动窗口协议实验设计。滑动窗口协议--SDL设计;北邮滑动窗口协议实验设计。

2018-06-03

北邮韩万江老师SPM课的pdf

spm,软件过程改进,韩万江

2018-05-17

北邮:编译原理实验1

北邮;编译原理第一次实验;lex.yy 生成代码 北邮;编译原理第一次实验;lex.yy 生成代码

2018-05-14

北邮:分布式实验一

北邮:分布式实验一 北邮;分布式; 北邮;分布式; 北邮;分布式;

2018-05-14

北邮:分布式实验二

北邮:分布式实验二;北邮:分布式实验二北邮:分布式实验二

2018-05-14

北邮:软件工程作业——体系结构设计文档

体系结构设计文档;北邮:软件工程作业——体系结构设计文档

2018-05-14

北邮作业——软件工程:需求文档

北京邮电大学,软院大二作业;北京邮电大学,软院大二作业

2018-05-14

滑动窗口协议--SDL设计

滑动窗口协议--SDL设计;北邮滑动窗口协议实验设计。滑动窗口协议--SDL设计;北邮滑动窗口协议实验设计。

2017-11-09

空空如也

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

TA关注的人

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