- 博客(53)
- 收藏
- 关注
原创 for循环优化
如果不使用迭代器遍历删除时,可以采用倒叙的方式遍历删除元素,避免因为索引变化导致异常。,避免因为单词异常导致整个for循环后续中止。不过这种写法也不是绝对,需要考虑。
2023-11-14 14:27:53 121
原创 JVM内存模型及JAVA程序运行原理
JVM------Java Virtual Machine.JVM是Java平台的基础,与实际机器一样,他有自己的指令集(类似CPU通过指令操作程序运行),并在运行时操作不同的内存区域(JVM内存体系)。Java虚拟机位于操作系统之上(如下图所示),将通过JAVAC命令编译后的字节码加载到其内存区域,通过解释器将字节码翻译成CPU能识别的机器码行。每一条Java指令,Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。JVM是运行在操作系统之上的,它与硬件没有直接交互。
2023-09-14 16:18:06 511
原创 MySQL基础知识每日总结(5)
NULL表示未知,所以在和任何其他值进行匹配时候都是返还的未知,所以在连接查询的时候 ON 条件后返回的是两个表的该记录是否匹配,结果需要true or false,当遇到NULL值,返回的是未知,所以不会返回数据。使用实体表创建视图后,实体表中的数据发生变化,视图查询出的数据就会发生变化。视图本身是一个不含任何数据的虚拟表,数据库中存放视图的定义(保存好的SELECT语句),而不存放视图对应的数据。视图效率一般,因为都是每次用的时候才会查,而临时表效率更好,缺点就是临时表数据可能是旧的。
2023-06-05 11:40:56 903
原创 JUnit单元测试
JUnit是一种Java语言的单元测试框架,它是最流行的单元测试框架之一。它提供了一些可用于编写和运行测试的API,并且可以生成测试报告。JUnit适用于所有Java语言的项目,例如Java应用程序、Java Servlet、Java EE应用程序以及Android应用程序等。
2023-04-18 10:19:36 3523 1
原创 Java导入导出
当Excel没有列名或者有多行列名可以使用这个办法来说明。0:表示没有行头,即第一行就是数据1:默认值就是1,表示第一行是行头,从第2行开始是数据2:表示行头有两行,从第3行开始是数据如果想要读取行头,上面的监听器invokeHeadMap方法保存了行头的数据。try {String fileName = URLEncoder . encode("测试.xlsx" , "UTF-8");
2023-04-11 17:33:01 1248
原创 Java——大数加法
一、题目描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。数据范围:s.length,t.length≤100000,字符串仅由’0’~‘9’构成要求:时间复杂度 O(n)O(n)注:long的最大值:9223372036854775807即long的最大值才19位,而t的最大长度是10万位二、我的答案import java.util.*;import java.math.BigInteger;public class Solution { /**
2022-05-23 11:19:43 1155
原创 DBeaver点击数据库没有出现存储过程、索引、触发器等
解决办法:1.鼠标右击数据库连接名:2.选择Connection view3.选择Advanced
2022-05-19 11:02:54 6064 1
原创 SpringCloud学习(1)---项目搭建
一、父工程1.pom文件<?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:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/x
2022-01-08 19:59:42 282
原创 JAVA8新特性
而在Java8之后,在匿名类活lambda表达式中访问的局部变量,如果不是final类型的话,编译器自动加上final修饰符。假定没有要求lambda表达式外部变量为final修饰,那么开发者会误以为外部变量的值能够在lambda表达式中被改变,而这实际是不可能的,所以要求外部变量为final是在编译期以强制手段确保用户不会在lambda表达式中做修改原变量的操作。其中,类::实例方法名最为特殊,它要求第一个参数为实例方法的调用者,第二个参数为实例方法的参数。此时,函数式接口方法的参数为数组的长度。
2022-01-01 16:50:46 61
原创 IDEA的DB Navigator无法连接之时区解决
问题描述:Cannot connect to “xxxxx”.The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the ‘serverTimezone’ configuration property) to use a more specifc time
2021-09-13 16:34:29 2546
原创 当Eclipse或STS的tomcat启动正常,但localhost:端口号或127.0.0.1:端口号回车后显示404时
首先你得去Tomcat的安装目录看conf目录下的server.xml文件,找到< Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>,其中8080为默认端口号,如果已修改需要看网址输入的端口号是否匹配,一般8080都会被占用,建议修改为其他上一步正确的话,点击eclipse的servers,双击tomcat(如下图),首先看1所在位置端口号是否正确,再看2所在位置选
2021-03-23 22:15:15 443
原创 导入SpringBoot项目pom文件parent出错或Eclipse或STS的Marketplace出错
找到使用软件的.ini文件(eclipse.ini或SpringToolSuite4.ini),进入编辑,添加一行:-Djava.net.preferIPv4Stack=true原因:很大程度上是联网的问题
2021-03-16 10:07:50 560
原创 MyBatis总结(4)---缓存
缓存1.什么是缓存?在每次需要数据时,都要去数据库进行查询这是十分耗资源的操作。而将查询结果暂存在可以直接取到的内存中,这就十分方便了,这个内存就叫做缓存,它提高了程序的性能,主要存储临时数据。好处:减少和数据库交互的次数,减少了系统开销,提高系统效率。使用要求:要进入缓存的数据应该是经常查询且不经常改变的数据。2.Mybatis缓存的使用Mybatis默认定义了两级缓存:一级缓存和二级缓存,且一级缓存是默认开启的,即,如果你使用同一个SqlSession接口对象调用了相同的SELECT语句,则
2021-01-24 20:48:06 99
原创 MyBatis总结(4)---一对一、一对多
使用 column 属性来指定 Teacher 类中与 Student 对象进行关联的列名。实现一对一映射有两种方法:【嵌套结果】ResultMap和【嵌套查询】select语句。多对一与一对一类似,例:学生类中有老师这个属性,多个学生对应一个老师。,javaType当前所在类中的属性的类型Address。例:一个老师类里有一个集合属性,集合里存放的是学生对象。其映射关系也是一对一的那两种处理方式。例,学生和家庭住址是一对一的关系。①嵌套结果ResultMap。②嵌套查询select。
2021-01-22 21:22:41 1426
原创 Mybatis---日志
Mybatis日志1.Mybatis的配置文件中<settings>的<setting>有一个属性叫logImpl,它的值有LOG4J、LOG4J2、COMMONS_LOGGING等值,且该属性没有默认值。日志可以使程序的运行更加详细可视化,且当出现代码或sql语句错误时,使用日志可以更方便的进行查找和修改。例,<settings> <setting name="logImpl" value="log4j"/></settings>
2021-01-20 21:28:02 649
原创 com.mysql.cj.jdbc.exceptions.PacketTooBigException
出现com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (1,530,486 > 1,048,576). You can change this value on the server by setting the ‘max_allowed_packet’ variable. 时,可以去MySQL的安装目录下找my.ini的文件,在最后一行加入"max_allowed_packet=16M"
2021-01-13 18:16:40 226
原创 MyBatis总结(3)---映射文件的元素配置
MyBatis1.简介映射文件是MyBatis框架中十分重要的文件,可以说,MyBatis框架的强大之处就体现在映射文件的编写上。在映射文件中,< mapper>元素是映射文件的根元素,其他元素都是它的子元素:注:< mapper>元素有一个属性是namespace,它对应着实体类的Mapper类。 例,<mapper namespace="com.money.mappers.BookMapper">2.主要元素①< select>元素<
2020-10-09 22:32:06 2779
原创 MyBatis总结(2)---配置文件的元素配置
MyBatis1.两个核心对象①SqlSessionFactorySqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建SqlSession。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来构建,而SqlSessionFactoryBuilder则可以通过XML配置文件或一个预先定义好的Configuration实例构建出SqlSessionFactory的实例。通过XML配置文件构建出的SqlSessi
2020-10-08 20:13:25 2120
原创 MyBatis总结(1)
MyBatis1.简介MyBatis(前身是iBatis)是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,并使用简单的XML或注解进行配置和原始映射,用以将接口和Java的POJO(PlainOld Java Object,普通Java对象)映射成数据库中的记录, MyBatis 通过将参数映射到配置的SQL 形成最终执行的SQL 语句,最后将执行SQL 的结果映射成Java 对象返回。MyBatis框架也被称之为ORM(O
2020-10-08 16:05:54 774 1
原创 Servlet、过滤器与监听器
Servlet1.简介Servlet又叫服务器端小程序,它是使用Java语言编写的服务器端程序。它可以像JSP一样,生成动态的Web网页。Servlet主要运行在服务器端,由服务器调用执行,是一个按照Servlet标准开发的类。JSP是在Servlet的基础上学习ASP技术衍生出来的技术。Servlet采用多线程的处理方式,效率高,且跨平台。注:Servlet程序需要写在服务器上,下面的所有程序都是在服务器软件Tomcat上写的。2.子类体系①ServletServlet是一个javax.se
2020-09-29 20:17:54 215 1
原创 Java常用类---包装器、BigInteger和System
常用类1.包装器类①概述在Java中基本数据类型不是类,不能创建对象,这不符合面对对象编程的思想,所有从JDK1开始,Java提供了包装器类,它将基本数据类型包装成类,这些类是Byte,Short,Integer,Long,Float,Double(这些数值类都继承了一个抽象类Number),Character,Boolean。②构造方法注:其他包装器类和Integer类似public Integer(int value)public Integer(String s)throws Numbe
2020-09-29 18:58:22 165
原创 获取电脑里的所有视频---Java文件类与IO流
文件类和IO流的详细介绍请看:Java基础知识每日总结(19)—Java输入输出流、文件、递归通过下面简单的程序就可以将指定位置的指定文件转移到指定的地方:import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IO
2020-09-27 17:23:54 217
原创 Collections工具类
Collections1.概述Collections是一个针对集合进行操作的工具类,它里面的方法都是静态方法,所以可以直接通过类名.方法名调用方法。Collection和Collections的区别:Collection是集合的顶层接口Collections是操作集合的工具类2.常用方法演示所用集合:List<Integer> l=new ArrayList<>();l.add(15);l.add(6);l.add(43);l.add(24);l.add
2020-09-20 21:35:22 625
原创 Java之静态导入与可变参数
静态导入与可变参数1.静态导入①概述静态导入使得其他包中的静态方法像在本类中定义的静态方法一样直接以方法名去使用。格式:import static 包名.类名.方法名;②使用使用静态导入后:import static java.lang.Math.abs;import static java.lang.Math.pow;import static java.lang.Math.max;public class Test { public static void main(Strin
2020-09-11 20:13:19 135
原创 正则表达式详述
Java中的正则表达式用来检测某一字符串是否满足所要求的格式,也可以用来匹配、替换和拆分字符串。经常用在检查一个字符串是否含有某种子字符串、将匹配的子字符串做替换或者从某个字符串中取出符合某个条件的子字符串等。它的主要关联类有Pattern和Matcher (java.util.regex包)。正则表达式是含有一些特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。. 任何字符,如果想表示.字符,可以用\.,匹配除"\r\n"之外的任何单个字符。
2020-08-30 15:39:42 378
原创 Java常用类---Object、Scanner和Arrays
常用类1.Object类①概述Object类是类层次结构的根类,所有类都直接或间接继承自该类。②构造方法public Object()所以在面对对象中介绍时说所有类都默认继承了父类的无参构造方法③常用方法public int hashCode():返回当前对象的哈希码值。根据不同的对象返回不同的整数,哈希码值是根据哈希算法计算出来的一个值,这个值和地址值有关,但不是地址值。地址相同的两个对象的哈希码值相同。public final Class<?> getClass():通
2020-08-16 15:28:19 218
原创 Java基础知识每日总结(19)---Java输入输出流、文件、递归
输入输出流与文件在变量、数组和对象中存储数据是暂时的,程序结束后它们则会丢失。为了能够永久地保存程序创建的数据,需要将其保存在磁盘文件中。这样以后就可以在其他程序中使用它们。Java的I/O技术可以将数据保存到文本文件、二进制文件甚至是ZIP压缩文件中。以达到永久性保存数据的要求。掌握I/O处理技术能够提高对数据的处理能力。1.文件①File类java.io包中封装了用于输入输出的类。io包中唯一代表磁盘文件本身的File类定义了一些与操作系统无关的方法来操作磁盘文件。通过File实例可以获取文件本
2020-07-15 12:54:04 540
原创 Java基础知识每日总结(18)---Java数据库编程应用
数据库编程应用数据库系统是由数据库、数据库管理系统和应用系统、数据库管理员构成。数据库管理系统简称DBMS,是数据库系统的关键组成部分,包括数据库定义、数据查询、数据维护等。而JDBC技术是连接数据库与应用程序的纽带。使用JDBC技术访问数据库可达到查找满足条件的记录,或者向数据库添加、修改、删除数据。1.JDBC技术简介...
2020-07-11 17:15:12 320
原创 Java基础知识每日总结(17)---Java常用工具类
常用工具类程序开发经常需要一些算法,例如提取当前系统日期、生成不重复的随机数字、对数字和日期的格式化输出、还有一些数学函数的运算等,这些都是程序开发中不可避免要使用的技术。这里介绍一些常用的工具类。1.日期时间类Date类用于表示日期时间,它位于java.util包中。①创建Date类的对象Date类最简单的构造方法就是默认的无参数的Date()构造方法,它使用系统中当前日期和时间创建并初始化Date类的实例对象。例,Date now=new Date();Date类的另一个够构造方法是Date
2020-07-07 22:02:05 534
原创 Java基础知识每日总结(16)---Java多线程编程
①线程与进程一个应用程序(.exe)的启动代表了一个进程的启动。由于在操作系统上创建进程的开销非常大,因此提出了线程的概念,它相当于“轻量级”的进程。一个操作系统可能会包括多个进程,而1个进程可能会包括多个线程。每一个进程都有它自己的内存空间和系统资源,而在同一进程中创建的线程共享这些资源。注:在使用Java语言编写多线程程序时,运行结果与操作系统密切相关,即使在同一台机器上,多次运行同一个程序,结果也可能不同。进程是内存分配的最小单位,多进程是为了提高CPU的使用率。
2020-07-05 18:26:20 257 1
原创 Java基础知识每日总结(15)---Java事件处理
事件处理1.事件处理基础任何支持GUI的操作环境都要不断地监视按键或点击鼠标这样的事件。在Java中,所有的事件对象都最终派生于java.util.EventObject类。不同的事件源可以产生不同类别的事件。AWT事件处理机制概要:监听器对象是一个实现了特定监听器接口的类的实例;事件源是一个能够注册监听器对象并发送事件对象的对象;当事件发生时,事件源将事件对象传递给所有注册的监听器;监听器对象将利用事件对象中的信息决定如何对事件作出响应。监听器创建:ActionListener at1
2020-06-30 16:39:28 415
原创 Java基础知识每日总结(14)---Java图形程序设计
图形程序设计1.简介在Java刚刚出现的时候,包含了一个用于基本GUI(图形用户界面)程序设计的类库,它被称为抽象窗口工具箱(AWT)。后来,基于AWT的架构之上出现了Swing,它提供了能力更加强大的用户界面组件。2.创建框架在Java中,顶层窗口(就是没有包含在其他窗口中的窗口)被称为框架(frame)。在AWT库中有一个Frame类,用来描述顶层窗口。这个类的Swing版本叫做JFrame,它扩展于Frame类。将Swing和AWT组件混在一起使用将会导致视觉和行为的不一致。Swing类位于
2020-06-28 21:48:32 802
原创 Java基础知识每日总结(13)---Java集合
集合1.Java集合框架java.util包中提供了一些集合类,这些集合类又被称为容器。集合类与数组的不同之处是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本数据类型的数据,集合用来存放对象的引用。常用的集合有List集合、Set集合和Map集合。①将集合的接口与实现分离Java集合类库将接口与实现分离。队列接口指出可以在队列的尾部添加元素,在队列的头部删除元素,并且可以查找队列中元素的个数。当需要收集对象,并按照“先进先出”的规则检索对象时就应该使用队列。队列通常有两种实现方式:一
2020-06-24 22:37:24 371
原创 Java基础知识每日总结(11)---Java异常、断言和日志
异常、断言和日志1.简介在程序运行期间,用户可能会输入错误格式的数据造成程序的崩溃,这时Java使用一种异常处理的错误捕获机制来处理。在测试期间需要进行大量的检测以验证程序操作的正确性,这时可以使用断言来有选择地启用检测。当程序出现错误时,需要用日志记录下出现的问题以备日后的分析。2.处理错误在程序运行时,如果由于出现错误而使得某些操作没有完成,程序应该:返回到一种安全状态,并能够让用户执行一些其他的命令;或允许用户保存所有操作的结果,并以妥善的方式终止程序。下面是程序运行时可能出现的错误:用
2020-06-15 10:34:32 289
原创 Java基础知识每日总结(10)---Java接口、lambda表达式和内部类、枚举
接口主要用来描述类具有什么功能,而并不给出每个功能的具体实现。lambda表达式是一种表示可以在将来某个时间点执行的代码块的简洁方法。内部类定义在另外一个类的内部,其中的方法可以访问包含它们的外部类的域。
2020-05-22 19:36:12 484 1
原创 Java基础知识每日总结(9)---Java继承
继承1.类、超类和子类继承的一个明显特征是“is-a”关系。如:每一个班长都是学生,所以可以根据学生类构造一个班长类。这就是在已有类的基础上构造一个新类。反射是指在程序运行期间发现更多的类及其属性的能力。①定义子类在Java中,关键字extends表示继承。语法:public class 子类 extends 父类{ 属性及方法 }注:在Java中所有的继承都是公有继承。extends后面的已存在的类被称为超类、基类或父类,前面新的类称为子类、派生类或孩子类。②覆盖方法在覆盖方法是可以使用
2020-05-19 10:34:55 314
原创 Java基础知识每日总结(8)---Java类与对象
类与对象1.简介类是构造对象的模板或蓝图,由类构造对象的过程叫做创建类的实例。创建类的实例要使用构造器,构造器是一种特殊的方法,用来构造并初始化对象。构造器的名字应该与类名相同。注:一个对象的变量并不是包含一个对象,而是引用了一个对象,new操作符的返回值是一个引用。...
2020-05-15 11:01:20 231
原创 C#学习总结(4)---C#运算符与数据类型转换
运算符1.简介运算符是具有运算功能的符号,根据使用操作数的个数,将运算符分为分为单目运算符、双目运算符和三目运算符。单目运算符是作用在一个操作数上的运算符,如正负号等;双目运算符是作用在两个操作数上的运算符,如加减乘除等;三目运算符是作用在三个操作数上的运算符,C#中只有唯一的三目运算符它是条件运算符(? : )。2.算术运算符C#中的算术运算符是双目运算符,主要有+、-、*、/和%(模、求余数)5种。注:/和%运算时,除数不能为0。3.自增、自减运算符自增、自减运算符是单目运算符,有++i,
2020-05-11 11:35:50 602
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人