自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Guanngxu的博客

编程、生活、认知

  • 博客(85)
  • 资源 (7)
  • 问答 (2)
  • 收藏
  • 关注

原创 BUCK 电路详解

参考内容:手撕Buck!Buck公式推导过程电力电子的基础应用《精通开关电源设计(第二版)》Buck电源芯片输出有问题?检查这几样原来PWM这么简单!BUCK 电路构建根据高中所学习的物理知识可以很容易的想到,使用一个滑动变阻器即可实现降压和稳压的效果。当负载波动时,通过改变滑动变阻器的阻值,可以调节负载所获得的电压。但是使用滑动变阻器的劣势也很明显,大量的耗能会导致器件温度快速升高。上面所提到的电路主要缺点在于导通器件(变阻器或三极管)本身存在耗能,那么有没有不会耗能的导通器件呢?

2024-04-11 18:39:08 596

原创 图论——并查集

是一种精巧的树形数据结构,它主要用于处理一些不相交集合的合并及查询问题。一些常见用途,比如求联通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(LCA)等。并查集的理念是只关注个体属于哪个阵营,并不关心这个阵营中个体内部的关系,比如我们常说的张三是李家沟的,王二是王家坝的。同时并查集借助个体代表集体的思想,用一个元素代表整个群体,就像我们开学都会有学生代表、教师代表讲话一样,在台上讲话的那一个学生就代表了学校所有的学生。

2023-11-07 21:41:41 497

原创 《算法竞赛进阶指南》165 小猫爬山题解

经过思考发现,我们只需要尽可能的在每辆车上都放更多的小猫,就能以最经济的方式把所有小猫都送下山。所以是一个非常明显的贪心题目,我们将所有小猫按重量排序,尽可能把肥猫先送下山即可。当然,每辆缆车上的小猫的重量之和不能超过 W。每租用一辆缆车,Freda 和 Rainbow 就要付 1 美元,所以他们想知道,最少需要付多少美元才能把这 N 只小猫都运送下山?这天,小猫们要去爬山。减小的速度加快就会减少搜索分支,即每次放更重一点的猫进去,就能达到效果。索道上的缆车最大承重量为 W,而 N 只小猫的重量分别是C。

2023-11-07 21:40:28 282

原创 二叉树的前序、中序、后序、层序遍历

在前序和中序遍历中,只要左子树处理完毕实际上栈顶元素就可以出栈了,但后序遍历需要把左子树和右子树都处理完毕才能出栈,显然我们需要某种方法记录遍历的过程。有了前面的基础,我们再来考虑中序遍历,会发现中序遍历与前序遍历只是打印结点的位置不一样。若不属于上述情况,则依次将当前结点的右孩子和做孩子入栈,这样就能保证每次取栈顶元素时,左孩子都在右孩子前面被访问,左孩子和右孩子都在父结点前面被访问。那么我只需要按照根右左的方式遍历完,然后将遍历结果掉一个个儿就可以,而栈就具备掉个儿的功能,因此可写出如下代码。

2023-11-07 21:39:16 161

原创 动态规划实例——01 背包详解

有 n 件物品,每件物品有一个重量和一个价值,分别记为 w1,w2,…现在有一个背包,其容量为 wk,要从 n 件物品种任取若干件。第二行 n 个整数表示每一个物品的重量,第三行 n 个整数表示每一个物品的价值。递归在执行过程中会存在重复计算相同子问题的情况,我们可以将其改为用循环实现,即动态规划的写法。那么在背包剩余容量可以装下第 n 个物品时,该问题可以表示为求如下两个问题的最大值。我们以只有 A、B、C 三件物品的情况为例,对于每一个物品都存在。的情况下,符合背包容量的最大值。表示不拿当前物品,以。

2023-11-07 21:36:43 738

原创 Oracle 安装及 Spring 使用 Oracle

Oracle 在创建表的时候,不能像 MySQL 那样选择主键直接自增,但是我们可以通过给表创建序列和触发器去实现自增。下文以创建 USER 表为例。需要注意的是,在 Windows 下选择 SID 或是服务名均可连接成功,但是在 Mac 下需要选择 SID 方式才能连接成功。以 Navicat 客户端为例,新建连接时按下图方式填写连接信息即可,密码即为。修改上述信息后,需要重新启动数据库才会生效。编辑完成后,需要刷新上述环境变量才能使用。执行插入语句时可以发现,需要注意的是,上面的。

2023-11-07 21:34:35 421

原创 动态规划实例——换零钱的方法数(C++详解版)

换零钱

2023-02-26 22:38:15 2392 1

原创 使用 Git 工具进行项目管理

使用 Git 工具进行项目管理

2022-11-05 22:41:55 2060

原创 为什么宏定义要使用 do {...} while (0) ?

为什么宏定义要使用 do {...} while (0) ?

2022-11-05 22:37:38 808

原创 C 语言拾遗

C 语言拾遗

2022-11-05 22:36:18 493

原创 牛客网 NC632 牛牛摆木棒、POJ 1037 美丽的栅栏题解

参考内容:OI题解 - A decorative fence[POJ 1037]poj1037(dP+排列计数)本文首发于牛客网:题解 | #牛牛摆木棒#题目牛客网 NC632 牛牛摆木棒、POJ1037-A decorative fence(美丽的栅栏)描述有n个木棒,长度为1到n,给定了一个摆放规则。规则是这样的:对于第 i (2≤i≤n−1)(2 \leq i \leq n-1)(2≤i≤n−1) 个木棒 aia_iai​,(ai>ai−1(a_i > a_{i-1}(a.

2021-09-22 22:47:56 744

原创 如何求两个数的最大公约数

求几个整数的最大公约数大致有三种方法,求多个整数的最大公约数可以拆分为求两个整数的最大公约数,所以核心问题还是求两个整数的最大公约数。穷举法很直观就能想到穷举法,先找出两个数字中比较小的那一个min,然后逐个验证从2 ~ min的数字是否能被两个数整除,如果能同时被两个数字整除那就是公约数,找出其中最大的那个公约数就是所求的结果。int gcd(int a, int b){ int min = a; if(b < a){ min = b; } fo

2021-01-14 17:44:15 2231

原创 如何搭建一个属于自己的博客/企业网站?

本文首发于 Guanngxu 的个人博客:如何搭建一个属于自己的博客/企业网站本文参考内容:如何做博客/企业站以及注意事项Typecho支持Emoji表情方法说明:此篇文章得益于王红星的指导,喜欢直接粗暴一点的朋友可以跳过前面,直接从程序的选择开始阅读。我的博客搭建之路说起来有点惭愧,我自己是计算机科学与技术专业出身,虽然博客系统在我眼里是很简单的系统,但是我却一直畏惧从零开始搭建一个系统的麻烦性,因为但是安装程序的运行环境就会耗掉我大量的时间,再加上我写代码、测试、上线等工作少说也得要四五

2020-10-19 12:12:54 1029

原创 Vue + TypeScript 项目起手式

在此前我使用的前端框架是 Angular,使用过 TypeScript 后你就会讨厌 JS 了,我学习 Vue 时的最新版本是 2.5,相信大部分同学都不会认为 Vue 那样又细又长的代码很美观吧,简单看了一些网络博客后,我毅然决然引入了 TypeScript 进行开发,本文仅整理记录我自己遇到的一些坑。使用 Cli脚手架是一个比较方便的工具,这里需要注意的是@vue/cli和vue-cli是...

2020-01-10 23:55:47 884

原创 变量提升与作用域

参考内容:lhs rhs是啥意思《Javasript 高级程序设计(第三版)》《你不知道的 JavaScript(上卷)》几乎所有的编程语言都能够存储变量当中的值,并且可以在之后对该值进行访问或修改。很明显需要一套良好的规则来存储这些变量,并且之后可以方便的找到这些变量,这套规则我们称之为作用域。编译原理我们一般把 js 归为「动态」或「解释执行」语言,但是它也会经历编译阶段,不过...

2019-08-08 16:25:18 404

原创 JavaScript 性能优化——惰性载入函数

参考资料:《JavaScript 高级程序设计(第三版)》JavaScript专题之惰性函数深入理解javascript函数进阶之惰性函数因为不同厂商的浏览器相互之间存在一些行为上的差异,很多 js 代码包含了大量的if语句,将执行引导到正确的分支代码中去,比如下面的例子。function createXHR() { if (typeof XMLHttpRequest != ...

2019-08-06 14:30:44 695

翻译 非设计师需要知道的四个设计原则

作者:Anna 4erepawko Mészáros这篇文章是写给无力邀请专业设计师的所有内容创作者的,以及设计师异常忙碌的团队的非设计师们。如果您按照这些简单的步骤进行操作,我保证您的设计会变得更好。这些 Tips 来源于我对身边非设计朋友的多年观察,家人与同事在日常生活中也需要设计他们的东西。比如简历、作品集,Facebook 和 Instagram 上帖子要使用的图片,Youtube 视...

2019-06-22 18:16:02 352

原创 UML 概述及用例图

《UML 精粹》读书笔记。读的是老版,可能和你了解的有一些语法上的不一致UML 全称为统一建模语言,它不是一种方法,而是一种语言,跨越了具体编程语言的限制,以其当前状态定义了一种表示法和一种元模型。为什么需要 UML首先需要明白一点,任何一种工具的出现都是为了解决某个实际问题的,而这个工具自身的生命力还很强,那就说明它解决问题的效果很棒,至少当前没有找到比这一工具更有效率的替代物。软件...

2019-05-22 20:47:12 478

原创 CPU 是怎样工作的

CPU 大家应该都不会陌生,日常用的手机、电脑中都有 CPU,CPU 作为一个设备的大脑,指挥着其它各种硬件的协同工作,芯片技术也是国内一直没有突破的技术。我们先来看看怎么让电路去运算呢?比如如何让电路运算1 + 1,直接使用下面这个装置就可以了。作为一个比较好奇的人,总会想看看那个方框框里面是什么样子的,让我们慢慢解开加法器的外衣。这个电路你应该不会陌生,它需要两个开关都闭合时灯泡才会...

2019-04-27 21:09:37 1761

原创 浅析浏览器缓存机制

前端开发人员有大部分时间都在调整页面样式,如果页面没有按照自己预期的样式显示,可能想到的第一个解决方案就是清一下浏览器缓存,HTTP 缓存机制作为 Web 性能优化的重要手段,也应该是 Web 开发人员必备的基础知识。我们常说的浏览器缓存机制也就是 HTTP 缓存机制,它是根据 HTTP 报文的缓存标识运行的,所以首先要对 HTTP 报文有一个简单的了解。HTTP 报文HTTP 报文是浏览器和...

2019-04-25 22:14:56 358

原创 什么是契约测试?

契约测试全称为:消费者驱动契约测试,最早由 Martin Fowler 提出。契约这个词从字面上很容易理解,就是双方(多方)达成的共同协议,那又为什么需要契约测试这个东西呢?在当前微服务大行其道的行业背景下,越来越多的团队采用了前后端分离和微服务架构,我们知道微服务是由单一程序构成的小服务,与其它服务使用 HTTP API 进行通讯,服务可以采用不同的编程语言与数据库,微服务解决了单体应用团队协...

2019-04-10 22:27:28 9462

原创 里氏替换原则(LSP)

里氏替换原则(LSP)里氏替换原则可以描述为:子类型必须能够替换掉它们的基类型。或者描述为:使用基类对象指针或引用的函数必须能够在不了解衍生类的条件下使用衍生类的对象。下面是一个违背 LSP 的一个简单示例;很显然,DrawShape函数的设计使得它必须知道所有Shape基类的衍生类,这个函数更明显的是违背了 OCP。void DrawShape(const Shape& s){...

2019-03-27 22:35:16 952

原创 单一职责与开放封闭原则

单一职责原则(SRP)    为什么要把两个职责分离到单独的类呢?因为每个职责都是变化的一个轴线,如果一个类承担的职责过多,就等于把这些职责耦合在一起了,一个职责的变化可能会削弱这个类满足其它职责的能力,这种耦合会导致脆弱的设计,如果发生变化,设计就会遭到意想不到的破坏。    上面类图中显示 Rectangle 类有两个方法,一个方法把矩形绘制在屏幕上,另一个方法计算矩形的面积。有两个不...

2019-03-17 18:42:53 481

原创 什么是敏捷开发

    刚进入 21 世纪的第一(2001)年,由于看到许多公司的软件开发团队陷入不断增长的过程的泥潭,一批业界专家组成了敏捷联盟,在随后的几个月中他们发表了一份敏捷联盟宣言,如下所示。个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档响应变化胜过遵循计划    上面价值观指出,编译器、源代码控制器、 IDE 等工具对于团队的开发者至关重要,但是不要过分夸大这些工具的作用,使用过...

2019-03-11 00:09:22 198

原创 Ping 的过程是怎样的?(Ping 的原理)

    去年圣诞节前后,一位没有披露身份的工程师,在室外架设了一棵圣诞树和一块 LED 屏幕,这棵圣诞树和 LED 屏幕的每个像素,都可以通过 IPv6 地址控制。    你 ping 一下2001:4c08:2028:2019::RR:GG:BB这个地址(其中 RR、GG、BB 是你设定的任意颜色值),圣诞树就会亮一下这个颜色的灯;你 ping 一下2001:4c08:2028:X:Y:RR:...

2019-03-06 23:03:54 1332

原创 并发编程

    在异常控制流提过,如果逻辑控制流在时间上是重叠的,那么它们就是并发的。并发出现在计算机不同层面上,编写并发程序也是程序员必不可少的技能,面试同样必问并发相关知识。    现代操作系统提供了基于三种基本的构造并发程序的方法。分别为:进程、I/O 多路复用和线程。    基于进程的并发编程方法很简单,使用我们很熟悉的fork、exec、waitpid等函数就可以了。比如构造一个并发服务器的...

2019-02-23 21:17:28 180

原创 网络编程(自制服务器)

    现在的网络应用随处可见,无法想象生活离开了网络会变得怎样,最常见的就是通过浏览器上网,在地址栏输入 URL 敲击回车,然后浏览器就呈现出相应的页面。虽然现在的网络应用五花八门,但是它们都是基于相同的编程模型,依赖相同的编程接口。    每个网络应用都是基于客户端-服务端编程模型的,采用这个模型,一个应用是由一个服务器进程和一个或多个客户端进程组成。由服务器管理着某种资源,通过操作这些资源...

2019-01-27 23:38:10 2100 1

原创 Bootstrap-table 如何合并相同单元格

    Bootstrap-table 官方提供了合并单元格方法 mergeCells,它根据四个参数可以合并任意个单元格,我们要做的只是告诉它怎么合并。    要合并同一列相同的单元格,无非两种办法,一种是一边遍历一边合并,遍历完了再合并。这里采用第二种办法,这里不需要遍历所有数据,因为用户只能看到当前页的数据,所以只遍历当前页的数据更省时间。    下面是我实现的获取合并信息算法,最终返回...

2019-01-26 23:36:12 2240

原创 系统级 I/O

    文件对于我们来说,貌似再普通不过了,windows 使用扩展名来区分不同的文件,我们接触了 gif、docx、pdf、mp3、mp4、exe 等等好多好多不同的文件,但是它们在磁盘中都长一个样子,对于内核而言,没有什么区别。基本概念    文件这个概念就是对 I/O设备 的抽象,一个文件就是一串 m 个字节的序列,所有的 I/O 设备(网络、磁盘、终端)都被模型化为文件,所有的输入输出...

2019-01-21 09:56:29 182

原创 异常控制流

异常    从给我们的处理器开始加电,到断电为止的这段时间里,取任何一个时间点,程序计数器里面都有一个值 ak,表示相应指令的 Ik,从 ak 到 ak-1 的过程叫做控制转移,最简单的情况是 ak 和 ak-1 在内存中位置相邻,但是我们的程序少不了跳转、调用、返回一类的指令,系统为了应对这种变化,使用了一种使控制流发生突变的机制,这种突变我们称之为异常控制流。    异常控制流是是很重要的...

2019-01-02 22:28:30 176

原创 历史精选文章合集

    这是整理的今年以来历史文章中比较好的文章,写的烂的文章就丢弃了,好文弄成一个合集,方便自己看也方便您看。感悟思考    这部分是点赞率和阅读量都最高的文章,写的都很实在,如果您有什么不同的观点,或者是有补充欢迎在留言区留言。    你如果只是一直囤干货,那永远不可能进步    阅读高于自己的作品,远离精神毒品    谈一点关于名校的话题    谈一下写作的重要性    走捷径...

2018-12-23 21:05:03 821

原创 链接器规则会引入的巨坑

    首先来看一个简单的程序。下面是是两段程序,分别放在link.c和bar.c中。/* link.c */#include&amp;lt;stdio.h&amp;gt;void f(void);int x = 13;int main(){ f(); printf(&quot;x=%d\n&quot;, x); return 0;}/* bar.c */int x;void f(){ x =...

2018-12-09 16:48:15 177

原创 如何优化程序性能

    这篇笔记主要是摘抄了具体的代码示例,从代码中体会如何优化程序的性能,《深入理解计算机系统》已经看了近三分之二了,越看越发现自己懂得太少太少了,正在题图中的绝望之谷徘徊(我自认为是这样),至少比在愚昧山峰左边的山脚徘徊要好很多。    我们的编译器已经提供了很好的优化机制,但是还有很多细节编译器优化不到,或者说没胆量去优化,因为有一些激进的优化很有可能会违背程序员的初心。// 第一种...

2018-12-05 22:12:21 1027

原创 存储器的层次结构

存储技术    我们在买电脑时都会关注内存、处理器、硬盘等部件的性能,都想内存尽可能大,硬盘最好是固态的。    不知道你有没有遇到过自己写了大半天的文档,因为不小心突然关机了,自己辛苦忙活了几个小时的成果又得重写的情况。可是你是否想过为什么关机了就会丢失这些信息呢?为什么硬盘上的文件没有丢?    会丢的那部分信息肯定是和电有关系的,不然也不会一断电就丢信息。内存就是这样的部件,更专业一点...

2018-12-02 12:04:01 1372

原创 为什么处理排序数组比未排序数组快

    今天在群里看到一个有意思的问题——为什么处理排序数组比处理没有排序的数组要快,这个问题来源于 StackoverFlow,虽然我看到代码略微知道原因,但是模模糊糊不够清晰,搜了很多博客也讲的不够明白,所以就自己来总结了。    首先来看一下问题,下面是很简单的一段代码,随机生成一些数字,对其中的大于 128 的数字求和,记录并打印出求和所用时间。import java.util.Arr...

2018-11-28 19:13:25 220

翻译 Github 十大最佳实践

1、保护主分支不受直接提交的影响    主分支中的任何一次提交都应该是可以直接部署的,所以永远不要直接提交默认分支,同时也是 Gitflow workflow 成为标准的原因。使用分支保护可以帮你防止直接提交,当然,所有的事情都应该使用pull requests来管理。2、避免基础信息的混乱    或许你在一个新的环境工作,或者你并没有注意到自己的 git 配置是不正确的,因此提交代码时伴...

2018-11-24 15:01:47 530

原创 函数调用与空间分配

    我们在编程序的时候,都会把某一个特定功能封装在一个函数里面,对外暴露一个接口,而隐藏了函数行为的具体实现,一个大型的复杂系统里面包含了很多这样的小函数,我们称之为过程。    过程是相对独立的小模块,系统的运行需要这些过程的紧密合作,这种合作就是函数调用。    在一个函数执行时调用别的函数,比如 P 调用 Q,需要执行一些特定的动作。传递控制,在调用 Q 之前,控制权在 P 的手里,...

2018-11-18 23:20:03 962

原创 顺序、条件、循环语句的底层解释

顺序结构数据传送指令    我们都清楚,绝大多数编译器都把汇编语言作为中间语言,把汇编语言程序变成可运行的二进制文件早就解决了,所以现在的高级语言基本上只需要把自己翻译成汇编语言就可以了。    汇编指令总共只有那么多,大多数指令都是对数据进行操作,比如常见的数据传送指令mov。不难理解,被操作数据无非有三种形式,立即数,即用来表示常数值;寄存器,此时的数据即存放在指定寄存器中的内容;内存引...

2018-11-11 00:48:30 1108

原创 机器级程序的小细节

    随着技术的逐渐发展,CPU 中晶体管的数量以每年 37% 的速度递增,CPU 也从 16 位到了 32 位,现在已经到了 64 位,为了保证以前编译的程序仍然能够在最新的机器上使用,所以寄存器保留了原来的命名。    比如一个 16 位的寄存器有自己的名字,当扩展成 32 位的时候,会保留原来 16 位寄存器的名字,并给整个 32 位寄存器取一个新的名字。如同“天生我材必有用”,每个寄存...

2018-11-05 23:01:10 783

原创 整数的加法和乘法运算

深入理解计算机系统第二章读书笔记    在编程入门的时候可能都知道两个正数相加的结果可能为负数,还有一个更奇怪的现象就是:x &lt; y和 x - y &lt; 0两个表达式可能会得出不一样的结果,这些神奇的结果都和计算机整数的底层表示和运算有着密切的关系。    C 语言中有无符号数与有符号数之分,而在 Java 中只有有符号数,下面的内容还是基于 C 语言进行说明,毕竟更 C 比 J...

2018-10-26 22:52:18 1236

《开关电源基础知识-电源网》

BUCK 拓扑结构讲解、效率与 Vout 的关系、同步与非同步区别、隔离式与非隔离式区别、脉宽调制与脉冲频率调制

2024-03-07

websocket.zip

服务端使用 websocket 主动推送示例,实现的功能为从服务端向客户端推送时间,使用的框架为 tornado

2020-02-05

html+js实现幻灯片

使用html和javaScript实现幻灯片轮流切换,可用于门户网站首页。

2017-12-11

zTree实现树形菜单

使用zTree实现树形菜单,具体可参见zTree的API,此文档给出示例。

2017-12-11

js实现五子棋

使用javaScript语言实现五子棋,操作界面使用Html5实现。简单易懂。

2017-12-11

JQuery参考手册

2017-01-18

算法导论中文版

算法导论中文版

2017-01-18

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

TA关注的人

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