【慕ke】Java高级工程师2024-必备技能学习

2024-05-13 16:18:10 浏览数 (1)

Java高级必备技能介绍

Java高级技能通常指的是在掌握Java基础知识之上,对Java语言的高级特性、设计模式、框架、性能优化、并发编程、系统架构等方面有深入理解和实践经验的能力。

  1. Java虚拟机(JVM):
    • 深入理解JVM内存模型、垃圾回收机制、类加载机制等。
    • 能够进行JVM调优,分析和解决内存泄漏和性能问题。
  2. 并发编程:
    • 熟练使用java.util.concurrent包中的类和接口进行并发编程。
    • 理解并应用线程池、同步器、原子变量等高级并发工具。
    • 掌握锁、线程安全、并发集合等概念。
  3. 设计模式:
    • 理解并能应用常见的23种设计模式,如单例、工厂、策略、观察者、装饰者等。
  4. 框架与技术栈:
    • 熟悉Spring框架,包括依赖注入、面向切面编程(AOP)、事务管理等。
    • 掌握Spring Boot快速开发的特性。
    • 了解其他流行的Java框架,如Hibernate、JPA、Apache Maven、Gradle等。
  5. 微服务架构:
    • 理解微服务的概念、优势和挑战。
    • 掌握Docker、Kubernetes等容器化技术和服务编排工具。
  6. 性能优化:
    • 能够分析和优化Java应用程序的性能瓶颈。
    • 熟悉使用JProfiler、VisualVM、JMX等工具进行性能监控和分析。
  7. 安全:
    • 理解Java安全的各个方面,包括加密、认证、授权等。
    • 熟悉安全框架如Spring Security。

java sql 文章列表查询

需求背景: 1、在列表页展示20条文章列表的形式 2、每篇文章显示当前用户是否已经点赞了

希望的数据格式

代码语言:javascript复制
list:[{
    title:'文章标题',
    //0|1用来区分是否当前用户点赞了该文章
    isStar: 0|1 
},
...]

我的表是3张表,一张文章表,一张用户表,以及一张点赞表(表中只有两个字段,文章id,和用户id 用来把用户和文章做绑定关系)

这是我关联查询文章和作者的sql,不知道怎么修改了 table1 为文章表 table2 为用户表

**

代码语言:javascript复制
SELECT table1.id, table1.context,table1.star,table1.share,table2.name,table2.img from table1 inner join THEY_SAY_USER on table1.auther_id = table2.id ORDER BY star DESC limit 20

每次查询详情返回三条数据信息,当前对象,上一条与下一条的Id和标题

1、PreAndNextModel
代码语言:javascript复制
 1 public class PreAndNextModel {
 2     /**
 3      * 上一篇或者下一篇的id
 4      */
 5     private Integer id;
 6     /**
 7      * 上一篇或者下一篇的标题
 8      */
 9     private String title;
10 
11     public Integer getId() {
12         return id;
13     }
14 
15     public void setId(Integer id) {
16         this.id = id;
17     }
18 
19     public String getTitle() {
20         return title;
21     }
22 
23     public void setTitle(String title) {
24         this.title = title;
25     }
26 }
2、获取上一篇
代码语言:javascript复制
 1 @Override
 2 public PreAndNextModel getPreModel(Integer productId, Integer proCategoryId) {
 3 
 4     IProductDao iProductDao = new ProductDaoImpl();
 5     //new model
 6     PreAndNextModel pre = new PreAndNextModel();
 7 
 8     Integer preId = null;
 9     List<ProductDto> list;
10     //查询该分类下的集合
11     list = iProductDao.findAllByCategoryId(proCategoryId);
12     //获取集合长度
13     int count = list.size();
14     //将该分类下的Id放入数组当中
15     int[] intId = new int[count];
16     for (int i = 0; i < count; i  ) {
17         intId[i] = list.get(i).getId();
18     }
19     //获取当前Id的上一个Id下标
20     for (int j = 0; j < count; j  ) {
21         if (intId[j] == productId) {
22             if (j != 0) {
23                 preId = intId[j - 1];
24             }
25         }
26     }
27     isPreAndNext(iProductDao, pre, preId);
28     return pre;
29 }
3、获取下一篇
代码语言:javascript复制
 1 @Override
 2 public PreAndNextModel getNextModel(Integer productId, Integer proCategoryId) {
 3     IProductDao iProductDao = new ProductDaoImpl();
 4     PreAndNextModel next = new PreAndNextModel();
 5 
 6     Integer nextId = null;
 7     List<ProductDto> list;
 8     //查询该分类下的集合
 9     list = iProductDao.findAllByCategoryId(proCategoryId);
10     //获取集合长度
11     int count = list.size();
12     //将该分类下的Id放入数组当中
13     int[] intId = new int[count];
14     for (int i = 0; i < count; i  ) {
15         intId[i] = list.get(i).getId();
16     }
17     //获取当前Id的下一个Id下标
18     for (int j = 0; j < count; j  ) {
19         if (intId[j] == productId) {
20             //判断是不是最后一个下标
21             if (j != (count - 1)) {
22                 nextId = intId[j   1];
23             }
24         }
25     }
26     isPreAndNext(iProductDao, next, nextId);
27     return next;
28 }
4、判断上一篇或者下一篇是否存在
代码语言:javascript复制
 1 private void isPreAndNext(IProductDao iProductDao, 
 2              PreAndNextModel pre, Integer preId) {
 3     ProductDto productDto;
 4     if (preId == null) {
 5         pre.setId(null);
 6         pre.setTitle("无");
 7     } else {
 8         //将上一页Id和标题赋值返回
 9         productDto = iProductDao.findById(preId);
10         pre.setId(productDto.getId());
11         pre.setTitle(productDto.getName());
12     }
13 }
5、调用返回
代码语言:javascript复制
1 //上一个
2 PreAndNextModel pre = iProductService.getPreModel(productId, 
3                 productModel.getProCategoryId());
4 //下一个
5 PreAndNextModel next = iProductService.getNextModel(productId, 
6                 productModel.getProCategoryId());

0 人点赞