Java 技术栈
文章平均质量分 91
Java 技术栈
独泪了无痕
投身于天地这熔炉,一个人可以被毁灭,但绝不会被打败!一旦决定了心中所想,便绝无动摇。迈向光明之路,注定荆棘丛生,但从不妨碍我继续向前。自己选择的路,即使再荒谬、再艰难,跪着也要走下去!放弃,曾令人想要逃离,但绝境重生方为宿命。若结果并非所愿,那就在尘埃落定前奋力一搏!
展开
-
JDBC常见的几种连接池使用(C3P0、Druid、HikariCP 、DBCP)
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。连接池技术尽可能多地重用了消耗内存的资源,大大节省了内存。通过使用连接池,将大大提高程序运行效率。常用的数据库连接池有C3P0、DBCP、Druid及HikariCP等几种,以下分别对这几种连接池进行简单说明。 数据库连接池(Connection Pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地分配池中的连接进行申请、使用、释放。由于数据库连接的创建和断原创 2024-06-16 04:30:00 · 851 阅读 · 0 评论 -
一文搞懂【搜索算法 - 二分查找】
大家都应该玩过猜数字的游戏吧!给定一个数字的范围随机抽取一个数字,然后玩家轮流猜数字,猜错时告诉玩家结果数字是大于猜测数字还是小于。那么,该怎么猜数字最快得出答案呢?当然就是折半查找了。为什么说这样效率最高呢?因为每一次选择数字,无论偏大还是偏小,都可以让剩下的选择范围缩小一半。原创 2024-05-23 06:14:37 · 1173 阅读 · 0 评论 -
【老生常谈】一文理解Java中的各种锁
本文Java中常用的锁以及常见的锁的概念进行了基本介绍,限于篇幅以及个人水平,没有在本篇文章中对所有内容进行深层次的讲解。其实Java本身已经对锁本身进行了良好的封装,降低了小伙伴们在平时工作中的使用难度。在编写多线程程序时,需要特别注意共享资源的访问和操作,避免出现竞态条件等问题,确保程序的正确性和稳定性。同时,也需要注意多线程的性能问题,合理使用锁机制,避免过多的锁竞争导致程序的性能下降。参考资料Java中的锁。原创 2024-05-18 18:41:47 · 965 阅读 · 0 评论 -
分布式锁-快速入门
由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性、可用性和分区容错性,最多只能同时满足两项”,故此很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。原创 2024-05-07 17:34:50 · 697 阅读 · 0 评论 -
volatile 和 synchronzied 的区别
提起并发编程,我们不得不说起volatile和这两个关键字,这两个关键字也是面试中常常被问到的,下面我们分别介绍一下这两个关键字以及二者的异同。首先需要理解线程安全的两个方面:执行控制和内存可见,执行控制的目的是控制代码执行(顺序)及是否可以并发执行,内存可见控制的是线程执行结果在内存中对其它线程的可见性。把今天最好的表现当作明天最新的起点…….~投身于天地这熔炉,一个人可以被毁灭,但绝不会被打败!一旦决定了心中所想,便绝无动摇。原创 2024-05-05 10:45:40 · 796 阅读 · 0 评论 -
04、创建型-建造者--组装复杂的实例
无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车。而在实际开发工作中,我们经常碰见的 XxxBuilder 的类,通常都是建造者模式的产物。通过建造者模式对其进行设计与描述,建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。原创 2024-04-27 17:59:19 · 865 阅读 · 0 评论 -
关于Spring Aop的通知类型
Spring提供所有类型的通知,个人推荐使用尽可能简单的通知类型来实现需要的功能。例如,如果只是需要一个方法的返回值来更新缓存,最好使用后置通知而不是环绕通知,尽管环绕通知也能完成同样的事情。用最合适的通知类型可以使得编程模型变得简单,并且能够避免很多潜在的错误。比如,不需要在JoinPoint上调用用于环绕通知的proceed()方法,就不会有调用的问题。原创 2024-04-27 12:55:27 · 1024 阅读 · 1 评论 -
03、创建型-抽象工厂--将实例的生成交给子类
本节要介绍的抽象工厂模式将考虑多等级产品的生产,将同一个具体工厂所生产的位于不同等级的一组产品称为一个产品族,简单地说是抽象工厂可以创建具体工厂,由具体工厂来产生具体产品,抽象工厂中方法个数不同,产品的个数也不同。其中,抽象工厂创建其他工厂,提供了创建一系列相关或者相互依赖产品的接口,它包含多个创建产品的方法,可以创建多个不同等级的产品,而无需知道他们的具体类。而具体工厂主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。原创 2024-04-24 10:23:31 · 529 阅读 · 0 评论 -
02、创建型-工厂模式--将实例的生成交给子类
工厂二字想必大家都不陌生,工厂就是用来建造东西的,我们市面上买的东西比如水杯、玩具、汽车等等都是从工厂生产的,那我们需不需要知道它们是如何生产出来的呢?当然不需要,商家从工厂中直接提货,我们就可以购买了,完全不知道它是如何生产的,这就是工厂方法模式,工厂模式是平时开发过程中最常见的设计模式。原创 2024-04-23 12:57:48 · 858 阅读 · 0 评论 -
01、创建型-单例模式--只有一个实例
单例模式是设计模式中最简单但又最常用的的设计模式之一,是很多人学的第一个设计模式。引用百度百科的定义:单例模式创建的类在当前进程中,保证一个类只会被实例化一次,并提供了全局访问点,使用的时候通过单例提供的方法来获取实例。在确保线程安全的前提下,很多时候我们只需要同一个类的一个实例即可,而不是在任何使用的地方都实例化一个新对象,因此只能生成一个实例的模式就是单例模式。单例模式(Singleton Pattern) 是 Java 设计模式中最简单的设计模式之一,是指在内存中只会且仅。原创 2024-04-23 12:32:22 · 1125 阅读 · 0 评论 -
项目构建基础:统一结果返回
在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,前后端的工作职责越来越明确。前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,后端服务器接收请求,进行业务处理,返回数据给前端。我们可以参考HTTP请求返回的状态码这样的设计,这样的好处就把错误类型归类到某个区间内,前端开发人员在得到返回值后,根据状态码就可以知道,大概什么错误,再根据message相关的信息描述,可以快速定位。@Getter/** 成功状态码 */原创 2024-01-26 03:00:00 · 491 阅读 · 0 评论 -
前后端分离必备的接口规范
目前现有前后端开发模式:“后端为主的MVC时代”,如下图所示:代码可维护性得到明显好转,MVC 是个非常好的协作模式,从架构层面让开发者懂得什么代码应该写在什么地方。为了让 View 层更简单干脆,还可以选择 Velocity、Freemaker 等模板,使得模板里写不了 Java 代码。看起来是功能变弱了,但正是这种限制使得前后端分工更清晰。前端开发重度依赖开发环境,开发效率低。这种架构下,前后端协作有两种模式:一种是前端写demo,写好后,让后端去套模板。原创 2024-01-11 11:35:05 · 1406 阅读 · 0 评论 -
老生常谈之慎用 BigDecimal
在项目中发现开发小组成员在写程序时,对于 Oracle 数据类型为 Number 的字段、mysql中的decimal字段,在实体映射类型中,有的人用 Double,有的人用 BigDecimal,没有一个统一规范,为此我在这里总结记录一下。BigDecimal,相信对于很多人来说都不陌生,很多人都知道他的用法,这是一种 java.math 包中提供的一种可以用来进行精确运算的类型。原创 2024-01-03 00:04:18 · 1062 阅读 · 0 评论 -
OSHI-操作系统和硬件信息库
谈到监控,最快捷的还是使用Java本身进行对JVM和操作系统的监控,方便快捷又可靠。OSHI(Operating System and Hardware Information)是Java的免费的基于JNA的(本机)操作系统和硬件信息库。它提供了一组简单易用的API,可以用于检索和监控诸如操作系统类型、处理器信息、内存使用情况、硬盘信息、网络接口等系统和硬件相关的数据。获取操作系统信息:可以获取操作系统的名称、版本、构建信息、位数等。还可以获取操作系统的启动时间、系统负载、当前进程数等信息。原创 2023-11-29 19:05:45 · 648 阅读 · 0 评论 -
傻瓜式Java操作MySQL数据库备份
数据库备份是开发工作中经常要做的事情,好处是mysql提供了一个非常好的命令 mysqldump,直接调用它就可以将数据以sql文件的形式备份出来。但是直接写命令非常不方便,遇到定时备份或者指定备份那么就需要代码调用。在进行导出的时候,需要注意命令语句的运行环境,如果已经将mysql安装路径下的bin加入到系统的path变量中,那么在导出的时候可以直接使用命令语句,否则,就需要在执行命令语句的时候加上命令所在位置的路径,即mysql安装路径想的bin下的mysqldump命令。原创 2023-09-29 22:25:36 · 660 阅读 · 2 评论 -
【知识回顾】Java常用类库-Java Runtime
Java Runtime 类是 Java 标准库中的关键类之一,它提供了对当前Java虚拟机实例的访问和控制,允许程序动态地修改和管理运行时环境。每个Java应用程序都有一个Runtime类实例,使得程序能够与其运行的环境相连接。Runtime类所在包为java.lang包,因此在使用的时候不需要进行导包。并且Runtime类被public修饰了,因此该类是可以被继承的。原创 2023-09-30 12:20:49 · 450 阅读 · 0 评论 -
【考古】Java8 集合工具类Arrays
在 Java 的util包中提供了一个Arrays工具类用来操作数组的,它提供了许多的静态方法,主要包含了操纵数组的各种方法,例如数组所有元素进行排序,按从小到大的顺序、查找元素等。使用时导包,并使用Arrays.方法()进行调用方法。本文主要介绍了Arrays工具类的导包,举了一些常用方法示例。这些方法通过案例实现帮助理解,希望大家通过本文的学习,对你有所帮助!原创 2023-08-03 09:11:21 · 271 阅读 · 0 评论 -
FastJson 解析神器JsonPath 使用手册
正如XPath对XML的解析一样,JSONPath的定义是基于fastjson的json路径解析,对JSON文档的一种解析工具。通过JSONPath可以轻松的对JSON文档获取指定“路径”的数据,在非常复杂的json结构中,对于一些获取和判断操作,不需要层层的去get,可以通过简洁的JsonPath表达式精准找到需要的部分。原创 2023-07-24 08:39:12 · 5819 阅读 · 1 评论 -
Jackson注释的使用
Jackson提供了一系列注解,可以使用这些注解来设置将JSON读入对象的方式或从对象生成什么JSON的方式,下面介绍一些常用的注解。原创 2022-11-08 22:56:44 · 977 阅读 · 0 评论 -
Java Enum 枚举帮助类
讲真的,Java的枚举类提供的方法太少了,Enum只有两个valueOf可以搞,如果碰上需要传入枚举类型的值,获取枚举类对象或者枚举类型名称的时候,只能干瞪眼,或者循环比对。最近项目就遇到这种,而且感觉以后以及别人都不会少遇到,所以就写了个帮助类,希望以后能用上吧。原创 2022-10-05 09:45:05 · 264 阅读 · 0 评论 -
浅谈单元测试 Junit5
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。JUint是Java编程语言的单元测试框架,用于编写和运行可重复的自动化测试。原创 2022-09-11 19:22:12 · 680 阅读 · 0 评论 -
浅谈单元测试 Junit4
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。JUint是Java编程语言的单元测试框架,用于编写和运行可重复的自动化测试。提供注解来识别测试方法。原创 2022-09-11 19:07:42 · 778 阅读 · 0 评论 -
IntelliJ IDEA 快捷键,使用起来就是方便
IDEA对新手来说难,可能其中一个原因就是快捷键组合多而且复杂但是它也很全,基本所有功能都可以通过快捷键来完成,如果你掌握了所有IDEA的快捷键使用,那么你完全可以丢掉鼠标,而且不影响开发效率,达到开发事半功倍的效果。一、修改快捷键 在新版本的欢迎界面中可以直接进行字体设置,点击:Customize,在Keymap下拉框中进行选择。 如下图所示:欢迎界面点击:Customize -> All settings… -> Keymap下拉框中进行选择。 如下图所示:二、Intel.原创 2022-04-19 22:21:19 · 1432 阅读 · 0 评论 -
Sourcetree 虽然不咋的好用,但了解一些基本使用也算可以
一、基本介绍1.1 基本介绍 Sourcetree 是一款Windows 和Mac OS X 下免费的 SVN、Git 客户端,同时也是 Mercurial 和 Subversion 版本控制系统工具。Sourcetree 支持创建、克隆、提交、push、pull 和合并等操作。SourceTree 拥有一个精美简洁的界面,无需使用命令行,可以处理托管和本地存储库,主要依赖可视化界面操作,省去繁琐复杂不容易理解的终端命令,大大简化了开发者与代码库之间的 Git 操作方式,这对于那些不熟悉Git命令的开原创 2022-04-05 15:31:03 · 1856 阅读 · 0 评论 -
还原最本质的JDBC轻量级封装的工具包
一、概述1.1 前言 关于Apache的DbUtils中间件或许了解的人并不多,大部分开发人员在生成环境中更多的是依靠Hibernate、Ibatis、Spring JDBC、JPA等大厂提供的持久层技术解决方案,或者是企业内部自己研发的持久层技术。但无论如何,使用这些技术的初衷和本质都是为了能够减少企业开发成本,提高生产效率,降低耦合。 放眼企业级项目,Hibernate等ORM产品是首选,而互联网领域,大部分开发人员往往并不会在生产环境中上这些ORM技术,原因很简单,要的就是效率,其次都不重.原创 2021-08-22 21:14:59 · 614 阅读 · 1 评论 -
Apache Commons IO 也就那么回事儿吧
一、概述 Apache Commons IO 是Apache Commons的组件,它们源自Java API并提供各种用于文件IO的常见操作的实用程序类,涵盖各种用例,可以大大简化我们处理io流和操作文件的代码。Java IO操作是开发中比较常用的技术,但是如果每次都使用原生的IO流来操作会显得比较繁琐。例如,普通地读取一个网页的源代码的代码可能如下:InputStream in = new URL("http://commons.apache.org").openStream();try { .原创 2021-08-14 12:15:36 · 813 阅读 · 0 评论 -
回顾过往,让让我们一起考古Apache Commons Validator
一、概述 在基于B/S架构实现的Web应用系统开发实现中,为了能够获得正确和有效的用户表单请求的参数值,在进行业务处理之前都需要对接收的表单数据进行检查和验证。有时编程花的时间最多的就是考虑各种异常情况带来的问题,反而正常的功能很快就可以开发完,参数非法校验是一个普通不能再普通的需求了,如果不对请求参数校验,假如参数随便传递,那可能会带来一系列问题。 为了简化开发人员的服务器端程序验证的代码,实现和减少对通用验证逻辑的代码实现工作,在Commons组件集中还提供有一个Commons-Validat.原创 2021-08-10 20:37:05 · 1206 阅读 · 0 评论 -
Apache Commons Codec 也就那样吧!!!
一、简介 commons-codec是Apache开源组织提供的用于摘要运算、编码解码的包,常见的编码解码工具Base64、MD5、Hex、SHA1、DES等。常规加密解密算法它由一组实用程序和一个用于编码和解码文本和二进制数据的简单框架组成。 Apache Commons Codec 编解码器的形成是为了将开发工作集中在一种确定的 Base64 编码器实现上。在该编解码器开发之时,大约有 34 种不同的 Java 类用于处理遍布 Apache 软件基金会 CVS 存储库的 Base64 编码。虽.原创 2021-08-04 20:15:50 · 2067 阅读 · 0 评论 -
回顾过往,让让我们一起看看Java 监控文件系统
简介1.1 前言 每当文件发生任何更改时,它们都会自动刷新——这是大多数应用程序中常见的非常普遍的问题。每个应用程序都有一些配置,预期该配置文件中的每次更改都会刷新。解决该问题的过去方法包括使用Thread,根据配置文件的“最后更新时间戳”定期轮询文件更改。Java 从 JDK1.7 开始引入了一项出色的功能:WatchService 类,可用于监控文件系统的变化。WatchService 看作是文件监控器,通过操作系统原生文件系统来运行,可以监控系统是所有文件的变化,这种监控是无需遍历、无需比较的.原创 2021-07-24 11:33:22 · 302 阅读 · 0 评论 -
Java计时新姿势StopWatch
文章目录一、背景二、spring 用法2.1 初遇2.2 源码2.3 注意事项三、apache 用法四、最后利用StopWatch监控Java代码运行时间和分析性能一、背景 有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,一般我们检测某段代码执行的时间,都是以如下方式来进行的:public static void main(String[] args) { Long startTime = System.curre.原创 2021-03-04 22:30:11 · 5097 阅读 · 4 评论 -
OkHttp是一个优秀的网络请求框架
一、OkHttp介绍HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个优秀的网络请求框架,它有以下默认特性:支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接连接池减少请求延时透明的GZIP压缩减少响应数据的大小缓存响应内容,避免一些完全重复的请求 :@@@. .@@@@@@@: +@@ `@@ @@` @@ @@ .@@@@'@@@@: +@.原创 2020-12-29 17:23:49 · 317 阅读 · 0 评论 -
吐血整理的Google Guava
一、概述 Guava 是由Google开发的基于Java的开源库,包含许多Google核心库,它有助于最佳编码实践,并有助于减少编码错误。它为集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等提供实用程序方法。<!-- https://mvnrepo原创 2020-12-21 23:35:59 · 1931 阅读 · 0 评论 -
Java Calendar的使用,一看就会的那种
一、Calendar类 简介 在java中时间类主要有Date、Calendar,Java官方推荐使用Calendar来替换Date的使用,Calendar与Date之间可以自由的进行转换,转换的纽带是time。 java.util.Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 19.原创 2020-12-14 16:22:54 · 104 阅读 · 0 评论 -
不在手写数据文档,screw实现数据库文档自动生成
一、简介在企业级开发中,我们经常需要编写数据库表结构文档的。从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人。为了不重复 CV 操作,抱着一丝希望开始在GitHub里找,看看有没有什么工具可以用,结果就真的发现了宝藏,screw(螺丝钉),居然可以生成数据库文档,优秀啊~。 screw提供了多种文件类型和多种模板的自动生成工具,如下所示:.原创 2020-12-10 23:16:32 · 255 阅读 · 0 评论 -
WebSocket 解读及实现
WebSocket 解读1.1 WebSocket 简介WebSocket 协议W在2008年诞生,2011年成为国际标准,所有浏览器都已经支持了。其是基于TCP的一种新的网络协议,是 HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议,它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完.原创 2020-12-07 21:40:08 · 4174 阅读 · 0 评论 -
Git 学习笔记
起步起步 - 关于版本控制 什么是“版本控制”?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。在我们日常工...原创 2019-11-19 14:57:00 · 78 阅读 · 0 评论 -
34张架构史上最全技术知识图谱
1.1 架构师图谱1.2 Java架构师图谱1.3 微服务架构秘籍1.4 一致性图谱1.5 互联网大流量的方法1.6 安全秘籍1.7 阿里巴巴...原创 2019-03-17 22:32:00 · 231 阅读 · 0 评论 -
JavaMail API的使用,一看就会的那种
文章目录一、概述二、邮件协议2.1 什么是SMTP?2.2 什么是IMAP?2.3 什么是POP3?三、核心类3.1 Session3.2 Message3.3 Address3.4 Authenticator3.5 Store3.6 Transport3.7 Folder四、邮件操作4.1 准备工作4.2 发送邮件4.2 收取邮件4.3 回复邮件4.5 转发邮件4.6 删除邮件4.7 邮件文件夹管理一、概述 JavaMail API 顾名思义,提供给开发者处理电子邮件相关的编程接口,它是Sun发布的原创 2020-11-22 18:44:48 · 1538 阅读 · 1 评论