
Java
文章平均质量分 86
JackieZhengChina
70'码农,CSDN博客专家,信息系统项目管理师,工商管理硕士,CZB政采评审专家,中国采购与招标专家库专家,自驾爱好者,近20年教育类产品研发及管理经历,曾任教育科技公司联合创始人兼产品VP、科技公司产研VP。
职业标签:产品、项目、技术、运营、管理、战略。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一文详谈领域驱动设计实践
作者:泊静 阿里云开发者导读本文作者结合在团队的实践过程,分享了自己对领域驱动设计的一些思考。了解过领域驱动设计的同学都知道,人们常常把领域驱动设计分为两部分:战术设计和战略设计。这两个概念本身都是抽象的,有人把战术设计看作是领域内的设计过程,而战略设计看作是领域间关系的设计过程。也有一种认知是把战术设计看作是编码的设计,把战略设计看作是架构的设计。实际上领域驱动设计的作者Eric Evans本无意将这两者进行割裂,相反两者之间相辅相成,缺一不可。原创 2024-11-08 15:20:30 · 1493 阅读 · 0 评论 -
Java22 的新特性
Java22 在 2024 年 3 月 19 日发布GA版本,共十二大特性:JEP 423: G1垃圾回收器的区域固定(Region Pinning for G1)JEP 447: super(...)前置语句(Statements before super(...),预览)JEP 454: 外部函数和内存API(Foreign Function & Memory API)JEP 456: 未命名变量和模式(Unnamed Variables & Patterns)原创 2024-09-14 09:05:59 · 1582 阅读 · 0 评论 -
浅析VO、DTO、DO、PO
简单java对象,个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。一个POJO持久化以后就是PO,直接用它传递、传递过程中就是DTO,直接用来对应表示层就是VO。POJO、PO、DTO、VO都是处理流程中的名字,不是PO对应一个POJO,DTO对应一个POJO,VO对应一个POJO在有些情况下PO、DTO、VO是指同一个POJO视图对象,主要对应界面显示的数据对象。它的作用是把某个指定页面(或组件)的所有数据封装起来。如果是一个DTO对应一个VO,则DTO等价于VO;原创 2024-09-06 15:49:13 · 889 阅读 · 0 评论 -
Java17 有哪些新特性?
总的来说,Java 17作为Java的一个主要版本,带来了许多令人兴奋的新特性和改进。内联类是一种非常有用的特性,可以在不增加类数量的前提下定义新的类或接口,并可以在编译时将其内联到其他类或方法中,从而减少运行时的内存占用和提高性能。模块化还提供了更好的封装和隐藏实现细节的能力,增强了代码的可维护性和。Java 17引入了几种新的数学运算符,如min和max,它们可以用来计算两个数字中的最小值和最大值。这些新运算符提供了更快捷的计算方式,提高了代码的效率和可读性。这有助于实现更安全的代码,并控制继承结构。原创 2024-09-05 10:03:16 · 1352 阅读 · 0 评论 -
手把手教你搭建搭建JPress
原文:https://blog.csdn.net/m0_53557217/article/details/129375378。因为我所使用的为华为云,此处端口放行以华为云为例,其他云服务器可以直接网上搜索对应云服务器端口放行方式。https://pan.baidu.com/s/1DHKY5xBbcNPltJ3VZiBz8g 提取码:im4m。将下载好的war包上传到该文件夹中,进行解压,并删除war包。同时去宝塔网站名处,添加端口,给没有域名的小伙伴的指导。放行相应的端口,在宝塔安全和云服务器对应界面。原创 2024-08-18 09:15:01 · 971 阅读 · 0 评论 -
14个SpringBoot优化小妙招
以上就是14个SpringBoot相关的优化小妙招,希望它们能让你的代码不仅跑得快,还写得像首诗一样美。SpringBoot的强大之处不仅仅在于它的简洁和易用,更在于它背后的一套完整的生态体系。掌握这些优化技巧,你将能更加高效地开发SpringBoot应用,享受编码的乐趣。来源: 石杉的架构笔记。原创 2024-08-13 11:08:24 · 1167 阅读 · 0 评论 -
SpringBoot项目如何利用jmh来进行基准测试
1、什么是JMHJMH(Java Microbenchmark Harness)是由OpenJDK团队开发的一个用于Java微基准测试工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级。它提供了一种标准、可靠且可重复的方式来衡量Java代码的性能,包括方法调用、对象创建以及其他类型的 JVM 级别的操作。JMH 通过生成优化过的字节码来确保基准测试不受常见陷阱的影响,如热身不足、垃圾回收干扰、编译器优化等,从而产生更准确的性能指标2、JMH主要使用场景精确测量方法执行时间。原创 2024-07-11 08:52:00 · 1124 阅读 · 0 评论 -
Netty为什么这么快
Netty 是一个高性能、异步事件驱动的NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果.原创 2024-07-09 17:01:35 · 1270 阅读 · 0 评论 -
Tomcat与Netty比较
Tomcat是一个免费的、开放源代码的Web应用服务器,是Apache软件基金会项目中的一个核心项目。它由Apache、Sun和其他一些公司及个人共同开发而成,深受Java爱好者的喜爱,是一款比较流行的Web应用服务器。web容器:完成web服务器的功能。servlet容器:名字为catalina,用于处理Servlet代码。jsp容器:用于将jsp动态网页翻译成Servlet代码。因此,Tomcat是web应用服务器,也是一个Servlet/JSP容器。原创 2024-07-01 16:22:10 · 1479 阅读 · 0 评论 -
盘点延迟任务的11种实现方式
延迟任务在我们日常生活中比较常见,比如订单支付超时取消订单功能,又比如自动确定收货的功能等等。所以本篇文章就来从实现到原理来盘点延迟任务的11种实现方式,这些方式并没有绝对的好坏之分,只是适用场景的不大相同。DelayQueue是JDK提供的api,是一个延迟队列 DelayQueue泛型参数得实现Delayed接口,Delayed继承了Comparable接口。 方法返回这个任务还剩多久时间可以执行,小于0的时候说明可以这个延迟任务到了执行的时间了。这个是对任务排序的,保证最先到延迟时间的任务排到队列的头原创 2024-06-24 11:36:38 · 850 阅读 · 0 评论 -
Java线程基础知识汇总
进程是指在计算机中运行的程序的实例。它是操作系统进行资源分配和调度的基本单位。一个进程可以包含多个线程,每个线程都共享该进程的资源,如内存、文件和打开的网络连接等。每个进程都有自己的地址空间,即独立的内存区域。线程是进程内的执行单元,也是CPU的最小执行单元。一个进程可以包含多个线程,每个线程执行不同的任务。线程共享进程的资源,包括内存、文件和打开的网络连接等。线程之间通过共享内存进行通信,因此比进程间通信更高效。由于线程共享同一进程的地址空间,所以多线程之间的切换更快。原创 2024-06-22 10:50:38 · 839 阅读 · 0 评论 -
多线程与高并发- Synchronized锁
synchronized 是Java语言的一个关键字,它允许多个线程同时访问共享的资源,以避免多线程编程中的竞争条件和死锁问题。synchronized可以用来给对象或者方法进行加锁,当对某个对象或者代码块加锁时,同时就只能有一个线程去执行。这种就是互斥关系,被加锁的区域称为临界区,而里面的资源就是临界资源。当一个线程进入临界区的时候,另一个线程就必须等待。synchronized可以限制对某个资源的访问,但是它锁的并不是资源本身,可以锁住某个对象,只有线程拿到这把锁之后才能够去访问临界资源。原创 2024-06-19 08:08:26 · 1015 阅读 · 0 评论 -
Java:Bean、Entity、Model、Domain区别与作用
比如一个招聘网站的项目,最重要的对象就是简历了,那么简历是怎么存到数据库的呢,不可能用一张表就能存的,因为简历包含基本信息和工作经验,项目经验,学习经验等。entity 的意思就是实体的意思,所以也是最常用到的,entity 包中的类是必须和数据库中的表相对应的,比如说:数据库有个 user 表,字段有 bigint 类型的 id,varchar 类型的姓名,那么 entity 包中的 User 类也必须是含有这两个字段的,且类型必须一致。所以开发的时候,建类建包的命名规范性还是很重要的。原创 2024-06-13 10:47:03 · 1068 阅读 · 0 评论 -
SpringCloud入门教程
①Feign:声明式 REST 客户端–Feign 通过使用 JAX-RS(就是一种使用注解来实现 RESTful 的技术)或 SpringMVC 注解的装饰方式,生成接口的动态实现。旨在自动封装服务调用客户端,减少代码开发量微服务中调用接口常见方式:Ⅰ.通过http方式进行直接调用:即通过http+port的方式调用,可以使用okhttp、httpclient等进行接口的调用与解析,需要关注接口数据流、接口的数据转换等。原创 2024-06-11 08:09:19 · 977 阅读 · 0 评论 -
SSM框架超详细讲解
SSM框架是spring、spring MVC 、和mybatis框架的整合,是标准的MVC模式。标准的SSM框架有四层,分别是dao层(mapper),service层,controller层和View层。使用spring实现业务对象管理,使用spring MVC负责请求的转发和视图管理,mybatis作为数据对象的持久化引擎。1)持久层:dao层(mapper)层作用:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此。原创 2024-06-11 07:55:51 · 6168 阅读 · 0 评论 -
在Linux系统下jar包的操作
【代码】在Linux系统下jar包的操作。原创 2024-06-04 21:57:58 · 212 阅读 · 0 评论 -
Failed to create parent directories for [***/LOG_HOME_IS_UNDEFINED/springboot.***.log
问题原因:无权限创建日志目录。切换到root账号或者执行。原创 2024-06-04 20:56:02 · 174 阅读 · 0 评论 -
Springboot Idea自动生成单元测试用例最佳方案
对于我们开发人员来说,单元测试一定不会陌生,但在各种原因下会被忽视,尤其是在我接触到的项目中,提测阶段发现各种各样的问题,我觉得有必要聊一下单元测试。为了写而写的单元测试没什么价值,但一个好的单元测试带来的收益是非常客观的。问题是怎么去写好单元测试?怎么去驱动写好单元测试?一 我们的现状现状一:多个项目完全没有单元测试。现状二:开发人员没有写单元测试的习惯,或者由于赶业务记录而没有时间去写。现状三:单元测试写成了集成测试,比如容器、数据库,导致单元测试运行时间长,失去了意义。现状四:太依赖集成测试。原创 2024-06-04 09:33:11 · 2736 阅读 · 0 评论 -
单元测试覆盖率
因为目前我们的单元测试主要是针对service层的,如果把controller层的类引入进来,会使单元测试覆盖率的值变低。仅一个测试用例就可以做到100%的覆盖率,比如cal(10.0, 2.0),但并不代表测试足够全面了,还需要考虑当除数等于0的情况下,代码执行是否符合预期。目前发现SonarQube中的报告一是不准,二是指标不全,建议不要查看SonarQube的报告。该报告与IntelliJ IDEA中的报告都是JaCoCo原生的,是准确的。我们目前(在Jenkins中)使用的是JaCoCo。原创 2024-06-04 08:47:22 · 1754 阅读 · 0 评论 -
Springboot中使用Actuator监控项目
在企业应用中除了要了解Spring Boot业务的单元测试、集成测试等功能使用外,在上线之后还需要对线上应用的各项指标(比如,CPU利用率、内存利用率、数据库连接是否正常、用户请求数据等)进行监控和运维。在传统项目中,这些监控和运维往往需要借助其他第三方的工具实现,而在Spring Boot中提供了spring-boot-actuator模块,对于小型项目够用了,可以通过http、jmx、ssh、telnet等形式来监控和管理生产环境。转载 2024-05-31 18:03:43 · 1445 阅读 · 0 评论 -
SpringBoot全局异常处理的三种方式
在本文中,我们介绍了 SpringBoot 中三种处理异常的方式,分别是使用@ControllerAdvice 注解、@ExceptionHandler 注解和 HandlerExceptionResolver 接口。这些方式各有优缺点,开发者可以根据自己的需求选择适合自己的方式来处理异常。作者:吾日三省吾码来源:CSDN原文:https://blog.csdn.net/Dc253061007/article/details/131100724。原创 2024-05-26 17:44:11 · 746 阅读 · 0 评论 -
一张长图透彻理解SpringBoot 启动原理,架构师必备知识
下图代码说明了,Spring在初始化全部 单例Bean以后,会执行 SmartInitializingSingleton 接口。SpringBoot 会在Spring完全启动完成后,才开启Http流量。应该在Spring启动完成后开启入口流量。Rpc和 MQ流量 也应该如此,所以建议大家 在 SmartLifecype 或者 ContextRefreshedEvent 等位置 注册服务,开启流量。例如 Spring CloudEureka服务发现组件,就是在 SmartLifecype中注册服务的!原创 2024-05-26 15:35:53 · 937 阅读 · 0 评论 -
Error resolving template [addUser], template might not exist解决方法
原文:https://blog.csdn.net/qq_45873768/article/details/105637983。@RestController是@ResponseBody和@Controller的组合这个注解。4.html文件是否存在templates目录下,若是存在自定义的目录下则需要配置。检查自己的resource标签中是否加入了以html为后缀的资源文件。版权声明:本文为作者原创文章,转载请附上博文链接!2.检查return中的字符串是否有错误。作者:成为想成为的人。转载 2024-05-26 09:27:12 · 228 阅读 · 0 评论 -
Mockito使用详解
Mockito是一个针对 Java 的单元测试模拟框架,可以简化单元测试过程中测试上下文对象。模拟方法的返回值、模拟抛出异常验证方法被调用次数、验证方法参数类型捕获方法参数值为真实对象创建一个监控(spy)对象不能 Mock 静态方法不能 Mock private 方法不能 Mock final class1)Mockito:简单轻量级的做mocking测试的框架;2)mock对象:在调试期间用来作为真实对象的替代品;转载 2024-05-20 16:39:16 · 3126 阅读 · 0 评论 -
IDEA快捷键以及快速生成代码
lazy 快速生成 判断指定类变量是否==null ,== null 则new 该类变量的 if 语句 代码段。“test”.inst 或者 “test”.instanceof。ifn 快速生成 判断是否==null 的 if 语句 代码段。psfs 快速生成 公有静态常量 String 语句 代码段。“test”.nn 或者 “test”.notnull。serr 快速生成 err打印语句 语句 代码段。prsf 快速生成 私有静态常量 语句 代码段。psf 快速生成 公有静态常量 语句 代码段。转载 2024-05-13 07:39:29 · 1809 阅读 · 0 评论 -
Servlet 详解
是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。转载 2024-05-12 15:02:12 · 90 阅读 · 0 评论 -
SpringBoot的启动器——Spring-boot-starter介绍和常见启动器
Ø spring-boot-starter-jpa:支持 spring 以 jpa方式操作数据库的 jar 包的集合。 Ø spring-boot-starter-redis:支持 redis 键值存储的数据库操作。:支持全栈式的 web 开发,包括了 tomcat 和 springMVC 等 jar包。 Ø 相关依赖的自动导入。 Ø 相关环境的自动配置。原创 2024-05-09 19:36:13 · 2263 阅读 · 0 评论 -
maven 工程结构 和 archetype 模板
如果找不到满意的第三方模板,也可以自己定义一个,这样以后每次生成项目的时候就可以使用自己的模板了想创建自己的模板,这时候我们 Maven 的目录结构又有新要求了,其核心的目录结构如下:1.目录内容,就是我们的模板内容,用来定义模板结构2.把要生成的文件声明在这个文件中,这个文件也可以命名为但是语法也会有变化,我个人比较推荐,感觉语法比较简单现在就演示一下,如何定义一个模板,然后通过这个模板创建项目1. 按照目录要求,创建模板项目手动创建或通过已有模板。转载 2024-05-09 12:36:26 · 259 阅读 · 0 评论 -
浅聊C#和Java的ORM底层框架
ADOADO(ActiveX Data Objects)并不是一个ORM(对象关系映射)框架,而是一组用于访问数据的组件和接口。ADO 提供了一种在应用程序中访问和操作数据库的方式,它是面向连接的、基于组件的框架。ORM 框架则是一种用于简化数据库操作的技术,它通过将数据库表和对象之间进行映射,使得开发人员可以使用面向对象的方式来操作数据库。一些常见的 ORM 框架包括 Entity Framework、Hibernate 等。转载 2024-05-06 12:13:25 · 140 阅读 · 0 评论 -
使用ORM操作SQL数据库(JPA、Mybatis)
JPA(Java Persistence API)是Java的持久化API,用于对象的持久化。其免去了使用JDBCTemplate开发的编写工作,通过简单约定好接口方法的规则自动生成相应的JPQL语句,然后映射成POJO对象。将数据库中的表和内存中的对象建立映射关系。SpringData是Spring的一个子项目,旨在统一和简化各类型数据的持久化存储方式,其集成了各种关系型数据和。JPA是一个规范化接口,其封装了HIbernate的操作作为默认实现,让用户可以没有任何配置即可完成数据库的操作。转载 2024-05-06 10:56:03 · 108 阅读 · 0 评论 -
把 Spring Boot 项目从 18.18M 瘦身到 0.18M,部署超级快!
SpringBoot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(SpringCloud等),那就更大了。这个时候如果想要对线上运行工程有一些微调,则非常痛苦。转载 2024-05-01 08:58:35 · 36 阅读 · 0 评论 -
一文读懂堆与栈的区别
堆(Heap)与栈(Stack)是开发人员必须面对的两个概念,在理解这两个概念时,需要放到具体的场景下,因为不同场景下,堆与栈代表不同的含义。一般情况下,有两层含义:(1)程序内存布局场景下,堆与栈表示两种内存管理方式。(2)数据结构场景下,堆与栈表示两种常用的数据结构。栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈。int b;//栈//栈char *p2;//栈。转载 2024-04-26 10:07:56 · 60 阅读 · 0 评论 -
一篇文章掌握整个JVM,JVM超详细解析
程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。GC是不定时去堆内存中清理不可达对象。不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行清楚那个对象,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。转载 2024-04-26 09:35:11 · 517 阅读 · 0 评论 -
Spring、SpringBoot、SpringCloud三者的区别
Spring 是一个全功能的企业级 Java。转载 2024-04-22 08:09:55 · 461 阅读 · 0 评论 -
[转]深入浅出讲解Spring IOC和DI的区别
很多人都会把ioc和di说成同一个东西,其实IOC和DI虽然在概念上可以笼统地视为同一事物,但其本质上存在区别。控制反转)从容器的角度描述,而DI(Dependency Injection,依赖注入)则从应用程序的角度描述。换言之,IOC是依赖倒置原则的设计思想,而DI则是该原则的具体实现方式。因此,我们希望能够更加严谨地区分这两个概念,以更好地理解和应用它们。转载 2024-04-10 10:44:56 · 71 阅读 · 0 评论 -
手把手教你用 Jenkins 自动部署 SpringBoot!
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念可以总结为三点:持续集成持续交付持续部署CI/CD 主要针对在集成新代码时所引发的问题(俗称"集成地狱")。为什么会有集成地狱这个“雅称”呢?大家想想我们一个项目部署的过程,拉取代码->构建->测试->打包->部署,如果我们经常需要部署项目,特别是在微服务时代,服务特别多的情况下,不停的测试打包部署,那估计得有个人一整天专门做这事了,而这事又是繁琐的重复无意义的。...转载 2022-08-04 11:39:19 · 779 阅读 · 0 评论 -
Java 日志格式规范
在程序中写日志是一件非常重要,但是很容易被开发人员忽视的地方。写好程序的日志可以帮助我们大大减轻后期维护压力。在实际的工作中,开发人员往往迫于巨大时间压力,而写日志又是一个非常繁琐的事情,往往没有引起足够的重视。开发人员应在一开始就养成良好的日志撰写习惯,并且应在实际的开发工作中为写日志预留足够的时间。...转载 2022-08-01 11:00:28 · 1020 阅读 · 0 评论 -
初级必备:单例模式的7个问题
单例模式(SingletonPattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例4、隐藏所有的构造方法**目的**保证一个类仅有一个实例,并提供一个访问它的全局访问点。...转载 2022-08-01 09:16:51 · 676 阅读 · 1 评论 -
深入解析volatile关键字
volatile可以使得在多处理器环境下保证了共享变量的可见性,那么到底什么是可见性? 一般在单线程的环境下,如果向一个变量先写入一个值,然后在没有写干涉的情况下读取这个变量的值,那么这个时候读取到的这个变量的值应该是之前写入的那个值。 这本来是一件很正常的事件,但是在多线程环境下,读和写发生在不同的线程中的时候,可能会出现以下的情况:读线程不能及时的读取到其他线程写入的最新的值。这就是所谓的可见性,为了实现跨线程写入的内存可见性,必须要使用一些机制来实现,而volatile就是这样的一种机制。......转载 2022-08-01 08:42:10 · 261 阅读 · 0 评论 -
并发编程10大坑,你踩过几个?
对于从事后端开发的同学来说,并发编程肯定再熟悉不过了。说实话,在java中并发编程是一大难点,至少我是这么认为的。不光理解起来比较费劲,使用起来更容易踩坑。不信,让继续往下面看。今天重点跟大家一起聊聊并发编程的10个坑,希望对你有帮助。.........转载 2022-08-01 07:36:44 · 291 阅读 · 1 评论