java
文章平均质量分 70
夜归人ProMax
劲松风烟古,月照夜归人
展开
-
异步处理,ThreadPoolExecutor线程池配置
在项目中,小伙伴们时常会遇到需要异步处理的情况,比如:我在查询本地结果之前,有一个调用第三方接口保存or更新数据的步骤,为了不影响本地查询响应速度,选择使用异步处理,这里就需要使用的到线程池。好啦分享就到这里,祝大家生活美满,工种愉快!其中,拒绝策略有几种类型。原创 2023-03-10 16:58:15 · 386 阅读 · 1 评论 -
MyBatis-Plus详解
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。官网连接池: 传统开发中,每一次请求都要建立一次数据库连接。每一次数据库连接,使用完后都得断开。频繁的数据库连接操作势必占用很多的系统资源,响应速度必定下降。另外,在高并发时,系统资源被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。解决方案: 为数据库连接建立一个“缓冲池”(连接池)。原创 2022-09-05 21:05:58 · 28892 阅读 · 7 评论 -
MyBatis详解
MyBatis 是一款优秀的持久层框架,属于 ORM 映射。前身是 ibatis。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis通过开发者书写SQL 语句,以及对象模型和关系模型的映射(ORM),完成对象模型和关系模型的数据转换。同时支持延迟加载,缓存,映射等。MyBatis 可以通过简单的XML 或注解来配置和映射对象模型和关系模型,从而完成对象数据和关系数据的转换。MyBatis 组成:配置文件。原创 2022-09-04 23:51:37 · 408 阅读 · 0 评论 -
模块引擎 Thymeleaf
应用控制器可以根据客户端请求,调用业务方法,并转发页面。但是,对于页面中战士动态数据的处理,只能以拼接字符串的方式进行。应用控制器对于生成动态网页繁琐,不利于项目分工。解决方案之一,就是利用模板引擎简化动态数据的生成。模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的html文档模板引擎可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码分离,这就大大提升了开发效率,良好的设计也使得代码重用变得更加容易。...原创 2022-08-28 22:43:12 · 266 阅读 · 0 评论 -
Spring MVC
SpringMVC 是一个基于 MVC 模式的表现层框架特点:1、基于的是 servlet 模式2、控制器不再需要继承其他类,只需要用 @Controller 注解3、应用控制器方法参数,由前端控制器负责封装,方法前面定义灵活4、返回页面直接在方法中指定,可以是String,也可以是其他的,比如:ModelAndView 或 void 等5、性能也很优秀...原创 2022-08-28 22:38:38 · 312 阅读 · 0 评论 -
Web开发相关
超文本的意思是在html中不仅仅包含文本数据,而且可以通过一系列标记,链接各式各样的资源(图片、音频、视频、css、js等)。TCP/IP 协议对 OSI网络模型中的一些层进行了合并,将应用层、表示层、会话层,合并为应用层。信息在传输过程中,有遗失,有损耗,会要求发送方重新发送,从而保证信息的完整性。UDP 协议是一种不可靠的传输协议,信息在传输过程中,有遗失,有损耗,不会要求发送方重新发送。传统的web服务器在接收到客户端请求后,只能将静态的html信息发送给客户端,极大的影响了响应信息的灵活性。...原创 2022-08-28 18:05:45 · 628 阅读 · 0 评论 -
通过excel文件导入实体信息(easypoi)
esaypoi 上传文件原创 2022-07-28 15:10:58 · 490 阅读 · 0 评论 -
Java事务详解
AOP术语切面(Aspect)就是你要实现的交叉的非核心业务功能连接点(Joinpoint)应用程序执行过程中插入切面的地点,可以是方法调用,异常抛出......通知(Advice)通知切面的实际实现代码切入点(Pointcut)定义通知应用在哪些连接点目标对象(Target)被通知的对象代理(Proxy)将通知应用到目标对象后创建的对象织入(Weaving)将切面应用到目标对象从而创建一个新的代理对象的过程。事务的持久性,表示事务完成之后,对系统的影响是永久性的。...原创 2022-07-17 23:15:37 · 16635 阅读 · 3 评论 -
springMVC --- 数据校验
数据校验数据校验在web 应用里是非常重要的功能,通过数据校验,可以避免因为客户端非法数据的录入,导致的服务器类型转换异常,以及非法数据的数据保存。数据校验分为客户端校验和服务器校验。客户端校验是指,通过JavaScript 脚本语言对提交服务器的表单数据进行校验。校验通过以后,再将表单数据提交给服务器。 客户端校验优点是直观,可以在不访问服务器的情况下,直接对非法数据的错误信息直接在页面上显示出来。 客户端校验的缺点是并不安全,因为客户端校验需要依赖于浏览器和JavaScript。很多时候,可以绕过浏览器原创 2022-07-10 22:57:47 · 394 阅读 · 0 评论 -
SpringBoot 拦截器
Spring MVC 的拦截器(Interceptor)与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通常应用与权限验证、记录请求消息的日志、判断用户是否登录等功能。SpringMVC 中的自定义拦截器,可以通过实现 HandlerInterceptor 接口来定义。重点重写preHandle()方法。preHandle():这个方法在业务处理器处理请求之前被调用,可以在这个方法中进行一些前置初始化操作或者是对当前请求的一个预处理,也可以在这个方法中进行原创 2022-07-03 20:49:39 · 204 阅读 · 0 评论 -
WEB服务器状态跟踪
http协议是一种无状态的协议,当请求/响应完成后,连接会断开。服务器会认为每次请求的用户都是新用户,从而无法跟踪用户的状态。但是,在开发中,很多时候服务器需要跟踪用户的状态,从而进行一系列的商务活动。如何让服务器知道,值一系列的请求都是同一个用户的行为呢?WEB 服务器 跟踪状态有五种:1、隐藏表单2、cookie3、session4、URL重写5、JWT利用 隐藏表单向服务器发送请求。在隐藏表单中存放该...原创 2022-07-03 20:34:59 · 735 阅读 · 0 评论 -
JDBC详解
JDBC 全称是 java DataBase Connectivity,是java连接数据库的规范和 API。该规范中定义了一系列的接口,由数据库厂商根据自身数据库的特点提供实现类。开发者根据接口调用方法,就可以屏蔽不同数据库的差异。这样,无论连接和操作哪种数据库,都是一套API 。驱动包是数据库厂商针对 JDBC 规范所写的实现类。连接不同数据库时,应该使用不同数据库厂商提供的驱动包。1、建立连接2、执行 SQL 语句,操作数据库数据3、关闭连接1、建立连接2、执行 SQL 语句,操作数据库数据原创 2022-06-20 00:12:21 · 98 阅读 · 0 评论 -
数据库、mysql数据库详解
数据库就是数据的仓库。在数据库中提供了专门的管理系统,对数据库中的数据进行集中的控制和管理。能高效的对数据进行存储、检索。关系型数据库:关系型数据库起源于关系模型。关系模型认为,世界是由实体和联系组成的。而关系型数据库,是一种以表作为实体,以主键和外键作为联系的数据库结构。主键:在关系型数据库中,用于标识每一行唯一性的列,称为主键列。主键有两个特点:不能重复,不能为空。外键:在关系型数据中,用于表达两个表之间联系的列,称为外键列。在关系型数据库中,引用方称为从表,被引用方称为主表。从表利用外键,引用主表的主原创 2022-06-16 23:35:24 · 751 阅读 · 0 评论 -
Docker
Docker 是一个用于开发,交付和运行应用程序的开放平台。通过利用Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和生产环境中运行代码之间的延迟。Docker 能实现,在同一硬件上运行更多工作负载。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,而您可以用更少的资源做更多的事情。Docker 镜像(image)就是一个只读的模板。镜像可以用来创建docker 容器,一个镜像可以创建很多容器。Docker 利用容器(container)独立运行的一个或一组应用。容器是用镜原创 2022-06-13 22:22:56 · 83 阅读 · 0 评论 -
设计原则、设计模式
单例模式 --- Singleton、原型模式 --- prototype原创 2022-06-12 16:44:28 · 120 阅读 · 0 评论 -
注解 --- Annotation
Annotation 是一种能够被书写到Java源代码中的元数据(metadata:描述数据的数据)形式。类、方法、变量、参数和包都可以使用它来进行描述。Annotation不会对它描述的代码操作有任何的直接影响。@Override -- 要求编译器在编译时检查被修饰的方法是否是一个正确的重写;@Deprecated -- 被它修饰的方法会被标记为过时(过时不是错误!!),然后编译器就可以提示我们。通常都是用一根斜线把这个方法名划掉。@SuppressedWarnings -- 用来把代码中的警告信息给消除原创 2022-06-11 19:02:21 · 87 阅读 · 0 评论 -
反射(reflect)
目录反射(reflect)Java中的反射相关知识点反射的基本操作步骤:获取一个Class对象的反射API探究一个Class对象的反射API总结一下使用探究到的信息的反射API反射:在运行时探究和使用编译时未知的类。很明显在这句话中有两个时:运行时、编译时。根据我们的开发流程,都是先书写一个类,然后在代码里面产生它的对象,调用它的方法或属性,然后编译!编译结束以后,再运行,就能看到相应的效果---所以这是一个先编译后运行的流程。但是反射这句话把整个过程给颠倒了,我们在是运行起来以后,才知道我们要产生哪个类的原创 2022-06-04 16:34:13 · 119 阅读 · 0 评论 -
XML、JSON
在现实的开发当中,我们会遇到多个系统与系统之间,项目与项目之间进行数据的交换。在这种情况下,我们要如何来实现呢?A程序当中有一个天气对象,里面放上的是今天的天气信息。B程序需要在它的界面上显示今天的天气,但是它又没有手段自己去获取数据,那只能找A程序要。那A程序如何把这个数据给到B程序呢?A程序可以通过对象的序列化手段,把它的天气对象转成二进制流,然后通过网络把这个流传递给B程序。B程序再通过对象的反序列化手段把接收到的二进制流转回为一个Java对象。这么做的前提条件是A和B都必须是Java程序。原创 2022-05-24 23:36:17 · 277 阅读 · 0 评论 -
JavaFX --- 标签、文本框、密码框、下拉框、按钮、单选按钮、复选框
JavaFX的基本结构和概念Application --- 代表了JavaFX的应用程序Stage --- 舞台 --- 代表了一个窗体。 在Application的start方法中,提供了一个默认的窗体对象。我们也可以根据自己的需要,new出新的窗体。示例:public class MyApplication extends Application { public static void main(String[] args) { launch();原创 2022-05-18 23:07:54 · 4652 阅读 · 0 评论 -
进程与线程、synchronized关键字
进程与线程进程 --- 是一种“自包容”的应用程序,拥有自己的独立内存地址空间。线程 --- 是在进程内部的再次划分,一个进程可以包含多个线程,这些线程是共享进程的内存地址空间。我们的操作系统在同时运行多个程序,每一个程序就是一个进程;一个程序也可以同时完成多个执行路径,每一个执行路径就是一个线程。(GC就是在JVM中的一个线程,我们写的程序从main开始到main结束,也是JVM中的一个线程。)多线程的同时执行,并不是绝对意义的同时。而是由CPU在多个线程之间进行来回的切换,只是它切换的速原创 2022-05-15 18:35:41 · 261 阅读 · 0 评论 -
I/O操作、File文件操作
I/O操作在所有的编程语言当中,I/O操作都是绕不过去的。其中I叫做“输入”--Input,O叫做“输出”--Output。流模型在Java的I/O设计当中,把输入输出设计成了所谓“流模型”。流模型描述的是,所有的数据传递都是在“数据源”与“目的地”之间,建立一个管道,然后数据像流水一样通过这跟管道进行传递。所以在操作Java的I/0操作时,我们都必须要考虑好3个要点:源是谁?目的地是谁?管道是什么管道?I/O流的分类从传递方向上分为:输入流和输出流从管道粗细上分为:字节流和字符流原创 2022-05-15 16:51:30 · 205 阅读 · 0 评论 -
Collections工具类、泛型的基本语法
目录比较器Comparable接口 -- 内部比较器Comparator -- 外部比较器泛型的基本语法泛型类泛型接口泛型方法Java的泛型的不足比较器用于在类当中去定义该类对象比较大小的规则。如果不去做这件事情,那么Collections当中所有跟比较有关的行为根本没有办法实现。Comparable接口 -- 内部比较器被比较对象自己内部实现的比较规则。先人定义的常用类都已经实现了该接口。内部比较接口应该实现在被比较对象本身身上实现,然后重写该接口原创 2022-05-15 15:22:54 · 114 阅读 · 0 评论 -
集合框架 --- List、Set、Map
目录集合框架综述集合框架的组成List(列表)ArrayListLinkedListSet(集)HashSetMap(映射)HashMapProperties泛型语法集合框架综述集合 --- 把批量数据集中合并在一起进行操作。 数组是集合的一种,而且是最简单最原始的一种。体现在三个方面:1、只能存放同一数据类型元素;2、大小一旦确定不能更改;3、所有元素存放在连续内存地址空间。我们通过面向对象的多态特性,可以解决问题1;通过面向对象原创 2022-05-14 19:17:05 · 230 阅读 · 0 评论 -
包装类、日期时间类、属性文件
目录包装类时间日期类时间的本质属性文件包装类在Java当中两类数据类型:基本和引用。目前来看,这两类数据类型是割裂的,因为无论是它们的存放结构 还是 提供的内容,都让它们是分开的两个体系。包装类的出现 主要的任务就是在基本数据类型和引用数据类型之间 搭建一个“桥梁”。4类8种基本数据类型,各有一个包装类与之对应。byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublec原创 2022-05-14 14:10:21 · 149 阅读 · 0 评论 -
Java字符串类型
目录字符串的重要性Java中的字符串类型StringStringBuilder和StringBufferString与StringBuffer或StringBuilder的使用场景String当中的常用方法与String当中的字符内容有关的方法与String内容比较有关的介绍3个特殊方法字符串的重要性字符串在编程中是非常重要的一种数据类型。 使用量最大; 它几乎可以表达所有的我们常见的数据类型的值。或者换句话,对于程序外部的使用者而言,所有原创 2022-05-14 11:19:58 · 4101 阅读 · 0 评论 -
异常处理、抛出
异常分类异常是在JDK中定义的一组专门表示各种不正确情况的类。一旦发生了对应的不正确情况,那么JVM就会产生该类的对象(异常对象)。如果,我们的程序没有处理该异常对象,那么这个异常对象会跟随我们程序的调用流程,一层层往上传递,直到被处理掉。如果到了main方法都还没有处理,那么就会结束程序,然后打印异常信息在控制台。我们通常看到的异常信息,包括了如下几个重要内容: 1、发生在哪个线程中? Exception in thread "main" 由于我们现在是单线程的程序,所以现在所有的异常都发生在th原创 2022-05-13 22:25:50 · 641 阅读 · 0 评论 -
枚举、记录
枚举(enum) -- 基本概念和语法所谓枚举 -- 是一种取值范围固定在某个指定集当中的数据类型。 定义的语法: public enum 枚举类型名{ 值选项1,值选项2,....,值选项n; }注意点:1、这里的值选项是标识符,不是字符串;2、这里的值选项是有顺序的;3、值选项不能重复。使用的语法: 枚举类型 变量 = 枚举类型.值选项;枚举的本质枚举其实是一个语法糖,在本质它是一个自动继承于Enum类的子类。 Enum类来自于java.lang包,..原创 2022-05-09 21:46:05 · 173 阅读 · 0 评论 -
抽象、接口
抽象抽象的地位在面向对象当中,“抽象”到底属不属于OO的特征一直是一个被争论的问题。也就是说OO既有3大特征的说法,也有4大特征的说法。其中长期以来面向对象专家(特别是国外),在他们的论文、书籍和阐述当中都只有“封装”、“继承”和“多态”三大特征。四大特征说法其实是在2010年左右,在国内的软件公司面试题目当中出现的。他们增加了一个“抽象”。个人理解,面向对象中的“抽象”特征如果仅仅只是特指“abstract”,那么其范围和概念都过于小了一些,不足支撑它与“封装”、“继承”、“多态”一样原创 2022-05-08 22:29:32 · 91 阅读 · 0 评论 -
java面向对象 --- 多态
目录多态多态的由来多态的分类转型技术基本数据类型之间的转换引用数据类型也能做强转或自动转引用数据类型转换的本质父类引用指向子类对象有何特点?父类引用指向子类对象后的弊端instanceof多态的应用多态参数异构集合多态多态的由来多态在面向对象中的含义:相同的行为,不同的实现。相同的行为的体现:1、多态是描述行为的,也就是方法;2、相同行为其实在本质上就是“同名”方法。不同的实现:同名的方法,但是个各自有各自的方法实现体,也就是原创 2022-05-08 20:29:10 · 672 阅读 · 0 评论 -
java面向对象 --- 继承
Java中做继承的语法Java里面继承的语法很简单,就是“extends”关键字 public class 子类 extends 父类 { //子类的内容 }属性在继承中的表现结论:父类中的属性 在继承的情况,是肯定被放入到了子类对象当中。只是由于访问修饰符的限制,导致某些特殊访问修饰符的属性在子类中不能被直接访问。访问修饰符在Java当中一共提供了3个关键字,4种情况来表现访问修饰; 本类 同包非子类 ...原创 2022-05-03 15:53:09 · 431 阅读 · 0 评论 -
内部类的分类:成员内部类、静态内部类、局部内部类、匿名内部类
内部类故名思义 -- 就是在一个类A的内部定义另外一个类B,那么类A就是外部类,类B就是A的内部类。首先需要明确:1、内部类一定要定义在外部类的"{}"里面,而不是简单的写在一篇java文件当中;写在一篇java文件当中,它们两个是平行关系,不是嵌套关系。2、内部类除了定义的位置有特殊性以外,它在本质上和普通的类没有区别; 包括: a、仍然拥有属性、构造、行为、初始化块、甚至是它的内部类; b、内部类虽然和外部类在同一篇java文件当中定义,但是编译以后它拥有自己独立的class文件。 c、原创 2022-04-26 23:49:33 · 1261 阅读 · 0 评论 -
类的高级概念 --- static关键字
staticstatic关键字 -- 是一个可选修饰符,它本身的含义叫做“静态”。 它不仅只能修饰方法,它也可以修饰:属性、代码块、内部类 。不能修饰构造方法。static 与 非static 的属性在一个类当中,属性也可以选择使用static进行修饰。一、语法上的对比:有static1、有static修饰的属性可以用"类名."的方式直接访问,也可以通过“对象.”的方式进行访问(但第二种方式,不推荐)。2、用static修饰的属性,是全类的所有对象共享一个值,无论是该类的哪个对.原创 2022-04-26 23:41:56 · 1015 阅读 · 0 评论 -
this和super关键字的区别、用法及注意
this 和 super 的区别、用法及注意this用法一:访问和调用本类的属性和方法(受访问属性限制) 实现: this.XX用法二:在本类的构造方法中调用本类的另一个构造方法,从而达到构造方法的代码共享。实现:this();注意:1、this()只能写在构造方法当中,且只能是第1句;2、this()是根据实参与形参的匹配关系,从而确定调用的是本类的哪一个构造,只是调用,并不会在实例化对象的时候生成多个对象;3、this()和super()不能共存于一个构造方法中,不能使用原创 2022-04-25 22:28:09 · 239 阅读 · 0 评论 -
类与对象 --- 构造器(构造方法、Constructor)
类与对象 --- 构造器(构造方法、Gonstructor)原创 2022-04-25 22:05:26 · 98 阅读 · 0 评论 -
java面向对象 --- 封装
java面向对象 --- 封装封装的概念封装:包含了两层含义---“封”和“装”,而且应该是先考虑装,再考虑封。装 --- 目的是为了把散的东西统一在一起,是为了方便处理和使用;封 --- 目的是为了信息隐藏,但信息隐藏也绝对不是说藏的严严实实,也可以是分各种级别的。装...原创 2022-04-25 21:46:18 · 486 阅读 · 0 评论 -
类与对象 --- 概念及语法
目录面向过程 ---> 面向对象类的概念对象的概念类与对象的关系类的语法语法:属性行为类与类之间的关系对象的语法产生对象使用对象销毁对象如何在一个问题域当中设计类、属性和方法面向过程 ---> 面向对象随着计算机硬件的发展,软件的应用范围从科学运算走向各个领域,开发人员对问题域的认知度需要从方法上发生根本性的变化。面向过程 ---- 基于分析问题域的解决步骤面向对象 --- 基于分析问题域的参与角色至于要说这两个原创 2022-04-13 08:49:25 · 201 阅读 · 0 评论 -
类与对象 --- 方法(函数)
目录方法(函数)模块化编程思想基本语法定义方法的语法调用方法的语法方法调用的执行流程特殊的方法语法方法重载方法调用栈方法递归方法(函数)模块化编程思想1. 函数的出现是模块化编程思想的必然结果;2. 设计人员不用考虑实现的细节,只需要理清楚在整个程序中有哪些模块、模块与模块的关系,这样更有利于他们对于程序宏观的控制;3. 开发人员可以只考虑自己负责的模块的实现,达到多人同时开发的效果,在效率上大大提升;4. 同一个函数模块被定义好之后.原创 2022-04-06 19:21:55 · 444 阅读 · 0 评论 -
JAVA基础知识及安装
java基础知识原创 2022-04-05 17:03:36 · 258 阅读 · 0 评论 -
数组排序 --- 冒泡排序、二维数组
目录数组排序 --- 冒泡排序二维数组数组排序 --- 冒泡排序排序 对集合(数组)中的元素进行排序是非常常用的一个基本操作。排序的算法有很多:冒泡排序、选择排序、自然排序等等。虽然先人预先已经写好了排序算法的实现,我们可以通过调用它们直接实现排序效果。冒泡排序的基本逻辑:假设考虑的是从小到大排序1、第0轮排序,用下标为0的元素依次与后面的元素进行比较, 谁小谁就放到0位置;2、第1轮排序,用下标为1的元素依次与它后面的元素进行比较, 谁小谁就放到1位置;原创 2022-04-01 15:48:05 · 451 阅读 · 0 评论 -
双色球号码自动生成系统-------买彩票不愁啦
中奖啦!中奖啦!双色球随机抽号代码!!原创 2022-03-30 14:54:35 · 2080 阅读 · 0 评论