自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 行为型之观察者模式

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。本篇文章就通过分析Spring框架中事件机制的源码学习观察者模式

2023-12-02 01:19:26 1241 1

原创 结构型之装饰器模式(Decrator Pattern)

装饰器模式用于对原有的实现类进行功能增强而不需要改变原有类的实现,当继承结构比较复杂并且有类似的需求时可以考虑使用装饰器模式。虽然刚开始指出了一般装饰器模式的实现,但是在具体模式实现时并没有那么死板,装饰器也是可以进行嵌套的,比如InflaterInputStream,下一次看一些别人的源代码时能够识别出来就可,这样也不会因为源代码的复杂代码结构而望而却步。

2023-11-23 16:32:37 981

原创 levelDB之基础数据结构-Slice

分析levelDB中字符串结构Slice的定义和实现

2023-11-18 00:15:01 294

原创 Redis之zset在异步队列上的应用

本篇文章记录了使用zset实现一个简单异步队列的过程,然后对于第一次实现存在的一个问题,使用lua或者锁的方式优化网络IO。使用锁的方式会降低程序的并发度,所以一般使用lua脚本的方式来实现。

2023-10-21 00:56:39 752

原创 Java集合框架之Vector源码分析

Java集合体系中的一个线性集合,底层原理其实和ArrayList基本一致。ArrayList和Vector又什么区别?Vector是线程安全的扩容机制不同,ArrayList通常增长原本容量的0.5倍,vector增长1倍本篇文章就通过这个面试题,结合Vector的源码验证一下通过翻看Vector的源码,发现Vector对外提供的对集合进行操作的函数都是通过synchronized关键字进行加锁的。这也就是为啥说Vector是线程安全的。

2023-10-16 23:28:28 200

原创 Java集合框架之ArrayList源码分析

什么是ArrayList?ArrayList底层数据结构是怎么实现的?作为一个容器,分析增删改查的过程ArrayList的扩容机制通过简单分析ArrayList的源码,学习了Java中ArrayList的一些通用操作,增删改查以及扩容,当然,翻看源码还可以发现,ArrayList还提供了很多批量操作的API,其逻辑也不复杂。ArrayList内部包含了一个实现了Iterator接口的内部类,用于遍历操作,但是Java的集合框架中,迭代器是一个通用的操作接口,后面再独立拿出来进行分析。

2023-10-15 22:07:24 326

原创 Go中varint压缩编码原理分析

varint是一种将整数编码为变长字节的压缩编码算法,本篇文章就是分析该编码算法的原理以及看一看go中的源码实现。计算机中,整型数据是按照补码进行存储的,varint编码的原理就是将整数按照7bits划分,在最高位设置一个有效位表示后面是否还有该整数的部分,当最高位为1时表示后面还有该数据的字节,为0表示该字节是最后一个字节。对于小的数字使用更好的字节进行编码对于大的数字使用更多的字节进行编码。

2023-10-14 01:08:25 709

原创 Redis-简单动态字符串(SDS)

以上代码来自Redis的源码,其中包含了redis关于sds字符串编码的定义。从源码中可以看出,redis定义了5种sds的编码,但是hisdshdr5被声明是没有被使用的,它的定义个后面的四种也略显区别。根据注释的描述,该结构只是为了展示 5 型sds的布局结构,flags的低3位表示类型,高5位表示字符串的长度。重点看后面的几种定义。各个字段的含义len 表示实际字符串的长度,比如我们存入一个"HELLO",len = 5。

2023-08-06 23:21:14 243

原创 MySQL-索引基础

索引,在MySQL中也称为键(key),是存储引擎用于快速查找记录的一种数据结构。本篇文章通过5个问题来简单了解索引是什么,为什么会有索引,使用索引有哪些优势。对于文章中提到的一些概念,后面会随着学习的深入,逐步涉及,比如学习B-Tree(实际上InnoDB引擎使用的B+树,因为B树将实际的记录存到到节点中,这会占用更多的内存,另外B树是多路平衡查找树,过多平衡树的操作也会带来更多的开销。希望你能从本篇文章学习到一些新的东西。

2023-08-05 22:05:55 112

原创 Go中在解析yaml配置文件时候遇到的问题

在yaml配置文件中,port是一个端口号,我在Mysql的结构体定义中是一个string,所以出现了此问题。

2023-06-19 10:38:24 406

原创 使用Gin的模板嵌套时遇到一直模板未定义的情况

出现此报错是因为我想在main.tmpl中嵌套其他模板。

2023-06-12 19:36:27 169

原创 GRPC入门(Go语言实现)

以前的传统可开发采用的单体架构,就是所有的服务都部署在同一台机器上,当用户来进行访问时,不管用户需要哪一个服务,请求都要到这台机器上。当用户增多时,虽然可以通过Nginx做负载均衡,通过在多台机器上部署相同的服务,但是仍然避免不了当一台机器上的一个服务出现问题,那么该机器上的其他服务都将不可用的事实。

2023-06-10 12:40:48 1227

原创 探索slice原理

本篇博客从源码的角度分析了slice的底层原理,为了熟悉slice,最终使用slice 实现了一个简单的线性表demo,希望你可以从中获取到新的东西。

2023-06-01 21:16:44 125

原创 C/C++中由于语义不明确为引发的血案,(关于 i = i++的问题),带你理解本质

带你彻底搞懂一个没有意义的C语言写法

2023-04-26 13:51:30 229

原创 P1030 求先序排列

根据一颗二叉树的中序遍历和后序遍历构造二叉树

2023-02-22 22:56:40 181

原创 第一章 基础知识

跟着“C++之父”学习C++肯定错不了

2023-02-19 15:28:17 102

原创 C++实现一颗字典树(基于前缀树)

字典树的详细实现,看一下不要钱

2023-02-06 23:39:54 208

原创 P1216 数字三角形

数字三角形算法题,动态规划,洛谷

2023-01-22 22:06:09 187

原创 《操作系统导论》第18章总结 分页:介绍

《操作系统导论》第18章总结 分页:介绍

2023-01-11 16:11:16 209

原创 优快云竞赛第21期总结

优快云第21期竞赛总结(无题解)

2023-01-09 22:15:02 206

原创 《操作系统导论》第15章 机制:地址转换 课后习题

《操作系统导论》第15章 机制:地址转换 课后习题

2023-01-07 21:23:08 457

原创 《操作系统导论》第14章 插叙:内存操作API 课后习题

《操作系统导论》第14章 插叙:内存操作API 课后习题

2023-01-06 21:32:27 278

原创 《操作系统导论》第九章 调度:比例份额 课后习题

《操作系统导论》第九章:比例份额 课后习题

2023-01-05 20:38:40 397

原创 UVA679 Dropping Balls

UVA679 Dropping Balls 掉落的小球

2023-01-03 19:02:24 174

原创 《操作系统导论》第8章总结 多级反馈队列

《操作系统导论》第8章 多级反馈队列总结

2023-01-02 21:04:59 451

原创 UVA12657 Boxes in a Line

UVA12657 Boxes in a Line

2023-01-02 14:06:09 220

原创 UVA11988 Broken Keyboard

UVA11988 Broken Keyboard 损坏的键盘

2022-12-31 21:52:03 184

原创 UVA442 Matrix Chain Multiplication

UVA442 矩阵链乘Matrix Chain Multiplication

2022-12-31 19:39:21 230

原创 UVA514 Rails

UVA514 Rails 铁轨

2022-12-30 22:45:37 151

原创 UVA210 Concurrent Simulator

UVA210 Concurrent Simulator(并行模拟)

2022-12-30 15:38:59 167

原创 《操作系统导论》第七章 进程调度

《操作系统导论》第七章 进程调度课后习题

2022-12-01 21:07:33 607

原创 《操作系统导论》第五章“Process API”课后习题

《操作系统导论》第五章课后习题答案

2022-11-19 19:59:55 1010

原创 前缀函数、KMP算法的实现

文章分享了字符串匹配相关的算法,前缀函数,以及将前缀函数的信息利用到极致的KMP算法,文章代码使用java来实现。

2022-10-29 23:59:24 605 1

原创 java之正则表达式的使用学习笔记(完整)

java之正则表达式的使用正则表达式匹配规则 正则表达式的匹配规则就是从左到右按规则匹配 匹配任意字符// 在正则表达式中,'.'表示匹配任意一个字符public class Regex{ public static void main(String[] argc){ String s = "cde"; boolean f = s.matches("c.e"); System.out.println(f); //true } }匹配数字//

2022-02-07 18:10:17 662

原创 java实现爬楼梯的最小费用(动态规划)

解题思路我们爬上第n级台阶所花费的最小费用即为从第n-1级台阶所花的费用加上cost[n-1],或者从第n-2级台阶所花费的最小费用加上cost[n-2],因此我们只需要一个长度为3的数组即可完成计算,有一点需要注意的地方是爬上最后一级台阶之后还要再爬一次才能到顶部,因此,在遍历cost数组时,最后一级台阶的费用也要使用,刚开始用了一个dp[n]的数组,后来经过优化,使用长度为3的数组即可解决问题,代码如下:代码class Solution { public int minCostClimbi

2022-01-17 15:05:59 604

原创 java实现斐波那契数列(递归和非递归)

基础知识:斐波那契数列的运算规则为F(0) = 0;F(1) = 1;当n>=2时,F(n) = F(n-1) + F(n-2);显然斐波那契数列具有递归的定义,下面用java递归实现当输入n时,返回F(n)的值:算法思路:首先判断当前n的值,当n=0时,返回0,当n=1时,返回1;否则返回f(n-1) + f(n-2)class Fib { public int fib(int n) { return f(n); } public int f(int

2022-01-15 23:16:02 1598

原创 java实现数据结构图论的广度优先和深度优先遍历算法(附源代码)

java实现数据结构图论的广度优先和深度优先遍历算法(附源代码)广度优先遍历和深度优先遍历是图论中两个比较重要的遍历算法,下面介绍这两种遍历算法,并用java代码进行实现:一、深度优先遍历深度优先遍历有点类似于树中的先序遍历,顺着一条线依次找到相应的节点,此时为了方便,我们往往需要一个额外的标志数组进行标记我们已经访问过得节点算法步骤:(1)首先访问出发点V。(2)然后依次从V出发搜索V的每个邻接点W,若W未曾访问过,则以W为新的出发点继续进行深度优先搜索遍历,直至图中所有和源点V有路径相通的顶

2022-01-12 16:54:35 2763

原创 C语言第三方库---Melon安装(Linux)

C语言第三方库—Melon安装(Linux)Melon库是C语言开发时常用的一个第三方库,内部包含了一些常用的数据结构和算法,因为C语言标准库中没有像C++或者Java里的一些强大的库,最近想深入学习更多C语言,下面也是自己学习记录的过程 :这里使用的是Ubuntu20.04,首先你的Linux需要先安装好git,make等工具,既然你要安装第三方库,这里默认你已经安装过一些必要的软件了。使用git命从GitHub下载melon:git clone https://github.com/water-

2021-12-07 12:22:20 2502 1

原创 Ubuntu20.04更换镜像源

ubuntu更换镜像源

2021-12-05 14:52:29 20409 6

原创 C语言实现逆序打印叶子节点路径

C语言实现逆序打印节点路径实现的功能,输入一个广义表和一个数据,实现打印目标数据的逆序路径#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define LEFT 1#define RIGHT 2 //树节点 typedef struct node { char data; struct node *left, *right;} BT;//栈结构 typedef stru

2021-11-26 21:32:43 640

移动应用开发小作业,实现读取天气数据并显示

使用AndroidStudio开发的一个小的程序,功能是读取天气网站的数据并将数据显示在页面上,可以勾选城市进行选择,但是程序中涉及的天气数据的API可能失效,需要自己找并进行替换。

2023-05-31

数据结构课程设计,算法可视化

和室友连夜爆肝整理!!! 使用JS的可视化库编写,使用的库的内容可能需要魔法,不然可能会报错,如果没有正常显示,可以在网页上检查看一下是不是js库没有正常加载

2023-05-16

空空如也

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

TA关注的人

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