自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 Envoy架构介绍与配置说明

nvoy 是专为大型现代 SOA(面向服务架构)架构设计的 L7 代理和通信总线,它是Istio中的Sidecar官方标配。本文详细介绍了envoy的设计思想、整体架构、filter chain机制、xDS更新和envoy配置使用说明。

2022-01-06 23:43:09 2766

原创 无聊与兴奋 《幸福之路》读书笔记

自从人类进入农耕时代,无聊就始终与我们同行。农耕让人们定居下来,每天都重复单调地耕作或养育子女。进入工业时代,社会分工的精细化,更加剧了工作的单调性,并且随着生产力的提高人们有了大量的闲暇时间需要打发。而在娱乐很少的年代,人们自然会感到无聊。那么在如今这个娱乐至死的年代,我们就不无聊了吗?有了更多的娱乐,得到了更多的即使兴奋刺激,保持一定时间高强度的刺激之后,这种强度的刺激渐渐被接受,从而需要更高的刺激。从前看小说就能得到很多的感官刺激,有了影像之后电影电视更受欢迎。而如今一个半小时的电影都...

2022-01-02 23:34:32 365

原创 STL标准库设计原理与使用

本文详细介绍了C++ STL(标准模板库)各个常用容器的底层数据结构与实现和典型使用方法,对理解和正确使用STL有一定帮助。

2021-12-25 11:51:52 939

原创 STL常用算法说明

C++ STL库实现了很多常用的算法,基本都在<algorithm>头文件下,掌握它们对提高开发效率很有用

2021-12-18 23:24:45 484

原创 docker常用命令

拉取镜像docker pull centos:centos7查看镜像docker images启动容器docker run -it centos:centos7参数说明:-i: 交互式操作。-t: 终端。-d: 后台运行容器–name: 命名容器4.查看容器docker ps -a5.启动/停止/重启容器docker start <容器 ID>docker stop <容器 ID>docker restart <容器 ID&.

2021-11-17 00:06:04 833

原创 为什么c++需要右值引用

  c++旧标准中有引用类型和指针类型,从c++11标准开始引入了右值引用,原来的引用被称之为左值引用,今天我们就来看一下右值引用是什么?右值引用是用来解决什么问题的?1. 什么是右值引用1.1左值和右值  c++的表达式可以是左值或者右值。左值和右值的概念是从c语言继承而来的,原本的含义是:左值可以放在赋值语句的左侧,右值则不能。  但是在c++中,左值和右值的区别没那么简单。例如常量表达式为代表的一些左值实际上不能作为赋值语句的左侧运算对象。  当一个对象被用作右值的时候,用的是对象的值(内容

2021-10-15 23:50:36 2195

原创 使用回溯算法解决排列组合问题

  回溯算法是一种非常实用的算法解题思路,LeetCode中题库中有106道回溯的试题,而且难度都在中等以上,掌握回溯算法对高效快速解决很多问题都很有帮助。今天我们主要看看回溯算法的解题套路和实用回溯解决排列组合问题的题解。1.回溯算法特点  回溯算法过程:在搜索中寻找问题的解,发现不满足条件时,就回溯返回上一步,尝试别的路径。  从上面的定义可以看出,回溯算法依赖于递归实现,与递归算法的差异就在于一个“回”字,即修改了状态并做了尝试之后,需要回过来把状态改回去再做其他尝试,通过多轮回溯逐步求出所有的

2021-10-13 00:18:58 2072 1

原创 归并排序及其优化(数组归并/链表归并,自顶向下/自底向上等)

  归并排序时一种使用分治思想实现的高效的排序算法,它的最好/最坏/平均时间复杂度都是O(nlogn),而且是一种稳定的排序算法。然而归并排序并没有得到广泛的应用,今天我们来看看归并排序的特点、优化和应用。1. 算法简介归并排序的原理  归并排序(Merge Sort)的核心思想就是一个典型的分治算法。如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。算法示意图如下:  代码实现如下:class Solution

2021-10-02 00:43:03 1855 2

原创 链表反转的技巧及相关题解

单链表作为一种比较常见的数据结构,经常会出现在面试题中。单链表只有一个后继指针,要实现O(1)空间复杂度的反转,就需要掌握单链表反转的一些技巧。注:我们这里讨论的都是如何不借助额外空间(即O(1)空间复杂度),实现链表反转。首先让我们先看看最简单的链表反转:1. 链表反转(简单)206. 反转链表剑指 Offer 24. 反转链表剑指 Offer II 024. 反转链表题目描述:把一个单链表反转,并返回反转后的链表头。解题过程:这道题可以很容易地用双指针解决:定义两个指针一个指向前

2021-09-30 00:41:57 520

原创 树/二叉树的层序遍历 掌握这个方法轻松解决16道LeetCode题

我们知道树/图的深度优先搜索使用递归可以很简单的实现,但树的广度优先搜索是依赖于队列先见先出的特性来实现的,不方便使用递归实现。今天我们来看看树的层序遍历方法,掌握了这个方法,广度优先搜索的大部分题都可以轻松解决了。1. 二叉树的层序遍历剑指 Offer 32 - I. 从上到下打印二叉树先看这个最简单的层序遍历,只需要按广度优先的顺序一个一个地输出节点值就可以了要点:头结点入队队列不为空时不断出队,出队节点值加入结果将出队节点的左右子节点入队重复以上直到队列为空vector&lt

2021-09-15 00:10:43 171 1

原创 二叉树的遍历(深度优先/广度优先 递归/非递归 层序遍历)详解

目录1.简介2.二叉树的深度优先遍历2.1 二叉树的前序遍历2.2 二叉树的中序遍历2.3 二叉树的后序遍历3. 二叉树的广度优先搜索3.1 二叉树广度优先搜索3.2 二叉树的层序遍历3.3 二叉树自底向上层序遍历3.4 二叉树的锯齿形层序遍历 二叉树是一种很常用的基本数据结构,它可以看做一种特殊的图(一个节点只有一个入度和最多两个出度),因此二叉树的的遍历要比图简单很多,学好二叉树也能较容易掌握图的遍历。1.简介 我们...

2021-09-12 23:53:03 1446 2

原创 动态规划原理与LeetCode题解

目录动态规划的三个特征:动态规划解题思路:1.状态转移表法2. 状态转移方程法3. LeetCode题解3.1 LeetCode509. 斐波那契数3.2 LeetCode70. 爬楼梯3.3 LeetCode198. 打家劫舍3.4 LeetCode53. 最大子序和3.5 LeetCode152. 乘积最大子数组3.6 LeetCode1014. 最佳观光组合3.7 LeetCode55. 跳跃游戏动态规划适合解决多阶段决策最优解模型问题...

2021-09-10 00:26:23 195

原创 使用AddressSanitizer排查代码内存问题

AddressSanitizer是Google提供的开源内存检查工具,LLVM3.1 或者gcc4.8以上版本编译器已经支持,可以调查程序的内存越界和内存泄漏问题。用法:编译时加上以下编译选项:-fsanitize=address #开启地址越界检查功能-fno-omit-frame-pointer #开启后,可以出具更详细的错误信息-fsanitize=leak #开启内存泄露检查功能 (apple版llvm不支持)AddressSanitizer能检测的错误类型:...

2021-08-30 22:18:04 834 2

原创 ssh访问本机VitualBox虚拟机的方法

1. 开启端口转发'''<规则名>,<协议>,<主机IP>,<主机端口>,<虚拟机IP>,<虚拟机端口> ''' 可在虚拟机关闭的情况下在主机上使用如下命令设置(非root权限)VBoxManage modifyvm "centos" --natpf1 "SSH,tcp,,2222,,22" 2. 检查虚拟机SSH服务是否打开ps -e|grep ssh如果SSH服务没有安装,按如下方法安装:ubuntu安

2021-08-29 23:03:28 200

原创 常见路径规划算法介绍

本文介绍了算法书上常见的路径规划算法和工业界目前比较流行的高效分层路径规划算法。目录1. 经典路径规划算法1.1Dijkstra1.2 Bellman-Ford1.3 SPFA1.4A*1.5Bidirectional Search(双向搜索)2.分层规划算法2.1CH算法(Contraction Hierarchies)2.1.1CH预处理2.1.2CH查询2.2CCH算法(Customizable Contra...

2021-08-29 22:05:38 16914

原创 在IDEA/CLion/PyCharm中使用LeetCode插件详解

LeetCode刷题,编辑器不太好用,没有语法检查,非会员也不能调试。在IDE中装上LeetCode插件,这些问题都解决了,而且还可以在办公室里刷题而不易被发现。 1. 安装LeetCode插件 以CLion为例,CLion->Preferences->Plugins中搜索“LeetCode Editor”,点击"Install"安装,安装完成后重启。 2.LeetCode插件配置 CLion->Preference...

2021-08-28 22:56:38 4127 2

原创 mac上使用clion编译调试c++程序

clion是一款强大的IDE,可以实现一站式编译、运行、调试、测试、发布。还可以集成valgrind检查内存问题。mac下的clion将mac中的lldb集成到IDE中,让你彻底告别枯燥难用的lldb命令。使用步骤: 安装 clang、lldb 安装xcode即可用 安装cmake clion对Makefile支持的不好,默认编译依赖于cmake $ brew install cmake #安装cmake 编写CMakeLists.txt Project-&

2021-08-25 22:14:10 2271 2

原创 二分查找详解及其变种实现&LeetCode题解

二分查找(Binary Search)又叫折半查找,对于已排序的数组,是一种非常高效的排序算法,时间复杂度为O(logn)。二分查找很简单也很高效,但要写好用好二分查找却不容易,多数程序员都不能完整地实现一个无bug的二分查找。1.最基本的二分查找 我们先来看一个最基本的二分查找,在一组无重复的数组中查找指定的数并返回数组索引。int binarySearch(int[] a, int n, int value) { int low = 0; int hi...

2021-08-19 22:41:37 349

转载 时间管理方法

投资自己的时间其实,时间就像金钱一样,你得学会投资时间,把时间投资在有价值有意义的地方,你就会有“更多的时间”。 花时间学习基础知识,花时间读文档。在参加工作的这20年时间里,我发现,很多程序员都把时间都浪费在了查错上。究其根本原因就是基础知识不完整,没有好好地把技术相关的用户文档读完就仓促上手做事情了。其实只要把基础打扎实,认真读一下文档,你会省出很多很多的时间。系统地学习一门技术是非常关键的,所以这个时间是值得投资的。 花时间在解放自己生产力的事上。在自动化、可配置、可重用、可扩展上

2021-08-15 23:02:23 107

原创 Python知识图谱

2021-08-15 22:53:56 400 2

原创 培养阅读习惯的秘诀

1. 以正确的理由阅读;2. 只读你喜欢的书;3. 不要担心别人怎么看待你读的书;4. 每天只看十分钟的书;5. 同时阅读多本书;6. 不要强迫自己读完一本书;7. 改掉坏习惯,腾出时间来读书;8. 学会爱上图书馆;9. 从当地图书馆借电子书;10. 入手一个Kindle。...

2021-08-15 22:43:10 70

原创 GDB使用总结

1. GDB概述GNU发布的调试器,可以查看程序如何运行或崩溃时的状态。主要功能:启动程序,可以按照自定义的要求运行程序。 可让被调试的程序在你所指定的断点处停住。 当程序被停住时,可以检查此时程序中所发生的事。 动态的改变程序的执行环境。GDB启动程序//通过GDB启动/attach一个可程序或打开一个core文件gdb [options] [executable-file [core-file or process-id]]//为可执行程序指定执行参数gdb [opti...

2021-08-15 18:33:07 145

原创 快速学习的五个规则

1 . 要非常清楚自己“为什么”学2. 确定自己的学习风格和智力类型人类主要靠眼(视觉Visual)、耳(听觉Auditory)和双手(触觉Kinesthetic)去接触世界,并且是人类最常用的接收讯息的三种过滤系统,简称VAK模式。通过VAK学习类型测试,我们可以了解自己的学习偏好,从而使用正确的技术和工具最大化自己的学习效果。3. 把枯燥的信息变成生动的画面4. 列出非必要事项清单至关重要的任务上: 做练习。 做研究。 参加课程。 阅读并做笔记。

2021-08-15 18:14:31 84

原创 回溯算法与优化

回溯算法定义:在搜索中寻找问题的解,发现不满足条件时,就回溯返回上一步,尝试别的路径回溯算法应用:深度优先搜索,八皇后,0-1背包,全排列等以0-1背包问题为例:有一个背包,背包总的承载重量是Wkg。现在我们有n个物品,每个物品的重量不等,并且不可分割。我们现在期望选择几件物品,装载到背包中。在不超过背包所能装载重量的前提下,如何让背包中物品的总重量最大?private int maxW = Integer.MIN_VALUE; // 结果放到maxW中private int[] weigh

2021-08-03 00:13:32 950

原创 两种高效的事件处理模型:Reactor模式和Proactor模式

随着IO多路复用技术的出现,出现了很多事件处理模式。同步I/O模型通常由Reactor模式实现,而异步I/O模型则由Proactor模式实现。 Reactor模式:   Reator类图如上所示,Reactor模式又叫反应器或反应堆,即实现注册描述符(Handle)及事件的处理器(EventHandler),当有事件发生的时候,事件多路分发器(Event Demultiplexer)做出反应,调用事件具体的处理函数(ConcreteEventHandler::handle_event(

2021-08-02 23:55:17 299

Node.js设计与使用.pdf

自己写的Node.js的设计简介,初学者可以了解一下

2021-08-22

空空如也

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

TA关注的人

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