自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 zip暴力破解工具Python实现

原理: 1.指定密码包括的字符各类:数字,小写字母,大写字母,特殊字符 2.指定密码的长度 3.遍历所有可能的组合暴力破解 在密码比较简单的时候比较有用。 使用指导: optional arguments: -h, --help show this help mes...

2020-05-04 20:22:06 43 0

原创 leetcode多线程题(1114)-------------按序打印

我们提供了一个类: public class Foo { public void one() { print("one"); } public void two() { print("two"); } public void three() { print...

2020-04-20 22:57:48 56 0

原创 让你的项目支持autotools

通常我们在linux下用源码安装库或程序,都是使用的autoools工具(虽然可能有些过时,bazel,CMake等等)。但是目前来看,还是一种不错的选择。 典型安装过程: ./configure make sudo make install 如果你自己创建了一个开源项目,自己手工编...

2020-04-16 21:49:51 50 0

原创 vim命令大全

熟悉VIM的朋友都知道"."操作符的强大,因此如果能够在进行操作的同时从普通模式进入插入模式将会事半功倍。 因此收集了具有此作用的复合命令即其长命令。方便大家更好的进行创作: 复合命令 等效长命令 作用 C c$ 从光标所在字符删除到行尾并进入插...

2020-04-06 11:50:15 39 0

原创 浅谈overlayfs

overlayfs overlayfs试图在其它文件系统之上提供一个联合的文件系统视图 Upper and Lower overlayfs组合了2个文件系统---Upper文件系统和Lower文件系统。 当同名文件在Upper和Lower中都存在时,Lower中的文件会隐藏,如果是...

2020-03-15 20:16:10 81 0

原创 leetcode竞赛179场周竞赛(4)------------1377. T 秒后青蛙的位置

给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到n。青蛙从顶点 1开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个未访问过的顶点(如果它们直接相连)。 青蛙无法跳回已经访问过的顶点。 如果青蛙可以跳到多个不同顶点,那么它跳到其中任意一个顶点上的机率都相同。 如果青蛙不...

2020-03-14 22:54:17 76 0

原创 leetcode竞赛179场周竞赛(3)------------通知所有员工所需的时间

公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人,manager[headID] = -...

2020-03-13 22:53:02 62 1

原创 剑指offer(12)------矩阵中的路径

''' 0:left 1:right 2:up 3:down ''' paths = [] def path_in_matrix(matrix, s): row, col = len(matrix), len(matrix[0])...

2020-03-09 21:55:18 35 0

原创 进阶篇---------设计一个O(1)的资源池

设计一个资源池,以下三个操作满足O(1)复杂度:(1)从未分配的资源中分配一块资源;(2)从已分配的资源中释放指定资源;(3)随机访问一块已分配的资源。大致意思是这样。 class ResourcePool: def __init__(self, cap): sel...

2020-03-08 22:09:58 78 0

原创 剑指offer(10)--------斐波那契与蛙跳

def fib(n): if n <= 1: return n return fib(n-1) + fib(n-2) def fib_no_recusive(n): if n <= 1: return n i, j, k...

2020-03-08 21:32:41 37 0

原创 剑指offer(9)--------用两个栈模拟队列, 用两个队列模拟栈

class TwoStackQueue: def __init__(self): self.head_stack = [] self.tail_stack = [] def appendTail(self, val): self.t...

2020-03-08 20:46:18 23 0

原创 如何直观地打印一棵二叉树

按层次结构打印二叉树,如下面这棵 class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.r...

2020-03-08 19:05:22 30 0

原创 剑指offer(7)----------重建二叉树

已知二叉树的先序和中序遍历结果,重建这棵二叉树 class Node: def __init__(self, val, left=None, right=None): self.val = val self.left = left sel...

2020-03-08 16:21:22 21 0

原创 剑指offer(8)-------------二叉树中序遍历的下一个节点

使用两种方法实现。 方法一:中序遍历二叉树,记录指定节点,当遍历到下一个节点时返回 时间复杂度o(n) 方法二: 1)当指定节点有右子树时,返回其右子树的第一个中序遍历节点 2)当指定节点无右子树时,如果其是父节点的左节点,则返回其父节点 3)当指定节点无右子树,且是其父节点的右节...

2020-03-08 15:58:29 18 0

原创 leetcode竞赛题练习 回溯法(一)------------生成每种字符都是奇数个的字符串

有志同道合的朋友,可以大家一起交流监督学习。哈哈哈 !!! 5352.生成每种字符都是奇数个的字符串 给你一个整数n,请你返回一个含n个字符的字符串,其中每种字符在该字符串中都恰好出现奇数次。 返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。 ...

2020-03-08 12:06:37 50 0

原创 深入学习Python中的并发(二)------高级篇

考虑下面的需求: 我们有一个日志目录,里面全是gzip压缩的日志文件。 每个日志文件的格式是固定的,我们要从中提取出所有访问过robots.txt文件的主机 1.1.1.1 ------------ [10/june/2012:00:18:50 - 0500] "GET /robo...

2020-02-25 21:49:29 51 0

原创 深入学习python中的并发(一)---线程

python也提供了线程相关的并发原语,如锁threading.Lock,事件threading.Event,条件变量threading.Condition。 本质上都是对pthread_mutex_t, pthread_condition_t的封装。 本篇文章通过2个例子来分析理解pytho...

2020-02-23 10:38:11 62 0

原创 一行shell实现统计单词词频

写一个 bash 脚本以统计一个文本文件words.txt中每个单词出现的频率。 为了简单起见,你可以假设: words.txt只包括小写字母和' '。 每个单词只由小写字母组成。 单词间由一个或多个空格字符分隔。 示例: 假设 words.txt 内容如下: the ...

2020-02-17 22:44:38 51 0

原创 牛客网编程题python实现(一)--------华为2016研发工程师编程题

1.删数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0-&...

2020-02-09 18:52:46 250 0

原创 gRPC源码分析 同步RPC请求与completion queue分析

gRPC completion queue架构 grpc使用completion_queue来缓存事件,典型的如rpc请求。 使用grpc_cq_end_op来向cq中加入事件,使用grpc_completion_queue_next或pluck从队列中取出事件。 其中next/pl...

2020-01-18 21:34:41 372 0

原创 二十三式武功招式--总纲

扯淡 写程序犹如练武,一样需要内外兼修。 数据结构算法,操作系统原理,编译原理这些知识就犹如武侠中的内功心法,需要日夜旦夕苦练,经年累月方能有所小成。 而内功一旦有所成就,其它任何武功学起来就会轻松加愉快。 比如射雕中的郭靖,起初江南七怪教时,进展缓慢。自从全真教掌教马钰传授了一些呼吸吐纳...

2019-11-10 20:19:29 519 0

原创 gRPC C++源码剖析(二) ---------数据结构篇之闭包调度器

grpc_closure_scheduler 顾名思义,闭包调度器的作用就是对闭包进行调度。 下面是它的定义: struct grpc_closure_scheduler { const grpc_closure_scheduler_vtable* vtable; }; typedef ...

2019-10-26 11:24:23 362 1

原创 gRPC C++源码剖析(二)---- 数据结构篇之闭包

上篇文章中提到了阅读gRPC源码的几大困难,其中数据结构是基础中的基础。 如果连这些数据结构的原理和作用都不了解的话,阅读起代码来肯定事倍功半。因此这篇文章对gRPC提供的数据结构进行讲解。 grpc_closure闭包 闭包是一些编程语言中提供的功能,如python. closure...

2019-10-25 23:24:13 247 0

原创 gRPC C++ 源码剖析(一)----------入门

通过一段时间阅读gRPC c++的源码,对其实现原理算是初窥门境了。 在这里通过一系列循序渐进的文章把其中的经验和学习到东西分享出来,希望志同道合之人能够共同交流进步。 gRPC c++源码难吗? 个人认为gRPC c++源码算是质量比较高的源码了,google工程师们的抽象和设计能力都...

2019-10-22 23:06:45 423 0

原创 golang实现的压力测试工具

代码地址: https://github.com/happyAnger6/loadstress.git 轻松实现单机10K qps.

2019-09-08 22:18:40 533 0

原创 list

从本篇文章开始,将介绍python提供的常用数据结构。 这些数据结构从不同的维度可以进行不同的划分。 按可变性划分: 可变数据结构:list,dict,set,bytearray 不可变数据结构:tuple,string,bytes 按是否可以存储不同类型的元素...

2019-09-06 21:02:38 103 0

原创 Vim中删除一个单词

目标 假设光标目前处于行尾的e字符上,要删除最后一个单词”line” this is a test in vim. I want to delete a word in the line. 解决方法 要删除最后一个单词,有以下几种选择。 先用’b’命令把光标先移动到”l”上,然后执行...

2019-08-28 23:01:11 342 0

原创 怎么使用CONTEXT

http://www.anger6.com/?p=1903 简介 context库是go 1.7中加入的,本篇文章主要是讲解如何正确的使用它。 缘起 一切有为法,让我们先来看看golang里加入context的缘由。 在一个go实现的服务器程序中,通常我们对每个请求使用一个gorou...

2019-08-18 21:56:49 54 0

原创 anger6网站地图

不断提高自身修养,还有很多要补充的知识。 http://www.anger6.com/?p=1893 操作系统 互斥技术 SMP缓存一致性 文件系统 计算机网络 epoll http2 设计模式 常见设计模式 系统架构 c10k reactor模式 gRPC 数...

2019-08-16 21:36:32 88 0

原创 Go语言调度器实现(二)----go scheduler

简介 在上一篇文章里,我介绍了OS调度方面的相关内容,我认为这些内容对理解Go调度器的语义很重要。本篇文章,我将从语义层面会介绍GO调度器是如何工作的,将会重点关注G调度器的高层行为。Go调度器是一个复杂的系统,小的细节是不重要的。重要的是我们要有一个对Go调度器如何工作和其调度行为的好的认...

2019-08-11 21:24:46 81 0

原创 go语言调度器实现(一)---os调度

go语言最大的卖点在于并发编程,尤其是现在免费的午餐已经结束,这意味着要挖掘硬件的高性能,软件越来越重要. 而易于编写并发程序的go语言,调度器的实现是一关键因素.因此本系列文章希望探索go语言的调度器实现. 将分3篇文章进行讲述,分别是OS调度器,GO调度器以及如何进行并发编程. ...

2019-08-11 21:22:46 77 0

原创 GIT对象

http://www.anger6.com/?p=1751 git是linus开发的一款版本控制工具,大神的作品果然不同凡响,git正在变得越来越流行。 在使用的过程中,也感觉到其易用和高效。因此想要探究一下其内部的原理。 git的高效得益于其存储系统的实现,它是一个内容寻址的文件系统。...

2019-08-07 22:52:10 130 0

原创 docker镜像存储实现

为什么要写这篇文章? 网上已经有很多讲docker镜像存储原理的文章了,这篇文章还有必要吗? 网上关于docker镜像的文章大都偏原理,像什么镜像是分层的,是只读的,容器除了镜像的只读层还有自己的可写层等等。这些原理说出来大家好像都懂,但好像什么也没学到。因此我写了这篇偏实现的文章,讲述doc...

2019-08-05 22:13:00 72 0

原创 linux epoll实现分析

epoll的作用是进行I/O的多路复用,可以同时监听多个fd产生的事件。常结合异步处理实现单线程的高并发。在多核环境中,可以结合多线程实现负载分担。 本文主要分析一下linux epoll的实现。 API epoll_create(int size);. epoll_create1(int...

2019-07-27 23:18:07 113 0

原创 gRPC当前epoll实现的问题和解决方案

gRPC当前的epoll实现并不十分高效,有很大的改进空间。这篇文章来分析一下。 `epoll`是gRPC实现pollset的基础。因此,你有必要先了解一下epoll即其发展史(至少了解EPOLLEXCLUSIVE是干什么的吧?) 如果文章中的内容不能理解,建议先看下我之前讲gRPC的相关文章...

2019-07-24 23:55:05 477 0

原创 理解Reactor模式: 基于线程和事件驱动

在web服务器开发中,有2种常见的架构:基于线程的架构和事件驱动的架构。 基于线程的架构 最初多线程server的实现一般都是采用每个连接一个线程的方法。这对于那些需要兼容非线程安全库的站点比较合适。 也有使用多进程模型来隔离每个请求,这样单个请求出问题不会影响到其它请求。 进程太重,...

2019-07-23 20:39:31 331 0

原创 C10K问题

http://www.anger6.com/?p=1350 问题 C10K是探讨如何优化sockets处理以便能够同时处理大量客户请求的问题。 C10K就是指的并发处理10K个连接。 注意,这里的并发连接和qps的概念是不同的,尽管它们有些相似。qps需要很高的吞吐量(能够很快地处理请...

2019-07-21 20:57:52 138 0

原创 设计模式总结(一)

http://www.anger6.com/?p=1317 对各种设计模式的一些思考和总结。 “生成实例”类 单例模式”Singleton” 从名字也很容易理解,只有一个实例。 原理 通过单例模式,我们通常想实现以下效果: 确保任何情况下绝对只有1个实例 想在程序上表现出“只存在...

2019-07-20 22:07:32 43 0

原创 跳表---实现有序集合

http://www.anger6.com/?p=1267 跳表的基础是链表,它是对有序链表的改进。主要改进有序链表的查找效率。 我们知道对于有序的数组,通过二分查找法能够实现O(logn)的查找效率,而对于链表来说,由于其存储空间不是连续的,无法进行随机访问,因此查找效率是O(n)....

2019-07-20 15:26:11 92 0

原创 必须会的SUPER

http://www.anger6.com/?p=1006 函数原型如下: super([type[,object-or-type]]) super函数返回一个代理对象,用于调用type的父类或兄弟类中的方法。 talk is cheap. 先来看调用父类中的方法 class ...

2019-07-12 22:35:39 45 0

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