自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣刷题日记——L83. 删除排序链表中的重复元素

今天是力扣刷题打卡的第四天,今天带来一道简单题。一开始做了一道中等难度的题,但是很遗憾,没有解出来,但是为了不耽误今天的打卡计划,所以先选一个简单题做了,回头做出来那道题再和大家分享。话不多说进入正题吧。

2024-03-14 21:55:43 413

原创 力扣刷题日记——L238.除自身以外数组的乘积

今天是力扣刷题的第三天啊,必须上点难度,不然太简单都容易刷腻了。题型依旧是数组类型,经过这几道数组类型的洗礼渐渐摸出点门道来了,给大家分享一下心得体会。

2024-03-13 21:21:37 429

原创 力扣刷题日记——L724. 寻找数组的中心下标

今天是力扣刷题日记的第二天,今天依旧是一道简单题啊,慢慢来,先看看题目是什么吧。给你一个整数数组 nums ,请计算数组的 中心下标。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。

2024-03-12 21:57:51 952

原创 力扣刷题日记——L66.加一

从今天开始打卡力扣,每天一道力扣题,然后将解题思路分享出来,纯原创。和我一起力扣打卡吧!

2024-03-11 23:20:51 383

原创 一次学习引发我对于 synchronized 的再理解

我最近在学习 Java 并发编程,正好学习到 synchronized 锁这一块。在学习过程中由于对问题理解不够透彻产生了偏差,经过思考之后终于捋顺了,思考的过程可能有一些参考意义,希望能给大家一些启发。

2024-02-21 22:38:39 992

原创 5分钟快速掌握 XML (Extensible Markup Language)

在Java开发的过程中,我们经常需要和配置文件打交道,其中接触最多的就是XML。从最初学习 JavaWeb 时在 Tomcat 中配置servlet,到后来接触Spring框架并在XML中编写各种配置,XML一直是不可或缺的一部分。然而,XML的复杂性给我留下了深刻的印象:它有众多的标签和属性,而且每种场景下的标签和属性都有所不同。更令人困惑的是,标签中还存在大量的xmlns属性,后面跟着一串网址,让人摸不着头脑。

2024-02-03 14:57:22 1410

原创 手撕JavaWeb服务器02——静态资源的访问与解析

web浏览器最初的功能就是展示静态的网页,通过这篇文章,你能更清晰地了解一个静态的页面是如何由浏览器发送请求,并通过服务器的响应发送到浏览器的。

2024-01-22 09:30:28 601

原创 手撕JavaWeb服务器01——对一个请求的简单响应

2024年对于自己来说是一个新的开始,从今年开始我将会专注于技术能力的提升,以博客的方式记录自己成长的脚步。今年的主线就是这个专栏——手撕 JavaWeb 服务器系列。我将会以一个后端开发者的视角去探索 Web 服务器的底层运行机制,通过猜想->实践->验证的基本流程去学习,即以 JavaWeb 服务器所具备的各种能力,去猜想它的实现原理,然后通过实践去实现,最后去看看已有的开源项目(tomcat、jboss等)的源码并思考如此设计的原因。

2024-01-19 17:57:59 871

原创 深入解析 Java 方法引用:Lambda 表达式的进化之路

方法引用是 Java 8 提供的一种新特性,它允许我们更简洁地传递现有方法作为参数。这项特性实际上是对 Lambda 表达式的一种补充,通过方法引用,我们可以直接引用现有方法,而无需编写完整的Lambda表达式。最近在使用方法引用的过程中有了一些感悟,这里希望以文章的形式记录下来,与大家分享。

2024-01-19 17:43:45 955

原创 为什么 Java 数组不支持先声明后初始化?

Java 数组的声明形式有以下两//第一种,int[] arr;//第二种int arr[];Java数组的初始化有以下几种//静态初始化int[] arr = new int[]{1,2,3};//简化形式int[] arr = {1,2,3}//动态初始化int[] arr = new int[3];静态初始化的简化形式是编译器对Java代码进行的优化,在编译时,如果使用了静态初始化的简化版,编译器会在编译时自动加上缺少的部分。示例:上图是源码,下图为编译之后的代码

2021-09-13 19:16:56 382

原创 对字符编码过滤器,SpringMVC前端控制器,以及关于<init-param>标签的理解

简介今天开始项目实战练习,对一个月前学习的SSM框架知识进行加固,所以对一些问题也研究的比较细致,废话不多说,开始本篇博客主题本次主题是对web.xml的解析第一部分 字符编码过滤器先上图<filter>: 定义一个过滤器<filter-name>: 定义过滤器的名字<filter-class>: 过滤器所在位置<init-param>: 初始化一对键值对参数<param-name

2021-01-01 21:26:11 2040

原创 Mybatis中可以在 select 标签中写 update语句,并且还能执行成功?

问题描述这里记录一个问题:就是 mybatis 中,因为自己的粗心在select中使用了 update 语句,但是系统却并没有报错,并且执行成功。数据库中的数据也修改完成了。实验然后我就对这个问题进行了一些实验,包括在 delete 标签中使用 update 语句,在 insert 标签中使用 update 语句 等等。实验结果是,这些语句全都顺利执行,没有异常产生结论在 mybatis 中,标签的定义并不意味标签中的语句一定与标签对应。标签的作用在于,让 SqlSession 类

2020-10-29 16:10:15 5018 1

原创 环境变量中删除Java,cmd中还是能用Java相关命令;jdk版本的更换过程中,更改环境变量,用命令查看版本时,还是原来的版本等问题。

问题概述今天遇到一个这样的问题:公司的Java环境和我电脑中的Java环境不一样,所以要对jdk版本进行更换。但是在环境变量中做出修改之后,重新启动cmd,用 Java -version 查看jdk的版本是发现,jdk的版本还是之前的版本再次查看了环境变量中的值,并把Java的环境变量全部删除之后,仍然能够时候Java命令,并且 Jdk的版本还是没有变化解决办法在Java安装过程中,如果你之前的Java用的是软件安装的方式,那么软件就会在环境变量中添加一条,指向C盘的Java.exe j

2020-09-23 15:48:11 924

原创 docker容器数据卷 容器间的通信问题,子容器与父容器的数据共享原理

容器的挂载 # 运行时挂载容器 docker run -v 挂载的目录 镜像id # 详解 -v 参数 -v 容器内路径 #匿名挂载 -v 容器卷名:容器内路径 # 具名挂载 -v 宿主机路径:容器内路径 # 指定路径挂载小节:如果不指定宿主机路径,容器挂载在宿主机内的路径会出现在/var/lib/docker/volumes/xxx/_data,xxx表示为挂载容器卷的名字,如果是匿名挂载,则会生成一串随机的代号,可通过docker inspect 容器id查看具体的信息,这里就不多加说明

2020-06-08 21:34:29 322

原创 Java学习09——代理模式和监听器

概念:真实对象:被代理的对象代理对象:被调用的对象代理模式:代理这真是对象,达到增强真实对象功能的目的实现方式:静态代理:有一个类文件描述代理模式动态代理:在内存中形成代理类实现步骤:代理对象和真实对象实现相同的接口代理对象 = Proxy.newInstance();使用代理对象调用方法增强方法增强的方式:增强参数列表增强返回值类型增强方法体执行逻辑...

2020-06-04 10:54:19 301

原创 会用Chrome的硬刷新吗?Chrome刷新不起作用?Chrome刷新没有变化?

描述一下我遇到的问题今天在学JavaWeb过滤器的时候,遇到了一个问题,就是添加了过滤器刷新页面之后,css和js等页面没有被拦截。这是很奇怪的一件事。然后我怀疑是不是因为css文件和js文件等资源没那么需要过滤,所以现在版本的过滤器不过滤这些文件了?去找了相关资料,发现不是这个原因,找了好久才发现,chrom浏览器,会在请求相同位置的资源时,直接用缓存里的数据。所以即使被拦截还是有css样式,不论怎么刷新都没有用。解决方法方法一:打开F12用鼠标右击左上角的刷新键然后点击硬刷新

2020-06-03 22:13:07 628

原创 Java学习08——过滤器filter

Filter:过滤器当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 一般用于完成通用的操作,如:登陆验证、统一编码处理、敏感字符过滤等。过滤器代码编写一般流程定义一个类,实现Filter接口复写方法配置拦截路径...

2020-06-03 16:22:29 206

原创 三层架构

三层架构界面层(表示层):面向用户的界面。用户可以通过界面上的组件和服务器进行交互业务逻辑层:处理业务逻辑的数据访问层:操作数据存储文件...

2020-05-05 11:23:07 140

原创 JavaServlet学习07——JSTL(JavaServer Pages Tag Library)

JSTL概念:JavaServer Pages Tag Library (jsp标准标签库)是由Apache组织提供的开源免费的jsp标签作用:用于简化和替换jsp页面上的Java代码使用步骤:...

2020-05-05 10:48:34 129

原创 java学习06——Jsp之EL表达式

EL表达式概念:Expression Language 表达式语言作用:替换和简化jsp页面中Java代码的编写语法:${表达式}jsp默认支持EL表达式,如果要虎烈EL表达式(即使得EL表达式不起作用)设置jsp中page指令中:isELIgnored="true"忽略当前页面中所有的el表达式${表达式}:忽略当前这个表达式作用:运算运算符:运算符:+ - *...

2020-05-01 08:57:55 161

原创 数据结构学习笔记01——数据结构的定义,数据结构的相关概念

前言数据结构在学什么?如何用程序代码把现实世界的问题信息化如何用计算机高效地处理这些信息从而创造价值绪论数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料数据元素:是数据的基本单位,通常作为一个整体考虑和处理。一个数据元素可由若干数据项组成,数据项是构成数元素不可分割的最小单位举例:对...

2020-04-30 06:39:07 207

原创 java学习Servlet05——MVC开发模式

MVC开发模式jsp演变历史 1. 早期只有servlet,只能使用response输出html格式的文本数据(响应体)给浏览器,由浏览器来分析。 2. 后来有了jsp,简化了Servlet的开发(实际上就是封装了这么一个过程,本质上还是由servlet去输出HTML格式的文本),简化了Servlet的开发。但是如果过度使用jsp,在jsp中既写html表,造成难于维护,难于分工协作。 3...

2020-04-29 17:00:52 91

原创 Java学习之servlet04——会话技术,cookie,session,jsp的九大对象

会话技术会话:一次会话中包含了多次的请求和响应。一次会话:指浏览器第一次给服务器发送请求,会话建立,知道有一方断开为止。功能:在一次会话的范围内的多次请求间共享数据理解:因为请求响应是无状态的,也就是说多次请求响应之间是相互独立的,当需要多次请求和响应共同去完成一件事情的时候,就需要会话技术去实现。分类(在Java中):客户端会话技术:Cookie服务器端会话技术:Session...

2020-04-29 16:37:09 177

原创 Java学习之Servlet03——ServletContext对象

概念:代表整个Web应用,可以和程序的容器来通信获取:通过request.getServletContext();通过HttpServlet获取:this.getServletContext();功能:获取MIME类型:MIME类型:在互联网通信过程中定义的一种文件类型格式:大类型/小类型例如:text/html表示村文本的html格式的文件类型 image/jp...

2020-04-16 18:10:52 86

原创 Java学习之servlet02之response重定向,输出字符数据到浏览器,验证码,中文乱码问题解决

response重定向概念:浏览器访问服务器资源,服务器响应,返回302状态码和资源所在路径代码是实现// 1.设置状态码为302respomse.setStatus(302);//2.设置响应头response.setHeader("location","资源路径");显然,上面的代码在进行重定向时操作时,只有资源路径是根据资源的不同会有所变化,而其他地方的写法是固定的,所以为...

2020-04-16 10:21:07 292

原创 数据结构与算法学习01之前缀表达式(波兰表达式)、中缀表达式、后缀表达式(逆波兰表达式)

前缀表达式(波兰表达式)概念:前缀表达式的运算符位于操作符之前举例:(3+4)*5-6,对应的前缀表达式就是 - * + 3 4 5 6前缀表达式的计算机求值:从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算付对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈:重复上述过程知道表达式最左端,最后运算得出的值即为表达式的结果。例如:(3+4)*5...

2020-04-15 17:30:44 1372

原创 Java数据结构与算法解题集(持续更新)

题目1正文: 输入一个字符串类型的算术表达式子,返回一个数值,表示它的计算结果例如:输入:“7+1021+4-5” ,输出:72。思路分析:首先需要遍历这个字符串,然后将每一个字符都进行判断然后分类如果是一个数字改如何处理?如果是一个运算符又如何处理?显然,这里的难点在于运算符是有优先级的,当前运算符能否直接运算取决于下一个运算符的优先级,所以我们得根据下一运算符的优先级来...

2020-04-15 11:15:15 244

原创 java学习之Servlet01之response对象(HTTP响应消息)

HTTP响应消息概念:服务器端发送给客户端的数据数据格式:响应行 响应头 相应空行 响应体和请求消息对应:请求行,请求头,请求空行,请求体2.响应字符串格式HTTP/1.1 200 响应行Content-Type: text/html;charset=UTF-8Content-Length: 85Date: Mon, 13 Apr 2020 05:10:52 GMT...

2020-04-13 20:26:44 166

原创 Java学习值jdbc07_Beanutils工具类的介绍与使用

Beanutils工具类:用于封装javaBean的一个工具类javaBean是什么?标准的Java类类必须被public修饰必须提供空参的构造器成员变量必须使用private修饰提供公共的setter和getter方法javaBean的作用:封装数据相关概念成员变量:java类中定义的变量属性:属性大多数时候与成员变量是一个概念,但是有些地方还是会有一些区别,属性指...

2020-04-13 11:48:40 98

原创 Java学习之jdbc06_SprintJDBC_Template_javaBean

Spring JDBCSpring 框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发步骤:导入依赖jar包创建JdbcTemplate对象,依赖于数据源DataSource调用JdbcTemplate的方法来完成(CRUD)操作update():执行DML语句。增、删、改操作queryForMap():查询结果会被封装为Map集合...

2020-04-12 12:44:57 132

原创 Java学习之jdbc05_JDBC连接池c3P0、druid

数据库连接池概念:其实就是一个存放数据库连接对象的容器(集合)。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,就可以直接从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器,和线程池的概念类似。优点:节约对象用户访问高效实现:标准接口:javax.sql.DataSource方法:获取连接:getConnection()归还连接...

2020-04-11 08:41:54 70

原创 java学习之jdbc04_事务管理

JDBC的事务管理开启事务 :setAutoCommit(false):设置自动提交为false执行sql提交事务:commit();回滚:rollback();以上方法都由Connection对象提供代码举例:try {// 1.获取connection对象 conn=JDBCUtilsDemo.getConnection();// ...

2020-04-10 08:17:42 72

原创 Java学习之JDBC03_JDBC工具类——JDBCUtils理解与编写

为什么要编写JDBCUtils这个类?在学习代码的过程中,有一个很重要,但是几乎人人都知道的思想,那就是不要重复造轮子。这个思想体现在编程学习的各个方面,其本质就是减少重复劳动,省下时间来做更多的不重复的事情。小到一个方法,一个类,大到一个jar包,一个框架,都有体现。在用JDBC连接数据库时,一般都会有这么几步// 1.注册驱动,jar包里的META-INF下面的services...

2020-04-09 18:55:57 170

原创 Java学习之JDBC_02_详解JDBC中的各个对象DriverMannager、Connection、Statement、ResultSet、PreparedStatement

DriverManager:驱动管理对象注册驱动:告诉程序该使用哪一个数据库驱动.jarstatic void registerDriver(Driver driver):注册与给定的驱动程序 DriverMannager。写代码时使用:Class.forName(“com.mysql.jdbc.Driver”);通过查看源码发现:在com.mysql.jdbc.Driver 类中存...

2020-04-08 19:28:56 258

原创 MySQL学习笔记08之DCL管理用户,授权,修改用户密码

管理用户添加用户语法:CREATE USER '用户名'@‘主机名' IDENTIFIED BY '密码';删除用户语法: DROP USER '用户名'@'主机名';修改用户密码:语法:UPDATE user SET PASSWORD = PASSWORD('新密码') WHERE USER='用户名'或者SET PASSWORD FOR '用户名'@'主机名'...

2020-04-07 18:00:37 301

原创 MySQL学习笔记07之事务

事务的基本介绍概念:如果包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。例子:张三给李四转账500元查询张三账户余额是否大于500张三账户 余额-500李四账户 金额+500显然这些操作是需要同时成功或者同时失败的,假如只是执行了其中的几步操作,而没有全部执行,账户的数据就会不对等。操作开始事务:START TRANSACTION回滚:RO...

2020-04-07 17:12:02 89

原创 MySQL学习笔记06之多表查询

多表查询的语法SELECT 列表列表FROM 表名列表WHERE 查询条件sql举例:SELECT * FROM 表1,表2,...;这样查询出来的结果是多张表的笛卡尔积,加入表1中有2条数据,表2中有3条数据,则表1中的每条数据都会和表2中的数据匹配,总共的数据就是2*3=6条数据,这种查询的结果就叫做笛卡尔积。但是显然这种结果中的很多数据往往是错误的,和现实逻...

2020-04-07 10:46:32 67

原创 MySQL学习笔记05之多表之间的关系(数据库设计)

多表之间的关系一对一(工作中比较少出现)例如:人和身份证之间的关系一对多(多对一)例如:部门和员工之间的关系多对多例如:学生和课程之间的关系关系的实现一对多在‘多’的一方建立外键,指向‘一’的一方的主键多对多多对多的关系实现需要借助第三张中间表,中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。一对一实现方式:一对一关系实现,可以在任意一方...

2020-04-05 14:50:20 164

原创 光学不练假把式,MySQL练习之SQL操作(持续更新)

前言学习了几天的MySQL,发现只是看视频记笔记的话,很多内容根本记不住。即使记住一些,对于SQL命令也只是有一点模糊的概念,没有深刻的理解。前面一句是通常的理解,学了肯定要练习嘛。后面一句是练习之后发现的,本来不想写这篇笔记的,但是做题的时候发现自己对一些SQL语句的用法有了很多新的理解,想要写下来。这里要贴一下题目的原帖经典SQL练习题MySQL版,然后有任何侵权的问题,希望告知,我会立即...

2020-04-03 18:07:49 429

原创 MySQL学习笔记04之约束

约束概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性分类主键约束:primary key含义:非空且唯一一张表只能有一个字段为主键主键就是表中记录的唯一标识删除主键:ALTER TABLE TABLE_NAME PRIMARY KEY非空约束:not null表示这一列的值不能为空删除非空约束:ALTER TABLE TABLE_NAME MODIFY C...

2020-04-02 21:07:28 86

空空如也

空空如也

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

TA关注的人

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