switch可以是哪种类型
异常的原理,线程回收,线程怎么被处理
https://segmentfault.com/a/1190000009708014
-
检查栈顶异常对象类型(只检查是不是null,是否referance类型,是否Throwable的子类一般在类验证阶段的数据流分析中做,或者索性不做靠编译器保证了,编译时写到Code属性的StackMapTable中,在加载时仅做类型验证)
-
把异常对象的引用出栈
-
搜索异常表,找到匹配的异常handler
-
重置PC寄存器状态
-
清理操作栈
-
把异常对象的引用入栈
-
把异常方法的栈帧逐个出栈(这里的栈是VM栈),逐个找异常处理handle
-
残忍地终止掉当前线程。
-
找不到异常处理就终止
hashMap 1.7 1.8
头插入 尾插入链表
https://blog.youkuaiyun.com/qq_36520235/article/details/82417949
相同的hashCode但是不同的key,在计算好位置后,后续又有相同则放入链表中
https://www.cnblogs.com/jing99/p/6985618.html?utm_source=itdadao&utm_medium=referral
拿出来的时候,就会比较每一个key的值
https://www.iteye.com/blog/xiaolu123456-1485349
所以先比较hashCode,在比较equal
hashMap太长,导致链表变treemap
redis数据结构
https://www.cnblogs.com/wxd0108/p/5729739.html
https://www.cnblogs.com/mingtianct/p/6291593.html
主键生成
https://www.jianshu.com/p/9d7ebe37215e
zk选举
spring事务管理
https://www.cnblogs.com/yixianyixian/p/8372832.html
三类
一类:datasource,commit rollback
二类:状态
三类:事务传播行为
https://www.cnblogs.com/micrari/p/7612962.html
try catch 处理异常
// 执行回调,如果没有后续拦截器的话,就进入事务方法了。 retVal = invocation.proceedWithInvocation(); } catch (Throwable ex) { // 事务发生异常。 completeTransactionAfterThrowing(txInfo, ex); throw ex; } finally {
// 把上一层事务的TxInfo重新绑到ThreadLocal中。
cleanupTransactionInfo(txInfo); } //
事务未发生异常。才会进行提交
提交事务
看状态
里判断的语义就是如果发现事务被标记全局回滚并且在全局回滚标记情况下不应该提交事务的话,则进行回滚。 * * 我们通常用的DataSourceTransactionManager对于isGlobalRollbackOnly的判断是去读status中transaction对象的ConnectionHolder的rollbackOnly标志位。 */ if (!shouldCommitOnGlobalRollbackOnly() && defStatus.isGlobalRollbackOnly()) {
catch异常
completeTransactionAfterThrowing
回滚:
我们可以在用户代码(业务方法或者切面)中通过
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
* 来置当前事务层的status对象的rollbackOnly标志位为true以手动控制回滚。 */ if (defStatus.isLocalRollbackOnly())
监控sql
percona的慢查询分析工具+python 自动发邮件。
ELK可以做。然后现在也有很多PHP写的开源的系统。
filebeat 有专门的mysql 慢查询的插件的。
filebeat的话要做聚合只能在kibana里面自己实现。
https://blog.youkuaiyun.com/eagle89/article/details/78875261
排序
redis负载均衡配置,事务、排序、检索等使用方法与场景
索引建立的标准
有两种情况不建议建立索引:
1.表的记录太少,一般以5000条为界限。对5000条记录以下的数据表建立索引还不如进行全表扫描。
2.索引的选择性比较低:
所谓选择性:是指不重复的索引值与表记录数的比值
选择性=不重复的索引值/表的记录数
选择性越高的索引价值越大,这是由B+Tree的性质决定的。一般以0.8为界
https://blog.youkuaiyun.com/liuyiling_xm610/article/details/51503913
https://www.cnblogs.com/rinack/p/10332099.html
新建一个线程时占用的空间是多少
4. 如果判断表中是否存在索引
https://www.cnblogs.com/yplong/p/3968828.html
information_schema
SELECT * FROM information_schema.statistics WHERE table_schema=CurrentDatabase AND table_name = 'rtc_phototype' AND index_name = 'index_name'
java中有没有内存泄露问题
内存泄漏是指不再被使用的对象或者变量一直被占据在内存中
https://blog.youkuaiyun.com/duoduo18up/article/details/81545958
资源未关闭,流
https://blog.youkuaiyun.com/afanti222/article/details/79732236
容器太多,未消除
何实现多线程
.TCP与UDP的区别
12.FTP是什么,工作在哪一层
文件传输协议FTP是一个最基本的应用层协议
5.死锁发生的条件
等待
循环等待
占用资源未释放
https://www.cnblogs.com/jing99/p/5947841.html
6.死锁的解决方式
超时等待
按资源分配,不独立占用
7.js的闭包
两个系统的通信方式
http tcp udp 物理io
数据库的四大特性
原子性:原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:如果事务执行之前数据库是一个完整的状态,那么事务结束后,无论事务是否执行成功,数据库仍然是一个完整的状态。
数据库的完整状态:当一个数据库中的所有的数据都符合数据库中所定义的所有约束,此时可以称数据库是一个完整的状态。
隔离型:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
持久性:指一个事务一旦被提交,他对数据库的影响是永久性的。
15.循环链表的优点
https://zhidao.baidu.com/question/557033595.html
循环链表的特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。①循环链表中没有NULL指针。涉及遍历操作时,其终止条件就不再是像非循环链表那样判别p或p->next是否为空,而是判别它们是否等于某一指定指针,如头指针或尾指针等。 ②在单链表中,从一已知结点出发,只
docker好处
.线程间协作的两种方式
https://blog.youkuaiyun.com/htofly/article/details/51711797
wait notify condition 栅栏 countDown
24.第三范式是什么
volatile作用,能否保证原子性。
用反射调用类的私有方法和公有方法的区别,
spring ioc如何实现的。
数据库的脏读如何避免
rc
jdbc和ODBC的区别
https://blog.youkuaiyun.com/u010191243/article/details/46685951
java语言和原生C的区别
从Java 调用本地 C代码在安全性、实现、坚固性和程序的自动移植性方面都有许多缺点。
java大型机)都可以自 动安装、移植并保证安全性
垃圾回收
tcp中间断了
断了就没完整传输