自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 LeeCode 3. 无重复字符的最长子串

而当我们右指针再次遍历到b这个字符时,因为Set中已经有这个字符了我们就要让左指针移动,来实现不重复的字符,也就是"滑动的窗口"此时移动之前的左右指针之间的字符为abc.因为左指针遍历到的是b,此时表中的字符为bc,我们把b删去,length也要减一,但max的不变.而右指针看到表中已经有b,所以左指针继续遍历,到下一个。而当左指针移动时,左右指针的字符为bc,我们把表中a字符删去,右指针判断表中还有b,自己还不能加,所以左指针继续遍历.这个时候表中为bc,length可以加1,.然后右指针继续遍历.

2024-09-19 23:29:18 288

原创 关于shortlink项目重构增加了del_time字段自己出现的问题

2.del_time作为唯一索引不要写死了,不然就无法创建短连接了,这里我是将del_time修改成date类型,然后通过new date()来实现的,这样就不会写死然后又能保证唯一索引不会报异常.这就是目前我出现的问题,改了解决之后就不会一直报短连接生成重复的异常了,之前一直报这个异常就是因为del_time被写死成0L导致只能创建一次,后面就成功不了了.最近刚做完shortlink项目的重构问题,其中增加del_time作为t_link表的唯一索引要注意几点问题.将他修改成了date类型。

2024-08-18 22:45:27 265

原创 关于聚合两个服务的路径不能一样的问题

SpringBootApplication聚合了project和admin.这就要注意了,他们两个如果有相同的controller。这个时候他们Mapping里的路径不能够一样,不然系统没法判断是去project的还是admin的.必须要更改成才可以.在shortlink的聚合服务中,聚合project和admin两个项目如下图。这个问题困扰了我几天,最终还是问了别人才得到解决.这是admin的:(我已经更改过的)

2024-08-18 18:46:10 143

原创 原子性是什么意思

总之,原子性是指一个操作能够不受并发操作干扰地一气呵成地执行完毕或不执行,能够保证数据的正确性和一致性。在多线程编程中,保证操作具备原子性非常重要,可以通过使用锁、原子操作等方法来实现。在计算机科学中,原子性是指一个操作(或一组操作)不可被中断地执行完毕或不执行。具有原子性的操作不会受到其他并发操作的干扰,能够保证数据的一致性和正确性。在多线程编程中,原子性非常重要,因为如果一个操作不具备原子性,可能会导致数据出现错误或者不一致的情况。线程A将x的值加1,得到1。线程B将x的值加1,得到1。

2024-08-12 11:23:21 384

原创 Java之BigInteger的用法

Java之BigInteger用法BigInteger在Java中用于操作大整数,当一个数超过了Long表示的最大范围时就可以考虑使用BigInteger来操作。BigInteger的使用方法很多,也可以用于进制转换的一些操作,本文记录了一些BigInteger的常用方法。一、常用方法方法名 作用add();相加subtract();相减multipy();相乘divide();相除取余pow();n次方abs();绝对值negate();相反数。

2024-08-08 11:16:07 230

原创 @RequestBody与@RequestParam

RequestBody: 提取的数据可以是复杂类型,如自定义的Java对象、Map、List等,通常是用于反序列化JSON或XML数据为Java对象。@RequestParam: 从HTTP请求的查询参数中提取数据,即从URL中的?key=value形式的参数中获取数据。@RequestBody: 从HTTP请求的请求体(body)中提取数据,通常用于接收JSON、XML等格式的数据。@RequestBody: 通常用于处理POST请求中的非表单数据,例如JSON格式的数据,或者XML格式的数据。

2024-08-01 19:26:20 423

原创 Mysql随记

那么此时磁盘数据较新,需要手动执行flush privileges 语句来覆盖内存中的授权数据。对表mysql.user执行。

2024-07-23 23:26:21 462

原创 新年快乐!学习Java第84天,Maven工程继承和聚合关系

通过在父工程中为整个项目维护依赖信息的组合既保证了整个项目使用规范、准确的 jar 包;Maven 继承是指在 Maven 的项目中,让一个项目从另一个项目中继承配置信息的机制。构建和发布一组相关的项目:通过聚合,可以在一个命令中构建和发布多个相关的项目,简化了部署和维护工作。使用同一个框架内的不同 jar 包,它们应该是同一个版本,所以整个项目中使用的框架版本需要统一。统一管理依赖项:通过聚合,可以在父项目中管理公共依赖项和插件,避免重复定义。在父工程中统一管理项目中的依赖信息。

2024-01-01 20:12:54 833

原创 学习Java第80天,基于IDEA 进行Maven依赖管理

Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。总之,Maven 的依赖管理是 Maven 软件的一个核心功能之一,使得软件包依赖的管理和使用更加智能和方便,简化了开发过程中的工作,并提高了软件质量和可维护性。下载和管理依赖,从而避免了手动下载和管理依赖的繁琐工作和可能引发的版本冲突问题。位置:pom.xml。

2023-12-28 23:20:30 570

原创 学习Java第74天,Ajax简介

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。AJAX 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。XMLHttpRequest 只是实现 Ajax 的一种方式。

2023-12-19 11:34:32 917

原创 学习Java第70天,过滤器Filter简介

Filter,即过滤器,是JAVAEE技术规范之一,作用目标资源的请求进行过滤的一套技术规范,是Java Web项目中最为实用的技术之一Filter接口定义了过滤器的开发规范,所有的过滤器都要实现该接口Filter的工作位置是项目中所有目标资源之前,容器在创建HttpServletRequest和HttpServletResponse对象后,会先调用Filter的doFilter方法。

2023-12-15 16:52:34 927

原创 学习Java第68天,MVC架构模式理论简介

用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。实体类包(pojo /entity /bean) 专门存放和数据库对应的实体类和一些VO对象。数据库访问包(dao/mapper) 专门存放对数据库不同表格CURD方法封装的一些类。在前后端分离的项目中,后端已经没有视图文件,该层次已经衍化成独立的前端项目。存放和数据库对象的实体类以及一些用于存储非数据库表完整相关的VO对象。MVC模式下,项目中的常见包。

2023-12-13 17:03:55 183

原创 学习Java第66天,路径问题

后拼接src属性值(../../../static/img/logo.png),其中 ../可以抵消一层路径,正好是目标资源正常获取的url(相对路径情况3:web/WEB-INF/views/view1.html中引入web/static/img/logo.png。相对路径情况2:web/a/b/c/test.html中引入web/static/img/logo.png。绝对路径情况2:web/a/b/c/test.html中引入web/static/img/logo.png。

2023-12-11 17:10:40 108

原创 学习Java第64天,乱码问题

乱码问题产生的根本原因是什么数据的编码和解码使用的不是同一个字符集使用了不支持某个语言文字的字符集由上图得知,上述字符集都兼容了ASCIIASCII中有什么?英文字母和一些通常使用的符号,所以这些东西无论使用什么字符集都不会乱码。

2023-12-08 17:07:25 290

原创 学习Java第64天,请求转发和响应重定向

什么是请求转发和响应重定向请求转发和响应重定向是web应用中间接访问项目资源的两种手段,也是Servlet控制页面跳转的两种手段请求转发通过HttpServletRequest实现,响应重定向通过HttpServletResponse实现请求转发生活举例: 张三找李四借钱,李四没有,李四找王五,让王五借给张三响应重定向生活举例:张三找李四借钱,李四没有,李四让张三去找王五,张三自己再去找王五借钱。

2023-12-08 15:22:22 135

原创 学习Java第62天,HttpServletRequest&HttpServletResponse

HttpServletRequest是什么HttpServletRequest是一个接口,其父接口是ServletRequestHttpServletRequest是Tomcat将请求报文转换封装而来的对象,在Tomcat调用service方法时传入HttpServletRequest代表客户端发来的请求,所有请求中的信息都可以通过该对象获得HttpServletResponse是什么HttpServletResponse是一个接口,其父接口是ServletResponse。

2023-12-06 17:12:13 396

原创 学习Java第60天,ServletConfig和ServletContext

容器会为每个Servlet实例化一个ServletConfig对象,并通过Servlet生命周期的init方法传入给Servlet作为属性。为Servlet提供初始配置参数的一种对象,每个Servlet都有自己独立唯一的ServletConfig对象。ServletContext对象有称呼为上下文对象,或者叫应用域对象(后面统一讲解域对象)容器会为每个app创建一个独立的唯一的ServletContext对象。ServletContext可以为所有的Servlet提供初始配置参数。

2023-12-04 17:35:25 104

原创 学习Java第57天,Servlet的基本使用步骤

HttpServletResponse 代表响应对象,该对象会被tomcat转换为响应的报文,通过该对象可以设置响应中的信息。HttpServletRequest 代表请求对象,是有请求报文经过tomcat转换而来的,通过该对象可以获取请求中的信息。Servlet并不是文件系统中实际存在的文件或者目录,所以为了能够请求到该资源,我们需要为其配置映射路径。Servlet对象的生命周期(创建,初始化,处理服务,销毁)是由tomcat管理的,无需我们自己new。/a/* 匹配所有以a前缀的映射路径。

2023-11-29 21:25:54 133

原创 学习Java53天,JDBC中工具类封装v2,以及BaseDao

针对DQL查询和非DQL进行,分成两类。

2023-11-25 20:23:26 220

原创 学习Java第53天,JDBC中preparestatement使用

【代码】学习Java第53天,JDBC中preparestatement使用。

2023-11-25 15:53:04 48

原创 学习Java第52天,JDBC中statement的使用基本步骤

【代码】学习Java第52天,JDBC中statement的使用基本步骤。

2023-11-24 15:11:39 113

原创 学习Java第49天,MySQL常见函数与分组函数

【代码】学习Java第49天,常见函数与分组函数。

2023-11-21 18:25:11 43

原创 学习Java第48天,MySQL条件查询与排序查询

案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号。或not: 如果连接的条件本身为false,结果为true,反之为false。||或or: 只要有一个条件为true,结果为true,反之为false。#3.查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序。#案例:查询员工信息,要求先按工资降序,再按employee_id升序。#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资。简单条件运算符:> < =!

2023-11-20 15:57:43 78

原创 学习Java第45天,MySQL基础查询的常见知识

SELECT last_name AS 姓,first_name AS 名 FROM employees;SELECT last_name 姓,first_name 名 FROM employees;只要其中一方为字符型,试图将字符型数值转换成数值型。只要其中一方为null,则结果肯定为null。SELECT CONCAT('a','b','c') AS 结果;1、查询列表可以是:表中的字段、常量值、表达式、函数。#案例:查询员工名和姓连接成一个字段,并显示为 姓名。

2023-11-17 21:11:08 39

原创 学习Java第43天,lamba表达式与StreamAPI

> 的右边:lambda体,对应着重写的方法的方法体。-> 的左边:lambda形参列表,参数的类型都可以省略。> Stream API 关注的是多个数据的计算(排序、查找、过滤、映射、遍历等),面向CPU的。> 一方面,lambda表达式作为接口的实现类的对象。---> "万事万物皆对象"-> 的左边: lambda形参列表,对应着要重写的接口中的抽象方法的形参列表。-> 的右边: lambda体,对应着接口的实现类要重写的方法的方法体。> 如果接口中只声明有一个抽象方法,则此接口就称为函数式接口。

2023-11-15 20:57:12 31

原创 学习Java第42天,反射的应用

步骤3.通过Method实例调用invoke(Object obj,Object ... objs),即为对Method对应的方法的调用。4. (了解)反射的应用4:通过反射获取注解的信息(见com.atguigu04.other.annotation包的测试)2.2 (熟悉)获取运行时类的内部结构2:父类、接口们、包、带泛型的父类、父类的泛型等。> 场景1:子类对象在实例化时,子类的构造器的首行默认调用父类空参的构造器。3. (掌握)反射的应用3:调用指定的结构:指定的属性、方法、构造器。

2023-11-15 16:55:00 30

原创 学习Java第41天,反射的理解与Class类

负责加载从java.ext.dirs系统属性所指定的目录中加载类库,或从JDK的安装目录的jre/lib/ext子目录下加载类库。> 因为反射体现了动态性(可以在运行时动态的获取对象所属的类,动态的调用相关的方法),所以我们在设计框架的时候,> 从我们作为程序员开发者的角度来讲,我们开发中主要是完成业务代码,对于相关的对象、方法的调用都是确定的。比如:加载到内存中的Person类或String类或User类,都作为Class的一个一个的实例。因为类的完整结构都加载到了内存中,所有我们就有能力进行调用。

2023-11-13 21:59:47 44

原创 学习Java第40天,对象流

将文件中的数据或网络传输过来的数据还原为内存中的Java对象。DataOutputStream:可以将内存中的基本数据类型的变量、String类型的变量写出到具体的文件中。DataInputStream:将文件中保存的数据还原为内存中的基本数据类型的变量、String类型的变量。对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,② 类中的属性如果声明为transient或static,则不会实现序列化。③ 要求自定义类的各个属性也必须是可序列化的。

2023-11-12 15:08:34 26

原创 学习Java第40天,转换流

向下兼容ascii,意味着英文字符、1、2、3、标点符号仍使用1个字节。向下兼容ascii,意味着英文字符、1、2、3、标点符号仍使用1个字节。字符解码:字节、字节数组 ---> 字符、字符串、字符数组(从我们看不懂的--->我们能看得懂的)字符编码:字符、字符串、字符数组---> 字节、字节数组(从我们能看得懂的--->我们看不懂的)ascii:主要用来存储a、b、c等英文字符和1、2、3、常用的标点符号。gbk:用来存储中文简体繁体、a、b、c等英文字符和1、2、3、常用的标点符号等字符。

2023-11-12 14:19:03 27

原创 学习Java第40天,缓冲流

读取:int read(char[] cbuf/byte[] buffer) : 每次将数据读入到cbuf/buffer数组中,并返回读入到数组中的字符的个数。写出:void write(String str)/write(char[] cbuf):将str或cbuf写出到文件中。抽象基类 4个节点流 (也称为文件流) 4个缓冲流(处理流的一种)第1步:创建File的对象、流的对象(包括文件流、缓冲流)1. 基础IO流的框架。提升文件读写的效率。

2023-11-12 12:52:51 25

原创 学习Java第39天,File类的使用

public File(String pathname) :以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。如果此文件目录的上层目录不存在,也不创建。* public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。* public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。

2023-11-11 21:03:19 29

原创 学习Java第38天,HashMap的底层源码剖析

情况2,情况3:(key1,value1)元素与现有的(key2,value2)构成单向链表结构,(key1,value1)指向(key2,value2)首先,需要调用key1所在类的hashCode()方法,计算key1对应的哈希值1,此哈希值1经过某种算法(hash())之后,得到哈希值2。操作的时间复杂度为O(logn),比单向链表的时间复杂度O(n)的好。> LinkedHashMap在HashMap使用的数组+单向链表+红黑树的基础上,又增加了一对双向链表,记录添加的(key,value)的。

2023-11-10 21:04:36 31

原创 学习Java第38天,ArrayList的源码小解析

/底层初始化数组,长度为10.Object[] elementData = new Object[10];查找和添加(尾部添加)操作效率高,时间复杂度为O(n) (有可能添加操作是O(1))如果开发中,大体确认数组的长度,则推荐使用ArrayList(int capacity)这个构造器,避免了底层的扩容、复制数组的操作。//如下代码的执行:底层会初始化数组,数组的长度为10。//如下代码的执行:底层会初始化数组,即:Object[] elementData = new Object[]{};

2023-11-10 21:01:15 23

原创 学习Java第38天,泛型的使用

1. 类SuperA是类A的父类,则G<SuperA> 与 G<A>的关系:G<SuperA> 和 G<A>是并列的两个类,没有任何子父类的关系。一旦指明了泛型的具体类型,则在集合的相关的方法中,凡是使用类的泛型的位置,都替换为具体的泛型类型。2. 类SuperA是类A的父类或接口,SuperA<G> 与 A<G>的关系:SuperA<G> 与A<G> 有继承或实现的关系。> 可以看做是G<A>类型的父类,即可以将G<A>的对象赋值给G<?即A<G>的实例可以赋值给SuperA<G>类型的引用(或变量)

2023-11-10 20:59:07 24

原创 学习Java第36天,集合中HashMap的使用

可以按照添加的key-value中的key元素的指定的属性的大小顺序进行遍历。> HashMap中的所有的value彼此之间是可重复的、无序的。> HashMap中的所有的key彼此之间是不可重复的、无序的。|---- HashMap:主要实现类;java.util.Map:存储一对一对的数据(key-value键值对,(x1,y1)、(x2,y2) --> y=f(x),类似于高中的函数)- Object remove(Object key):移除指定key的key-value对,并返回value。

2023-11-08 21:41:06 34

原创 学习Java第35天,集合中list与set

不再是考虑hashCode()和equals()方法了,也就意味着添加到TreeSet中的元素所在的类不需要重写hashCode()和equals()方法了。> 比较元素大小的或比较元素是否相等的标准就是考虑自然排序或定制排序中,compareTo()或compare()的返回值。比较的标准,需要判断hashCode()得到的哈希值以及equals()得到的boolean型的结果。可以按照添加的元素的指定的属性的大小顺序进行遍历。这里是根据添加的元素的哈希值,计算的其在数组中的存储位置。

2023-11-07 22:21:13 33

原创 学习Java第34天,集合中迭代器的使用与增强for循环

/next():①指针下移 ② 将下移以后集合位置上的元素返回。> 增强for循环的执行过程中,是将集合或数组中的元素依次赋值给临时变量,注意,循环体中对临时变量的修改,可能。for(要遍历的集合或数组元素的类型 临时变量 : 要遍历的集合或数组变量){> 针对于集合来讲,增强for循环的底层仍然使用的是迭代器。1. 迭代器(Iterator)的作用?不会导致原有集合或数组中元素的修改。用来遍历集合元素的。用来遍历数组、集合。

2023-11-06 21:51:09 44

原创 学习Java第34天,集合与Collection接口

java.util.Map:存储一对一对的数据(key-value键值对,(x1,y1)、(x2,y2) --> y=f(x),类似于高中的函数)因为Collection中的相关方法(比如:contains() / remove())在使用时,要调用元素所在类的equals()。|-----子接口:List:存储有序的、可重复的数据 ("动态"数组)|-----子接口:Set:存储无序的、不可重复的数据(高中学习的集合)> 数组中的多个元素是依次紧密排列的,有序的,可重复的。

2023-11-06 21:49:37 34

原创 学习Java第32天,StringBuffer与StringBuilder

底层使用char[] (jdk8及之前),底层使用byte[] (jdk9及之后)底层使用char[] (jdk8及之前),底层使用byte[] (jdk9及之后)> 如果开发中大体确定要操作的字符的个数,建议使用带int capacity参数的构造器。底层使用char[] (jdk8及之前),底层使用byte[] (jdk9及之后)...不断的添加,一旦count要超过value.length时,就需要扩容:默认扩容为原有容量的2倍+2。//实际存储的字符的个数。今天是第32天,感觉学的东西好多好累啊!

2023-11-04 21:10:32 35

原创 学习Java第30天,一个月!线程的同步机制

必须保证一个线程a在操作ticket的过程中,其它线程必须等待,直到线程a操作ticket结束以后,其它线程才可以进来。线程1操作ticket的过程中,尚未结束的情况下,其他线程也参与进来,对ticket进行操作。> 需要被同步的代码,在被synchronized包裹以后,就使得一个线程在操作这些代码的过程中,其它线程必须等待。但是,多个线程必须共用同一个同步监视器。> 如果操作共享数据的代码完整的声明在了一个方法中,那么我们就可以将此方法声明为同步方法即可。> 需要被同步的代码,即为操作共享数据的代码。

2023-11-02 22:02:30 26

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除