为自己的应用编写单元测试是一个很好的习惯。在 Java 开发中最流行的测试工具非JUnit莫属,它已经成为Java单元测试的事实标准。Spring Boot测试模块不仅集成JUnit框架,还提供了许多实用程序和注释,方便我们测试应用。 1. 添加依赖 在 pom.xml 文件中引入 spring-boot-starter-test <dependen ......
211
0
0
2024-01-14
使用JavaCV做人脸识别上一文,我们讲到的是使用JavaCV拉取笔记本摄像头画面,这次,我们基于上一次的基础,加工人脸识别功能。原理很简单,拉取摄像头每一帧,然后对每一帧的画面进行识别,看里面是否有人脸在里面,有的话就对人脸进行绘框,把红框绘制在画面上,然后返回给前面进行展示。开始向ChatGPT提问人脸识别功能,需要借助一个叫haarcascade_fr ......
292
0
0
2024-01-13
一.前言今天来分享一下Bean在初始化时和Bean销毁时我们可以做的一些操作,如果只是单纯做CRUD开发,那么这些操作基本上不可能遇到,如果依赖于Spring来做一些框架层面的开发或者中间件开发,那么这些操作是很常用的,在Bean进行初始化或者销毁的时候,如果我们需要做一些操作,比如加载和销毁一些资源或者执行一些方法时,那么就可以使用Spring提供的一些扩 ......
186
0
0
2024-01-13
Flowable 工作流引擎 框架介绍 一个 Java 编写的轻量级业务流程引擎,为开发人员、系统管理员和业务用户提供工作流和业务流程管理(BPM)平台。 不仅包括BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理、微服务API等一系列功能,是一个服务平台。 可用于部署BPMN 2.0流程定义,创建这些流程定义的流程实例,进 ......
292
0
0
2024-01-13
前言今天分享一个SpringBoot的内嵌Web容器,在SpringBoot还没有出现时,我们使用Java开发了Web项目,需要将其部署到Tomcat下面,需要配置很多xml文件,SpringBoot出现后,就从繁琐的xml文件中解脱出来了,SpringBoot将Web容器进行了内嵌,我们只需要将项目打成一个jar包,就可以运行了,大大省略了开发成本,那么S ......
214
0
0
2024-01-13
前言好久没有更新Spring了,今天来分享一下Spring的事件监听机制,之前分享过一篇Spring监听机制的使用,今天从原理上进行解析,Spring的监听机制基于观察者模式,就是就是我们所说的发布订阅模式,这种模式可以在一定程度上实现代码的解耦,如果想要实现系统层面的解耦,那么消息队列就是我们的不二选择,消息队列本身也是发布订阅模式,只是不同的消息队列的实 ......
201
0
0
2024-01-13
Spring MVC在Java web领域中首屈一指,而作为云原生时代的标准语言之一,Go语言自然也衍生出来不少优秀的web框架。今天给大家分享5个流行的基于Go语言的web框架,他们有什么区别,应该如何选择呢?别着急,往下看。Gin项目名称:gin-gonic/gin项目Star数:69.2K首先介绍的是Gin框架,它是一个轻量级的Web框架,具有快速的路 ......
244
0
0
2024-01-13
摘要:从太空探索到基因组学,从反向编译器到机器人控制器, Java 都是当今世界的核心。下面将介绍几个从众多 Java 应用程序中脱颖而出的优秀应用。 Java 的故事始于 1991 年,当时 Sun Microsystems 试图将其在计算机工作站市场的领先地位扩展到新兴且发展迅速的个人电子产品市场。几乎没有人预料到 Sun 即将创建的编程语言会使计算大 ......
185
0
0
2024-01-13
一、前言本文章是关于设计模式中的建造者模式的,也称构建者模式/生成器模式,英文我们称之为Builder Pattern。在开展讲解之前,我们先把该模式的定义了解一下。建造者模式的定义:该模式可以实现产品的封装构造过程,并允许按步骤构造产品。该模式的优点:可以将一个复杂对象的创建过程封装起来,允许对象通过多个步骤来创建,并且可以改变过程;它也可以向客户隐藏产品 ......
212
0
0
2024-01-13
一、概述CountDownLatch是一个多线程控制工具,用来控制线程的等待。设置需要countDown的数量num,然后每一个线程执行完毕后,调用countDown()方法,而主线程调用await()方法执行等待,直到num个子线程执行了countDown()方法 ,则主线程解除阻塞,开始继续执行。其具体操作流程类似火箭发射,我们通过倒数三二一(3个子线程 ......
214
0
0
2024-01-13
我们经常感叹“面试造火箭,进厂拧螺丝”,日常开发中大部分工作都是写简单的业务代码。实际上,写好业务代码也是有技术难度的,并不是所有人都能写出可读性较高的业务代码。 可读性高的代码能够降低后续的维护成本,提升后续开发的效率。 接下来和大家分享下我的经验,这些方法能够在一定程度上提升代码的可读性。 命名Martin Fowler曾经在一篇 ......
185
0
0
2024-01-12
1. HBase回顾1.1. HBase的历史 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于Bi ......
333
0
0
2024-01-12
序本文主要研究一下ShardingSphere进行sql重写的原理prepareStatementorg/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnection.javapublic final class ShardingSphereConnection exte ......
240
0
0
2024-01-10
本文最后更新于 6 天前,其中的信息可能已经有所发展或是发生改变。Lambda 表达式是一种匿名函数,它可以作为参数传递给方法或存储在变量中。在 Java8 中,它和函数式接口一起,共同构建了函数式编程的框架。什么是函数式编程函数式编程是一种编程范式,也是一种思想。它将计算视为函数求值的过程,并强调函数的纯粹性和不可变性。在函数式编程中,函数被视为一等公民, ......
222
0
0
2024-01-09
本文最后更新于 2 天前,其中的信息可能已经有所发展或是发生改变。本篇为深入理解 Java 虚拟机第二章内容,推荐在学习前先掌握基础的 Linux 操作、编译原理、计算机组成原理等计算机基础以及扎实的 C/C++ 功底。该系列的 GitHub 仓库:https://github.com/Doge2077/learn-jvm运行时数据区域Java 虚拟机在执行 ......
232
0
0
2024-01-09