Java基础
文章平均质量分 89
一些java的常用知识以及开发点
魅Lemon
hello, everybody
展开
-
Java之SPI机制详解
SPI 即,字面意思就是:“服务提供者的接口”,专门提供给服务提供者或者扩展框架功能的开发者去使用的一个接口。SPI 将服务接口和具体的服务实现分离开来,将服务调用方和服务实现者解耦,能够提升程序的扩展性、可维护性。修改或者替换服务实现并不需要修改调用方。例如SpringBoot 的自动装配就是基于spring 的 SPI 扩展机制和EnableAutoConfiguration实现的是 JDK 提供的一个工具类, 位于包下。JDK 官方注释:**一种加载服务实现的工具。**再往下看,我们发现这个类是一个。原创 2023-12-13 14:40:41 · 2070 阅读 · 0 评论 -
Java验证码
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序验证码的作用:防止刷票、论坛灌水、刷页防止黑客恶意破解密码,盗取用户数据验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码数据化盗取。原创 2023-03-04 21:04:57 · 3326 阅读 · 2 评论 -
Java高级技术之Gradle
Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的 build 脚本文件;官网地址:作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的,所以虽然目前市面上常见的项目构建工具有。原创 2022-10-28 19:07:12 · 3383 阅读 · 0 评论 -
Jackson序列化与反序列化
Jackson被认为是"Java JSON库"或"Java最好的JSON解析器"。或简单地被当作"JSON for Java"。不仅如此,Jackson 还是一套用于 Java(和 JVM 平台)的数据处理工具,包括流式JSONparser / generator库、匹配 data-binding 库(POJO和JSON相互转换),还有一个额外的 data format 模块来处理Avro,BSON,CBOR,CSV,Smile,,Protobuf,TOML,XML,YAML。原创 2022-09-28 15:10:21 · 2610 阅读 · 0 评论 -
Java实现文件变化监听
在平时的开发过程中,会有很多场景需要实时监听文件的变化,如下通过实时监控mysql的binlog日志实现数据同步修改配置文件后,希望系统可以实时感知应用系统将日志写入文件中,日志监控系统可以实时抓取日志,分析日志内容并进行报警类似ide工具,可以实时感知管理的工程下的文件变更定时任务+File#lastModified在Java7中新增了,通过它可以实现文件变动的监听。只能监听当前目录下的文件和目录,不能监视子目录。commons-io对实现文件监听的实现位于;...原创 2022-07-29 20:22:14 · 6147 阅读 · 0 评论 -
JSON常用注解
在使用Java开发时,一定会接触到Json,而选择前后端开发都是使用Json进行数据传输,以及和数据库打交道的Bean类,相信你一定遇到过字段类型不同而导致的烦恼,而使用这些注解可以很方便进行字段转换、字段忽略等等这里我使用Spring自带的Jackson和阿里巴巴的FastJson作为记录FastJson提供了4种注解,分别是@JSONType,,@JSONField,......原创 2022-07-29 20:21:10 · 5318 阅读 · 0 评论 -
Java打印文件
在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java 提供的打印功能一直都比较弱。实际上最初的 jdk 根本不支持打印,直到 jdk1.1 才引入了很轻量的打印支持。实际上,SUN 公司也一直致力于 Java 打印功能的完善,而 Java2 平台则终于有了一个健壮的打印模式的开端, jdk1.4 则提供了一套完整的"Java 打印服务 API" (Java Print Service API),它对已有的打印功能是积极的补充。这里打印对象主要是图片和pdf文件两种常见形式,其他office文件原创 2022-07-11 20:05:36 · 3018 阅读 · 0 评论 -
Java之BigDeciaml小记
文章目录一、BigDecimal概述二、BigDecimal常用构造函数1、常用构造函数2、使用问题分析三、BigDecimal常用方法详解1、常用方法2、BigDecimal大小比较四、BigDecimal格式化五、BigDecimal常见异常六、BigDecimal总结1、总结2、工具类一、BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更原创 2022-05-25 19:41:42 · 3139 阅读 · 0 评论 -
Java命令行编译打包
文章目录一、简介1、介绍2、Jar简介3、Java命令行3.1 jar相关命令3.2 Java相关命令二、简单编译打包实战1、简单编译执行2、Jar包方式运行2.1 普通方式执行2.2 可执行的 jar 包一、简介1、介绍本文主要记录jar与java相关命令介绍以及Java 命令行编译、执行、打包等操作2、Jar简介https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.htmlJava归档文件格式(Java原创 2022-02-13 18:59:49 · 2631 阅读 · 0 评论 -
Java IO流
文章目录一、Java IO流基础1、流式输入/输出原理2、输入流/输出流3、节点流/处理流3.1 节点流3.2 处理流二、节点流讲解1、InputStream(输入流)2、OutputStream(输出流)3、Reader流4、Writer流三、 处理流讲解1、**缓冲流(Buffering)**2、转换流3、数据流4、打印流(Print)5、对象流(Object)四、总结一、Java IO流基础1、流式输入/输出原理在java程序中,对于数据的输入/输出操作以"流"(stream)方式进行;J2SD原创 2022-02-02 22:16:22 · 145 阅读 · 0 评论 -
Java集合框架
Java集合框架一、简介1、集合框架介绍Java集合框架提供了一套性能优良,使用方便的接口和类,他们位于java.util包中。容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表2、相关容器介绍2.1 Set相关TreeSet基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)原创 2022-02-02 21:57:22 · 3313 阅读 · 1 评论 -
JUC并发编程
文章目录一、简介1、JUC介绍2、进程与线程2.1 异同介绍2.2 线程状态2.3 线程wait/sleep区别3、并行与并发二、Lock接口与synchronized1、synchronized关键字2、Lock接口2.1 介绍2.2 lock常用方法2.3 Lock实战3、线程间的通信4、**synchronized与lock的异同**三、多线程锁与并发1、多线程锁结论2、并发同步2.1 JMM介绍2.2 volatile2.3 JUC原子类工具3、公平锁与非公平锁4、可重入锁5、自旋锁(spinloc原创 2021-12-30 09:51:13 · 476 阅读 · 0 评论 -
Java注解与反射
文章目录一、注解Annotation1、注解介绍2、内置注解3、元注解4、自定义注解二、反射Refection1、静态 VS 动态语言2、反射概述1、概述2、功能与优缺点3、反射Class类1、Class详解2、反射常用API3、**获取Class类的多种方式**4、Java内存模型1、Java内存划分2、类的加载过程3、分析类初始化4、类加载器的作用5、反射创建1、获取类加载器2、获取类的运行时结构3、动态创建对象执行方法4、setAccessible三、反射实战1、获取泛型信息2、获取注解信息一、注解原创 2021-12-28 17:01:10 · 782 阅读 · 0 评论 -
Java字符编码、码点与代码单元
文章目录一、字符编码1、Unicode2、utf-8、utf-16和utf-32区别二、码点和代码单元1、码点和代码单元2、实战理解3、遍历字符串一、字符编码1、UnicodeUnicode(万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。Unicode 为世界上所有字符都分配了一个唯一的数字编号,这个编号范围从 0x000000 到 0x10FFFF (十六进制),有 110 多万,每个字符原创 2021-12-28 16:56:20 · 764 阅读 · 0 评论 -
Java方法参数传递
文章目录一、引言1、描述2、Java传递介绍二、实战验证1、8种基本类型2、final修饰的包装类对象3、提供方法对自身进行修改的对象一、引言1、描述对于C++来说,调用方法时存在值传递(新产生的副本不影响原来的)和引用传递(会影响原来的值),那么对于Java呢?2、Java传递介绍通过查阅资料,java中不存在引用传递,始终是值传递。Java里面传的任何参数都是传的“值的副本”,如果是对象那么传递的是指针的“值的副本”,所以会有以下几种情况:8种基本类型,传的是值的副本,在另外的方法里面修改原创 2021-12-28 16:54:24 · 210 阅读 · 0 评论 -
Java泛型
文章目录一、泛型介绍1、简介2、泛型优点3、泛型的定义和使用二、泛型基础1、泛型类与泛型方法1、泛型类2、泛型方法3、泛型类和泛型方法并存2、泛型继承关系3、泛型通配符1、介绍2、?无界通配符3、**上界通配符 < ? extends E>**4、**下界通配符 < ? super E>**5、通配符?和泛型方法T区别三、泛型与虚拟机1、类型擦除2、泛型转换重要结论3、泛型局限性一、泛型介绍1、简介Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提原创 2021-12-28 16:52:11 · 262 阅读 · 0 评论 -
Java ProcessBuilder类
文章目录一、ProcessBuilder基础1、ProcessBuilder类1.1 概述1.2 进程属性2、Process类2.1 概述2.2 Process抽象类2.3 创建Process对象方式3、ProcessBuilder与Runtime.exec()异同3.1 相同点3.2 不同点二、**ProcessBuilder**实战1、API介绍2、实战demo一、ProcessBuilder基础1、ProcessBuilder类1.1 概述ProcessBuilder类是J2SE 1.5在ja原创 2021-12-28 16:51:09 · 1101 阅读 · 0 评论 -
Java8异步编程
一、引言参考Java多线程几种实现方式,我们可以很快速的通过new Thread(...).start()开启一个新的线程,但是这样创建线程会有很多坏处:每次都要新建一个对象,性能差;建出来的很多个对象是独立的,缺乏统一的管理。如果在代码中无限新建线程会导致这些线程相互竞争,占用过多的系统资源从而导致死机或者 oom ;缺乏许多功能如定时执行、中断等。因此Java给我们提供好一个十分好用的工具,那就是线程池二、Java线程池1、Java线程池概述Java提供了一个工厂类来构造原创 2021-11-26 15:37:55 · 5499 阅读 · 0 评论 -
java反编译JVM指令入门
文章目录一、概述二、入门实战1、创建java源程序2、反编译JVM指令分析三、总结与提高1、总结2、提高一、概述javac 是java语言编程编译器。 全称java compiler。 javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。 javac 可以隐式编译一些没有在命令行中提及的源文件。javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等原创 2021-09-16 14:06:00 · 1097 阅读 · 0 评论 -
java8常用新特性
1、Lambda 表达式// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) (String s原创 2021-08-05 12:16:49 · 428 阅读 · 0 评论 -
Java多线程几种实现方式
1、继承Thread类继承类必须重写 run() 方法,该方法是新线程的入口点。它也必须调用 start() 方法才能执行。该方法尽管被列为一种多线程实现方式,但是本质上也是实现了 Runnable 接口的一个实例。public class ThreadTest { public static void main(String[] args) throws InterruptedException { //4.创建Thread类的子类对象 MyThread原创 2021-03-19 11:18:21 · 187 阅读 · 0 评论 -
java通过IP解析地理位置
一、问题描述最近在做一个外包项目,这里要求如果定位高延迟怎么办,另外为了能够加附近的人为好友方便,所以想到了利用用户的IP进行粗略的地理位置定位。因为在写的时候遇到了一些坑,所以在这里特别记录一下,方便以后翻阅。二、获取访问者ip1、获取ip的java工具类public class IpUtil { private static final Logger logger = LogManager.getLogger(IpUtil.class); public static原创 2021-01-27 18:50:30 · 2134 阅读 · 1 评论 -
Lombok常用注解
1、Lombok简介Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/github地址:https://github.com/rzwitserloot/lombok2、Maven引入除了引入maven,还需要安装Lombok插件<dependency> <groupId>org.project原创 2020-10-23 20:46:45 · 795 阅读 · 0 评论 -
Java实现生成和解析二维码
1、建立项目首先需要创建一个普通的 Maven 项目,在这里我用的是 google 提供的 jar包,pom.xml 文件配置如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio原创 2020-10-18 22:28:47 · 275 阅读 · 0 评论 -
Java8 日期时间类整理
目录一、Date类型存在的问题二、Java8新的日期时间类1、LocalDate2、LocalTime3、LocalDateTime4、Instant三、日期时间的修改与计算1、时间修改2、格式化日期(常用)四、LocalDateTime在SpringBoot中的应用1、将LocalDateTime字段以时间戳的方式返回给前端 添加日期转化类2、将LocalDateTime字段以指定格式化日期的方式返回给前端3、对前端传入的日期进行格式化4、前后端日期时间转化问题当我们开始使⽤Java操作⽇期和时间的时原创 2020-10-18 15:23:55 · 5879 阅读 · 0 评论 -
Java设计模式----代理模式
目录一、代理模式介绍二、三种代理模式的简单介绍1、静态代理1、介绍2、代码实现2、动态代理1、介绍2、代码实现3、Cglib代理1、介绍2、代码实现一、代理模式介绍 代理模式(Proxy Pattern),是23种设计模式之一,它关心的主要是过程,而不是结果。代理模式主要提供了对目标对象的间接访问方式,即通过代理对象来访问目标对象,这样可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标...原创 2020-04-14 20:10:12 · 170 阅读 · 0 评论