java基础
文章平均质量分 87
disgare
这个作者很懒,什么都没留下…
展开
-
流程编排框架 LiteFlow
这样我们可以重写组件的 isAccess 方法并将组件的执行状态记录在数据库中,每次执行到该组件的时候,根据状态判断是否需要执行。利用 LiteFlow,你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动。在流程执行的过程中可能有很多上下文对象,在不同的流程模块中调用,因此在创建流程的时候,我们可以封装一个 Context 对象,里面可以存放很多的上下文数据。flow.el.xml 文件。原创 2024-06-05 17:34:57 · 235 阅读 · 0 评论 -
netty 学习笔记
nettyIO阻塞与非阻塞同步与异步常用的IO模型BIO:同步阻塞IOjava中的BIONIO:同步非阻塞IOjava中的NIO(IO多路复用)select 、poll、epoll区别AIO:异步IO模型零拷贝IOIO就是计算机内部与外部进行数据传输的过程,比如网络IO与磁盘IO所有IO都需要系统调用,由操作系统代理执行,并经历从IO设备拷贝到内核空间拷到用户空间的环节(java中有管理堆外内存的类,是个特例)在内核收到调用请求之后,会有数据准备、数据就绪、数据拷贝的阶段阻塞与非阻塞指程序在等待原创 2021-05-13 20:06:37 · 41 阅读 · 0 评论 -
Guava 常用 API
super F,?super T> predicate):Iterables类中的tryFind方法,用于找出集合中满足条件的元素,其中传入的第二个参数就是Predicate方法。Splitter 使用示例,下面的 iterable 就是包含了所有被分隔的字符串,同时,onPattern 方法是指传入正则表达式,与正则相匹配的都会被分隔。Collections.unmodifiableXXX方法是视图映射,用该方法生成的集合虽然不能更改,但是用集合更改之后这些集合也会对应的更改。原创 2022-07-15 17:09:51 · 1302 阅读 · 2 评论 -
Java 语法糖
语法糖指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用带有语法糖的代码一般不能直接翻译为汇编语言,JDK 需要将语法糖先翻译成直接支持的编程语言,然后执行正常的转换为汇编语言的操作。在 java 中,翻译语法糖的任务被交给了前端编译器。原创 2024-02-07 17:46:25 · 899 阅读 · 1 评论 -
Java 序列化
序列化机制可以让对象地保存到硬盘上,减轻内存压力的同时,也起了持久化的作用;也可以让 Java 对象在网络传输。一般我们可以使用 java 自带的序列化机制和 json 来就行序列化。以下讲解一下序列化相关概念。原创 2024-01-24 20:24:07 · 857 阅读 · 0 评论 -
Java 图片文件上传下载处理
做这玩意给我恶心坏了。原创 2023-12-18 22:05:23 · 971 阅读 · 0 评论 -
Java Stream 的使用
它的作用就是链式的对一组元素进行操作,它的操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回 Stream 本身,以下是常见的操作无状态:指元素的处理不受之前元素的影响有状态:指该操作只有拿到所有元素之后才能继续下去非短路操作:指必须处理所有元素才能得到最终结果短路操作:指遇到某些符合条件的元素就可以得到最终结果Stream 可以使用串行和并行来完成操作,串行操作是用一个线程依次执行,而并行操作使用了多线程,将 stream() 改为 parallelStream(原创 2023-11-14 22:40:41 · 240 阅读 · 0 评论 -
RestTemplate 相关使用
在项目中,当我们需要远程调用一个 HTTP 接口时,我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类,异常好用,其他框架中提供的 rest 调用或多或少借鉴了这个思路该类提供三组接口getForObject — 这类方法是常规的 Rest API(GET、POST、DELETE 等)方法调用。原创 2023-02-28 16:30:50 · 753 阅读 · 0 评论 -
Java 的 Excel 相关操作
用 HSSFWorkbook 代表一个 excal 文件,HSSFSheet 表示文件中的每个 sheet,HSSFRow 代表 sheet 中的每一行,HSSFCell 就表示每一行中的每一格数据了。在 response 中设置浏览器接受的样式为 application/vnd.ms-excal,即可返回 excal 的下载。然后需要定义一些其他设置。HSSFCellStyle 是一个实现了 CellStyle 接口的类,用于工作簿的工作页中每个单元格的高级样式展示。原创 2022-08-05 14:43:35 · 2559 阅读 · 0 评论 -
Java 中关于字符串处理的常用方法
子表达式的内容可以当成一个独立元素,即可以将它看成一个字符,可以在 () 中使用元字符。该方法用于拼接字符串,在原来的字符串中使用大括号与数字当做占位符,后面的参数可以接上若干的字符串,作为替换占位符的字符串。replaceAll() 方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。我们还可以在正则中使用小括号来取字符串中原有的值,然后在替换的内容中使用 $1、$2 等等来取值。该方法在做字符串替换的时候非常方便,实际应用如下。原创 2022-11-07 10:45:22 · 1308 阅读 · 0 评论 -
Jackson 的各种使用
总结一下 java 中 json 的相互转换,以及 jackson 的部分底层原理。原创 2022-11-02 17:51:54 · 3966 阅读 · 0 评论 -
关于 boolean 类型的坑
但是包装类型都是以 get 开头。这种方式在某些时候是可以正常运行的,但是在一些 rpc 框架里面,当反向解析读取到 isSuccess 方法的时候,rpc 框架会“以为”其对应的属性值是 success,而实际上其对应的属性值是 isSuccess,导致属性值获取不到,从而抛出异常。二是所有的属性应该定义为包装类,因为基本数据类型有默认值,在数据库中,bool 类型可能有三个值,null、true、false。一是 bool 类型的属性不能使用 is 开头,二是在 POJO 中,不要使用基本数据类型。原创 2022-10-24 19:17:37 · 1670 阅读 · 0 评论 -
代码整洁之道
为了降低与优化代码维护的成本,我们制定了一系列的规则与框架,甚至这些框架中建议我们写出降低程序运行效率的代码为了写出简单易懂可维护的代码,为了成为更好的程序员,我们应该遵守以下的规则。原创 2022-09-22 20:28:12 · 217 阅读 · 0 评论 -
Servlet 学习笔记
很多成熟的框架底层封装了 servlet,我们只需要简单了解一些即可。原创 2021-04-21 22:35:32 · 139 阅读 · 0 评论 -
虚拟机执行子系统
class 文件由紧密的二进制流组成,为了可以正常读取必须按一定顺序存放数据,用无符号数来表示各种属性与表示表的大小。无论如何,一个类的所有信息都包含在了对应的 class 文件中由于无符号数有字节的限制,因此 java 才有一些大小限制条件,比如方法名、字段名、方法长度的限制class 文件只是一串二进制字节流,它可以是磁盘中的文件,也可以是网络传进来的数据、数据库读取进来的文件,也能是虚拟机运行时动态生成的为什么用户想要自定义类加载器?原创 2022-08-18 20:27:20 · 588 阅读 · 0 评论 -
Java 异常
Java异常是Java提供的一种识别及响应错误的一致性机制。原创 2022-08-15 14:47:39 · 589 阅读 · 0 评论 -
JAVA 注解小结
我们可以自己写一个注解}发现什么奇怪的问题没有,不说是接口了,就算是类也不能给方法赋值啊。而且这么操作有什么用吗我们定义了注解的作用域、作用目标之后,在注解内写的方法可以看作注解蕴含的信息,因此只要用到注解,必然有三角关系:定义注解、使用注解、读取注解如果注解本质上是继承了 Annotation 接口的接口,那是不是可以通过反射获得这个注解所包含的信息了,获得信息就可以对其标记的东西进行操作了来个实例吧,这是个被我自定义注解标记的类} }...原创 2022-08-11 18:53:31 · 161 阅读 · 0 评论 -
JAVA 枚举的基础和原理
当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。java 为每个枚举都定义了两个属性,name和ordinal,name表示我们定义的枚举常量的名称,如ADD、SUBTRACT等,而ordinal是一个顺序号,根据定义的顺序分别赋予一个整形值,从0开始,因此该枚举对象可以调用name与ordinal方法。你可以将枚举类当成一个普通的java类,为其添加方法。..原创 2022-08-10 18:40:26 · 718 阅读 · 0 评论 -
FutureTask 源码阅读
我们都知道Future这个接口是为了去除主线程的等待时间,以方便用等待时间处理其他复杂的业务逻辑这个接口总共只有5个方法,通过方法名就可以见名知意。原创 2022-07-27 19:25:39 · 82 阅读 · 0 评论 -
JVM 自动内存管理
Java 内存区域(运行时数据区)虚拟机栈每个线程都会有一个虚拟机栈、一个程序计数器、一个本地方法栈在调用方法时,一个栈帧入栈,方法结束,栈帧出栈每个栈帧储存着局部变量表等数据、局部变量表包括引用、基本类型等数据引发的问题1,StackOverFlowError:栈调用过多方法,导致栈超限2,OutOfMemoryError:栈可以动态增长,在申请不到内存时,会OOM本地方法栈使用native调用的语句,为了让java运行非java语言的程序其他与虚拟机栈一模一样程序计数器是线程私有原创 2021-03-19 18:37:29 · 357 阅读 · 1 评论 -
Java8 新特性
在学会函数式接口以及lambda表达式之后,java为我们提供了更加便捷的写法,那就是方法和构造函数引用,它简便的原因是将方法的入参忽略了。原创 2022-07-23 11:10:54 · 386 阅读 · 0 评论 -
CompletableFuture 源码浅要阅读
以上,我们简单过了一遍CompletableFuture的创建以及后续操作的实现CompletableFuture的创建是使用CAS操作将我们的传入的方法以及最后的实现参数赋值给CompletableFuture中的属性CompletableFuture中对于各个组的实现大同小异后续操作是从postComplete方法中引出来的,后续操作定义在CompletionStage接口中,后续操作的实现是通过Compition类的链表结构实现的。.........原创 2022-07-22 15:13:06 · 357 阅读 · 0 评论 -
CompletableFuture 相关用法
由于guava中Listenablefuture的成功,在Java8中,设计师们也新加了一个包含50个方法左右的类CompletableFuture。它的优点就是异步编程,同时这个类的使用也相当抽象…非常抽象。原创 2022-07-20 19:59:16 · 441 阅读 · 0 评论 -
泛型相关概念
要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。而在擦除去了泛型信息,最后在字节码中的类型变量的真正类型,就是原始类型,无限定类型的变量用Object,有限定类型用限定类型的上限来表示。和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,生成的字节码中是不包含泛型中的类型信息的,这也就是通常所说类型擦除。你可以在自己编写的工具类中使用泛型。.......原创 2022-07-17 19:10:51 · 94 阅读 · 0 评论 -
集合与数据结构
集合基础学习笔记List接口ArrayListLinkedListCollection集合遍历Set接口HashSetTreeSetMap接口HashMapTreeMapMap的集合遍历List接口储存的对象有序,可重复ArrayList像数组一样存储对象,每次增删都需要构建新数组,适合多次查询的情况LinkedList像链表一样存储对象,适合多次增删的情况Collection集合遍历1,使用for循环2,使用Iterator迭代器3,使用foreach方法4,使用迭代器的foreac原创 2021-03-12 20:48:17 · 1228 阅读 · 5 评论 -
反射学习笔记
反射作用是什么优缺点用法如何获取类使用场景与之相关作用是什么在运行中,动态的获取类的所有属性与方法优缺点运行时获取,较为灵活几乎所有框架都使用了反射机制破坏了封装性,因为反射可以获得类的所有属性与方法用法如何获取类1,Class.forName方法接类的详细地址2,类名.class3,对象名.getClass4,类加载器ClassLoader.loadClass接类的详细地址使用场景JDBC连接数据库时,需要forName启动驱动因为forName默认初始化类,执行目标对象的原创 2021-03-16 22:07:00 · 50 阅读 · 0 评论 -
String、StringBuffer、StringBuilder
String特点不能改变,对String的操作都会生成新的String对象引用型数据类型存储在常量池中原创 2021-03-20 12:35:19 · 65 阅读 · 0 评论 -
强、软、弱、虚
平时我们写的所有带等号将引用指向对象的引用方式都是强引用它的特点是如果一个对象有强引用,GC绝对不会回收它;如果这个对象没有被引用指向,那么它就会被回收。原创 2021-04-12 12:36:01 · 51 阅读 · 1 评论 -
如何使用 lambda 实现集合排序以及为什么 lambda 不能改变外部变量的值
如何实现排序向某些可以排序的类传入一个Comparator的接口,这个接口中的compare可以实现排序功能,默认从小到大排序如果是(o1, o2) -> o1 - o2,从小到大排序如果是(o1, o2) -> o2 - o1,从大到小排序匿名内部类一个方法中传入接口时,可以new一个接口并且重写接口里的方法public class MainTest { @Test public void whatTest(){ MainTest.catSay(n原创 2021-04-19 22:33:46 · 1810 阅读 · 1 评论 -
java 基础知识
但是,两个对象有相同的 hashcode 值,它们也不一定是相等的,重写的目的就是为了防止俩个相同的对象有不同的 hashcode。被该关键字修饰的变量(该关键字不能修饰方法或者类)不可以被序列化,只能存在于本地的内存中,最简单的例子就是不可以被IO输出到磁盘中,同样不能被远程传输。静态导包,用来导入类中的静态资源,格式为:import static 这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。原创 2021-06-27 22:15:07 · 648 阅读 · 1 评论 -
Scanner的各种用法
Scanner类简介Scanner类是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。Scanner的各种原创 2021-08-01 16:54:00 · 7310 阅读 · 0 评论