自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ 之 交换机

Fanout 这种类型非常简单。正如从名称中猜到的那样,它是将接收到的所有消息广播到它知道的所有队列中。系统中默认有些 exchange 类型系统当中有一个自带的 Fanout我们作为一个生产者,要把消息发送到交换机,这个交换机会绑定到两个队列,它们的绑定关系都是一样的,这就意味生产者发消息过来,交换机会把消息路由给两个队列,这两个队列中的消息是一模一样的,这个消息再被消费者1、2 分别消费上一节中的我们的日志系统将所有消息广播给所有消费者,对此我们想做一些改变,例如我们希。

2024-05-20 16:03:17 938

原创 RabbitMQ 之 发布确认

生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,,一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置 basic.ack 的 multiple 域,表示到这个序列号之前的所有消息都已经得到了处理。

2024-05-11 10:43:30 523

原创 RabbitMQ 之 Work Queues 工作队列

例如,假设在通道上有未确认的消息 5、6、7,8,并且通道的预取计数设置为 4,此时 RabbitMQ 将不会在该通道上再传递任何消息,除非至少有一个未应答的消息被 ack。比方说 tag=6 这个消息刚刚被确认 ACK,RabbitMQ 将会感知这个情况到并再发送一条消息。消息应答和 QoS 预取值对用户吞吐量有重大影响。通常,增加预取将提高向消费者传递消息的速度。

2023-11-11 14:01:08 1545 4

原创 初步了解 RabbitMQ

目录​编辑一、MQ 概述1、MQ 的简介2、MQ 的用途(1)限流削峰(2)异步解耦(3)数据收集二、RabbitMQ 概述1、RabbitMQ 简介2、四大核心概念3、RabbitMQ 的核心部分 ​编辑4、名词解释:三、Hello World1、依赖2、消息生产者 3、消息消费者MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。 MQ 的用途有很多,但总结起来其实就是以下三点:M

2023-11-08 12:27:28 1023 16

原创 Redis 分片集群

1、将16384个插槽分配到不同的实例2、根据key的有效部分计算哈希值,对16384取余3、余数作为插槽,寻找插槽所在实例即可。

2023-11-03 12:49:02 362 6

原创 Redis 哨兵

Redis提供了哨兵(Sentinel)机制来。:Sentinel 会不断检查您的master和slave是否按预期工作:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主:Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端。

2023-10-31 21:53:49 288 2

原创 Redis 主从

要进一步提高Redis的并发能力,这是因为 Redis 应用当中,大多数都是 读多写少 ,正因如此,更多的是面对 "读" 的压力,搭建主从集群可以实现读写分离,多个从节点共同承担 "读" 的请求,使 "读" 的并发能力大幅度提升共包含三个节点,一个主节点,俩个从节点。

2023-10-24 21:53:16 382 12

原创 Redis 持久化

RDB 方式 bgsave 的基本流程?fork 主进程得到一个子进程,共享内存空间子进程读取内存数据并写入新的 RDB 文件用新的 RDB 文件替换掉旧的 RDB 文件RDB 会在什么时候执行?save 60 1000 代表什么含义?save:默认是服务停止时执行bgsave:要看停止的条件代表 60 秒内至少执行你提供 1000 次修改则触发 RDBRDB执行间隔时间长,两次RDB之间写入数据有丢失的风险fork子进程、压缩、写出RDB文件都比较耗时。

2023-10-23 19:35:17 296 6

原创 博客系统中的加盐算法

因为一个 字符串的 MD5 的值是固定的,当你有了一张 MD5 的穷举表(彩虹表)之后,这张表中记录了几乎所有字符串的 MD5 对照表,就可以对密码进行暴力破解。从密码中 拿到盐值之后,我们才能对原始用户输入的密码按照相同的路径进行加密,然后和最终的密码进行对比,从而判断用户输入的密码是否正确。每次调用方法的时候,产生盐值(唯一的),然后使用这个盐值再加上我们的密码,最终得到了一个密码。传统的 MD5 是有规律可循的,虽然 MD5 是不可逆的,但是是可以被暴力破解的。1、需要验证的密码(用户输入的密码)

2023-10-19 16:34:21 513 10

原创 AOP 编程

JDK 代理 依附 Proxy.newProxyInstance( ) ,通过接口创建代理的实现类CGlib 代理 依附 Enhance ,通过继承父类创建的代理类。

2023-09-30 08:00:00 200 8

原创 Spring 的代理开发设计

切入点:额外功能加入的位置Spring 引入切入点的目的:由程序员根据自己的需要,来决定额外功能加入给哪个原始方法简单的测试:所有方法都作为切入点,都加入额外的功能通过 Spring 的配置文件完成expression :切入点表达式,要根据自己的需求来写-- 所有的方法,都作为切入点,加入额外功能 -->

2023-09-27 19:35:20 733 15

原创 后置处理 Bean

在 Spring 执行完对象的初始化操作后,可以运行 After 方法,进行价格。Spring 创建完对象,并进行注入后,可以运行 Before 方法进行加工。我们发现,此时并没有发生提示,这是为什么呢?所以为了解决这个问题,我们可以对这段代码进行修改;,这是 jdk8.0 的新特性,叫做。我们会发现,在这些方法前面,

2023-09-24 21:14:03 222 20

原创 对象的生命周期、配置文件参数化、自定义类型转换器

对象的生命周期,指的是一个对象创建、存活、消亡的一个完整过程显然,如果想要 Spring 来帮我们调用的话,我们得在配置文件中告诉 Spring这样,整个销毁方法就定义完了我们之前说过,在文件当中写的内容,都是 String 类型,但是我们却成功地把 "1" 赋值给了 id 属性,而 Product 的 id 属性,是 Integer 类型的为什么我们此时能把 String 类型的数据赋值给 Integer 类型的数据呢?

2023-09-21 19:27:47 252 18

原创 Spring 工厂

FactortyBean 是 Spring 当中用于创建复杂对象的一种方式,而且这种方式也是 Spring 原生提供的,后续我们学习 Spring 整合其它框架的时候,会大量应用到 FactortyBean在前面学习复杂对象的时候,我们说可以实现 factoryBean 接口,而 factoryBean 接口里面有一个叫做 isSingleton 的方法,这个方法如果 返回 true 意味着只会创建一个复杂对象,如果返回 false 就会返回多个复杂对象。

2023-09-19 15:48:15 465 16

原创 Spring 的注入

1、为成员变量提供 set ,get 方法2、 在配置文件中进行注入(赋值)在未来写项目的时候,是使用 Set 注入更多还是 构造注入 更多呢?使用 Set 注入更多1、构造注入比较麻烦(存在重载的问题)2、Spring 框架底层,大量应用了 set 注入综上,在未来,set 注入使用的更多。

2023-09-17 12:36:27 1091 22

原创 Spring 的创建和日志框架的整合

2、XML 的 id 属性的值,命名的时候要求:必须要以字母开头,字母,数字,下划线,连字符,不能以特殊字符开头,比如 / ,而 name 属性的值,在命名的时候,是没有要求的,所以 name 属性会应用在特殊命名的场景下,底层还是通过反射来实现的,因为反射能够调用一个类的私有的属性和构造方法,所以 Spring 工厂是可以调用对象私有的构造方法来创建对象的。那么,对于 Spring 来讲,它的工厂使用,和我们前面所总结的通用工厂的使用方式,本质上是没有区别的。

2023-09-13 21:57:58 321 16

原创 工厂设计模式

什么是工厂设计模式?通过工厂类来创建对象现在,作为工厂设计模式来讲,并不提倡通过 new 来创建对象,而是通过工厂类来创建对象这就涉及到了工厂的好处:解耦合要想理解好解耦合这个概念,就得先了解耦合耦合:指的是代码间的强关联关系,一方的改变会影响到另一方耦合最大的问题就是不利于代码的维护可以简单的理解为把接口的实现类,硬编码在程序中通过工厂类,就可以实现解耦合。

2023-09-11 18:21:24 352 12

原创 Spring 基础概念和核心思想

IoC = Inversion of Control 中文是 “控制反转” 的意思,也就是说,Spring 是一个 “控制反转” 的容器,那么怎么理解这句话呢?我们先来看几个例子:

2023-09-09 14:05:29 177 8

原创 JVM相关知识点

准确的来说,类加载就是 .class 文件,从文件(硬盘)被加载到内存中(元数据区)这样的一个过程加载:把 .class 文件找到(找的过程),打开文件,读文件,把文件内容读到内存中验证:根据 jvm 虚拟机规范,检查下 .class 文件格式是否正确准备:给类对象分配内存空间(现在元数据区占个位),此时内存初始化成全为0,也会使静态成员设置成 0 值解析:初始化字符串常量,把符号引用转为直接引用初始化:调用构造方法,进行成员的初始化,执行代码块,静态代码块,加载父类 .....

2023-09-06 20:01:18 429 6

原创 使用 Linux 相关知识部署博客系统

cat 和 echo 只是非常简单粗暴的读写文件,如果读写内容费差个简单,使用他们没有问题,如果读写内容更加复杂,就需要使用更加强大的编辑器了。1、服务器虽然配置高,但是上面跑的任务工作量大,也没有额外的资源给你运行玉兴界面,服务器要求稳定,Linux 图形化界面经常有 bug。使用 cd 的时候,切换的路径,不一定非要一个字母一个字母的输入,也可以使用 table 键来补全。本地的数据库,端口号,用户名,密码和云服务器的数据库可能是不同的,所以需要对原本的代码进行一个微调。

2023-09-04 18:13:58 656 6

原创 博客程序系统其它功能扩充

当设计好注册功能后,我新注册了一个账户,并登录该账户,发现该账户虽然并没有发布任何的博客,但是仍然可以查询到别的用户发布的博客内容,于是我对 BlogDao 中的方法和 博客列表页的 doGet 进行了一些修改。在最初代码编写的时候,我直接复用了之前发布文章的页面来实现对文章内容的修改功能,后来发现这样容易使发布功能和编辑功能混淆,最后将两个功能页面分开,重新编写了一个博客编辑的页面。在目前的代码中,我们的博客总数是固定的,无法实时显示该用户的博客总数,于是我们加一个接口来实现这个功能。

2023-09-03 13:44:44 1187 14

原创 博客系统 Java Web 开发(Servlet)

我们会发现,这是由于前端代码中出现了两个 title ,querySelector 默认返回的是第一个 title ,然后导致对标题的修改改错了地方。先发一个请求获取到博客列表,再发送一个 ajax 获取用户的登录状态,如果用户已经登录了,就没事,如果未登录,则页面跳转到登录页。内容中,会带有一些 markdown 的符号,最终显示到网页上,希望用户看到的是渲染之后的结果,也就是把 # 转换成一级标题。在 博客列表页,获取博客列表的功能下,前端要发什么请求,后端返回什么响应,都需要进行约定。

2023-09-02 13:19:55 770 13

原创 表白墙程序

此处的约定,没有固定的强制要求,只要保证能够实现必要的需求即可,此处的目的是为了前后端可以对上号。请求时什么样的,响应是什么样的,浏览器什么时候发送请求,浏览器按照什么格式来解析....js 中要求, 对象中的 key 务必是 字符串,所以这里的 "" 可以省略。要插入的数据,是三个变量,要把这三个变量给填充到 Sql 中,就需要占位符。在之前的一篇博客中,已经写过了表白墙的页面代码实现,这里就不再重复了。当前我们的数据是在内存(变量) 中保存的,重启服务器就没了。所以,我们需要把目前这个对象转成字符串。

2023-09-01 19:53:50 12243 24

原创 Tomcat

tomcat 的版本和后续学习的 servlet 版本 是强相关的,这里我选择下载的是 tomcat8,对应的 servlet 就是 3.1 的版本。8080 是Tomcat 默认的端口号,默认的端口号其实是可以修改的(但是我们目前没必要修改)我们使用 Tomcat ,最主要的用途,就是把写好的网站给部署上去,网站 = 前端 + 后端。现在,我们来访问一下 Tomcat 的欢迎页面(tomcat 自带的一个 webapp)点击这里,下载 zip 的压缩包,再进行解压缩,就可以了。

2023-08-31 15:19:35 489

原创 Servlet

打包和部署程序这两个操作,我们可以使用 IDEA 的 Tomcat 插件,把 Tomcat 集成到 IDEA 中,这样就省去了手动打包,手动部署的部分,只需要按一下运行,就可以自动打包部署。如果是首次使用,此时这里的字可能是红色的,红色说明还没下载完,一般只要一粘贴,idea 的 mave 就会自动触发依赖的下载,下载完毕就不红了(下载只需要一次)这个对象是 Tomcat 自动构造的,Tomcat 其实是会实现监听端口,接受链接,读取请求,解析请求,构造请求对象等一系列工作。

2023-08-30 15:06:12 283 10

原创 HTTP 协议

(1)GET 也可以给服务器传递一些信息,只不过 GET 传递的信息一般都是放在query string;而POST 传递信息则是通过 body(2)GET 请求一般是用于从服务器获取数据,POST 一般是用于从服务器提交数据(语义上的差别)(3)GET 通常会被设计成幂等的,而 POST 不要求幂等(4)GET 可以被缓存;而POST 一般不能被缓存。

2023-08-28 14:59:24 2388 13

原创 博客系统——前端部分

要实现一个博客系统,我们得先构造出它的页面:显示这一个博客里面的具体内容3、登录页发布新博客,在这个博客页面进行编辑。

2023-08-27 12:38:49 919 14

原创 JavaScript(笔记)

JavaScript 是一种脚本,一门编程语言,它可以在网页上实现复杂的功能,网页展现给你的不再是简单的静态信息,而是实时的内容更新,交互式的地图,2D/3D 动画,滚动播放的视频等等。JavaScript 怎能缺席。它是标准 Web 技术蛋糕的第三层,其中 HTML 和 CSS 我们已经在学习中心的其他部分进行了详细的讲解。

2023-08-26 17:55:05 287

原创 CSS基础知识点

实际上,有三种写 CSS 的方式此时的 style 标签可以放到任何位置,一般建议放到 head 标签里面此时不需要写选择器,直接写属性键值对,这个时候样式只是针对当前元素生效实际开发中,一般都是使用外部样式来写 CSS ,这样就可以让 html 和 CSS 分离开,相互不影响。

2023-08-25 17:33:16 177 2

原创 HTML基础知识点

+ tab 可以快速的生成一个基本的页面,我们只需要编辑 body 的内容即可,这个功能叫做 emmet 快捷键。

2023-08-24 13:30:20 453 8

原创 网络原理详解(图文结合)

这一层,有很多现成的协议,也有很多时候,是需要程序员自己定义协议的在开发设计程序的时候,要提前做好良好的规划打开外卖软件,显示商家列表,列表中有很多项,每一项都包含了一些信息:商家的名称,图片,好评率,距离你的位置,评分......针对这些操作,我们做出如下设计:1、明确当前请求和响应中包含哪些信息(根据需求来的)请求:用户身份,用户当前位置响应:包含若干个商家信息2、明确具体的请求和响应格式

2023-08-22 12:13:24 529 20

原创 初识网络原理(笔记)

虽然路由器只有 4 个 lan 口实际上组建的局域网,可以有更多的设备,就可以用到交换机AP 相当于一个不用插网线的小交换机(提高无线热点扩容能力)这个定义是站在经典的路由器/ 交换机的定义上看待的实际上现代的交换机/ 路由器之间的差异越来越小了,之间的功能也是有很多重合的集线器是把一根网线,分成多个岔口,但是和交换机有本质区别局域网和广域网,并没有一个明确的界限当局域网中,设备数量非常多,局域网空间跨度特别大,就可以称为广域网了。

2023-08-18 20:00:00 1822 6

原创 轻松学会网络编程

网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。当然,我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。特殊的,对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机。接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机。收发端:发送端和接收端两端,也简称为收发端。注意:发送端和接收端只是相对的,

2023-08-18 10:31:03 366 8

原创 文件操作 和 IO

我们只需要了解文件相关的一些接口即可操作系统通过 “文件系统” 这样的模块来管理硬盘NTFS 是windows 上的文件系统,背后有一定的格式来组织硬盘数据EXT4 是 Linux 上常见的文件系统。

2023-08-15 20:00:00 202 16

原创 Java多线程知识点,看这一篇就够了!(超详细)

1、饿汉模式(迫切)程序启动,类加载之后,立即创建出实例2、懒汉模式(延时)在第一次使用实例的时候,再创建,否则能不创建就不创建举个例子:编译器打开一个文件,假设有一个超大的文件,

2023-08-13 10:02:03 2312 19

原创 计算机是如何工作的(笔记)

用来存储数据的单位,是CPU的一部分寄存器,存储空间更小,访问速度更快,成本更高,掉电后数据会丢失寄存器的速度和从内存速度的差距是极大的,3~4个数量级操作数通常是要在寄存器中保存的由于寄存器和内存之间速度和空间上差异太大了,难以协调工作CPU 上要进行一系列运算,在运算的过程中,要反复用到一组内存中的数据,这些数据要频繁使用,又要频繁访问内存,同时这些数据又比较多,在寄存器中又存不下,就可以放到缓存中了缓存的存储空间介于 寄存器 和 内存 之间。

2023-08-02 21:03:59 290 4

原创 Java的JDBC编程

URL 唯一资源定位符. 通常使用 URL 来描述网络上一个资源的位置而 MySQL 的本体是服务器,也就相当于网络上的资源,因此我们使用URL是 OK 的这里的URL具体是怎么写的不需要背,用到的时候复制粘贴即可。

2023-08-01 22:05:57 301 8

原创 MySQL数据库 【索引事务】

1、给学生表中插入一条记录,就需要查询classId 是否在 class 表的 classId 中存在,这个查询就使用到了 class 表中的 classId (主键自动生成的索引)在数据库上,我们就额外搞了一个空间,维护一些和 id 相关的信息,这里就通过一些特定的数据结构,维护表示 id 相关的索引的情况。学生表里面包含了两个索引,其中一个索引是由主键生成的,另一个是由于我们设置了外键约束所自动生成的索引。一个表里面有很多的数据,在查询表的时候,最基本的方式就是遍历表,一条一条的筛选,因此,就可以。

2023-07-31 20:39:23 667 2

原创 MySQL 数据库 【增删查改(二)】

针对任意的两张表都可以计算笛卡尔积,但是一般来说,如果两个表没有任何的关系,那么计算的结果也是无意义的笛卡尔积 就是把两个表里的记录 按照排列组合的方式 构成了一个更大的表笛卡尔积的列数 就是原来两个表的列数之和笛卡尔积的行数 就是原来两个表的行数之积笛卡尔积是一个非常低效的操作,尤其是表的本身的记录比较多的情况同样的 多表联合查询也是非常低效的因此在实际开发中,使用联合查询一定要慎重

2023-07-30 18:52:39 708 8

原创 MySQL 数据库约束

我们使用数据库来存储数据,一般是希望这里存储的数据是靠谱的,那么如何来保证数据是否靠谱呢?那么MySQL就提供了一些机制,辅助我们自动的依赖程序,对数据进行检查,这类检查数据的机制,就是“约束”,一旦把约束确定好了,MySQL就会自动的对修改的数据做出检查,看看你此处的这个数据是否靠谱,如果不靠谱,不满足约束,就会直接报错。

2023-07-25 21:17:20 692 6

空空如也

空空如也

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

TA关注的人

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