奔跑の河马
码龄7年
关注
提问 私信
  • 博客:44,935
    44,935
    总访问量
  • 54
    原创
  • 449,930
    排名
  • 9
    粉丝
  • 0
    铁粉

个人简介:滴水可石穿,跬步致千里

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-01-02
博客简介:

myz123321的博客

查看详细资料
个人成就
  • 获得22次点赞
  • 内容获得11次评论
  • 获得44次收藏
创作历程
  • 1篇
    2021年
  • 2篇
    2020年
  • 50篇
    2019年
  • 1篇
    2018年
成就勋章
TA的专栏
  • 随便写写
    1篇
  • leetcode
    25篇
  • 算法学习例子
    1篇
  • golang源码分析
    4篇
  • APUE
    21篇
  • 学习笔记
    3篇
  • 欢乐算法
    1篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

344人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

在下图的基础上,一笔写出“田”字

背景昨天在商场吃饭,看到一个很有趣的问题,大致描述如下:// 问题描述:// 如下图,如何在下图的基础上,一笔完成一个"田"字// __// |//// "田"字样式// _____// |__|__|// |__|__|想了一会,想出了一个解,解答如下:回家的路上,就一直在想,是否还有别的答案,准备写一段程序验证一下,经过了一晚上的苦战,终于写出了答案,代码如下:package mainimport "fmt"// 问题描述:// 如下图,如何在
原创
发布博客 2021.07.03 ·
4184 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

对缓存一致性算法(MESI)的理解

一:背景缓存一致性算法是为了解决多核处理器之前独占缓存的缓存一致性问题而提出的。现代计算机架构,根据成本和IO速度将存储分为了寄存器、l1/l2/l3cache、ssd、hdd等多种存储介质,其中在多核处理器中,由于每个处理器有自己的l1\l2cache,那么如何保证多个处理器之间的l1\l2cache的数据一致性成为了一个问题。并且如何保证cache尽可能少的和主存进行读写也是一大问题。二:概念在了解MESI协议之前,我们需要知道几个概念:cache:这里特指处理器的l1\l2缓存,因为这两
原创
发布博客 2020.09.13 ·
560 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang中如何利用并行高效的解决问题(附代码)

背景笔者在工程中经常使用golang来进行开发,用go来写高并发程序也确实是爽的不要不要的。前段时间在读了William Kennedy的文章Scheduling In Go : Part III - Concurrency后对如何使用并行更高效的优化golang代码有了进一步的理解,在此记录一下。原文地址:https://www.ardanlabs.com/blog/2018/12/sche...
原创
发布博客 2020.03.23 ·
676 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

APUE读书笔记(21) 守护进程

一:守护进程  守护进程是一类生存周期较长的进程,一般在系统开启的时候产生,系统关闭的时候才销毁。守护进程在后台运行,帮助UNIX系统执行日常事务活动。二:守护进程的特征  通过ps命令可以查看进程列表,可以展示进程号,父进程号等信息。父进程号为0的个进程一般为内核进程。内核进程的生命周期与整个系统的生命周期一样,它以超级用户权限执行,无控制终端,无命令行。  进程1为init进程,他是一...
原创
发布博客 2019.09.29 ·
179 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(20) 线程控制(下)

一:线程特定数据:  线程特定数据也称为线程私有数据,是存储和查询某个特定线程相关数据的一种机制。线程模型是可以共享进程中的一些数据,但是为什么又需要有线程特定数据呢?这主要基于两点:  第一:有时候需要维护基于每线程的数据。虽然线程id是一个整数且唯一,但是基于线程id作为数组的索引会有不够安全(不太清楚这里的不安全指的是什么)。作者提到:我们希望可能有一些额外的保护,防止某个线程的数据与其...
原创
发布博客 2019.09.23 ·
138 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(19) 线程控制(上)

第十二章 线程控制一:线程限制:  Single Unix定义了一线线程操作的限制,和其他的限制一样,可以通过sysconf来查询。和其它的限制使用目的一样,为了应用程序的在不同操作 系统的可移植性。 一些限制:  PTHREAD_DESTRUCTOR_ITERATIONS: 销毁一个线程数据最大的尝试次数,可以通过_SC_THREAD_DESTRUCTOR_ITERATIONS作为sysc...
原创
发布博客 2019.09.15 ·
165 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(18)线程

第十一章 线程一:主要内容:  线程可以在单进程环境中执行多个任务,并且一个进程中的所有线程都可以访问该进程的组成部件,比如内存和文件描述符。多线程使得单个资源会被多个用户共享,所以同步机制在多线程中是至关重要的。二:线程概念  典型的UNIX进程可以看成只有一个控制线程:一个进程在同一时间只能做一件事情。一个进程对应多个线程有以下好处:  1.通过对每种事件分配一个单独的处理线程,可以...
原创
发布博客 2019.09.09 ·
149 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(17) 信号(下)

一:函数sigprocmask  一个进程的信号屏蔽字规定了当前阻塞而不能递送给该进程的信号集。调用函数 sigprocmask可以检测或更改 (或两者 ) 进程的信号屏蔽字。原型如下:  首先,如果oset是一个非空的指针,那么进程的当前信号屏蔽字通过oset返回。  其次,若set是一个非空指针,则参数how指示如何修改当前信号屏蔽字。SIG_BLOCK是或操作,而SIG_SETMAS...
原创
发布博客 2019.08.25 ·
118 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(16) 信号(中)

一:可重入函数  简单的来说,当一个进程捕捉到了信号,那么这个进程将会执行该信号处理程序中的指令,这个是绝对的。但是我们可能会想到一个问题,假设该进程正在执行一些比较特殊的指令,比如malloc;这时进程捕获到了一个信号,该信号处理程序执行也为malloc,那么会发生什么?这很有可能会对进程造成一个极为严重的影响,甚至直接杀死进程。  那么由上可知,类似于malloc这种函数是【不可重入函数】...
原创
发布博客 2019.08.04 ·
180 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(15) 信号(上)

第十章 信号一:主要内容:  信号属于软件中断,它提供了一种异步处理事件的方式。本章对信号机制进行综述,说明每一种信号的用法,然后分析早期实现的问题,之后说明解决问题的方法。二:信号概念  每个信号都有名字,他们都是以SIG开头,信号在signal.h文件中被定义为正整数常量,并且不存在编号为0的常量。  产生信号的方式多种多样,比如最常见的就是在终端中ctrl+c,就可以产生中断信号。...
原创
发布博客 2019.07.28 ·
147 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

Leetcode解题之路(golang版):41. 缺失的第一个正数(First Missing Positive)

41. 缺失的第一个正数给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。解法一:排序法空间复杂度:$O(n)$...
原创
发布博客 2019.07.23 ·
229 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Leetcode解题之路(golang版):5. 最长回文子串(Longest Palindromic Substring)

5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解法一:中心扩散法空间复杂度:$O(1)$时间复杂度:$O(n2)$func longestPalindrome(s string...
原创
发布博客 2019.07.21 ·
563 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

APUE读书笔记(14) 进程关系(下)

一:会话  会话是一个或者多个进程组的集合,如下图中一个会话有三个进程组:  会话中的进程组通常是由shell中的管道(|)进行连接的,比如上图的安排可能是有如下命令形成的:p1 | p2 & p3 | p4 | p5,进程调用setsid函数可以建立一个新会话。  如果调用这个函数的进程不是一个进程组的组长,那么将会发生以下三件事情:  1.该进程变成新会话的会话首进程,并且该...
原创
发布博客 2019.07.21 ·
112 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(13) 进程关系(上)

第九章 进程关系一:主要内容:  进程之间具有关系,每个进程都会有一个父进程,当子进程退出时,父进程可以得到通知并能取得子进程的退出状态。二:终端登录  对于BSD终端登录,当系统自举时(不清楚什么时自举),内核会创建ID为1的进程,也就是init进程。init进程使系统进入多用户模式,init读取文件/etc/ttys,对每一个允许登录的终端设备,init调用一次fork,他所生成的子进...
原创
发布博客 2019.07.14 ·
119 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(12) 进程控制(下)

一:竞争条件  当多个进程都企图对共享数据进行处理,而最后的结果又取决于进程运行的顺序时,我们认为发生了竞争条件。父进程等待子进程返回可以使用wait函数,子进程等待父进程返回可以使用轮询的方式,每隔1s都去询问一次。但是这样浪费CPU时间,所以多个进程之间需要有某种形式的信号发送和接受的方式来进行处理多个进程间通信的问题。在第十节将会说明这个问题。二:函数exec  fork函数创建新的子...
原创
发布博客 2019.07.07 ·
127 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(11) 进程控制(中)

一:函数exit  进程有五种正常终止的方式和三种异常终止的方式。五种正常的退出方式为:  1.main中调用return,等效于调用exist  2.调用exit函数  3.调用_exit和_Exit函数。  4.进程的最后一个线程启动例程中调用return语句。  5.进程的最后一个线程调用pthread_exit函数。  三种异常的退出方式为:  1.调用abort。  2...
原创
发布博客 2019.06.30 ·
163 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

APUE读书笔记(10) 进程控制(上)

第八章 进程控制一:主要内容:  本章介绍UNIX系统的进程控制,包括创建新的进程,执行程序,和进程终止。二:进程标识  进程是使用一个ID来进行标识的,应用程序有时候就把进程ID作为名字的一部分来创建一个唯一的文件名。进程ID是唯一的,但是ID却是可以复用的,为了保证新进程的ID不会和最近一个进程的ID重复,大部分的系统都会使用延迟复用算法。三:函数fork  一个进程,包括代码、数...
原创
发布博客 2019.06.23 ·
128 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(9) 进程环境

第六章 进程环境一:主要内容:  本章主要介绍进程环境,主要包括程序执行时,main函数的调用过程;命令行参数的传递;典型的存储空间的布局等等。二:main函数  C程序从main函数开始执行,其原型为  其中argc为命令行参数的个数,argv是一个字符串指针数组,表示各参数内容。在调用main函数之前会启动一个特殊的例程,可执行文件将启动例程指定为程序的起始地址。三:进程终止 ...
原创
发布博客 2019.06.16 ·
138 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(8) 系统数据文件和信息

第五章 系统数据文件和信息一:主要内容:  本章主要讲述UNIX系统中与系统正常运行有强烈关系的系统数据文件,比如系统口令文件,组文件等。二:口令文件  口令文件包含如下字段:  口令文件在路径/etc/passwd中,并且是一哥ASCII文件,每一行包含上述字段,并且用冒号分隔。有两个函数可以获取口令文件:  其中getpwuid函数由ls程序使用,gwtpwnam函数由logi...
原创
发布博客 2019.06.09 ·
204 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

APUE读书笔记(7) 标准IO库(下)

第五章 标准IO库(下)一:每次一行IO  下面的两个函数提供每次输入一行IO的功能:char *fgets(char *restrict buf, int n, FILE restrict fd);char *gets(char *buf);成功返回buf,失败返回NULL  这里我们并不推荐使用gets这个函数,因为他不指定读入缓冲区的数据大小,容易造成缓冲区溢出,当最后一行超过...
原创
发布博客 2019.06.02 ·
132 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多