logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Golang 单元测试快速上手

单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般要根据实际情况去判定其具体含义,如 C 语言中单元指一个函数,Java 里单元指一个类,图形化软件可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小被测功能模块。在 Go 中,单元测试一般指对函数或方法的测试。go test 是 Go 用来执行测试函数(test functio

文章图片
合并K个升序链表(LeetCode 23)

这个方法和前两种方法的思路有所不同,我们需要维护当前每个链表没有被合并的元素的最前面一个,kkk 个链表就最多有 kkk 个满足这样条件的元素,每次在这些元素里面选取 val\textit{val}val 属性最小的元素合并到答案中。第二次合并后,结果链表的长度为 2n,第 i 次合并后,结果链表的长度为 in。考虑优先队列中的元素不超过 k 个,那么插入和删除的时间代价为 O(log⁡k),这里

相交链表(LeetCode 160)

当链表 headA 和 headB 都不为空时,创建两个指针 pA 和 pB,初始时分别指向两个链表的头节点 headA 和 headB,然后将两个指针依次遍历两个链表的每个节点。然后开始从当前位置同时遍历两个链表,当遍历到的链表的节点相同时,则这个节点就是第一个相交的节点。从头开始遍历第一个链表,遍历第一个链表的每个节点时,同时从头到尾遍历第二个链表,看是否有相同的节点,第一次找到相同的节点即第

二叉树的中序遍历(LeetCode 94)

根据中序遍历的顺序,对于根结点,先访问其左孩子,而左孩子又可以看做一根结点,然后继续访问其左孩子,直到遇到左孩子为停止访问,然后按相同的规则访问其右子树。而在访问左子树或右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。空间复杂度取决于递归的栈深度,而栈深度在二叉树为一条链的情况下会达到 O(n) 的级别。(1)若其左孩子不为空,循环将 R 及其左结点入栈,直至左结点为空;给定一个二叉树的根节

git pull

git pull是 Git 中最常用的命令之一,用于从远程仓库拉取最新代码并合并到当前分支。git fetch:从远程下载最新代码(不自动合并)git merge:将下载的代码合并到当前分支⚠️git pull会自动执行合并,可能会产生合并提交。如果希望避免自动合并,可以使用。

#git
死锁与死锁避免算法

死锁(Deadlock)是在多任务环境中的一种资源竞争问题,其中两个或多个进程(线程)互相等待对方持有的资源,导致所有进程都无法继续执行。死锁是一种非常棘手的问题,因为它会导致系统无法正常运行。举个例子。比如买东西,如果商家要先拿钱才给东西,顾客要先拿到东西才给钱,那么会发生死锁。另外,哲学家就餐问题是一个死锁的经典例子。银行家算法是由于 1965 年 THE 操作系统设计的一种避免死锁产生的算法

滑动窗口最大值(LeetCode 239)

因为堆不支持删除指定的元素,删除元素只能将堆顶的元素弹出,所以在移动窗口时,左边离开窗口的元素不着急从堆中删除,而是当堆顶元素不在窗口中时,不断地移除堆顶的元素,直到堆顶的元素出现在滑动窗口中。与方法一不同的是,在方法二中我们使用的数据结构是双向的,因此「不断从队首弹出元素」保证了队列中最多不会有超过 k+1 个元素,因此队列使用的空间为 O(k)。为了方便判断堆顶元素与滑动窗口的位置关系,我们在

C 移位运算

移位运算分为左移(<<)与右移(>>),包含逻辑移位(logical shift)和算术移位(arithmetic shift),二者区别如下:(1)逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充;(2)算术移位:移出去的位丢弃,空缺位(vacant bit)用符号位来填充。移位算只能作用于整数,不能作用于浮点数。对于无符号整数与有符号整数,左移...

创建型设计模式(4)—— 抽象工厂模式(Abstract Factory Pattern)

使用设计模式可以提高代码的可复用性、可扩充性和可维护性。抽象工厂模式(Abstract Factory Pattern)属于创建型模式,为创建一组相关或者相互依赖的对象(产品族)提供一个抽象类接口,而无需指定它们的具体类。。产品族的定义是:某个具体工厂生产的所有类型的产品,比如定义了一个抽象工厂接口A,它可以生产三种产品:p1、p2、p3,而这三个产品就叫一个产品族。抽象工厂模式可以说是工厂方法模

#设计模式#抽象工厂模式
结构型设计模式(3)—— 装饰者模式(Decorator Pattern)

使用设计模式可以提高代码的可复用性、可扩充性和可维护性。装饰者模式( Decorator Pattern)属于结构型模式,。它是通过创建一个包装对象,通过包装对象来包裹真实的对象,以达到装饰目的。装饰者模式在现实生活中有很多例子,比如一杯咖啡,我们可以往其中加入一些调料,加入巧克力变成摩卡咖啡,加入牛奶变成拿铁咖啡,也可以继续往摩卡或拿铁中加入焦糖、豆浆、奶泡等其他的调料,变成不同风味的咖啡。如果

#设计模式
    共 148 条
  • 1
  • 2
  • 3
  • 15
  • 请选择