前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【慕ke】Java高级工程师2024-必备技能学习

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

原创
作者头像
用户11119667
发布2024-05-13 16:18:10
1770
发布2024-05-13 16:18:10

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());

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java sql 文章列表查询
  • 每次查询详情返回三条数据信息,当前对象,上一条与下一条的Id和标题
    • 1、PreAndNextModel
      • 2、获取上一篇
        • 3、获取下一篇
          • 4、判断上一篇或者下一篇是否存在
            • 5、调用返回
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档