自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 问答 (1)
  • 收藏
  • 关注

原创 自拟实现消息队列(MQ)基于Rabbit MQ(含概念和源码)巨详细!!!!!含思维导图

MQ是消息队列(Message Queue)的缩写,是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。在这里我手搓了一个MQ是属于基础,但是对于理解MQ一定是一篇好文章

2023-09-25 21:06:33 426

原创 博客系统(Spring Boot)汇总,含源代码

博客系统是干什么的?CSDN就是一个典型的博客系统。而我在这里就是通过模拟实现一个博客系统,这是一个较为简单的博客系统,但是主要功能一个不缺,不过就是 UI 有些 low,我学习前端是为了写后端更加顺手。不至于前后端完全分离,但是有个问题,设计的 web 页面不是很好看。这张图是我的根据业务需求,制作出来的业务流程图。:登录用户,注册用户,查看文章,查看自己的所有文章(在这个页面里面,可以删除自己的文章,修改文章,阅读文章等功能),创建一个新的文章,注销当前用户。:对数据库进行增删改查。

2023-09-13 18:51:45 55

原创 博客系统(升级(Spring))(四)(完)基本功能(阅读,修改,添加,删除文章)(附带项目)

博客系统是干什么的?CSDN就是一个典型的博客系统。而我在这里就是通过模拟实现一个博客系统,这是一个较为简单的博客系统,但是主要功能一个不缺,不过就是 UI 有些 low,我学习前端是为了写后端更加顺手。不至于前后端完全分离,但是有个问题设计的 web 页面不是很好看。首先我将整体的业务流程展现我们继博客系统(二)继续,编写,到了主页的业务逻辑了接下来的流程是通过,网页端,后端统一数据结构交互的数据结构。后端首先在主页中需要注意的是,我在这里添加了分页功能,如何解决分页问题,诺是将整个数据库里的文

2023-09-11 13:12:25 476

原创 博客系统(升级(Spring))(三)登录功能,注册功能,注销功能

而我在这里就是通过模拟实现一个博客系统,这是一个较为简单的博客系统,但是主要功能一个不缺,不过就是 UI 有些 low,我学习前端是为了写后端更加顺手。注销功能比较简单,只要将回话信息中对应的session给删了就行了。接下来的流程是通过,网页端,后端统一数据结构交互的数据结构。我们继博客系统(二)继续,编写,到了主页的业务逻辑了。将前端数据插入数据库,通过数据库验证密码的准确性。同样的编写mapper接口,调用数据库。"两次密码不一致,请先检查!//将后端返回的结果展示给用户。"请先输入确认密码"

2023-09-10 14:57:16 427

原创 博客系统(升级(Spring))(二)获取当前用户信息、对密码进行加密、设置统一数据格式、设置未登录拦截、线程池

博客系统是干什么的?CSDN就是一个典型的博客系统。而我在这里就是通过模拟实现一个博客系统,这是一个较为简单的博客系统,但是主要功能一个不缺,不过就是 UI 有些 low,我学习前端是为了写后端更加顺手。不至于前后端完全分离,但是有个问题设计的 web 页面不是很好看。首先我将整体的业务流程展现我们继博客系统(一)继续,编写。

2023-09-10 13:34:58 356

原创 博客系统(升级(Spring))(一)创建数据库,创建实例化对象,统一数据格式,统一报错信息

而我在这里就是通过模拟实现一个博客系统,这是一个较为简单的博客系统,但是主要功能一个不缺,不过就是 UI 有些 low,我学习前端是为了写后端更加顺手。再vo的包中创建一个UserinfoVO,这个包继承于Userinfo ,相当于对Userinfo 进行了扩充。在model包下建立两个类,Userinfo ,Articleinfo ,并且在包下创建一个vo的包。(不使用也是可以的,看自己的需求)如何安装使用Redis,具体看我的Redis文章。有考试的同学不会创,可以看我的 Spring 相关的文章。

2023-09-09 23:09:33 157

原创 Java多线程(四)锁策略(CAS,死锁)和多线程对集合类的使用

所以呢ConcurrentHashMap,在此基础上,诺put触发扩容机制,就会一次性创建更大的内存空间,然后搬运一部分,此时就相当于存在两个hash表,此时对表操作,插入是对新表插入,删除是对旧表(看元素在那个表上)删除,查找是新旧表都查。基础逻辑是,非必要不加锁。锁的粒度,synchronized代码块,包含代码的多少(代码越多,粒度越粗,越少,粒度越细),多数情况希望锁的粒度更小。线程1的外部锁加锁,需要等待线程2内部锁释放,同理线程2外部锁加锁,需要等待线程1内部锁释放,此时逻辑矛盾,产生死锁。

2023-09-09 00:05:28 126

原创 Java多线程(三)多线程的模式--(阻塞队列,定时器,线程池)

不知道各位有没有打游戏,王者农药肯定都听过,其中有个事情,在游戏早期,它出了一款皮肤,这个皮肤很受玩家喜欢,再上线的那一刻,众多玩家,蹲点购买。被static修饰,该属性是类的属性(类对象上),JVM中,每个类的对象只有唯一一份,类对象的成员自然也是唯一一份。private将new操作给静止掉,在类内部把实例创建好同事静止外部重新创建实例,此时,就可以保证单例的特性。队列与具体业务无关,队列中的某一个线程挂了,不影响其他线程,比如电脑有时候网页会卡,但是某些功能还在运行。单线程:核心思想,非必要,不创建。

2023-09-09 00:01:43 117

原创 Java多线程(二)线程安全

可以看到,第一个,t1的load执行后,t2的load开始执行了,然后执行t2的add操作,和save操作,再然后才执行t1的add操作和save操作。大家肯定学过数学,那么对于组合,肯定是有过了解的。而可重入其实就是,有人厕所上完了,但是他很缺德,将门锁了,然后呢,他突然发现他包忘哪了,回去后他在厕所门口等着,结果等了半天,里面的人死活不出来。简单理解就是,目前有一个厕所,但是有很多要上厕所,怎么办,抢呗,总不可能等着膀胱爆炸吧,等待厕所里的人出来,并且打开厕所门,然后一群人看谁快,谁快谁就先如厕。

2023-09-08 23:59:21 186

原创 Java多线程(一)多线程概要

在冯诺依曼体系下,整个计算机设备分为,应用程序,操作系统,处理器(cpu),主存,I/O设备。应用程序在操作系统的调节下在处理器上进行合理的资源分配,而在其中一个运行起来的程序,就是进程。cpu有一个概念,核心数和线程,核心为物理核心,线程为逻辑核心而进程管理其实分为两步:1.描述一个进程:使用结构体或类,把一个进程有哪些信息,表示出来。2. 组织这些进程:使用一定的数据结构,把这些结构体/对象,放在一起。

2023-09-08 23:57:50 206

原创 java(五)继承和多态,抽象类与接口,异常(javaSE完)

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。共性的抽取,实现代码复用。父类:又叫基类,也叫超类子类:又叫派生类修饰符 class 子类 extends 父类 {// .. . }父类int age;System.out.println(name + "正在吃饭");

2023-09-08 23:47:25 179

原创 Java(四)数组与类和对象

1.数组是引用类型(通过地址寻找)2.下标从0~数组长度-13.数组中元素类型与数组类型一致类是用来对一个实体(对象)来进行描述的,比如一个人(实体(对象)),但是一个人又有脖子(类),手(类),脚(类),眼睛(类)等,这样我们就对一个人进行了完整的刻画。当然人(对象)也是不同的。比如,我和你都是人,但是我们脖子或许有些不同。

2023-09-08 23:45:06 177

原创 Java(三)逻辑控制(if....else,循环语句)与方法

1.常用for,if,while,等逻辑控制2.switch,case,break,要一起用3.break终止当前循环,continue跳出这次循环所以在这是Java就引入了一个概念,方法,将一个代码用方法装起来,等需要用的时候就将,方法名放入带到要使用的代码中,通过这个方法名调用这个代码。修饰符返回值类型方法名称([参数类型 形参 …]){方法体代码;[return 返回值];public(公开)

2023-09-08 23:41:30 409

原创 Java(二)数据类型与变量以及运算符

由基本类型存储空间就可以了解到,他们的存储大小不同。存储的数据量也有所不同强制类型装换:小—>大(可以),大—>小(可能可以,危险度高)引用数据类型(后面讲String就是引用数据类型String(俗称字符串类型)不是基本数据类型在运算中为了不必要的歧异,我建议在复杂运算时最好加上(),以到达你想要的算数优先级。

2023-09-08 23:39:26 233

原创 Java(一)安装并使用 java(Windows)

源文件名后缀是.java类名与文件名不一致(编译器会报错)main方法名字写错:mian(主方法就只有一个)类没有使用public修饰(为什么后面会说)方法中语句没有以分号结尾(重要,而且所有字符必须用英文输入法)中文格式的分号JDK环境没有配置好,操作系统不能识别javac或者java命令。

2023-09-08 23:33:43 256

原创 网络原理(二)TCP的可靠传输

当 A 1001-2000 这个数据重传后,B 收到了就会 传一个7001这个ACK,因为,数据只是缺了1001-2000这一段,补上之后,不用传关于这个段的 ACK,根据滑动窗口特点,后一个 ACK 就能表示他前面的数据已经到达 B。原则是,客户端发送一个消息,需要等待服务器的ACK,但是因为延迟等待,数据实际上已经上传了,并且也处理好了,按照一般逻辑就是,将处理好的数据,返回给客户端,之前 ACK 还没有返回给客户端,那么此时 ACK 就会捎带着服务器处理好的数据返回给客户端。走的就比之前的车要快。

2023-09-08 14:04:55 710

原创 网络原理(一)网络基础,包括IP ,网络相关的定义

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。P地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。格式:通常是一个32位的二进制数,被分割成4个8位二进制IP地址分为两个部分,网络号和主机号。

2023-09-06 22:24:22 1280

原创 Java网络编程(二)Socket 套接字(TCP和UDP),以及TCP的回显

全双工:一条路径,双向通信半双工:一条路径,单向通信网络传输数据的基本单位:报(Datagram)、包(Packet)、段(Segment)、帧(Frame)Socket 对象,相当于系统中Socket文件,这个文件并非对应到硬盘上的某个数据存储区域,而是对应到网卡这个硬件设备。

2023-09-05 23:21:32 450

原创 Java网络编程( 一 )数据如何在网络上传输

发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机收发端:发送端和接收端两端,也简称为收发端

2023-09-05 18:16:29 150

原创 Java文件操作

这里的文件是指硬盘中的文件。比如:aaa.txt文件就是一个在硬盘中存储的文件。

2023-09-04 00:36:53 41

原创 redis(初级)跳跃表,redis安装,缓存,分布式锁,持久化,数据淘汰,事务,多机部署

在分布式存储的服务器中一个应用在一台服务器上进行实现,运行,并且加锁的话,那么相应的对于其他服务器而言,他们也有相同的应用也需要进行加锁,而此时我们平常的加锁是对于一个服务器来说进行加锁,所以此时的需求就需要我们进行对同时多个服务器进行加锁。所谓的持久化就是将数据从内存保存到磁盘的过程,它的⽬的就是为了防⽌数据丢失。1.会话存储:保存用户的登录信息,原本的session里存储会话,只支持一次,诺是在分布式下,会使得,用户登录需要将这些分布式服务器都登录才可以,而redis就能很好的解决这个问题。

2023-08-21 01:19:15 48

原创 Spring事务

声明式事务的实现很简单,只需要在需要的⽅法上添加@Transactional 注解就可以实现了,⽆需⼿动开启事务和提交事务,进⼊⽅法时⾃动开启事务,⽅法执⾏完会⾃动提交事务,如果中途发⽣了没有处理的异常会⾃动回滚事务。事务隔离级别是保证多个并发事务执⾏的可控性的(稳定性的),⽽事务传播机制是保证⼀个事务在多个调⽤⽅法间的可控性的(串行)(稳定性的)● 脏读:⼀个事务读取到了另⼀个事务修改的数据之后,后⼀个事务⼜进⾏了回滚操作,从⽽导致第⼀个事务读取的数据是错误的。此时就认为正常情况,就不会滚了。

2023-08-17 15:52:21 26

原创 Spring AOP(动态代理)

使用注解:@Aspect使用注解 @PointcutAspectJ ⽀持三种通配符( * ) :匹配任意字符,只匹配⼀个元素(包,类,或⽅法,⽅法参数)(. .) :匹配任意字符,可以匹配多个元素 ,在表示类时,必须和 * 联合使⽤。(+) :表示按照类型匹配指定类的所有类,必须跟在类名后⾯,如 com.cad.Car+ ,表示继承该类的所有⼦类包括本身。

2023-08-16 21:38:11 31

原创 MyBatis

MyBatis (ORM 对象关系映射框架)是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录。JDBC 的操作太繁琐了,所以我们需要一个更加简单,更加方便,更加快速的操作数据库的方法。MyBatis底层是基于JDBC。

2023-08-16 01:12:46 23

原创 Spring MVC(一)原理,获取客户端数据,返回客户端数据,重定向和转发

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中.MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种,它把软件系统分为模型、视图和控制器三个基本部分。1.用户的请求首先点到Controller2.Controller将请求转发给Model3.Model 处理业务并将数据结果给Controller4.Controller会将数据给View引擎。

2023-08-15 00:20:28 27

原创 Spring Boot(二)日志和lombok

那么如何自定义日志?在程序中得到⽇志对象。(日志工程得到日志对象)使⽤⽇志对象的相关语法输出要打印的内容(通过日志对象提供的打印方法实现打印)日志级别⽇志级别可以帮你筛选出重要的信息。⽇志级别可以控制不同环境下,⼀个程序是否需要打印⽇志,如开发环境我们需要很详细的信息,⽽⽣产环境为了保证性能和安全性就会输⼊尽量少的⽇志,⽽通过⽇志的级别就可以实现此需求。trace:微量,少许的意思,级别最低;(级别最低)debug:需要调试时候的关键信息打印;(调试日志级别)

2023-08-14 18:07:51 14

原创 Spring Boot(一)创建和配置文件作用

SpringBoot是快速开发Spring的一个框架。安装Spring Boot Helper,建议用2021.3.2版本的IDEA。(高版本的idea安装一些插件需要收费)这是安装好Spring Boot Helper插件后的变化。如果没有那个像叶子的东西,就是没有安装Spring Boot Helper的插件。安装后就有了。此时依赖就创建完毕看此时就加载完毕了,如果发现没有下好,重点关注两个问题:1.将自己的网络换一个信号好一点的(因为要下载依赖)

2023-08-14 15:17:50 28

原创 Spring(二)Bean的作用域与生命周期

假设现在有⼀个公共的 Bean,提供给 A ⽤户和 B ⽤户使⽤,然⽽在使⽤的途中 A ⽤户却“悄悄”地修改了公共 Bean 的数据,导致 B 用户在使⽤时发⽣了预期之外的逻辑错误。我们预期的结果是,公共 Bean 可以在各⾃的类中被修改,但不能影响到其他类,实际并不是。因为进行了浅拷贝,如果是深拷贝就不存在这个问题。更主要的原因是Bean对象默认是单例模式。在程序运行中这个对象只有一个。

2023-08-14 01:18:21 11

原创 Sping(一)基础

全篇文章包括,Spring项目的创建,Maven项目的创建,Spring框架理论基础,Spring的注解用法,和注意事项

2023-08-13 21:45:08 14

原创 认识JVM

JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。常见的虚拟机:JVM、VMwave、Virtual Box。

2023-08-11 22:59:54 59 1

原创 博客设计(项目后端)

构造http请求有很多方式1.地址栏,输入url2.特殊的html标签,a,img,link,script3.form (form 会跳转页面,只支持get和post)4.ajax (ajax不会跳转页面(可以使用js跳转) Location.assign(“login.html”);5.其他语言编写的客户端。

2023-08-09 18:07:04 38 1

原创 Servlet,session(Tomcat提供的API接口)

servlet是tomcat给我们提供的一组操控HTTP协议的API。Servlet 就是 Tomcat 这个 HTTP 服务器提供给 Java 的一组 API, 来完成构建动态页面这个任务。

2023-08-08 15:41:40 36

原创 Tomcat

HTTP 是前后端交互的桥梁,而后端也可以叫HTTP服务器,其本质上就是一个TCP服务器,而这个服务器按照http协议的约定,解析请求,构造响应,而网络上有很多开源的HTTP服务器可以直接使用。比如Apache社区开源的http服务器,也是现在最为流行的服务器。

2023-08-07 15:31:58 12 1

原创 HTTP协议和HTTPS加密

从而拿到客户端的key。通过服务器给浏览器返回cookie的数据,当我的浏览器访问服务器的时候,浏览器会在http响应中,通过Set-Cookie字段,把Cookie的键值对,返回给浏览器,浏览器收到数据,就会存到本地存储。但是有一个重要的问题:ajax的跨域问题,及现在运行ajax代码的页面是123.com,但是ajax里的请求,访问的域名是456.com,此时哪怕服务器给你数据,浏览器也不能处理,要报错。但我们作为一个专业的程序员,我们就应该去选择一个专业的工具,这里呢,我推荐大家使用fiddler。

2023-08-06 21:56:13 24

原创 java多线程

在冯诺依曼体系下,整个计算机设备分为,应用程序,操作系统,处理器(cpu),主存,I/O设备。应用程序在操作系统的调节下在处理器上进行合理的资源分配,而在其中一个运行起来的程序,就是进程。cpu有一个概念,核心数和线程,核心为物理核心,线程为逻辑核心而进程管理其实分为两步:1.描述一个进程:使用结构体或类,把一个进程有哪些信息,表示出来。2. 组织这些进程:使用一定的数据结构,把这些结构体/对象,放在一起。

2023-08-03 22:03:31 54 1

原创 Mysql,sql语句,索引,联合查询,函数,事务,

(内容很多,但大部分都是如何操作)我认为会用就行,除非真心想搞数据库,否则大概率这篇文章是够用的。顺便我自我复习一下。主要是复习,所以很多都不实际演示截图了。自己去数据库敲一下最好。

2023-07-28 13:15:55 55 1

原创 泛型(包装类),反射,枚举,lambda表达式

就是适用于许多许多类型,从代码上讲,就是对类型实现了参数化那么泛型的本质是什么呢?在java中所有的类都继承于Object这个父类所以我们就可以在通过创建一个Object的数组。虽然在这种情况下,当前数组任何数据都可以存放,但是,更多情况下,我们还是希望他只能够持有一种数据类 型。而不是同时持有这么多类型。所以,泛型的主要目的:就是指定当前的容器,要持有什么类型的对象。让编译器去做检查。此时,就需要把类型,作为参数传递。需要什么类型,就传入什么类型。语法:class泛型类名称类型形参列表。

2023-07-26 17:45:00 46 1

原创 HashMap以及二叉搜索树(Map和Set)

HashMap,TreeSet,哈希值,哈希冲突,负载因子调节

2023-07-25 22:52:58 45

原创 优先级队列(堆)PriorityQueue,堆排序

kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki = K2i+2) i = 0,1,2…将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。比如在一个队列的的几个元素中,按照以前我们要不从头出,要不从尾出,但是突然有一个需求,想要某一类的数据先出,此时就需要用到一个种特殊的数据结构(优先级队列)从1中的公式,我们在数组中就可以随便指定一个数组下标,然后找到他的父亲下标。

2023-07-25 01:10:19 67

原创 二叉树的深度理解

到难点了,个人认为初阶数据结构最难的点就在于二叉树,所以我尽量写的详细,清楚一些。包括遍历,以及层序遍历。树的高度,树子叶结点,以及元素的求法

2023-07-21 23:55:54 71 1

空空如也

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

TA关注的人

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