自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis(三):常见数据类型:List、Set、Zset

List 列表列表类型是用来存储多个有序的字符串,如图:a、b、c、d、e 五个元素从左到右组成 了⼀个有序的列表,列表中的每个字符串称为元素(element),⼀个列表最多可以存储个元素。在 Redis 中,可以对列表两端插⼊(push)和弹出(pop),还可以获取指定范围的元素列表、 获取指定索引下标的元素等列表是⼀种⽐较灵活的数据结构,它可以充当栈和队列的⻆⾊,在实际开发上有很多应⽤场景Redis列表(Lists)类型的特点如下:有序性:Redis列表是按照插入顺序来保存元素的。

2023-12-06 11:03:12 1494

原创 Redis(二):常见数据类型:String 和 哈希

Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维⾮常重要,同时掌握每种数据结构的常⻅命令,会在使⽤ Redis 的时候做到游刃有余。Redis 的命令有上百种,我们不可能全部死记硬背下来,但是如果理解了 Redis 的以下机制,会发现这些命令有很强的通用性。

2023-11-28 18:58:04 1356

原创 Redis(一):初始Redis

Redis 的全称是 Remote Dictionary Server,Redis是一个开放源代码、内存数据结构存储系统,被广泛应用于缓存、消息队列、实时统计等场景。Redis使用C编写,支持多种数据结构,例如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。Redis支持许多高级特性,例如事务处理(transactions)、Pub/Sub(发布/订阅)模式、Lua脚本、持久化、自动故障转移等。

2023-11-25 11:39:58 1096

原创 消息队列(六):服务器设计

紧接着上一章没说完的进行服务器的补充。

2023-09-17 15:24:00 1137

原创 消息队列(五):虚拟主机设计

由于 Java的函数不能脱离类的存在,为了实现 lambda 表达式, Java 引入了函数式接口如何实现?interface只能有⼀个⽅法还需要加 @FunctionalInterface 注解一个虚拟主机种,有很多队列,每个队列上都有很多消息。那么针对是哪个消费者订阅了哪条队列的消息需要进行一个管理。

2023-09-15 11:20:32 1032

原创 消息队列(四):内存管理

借助内存中的一些数据结构,对交换机、队列、绑定、消息,广泛使用了哈希表、链表、嵌套等数据结构等。在线程安全那一块,我们需要考虑,需不需要加锁,不加锁会造成什么后果,锁应该加到哪些?这些问题需要谨慎考虑清楚,再去使用。此外,上述代码都是交由 MemoryDataCenter 这个类进行管理的。

2023-09-14 11:39:30 1099

原创 消息队列(三):硬盘管理

我在第一章提到过:关于持久化那一块,在内存存储主要是获取比较方便,在硬盘上存储主要是为了长时间存储。关于内存管理又分两部分:数据库管理和文件管理(主要是和消息有关)。

2023-09-13 19:05:14 1330

原创 消息队列(二):创建核心类及数据库操作

我们核心类主要有四个:交换机、队列、绑定、消息。这四个核心类还可以继续向下划分。除了这几个还有其他的核心类,先介绍这些,等后面讲到了相关功能实现后面再补充。

2023-09-13 12:06:23 1175

原创 消息队列(一):需求分析

什么是消息队列?为什么要做这样一个项目?本来有个分布式系统,A服务器 调⽤ B服务器(A给B发请求,B给A返回响应)===》 A 和 B 的耦合是⽐较⼤的!引⼊消息队列后,A把请求发送到消息队列,B再从消息队列获取到请求;此时就算 A 或者 B 崩溃了,都不会影响到对方⽐如A是⼊⼝服务器,A 调⽤ B 完成⼀些具体业务,如果是 A 和 B 直接通信,如果突然A 收到⼀组⽤户的请求的峰值,此时 B 也会随着受到峰值引⼊消息队列后,A把请求发送到消息队列,B再从消息队列获取到请求。

2023-09-12 16:23:33 1081

原创 Spring(五):Spring Boot 的配置和日志

Spring Boot中的配置文件起到了非常重要的作用。在Spring Boot中,可以通过配置文件来配置应用程序的一系列属性,包括数据库连接、服务器端口号、日志级别等等。通过配置文件,可以方便地对应用程序进行配置管理和集中管理。另外,Spring Boot中还支持多种配置文件格式,包括properties、yaml、json等,可以根据实际情况选择使用适合自己的配置文件格式。同时,Spring Boot还提供了一系列注解和工具类,可以方便地读取和解析配置文件的内容,使配置文件的使用变得更加简单和灵活。Sp

2023-09-12 11:39:06 1325

原创 Spring(四):Spring Boot 的创建和使用

Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。Spring Boot 翻译⼀下就是 Spring 脚⼿架,什么是脚⼿架呢?如下图所示盖房⼦的这个架⼦就是脚⼿架,脚⼿架的作⽤是砌筑砖墙,浇筑混凝⼟、⽅便墙⾯抹灰,装饰和粉刷 的,简单来说,就是使⽤脚⼿架可以更快速的盖房⼦。⽽ Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。

2023-08-20 18:03:33 3763

原创 Spring(三):Spring中Bean的生命周期和作用域

在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 bean 的定义以及 bean 相互间的依赖关系将通过配置元数据来描述。

2023-08-14 11:15:35 3860

原创 Spring(二):更简单的存储与读取 Bean

a. 使⽤类注解:@Controller、@Service、@Repository、@Configuration、@Component【它们之间的关系】b. 使⽤⽅法注解:@Bean【注意事项:必须配合类注解⼀起使⽤】⾸字⺟和第⼆个字⺟都⾮⼤写,⾸字⺟⼩写来获取 Bean,如果⾸字⺟和第⼆个字⺟都是⼤写,那么直接使⽤原 Bean 名来获取 Bean。a. 属性注⼊b. Setter 注⼊c. 构造函数注⼊(推荐)出身不同;

2023-07-24 10:32:27 4312

原创 后端(四):博客系统项目

咱们在这里实现的是后端项目,前端代码就提一提,不全做重点介绍

2023-07-22 16:34:26 5627 2

原创 Spring(一):Spring 的创建和使用

List/Map -> 数据存储容器Tomcat -> Web 容器Spring 也是⼀个容器,Spring 是什么容器呢?Spring 是⼀个 IoC 容器IoC = Inversion of Control 翻译成中⽂是“控制反转”的意思,也就是说 Spring 是⼀个“控制反转”的容器,怎么理解这句话呢?控制(权)反转,指的是:对象的生命周期的控制权(原本属于程序员/代码片段控制),现在交给了Spring容器控制或者是IoC 容器控制。

2023-07-18 16:17:24 4759

原创 后端(五):JVM

JVM也就是我们俗称的八股文,作为一个普通的程序员工作中是基本不可能用到的;因为它设计的初衷就是为了让程序员能够比较简单的,感知不到系统层面的一些内容(很多时候,程序员只关注业务逻辑,不需要关注底层实现细节)。数年前开始,JVM成为了Java程序猿必考的内容。JVM里的内容非常多,大部分内容咱叶看不懂,JVM本来是写给C/C++ 程序员看的,它的底层实现都是 C/C++ 的代码,研究JVM 的也都是那一批人。我们这里针对JVM的面试题,作出以下一些讨论。本章比的不是你了解多少,比的是你能背下来多少。

2023-07-13 22:23:05 3919

原创 数据结构进阶(一):AVL树

AVL树结点的定义其实很简单:// 节点的左孩子// 节点的右孩子// 节点的双亲// 当前节点的平衡因子=右子树高度-左子树的高度注意:当前节点的平衡因子=右子树高度-左子树的高度。但是,不是每棵树,都必须有平衡因子,这只是其中的一种实现方式。

2023-07-06 23:06:49 3785 1

原创 测试:进阶篇

在本篇章开始之前,先对之前的内容进行一个简单的总结回顾一下:边界值,边界值上重要的三个点,上点、内点、离点。判定表:关系(与或非恒等)正交表,场景设计法,错误猜想法...

2023-06-24 21:52:41 4721 1

原创 多线程(十):总结

所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。

2023-06-21 17:21:51 5159 1

原创 后端(三):后端实战(表白墙的设计)

上一章结束了 Servlet 的学习,ok,现在我们已经学会了 1 + 1 了,现在开始我们要学会 百以内的加减乘除法。本章就做一个最简单的 小小项目:表白墙。在开始表白墙项目开始之间,我们先提前说好,这里主要跟关注 后端的代码,前端的代码。我们不重点讲解,只是一笔带过罢了。

2023-06-14 11:27:56 5693 2

原创 后端(二):Servlet

我们上一张聊的是Tomcat,它其实就是一个 HTTP 服务器,而Servlet 是基于 Tomcat 的 原生api ,除了 Servlet,后面还有聊到很多 api。

2023-06-12 20:05:43 5471 2

原创 测试:用例篇

黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。

2023-06-06 15:47:33 4478 2

原创 我的创作纪念日

从一开始,老师就告诉我们,他们能教的只是让我们从 0 ~ 1 的过程,而这从 1 ~ 100 的过程,靠的还是我们自己。不断创新的博客,已经不断完善的 gitee 仓库,正是在见证我 从 1 ~ 100 的过程!

2023-06-05 11:25:10 4027 2

原创 后端(一):Tomcat

我们之前的前端是被我们一笔带过的,那不是我们要讲的重点,而这里的后端则是重点。本章先来认识认识后端的基础。

2023-06-01 11:21:09 3772 1

原创 网络原理(八):HTTPS

总的来说,其实没有绝对的安全,我们上述整个过程其实就是将黑客的破解成本提高了,黑客要是不计成本来攻击,其实也能攻的下来,但是消耗的时间和其他成本就不得而知了!!!!

2023-05-28 17:16:59 4324 5

原创 网络原理(七):http 协议(下)

之前说的都是请求中的内容,其中部分也是响应中携带的内容;我们这一篇来讲讲响应中特殊的属性。

2023-05-25 17:55:03 3266 1

原创 网络原理(六):http 协议(上)

既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。我们这个网站上有很多css 样式吧,也有很多图片啊等等,我们把这些缓存在本地上,那么下次的时候是不是就可以不用重新加载了,css 样式等经常不会变的东西,每次都需要重新加载太浪费资源了,同时也可以减轻服务器的压力。如果选错了就需要重新下载。

2023-05-23 23:30:47 4409 4

原创 网页三剑客之 CSS

css 在这里不会介绍太多,我们主要重点介绍两个:选择器和盒子模型就够用了。这里看个乐就好了,没有那么多重点,只是简单的认识一下下CSS。

2023-05-16 15:11:28 3159

原创 网页三剑客之 Javascript

JavaScript 的作者是 布兰登 * 艾奇 (Brendan Eich)。1995 年, 用 10 天时间完成 JS 的设计 (由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript 写出来的程序混乱不堪)最初在网景公司, 命名为 LiveScript,一般认为,当时 Netscape 之所以将 LiveScript 命名为 JavaScript,是因为 Java 是当时最流行的编程语言,带有 "Java" 的名字有助于这门新生语言的传播。

2023-05-15 10:29:48 1249 2

原创 网络原理(五):IP 协议

CIDR 叫做无类域间路由,ISP 常用这样的方法给客户分配地址,ISP 提供给客户1 个块(block size),类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28 代表多少位为1,最大/32.但是你必须知道的一点是:不管是A类还是B类还是其他类地址,最大可用的只能为/30,即保留2 位给主机位。因此,很少有设备真正有机会看到您设备的 MAC 地址。将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。

2023-05-10 14:47:03 3556 24

原创 测试:概念篇

测试工程师,软件质量的把关者,工作起点高,发展空间大。我国的软件测试职业还处于一个发展的阶段,所以测试工程师具有较大发展前景。传统的软件行业还是以软件测试工程师为主,但是在新兴的互联网行业大多还是以QA来命名这个职位,也就是质量保证。----百度百科测试工程师其主要职责就是确保程序不会出粗(检测程序质量)。

2023-05-09 15:19:35 615 1

原创 网页三剑客之 HTML

本章开始我们来介绍一下网页前端部分,我们只是简单的介绍一些常用的各种标签,其目的在于为我们后面的项目做准备。我们并不要求能完全掌握前端的语法,但是在见到以后能够认识这些代码就可以了。想走后端开发的,前端不需要多么熟悉,毕竟在各个企业中前后端都是分离的,全栈的岗位其实并没有那么多。废话不多说,我们来正式开始HTML 的认识。

2023-05-01 20:20:58 1070 1

原创 网络原理(四):传输层协议 TCP/UDP

我们介绍了 udp 协议,和 tcp 协议确认应答,超时重传(确保可靠性的核心机制)链接管理(网络链接的核心机制,三次握手和四次挥手面试常考)滑动窗口(优化手段,增加效率)流量控制,拥塞控制(组成滑动窗口的机制,也是优化手段,其中流量控制也是保证可靠性的一种)延时应答,捎带应答( 提升效率的机制 )】

2023-04-27 08:53:22 1549 14

原创 网络原理(二):网络编程

网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互连接组成的,编写基于网络的应用程序的过程称之为网络编程。网络上的主机通过不同进程,以搬移的形式实现的网络通信(完成的数据传输);当然,我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。网络编程又叫套接字,实现网络通信的两端就是套接字。分为服务器对应的套接字和客户端对应的套接字。

2023-04-22 17:06:04 184 2

原创 多线程(九):JUC组件

补充:synchronized 实现策略:锁升级:无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁锁消除即删除不必要的加锁操作。JVM在运行时,对一些“在代码上要求同步,但是被检测到不可能存在共享数据竞争情况”的锁进行消除。根据代码逃逸技术,如果判断到一段代码中,堆上的数据不会逃逸出当前线程,那么就可以认为这段代码是线程安全的,无需加锁。就是在编译阶段 做的优化手段 ~~ 检测到当前代码是否是在多线程状态下运行的 / 是否有必要去进行加锁操作。

2023-04-19 22:15:55 724 1

原创 多线程(八):常见锁策略

接下来讲解的锁策略不仅仅是局限于 Java . 任何和 "锁" 相关的话题, 都可能会涉及到以下内容. 这些特性主要是给锁的实现者来参考的,我们普通程序员多了解了解锁,对使用也有很大的帮助。下面我会使用很多插图来更好的了解。接下来的插图皆来自于网络。

2023-04-15 09:27:26 688 2

原创 文件:IO流

针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,这就叫做文件文件管理采用的是树形结构,是N叉树,至于目录,其实就是文件夹。

2023-04-11 13:17:13 411

原创 网络原理(一):初识网络

整个数据封装的过程就像俄罗斯套娃。

2023-04-06 14:33:39 483 3

原创 多线程(七)线程池

线程池,又是一个池,我们已经见识过很多池了:数据库连接池、字符串常量池....那我们这个线程池又是个啥呢?我们提前将线程准备好,需要用的时候直接取,不需要用的时候,在直接还回去。这样就不需要去从系统中申请了。这样做,最大的好处就是减少每次启动、销毁线程的损耗池的目的就是为了提高效率。虽然线程对比于进程较为轻量,但是频繁的创建、销毁依旧开销很大。从线程池拿线程,时纯粹的用户态操作;而从系统创建线程涉及到了用户态和内核态之间的切换;真正的创建线程是要在内核态完成的。

2023-04-05 17:01:56 433

原创 多线程(六):多线程案例

多线程最最经典案例就是上一章的单例设计模式。当然除了单例设计模式,还有其他的案例。本章就 一一 来介绍。

2023-04-03 15:20:22 565 3

空空如也

空空如也

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

TA关注的人

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