IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【备战2020金三银四,谈谈我认为的高级Java开发到底应该是怎样的 -> 正文阅读

[Java知识库]【备战2020金三银四,谈谈我认为的高级Java开发到底应该是怎样的

答案:通过定时任务线程池ScheduledExecutorService的scheduleAtFixedRate方法启动线程每隔30s ping一次服务器,启动之后scheduleAtFixedRate方法会返回当前线程的异步执行结果的引用Future,如果服务器在线,线程会每隔30s触发一次,如果服务区不在线则通过Future.cancel停止本次心跳检测。

5.MyBatis打开调试模式之后,能打印sql语句等信息,这是怎么实现的?实现过程中使用了什么设计模式?

答案:在mybatis的日志模块中,通过动态代理为jdbc的接口无侵入性的增强了日志能力,其本质是使用代理模式,其中ConnectionLogger负责打印连接信息和SQL语句,PreparedStatementLogger负责打印参数信息,ResultSetLogge负责打印数据结果信息。

6.MyBatis是如何为二级缓存动态添加日志、同步控制、阻塞、缓存淘汰策略等附加能力的?用了什么设计模式?

答案:二级缓存使用了装饰器模式为缓存能力添加附加能力的,在缓存模块中有8个装饰器,分别为缓存添加日志、序列化、同步、阻塞等等能力的装饰器,可以在运行期非常灵活的为二级缓存进行增强。

7.多线程编程对我们有什么实际意义?

答案:按照我们一般的业务实现,我们会在一个方法中调用所有相关的业务方法。这种实现带来的问题有什么?
第一,耦合,所有相关的业务方法成了一个业务流程上的必不可少的一步,前面的流程断了,后面的就没法走,整个业务就无法完成,但是有些业务方法其实并不是业务流程上必不可少的一环,是否执行,执行是否成功对业务影响并不大;第二,业务流程上有几个步骤,这个处理时间就是这几个步骤时间的相加,业务越多,步骤越多,处理时间当然就越多。那怎么解决这个问题?让这些业务并行起来而且减少相互之间的关联?当然是请出我们的线程,既可以解耦,又可以提高性能。

8.在单体应用中,使用加锁机制能解决我们所有的线程问题吗?

答案:不能,加锁有可能会造成我们的程序死锁和活锁,同时,synchronized如果加锁不正确,也不能保证数据的线程安全。

9.Netty高性能表现在哪些方面?

答案:IO 线程模型:同步非阻塞,用最少的资源做更多的事。

内存零拷贝:尽量减少不必要的内存拷贝,实现了更高效率的传输。

内存池设计:申请的内存可以重用,主要指直接内存。内部实现是用一颗二叉查找树管理内存分配情况。

串形化处理读写:避免使用锁带来的性能开销。即消息的处理尽可能在同一个线程内完成,期间不进行线程切换,这样就避免了多线程竞争和同步锁。表面上看,串行化设计似乎CPU利用率不高,并发程度不够。但是,通过调整NIO线程池的线程参数,可以同时启动多个串行化的线程并行运行,这种局部无锁化的串行线程设计相比一个队列-多个工作线程模型性能更优。

高性能序列化协议:支持 protobuf 等高性能序列化协议。

高效并发编程的体现:volatile的大量、正确使用;CAS和原子类的广泛使用;线程安全容器的使用;通过读写锁提升并发性能。

10.MyBatis是怎么通过mapper接口访问数据库?

答案:mybatis是通过sqlSession这个入口才能访问数据库;首先通过动态代理在内存中生成mapper接口的实现类,实现类中的方法要做三个翻译,第一将请求转发给sqlsession中指定的方法,第二拼接sql语句的唯一标识(namespace+id),第三传递查询参数;通过这三步翻译,基于sqlSession完成对数据库的访问。

持续关注,定期更新······

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

不要停下自己学习的脚步

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

img-3jBFCvQO-1630855989403)]

[外链图片转存中…(img-Wo6wiq8l-1630855989404)]

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:02:26  更:2021-09-06 11:04:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:09:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码