- 博客(30)
- 收藏
- 关注
原创 使用centos8在docker环境下编译ceph reef并使用s3cmd与awscli测试
最新的ceph版本为Reef,想要体验一下,并且能够使用gdb来打断点查看。起一个centos8容器。
2024-10-14 16:58:17 291 1
原创 时间向前跳变导致Ambari-agent心跳上报失败
在分布式系统中,节点间时间同步是业务正常运行的前提。一般自己搭建ntp server来作为时间同步服务器,其他节点可以使用crontab定期通过ntpdate来进行时间同步。ambari是一套完善的集群管理系统。主要工作方式为:ambari-server作为服务端,管理各个ambari-agent端的信息收集、命令下发等操作,此时便可以通过自定义扩展模块,来实现自定义业务的管理(如ceph集群管理)。agent端将定期上报心跳和相关状态信息,来向server端知会该节点的存活状态,若一定时间内serve
2021-06-19 15:47:53 883
原创 程序员什么时候开始写简历?最好从刚上大学开始!
作为一个程序员,有时需要帮助搜集候选人简历,然后感叹,真是受到了各种奇葩简历的精神污染啊。简历也就一两页纸,百十来字,有格式问题的(句号逗号用不对的、半角全角分不清的、段落不分粘成一堆的、甚至错别字一坨的),也有内容问题的(没有大纲线路的、过分简略不知道做了啥的、过分细节没有重点的、各种“精通”的)。像是这样的简历,除非有什么亮点十分突出,否则一般都是不会看第二眼的。刚好前段时间也在跳槽,整个都结束后,考虑到也是校招季,想着把自己理解的简历要点和常见的坑列出来给各位同学们,抛砖引玉,看能否给大家一些启发
2020-08-23 21:11:24 1321
原创 性能指标:队列深度、IOPS与时延
队列深度,更显然地说是指未完成的(outstanding)的I/O数目,或指测试工具中的"threads"表示的数目。这是性能测试的一个关键指标。具体地讲,这些概念是指测试工具一次下发的最大I/O数目,而不管测试工具、OS等的限制。对于测试工具(如vdbench)来讲,一个请求从主机下发到存储,存储完成后返回到主机,这才算是这个I/O的一个完整周期。对接深度是指主机始终维持的,未返回到主机中的请求数目。在深入理解之前,需要先理解IOPS和时延(latency)。按定义来讲,每个“thread”是指一次
2020-06-11 16:14:47 9175
原创 Designing Data-Intensive Applications翻译
一. 可用性, 可扩展性, 可维护性应用程序现在的应用程序已经从计算密集型转变为数据密集型. CPU的算力已经很少是这些应用程序的限制条件,更多的是所需处理的数据的数量, 复杂度以及数据变化的速度.…考虑一下数据系统(Data System)通常我们认为数据库, 队列, 缓存,等等是一些不同类别范围的概念, 尽管可能数据库和消息队列看起来很多相似的地方-- 例如它们都用于某时存储一些数据-...
2020-03-08 22:47:32 611
原创 数据包的超时管理:TTL
TTL的起源在各种需要进行数据包传送的场景下,数据包一般都有一个超时管理机制:Time To Live,即TTL。为什么需要这么一个机制呢?举个例子,在IP协议发送数据包的时候,可能会经过多个路由转发环节。若其中的某个环节出了问题,就可能造成这个数据包一直在数个路由器中反复转发。这样既不能正确到达目的地,也无法及时释放这些资源。如何来避免这种情况发生呢?给每个数据包都加上一个超时时间即可,...
2020-01-10 20:54:39 2045
原创 事件驱动设计模式
在进行事件方面的代码编写中,Reactor设计模式是经典、重要的一种设计模式。参考【1】 《Pattern-Oriented Software Architecture, Volume 4: A Pattern Language for Distributed Computing》,第11章《Reactor》【2】 《Redis设计与实现》 第12章 《事件》【3】 《设计模式》...
2019-12-24 11:19:10 856
原创 神奇的位操作们
位操作是一种灵活、强大的编程技巧。最简单的使用场景,是将多个字段压到一个字段中,这样可以使用更少的交互来传递更多的内容。这在LBA编址上很常见,如一个LBA应该编码进去lunId, poolId, 是否压缩,lun中逻辑地址。也常用在信息收发上:如socket中的包头,将多种信息压缩到一个头中一次收发。此处需要注意的是位的偏移长度,以及在实现的时候需要注意将每个字段强转为待压字段的长度单位...
2019-12-23 19:19:35 189
原创 函数的执行、调用、堆栈与递归
前提先需要简要叙述一下一个C程序的运行流程。我们知道基本的冯诺依曼计算机体系:CPU–内存–外存。CPU中具有一些寄存器可以用来暂存要操作的对象,并存储处理结束后的数据。程序编译完成之后,当内核通过exec函数来执行C程序是,在调用main前会先调用一个特殊的启动例程,该例程将会将段页式内存管理数据总线、控制总线参考【1】 UNIX环境高级编程【2】 汇编语言,第三版...
2019-12-17 16:30:39 286
原创 C/C++基础:函数/指针/多态
变量内存地址与指针我们知道内存是一块能够存储数据的区域。从本质上来讲,存储器被划分为若干个存储单元,每个存储单元都有一个固定的编号,即内存地址。计算机的最小信息单位为1bit,但是作为内存的最小处理单位是字节,即8bit(【1】p4)。变量的存取方式int a = 100;如上所示,在声明了一个int型的变量。此时,编译器会为其申请一块int大小的内存区域,并在这块内存区域中放入值100...
2019-12-17 11:06:52 711
原创 分布式存储系统中重删功能的设计
什么是重删一般有哪几种重删设计思路:在线重删,各自优缺点离线重删,各自优缺点对于全闪的特性(磨损)重删设计方案的选择无重删时的I/O路径是什么样的数据存取位置的管理:元数据有重删时I/O路径是什么样的重删的原理:管理方式的变更:需要增加一个哈希值-物理地址的元数据表来管理由重删功能引发的逻辑地址-物理地址表项的变更: 一个逻辑地址现在可以对应多个物理地址插入流程,非重复数据...
2019-12-12 11:39:12 1314 1
原创 数据结构与算法题目(一): 链表相关
链表是最基础,也是最重要的数据结构.在实际工作中,链表及链表形式的队列是最常用的任务队列模式; 在面试中, 由于链表相关的题目都可以用少量的代码写出来, 而其指针指来指去又比较复杂, 可以全面考虑应聘者的思路的敏捷性和考虑问题的鲁棒性, 所以面试中经常出现机试或手写链表相关的题目.笔者认为, 链表相关的题目主要要考虑的其实就是节点的连接性.主要考虑有以下几种操作:遍历插入删除一. ...
2019-12-08 21:55:22 237
原创 进程间同步与互斥
[2019 百度 计算与存储系统研发工程师笔试] 描述只读锁和读写锁的互斥关系描述linux文件系统读写IO流程,从vfs到块设备层。
2019-12-07 01:05:29 197
原创 实现一个任务调度系统
在看RAID代码的时候,对于多种不同的后台任务,采用了不同优先级的处理方法.而对于其中的某个后台任务(例如巡检), 又采用了一种动态的速率调整的策略. 这种调度的实现是很有意思的, 不禁想着参考这种实现方式,来自己实现一个任务调度系统....
2019-12-05 22:33:39 564
原创 OJ输入方法
一些OJ平台上的输入是命令行形式输入的,需要自己写输入函数.记录如下:输入形式为:1 2 3 4 52import java.util.Scanner;public class Main{ public class ListNode{ int var; ListNode next; ListNode(int var){ ...
2019-12-03 23:42:37 612
原创 进程间通信
问题收集为什么需要专门考虑进程间通信这一问题?解决这个问题的发展历史是什么样的?进程间通信的一般处理方法有哪些?都是如何实现的?各自的优劣在哪里?适用场景在哪里?问题的引出:如何使用户态的进程进行通信众所周知,用户态的进程相互隔离,都具有独立的地址空间,因此无法进行直接通信,需要进入内核态进行访问。此处的访问,其实本质上是虚拟地址和物理地址之间的重新映射的关系。当然实现起来是十分复...
2019-11-16 00:15:23 273
原创 Linux内存管理
问题收集若能申请到内存,则直接申请;若无可用内存,则加入链表等待的机制是否存在?基于1的需求,是否能够通过上下文传递来更加精细化地管理整个结构体的内存分配情况?Linux是否有类似的实现?Linux的内存管理...
2019-11-15 23:20:12 150
原创 汇编学习:从环境配置到函数调用
Mac下的环境配置安装HomeBrew;使用homebrew安装DOSBox:brew install DOSBox;在某个位置创建一个文件夹用于存放调试程序,假设放到/User/DOSBox下,下载DEBUG.EXE, LINK.EXE,MASM.EXE, LIB.EXE,将其放入其中;打开DOSBox,挂载个人文件夹:mount c /User/DOSBox;dir可看到当前目录...
2019-11-14 00:15:09 366
原创 网络是怎样连接的
问题收集为什么要有路由器?路由器的本质功能是什么?如果没有路由器如何收发包?路由器是如何收发包的?数据包在从用户到服务器,中间经历了哪几个部分?集线器、交换机和路由器的作用分别是什么?区别有哪些?网关是什么?作用是什么?是如何实现的?IP表与MAC表的内容有哪些?增删改查的时机有哪些?以太网是什么?端口号的作用是什么?是否有上限?是否固定?如何与全互联网进行约定?TCP协议的握手标...
2019-11-10 17:38:36 282 1
原创 计算机是如何运行的:从CPU到内存管理
CPU的组成内存的组成内存的硬件结构内存的物理地址编码内存的寻址内存管理:分段什么是内存分段为什么发明了分段式内存管理分段内存管理是如何实现的如何使用分段内存管理CPU如何进行内存寻址CS:IP结构:内存管理:分页什么是内存分页页框与寻址分页管理的好处是什么分页管理与分段管理的区别是什么?CPU如何对一个分页管理的内存系统进行寻址?中断: 缺页中断什么是缺页中...
2019-11-03 20:20:13 5313
原创 《操作系统精髓与设计原理》第七章:内存管理
基本概念在单道程序设计中(即同时只允许一个进程在处理器中执行),内存被分为两个部分,一部分供操作系统使用,一部分供当前执行的用户程序使用。而在多到程序设计中,CPU采用某些调度方式允许多个进程在一定意义上同时执行(当然在实际的围观角度来看并不是同时执行),因此用户程序使用的内存区域需要被进一步细分管理,从而满足多个进程的存放要求。这便叫内存管理。1.内存管理需要满足哪些要求?主要包括以下几...
2019-06-23 21:13:10 1321
转载 虚拟内存/用户空间与内核空间/MMap与MUnmap
在涉及到IO的开发中,我们经常看到零拷贝(zero copy)、内存映射(memroy map, 以下简称mmap)等技术被用于提高IO效率,本文将介绍这两种技术的基本原理,说明它们是如何提高IO效率的。相关概念Zero copy和mmap涉及到操作系统中的一些基本概念,在了解它们的工作机制前,我们先来复习一下这些概念。虚拟内存(virtual memory space)进程对内存...
2019-06-22 15:11:11 1052
转载 Linux用户态与内核态
Table of Contents一、 Unix/Linux的体系架构二、用户态和内核态的切换三、总结 一、 Unix/Linux的体系架构 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必...
2019-01-28 22:22:55 267
原创 差分法与傅里叶谱方法计算拉普拉斯算子
使用差分法和傅里叶谱方法求解拉普拉斯算子%Test laplacian operator with difference method and fourier spectral methodclear;close all;Nx = 128;Ny=Nx;dx=1;dy=dx;%% Generage Gaussian DistributionX = 0 : 1 : Nx-1;Y = 0 : 1:
2017-12-06 22:23:38 3114
原创 求顺度系数,需注意应变与剪切应变的2倍关系
求顺度系数,需注意应变与剪切应变的2倍关系clear;syms c11 c12 c44;c11 = 10;c12 = 60;c44 = 20;epsilon_11 = 0.1;epsilon_22=0.2;shear_strain_12 = 0.3;epsilon_12 = 1/2 * shear_strain_12;e = [epsilon_11 epsilon_22 0 shear_st
2017-12-04 15:34:33 2023 1
原创 使用谱方法和有限差分法根据位移求解应变
使用谱方法和有限差分法,根据位移求解应变clear;close all;Nx = 128;Ny=Nx;dx=1;dy=dx;delkx = (2.0 *pi ) / (Nx * dx);delky = (2.0 *pi ) / (Ny * dy);kx = delkx * [0:Nx/2-1 -Nx/2:-1];ky = delky * [0:Ny/2-1 -Ny/2:-1];[kX,k
2017-12-03 22:17:26 1908 4
原创 最少转机-图的广度优先遍历
众所周知,一般来说图的遍历方式有两种,一种是深度优先,一种是广度优先。 1. 深度优先:针对某一条线走到尽头,然后依次回退1步,2步,…,n步来找寻另外的可能。 (注意此处回退是使用的系统栈,因此每一步需要保留信息,以便能够回退到上一层的变量应设置为局部变量,避免被全局覆盖造成错误!)2, 广度优先:针对某个点,先找出该点一步可以走到的所有点,然后将其加入队列的尾部,同时保存步骤信息;接着将
2017-08-12 10:51:13 550
原创 遗传算法中去除一条染色体内的闭环
最近在使用遗传算法处理图的最优化路径。因为基因位由路径节点本身表示,在随机生成新的路径点的时候有可能会与先前的重复,造成闭环,这种情况应该删去该闭环,仅保留开始的一位。其中应用了一些小技巧,记录如下:#include<vector>#include<iostream>#include<string>using namespace std;int main(){ vector<int>
2017-05-06 10:12:04 448
转载 坐在马桶上看算法:只有五行的Floyd最短路算法
坐在马桶上看算法:只有五行的Floyd最短路算法此算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表在“Communications of the ACM”上。同年Stephen Warshall(史蒂芬·沃舍尔)也独立发表了这个算法。Robert W.Floyd这个牛人是朵奇葩,他原本在芝加哥大学读的文学,但是因为当时美国经济不太景气,找工作比较困难,无奈之下到西屋
2017-03-17 20:19:31 411
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人