自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode105-前序中序来构造二叉树-Python-分解问题的思路

本文讲解了Leetcode-105题,从二叉树的前序和中序遍历结果去构造二叉树的思路

2026-01-09 20:06:12 458 1

原创 Leetcode131题解 -Python-回溯+cache缓存

本文讲解了leetcode131题的解题思路与源码

2026-01-09 19:57:24 459

原创 珊瑚单词英语版PRD-1

用go实现在线单词查询、生词本记录、辅助记忆单词的网站

2026-01-05 21:28:18 941

原创 Go 语言之旅方法(Methods)与接口(Interfaces)完全指南

本文整理自 Go 官方互动教程 “A Tour of Go” 中的 Methods / Interface 模块

2025-12-26 09:02:26 382 1

原创 Go中的指针、结构体、切片、字典

欢迎回到 Go 语言之旅!在掌握了基础语法后,我们将进入 Go 语言最核心的“数据及其操作”部分。这一章节涵盖了指针、结构体、数组、切片以及映射。

2025-12-25 09:38:15 587

原创 深入浅出 Go 流程控制:从循环到延迟执行

go语法

2025-12-22 17:39:06 252

原创 Go-Package-Module-functions

Go中function、package|、module的关系和区别

2025-12-22 14:27:53 356

原创 Go函数闭包实战-复用函数

在构建 Web 应用时,我们经常会发现自己在不同的处理函数(Handler)中编写相同的逻辑。比如,验证请求路径、提取参数、处理错误等。在之前的代码中,我们的 、 和 都必须在开头调用 来获取页面标题并进行错误检查。这种重复代码不仅显得臃肿,而且一旦验证逻辑发生变化,我们需要修改所有的地方。那么,如果我们能把这些通用的验证逻辑“包装”起来,只写一次,该多好?Go 语言的 函数字面量 (Function Literals) 和 闭包 (Closures) 正是解决这个问题的利器。在优化代码结构之前,我们先

2025-12-22 11:23:48 442

原创 Go中的闭包函数Closure

本篇文章介绍了Go语言中重要的概念:函数闭包

2025-12-21 23:03:57 789

原创 Leetcode-3780-Python

这道题是典型的“模运算”应用。以后遇到“整除”、“倍数”之类的问题,别急着把数字加起来,先想想余数能不能帮你把问题简化。把复杂问题拆解成几个小桶,分别处理,最后合并结果,这大概就是算法题带给我们解决问题的思路吧。

2025-12-21 18:35:22 876

原创 string,byte,rune,character?详解Golang编码-UTF-8

go中的string、bytes、rune

2025-12-18 16:20:21 602

原创 一文搞懂纸老虎-布隆过滤器

Bloom Filter:用一点点“误判”换一大截内存(以及为什么它这么好用)

2025-12-16 22:26:32 854

原创 一文搞懂 Linux 进程:虚拟地址空间、进程终止与程序替换

在 Linux 中,进程(Process) 是操作系统进行资源分配和调度的基本单位。理解进程,本质上就是理解 “操作系统如何管理内存、程序如何运行以及如何退出”。

2025-12-15 16:28:24 593

原创 测试开发-游戏开发-面经

本文梳理了部分作者在2025年9月~10月的面经

2025-12-12 14:07:20 817

原创 游戏开发笔试-二分查找

本文讲解了作者在面试英佩游戏时遇到的笔试题目

2025-12-12 09:56:23 532

原创 【C++并发实战】一行代码引发的Core Dump:深入解析多线程下的“赋值与唤醒”时序陷阱

在异步网络库(如 Muduo)的同步化封装过程中,CountDownLatch 是神器,也是地雷。本文从一段看似人畜无害的回调代码出发,复盘了一次因“唤醒顺序”导致的段错误(Segmentation Fault),并深入探讨了多线程环境下的 Happen-Before 原则与指令执行时序。

2025-12-03 18:23:35 900

原创 Linux-pthread线程库

Tips:任何一个线程调用exit都会导致整个进程退出,若只想让某个线程退出,应该用pthread_exitPthread_t (线程id)是线程库struct tcb属性在地址空间中的地址!这就是为什么要传线程id!thread 声明变量的线程私有的! thread只能修饰内置类型、 底层封装都是2.锁如何实现?背景:线程寄存器私有,内存共享,swap/exchange指令由于只有一条,所以是原子的,将mutex内部的1交换到线程内部寄存器里,好像是他把钥匙拿走了,其他线程进来,只能阻塞等待。三

2025-09-30 12:28:14 659

原创 Linux-文件系统

文件 = 内容 + 属性访问文件,必须先打开它文件打开后,由磁盘加载到内存中,如何管理文件?先描述,在组织调用系统接口write并写入字符串时,要不要考虑'\0'的问题?不需要!系统层面没有'\0'的概念,这是c/c++的概念!在系统层面,进程访问文件的唯一方式是文件描述符,FILE* 一定封装了fd!又加了语言级别的缓冲区一切皆文件,是说给进程的!进程只需要拿着文件描述符,找到struct_file,调用不同的read/write接口完成对文件的读写!中的指针是一个极其重要的“”枢纽。

2025-09-28 20:33:18 257

原创 Linux内核Epoll源码参考----解剖高并发原理

本文介绍了Epol的特点,原理,并附带内核epoll实例的源码

2025-09-25 21:38:44 425

原创 详解TCP握手与挥手

本文介绍了TCP三次握手与四次挥手、IP分片的的详细流程,以及linux抓包工具tcpdump

2025-09-24 20:58:31 678

原创 为什么grpc如此受欢迎?

本文介绍了Google开源的远程过程调用框架grpc,并与其他类似框架做了对比。

2025-09-23 20:50:26 303

原创 Protobuf vs Json

Json vs Protobuf ?

2025-09-22 22:05:53 879

原创 LeetCode - 两数之和I - hash - c++

本文旨在帮你学会leetcode-两数之和的详细解题思路,希望对你有帮助。

2025-05-17 19:14:49 436

原创 链表带环问题,解剖快慢指针

至于找入环节点,我们可以这样想:如果知道环的长度或者其整数倍,那么让快指针先走环的长度的距离,在让慢指针从头节点开始和快指针每次走一步,这样他们任何时刻的距离差就是环长,那么当慢指针到达入环的节点时,快指针刚好在环中转了一圈回到入口,这时他们相等,入口就找到了。这时会发现如果链表不带环,则直到快指针走到nullptr,慢指针处于链表中部,他们不会相遇。假设相遇时,慢指针走了k步,则快指针走了2k步,2k-k=k,k是多走的距离,也就是环长的整数倍,就相当于知道了环的长度。

2024-12-08 23:00:03 254

原创 结构体内存对齐,memmove与memcpy的区别

功能是把source位置开始的num个字节的数据拷贝到dest位置,而当这两个地址存在重叠时,memcpy可能达不到想要的效果。3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构。体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。

2024-12-05 23:35:00 409

原创 指针类型的意义

例如,int*的指针解引用得到自int*开始向后四个字节的空间,+1往后跳过四个字节的距离,char*指针解引用得到自char*开始向后1个字节的空间,+1往后跳过1个字节的距离。有了指针,我们就可以通过函数操作我们开的空间,因为函数传参是转值,会新开辟空间,在被调用函数中操作不影响主调函数,如果可以传地址,就可以在空间中为所欲为。数组arr中存放元素个数为n的一维数组,于是arr作为数组首元素的地址,它加a跳过一维数组的大小的a倍的范围,解引用拿到。当然,这段存放其他数据地址的空间也有属于自己的地址。

2024-12-03 21:51:46 377

原创 c++实现扫雷小游戏

扫雷游戏的实现

2024-11-29 22:39:54 569

原创 数组、简单函数

2.当arr被用作sizeiof的运算对象,此时的结果是整个数组的大小,单位是字节(Byte)。3.当用作decltype的参数,以及typeid的运算对象时,不会发生隐式类型转换。一个 除了1和它本身 ,再没有其他因子的数是素数,优化:偶数一定不是素数。的运算对象,此时结果是整个数组的地址,不是首元素地址。1. 当arr被用作。

2024-11-26 21:35:38 116

原创 用哨兵节点简化链表的插入、删除操作

加入哨兵节点后的插入操作:由于链表一定不为空,所以无需判断,只需要逐次遍历链表,找到尾节点,然后把新节点链入尾部。,如果为空,插入节点作为链表头节点返回。不为空,遍历链表至最后一个节点,tail->next=newnode;由于通常是单向链表,所以一般要保存要删除节点的上一个节点(由于头节点没有上一个节点,所以要单独处理),2.判断 要删除的节点 是否是头节点,若是,返回头节点的下一个节点。哨兵节点通常位于链表的头部,它的值没有任何意义。让上一个节点指向要删除节点的下一个节点。需要判断给的链表是否为空。

2024-11-23 10:28:30 238

原创 剑指offer 第九题 乘积小于k的连续子数组个数

主要是因为存在大量的重复计算,比如我们在遍历完区间[a,a+1,...,b]之后,i由a移动到a+1,这时,我们要继续遍历[a+1,b],即product*=j,会发现这个操作在上一次循环已经做过了,这就是问题所在,那么该如何避免重复呢?,所以可以放心的++i,这时product中记录的就是[i+1,j+1 ]的所有数字之积,一直向右移动i,直到product小于k,接着就到。这种思路在脑海里可以抽象成, 一个人在马路上从左往右走,每走一步,就转身回头看看,每走一步,就回头看看......

2024-11-15 23:06:41 231

原创 从O(n)到O(lgn)的经典优化思路

可以对上述思路做调整:当被除数大于除数,则比较被除数是否大于除数的2^1倍,如果是,则继续比较被除数是否大于除数的2^2倍,以此类推,直到被除数最多大于除数的2^k倍,则商累加2^k,被除数减去除数的2^k后,再依次与除数的2^1,2...做比较,重复上述过程,直到被除数小于除数(假设为正数)由于每次将除数翻倍,则时间复杂度为O(lgn)。和1相同,可以通过递归 x*pow(x,n-1)这种思路,由于每次将n减去1,时间复杂度仍然为O(n),而且大家想想,求1的2147483647有多恐怖。

2024-11-01 15:15:40 370

原创 Lesson01---C++入门

一些C++历史与入门语法

2024-06-21 22:51:57 808

空空如也

空空如也

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

TA关注的人

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