自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

申俏雅的博客

欢迎来到我的博客世界

  • 博客(113)
  • 收藏
  • 关注

原创 Kafka第四篇——生产数据总体概括,源码解析分区策略,数据收集器,Sender发送线程,key值

流程图以及总体概述拦截器分区器以及分区计算策略为啥进行分区计算?producer生产者怎么知道有哪些分区?分区计算如何自定义实现分区器?想说的在图里啦!宝宝!💡​如果key值忘记传递了呢!?数据校验数据收集器注意Sender发送线程

2024-07-07 14:31:32 929 3

原创 Kafka——消费者偏移量存储问题

一旦偏移量信息发生变化,Zookeeper 将通知订阅了该 Watch 的消费者,使得消费者能够及时更新自己的状态。:Zookeeper 将数据存储在磁盘上,即使发生服务器崩溃或重启,存储的偏移量信息也不会丢失。follower进行读操作,这意味着,Zookeeper 都只会接受并传播来自 Leader 节点的更新,从而确保所有节点的数据视图是一致的。确保了在多个操作同时发生时,每个操作都按照确定的顺序被处理和应用,避免了并发更新导致的数据不一致性问题。Zookeeper 能。

2024-06-22 11:09:29 643 1

原创 kafka第二篇——主题创建,主题分区副本分配策略

主题包含一个或多个分区,每个分区在集群中有多个副本(Replica)分布在不同的 Broker 上。通过合理设计主题、分区和副本的布局,Kafka 可以实现高吞吐量、低延迟和可靠性的分布式消息传递系统。可以看文章kafka1中的架构推演发展历程标题下的内容。

2024-06-22 11:09:21 508

原创 Kafka第一篇——内部组件概念架构启动服务器zookeeper选举以及底层原理

引入 ——为什么分布式系统需要用第三方软件?JMS对比组件架构推演——备份实现安全可靠 ,Zookeepercontroller的选举controller和broker底层通信原理BROKER内部组件​编辑topic创建

2024-06-21 17:34:01 1229 2

原创 云主机选购指南:如何选择适合自己的云主机

移动云是中国移动提供的专业云服务品牌,基于移动云计算技术构建。它实现了云网一体化,确保客户享有安全可控的服务。通过充分利用移动云计算能力,打造了N+31+X资源布局,结合各省级数据中心,通过专线互联实现了业务跨区域的高速、低延迟、大带宽、高质量服务互通。:提供了云和网络一体化的服务,方便客户进行统一管理和配置。:注重安全性,为客户提供安全可控的云服务,保障数据和业务的安全。:拥有N+31+X的资源布局,结合全国各省的省级数据中心,为客户提供更广泛的资源覆盖。

2024-05-27 12:28:55 745

原创 Baidu Comate智能编码助手快速入门与使用体验

Baidu Comate智能编码助手,基于百度强大的文心大模型技术,旨在为广大开发者提供高效、智能的编码辅助体验。它不仅具备代码智能推荐、生成、修改等功能,还支持100多种编程语言和多种IDE平台,能够深度解读企业与个人私域代码库,帮助开发者提升编码效率,释放软件生产力。下面博主将从Baidu Comate的优势,功能,基础使用等方面详细介绍Baidu Comate,欢迎各位伙伴共同学习使用,进行体验。

2024-05-08 08:31:34 673

原创 MySQL和redis特点以及超卖问题但是乐观锁会造成库存遗留问题还有连接超时用连接池解决

使用事务(Transaction):在 Redis 中可以使用 MULTI组队、EXEC、WATCH 等命令来创建事务,确保多个命令的原子性执行,避免并发操作导致的超卖问题。乐观锁+版本号+事务三特性。总的来说,要解决 Redis 中的超卖问题,关键在于保证对资源的操作是原子性的,可以通过事务、分布式锁、Lua 脚本等方式来实现,确保在并发环境下数据的正确性和一致性。使用分布式锁:可以使用 Redis 的分布式锁来确保在对某个资源进行操作时只有一个客户端在操作,从而避免并发导致的超卖问题。

2024-03-21 08:52:37 451

原创 索引。。。

对于单列索引,尽量选择针对当前query过滤性更好的字段进行索引在选择组合索引的时候,当前query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。在选择组合索引的时候,尽量选择能够包含当前query中的where子句中更多字段的索引。(区分度越高)在选择组合索引的时候,如果某个字段可能出现范围查询时,尽量把这个字段放在索引次序的最后面。==总之,写SQL时,尽量避免造成索引失效的情况。==理解方式一。

2024-03-10 22:20:24 1019

原创 redis——持久化之RDB&AOF

数据放在硬盘上即持久,内存上并不持久,当进程重启或者主机重启,根据数据是否仍然存在去判断持久性。redis是内存数据库,数据放在内存中,要想持久,就得把数据放在硬盘。但是redis的优势是快,快依赖于数据存储在内存。为了数据快,还是得存在内存,但是保证持久还是得存在硬盘中。于是redis内存也存,硬盘也存!来数据时,两边都存入(但是不一定完全一样)。内存负责查数据,硬盘负责每次重启的时候将数据恢复内存。优点是既保证高效又保证持久化,缺点就是开销空间。

2024-03-08 00:48:45 561

原创 大文件上传

同时,为了提高上传和下载的效率,可以使用分块传输、断点续传等技术,减少因网络不稳定等原因导致的传输失败。后端接收到MD5值,在服务器中查找是否存在该md5对应的文件,如果服务器存在该文件,则直接返回已存在的文件路径,完成秒传。另外,为了提高效率,可以考虑使用分布式文件系统或对象存储服务来存储文件,以便实现文件的高可用和快速访问。如果所有块的哈希值都匹配,服务器将把块合并成完整的文件,并计算文件的 MD5 哈希值。在实际实现中,可以使用Java的MessageDigest类来计算文件的MD5值,使用。

2024-03-08 00:47:24 632

原创 java——2024-03-03

10.死锁是两个或者多个线程去争夺同一共享资源而导致的互相等待过程,在没有外部条件干预则会一直阻塞下去,每个线程都在等待另一个线程去释放锁。死锁有三个典型情况,第一个是。

2024-03-06 01:14:40 1075 1

原创 mq基础类设计

解耦合:就是在分布式系统中,A服务器调用B服务器,A给B发送请求,B给A返回响应,A和B之间耦合性很大。引入消息队列后,A把请求发给消息队列,B再从消息队列获取请求。削峰填谷:B接收,A传送过多,B会感受到峰值,而B的硬盘之类资源有限,有消息队列,B仍然可以按照原本速度进行接收数据。消息队列就是把阻塞队列这样的数据结构单独提取成一个程序独立进行部署。broker中间人负责转发和存储,mq和消费者的工作模式主要有两种,推:push,Broker把收到的消息主动。消息队列是在进程与进程之间进行实现的,

2024-03-05 12:01:19 451 1

原创 ReentrantLock &信号量&CountDownLatch&多线程环境使用集合类ArrayList和ConcurrentHashMap

ReentrantLock 也是一个可重入锁,使用了lock和unlock方式加锁解锁,使用效果上和 synchronized 是类似,1. ReentrantLock,在加锁的时候,有两种方式. lock, tryLock.给了更多的可操作空间lock(): 加锁, 如果获取不到锁就死等.trylock(超时时间): 加锁, 如果获取不到锁, 等待一定的时间之后就放弃加锁.

2024-02-21 11:58:54 1020

原创 synchronized原理&Callable接口

synchronized加锁的时候,并不是真正的加锁,而是先进入偏向锁状态,就相当于做一个标记,如果一直没有别的线程来获取这个锁,那么就不会升级,仅仅只做个标记,因为这个变量本来就只有这个线程要使用,过程也没有出现锁竞争,执行完synchronized{}代码块后,再取消掉标记(偏向锁)即可。但是,如果很快就释放锁了,自旋是值得的,可以立即获取被释放的锁,反之,迟迟不被释放,那么久迟迟拿不到锁,自旋就不划算了..这时候就需要再次升级了!相当于"懒汉模式"提到的懒加载一样,非必要,不加锁。

2024-02-21 11:58:15 1153

原创 常见锁策略以及CAS

是典型的重量级锁,指当一个线程尝试获取锁时,如果锁已被其他线程占用,则该线程将会被挂起(即阻塞,阻塞的开销很大),直到锁可用为止。CAS 操作是原子性操作,它可以保证在多线程环境下对共享数据的操作是线程安全的。一个线程针对同一把锁连续加锁两次如果不会出现死锁就是可重入锁,sychronized就是可重入锁,其中引入计数器,并对锁的持有线程进行身份标识,当发现当前加锁的线程就是持有锁的线程就直接进行+1操作。是典型的轻量级锁,是一种忙等的锁,当一个线程尝试获取自旋锁时,如果锁已被其他线程占用,该线程会一直。

2024-02-21 11:57:23 806

原创 线程池,,

线程池,事先把需要用的线程创建好,放到线程池中,后面需要使用的时候,直接从池中获取,如果用完了,就还给线程池,这两个操作是比创建线程/销毁线程要更加高效的。

2024-02-17 17:43:32 557

原创 计算机网络——IP协议

网络层的主要负责地址分配和路由选择,ip负责在网络中进行数据包的路由和传输。

2024-01-28 15:09:52 1194

原创 两个数组的动态规划——最长公共子序列模型

1.考虑空串,即dp表多出一行一列, 代表某个字符串为空。2.考虑最后一个位置;是否相等;3.可在字符串最前面加虚拟位置以对应映射关系;4.一般横行是j,列是i。此时第一行代表第二个字符串不为空,即第一个字符串是空的。

2024-01-26 21:46:39 1124

原创 TCP/IP分层模型 和网络原理之UDP和TCP

计算机网络指的是将多台计算机通过通信设备(如路由器、交换机等)连接起来,以实现数据和信息的传输和共享。它是现代信息技术的重要组成部分,提供了在全球范围内进行数据通信和资源共享的基础设施。

2024-01-26 21:42:36 1252 3

原创 计算机网络——TCP协议

TCP的可靠不在于它是否可以把数据100%传输过去,而是1.发送方发去数据后,可以知道接收方是否收到数据;2.如果接收方没收到,可以有补救手段;

2024-01-26 21:42:16 5614 7

原创 动态规划——01背包和完全背包

有一个背包能容纳的体积是v,现在有n个物品,第i个物品的体积为vi,价值为wi。(1)求这个背包至多能装多大价值的物品?(2) 若背包恰好装满,求至多能装多大价值的物品?输入描述:第一行两个整数n和V,表示物品个数和背包体积接下来n行,每行两个数u;和wi表示第i个物品的体积和价值

2024-01-16 17:05:44 1213 5

原创 网络编程套接字socket

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。目的端口号:标识目的主机中该次通信接收数据的进程。源端口号:标识源主机中该次通信发送数据的进程。

2023-12-23 22:37:34 2068 3

原创 MySQL——触发器·

MySQL的触发器(Trigger)是在数据库中定义的一种特殊类型的存储过程,它会在指定的数据库事件发生时自动执行。触发器可以用于实现数据的自动更新、完整性约束、日志记录等功能。表示触发器响应的数据库事件类型,可以是插入、更新或删除操作,表示触发器执行的时机,可以是在数据库事件之前或之后执行,是触发器的执行体,可以包括SQL语句和存储过程等。表示对每一行记录都要执行触发器,是触发器所关联的表名,

2023-12-23 18:55:55 289

原创 概率论两天速成

这个就自己看完写一遍就可以掌握了。

2023-12-22 00:53:01 523

原创 mysql——索引篇

mysql相关

2023-12-14 18:04:51 833

原创 SpringBoot整合Redis——实现点赞功能

标签系统:可以将每个标签作为Set的一个元素,然后用Set进行标签的各种操作,比如求交集、并集、差集等,以便于实现文章、商品等的分类和搜索。去重:Set中的元素不能重复,因此可以用来存储去重后的数据。

2023-12-13 20:59:03 1270 4

原创 列表分页功能的实现(后端)

在分页查询中,每一次查询都会将所有符合条件的数据都查出来,然后再根据当前页码和页面大小进行截取和封装。而在深度分页的情况下,这种实现方式会导致查询结果非常庞大,网络传输和内存消耗都会很大,甚至可能造成系统崩溃。

2023-12-06 17:10:06 140

原创 实现加盐加密方法以及MappedByteBuffer,RandomAccess

加盐加密算法的实现以及大文件操作涉及的MappedByteBuffer,RandomAccess介绍

2023-12-06 15:36:32 241

原创 redis——单线程工作模型

需要注意的是,虽然Redis是单线程的,但它允许在不同的进程或服务器上运行多个实例,以提高可扩展性和性能。虽然Redis是单线程的,但它可以处理大量的请求,并支持每秒数百万级别的操作。redis的单线程模型指的是只使用一个线程去处理所有命令请求,并不是说redis进程服务器只有一个线程, 也有多个线程,多个线程用于处理网络IO。当多个请求同时到达redis服务器,redis的单线程模型就保证了当前收到的请求指令是串行执行的,例如,在学校,下课,大家都跑去饭堂, 都去排米饭,此时还是要在窗口处排队的。

2023-12-04 12:44:47 117 1

原创 dp之最长的斐波那契子序列的长度&最长等差数列

请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。

2023-12-04 11:45:13 86 3

原创 redis—— 渐进式遍历

之前学过key* 获取所有的key,但是这个操作可能会一次性得到太多的key,阻塞redis服务器,所以不建议在生产环境中使用。KEYS *命令需要遍历整个数据库中的所有键名,这对于大型的 Redis 数据库来说会非常耗时和资源消耗。KEYS *命令会阻塞 Redis 服务器的主线程,这意味着在执行这个命令期间,Redis 将无法处理其他客户端的请求。安全问题:如果在生产环境中误操作使用KEYS *命令,可能会导致非常严重的安全问题。

2023-11-27 23:17:56 405 1

原创 记忆化搜索,dp——路径问题,最长递增子序列

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?

2023-11-22 17:56:23 90 1

原创 java io流中为什么使用缓冲流就能加快文件读写速度

在文件读取方面,FileInputStream和BufferedInputStream都有各自的优缺点。是一个基于字节的输入流,它从文件中读取字节数据。使用FileInputStream读取文件时,每次读取都会直接从磁盘中读取一个字节,这样会导致频繁的磁盘I/O操作,从而影响文件读取的效率。而则是一个基于字节的缓冲输入流,它利用了缓冲区的机制,每次读取一定量的数据到缓冲区中,然后逐个字节地将数据从缓冲区中读取。因为缓冲区可以预读数据并存储在内存中,所以可以减少磁盘I/O次数,从而提高文件读取的效率。

2023-11-22 00:46:06 692 4

原创 redis的过期策略以及定时器的实现

基于 redis 实现分布式锁为了避免出现不能正确解锁的情况通常都会在加锁的时候设置一下过期时间.(所谓的使用redis 作为分布式锁就是给 redis 里写一个特殊的 key value)1.redis 中并没有采取 定时器 的方式来实现过期 key 删除2.如果有多个 key 过期,也可以通过一个定时器来高效/节省cpu的前提下来处理多个 key ~~通过惰性过期和定期过期策略的结合,Redis可以高效地管理键的过期,并保持内存的合理使。expire作用是给指定的 key 设置过期时间。

2023-11-21 15:52:31 231 2

原创 扫雷游戏到底啥规则?!dfs模拟实现规则

本篇文章dfs实现扫雷游戏的规则。第一次玩扫雷是小学,当时对这个游戏不太感兴趣,感觉就是看运气随便玩玩,如今再看,哈哈哈也是有规则的!刚玩了几把游戏没错就是刚才,哈哈哈哈哈哈,差点就赢了😭,虽然还是简单局!但足以摸清一小点规则。1.当揭示一个空白方格(周围没有雷)时,游戏会自动揭示周围的方格。2.每个数字表示该方格周围的雷的数量,周围就按照米字型!让我们一起来玩扫雷游戏!3.点到雷,玩家out。)中的下一个点击位置(

2023-11-21 02:19:24 140 2

原创 正难则反的floodfill

介绍dfs系列的 被围绕的区域,太平洋大西洋水流问题,核心思想就是正难则反,floodfill,正向思维:从每一个地方去看是否能到达大西洋和太平洋;逆向思维:从太平洋和大西洋的 边界出发 ,标记能达到的地方。标记两次true的就是。

2023-11-20 19:59:57 56

原创 dfs--不同路径Ⅲ&Floodfill--图像渲染,岛屿数量

错误原因:直接在for循环里面写 if(grid[i][j]==2){check[i][j]=true;返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目。关键:step=count(0的个数)+2(1,2两个结束位置)这样会导致0的个数都没统计完你就去递归了😅必然错了。才开始错误的原因是:我没有用bx和by,

2023-11-19 18:19:18 69 1

原创 单词搜索&黄金矿工

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

2023-11-19 12:27:37 70

原创 动态规划——回文系列总结

介绍回文串或者子序列的基本解决思路,以及变成回文的最少操作次数和最长回文子序列

2023-11-17 01:55:58 223 7

原创 Redis的特性以及使用场景

是一个基于客户端-服务器架构的在的,属于NoSQL的一种。它可以用作,具有很高的灵活性和多样化的应用场景。作为一种内存数据库,Redis将数据存储在内存中,因此能够实现非常快速的读写操作。与磁盘存储相比,内存存储能够大幅提升数据的访问速度。这使得Redis成为一个系统,能够将频繁访问的数据存储在内存中,从而提高读取性能。此外,Redis还提供了丰富的数据结构支持,包括字符串、哈希表、列表、集合和有序集合等,使得它不仅可以简单地存储键值对,还可以处理复杂的数据结构,满足各种不同的需求。

2023-11-13 00:30:01 393 3

解码方法

petal_20230110_184009.mp4

2023-01-10

空空如也

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

TA关注的人

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