自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 大厂面试干货:大厂社招与HR沟通offer经验分享

社招大厂与HR沟通offer经验分享前言如何积极回答HR提出的问题如何同HR提当前的薪资包你是否有其他抓手offer薪资包怎么报总结前言写这篇文章的初衷,主要有以下两点:在2020年4月刚换了工作,有了些实际的经验,也刚好对社招经验做个总结。发现身边一些朋友也刚好在陆续换工作,大家都相互在不断地交流拿offer的经验因此,既然有这么多的诉求,索性总结一篇文章来同大家聊聊。如何积极回答HR提出的问题  2020年是很特殊的一年,在2020年2月份疫情最严重的的时候,我在原来的公司疫情和美国对

2021-02-25 23:10:21 4047 5

原创 分布式存储引擎大厂实战——一致性哈希在大厂的应用

背景作为k-v存储的开山鼻祖,Dynamo从亚马逊研发出来之后就在存储领域引起了轰动。理论上说Dynamo可以无限扩容,且性能是无限线性递增的(后面会将为啥理论上讲是无限线性增长)。Dynamo的动态伸缩让系统的scale-out能力极强。Dynamo延伸出dynamoDB作为nosql 领域的代表DB。Dynamo保证系统无限扩展且同时性能不下降的关键,是让整个存储集群没有中心节点,扩容的所有的节点都能负载均衡,跟集群里面的其他节点对等。要实现这样的能力,需要依赖一种数据的均匀分布的算法,该算法够随机并

2021-02-07 11:26:26 7483 7

原创 多进程中之文件描述符继承的消除

什么是文件描述符的继承 当父进程创建子进程时,无论 fork 函数或者是 vfork 函数,子进程通常都会继承父进程的文件描述符。所谓的继承,就是子进程可以使用相同的文件描述符,和父进程操作同一个文件对象。如图所示 这种可能会造成权限安全隐患。怎么办呢? 最简单的做法当然就是什么也不做。告诉开发人员,父子进程之间这种共享文件对象的方式很危险,你自己开着办,除了事情自己负责,当然这种处理方式,对于执行体程序库而言代价最小,因为不用添加任何代码,顶多在文档上写两句说明的...

2021-02-07 10:05:25 2251 1

原创 一个三本程序猿的大厂逆袭之路

一个三本程序猿的逆序之路在外包的艰苦岁月成功逆袭阿里在外包的艰苦岁月  该哥们是东北一个三本里面的工科男,毕业后辗转了几家公司后,认识他时已经在菊厂的一家外包公司工作。这里暂且称他为A。在工作的前几年A一直从事对象存储相关的测试工作。一般来说,这种外包测试都比较简单,正式员工写好测试用例后,外包员工只需要按照测试用例去机械地执行就行。如果想混日子还是很容易的。要是A不甘心这么走下去,而是给自己设定了明确的人生目标。  那时候我刚拿到菊厂成研所校招内推offer进去工作。在工作中认识了他,他经常过来和

2021-01-29 18:23:56 13777 14

原创 分布式存储引擎大厂实战(开篇)

这里写自定义目录标题前言为什么会出现分布式系统新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言学习一个新知识的时候,我们必须除了搞懂 What – 这个东西是什么怎么用,还会特别关注甚至是最先关注 Why – 为什么

2021-01-12 19:39:34 8433 5

原创 一起来解读2020年stack overflow年度技术盘点

一起来解读2020年stack overflow年度技术盘点最流行的技术编程、脚本和Markdown语言数据库web框架其它的开发框架、库和工具最喜爱和最想学的技术最喜爱和最想学的程序语言最喜爱的开发框架、库和工具最喜爱和最想学数据库最喜爱和最想学的web框架最喜爱和最想学的平台薪酬最高的编程语言开发者的主力操作系统 2020 年是 Stack Overflow 发布年度开发者调查报告的第十年,有近 65,000 名来自世界各地的开发者参与了这个调查。下面带大家来一起解读下这份调查报告,希望对各位开发小

2021-01-05 17:10:30 1378 3

原创 一文带你轻松掌握多种编程范式

前言编程范式有多种,主要有结构化的程序设计思想、对于对象的程序设计思想、面向对象的程序设计思想、基于接口的程序设计思想。那么这些范式各是什么意思呢?别着急,我们通过一个加法器的例子来逐一说明。结构化程序的设计思想我们来实现一个加法器,在这个加法器中已经保存了被加数,现在需要传递加数到加法器。如果你是一个C语言开发,第一反应多半是,这个很简单啊,用一个结构体来保存被加数,然后再外带一个加法函数就行了啊代码中,结构体Augend保存了加法器的被加数,具体而言,就是由iAugend保存,第9至12行给出

2020-12-14 14:15:45 24553 47

原创 分布式协议学习——一文彻底理解Multi-Paxos

前言之前写了篇Basic Paxos的文章,大家阅读了后应该就知道了Basic Paxos只能就单个值(Value)。假设需要对一系列值达成共识的话

2020-12-07 17:37:54 1299 6

原创 什么是可串行化MVCC

随着数据库应用的不断发展,数据规模逐渐升级,为了提高效率,往往会将多个事务并发的执行。而多个事务并发可能会同时存取同一数据,产生数据不一致的情况:读“脏”数据,不可重复读等。所以数据库管理系统(Database Management System,DBMS)必须提供并发控制机制,使得并发的事务在冲突的时候被串行化执行。这种调度称为可串行化调度。 通过时间戳的调度规则通过比较时间戳来判定读写请求是否被允许。与封锁相比,时间戳规则采取一种乐观的方式,假设事务所有操作都是可串行的,只有操作确实导致了非可串行化行

2020-11-25 18:27:23 9917 1

原创 分布式协议学习——一文彻底理解共识算法之Basic Paxos

什么是Paxos算法一致性就是数据保持一致,在分布式系统中,理解为多个节点中数据值的一致。而一致性又分为以下两种强一致性弱一致性Paxos算法就是著名的强一致性算法。它有一个假设前提,在分布式系统中进程间通信会出现延迟、丢失、重复等现象,但是不会出现传错的现象。而Paxos就是为了保证在这样的系统中进程间基于消息传递就某个值达成一致。其实在过去很长一段时间,Paxos算法可以说是分布式共识的代名词,当前最常用的一批共识算法,比如,Fast Paxos算法,Cheap Paxos算法,R

2020-11-06 16:47:21 1704 4

原创 通过反汇编来理解restrict关键字

一次面试后对retrict关键字的理解一次难忘的面试经历什么是restrict功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入一次难忘的面试经历多年前,一次鹅厂实习生的面试题,题目的代码片段很简单,如下: 1 #includ

2020-10-20 23:16:29 404

原创 数据库专题——深入理解count(*)为什么这么慢

一文搞懂count(*count(*)的实现方式功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入之前在开发一个交易平台过程中,有遇到过需要计算交易记录总数。可能很多人会和我当初想得一样一条select count(*) from

2020-09-15 10:56:48 2343 4

原创 一文搞懂如何使用封锁来实现并发控制

前言随着数据库应用的不断发展,数据规模逐渐升级,为了提高效率。往往会将多个事务并发的执行。而多个事务并发可能会同时存取同一数据,产生数据不一致的情况。比如“脏”读,不可重复读等。所以数据库管理系统(简称DBMS),必须提供并发控制机制。使得并发的事务在冲突时串行化执行。这种调度称为可串行化调度。并发控制主要有两种方式,封锁和时间戳。我们先来讨论用封锁的方式来保证事务并发控制中的一致性问题。封锁方式是基于各种锁来进行并发控制。在封锁机制中,当多个事务同时访问同一数据时,应对其进行封锁请求的授予或等待。而加

2020-07-24 10:51:59 2187 4

原创 一文详解DeepID-Net

一文了解DeepID-NetDeepID-Net简介框架流程简介Bounding Box RejectionDeepID-Net 网络结构功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入DeepID-Net简介 DeepID-N

2020-06-12 11:11:48 590

原创 RS纠删码性能分析实战
原力计划

性能分析运行环境CPU: Intel® Xeon® CPU E5-2603 0 @ 1.80GHz内存:2049316 kBLinux版本:25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 x86_64 x86_64 GNU/LinuxReed_Sol_Van基于原始范德蒙矩阵的rs纠删码,生成矩阵由范德蒙矩阵构造,将原...

2020-03-12 14:09:22 1294

原创 基于容器的虚拟化资源调度系统的架构设计

前言 考虑到底层平台必须支撑上层的多种服务,如媒体流服务、深度学习计算框架等,如果采用传统的基于MapReduce分布式计算框架必将带来扩展性差、资源利用率低、无法支持多种框架的问题。上层的每个服务组件的实现均是一个分布式子系统,如果单独实现,必然造成各组件之间完全孤立维护与管理。设计思路 为了解决这个问题,解决方案则是考虑将各个服务组件的资源管理与作业控制进行分离,并且加入基于Docker...

2020-02-21 20:48:36 2322 1

原创 数据库专题 一文理解如何选择普通索引和唯一索引

不同场景下的选择网上已经有很多关于唯一索引和普通索引的区别,这里就不详细阐述了,接下来我们深入讨论如何根据不同业务场景,应该选择普通索引还是唯一索引。比如维护一个社保管理系统,每个社保人员都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果该系统需要按照身份证号查询姓名,就会执行这样的SQL语句:select name from suser where id_card...

2019-11-18 20:04:41 916 3

原创 数据库专题-一文理解InnoDB为什么常用B+树做索引

在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)他的最小单元是块,一个块的大小是 4K。而对于 InnoDB 存储引擎也有自己的最小储存单元——页(Page),一个页的大小是 16K。InnoDB 的所有数据文件(后缀为 .ibd 的文件),他的大小始终都是 16384(16K)的整数倍。当然,在MariaDB中页的大小也是可以设置的...

2019-10-10 22:41:39 2340 5

原创 目标检测算法R-CNN详解

R-CNN介绍R-CNN框架介绍Graph-Based Image Segmentation方法介绍Selective Search方法介绍Bounding Box Regression介绍R-CNN框架介绍R-CNN框架出自UC Berkeley发表在CVPR 2014年的论文Rich feature hierarchies for accurate object detection and...

2019-09-11 16:34:18 785

原创 通过电商商城数据集测试OverFeat提取特征点质量

测试OverFeat特征点质量测试环境测试数据测试方法测试结果及分析使用OverFeat提取特征点两张图片的匹配数据集在OverFeat提点+暴力匹配测试结果测试环境主机名配置test75Intel® Xeon® 1.80GHz, 8核,16线程,内存 8G, 硬盘 200G测试数据为了测试OverFeat提取特征点的质量,采用从XX商城爬取的箱包、作为测试数据库...

2019-08-28 10:19:20 769

原创 一文理解受限玻尔兹曼机(RBM)

一文理解受限玻尔兹曼机(RBM)限制性玻尔兹曼机(RBM)原理RBM简单模型RBM能量函数和概率分布求极大似然对比散度算法RBM用途分布式RBM可能遇到的问题限制性玻尔兹曼机(RBM)原理限制性玻尔兹曼机在玻尔兹曼机基础上进一步加一些约束,取消了v,h变量内部的联系,即不存在可见单元与可见单元的链接,也不存在隐含单元与隐含单元的链接,如下图所示:RBM简单模型简单 RBM 模型的参数描述...

2019-08-19 10:34:13 1594 1

原创 一文了解caffe框架

caffe 框架介绍什么是caffeCafee的特点CNN框架:AlexNet数据层(data_layer)数据传递(blob)卷积层(convolution)受限线性单元(RELU)池化层(POOLING)局部响应归一化层(LRN)全连接层(INNER_PRODUCT)Dropout层输出(分类)层(softmax)什么是caffeCaffe 全称:Convolution Architect...

2019-08-13 16:10:38 10857 6

原创 一文读懂GoogLeNet神经网络

什么是GoogLeNetGoogLeNet特点优化网络质量的生物学原理GoogLeNet网络结构的动机GoogLeNet架构细节Inception模块和普通卷积结构的差异辅助分类器GoogLeNet网络架构GoogLeNet训练以及样本预处理GoogLeNet测试以及测试样本处理五、GoogLeNet检测+分类MultiBox方法SelectiveSearch方法提出一种全新的深度网络架构:In...

2019-08-01 10:52:47 3066 11

原创 C++ Boost智能指针的使用总结

boost库智能指针使用详解概述scope_ptr特点用法scope_array特点用法shared_ptr特点weak_ptrintrusive_ptr概述C++没有提供类似JAVA的垃圾回收机制,因此boost通过智能指针用来管理内存避免一些问题。C++继承 C 高效灵活地指针,但是同样带了了很多问题:1.内存泄露2.野指针3.越界访问虽然STL提供了auto_ptr,但是由于不能...

2019-07-17 23:11:22 1553

原创 sql 外键约束实例

sql外键约束实例结论在oracle 中的测试在MySQL中的测试结论当一个表A的列a为另一个表B的列b的外键时如果A的列a中删除的值在B的b列中存在,执行被禁止如果B的列b中插入的值在A中的a列中没有,执行被禁止在oracle 中的测试1.创建table cc 其中ID 是主键2.在主键上插入数据,并测试主键唯一性3.创建表 ccpre4.建立外键约束,把ccpre中...

2019-07-11 09:48:45 974 1

原创 MySQL不同隔离级别并发测试分析

MySQL不同隔离级别并发测试分析背景事务基于锁的并发控制MVCC测试方法用例与分析测试结果用例分析总结背景事务事务是数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务的出现主要有两个目的,一是提供数据库操作失败时的恢复方法,而是当多个应用程序同时访问数据库时,对其进行隔离,以防止相互干扰。事务具有原子性、一致性、隔离性、持久性四种特性,也就是所谓的ACID特性。在多个应用...

2019-07-05 11:22:33 3783 1

原创 数据挖掘算法———常用关联算法总结

常用关联算法总结关联算法Apriori 算法关联算法关联规则挖掘算法就是从事务数据库,关系数据库或其他信息存储中的大量数据的项集之间发现频繁出现的模式、关联和相关性。关联算法在科学数据分析、雷达信号分选、分类设计、捆绑销售、生物信息学、医疗诊断及网页挖掘等领域成果颇丰。典型的关联算法包括Aprior 算法、FP-G(Frequent pattern Growth,频繁模式增长树)算法、Fre...

2019-06-26 23:50:01 17828

原创 数据挖掘算法——常用分类算法总结

常用分类算法总结分类算法总结NBC算法LR算法SVM算法ID3算法C4.5 算法C5.0算法KNN 算法ANN 算法分类算法总结分类是在一群已经知道类别标号的样本中,训练一种分类器,让其能够对某种未知的样本进行分类。分类算法属于一种有监督的学习。分类算法的分类过程就是建立一种分类模型来描述预定的数据集或概念集,通过分析由属性描述的数据库元组来构造模型。分类的目的就是使用分类对新的数据集进行划分...

2019-06-17 10:55:22 58356 8

原创 数据挖掘——常用聚类算法总结

概述数据挖掘常又被称为价值发现或者是数据勘探,一般是指从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的,人们事先不知道的、但又是潜在有用的信息和知识的过程。它是一种大量数据的高级处理方式。常用的数据挖掘算法分为四大类:聚类、分类、关联以及推荐算法。另外还有一个预处理:降维算法聚类算法聚类是在一群未知类别标号的样本上,用某种算法将他们分成若干类别,这是一种无监督学...

2019-06-04 15:50:39 6070 6

原创 常用分布式计算任务调度算法

随着大规模并行分布处理系统,特别是网络工作站集群的广泛应用。如何采取有效的调度策略来平衡各节点的负载,从而提高整个系统资源的利用率,已成为人们的研究热点。集群具有可扩展性、 高可用性、高性能、高性价比等优点,作为存储区域网的存储设备具有天生的优势。随着PC机的发展,硬盘的价格越来越低,其存储容量越来越大,每台PC机也可配置多块硬盘,且可扩充能力极高,作为集群中的节点管理也相当方便,并具有一定的...

2019-05-10 10:12:38 16708 2

原创 通过参数-fno-elide-constructors关闭g++的编译优化

前两天在做讲课资料的时候遇到一个比较坑的问题。一般来说调用拷贝构造函数分三种情况1.当用类一个对象去初始化另一个对象时。2.如果函数形参是类对象。3.如果函数返回值是类对象,函数执行完成返回调用时。道理很简单,我写了个很简单的例子在fun函数中会返回一个class A的对象,那么编译器会在栈上构造一个临时对象,构造临时对象的方法则是调用拷贝构造函数结果运行后,如下...

2019-04-06 00:43:36 2809

原创 Bigtable论文笔记

Bigtable作为一个分布式存储平台,能够可靠的扩展存储PB级的数据,并分布到上千台服务器上。适合多种应用,从需要高吞吐量的批处理工作到延时敏感的实时性服务(Bigtable是如何达到这些目的的?在架构上是如何体现的?),具有良好的可伸缩性、高效性、高可用性、高性能(如何达到这些目的?如何设计的?)。一致性、可靠性的问题,论文中没有提到(如何做到这些?依靠底层GFS,还是依靠上层应用的设计?...

2019-03-25 22:38:13 23620

原创 flex&bison之注册表解析

flex&bison简介flex是GNU开发的一个实用工具,它主要用于对语言进行词法分析。使用flex,我们不需要使用像C/C++,Java这样的语言从设计状态机开始编写词法分析器,而只需要按照flex自己的语法编写分词规则文件,然后使用flex编译该文件,flex会根据规则文件生成C/C++源文件,这个源文件中包含了状态机的代码,简化了编写词法分析器的工作。flex的前身...

2019-03-17 21:27:38 1812

原创 使用Automake和Autoconf 生成Makefile 实例

工具简介GNU Autoconf 及 Automake 这两个软件就是帮助程序开发者轻松产生Makefile 。用户只要使用 “./configure”, “make”, “make install” 就可以把程序安裝到系统中。整个automake构建过程如下所示: Autoscan扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件...

2019-03-10 22:38:10 4879

原创 C++ 编译器什么时候会帮助创建拷贝构造函数

前提:当用户没有创建拷贝构造函数1.Memberwise初始化 逐个给成员变量赋值,这是最常见的拷贝方式。2.Bitwise Copy属性 当Class具有Bitwise Copy属性时,直接用memcpy内存拷贝,此时编译器不会合成拷贝构造函数。总之,只要Class不具备Bitwise Copy属性,编译器就会合成拷贝构造函数。没有Bitwise Co...

2019-03-06 11:53:25 2765

原创 常见结构化存储系统架构

什么是结构化存储系统结构化数据一般指存储在数据库中,具有一定逻辑结构和物理结构的数据,最为常见的是存储在关系数据库中的数据;非结构化数据:一般指结构化数据以外的数据,这些数据不存储在数据库中,而是以各种类型的文本形式存放,其中Web上的一些数据(内嵌于HTML或XML标记中)又具有一定的逻辑结构和物理结构,被称为半结构数据。目前比较成熟的结构化存储系统有Cassandra、Bigtable...

2019-03-01 22:39:24 5991

原创 C++ 虚函数表及多态内部原理详解(三)

(三)多重继承(无虚函数覆盖)下面我们再看看多重继承的情况 对于子类实例中的虚函数表,是下面这个样子: 从图上我们可以看到1)每个父类都有自己的虚表。2) 子类的成员函数被放到了第一个父类的表...

2019-02-26 21:48:02 5694 1

原创 C++ 虚函数表及多态内部原理详解(二)

实在不好意思,这几天有事没有及时更新。下面继续(二)一般继承(有虚函数覆盖)如果子类中有虚函数重载了父类的虚函数,会是一个什么样子?假设,我们有下面这样的一个继承关系。如图所示: 在这个类的设计中,只覆盖了父类的一个函数:f()。那么,对于派生类的实例,其虚...

2019-02-26 21:33:29 3248

原创 C++ 虚函数表及多态内部原理详解(一)

C++中 的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术 可以让父类的指针有“多种形态”,这是一种泛型技术。虚函数表每个含有虚函数的类都有一个虚函数表(Virtual Table)来实现的。简称为V-Table。C++的编译器应该是保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证...

2019-02-24 00:24:14 5015 1

原创 Hadoop MapReduce框架介绍

  Hadoop MapReduce是一个软件框架,基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。软件框架如下图所示:  Client:用户编写的Mapreduce程序通过Client端提交给JobTracker端;Client还提供一些查看作业运行状态的接口JobTr...

2019-02-21 22:24:45 2675

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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