自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (3)
  • 收藏
  • 关注

原创 观察者模式到底解决了什么问题?

对复杂软件的分解与模块化的过程,就是在构建自己的“分层系统”和“树结构”。为了应对这种缺陷,清代的皇帝发明了“钦差大臣”来给自己的官僚系统打补丁,而软件设计领域则发明了“观察者模式”。清朝的皇帝能够一个人管理一千多万平方公里土地上的几亿人口,就是因为他有一个深度分层的官僚系统。你会发现,没有观察者时节点“”和节点“”的通信路径长度为6,而有了观察者后长度仅为2。观察者模式完全摆脱了原本的树状结构,为系统的任意节点间的通信提供了直接的桥梁。开门见山,解决的痛点就是,系统分层过多导致的通信效率低下的问题。

2025-07-24 21:27:31 248

原创 cookie和session

然而当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义, “面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到对方接了电话通信才能开始,与此相对的是写信,在你把信发出去的时候你并不能确认对方的地址是否正确,通信渠道不一定能建立,但对发信人来说,通信已经开始了。然而聪明(或者贪心?意思是麦当劳的会员卡只能在麦当劳的店里出示,如果某家分店还发行了自己的会员卡,那么进这家店的时候除了要出示麦当劳的会员卡,还要出示这家店的会员卡。

2025-07-22 22:33:35 839

原创 Cookie是如何给无状态的http打补丁的

而客户端在收到这个来自服务器的身份ID后,则会将其以“键-值”对的形式存储在本地磁盘上的一个专门的Cookie文件中。因为普通上网用户的IP是动态的,以至于不同的IP访问记录可能来自于同一客户端,而同一IP的多个访问记录却可能来自不同的客户端。此时的Cookie文件就像是一个“卡包”,每访问一个新网站就写入一个新的“键值”对,就像去不同的店家消费办的新会员卡一样。接着,等客户端再访问某个网站时,就会根据该网站的域名到本地的Cookie文件中进行一个查找,看有没有来自该网站的身份ID。

2025-07-22 22:12:27 298

原创 如何理解http协议的无状态

然后,你的服务器本先接收到了一个访问请求,接着过了很短的时间又收到另一个访问请求,此时你是将两次请求算作两个访客,还是算作一个访客呢?也许有人会说可以通过ip判断,两次请求的的源Ip相同就算做一个用户,不同就算作两个用户。http在未开启cookie时,服务端无法判断一个访问请求的源主机之前是否访问过,不知道http客户端的历史和过去,这就是http协议所谓的“无状态”。需要强调一点的是,http协议只是在未开启cookie功能时是无状态,开启后实际是有状态的。简单就是说,没有过去,没有历史。

2025-07-22 21:36:48 153

原创 Redis和本地缓存

Redis是一个基于内存的key-value结构的数据库,如果出现了异常重启或者断电之后,那么Redis里面数据会全部丢失,但是Redis提供了持久化机制,Redis会根据我们设置好的持久化规则将内存里面的数据持久化到磁盘里面,这样即使Redis出现了异常情况,通过磁盘中的备份数据可以恢复Redis中的数据。本地缓存是在单个服务里面的,多个服务之间的数据是不互通的,如果只想缓存一些变动不大的数据来提升系统的性能,那这个时候可以优先考虑使用本地缓存。1、分布式缓存之Redis。(3)Redis丰富的功能。

2025-07-19 20:50:22 395

原创 Kafka消费慢会有什么影响

因为:生产者源源不断的将消息,写入Kafka主题的分区中,而消费者由于处理能力不足,无法及时地将这些消息消费掉,就会导致未被消费的消息,在Kafka Broker端越积越多。以及,消费过期风险,比如:Kafka通常会配置消息的保留策略(例如基于时间或大小)如果消息堆积的时间超过保留策略的限制,这些尚未被消费的消息可能会被Broker清理掉,导致数据丢失。当Kafka消费者的消费速度跟不上Kafka主题中生产消息的速度时,会引发一系列问题,对整个数据流管道产生不利影响,消息堆积也是最直接和明显的后果。

2025-07-13 11:14:41 144

原创 Java 后端四大件

Java后端开发的核心技术包括四大组件:Spring框架为开发提供基础设施支持,简化企业应用构建;MySQL关系型数据库负责数据存储与管理,需掌握优化技巧;Redis内存数据库用于提升系统响应速度,支持多种数据结构;消息队列(如RabbitMQ/Kafka)实现系统解耦和异步处理。这四大技术栈共同构成了高效、可扩展的后端系统基础,开发者需熟练掌握其原理和应用,以满足复杂业务需求。

2025-07-06 17:22:00 232

原创 MyBatis 项目开发中是基于 XML和注解的区别

所以,通过注解模式和 XML 模式的对比,我们可以知道在实际项目开发中,由于考虑便于线上维护以及 SQL 语句的复杂度,一般都会使用 XML 模式;另外,注解模式开发速度快仅限于简单 SQL 语句处理,比如单表 CURD 操作之类。对于复杂的 SQL 语句处理,注解模式就显得有点力不从心,而且会带来混乱。当然,也可以采用 XML 模式与注解模式混用,也就是简单 SQL 语句采用注解模式,复杂 SQL 语句采用 XML 模式。其实,两种方式都差不多,没有一成不变的规矩,只有最适合当下的方法。

2025-07-06 17:00:48 226

原创 五大主流消息中间件介绍

ActiveMQ是一个老牌的消息中间件,是第一代的消息中间件,是一个完全基于JMS(Java消息服务)规范的消息中间件。.分区(Partition):一个主题可以分成多个分区,每个分区都是一个有序的日志,可以在节点上进行并行处理。队列(Queue):消息的存储区域,消费者从队列中获取消息 ,生产者将消息发送到队列中。交换器(Exchange):接收生产者的消息,并根据路由键将消息发送到相应的队列中。消息存储:采用了写入内存,异步刷盘的方式来存储消息,同时还支持消息持久化到磁盘中。1.高吞吐量和低延迟。

2025-07-05 21:44:08 192

原创 SpringBoot框架分层

Service层存放业务逻辑处理,有一些关于数据库处理的操作,但是不是直接和数据库打交道,有接口,也有接口的实现方法,在impl实现接口类中需要导入mapper类,mapper层是直接与数据库进行操作的。4.Mapper层:也可以称为DAO层,是数据库CRUD的接口,只有方法名,具体实现在mapper.xml文件中,对数据库进行数据持久化操作。Controller层负责前后端交互,接收前端请求,调用service层,接收Service层返回的数据,最后返回具体数据和页面到客户端。(1)接口:用来声明方法。

2025-07-01 21:24:45 209

原创 各种代理名词盘点

小到对象/实体之间的通信,大到子系统、系统乃至超系统的设计,都会应用到代理。应用的广泛导致了代理有着不同的形态,主要有Agent、Proxy、Broker和Delegate。现在我们就盘一下以上这些名词。Broker:中介性代理,Broker提供了分布式服务和资源的透明访问,屏蔽了异构组件之间的差异。Delegate:委托性代理,一般地,管理进程指派给代理方,并在代理方执行管理操作,而不涉及管理方。Agent:自主性代理,它具有一定程度的独立行为能力与智能,同时又遵从分布系统中某种统一的标准。

2025-07-01 20:58:59 138

原创 Redis作为缓存时的常见问题

缓存击穿是指一个访问量非常大(热点)的缓存KEY,在它过期失效的瞬间,大量并发请求同时发现缓存失效,这些请求会击穿缓存层,直达数据库。缓存穿透是指查询的数据既不在缓存中,也不在数据库中,但恶意或异常的请求(如恶意构造的非法ID)持续访问,导致每次请求都直接穿透到数据库的现象,这显然也会增加数据库的压力。注意缓存击穿和缓存穿透的区别:穿透是数据根本不存在(缓存和数据库均无),击穿是数据存在于数据库中,但缓存失效。与前两个问题对比一下,可以发现,缓存雪崩的特征是涉及大量缓存KEY,而非的单个KEY。

2025-06-30 21:49:48 114

原创 什么是组件、插件、控件和中间件

插件:插件属于组件,插件是组件的一个子类,就是将组件中具有某些特点的组件归为插件。插件为应用程序增加一些特定的功能,仅靠插件是无法正常运行的,需要依赖于应用程序才能发挥自身功能。中间件:中间件是指操作系统、数据库等系统软件和应用软件之间的一种起连接作用的分布式软件。组件:组件是封装了一个或多个程序模块的实体。组件强调的是封装,利用接口进行交互。控件:可视化的组件。

2025-06-30 21:11:19 133

原创 聊一聊接口幂等性的实现

注:悲观锁是一种假设冲突会频繁发生的锁机制。每次访问数据时,都先会加锁,直到操作完成后才释放锁,这样可以确保在锁持有期间,其他线程无法访问这段数据,从而避免了冲突。注:乐观锁是一种假设冲突不会频繁发生的锁机制。每次访问数据时,不会加锁,而是在更新数据时检查是否有其他线程修改过数据。数据库唯一主键的实现原理是使用数据库中主键唯一约束的特性,一般来说唯一主键比较适用于添加数据时的幂等性场景。悲观锁在同一事务操作过程中锁住了一行数据,别的请求过来只能等待,如果当前事务耗时比较长,就很影响接口性能。

2025-06-29 12:15:01 188

原创 数据存储系统

数据存储系统根据存储结构和数据模型的不同,常常分为5类:一、关系型数据库;二、非关系型数据库;三、分布式文件系统;四、内存数据库系统;五、对象存储系统。

2025-06-29 11:01:17 324

转载 举个卡戴珊的例子,讲讲Hinton的Capsule是怎么回事

Capsule Networks,或者说CapsNet,这个名字你应该已经听过好几次了。这是“深度学习之父”的Geoffrey Hinton近几年一直在探索的领域,被视为突破性的新概念。要理解Capsule Networks,还得从卷积神经网络(CNN)的特性说起。传统神经网络的问题到目前为止,图像分类问题上最先进的方法是CNN。而CNN的工作原理,是将每一层对应的特征累积起来,从寻找

2017-11-13 09:15:06 353

原创 究竟何为云计算

当下,是个信息爆炸的时代。移动互联网对此功不可没,美国发生的事,也许其西部的农场主还不知晓,大洋彼岸的我们分析地却早已头头是道。       信息爆炸,滔流滚滚,泥沙俱下,作为立志作为手握技术的人,当然,我们不谈论娱乐新闻,我们不发搞笑小视频,不说世界那么大,咱们去看看的鸡汤,我们,只谈技术。今天我来说说什么是云计算,首先你要明白,围在我们身边的不只有霾,还有云。云计算---广告里有它,新闻里

2017-11-11 19:59:33 368

物联网 智能家居 Qt界面

详细的Qt智能家居界面,丰富的样例,可以直接运行,简单易懂。

2018-01-23

linux 无线驱动

电脑安装双系统时,启动ubuntu上不了网,后来发现缺少驱动,该驱动下载下来,可直接使用。

2018-08-29

ros cv_bridge

ubuntu运行lsd_slam时,必备的工具,珍贵资源,下载直接使用

2018-08-29

空空如也

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

TA关注的人

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