面试问题整理 目录如果项目急需上线怎么办当用户变多时,系统如何拆分(AKF)如果项目急需上线怎么办加班加人、加资源功能排优先级,保证重要的能用,后期迭代当用户变多时,系统如何拆分(AKF)x:水平拆分,集群部署y:业务拆分,根据功能模块进行拆分z:数据拆分,根据数据的种类进行拆分(行业、地区)...
如何提升QPS 网络减少网络开销(减少服务间调用,redis、mysql等访问)让服务能力对等(例如eureka url顺序打乱)使用短url,短请求参数实时数据改为长连接(不要使用轮询)合并多个请求为一个请求cpu能使用异步就使用异步能用多线程就用多线程使用mq进行流量削峰多的数据,分批次访问mysql、redis、tomcat增加 最大连接数内存使用缓存(减少操作数据库)磁盘sql优化、索引优化...
eureka相关 eureka优化及注意事项服务少时,应该关闭自我保护注册中心两台一下,相互写对方url,如果配置三台及以上,需要把另外的url全部写上注册中心url打乱写,因为在实际注册时,会按照填写的顺序进行注册缩短服务剔除时间、发现时间、拉取时间、心跳时间以及集群间同步间隔时间关闭服务时,先停止服务,在手动进行下线eureka一般默认配置为3台,如果配置修改默认配置eureka cap中满足哪些,为什么cap中不满足c,原因如下:eureka中的三级缓存(registry、readWrite
动态代理除了cglib还了解哪些 asm(cglib底层实现,使用了责任链+观察者模式,主要类ClassReader, ClassWriter)instrument(类拦截功能,可以直接修改class二进制,java agent,idea破解就是用的这个)
对象引用强软弱虚 1. 强引用普通new 对象就是使用强引用2. 软引用当内存不足时,软引用会被回收3. 弱引用只要遇到垃圾回收,就会被回收掉4. 虚引用如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。...
DCL单例是否需要加volatile,为什么 为什么需要加,为什么因为cpu是乱序执行的,如果不加,在多线程情况下,会得到半初始化的对象volatile是如何实现的字节码层面:ACC_VOLATILEjvm层面:使用内存屏障LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Stor
java对象创建过程 class loading先将class字节码文件加载到内存中class linking建立关联verification: 对加载进来得二进制进行校验preparation: 静态变量设默认值resolution: 解析,将字符串代表的引用进行关联替换class initializing: 类初始化,静态变量设置初始值,执行静态语句块申请对象内存成员变量赋默认值调用构造方法成员变量顺序赋值执行构造方法语句...
GC相关整理 目录什么是垃圾如何定位垃圾常见的垃圾回收算法对象分配过程jvm常见垃圾回收器垃圾收集器跟内存大小的关系什么是垃圾没有任何引用所指向的对象就是垃圾如何定位垃圾引用记数跟可达算法常见的垃圾回收算法标记清除:从根对象开始标记,之后将未标记的对象进行清理,适用于存活对象叫多的情况缺点:扫描两次,效率偏低拷贝算法:开辟一块内存,将存活对象顺序拷贝到新开辟的内存中,适用于存活对象较少的情况。优点:只扫描一次,效率较高,不会产生碎片缺点:空间浪费,需要移动对象。标记压缩:标记的同时进行移动,
mysql优化 目录数据类型优化主键的选择字符集的选择适当拆分适当的数据冗余索引优化sql语句优化数据类型优化尽量使用可以正确存储数据的最小数据类型更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期更少,但是要确保没有低估需要存储的值的范围,如果无法确认哪个数据类型,就选择你认为不会超过范围的最小类型整型比字符操作代价更低因为字符集和校对规则使字符比较比整型比较更复杂经常查询的列,应该尽量避免使用有null如果查询中包含可为NULL的列,对mysql来说很难优化,因
InnoDB锁 共享/排它锁(Shared and Exclusive Locks)按照兼容性来分类,InnoDB有共享锁和排它锁两种行级锁。共享锁(S):又称读锁。允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁(X):又称写锁。允许获取排他锁的事务更新数据,阻止其他事务取得相同的数据集共享读锁和排他写锁。若
事务的四个特性及隔离级别 原子性(A):一个事务中的操作,要么全部成功,要么全部失败一致性©:数据库总是从一个一致性的状态转换到另外一个一致性的状态隔离性(I):一个事务的修改在最终提交前,对其他事务是不可见的持久性(D):一旦事务提交,所做的修改就会永久保存到数据库中...
mysql名词解释 名词解释回表基于非主键索引的查询需要先扫描一遍B+树查询出主键id,然后根据主键再次进行扫描,最终返回查询出的数据覆盖索引在搜索的叶子节点中如果能获取到查询的所有列数据,无需回表的过程称之为索引覆盖最左匹配在一个表中,如果有组合索引,那么组合索引在进行查询的时候,遵循最左匹配,即必须要匹配到第一个列之后,才能匹配第二个列索引下推数据筛选的过程下移到存储引擎层来完成,而不是在server层完成...
mysql存储引擎对比 名称存储位置数据结构事务全文索引行锁外键索引类型数据文件后缀MyISAM磁盘B+树不支持支持不支持不支持非聚簇frm是表定义文件,ibd是数据文件InnoDB磁盘B+树支持5.6后支持支持支持聚簇frm是表定义文件,myd是数据文件,myi是索引文件memory内存hash...