篱笆墙网络科技公司面试-2021-7-6
Java中如何保证线程安全性 什么是线程安全: 当多个线程访问某个方法时,不管你通过怎样的调用方式、或者说这些线程如何交替地执行,我们在主程序中不需要去做任何的同步,这个类的结果行为都是我们设想的正确行为,那么我们就可以说这个类是线程安全的。 ...
Java中如何保证线程安全性 什么是线程安全: 当多个线程访问某个方法时,不管你通过怎样的调用方式、或者说这些线程如何交替地执行,我们在主程序中不需要去做任何的同步,这个类的结果行为都是我们设想的正确行为,那么我们就可以说这个类是线程安全的。 ...
技术面 简单介绍下自己和目前做的项目 static的作用,以及静态类初始化的过程? i++是原子操作吗 spring的IOC和AOP 聊项目 hr面 聊公司业务,福利 聊工资 等通知
线程核心数 如何设置 首先考虑到CPU核心数 Java 中如何获取核心线程数 Runtime.getRuntime().availableProcessors(); 考虑任务是 CPU 密集型任务还是 IO 密集型任务 cpu密集(比如像加解密,压缩、计算等一系列需要大量耗费 CPU 资源的任务):理论上线程的数量 = CPU 核数就是最合适的,不过通常把线程的数量设置为CPU 核数 +1,会实现最优的利用率。 IO密集型任务:线程数 = CPU 核心数 / (1 - 阻塞系数) 其中计算密集型阻塞系数为 0,IO 密集型阻塞系数接近 1,一般认为在 0.8 ~ 0.9 之间。比如 8 核 CPU,按照公式就是 2 / ( 1 - 0.9 ) = 20 个线程数 5个线程如何判断线程结束 线程池做的话,线程池有一个termiated终止状态,调用isTermiated可以查看线程池中的线程有没有完全结束 atomicInteger 初始化5,完成一个减一 redis 做缓存 还能做啥 消息队列 分布式锁 使用redis分布式锁(主要使用了redis中的setnx和getset方法,这两个方法在redisTemplate分别是setIfAbsent和getAndSet方法)实现线程安全,因为redis是单线程,能保证线程的安全性,而且redis强大的读写能力能提高效率。 ...
mybatis的拦截器本人平时也很少用到,没了解之前,也只是知道运用到了动态代理用来增强方法的功能,但是不了解其中的原理。为了更好的使用mybatis,这次,我记录下我所了解的mybatis的原理,本文不一定完全正确,可能有理解不到位的地方。 ...
java日志体系 常用日志框架 Log4j:Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j 2:Apache Log4j 2是Apache开发的一款Log4j的升级产品。 Commons Logging:Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging。Apache推出了JCL(Jakarta Commons Logging),它只是定义了一套日志接口(其内部也提供一个Simple Log的简单实现),JCL也是一套接口规范,支持运行时动态加载日志组件的实现。也就是说,在应用程序代码中,只需调用Commons Logging的接口,底层实现可以是Log4j,也可以是JUL SLF4J:全称为Simple Logging Facade for Java,类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。 Logback:是一套日志组件的实现,属于SLF4J阵营。 JUL:全称是Java Util Logging,是JDK1.4以后提供的日志实现。 ...