自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【代码随想录——图论——并查集】

并查集常用来解决连通性问题。(判断两个元素是否在同一个集合中)

2024-07-15 10:57:12 251

原创 【代码随想录——图论——小岛问题】

使用两个visited数组即可。

2024-07-15 10:57:00 231

原创 【黑马点评——高级篇——分布式缓存】

利用cluster failover命令可以手动让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点,实现无感知的数据迁移。修改redis1.conf、redis2.conf、redis3.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。

2024-07-05 16:58:37 817

原创 【代码随想录——图论——岛屿问题】

pid=1171。

2024-07-05 16:57:16 366

原创 【代码随想录——图论——图论理论基础】

二维坐标中,两点可以连成线,多个点连成的线就构成了图。当然图也可以就一个节点,甚至没有节点(空图)

2024-07-04 10:02:03 1149

原创 【微服务网关——服务发现】

Apache ZooKeeper 是一个用于分布式系统中的协调服务。它提供了一套高效、可靠的分布式协调工具,用于实现服务注册、配置管理、同步、领导者选举等功能。Zookeeper 的设计初衷是简化分布式应用中的协调任务,从而使应用开发更容易。是一个分布式数据库(程序协调服务),Hadoop子项目树状方式维护节点方数据的增、删、改、查监听通知机制:通过监听可以获取相应消息事件(内容,子节点)

2024-07-03 09:34:10 1379

原创 【微服务网关——https与http2代理实现】

HTTP(超文本传输协议)和 HTTPS(安全超文本传输协议)是用于在网络上交换数据的两种协议。HTTPS 是 HTTP 的扩展,它在 HTTP 的基础上增加了加密层SSL/TLS ,以保护数据的安全。goLang服务器支持https与http。

2024-07-02 09:12:57 730

原创 【微服务网关——Websocket代理】

客户端通过 HTTP 请求发起 WebSocket 连接。

2024-07-01 20:12:11 1734 1

原创 【代码随想录——单调栈】

为了得到两边的最高高度,使用了双指针来遍历,每到一个柱子都向两边遍历一遍,这其实是有重复计算的。我们把每一个位置的左边最高高度记录在一个数组上(maxLeft),右边最高高度记录在一个数组上(maxRight),这样就避免了重复计算。但是在leetcode上会超时,该测试用例的特点为所有的height都为一个值,会使得复杂度为n^2。记录左边柱子的最高高度 和 右边柱子的最高高度,就可以计算当前位置的雨水面积。从栈头(元素从栈头弹出)到栈底的顺序应该是从大到小的顺序!这个方法比较通俗易懂。

2024-07-01 16:47:29 249

原创 【从零开始实现联邦学习】

可以看到联邦学习的效果还是不如集中式学习,也有可能是因为我迭代的轮次不够。原书的代码存在一点bug,现已被作者修复。Client端代码如下。Server端代码如下。

2024-06-28 15:50:46 228

原创 【论文阅读 Validation Free and Replication Robust Volume-based Data Valuation】

免验证的对于复制鲁棒性的基于量的数据估值。

2024-06-28 15:49:32 755

原创 【微服务网关——hystrix-go类库】

hystrix-go 是一个用于实现断路器模式的类库,它是 Netflix 的 Hystrix 的 Go 语言实现版本。它主要用于分布式系统中的容错和弹性设计,特别是在处理微服务架构中的服务间调用时非常有用。

2024-06-27 16:32:27 787

原创 【微服务网关——中间件实现】

请求从路由进来后会先调用方法1、方法2等中间件,最后才会调用反向代理、业务方法。将其作为中间件插入到某个路由路径上即可。将路由器注册到服务器中。

2024-06-27 16:32:10 898

原创 【微服务网关——Go令牌桶限流】

令牌桶算法广泛应用于控制 API 请求速率、限制资源访问频率、管理任务调度等场景。通过合理设置 limit 和 burst,可以有效平衡系统负载和服务质量。该算法并不会实时去维护令牌桶中的token的数量,而是通过last和lastEvent来巧妙的计算出该段时间内容桶内令牌的状态,同时通过锁来维护了对于令牌桶的访问一致性问题。Allow、Reverse、Wait三个方法底层调用的都是。

2024-06-26 14:41:16 934

原创 【代码随想录——动态规划——序列问题】

这道题目的初始化比较有趣,需要进行一定的注意。实际上与上题”最长公共子序列“完全相同。

2024-06-26 11:04:57 268

原创 【Gin框架——请求参数绑定源码分析】

gin_scaffold 是一个基于 Gin 框架打造的企业级开发脚手架,旨在加速Go语言(Golang)Web应用的开发过程。Gin本身是一个轻量级且高性能的Web框架,以其高效的路由处理能力、简洁的API设计而受到广泛好评。gin_scaffold在此基础上进一步集成了一系列最佳实践和常用功能模块,使得开发者能够更专注于业务逻辑的实现,而不是基础设施的搭建。

2024-06-21 10:50:25 601

原创 【代码随想录——动态规划——第五周——打家劫舍】

用map来记住路上的结果,但貌似还是过不了测试用例122。可能是leetcode上的测试用例更新了。区别:区别在于围成了一个圈。可能会出现偷了最后一个,又偷了第一个的情况。如何避免这种情况:将第一个房子去掉,偷一遍;将最后一个房子去掉,偷一遍。使用后续遍历,由于存在大量的重复计算,会导致超时问题。区别:在树结构上进行。融合了递归三部曲和动态规划五部曲。

2024-06-21 10:49:56 338

原创 【代码随想录——动态规划——第五周——买卖股票】

这里用一个[2]int来存储两个不同的情况,[i][0]用来表示第i日持有股票的情况下最大的利润,[i][0]表示第i日不持有股票的情况下的最大利润。不同点在于:你可以多次买入卖出股票,但是买入一定在卖出之前。买入之后不可以再买入股票,必须先卖出。思路:这里我们给每个dp设置了5个状态。每个状态都依赖于前一个状态进行推导。没什么好说的,直接看代码。

2024-06-19 09:14:51 345

原创 【微服务网关——负载均衡】

根据不同的权重给于不同的概率,权重往往与地域、服务器的性能相关。可以通过random函数来随机选择一个ip。

2024-06-19 09:14:34 675

原创 【代码随想录——动态规划——第五周】

有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组常见的类型01背包一维dp数组的背包在遍历顺序上和二维dp数组实现的01背包其实是有很大差异的,大家需要注意!完全背包如果求组合数就是外层for循环遍历物品,内层for遍历背包。

2024-06-18 11:23:48 496

原创 【代码随想录——动态规划——第四周】

注意:这里顺序不同的序列也被视为不同的组合,所以我们将nums放入内容循环的位置。

2024-06-18 11:23:40 213

原创 【代码随想录——动态规划——第三周】

这里设置背包的最大长度为2100即可,因为题目中有说数组之和小于1000.但考虑到我们需要实行j+nums[i]所以保守起见我们设置的数应该稍大于2000即可,这里我们设置为2100。

2024-06-17 11:54:45 385

原创 【代码随想录——动态规划——第二周】

for i := 0;i < n;i++ {//dp数组初始化j-- {for i := 1;i < n;

2024-06-17 11:54:35 311

原创 【代码随想录——动态规划——理论基础】

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。

2024-06-06 10:03:04 233

原创 【代码随想录——贪心算法——四周目】

思路:后序遍历,从底到上,节点有三种状态。

2024-06-06 10:02:48 238

原创 【代码随想录——贪心算法——三周目】

自己思路:gas-cost,得到从这个站出发——一直到达下一个站,能够剩余的汽油。找出最大连续子串的起始位置即可。

2024-06-05 10:40:19 356

原创 【Go专家编程——泛型】

泛型是程序设计语言的一种风格或范式,它允许程序员在编写代码时使用一些在以后才指定的类型,在实例化时作为参数指明这些类型。Go在1.18引入了泛型。

2024-06-05 10:37:51 1036

原创 【代码随想录——贪心算法——二周目】

思路:构建每两天之间的利润之差,如果是正数则一直累加即可。体现出来场景是,如果理论一直为正,则说明我们需要一直持有股票。当出现负数时,代表我们应该在前一天卖出。当出现正数时我们应该在前一天买入。

2024-06-04 11:14:13 315

原创 【代码随想录——贪心算法——一周目】

解题思路:每个人拿到刚好或尽可能接近能够满足自己的饼干。解题思路:需要考虑整个数组都是负数的情况。解题思路:通过相邻两个数之差进行判断。

2024-06-04 11:14:02 164

原创 【Go专家编程——语法糖】

语法糖表示编程语言中特定类型的语法,这些语法对语言的功能没有影响,但是更方便程序员使用。

2024-06-03 08:40:36 403

原创 【Go专家编程——定时器】

Timer是一种单一事件的定时器,即经过指定的时间后触发一个事件,这个事件通过其本身提供的channel进行通知。type Timer struct{ //Timer代表一次定时,时间到来后仅发生一个事件//通过timer.NewTimer(d Duration)创建一个Timer,参数是等待的时间,时间结束后触发时间Ticker是一种周期性定时器,即周期性触发一个事件,这个事件通过其本身提供的channel进行通知,对外仅暴露一个channel。

2024-06-03 08:40:25 1284

原创 【代码随想录——回溯算法——四周目】

首先先把图的邻接表存进字典,并且按字典序排序,然后从‘JFK’开始深搜,每前进一层就减去一条路径,直到某个起点不存在路径的时候就会跳出while循环进行回溯,相对先找不到路径的一定是放在相对后面,所以当前搜索的起点from会插在当前输出路径的第一个位置。

2024-05-31 19:43:59 252

原创 【Go专家编程——反射】

反射是运行时检查自身结构的机制。反射特性与interface紧密相关,同时它也与Go类型系统关系密切。

2024-05-30 14:09:42 342

原创 【Go专家编程——并发控制——Mutex】

自旋对应于CPU的PAUSE指令,CPU对该指令什么也不做,相当于CPU空转,对于程序来说相当于”sleep“了一小段时间,时间很短,30个时针周期。不同于sleep,自旋不会将协程转换为睡眠状态。RLock():读锁定增加读操作计数,readerCount++阻塞等待写操作结束(如果有)RUnlock():解除读锁定减少读操作计数,readerCount–最后一个解除读锁定的协程唤醒等待写操作的协程(如果有)Lock():写锁定获取互斥锁阻塞等待所有读操作结束。

2024-05-29 09:13:13 792

原创 【Go专家编程——并发控制——三剑客】

我们考虑这么一种场景,协程在A执行过程中需要创建子协程A1、A2、A3…An,协程创建完子协程后就等待子协程退出。针对这种场景,Go提供了三种解决方案:channel一般用于协程之间的通信,不过channel也可以用于并发控制。比如主协程启动N个子协程,主协程等待所有子协程退出后再继续后续流程。场景示例:下面的程序通过创建N个channel来管理N个协程,每个协程都有一个channel用于与父协程通信,父协程创建完所有协程后等待所有协程结束。小结优点:实现简单缺点:需要创建与协程数量相等的chann

2024-05-29 09:12:34 1466

原创 【代码随想录——回溯算法——一周目】

回溯法解决的问题都可以抽象为树形结构,因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度就构成了树的深度。递归就要有终止条件,所以必然是一棵高度有限的树(N叉树)。

2024-05-28 09:03:15 385

原创 【代码随想录——回溯算法——三周目】

这题需要先进行排序,和候选人那题类似。防止出现重复的子集。

2024-05-28 09:02:45 317

原创 【博弈论5——合作博弈】

使得所有参与博弈的人员中的任何成员都不能从联盟重组中获益的结构,称为该合作博弈的核。如果博弈的有效解集非空且有核,核一定包含在有效解集中。有效解集中的许多解不是核。符合帕累托标准的联盟结构称为合作博弈的的有效解所有有效解的集合称为博弈的解集合作博弈的核可以有多个核概念的致命缺点:经常为空。

2024-05-27 11:39:26 1429

原创 【Go专家编程——内存管理——逃逸分析】

逃逸分析(Escape Analysis)是指由编译器决定内存分配的位置,不需要程序员决定。

2024-05-27 11:39:14 851

原创 【Go专家编程——协程】

一般来说,处理器P中的协程G额外再创建的协程会被加入到本地的runqueues中;但如果本地的队列已满或阻塞的协程被唤醒,则会放入到全局的runqueues中;处理器除了调度本地的runqueues中的协程,还会周期性地从全局runqueues中摘取协程来调度。在某些I/O密集型的应用中,不妨把GOMAXPROCS的值设置得大一些,或许会有更好的效果。如果大量的线程都发生了系统调用,则会对系统发生阻塞,使任务得不到即使的处理。说白了就是当前P已经将自己队列中的任务全部干完了,而全局队列中又没有新的G。

2024-05-26 19:35:12 832

空空如也

空空如也

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

TA关注的人

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