怎么将网站权重提上去,优化网站搜索排名,建设银行激活网站,石家庄专门做网站的公司子线程抛异常主线程能否catch
在不做任何处理的情况下#xff0c;主线程不能catch
解决方式#xff1a;
子线程使用try catch来捕获异常
为线程设置未捕获异常处理器UncaughtExceptionHandler
通过future的get方法捕获异常
JVM相关参数
显示指定堆内存-Xms和-Xmx指定最…子线程抛异常主线程能否catch
在不做任何处理的情况下主线程不能catch
解决方式
子线程使用try catch来捕获异常
为线程设置未捕获异常处理器UncaughtExceptionHandler
通过future的get方法捕获异常
JVM相关参数
显示指定堆内存-Xms和-Xmx指定最小堆和最大堆
显示指定新生代内存 -XX:NewSize-XX:MaxNewSize指定新生代最小内存和最大内存
显示指定元空间大小-XX:MetaspaceSizeN 设置Metaspace的初始大小-XX:MaxMetaspaceSizeN设置Metaspace的最大大小
显示指定垃圾回收算法 -XX:UserG1GC/-XX:UserConcMarkSweepGC
记录GC日志记录-XX:PrintGCDetails打印基本GC信息
TreeMap和HashMap的区别
TreeMap实现了NavigableMap和SortedMap接口相比于HashMap多了对集合中的元素根据键排序的能力以及对集合内元素的搜索能力
Bean是线程安全的吗
spring框架的bean是否线程安全取决于其作用域和状态常见作用域分为prototype和singleton几乎所有场景都用singleton
prototype作用域下每次获取都会创建一个新的bean实例不存在资源竞争问题不存在线程安全问题对于singletonIOC容器只有唯一的bean实例可能存在资源竞争如果bean有状态的话就存在线程安全问题对于有状态单例bean的线程安全问题可以在类中定义一个ThreadLocal成员变量将需要的可变成员变量保存在ThreadLocal中
JVM内存结构
程序计数器 Java虚拟机栈 本地方法栈 堆区 方法区
程序计数器是一块很小的内存空间是线程私有的是当前线程正在执行的那条字节码指令的地址。他的作用是在多线程环境下程序计数器记录当前线程执行的位置从而当线程切换回来时就知道上次线程执行到哪了
Java虚拟机栈会为每一个即将运行的java方法创建一块叫做栈帧的区域用于存放该方法运行过程中的一些信息局部变量表操作数栈动态链接方法出口信息
本地方法栈是为了JVM运行Native方法准备的空间很多native方法都是用c语言实现的
堆区存放对象的内存空间线程共享所有线程都访问同一个堆
Fail-Fast机制
fail-fast机制是一种快速失败的策略用于在集合迭代期间检测到其他线程对集合的结构进行修改当fail-fast机制检测到并发修改时会立即抛出concurrentModificationException异常防止迭代继续执行这样可以避免在不确定状态下进行迭代保持数据的一致性。
Fail-fast机制通过在ArrayList内部维护一个modCount变量来实现modCount记录了对ArrayList的结构进行修改的次数在每次迭代开始时会将modCount的值保存在一个局部变量expectedModCount中然后在迭代过程会再次检查modCount和expectedModCount是否相等如果不相等就说明有其他线程对ArrayList进行了修改就会立即抛出ConcurrentModificationException异常
ArrayList相关
ArrayList初始化数组默认长度为10
ArrayList扩容为原来的1.5倍扩容后是用新的数组不是线程安全的
Java空对象引用占用内存吗
需要占用4或者8字节(取决于他是32位还是64位操作系统)
Linux查看端口的命令
lsof -i:端口号
netstat -tunlp |grep 端口号
TCP和UDP可以同时绑定相同的端口吗
在数据链路层中通过mac地址来寻找局域网的主机在网络层中通过ip地址来寻找网络中互连的主机或路由器。在传输层中需要通过端口来寻址来识别同一计算机中同时通信的不同应用程序。所以在传输层的端口号的作用是为了区分同一主机上不同应用程序的数据包。传输层有两个传输协议分别是TCP和UDP在内核中是两个完全独立的软件模块。当主机收到数据包后可以在IP包头的协议号字段知道包是TCP/UDP所以可以根据这个信息确定送给哪个模块处理送给TCP/UDP模块的报文根据端口号确定送给哪个应用程序处理
TCP如何保证传输的可靠性
TCP实现可靠传输的方式 可以通过序列号与确认应答。在TCP中当发送端的数据到达接受主机时接收端主机会返回一个确认应答消息表示已收到消息
使用滑动窗口来告诉发送端自己还有多少缓冲区可以接受数据于是发送端就可以根据接收端的处理能力来发送数据而不会导致接受端处理不过来
引入拥塞控制即只要发送方没有在规定时间内接受到ACK应答报文也就发生了超时重传就会认为网络出现了拥塞。只有在网络中没有出现拥塞时拥塞窗口就会增大网络中出现了拥塞拥塞窗口就会减少
引入流量控制控制发送方的发送速率不要太快利用滑动窗口就可以实现发送方的流量控制 参考资料Java 面试指南 | JavaGuide
小林coding