1.syncronized加static和不加的区别:不加static是使用this,即当前对象为锁,加static是以当前对象的类对象为锁
2.ThreadLocal是通过每个线程单独一份存储空间,牺牲空间来解决冲突,并且相比于Syncronized,ThreadLocal具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问到想要的值。
3.默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程。但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。
4.head请求,一般用在网络状况较好的情况下,用来判断网络资源是否存在。
- 适配器模式:通俗的理解类似于转换器,例如,插座提供两项电,你的电动车充电需要三项电,这里就需要一个两项转三项的转换器,这个转换器需要继承插座的两项电,并实现电动车三项电充电功能。
- 策略模式:通俗的理解就是,去医院体检,每个人有多个项目需要检查,并且检查的项目也不尽相同,可以按喜好,和实际情况任意顺序去检查,这样就避免了顺序检查的弊端,体现在代码上就是,将各个检查流程提取为独立的类,按需进行注入调用。
注意事项:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。