G1 收集器在后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的Region(这也就是它的名字 Garbage-First 的由来) 8、你有哪些手段来排查 OOM 的问题?...缓存雪崩 问题:当某一时刻发生大规模的缓存失效的情况,导致大量的请求无法获取数据,从而将流量压力传导到数据库上,导致数据库压力过大甚至宕机。...l sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 22、索引失效的情况有哪些? like 以%开头索引无效,当 like 以&结尾,索引有效。...or 语句前后没有同事使用索引,当且仅当 or 语句查询条件的前后列均为索引时,索引生效。 组合索引,使用的不是第一列索引时候,索引失效,即最左匹配规则。...24、Redis 数据结构 压缩列表和跳跃表的区别 压缩列表(ziplist)本质上就是一个字节数组,是 Redis 为了节约内存而设计的一种线性数据结构,可以包含多个元素,每个元素可以是一个字节数组或一个整数
当一个方法调用另一个方法时,如果被调用方法需要事务支持,那么事务的传播机制决定了是否使用调用方的事务或创建一个新的事务。...MySql中的回表是指在使用非聚集索引进行查询时,MySQL需要通过索引找到对应的行,并进一步通过主键索引或聚集索引获取完整的行数据。这个过程中需要”回”到原始数据表中去获取缺失的数据列。...2、什么是排他锁和共享锁 排他锁(Exclusive Lock): 排他锁也称为写锁,它是一种独占锁,当一个事务持有了某个数据对象的排他锁时,其他事务无法同时持有该数据对象的任何锁,包括共享锁和排他锁...当一个事务读取了另一个事务所做的更新,而这个更新后来由于某些原因被回滚,那么读取到的数据实际上是无效的,是”脏”的。脏读可能导致数据的不一致性,因为读取到的数据可能最终不会被提交。...维护问题: 多表join增加了数据库查询的复杂性,使得SQL语句变得复杂难懂,不易于维护和调试。当数据库中的表结构变更时,涉及join的查询语句可能需要进行调整,这对开发人员来说增加了工作量。
G1 收集器在后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的 Region(这也就是它的名字 Garbage-First 的由来) 8、你有哪些手段来排查 OOM 的问题?...缓存雪崩 问题:当某一时刻发生大规模的缓存失效的情况,导致大量的请求无法获取数据,从而将 流量压力传导到数据库上,导致数据库压力过大甚至宕机。...sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 22、索引失效的情况有哪些? like 以%开头索引无效,当 like 以&结尾,索引有效。...or 语句前后没有同时使用索引,当且仅当 or 语句查询条件的前后列均为索引时,索引生效。 联合索引使用的不是第一列索引时候,不满足最左匹配规则,索引失效。...24、Redis 数据结构压缩列表和跳跃表的区别 压缩列表(ziplist)本质上就是一个字节数组,是 Redis 为了节约内存而设计的一种线性数据结构,可以包含多个元素,每个元素可以是一个字节数组或一个整数
即使写时复制会与父进程一起保存一些共享的,不变的内存状态,但是当您有1000个以上的并发连接时,作为基于进程的体系结构的基本开销会增加负担,并且它可能是最重要的开销之一能力计划的因素。...(非聚合)堆(Heap)是规则表结构,其中填充了与索引分开的数据行。 使用聚合索引时,当您通过主键查找记录时,单个I / O将检索整行,而非聚集索引始终通过遵循引用至少需要两个I / O。...当且仅当选择行和列时,才会拉出大对象。换句话说,大量的黑盒子不会污染您宝贵的缓存。它还支持对TOASTed对象的压缩。...但是,如果更新足够频繁(或者如果一个元组很大),则元组的历史记录很容易从8KB的页面大小中流出,跨越多个页面并限制了功能的有效性。修剪和/或碎片整理的时间取决于试探法。...但是即使使用最新版本,当有大量的UPDATE设置Visibility Map中的脏位时,Postgres也不能完全支持仅索引扫描,而在不需要时经常选择Seq扫描。
ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。 ...以下是CHAR和VARCHAR的区别: ·CHAR和VARCHAR类型在存储和检索方面有所不同 ·CHAR列长度固定为创建表时声明的长度,长度值范围是1到255 ·当CHAR值被存储时,它们被用空格填充到特定长度...39、ISAM是什么? ISAM简称为索引顺序访问方法。它是由IBM开发的,用于在磁带等辅助存储系统上存储和检索数据。 40、InnoDB是什么? ...通常用于将两个或多个字段合并为一个字段。 ·FORMAT(X, D)- 格式化数字X到D有效数字。 ·CURRDATE(), CURRTIME()- 返回当前日期或时间。...50、解释访问控制列表 ACL(访问控制列表)是与对象关联的权限列表。这个列表是MySQL服务器安全模型的基础,它有助于排除用户无法连接的问题。
邮储 抽象类和接口的异同? 相同点: 都不能被实例化,接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。...当一个新任务交给线程池,如果此时线程池中有空闲的线程,就会直接执行,如果没有空闲的线程,就会将该任务加入到阻塞队列中,如果阻塞队列满了,就会创建一个新线程,从阻塞队列头部取出一个任务来执行,并将新任务加入到阻塞队列末尾...而Session则是服务器端根据Cookie中的标识信息来维护会话状态的一种机制。 session和cookie的区别是什么?...如下图(图中叶子节点之间我画了单向链表,但是实际上是双向链表,原图我找不到了,修改不了,偷个懒我不重画了,大家脑补成双向链表就行): 回表 不过,当查询的数据是能在二级索引的 B+Tree 的叶子节点里查询到...流量控制是通过在TCP报文段首部维护一个滑动窗口来实现的。 拥塞控制:拥塞控制就是当网络拥堵严重时,发送端减少数据发送。拥塞控制是通过发送端维护一个拥塞窗口来实现的。
归一化是数据库设计中的一个过程,目的是减少数据冗余和提高数据完整性。它涉及将数据组织到逻辑上的表中,使每个表专注于一个主题或概念。...它确保一个表中的列值必须在另一个表的主键或唯一键列中存在。这有助于维护数据的完整性和一致性。...避免全表扫描的方法包括: - 使用索引优化查询,确保查询条件利用了有效的索引。 - 重写查询,避免使用会导致全表扫描的操作,如不安全的函数或类型不匹配的比较。...- 调整数据库设计,如添加必要的索引,或修改表结构以提高查询效率。避免全表扫描对于维护大型数据库的性能至关重要。81. MySQL中的表空间是什么,它的作用是什么?...- 定期使用OPTIMIZE TABLE命令或类似工具维护和重新组织索引。 - 使用EXPLAIN分析查询的执行计划,确保索引被有效利用。 - 避免过度索引,因为太多索引可能会减慢写操作。95.
,而最少使用的页在LRU列表的尾端,当缓冲池不能存放新读取到的页时,将首先释放LRU列表中尾端的页。...---- flush list 当LRU列表中某个页被修改后,会被放入flush列表中,该列表中存放的都是脏页,脏页同时存在于LRU列表和flush列表中。...,对于二级非唯一索引的插入和更新操作,不是每一次直接插入到对应的索引页,而是先判断插入的二级非唯一索引是否在缓冲池中,如果在,则直接插入; 如果不在,则先放到一个insert buffer对象中,然后响应告诉用户更新完成...其工作原理为:当刷新一个脏页时, InnoDB存储引擎会检测该页所在区(extent)的所有页,如果是脏页,那么一起进行刷新。...该参数值默认为0,代表当需要恢复时,进行所有的恢复操作,当不能进行有效恢复时,如数据页发生了corruption,MySQL数据库可能发生宕机,并把错误写入错误日志中去。
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法...(2)Set里面不允许有重复的元素存元素:add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true;当集合含有与某个元素equals相等的元素时,此时...Spring主要核心是: (1).控制反转(IOC):以前传统的java开发模式中,当需要一个对象时我们,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring...实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机制自动为我们实例化一个对象。...2. springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
索引涉及在列上放置特殊标识,并告知我们的数据库,下次当我们需要对该列进行搜索时,请快速处理!但是,“快速处理”是什么意思呢?简单来说,这意味着根据特定列对所有数据进行分组。这听起来熟悉吗?...当您在数据库中对列进行索引时,您这样做是因为您预期会返回并用一个请求搜索该列,您需要尽可能快地访问它,最理想的情况是使您的请求花费恒定的时间。这也是使用 Object.groupBy 时的目标。...其次,您需要创建此特殊索引对象(或分组对象)。...我们之所以能做到这一点,是因为 Object.groupBy 接受了一个对象列表(在这种情况下)和一个函数,该函数指定了我们要如何对数据进行分组。...您不会为部署一个简单的 HTML 和 CSS 陆页使用 Kubernetes 集群,对吧?在这里大致也是如此。在这个特定情况下,我们的分组(或索引)对象的有限使用使得首先将用户按电子邮件分组变得无用。
__get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或empty()时调用 _... __invoke(),调用函数的方式调用一个对象时的回应方法 __set_state(),调用var_export()导出类时,此静态方法会被调用。 ... php 5.3之前使用的垃圾回收机制是单纯的“引用计数”,也就是每个内存对象都分配一个计数器,当内存对象被变量引用时,计数器+1;当变量引用撤掉后,计数器-1;当计数器=0时,表明内存对象没有被使用...“引用计数”存在问题,就是当两个或多个对象互相引用形成环状后,内存对象的计数器则不会消减为0;这时候,这一组内存对象已经没用了,但是不能回收,从而导致内存泄露; php5.3开始,使用了新的垃圾回收机制... 6、asc或desc指定升序或降序的索引值存储 8.Memcache和Redis的过期机制是什么?
Linux中VFS依靠四个主要的数据结构来描述其结构信息,分别为超级块、索引结点、目录项和文件对象,这些数据结构大都会与磁盘上的对应上。 超级块(Super Block):超级块对象表示一个文件系统。...因为一个文件可以被多个进程打开,所以一个文件可以存在多个文件对象,但多个文件对象其对应的索引节点和目录项对象肯定是惟一的,关系如下图: ?...当内核发起一个读请求时(例如进程发起read()请求),首先会检查请求的数据是否缓存到了page cache中,如果有,那么直接从内存中读取,不需要访问磁盘,这被称为cache命中(cache hit)...当内核发起一个写请求时(例如进程发起write()请求),同样是直接往cache中写入,此时不会立即同步到磁盘,而是将写入的page设置为脏页,并将其加入dirty list中,内核会负责定期同步到磁盘保持二者一执行...两个链表都使用了伪LRU算法维护,新的page从尾部加入,移除时从头部移除,就像队列一样。
重载(overloading)与重写(override)的区别 方法重载:在一个类里面,方法名一样,参数列表不同,与返回值无关 方法重写:在继承关系中,方法名一样,参数列表相同 面向过程与面向对象的区别...索引的缺点 时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率; 空间方面:索引需要占物理空间。...控制反转(IoC)有什么作用 解耦,由容器去维护具体的对象 IOC的优点是什么? IOC 或 依赖注入把应用的代码量降到最低。 它使应用容易测试,单元测试不再需要单例和JNDI查找机制。...连接点是在应用执行过程中能够插入切面的一个点。这个点可以是调用方法时、抛出异常时、甚至修改一个字段时。切面代码可以利用这些点插入到应用的正常流程之中,并添加新的行为。...解决方案 直接写个缓存刷新页面,上线时手工操作一下; 数据量不大,可以在项目启动的时候自动进行加载; 定时刷新缓存; 缓存降级 当访问量剧增、服务出现问题或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的
尽管“写时复制”保存了一些与父进程共享的、不可变的内存状态,但是当您有 1000 多个并发连接时,基于流程的架构的基本开销是很繁重的,而且它可能是容量规划的最重要的因素之一。...一个(非聚集)堆是一个常规的表结构,它与索引分别填充数据行。 有了聚簇索引,当您通过主键查找记录时,单次 I/O 就可以检索到整行,而非集群则总是需要查找引用,至少需要两次 I/O。...聚簇索引的一个理论上的缺点是,当您使用二级索引进行查询时,它需要遍历两倍的树节点,第一次扫描二级索引,然后遍历聚集索引,这也是一棵树。...那么当你在一个列中有一个大型 JSON 对象时会发生什么呢? Postgres 使用 TOAST,这是一个专用的影子表(shadow table)存储。当行和列被选中时,大型对象就会被拉出。...但即使使用最新版本,当有许多UPDATE在可见性映射中设置脏位时,Postgres也不能完全支持仅索引扫描,并且在我们不需要时经常选择Seq扫描。
ENUM存储非常紧凑,会把列表值压缩到一个或两个字节。 ENUM在内部存储时,其实存的是整数。 尽量避免使用数字作为ENUM枚举的常量,因为容易混乱。...索引的缺点: 时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率; 空间方面:索引需要占物理空间。...B+ 树中,数据对象的插入和删除仅在叶节点上进行。 B+树有2个头指针,一个是树的根节点,一个是最小关键码的叶节点。 3....SQL 标准定义了四个隔离级别: READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。...死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象。 常见的解决死锁的方法 如果不同程序会并发存取多个表,尽量约定以相同的顺序访问表,可以大大降低死锁机会。
当负载因子为0.5时 负载因子为0.5意味着数组有8个元素就开始扩容,填充的数据少了,哈希冲突也会减少,链表长度或红黑树高度会降低,查询时间就会提高,但空间利用率也会大大降低。...如果程序较小的话没有什么影响,但是当程序稍大的话加载就会比较吃力。 new对象不能调用类的私有属性,方法。...垃圾回收过程 判断对象死亡 引用计数法 一个对象每被引用一次,引用计数就加一,当不被引用时减一。当引用计数为0是判断该对象死亡。...弊端:循环引用的情况下引用计数器不会为0 可达性分析法 从GC Roots开始出发,能够被探索到的加入到一个集合中,不能被探索到的判断对象已死。可以回收。...Hash索引计算对联合索引时会合并所有列计算Hash值,因此如果用到联合索引中的一个或几个时,联合索引会无法使用。 因为存在哈希碰撞问题,在有大量重复键的情况下,Hash索引的效率极低。
ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。...以下是CHAR和VARCHAR的区别: CHAR和VARCHAR类型在存储和检索方面有所不同 CHAR列长度固定为创建表时声明的长度,长度值范围是1到255 当CHAR值被存储时,它们被用空格填充到特定长度...索引是通过以下方式为表格定义的: SHOW INDEX FROM ; 28.、LIKE声明中的%和_是什么意思? %对应于0个或更多字符,_只是LIKE语句中的一个字符。...共有5种类型的表格: MyISAM Heap Merge INNODB ISAM MyISAM是Mysql的默认存储引擎。 39、ISAM是什么? ISAM简称为索引顺序访问方法。...通常用于将两个或多个字段合并为一个字段。 FORMAT(X, D)- 格式化数字X到D有效数字。 CURRDATE(), CURRTIME()- 返回当前日期或时间。
而MyISAM不支持; InnoDB支持外键,而MyISAM不支持; InnoDB不支持全文索引,而MyISAM支持; InnoDB不能通过直接拷贝表文件的方法拷贝表到另外一台机器, myisam 支持...因为当不符合以上条件的时候,外键会影响业务的扩展和修改,当数据量庞大时,会严重影响增删改查的效率。 27.什么叫视图?...游标是什么 视图是一种虚拟的表,具有和物理表相同的功能;可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。...游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。...,并转为一个常量时,使用这些访问类型;如果将主键置于where列表中,MySQL就能将该查询转化为一个常量;possible_keys:显示可能应用在这张表中的索引;如果为空,没有可能的索引;可以为相关的域从
就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代 Collection 对象或 Set 对象。要进行迭代,您必须获得一个 Iterator 对象。...这是一种必然发生的情况。在哈希映射的术语中,这称作冲突。Map 处理这些冲突的方法是在索引位置处插入一个链接列表,并简单地将元素添加到此链接列表。...由于我们的更新和访问使用了对链接列表的线性搜索,而这要比 Map 中的每个数组索引只包含一个对象的情形要慢得多,因此这样做的效率很低。...为使 Map 对象有效地处理任意数目的项,Map 实现可以调整自身的大小。但调整大小的开销很大。调整大小需要将所有元素重新插入到新数组中,这是因为不同的数组大小意味着对象现在映射到不同的索引值。...当移植到 1.5 版时,将 java.util.concurrent.ConcurrentHashMap 用作您的默认 Map。
对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。 1.3 PEP8 编程规范 缩进:使用4个空格的缩进(不使用Tab)。 在函数和类以及方法之间使用两个空行。...__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。...在Python中,鸭子类型的含义是:我们不关心对象是什么类型,只关心对象能做什么。换句话说,一个对象的行为(它的方法和属性)比它的实际类型更重要。...索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。 索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。...速度增加,可维护性高,插入更快,而且有效减少储存碎片。
领取专属 10元无门槛券
手把手带您无忧上云