Loading...
java线程池初探java提供了Executor接口,它是所有线程池的父接口,其中定义了execute()方法,也就是任务的执行方法。ExecutorService接口继承了Executor接口,对其进行了一些扩展,主要添加了线程池生命周期的管理。我们通常使用的线程池有两大类,其都为ExecutorService接口的实现,ThreadPoolExecutor与ForkJoinPool。Th...
java的四种引用方式强引用(NormalReference)Person p = new Person();由栈中的一个变量直接指向堆内一个对象的方式就是强引用,也是最常使用的方式,该引用的特点是,只要该对象存在引用,那么他就不会被GC回收。软引用(SoftReference)SoftReference<Person> p = new SoftReference<>...
synchronized与AbstractQueuedSynchronizersynchronizedsynchronized是排它锁,是jvm内置的加锁方式,本质上是创建一个对象,在对象之上添加标识,来确定是否有其他线程获得了锁。synchronized实现方式在jdk1.5之前,synchronized每次都需要向操作系统申请重量级锁,效率很低。从jdk1.5开始,引入了锁升级的概念。锁...
LVS原理以及搭建网络架构网络有七层架构,自上而下分别是,应用层、表示层、会话层、传输控制层、网络层、链路层、物理层。在实际应用中,可以把应用层、表示层、会话层合并成应用层,简化为五层结构。如果客户端与服务器之间要建立通信,首先要建立连接,然后才能传输数据,建立连接的过程由位于传输控制层的TCP协议负责,在本地随机开一个端口与的目标端口进行三次握手,开启一个socket会话,然后就可以通过该...
BIO与NIO第一阶段每个client发来的请求都对应一个I/O标识符,fd 8,fd 9,多个线程或进程去读对应标识符的请求,该阶段socket是blocking(阻塞)的,也就是说如果一个线程读fd 8,但是数据还没有返回,它就会一直在那里等,我想读fd 9,只能再开一个线程,当请求很多时,就要开更多的线程,但是cpu线程是有时间片的,如果有某个请求数据返回了,还没轮到它的线程处理,它就...
Hibernate-Validator参数检查注解@Null 被注释的元素必须为 null@NotNull 被注释的元素必须不为 null@AssertTrue 被注释的元素必须为 true@AssertFalse 被注释的元素必须为 false@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value) 被注释的元素必须是一个数字,其值必须小于等于...
keepalived + nginx 实现高可用安装keepalivedyum install keepalived -y设置开机启动systemctl enable keepalived.service修改配置文件vi /etc/keepalived/keepalived.conf第一台机器(主机)! Configuration File for keepalived global_...
SpringBoot 2.xSpringBoot整合整合Servlet注解方式启动类上添加注解@SpringBootApplication == @ServletComponentScan == public class Springboot011Application { public static void main(String[] args) { SpringAp...
浅谈java动态代理介绍我们之前的文章提到过静态代理,也就是代理模式,它可以通过对某个对象的包装来实现修改对象方法执行前后的逻辑,或者修改返回值类型,但是这种静态代理方式需要继承接口,并且需要指定对象的传入,显然不够灵活,因此我们需要运用动态代理。基于接口的动态代理(Proxy)Proxy是jdk提供的一套动态代理,基于反射实现。示例首先创建一个动物接口,有跑和叫两种方法。public in...
自己创建一个java.lang.String类是否会被类加载器加载?——浅谈双亲委派机制类加载器有四种1.启动类加载器(BootstrpClassLoader)2.扩展类加载器(ExtClassLoader)3.应用程序类加载器(AppClassLoader)4.自定义类加载器(CustomClassLoader)BootstrpClassLoader负责加载%JAVA_HOME%/jre/...