说说太多了怎么查找(1)
1、拆分表:数据冷热分离,拆分表的思路是,把一个包含很多字段的表拆分为2个或多个相对较小的表。这样做的原因是,这些表中某些字段的操作频率很高(热数据),经常要进行查询或更新操作,而另外一些字段的使用频率却很低(冷数据),冷热数据分离,可以减小表的宽度。
2、策略模式:加载资源文件的方式,使用了不同的方法,比如,ClassPathResource,FileSystemResource,ServletContextResource,UrlResource但他们都有共同的接口Resource;在AOP的实现中采用了两种不同的方式,JDK动态代理和CGLib代理
3、参数-Xms和-Xmx,通常设置为相同的值,避免运行时要不断扩展JVM内存,建议扩大至3-4倍FullGC后老年代空间的占用。
4、字节码验证:通过数据流和控制流分析,确定程序语义是合法的、符合逻辑的。比如保证任意时刻操作数栈和指令代码序列都能配合工作。
5、服务器也发送自己的SYN报文段作为响应,并包含了服务器自身的初始序列号(记为ISN(s))。此外,为了确认客户端的SYN,服务器将其包含的ISN(c)数值加1后作为返回的ACK数值,因此每发送一个SYN,序列号就会自动加1.这样如果出现丢包的情况,该SYN将会重传。
6、元数据验证:对字节码描述的信息进行语义分析,以保证其描述的信息符合Java语言规范的要求
7、Xmn建议设置为1.5倍FullGC后老年代空间的占用,避免新生代设置过小,当新生代设置过小时,会带来两个问题:一是minorGC次数频繁;二是可能导致minorGC对象直接进入老年代。当老年代空间不足时会触发FullGC。避免新生代设置过大,新生代过大也会带来两个问题,一是老年代变小,可能导致FullGC频繁执行;二是minorGC执行回收的时间大幅度增加。
8、是否支持事务和崩溃后的安全恢复:MyISAM强调的是性能,每次查询具有原子性,其执行速度比InnoDB更快,但是不提供事务支持。但是InnoDB提供事务支持,外部键等高级数据库功能。
9、在内存中生成一个代表此类的Class对象,作为方法区这些数据的访问入口
10、如果Bean配置了destroy-method方法,则会执行destroy-method配置的方法,至此,整个Bean的生命周期结束
11、一定要开启手动ACK,消费成功才移除,失败或没来得及处理就noACK并重新入对。
12、连接的被关闭者将序列号的数值加1作为响应的ACK值,以表明它已经成功接收到主动关闭者发送的FIN。此时上层的用用程序被告知连接的另一端已经提出了关闭请求。通常,这将导致应用程序发起自己的关闭操作。接着,被动关闭者将身份转变为主动关闭者,并发送自己的FIN,该报文段的序列号为L。
13、为了完成连接的关闭,最后发送的报文段还包含一个ACK用于确认上一个FIN。如果出现FIN丢失的情况,那么发送方将重新传输直到接收到一个ACK确认为止。
14、字段表集合:描述接?或类中声明的变量。字段包括类级变量以及实例变量,但不包括在?法
15、连接的主动关闭者发送一个FIN段指明接收者,向接收者发送自己当前的序列号。FIN段还包含了一个ACK段用于确认对方最近一次发来的数据(假设为L)。
16、如果要写数据库,可以先拿唯一键先去数据库查询一下,如果不存在则消费消息,否则直接丢弃。
17、属性表集合:在Class?件,字段表,?法表中都可以携带??的属性表集合。
18、如果有Bean实现了BeanPostProcessor接口,则会回调该接口的postProcessAfterInitialization()方法,
19、是否支持行级锁:MyISAM只有表级锁,而InnoDB支持行级锁和表级锁,默认为行级锁。
20、一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;
21、修改结果集的值,然后调用引擎API接口,写入这一行数据,InnoDB把数据保存到内存中,同时记录redolog,此时redolog进入prepare状态,然后告诉执行器执行完成了随时可以提交。
22、为了确认服务器的SYN,客户端将ISN(s)的数值加1后作为返回的ACK数值。
23、volitile-lru:尝试回收最少使用的键,但仅限于在过期集合的键,使得新添加的数据有空间存放。
24、使用布隆过滤器,将查询参数都存储到一个bitmap里,查询前先看该参数是否存在,如果存在了则进行查询,不存在则进行拦截。
25、二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。
26、方法去设置:基于jdk1.7版本,永久代:参数-XX:PermSize和-XX:MaxPermSize;基于jdk1.8版本,元空间:参数-XX:MetaspaceSize和-XX:MaxMetaspaceSize;通常设置为相同的值,避免运行时要不断扩展,建议扩大至1.2-1.5倍FullGc后的永久带空间占用
27、执行器接收通知后记录binlog,然后调用引擎接口,提交redolog为提交状态。至此更新完成。
28、进行权限校验,如果没有返回错误信息,有的话调用数据库存储引擎接口返回引擎的执行结果。
29、增加中间表:对于经常需要联合查询的表,可以建立表以提高查询效率。通过建立中间表,把经常需要联合查询的数据插入中间表中,然后将原来的联合查询改为对中间表的查询,以此来提升查询效率。
30、容器关闭后,如果Bean实现了DisposableBean接口,则会回调该接口的destroy()方法,
31、合理规划缓存的失效时间,可以给缓存时间加一个随机数,防止同一时间过期。
32、如果Bean实现了InitializingBean接口,则会回调该接口的afterPropertiesSet()方法,
33、缓存空对象,如果从数据库查询到结果为空,依然把这个结果进行缓存。
34、如何判断对象是否已经死亡(判断一个对象是否应该被垃圾收集器回收)?
35、实现消息推送系统,市面上有很多消息推送系统都是基于Netty来做的。
36、读写分离:为了提高系统的性能,优化用户体验,可以采用读写分离的方式降低主数据库的负载,比如用主数据库(master)完成写操作,用从数据库完成读操作。读写分离适用与读远大于写的场景。读写分离实现的基础是主从复制。主数据库利用主从复制将自身数据的改变同步到从数据库集群中,然后主数据库负责写操作,从数据库处理读操作。并可以根据压力情况,部署多个从数据库提高读操作的速度。
37、【增量】AOF持久化,以日志形式记录服务器所处理的每一个写操作,以文本的方式记录。
38、单个cookie在客户端的限制是3K,也就是说一个站点在客户端存放的cookie不能超过3K
39、客户端发送一个SYN报文段,并指明自己想要连接的端口号和客户端自己的初始序列号(记为ISN(c))。通常客户端还会借此发送一个或多个选项。
40、接口索引集合:用来描述这个类实现了哪些接口,这些接口将按implements后的顺序从左到右排列在接口索引结合中。
41、优化器确定执行方案,比如有多个查询条件,是先执行A条件还是B条件,优化器根据自己的优化算法进行选择执行效率最好的方案(不一定最好)。
42、如果有Bean实现了BeanPostProcessor接口,则会回调该接口的postProcessBeforeInitialzation()方法,
43、一个非数组类的加载阶段是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式。数组类型由Java虚拟机直接创建。
44、如果查询应用多,尤其是需要进行多表查询的时候,可以进行反范式话,通过增加冗余字段增加查询效率。