![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习笔记
JieFighting
这个作者很懒,什么都没留下…
展开
-
Java编程题——重排序列(整型数组的排序(升降)、反转、截取、合并)
题目描述给定一个长度为N的序列A[1]到A[N],现在要要对序列进行M次操作,每次操作对序列的前若干个项进行升序或者是降序,求经过M次操作后得到的序列输入描述第一行包含两个整数N和M,1<=N,M<=10^5.第二行包含N个空格隔开的整数A[1]到A[N],1<=A[i]<=10^9接下来M行每行包含两个整数t和x,0<=t<=1,1<=x<=N,若t=0则表示对A[1]到A[x]进行升序排列,若t=1则表示对A[1]到A[x]进行降序排列输出描原创 2022-04-24 20:31:12 · 1395 阅读 · 0 评论 -
Java——关于序列化和反序列化的三问?
Java的序列化和反序列化是什么?**序列化:**把Java对象转换成成字节序列的过程**反序列化:**与序列化相对,把字节序列转换成对象的过程为什么需要序列化和反序列化?对象的持久化众所周知,java的对象是存放在堆内存中,如果JVM停机,那么堆内存就不复存在了,而对象也随之消失了,为了能在JVM停机的情况下,Java对象能够保留下来,便引入了序列化的概念,将Java对象转换成字节序列,保存在文件中,当需要该对象中,便从对应的文件中取出字节序列然后反序列化为对象。方便网络传输对于对象原创 2022-04-06 16:49:54 · 444 阅读 · 0 评论 -
@ControllerAdvice注解应用——控制器异常统一处理
当系统上线后,用户在发送请求时难免会出现异常,然后异常信息直接面向用户,则对用户来说有些不友好,于是定义了一个统一异常的处理器,这样所有加了@Controller注解的方法都可以进行异常的统一处理首先自定义控制器异常统一处理类 AllExceptionHandler//对加了@Controller注解的方法进行拦截处理 AOP的实现@ControllerAdvicepublic class AllExceptionHandler { //进行异常处理,处理Exception.class的异常原创 2022-03-27 15:09:30 · 794 阅读 · 0 评论 -
java——判断数组是否包含另一数组
//判断数组是否包含另一数组 public static boolean containArray(Long[] a, Long[] b) { boolean flag = false; int k = 0;/** * 统计b中包含a中的元素是否与a的元素个数相同 */ if (a.length < b.length) { for (int i = 0; i < a.length; i++) {原创 2022-03-15 15:10:46 · 4376 阅读 · 0 评论 -
BigDecimal.add方法不生效
代码一:BigDecimal theory_score = new BigDecimal(0.0);theory_score.add(bdJobContentAnswer.getScore());//bdJobContentAnswer.getScore 为20.0结果:theory_score = 0.0代码二:BigDecimal theory_score = new BigDecimal(0.0);theory_score = theory_score.add(bdJobContent原创 2022-03-15 14:56:13 · 3517 阅读 · 0 评论 -
JAVA——根据某日期获取周几
代码:public static int dateToWeek(Date date) { Calendar cal = Calendar.getInstance() cal.setTime(date); //因为数组下标从0开始,而返回的是数组的内容,是数组{1,2,3,4,5,6,7}中用1~7来表示,所以要减1 int week = cal.get(Calendar.DAY_OF_WEEK) - 1; if (week原创 2022-01-20 10:08:47 · 6464 阅读 · 0 评论 -
JAVA——树表遍历核心代码
注:取自若依框架分离版,在此以示学习实体类SysDeptpublic class SysDept extends BaseEntity{ private static final long serialVersionUID = 1L; /** 部门ID */ private Long deptId; /** 父部门ID */ private Long parentId; /** 祖级列表 */ private String ancestor原创 2021-12-29 15:36:44 · 271 阅读 · 0 评论 -
Errors和Exceptions区别
根据上图,我们可知,在Java中,所有的异常(包括错误)都有一个共同的祖先Throwable类。其下有两个重要的子类Exceptions和ErrorsExceptions:程序自身可以处理的异常,可以通过catch的方式捕捉,通常遇到异常时,对其进行处理,从而使程序正常运行(事物)。Exceptions又分为运行时异常(RuntimeException,又叫非受检查异常)和非运行时异常(又叫检查异常);Errors程序自身不能处理的异常,不能通过catch的方式捕捉。例如:系统崩溃、内存不足、堆栈.原创 2021-11-30 15:53:42 · 150 阅读 · 0 评论 -
Spring事物管理——声明式事务管理(注解式)
注:内容来自《JavaWeb应用开发基础教程》,在此仅用来学习Spring 支持编程式事务管理和声明式事务管理。编程式事务管理:使用代码进行事务管理声明式事务管理:使用注解或XML配置进行管理事物注:实际开发中要尽可能使用声明式事务管理。尽管不如编程式事务管理灵活,但声明式事务管理允许通过代码控制事物编程式事务管理Spring提供了两种编程式事务管理:使用TransactionTemplate;直接使用一个PlatformTransactionManager实现。Spring建议使用第一种原创 2021-11-23 20:01:16 · 335 阅读 · 0 评论 -
Mybaits——操作动态表名
参考博客:https://blog.csdn.net/qq_25221835/article/details/86711987参考代码:<select id="selectExamCfgById" resultMap="ExamCfgResult" statementType="STATEMENT"> select * from ${param1} where depcode = '${param2}'</select>关键:这里表名传值方式必须使用${原创 2021-10-08 16:04:12 · 146 阅读 · 0 评论 -
解决:Error resolving template [/xxx], template might not exist or might not be accessible by any of th
问题描述Error resolving template [/xxx], template might not exist or might not be accessible by any of the configured Template Resolvers 解决1仔细检查控制器的URL与静态页面对应的目录结构是否一致注:我这边是对应的解决2因为我的notice.html页面是copy的eroll页面然后重命名的,所以我就重新删除了notice.html页面,再新建改页面,然后重启原创 2021-09-29 10:49:57 · 2745 阅读 · 2 评论 -
SpringBoot——html调用thymeleaf实现数据的读取
1、新建service层@Service("name")public class NameService { @Autowired private UserService userservice; public List<User> list(){ return userservice.selectUserList(); }}注意加@Service("name")和 @Autowired两个注解,其中@Service中的name便是th原创 2021-09-15 16:14:03 · 1294 阅读 · 0 评论 -
SpringBoot——AOP实战之操作日志记录到数据库中
最开始要先在pom.xml中加入AOP依赖<!--spring切面aop依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>1、数据库中新建日志表sys_oper_log2、根据日志表新建实体类public原创 2021-09-14 17:08:27 · 2648 阅读 · 0 评论 -
SpringBoot——通过URL向控制层传值的两种方式
第一种jsvar url = "请求地址" +参数名1;控制层@GetMapping(value = {"请求地址/{参数名1}"})pubic void 方法名(@PathVariable("参数名1") 参数类型 参数名2){//参数名2是用来接收js传来的参数名1的值,它的名称可以不与参数名1相同}2、第二种jsvar url = "请求地址?参数名1="+参数值;控制层@RequestMapping(value = {"请求地址"})pubic void 方法名(参数原创 2021-08-20 16:21:53 · 715 阅读 · 0 评论 -
SpringBoot——基于Thymeleaf实现对字典数据的遍历
注:代码来自于若依框架—RuoYi-master实现效果字典表核心代码视图层:<select name="sex" th:with="type=${@dict.getType('sys_customer_sex')}"> <option value="">所有</option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictV原创 2021-08-19 16:58:34 · 1067 阅读 · 0 评论 -
SpringBoot——实现控制器向前端传值
注:代码来自于若依框架—RuoYi-master控制器层核心代码 @GetMapping("/edit/{customerId}") public String edit(@PathVariable("customerId") Long customerId, ModelMap mmap) { SysCustomer sysCustomer = sysCustomerService.selectSysCustomerByCustomerId(customerId); /原创 2021-08-19 16:40:59 · 700 阅读 · 0 评论 -
springmvc请求参数获取的几种方法
1、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。/** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @param username * @param password * @return */ @RequestMapping("/addUser1") public String addUser1(String username,String pas转载 2021-08-19 14:35:22 · 385 阅读 · 0 评论 -
validate教程——验证用户名称(或手机号等)是否已注册
效果图1、表sys_student中以注册用户:JieFighting2、添加学生页面3、添加已经注册的【学生名称】,该输入框失去焦点后出现提示信4、添加未注册的学生名称,输入框失去焦点后无提示信息2、validate基础使用引入jquery.min.js(网上很容易找到)引入 jquery.validate.js3、代码部分html <form class="form-horizontal m" id="form-student-add">原创 2021-08-10 10:25:10 · 731 阅读 · 0 评论 -
关于JRebel 激活
具体JRebel安装教程参考:https://blog.csdn.net/lmdsoft/article/details/93769089本文提供JRebel激活Demo JRebel address was:【http://jrebel.qekang.com:80/48dc7f8c-019f-4cb8-85d7-99b0134b69d0】, with any email.原创 2021-08-10 09:49:00 · 742 阅读 · 0 评论 -
基于若依框架(RuoYi-master)实现的的文件上传功能
官网文档注:在开发时,发现官方文档【上传下载】功能编写的不太准确,因而在此写篇文章以防日后以及看到的小伙伴们踩坑具体步骤如下:1、首先创建一张上传文件的表,例如:drop table if exists sys_file_info;create table sys_file_info ( file_id int(11) not null auto_increment comment '文件id', file_name var原创 2021-08-06 10:31:16 · 25508 阅读 · 21 评论 -
若依框架----代码生成(详解)
若依框架----代码生成官方开发手册:若依后台开发手册----代码生成具体流程:1、在若依框架对应的数据库中新建表sys_productdrop table if exists sys_product;create table sys_product ( product_id bigint(20) not null auto_increment comment '产品id', parent_id bigint(20) default原创 2021-08-02 15:07:28 · 19189 阅读 · 4 评论 -
Caused by: java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_ice
问题描述:Error querying database. Cause: java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_icelandic_ci,IMPLICIT) for operation ‘=’ ### The error may exist in file [E:\IDEA_workspace\RuoYi-Vue-master\ruoyi-generator\target\原创 2021-08-02 10:13:02 · 3809 阅读 · 2 评论 -
Session与Cookie之间的关系
为什么?客户端对服务器端的请求都属于http请求,这种请求都是无状态的,即服务端收到客户端的请求时,都是全新的请求,服务端并不知道该客户端的历史请求记录。所以当用户从客户端请求一次登录后,登录成功,再次进行请求时,因为tomcat不能识别这两次会话都是来自同一个浏览器,即服务端不知道客户端的历史请求记录;就会再次弹出登录对话框。Session与Cookie的提出都是为了弥补http的无状态性Session目的:为了弥补http的无状态性,同时储存用户在同一会话期间的操作记录session是在coo原创 2021-07-03 19:30:27 · 392 阅读 · 0 评论 -
数据持久化与ORM
什么是数据持久化?数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转化为数据模型的统称。简而言之,咱们之间对数据库的增删改查操作都数据数据的持久化。什么是ORMORM(Object/Relational Mapping),O代表Object,R代表Relational,M代表Mapping。ORM是一种数据持久化技术。它在对象模型与关系型数据库之间建立起对应的关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据。...原创 2021-05-14 16:18:31 · 382 阅读 · 0 评论 -
doGet()和doPost()方法有什么区别
doGet():GET方法会将参数名和值追加在请求的URL后面。因为URL对字符数目的限制,进而限制了用在客户端请求参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递doPost():POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过post方法传递的敏感信息对外部客户是不可见的简而言之:doGet:路径传参,效率高,传参数目有限,安全性差doPost:实体传参,效率低,传参数目不受限制,安全性高...原创 2021-05-12 11:56:14 · 924 阅读 · 0 评论 -
为什么使用同步以及同步方法和同步代码块的区别
1、为什么使用同步?Java支持多线程并发开发,当多个线程同时操作一个可共享的资源变量时(例如数据的增删改查),将导致数据的不准确,相互之间产生冲突,因此加入同步锁以避免该线程在没有完成之前,被其他线程调用,从而确保了变量的唯一性和准确性。2、同步方法使用synchronized关键字修饰的方法。**由于java的每个对象都有一个内置锁,当使用该关键字修饰的方法时,内置锁就会保护整个方法。**在调用该方法之前,需要获得内置锁,否则就处于阻塞状态。代码如下:public synchronized原创 2021-05-12 11:25:52 · 241 阅读 · 0 评论 -
线程的几种状态
可以用早起坐地铁的例子来比喻这个过程:1、还没起床:sleeping2、起床收拾好了,随时可以坐地铁出发:Tunnable3、等地铁来:Waiting4、地铁来了,但要排队上地铁:I/O阻塞5、上了地铁,发现在世没有座位:synchronized阻塞6、地铁上找到座位:Running7、到达目的地:Dead...原创 2021-05-12 11:10:26 · 158 阅读 · 0 评论 -
JAVA进程与线程的区别以及为什么需要创建线程及创建方式
1、进程与线程的区别进程是指一个正在运行的应用程序,线程是进程内部的执行序列,一个进程可以有多个线程,线程也可以称为轻量级进程举个例子:你打开了一个QQ,就相当于打开了一个进程,在QQ这个进程中,和别人聊天是一个线程,和别人发文件是一个线程,所以运行某个软件相当于打开一个进程,而在软件运行的过程中,“多个工作”支撑这个软件的运行,这里的多个工作就是指的多个线程2、为什么需要创建线程程序的运行需要依靠进程,而进程的运行单元是线程,所以多个线程可以提高程序(进程)的执行性能。通俗而言,就是说“人多力量原创 2021-05-11 16:20:26 · 267 阅读 · 0 评论 -
接口(interface)与抽象类(abstract class)的区别
接口(interface)与抽象类(abstract class)的区别1、定义接口的关键字是 interface,定义抽象类的关键字是abstract class2、从设计上来说,接口是对行为的抽象,抽象类是对事物的抽象3、一个类可以实现多个接口,但只能继承一个抽象类4、接口中的方法都是抽象的,抽象类的方法可以是抽象的也可以是非抽象的方法(已经实现的方法)5、抽象类可以包含静态方法,但是接口不可以6、接口和抽象类都可以定义变量,但是接口定义的变量必须是公共的、静态的、Final,而抽象类定义的原创 2021-05-11 15:59:12 · 1711 阅读 · 0 评论 -
JAVA的跨平台性以及机器码与字节码的区别
JAVA的跨平台性:java源程序通过javac编译器编译成一个二进制的.class字节码文件(java的跨平台性就是指的.class文件的跨平台性,该文件是与平台无关的)。.class文件再运行在JVM上,JVM将其翻译成二进制的机器码文件,再进行执行。所以java所谓的跨平台就是在不同的平台上安装了不同的JVM,而在不同的平台上生成相同的.class文件,而.class文件再通过对应平台的JVM解释成对应平台的机器码执行机器码与字节码的区别?机器码简而言之就是给机器读的二进制代码字节码是jav原创 2021-05-11 15:37:05 · 459 阅读 · 0 评论 -
“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static方法
“static”关键字表明了一个成员方法或者是成员变量可以在没有所属类的实例变量的情况下被访问1、java中不可以覆盖一个private方法,因为被private修饰的变量或者方法只能在当前类中使用,如果是其他的类继承当前类是不能访问到private修饰的变量和方法的,当然也不能覆盖2、Java中的static方法不能被覆盖,因为方法实在运行时动态绑定的,而static方法是在编译时静态绑定的。static方法跟类的实例不相关,所以概念上不适用...原创 2021-05-11 15:22:18 · 595 阅读 · 0 评论 -
day2021-3-23——JVM、JRE与JDK、环境变量、编译与运行、main方法、标识符
java 语言开发环境一、java虚拟机——JVM·JVM:java虚拟机,是运行所有java程序的假想计算机,是java程序的运行环境。我们编写的所有代码都运行在jvm上。·跨平台:任何软件的运行都要在操作系统上,而java编写的所有软件可以在任何操作系统上运行,这个特性叫做Java语言的跨平台特性注:java虚拟机本省不具有跨平台的特性,而是每个操作系统有不同版本的虚拟机二、JRE和JDK·JRE(Java Runtime Environment):是java程序的运行环境,包括JVM和运原创 2021-03-23 18:50:07 · 111 阅读 · 0 评论