自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis操作数据库(入门)

在应用分层学习中,我们了解web应用程序一般分为三层,即Controller、Service、Dao。在之前的案例中,请求流程如下:浏览器发起请求,先请求Controller,Controller接收到请求之后,调用Service进行业务逻辑处理,Service再调用Dao,但是Dao层的数据是Mock的,真实的数据应该从数据库中读取。我们学习MySQL数据库时,已经学习了JDBC来操作数据库,但是JDBC操作太复杂了。JDBC操作示例回顾创建数据库连接池DataSource。

2024-07-01 11:35:19 755

原创 验证码案例

验证码实现方式很多,可以前端实现,也可以后端实现,网上也有比较多的插件或者工具包可以使用,咱们选择使用Hutool提供的小工具来实现。Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。验证码功能位于cn.hutool.captcha包中,核心接口为ICaptchacreateCode创建验证码,实现类需同时生成随机验证码字符串和验证码图片getCode获取验证码的文字内容verify验证验证码是否正确,建议忽略大小写。

2024-06-08 18:49:12 687

原创 SpringBoot配置文件

为了更方便简单的访问数据库,出现了一些持久层框架,其实就是对JDBC进行了更深层次的封装,让用户通过几行简单代码就可完成数据库的访问。如果采用硬编码的方式,就直接在程序中指定字体大小,所有的用户使用的都是同一个字体大小,但是不同的用户有不同的偏好,我们可以把手机字体的大小放在配置文件中,当程序启动时,读取配置,以用户设置的字体大小来显示。的问题,把可能会改变的信息,放在一个集中的地方,当我们启动某个程序时,应用程序从配置文件中读取数据,并加载运行。使用单引号会转义,就是说,\n不再表示换行了。

2024-06-06 11:08:40 926

原创 Spring IoC&DI

在前面的章节,我们学到了Spring Boot和Spring MVC的开发,可以完成一些基本功能的开发了,但是什么使Spring呢?Spring、Spring Boot和Spring MVC又有什么关系呢?容器是用来容纳某种物品的装置。比如我们生活中的水杯,垃圾桶,冰箱这些都可比喻成容器。List/Map:数据存储容器Tomcat:Web容器。

2024-05-31 18:31:09 1099 1

原创 Cookie和Session

无状态的含义指的是:默认情况下HTTP协议的客户端和服务器之间的这次通信和下次通信之间没有之间的关系。但是实际开发中,我们很多时候是需要知道请求之间的关联关系的。例如登陆网站成功后,第二次访问的时候服务器就能知道该请求是否是已经登陆过了。上述图中的令牌通常就。例子:比如去医院挂号。

2024-05-23 17:47:59 1007

原创 Spring MVC

Spring MVC全程Spring Web MVC,它是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。它正式名称为Spring Web MVC,但它通常被称为Spring MVC,Spring MVC是一个WEB框架。MVC是Model View Controller的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为模式、视图和控制器三个基础部分。指在应用程序中专门用来与浏览器进行交互,展示数据的资源是应用程序的主题部分,用来处理程序中数据逻辑的部分。

2024-05-19 21:58:55 1049

原创 创建Spring Boot项目及配置

首先需要在IDEA插件里面搜索Spring,选择Spring Boot Helper,注意此插件是付费的,需要点击下图的Plugin homepage进入一个官网,随后选择下图框出来的版本进行下载就行,其它版本都是收费的,但是对IDEA的把呢不能有要求,在下图中有显示版本的范围,下载完成之后不要对此压缩包进行解压,直接在IDEA上将此压缩文件进行上传即可。在pom文件中,我们发现版本这有问题,我们首先可以尝试多刷新几次,看是否能够下载下来,如果下载多次都不行,可以去中央仓库进行查找该版本是否存在。

2024-05-10 13:01:20 469

原创 【将Maven源改为国内阿里云镜像源】

2、在settings.xml文件中,找到<mirrors>元素。如果你的settings.xml文件中没有<mirrors>元素,你需要手动添加它。它应该在<settings>元素内部,但不在任何其他元素内部。首先,你创建的项目需要依赖的包,会到你的本地仓库去查找,如果没有进行搜索到,就会到中央仓库去查找,在中央仓库搜索到了就会加载到你的本地仓库,然后你的项目就会在本地仓库中进行搜索到了,这也就是。3、在settings.xml文件中,mirrors中添加mirror块,进行配置,具体配置如下图。

2024-05-10 11:07:30 969

原创 Servlet原理&&Servlet API

Tomcat通过Socket读取到这个请求(一个字符串),并按照HTTP请求的格式来解析这个请求:根据请求中的Context Path确定一个webapp,再通过Servlet Path确定一个具体的类,再根据当前请求的方法(GET或者POST或其他)决定调用这个类的doGet或者doPost方法。service中根据请求的类型不同,调用不同的方法,doGet,doPost方法等等,会执行多次,每收到一次HTTP请求就执行一次。注意:响应对象是服务器要返回给浏览器的内容,这里的重要信息都是程序员设置的。

2024-04-03 16:40:18 747

原创 【Servlet基础】Servlet项目创建

Tomcat在调用doGet的时候,Tomcat就会解析这次的HTTP请求,生成一个HttpServletRequest对象,这个对象的属性啥的都是和HTTP协议格式匹配的,相当于Tomcat帮我们把HTTP请求解析好了,同时Tomcat也会构造出一个空的HttpServletResponse对象(此处的空对象不是null,而是一个new好但是没有初始化属性的对象),把这个resp对象也会传递到doGet里面。这里的1和3都是Tomcat帮我们实现的,我们写代码只关心2,也就是doGet要完成的工作。

2024-04-02 09:22:09 832

原创 HTTPS

HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层,HTTP的内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。

2024-03-29 09:54:32 2098

原创 HTTP协议

HTTP协议全称为超文本传输协议,就是可以传输文本及其它格式的数据,如音乐、图片、视频等,是一种广泛应用的应用层协议;对于应用层协议的解释: 将数据从A端传送到B端,TCP/IP协议相当于顺丰的功能,但是两端还要对数据进行加工处理或使用,所以还需要一层协议,不必关心通信的细节,只关心应用,这层协议就是应用层协议;我们平时打开的网站都是通过HTTP协议来传输数据的,HTTP协议是基于传输层TCP协议实现(HTTP1.0,HTTP1.1,HTTP2.0都是基于TCP,HTTP3.0基于UDP实现),

2024-03-28 09:30:30 1618

原创 网络编程之IP协议

这是一个域名解析协议,位于应用层简单来讲,DNS相当于一个翻译官,负责将域名翻译成ip地址。

2024-03-26 20:19:14 614

原创 TCP/UDP协议

程序员根据用户需求来制定的应用内部协议。

2024-03-20 17:15:20 994

原创 Socket套接字(实现TCP和UDP的通信)

Socket套接字,是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程。换句话说,一个Socket由一个IP地址和一个端口号唯一确定,利用Socket能比较方便的实现两端的网络通信。

2024-03-17 20:39:22 1309 1

原创 网络原理之初识

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。

2024-03-16 11:16:59 437 1

原创 文件操作-IO

文件路径可以是绝对路径和相对路径。绝对路径表示文件在文件系统中的完整位置,从根目录开始。相对路径表示文件相对于另一个文件或目录的位置。

2024-03-15 15:44:31 1595 1

原创 七大排序【java数据结构】

【本节目标】1、掌握七大基于比较的排序算法基本原理及实现2、掌握排序算法的性能分析3、掌握Java中常用的排序算法。

2023-11-15 21:06:28 42 1

原创 优先级队列(堆)

队列是一种先进先出(FIFO)的数据结构,但是在某些情况下,该场景下,使用队列显然不合适,例如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,。这种数据结构就是。

2023-11-07 14:20:44 39 1

原创 树与二叉树

遍历就是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问,访问结点所做的操作依赖于具体的应用问题(比如:打印结点内容),遍历是二叉树最重要的操作之一,是二叉树上进行其他运算的基础。N代表根结点,L代表根结点的左子树,R代表根节点的右子树,则根据遍历根节点的先后次序有以下几种遍历方式:(三种遍历方式的区别在于打印/访问根节点的时机不同)度为 0 的节点为 n0,度为 1 的节点为 n1,度为 2 的节点为 n2,因为是奇数个结点,所以度为1的结点个数为0,n1 = 0。int value;

2023-10-29 19:25:42 38 1

原创 【多线程进阶】常见的锁策略和CAS

ABA问题是指在使用ABA操作进行比较-交换时,如果变量在此期间被修改了两次及以上,那么CAS操作可能会出现误判。举一个栗子:假设存在两个线程t1和t2,有一个共享变量num,其初始值为A,step1:接下来线程t1想使用CAS把num值改为Z,那么需要的操作是先读取num的值,记录到oldNum变量中,step2:然后再使用CAS判断当前num的值是否为A,如果为A,就修改为Z,但是,

2023-10-13 19:30:23 35

原创 【多线程基础】线程池

创建线程池采用了工厂模式,用了ExecutorService的静态方法,因为不用这种方法的话,如果都传两个参数,编译器无法分辨线程池的特性,而采用工厂模式的话就可以随用随取。线程池主要功能就是提升程序的执行效率的,为了减少冗余的创建,就是减少每次启动、销毁线程的损耗。如果任务队列中的任务满了,再添加任务,我就会丢弃最老的任务,把新的任务添加进来。如果任务队列中的任务满了,再添加任务,就丢弃要添加的任务。:如果任务队列中的任务满了,再添加任务,谁添加的谁负责。workQueue:线程池的任务队列。

2023-10-10 12:54:26 39 1

原创 【多线程基础】定时器

1、一个带优先级的阻塞队列为什么要带优先级呢?因为阻塞队列中的任务都有各自的执行时刻,最先执行的任务一定是delay最小的,使用带优先级队列这种数据结构就可以高效把这个delay最小的任务找出来。2、队列中的每个元素是一个Task对象。3、Task中带有一个时间属性,队首元素就是即将要执行的任务。4、同时会有一个线程一直扫描队首元素,看队首元素是否需要执行。1、首先构建一个MyTask类,表示一个任务//取当前时刻的时间戳+delay,作为该任务实际执行的时间戳@Override。

2023-10-08 19:53:51 35 1

原创 【多线程基础】单例模式

单例模式是指在内存中只会创建一次对象的设计模式。在程序多次使用同一对象时,为了防止频繁的创建对象而增加资源的开销,但是单例模式就可以让程序在内存中只创建一个对象,让所有需要调用的地方都共享这一单例对象。

2023-10-08 17:20:51 38 1

原创 【多线程基础】wait和notify

notify() 方法也是一个 Object 类的方法,所有 Java 类也都默认继承了该方法,都可以调用该方法,这个方法也是被 final 修饰的,因此也不可被子类重写,子类只能使用 Object 的实现。wait()方法在调用当前线程之前获取所在对象的监视器锁🔒,如果没有获取对象的监视器锁,直接调用wait()方法,会抛出。wait()方法是Object类的一个方法,因此Java中的所有类都默认继承了该方法,也就是都能使用该方法。:wait()和sleep()都可以暂停线程的执行。

2023-10-06 12:04:46 42 1

原创 【多线程基础】Thread类的基本用法

上一篇文章我们讲了Java关于进程和线程的区别和联系,接下来给大家分享一些线程是如何创建的以及线程的一些基本用法!

2023-10-05 21:59:37 37

原创 【多线程基础】进程与线程间的区别和联系

PS3:现在我们只有一个房间,安排两个滑稽老铁进行吃50只鸡,就相当于创建了两个线程,那么吃鸡的效率就大大提升了,并且此方式吃鸡的开销就小很多啦。PS2:现在我们有两个房间,就相当于创建了两个进程,安排两个滑稽老铁进行吃鸡,每人吃50只鸡,吃鸡的效率是提高了,但是此方式吃鸡的开销比较大。4、进程之间具有隔离性,一个进程挂了不会影响到别的进程,同一个进程里的多个线程之间,一个线程挂了可能会把整个进程带走,进而影响到其他线程。3、进程是操作系统资源分配的基本单位,线程是操作系统调度执行的基本单位。

2023-09-27 22:45:04 55 1

原创 数组中数字出现的次数

数组中数字出现的次数

2022-10-06 22:09:59 233 7

原创 模拟实现memmove函数

模拟实现memmove

2022-09-27 00:03:04 144

原创 结构体的内存对齐方式

结构体的内存对齐方式

2022-09-17 23:53:20 260

原创 左旋转字符

字符串的旋转

2022-08-10 22:39:01 158 2

原创 三子棋小游戏

三子棋小游戏

2022-07-31 23:36:57 54 1

原创 统计二进制中1的个数

统计二进制中1的个数

2022-07-29 17:55:25 142 2

原创 C:位段~

位段以及位段的存取方式

2022-06-08 20:55:01 65 1

settings.xml文件

settings.xml文件

2024-05-10

空空如也

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

TA关注的人

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