自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

神技圈子的博客

分布式存储/人工智能/大厂面试经验分享平台

  • 博客(107)
  • 收藏
  • 关注

原创 C++11 Lambda表达式捕获外部this指针详解

C++11 Lambda表达式捕获外部this指针

2023-10-27 10:45:20 1106

原创 doris operator部署Doris集群教程

详细讲解了如何使用Doris operator来部署Doris集群

2023-10-19 17:41:33 538

原创 详解std::enable_shared_from_this

详细讲解了enable_shared_from_this的出现价值和如何使用

2023-08-17 15:00:07 296

原创 大厂领导为什么喜欢跨层与下属聊天

作为一个在大厂里面浸淫十几年的loser,平时主要精力没用在技术提升上,对于大厂的人情世故各类八卦倒是研究的透彻。如果你细心观察,会发现一些大的公司里面,领导喜欢跨层与下属去沟通聊天,我待过几家比较大的公司,这个现象还是比较普遍。今天就摆一摆,那些领导这么日理万机,为啥还会跟一些level 低几个档的下属去闲聊。

2023-07-29 21:02:53 277

原创 职场中是否存在公平

给C说,你潜力很大,分的并不少,明天以你的潜力,很快就凸出来了。毕业之后,我在公司经过一些岗位之后时常会想起高中同学的一句话,他原话是这样对我说的: 他爸告诉他没有什么公平,对你的公平就是对别人的不公平。如果你想被主管更偏向的对待,那么你是一定要站在他的立场,从他的视角考虑他的利益,然后结合自身有什么资源能够完成他的利益目标达成交换。好比一头雄狮,它也纳闷,为啥老子吼缺氧的四嗓子都换不回母狮的回眸,而另一头搓B,只哼哼两声,母狮就过去了,尼玛真让狮郁闷。虽然多子了,但是多福的前提是得有钱啊,生活可想而知。

2023-07-29 20:59:45 274

原创 专才or 通才

不知道大家有没有这样的感觉,现在的工作专业化程度越来越高,而且是细分方向越来越小。IT领域分到你是计算里面的数据库或者了流式计算引擎,或者是协议存储还是KV存储引擎。

2023-07-29 20:57:42 179

原创 一文吃透KMP算法

看了这篇文章你讲彻底搞懂什么是kmp算法

2023-07-29 20:53:42 105

原创 如何学会像优秀程序员一样思考

好的程序员的思考方式非常重要,这篇文章就带大家来了解哪种是一种好的思考方式

2023-07-29 20:50:34 645

原创 go版本分布式锁redsync使用教程

分析了redsync的结构定义以及如何使用

2023-03-02 11:11:28 1227 4

原创 深度理解go中的Map

通过源码分析的方式深度解析go中map的原理

2022-12-22 10:37:52 645 1

原创 【zabbix Java开发教程】docker部署zabbix及api获取实战教程

zabbix二次开发系列教程开篇,讲解docker如何部署zabbix以及api获取

2022-12-06 18:29:41 641

原创 在职场我们该具备哪些能力

对于很多程序员来说,35岁是一道坎,那么我们在职场该具备哪些能力才能做一个“常青树”呢?作为前大厂的技术专家来和你一起聊聊我们该具备哪些能力

2022-12-04 18:37:04 578

原创 来聊聊对象文件网关和分布式文件存储的区别

基于两类对象的文件类型存储,一类是“对象文件网关型”文件存储,另一类是分布式文件系统存储的区别

2022-10-03 14:26:31 1053 2

原创 flink核心之watermarker

讲师介绍:张涛,现任阿里巴巴集团的技术专家,2012工作即入职大厂,有着丰富的大型分布式系统研发经验,尤其擅长分布式原理与数据结构,并有着多年带团队经验。在多个大厂就职且担任面试官,能从行业领域给出职业生涯建议以及意见。背景介绍:现在的社会,人们产生越来越多的数据,而数据对每个人人都产生了巨大的影响。比如你去银行贷款,那么必然银行要对你做信用评估,会涉及到大数据画像等数据分析。比如美团外卖,则需要分析足够多的数据,给买卖各方做推荐引导,并同时结合大量的订单数据给骑手做配送陆续引导。所有的

2022-06-27 17:36:56 484

转载 一文搞懂leveldb写操作

详细讲解了leveldb写操作流程

2022-06-23 14:23:46 729

原创 【Effective Java】大厂实战之考虑以静态工厂方法代替构造方法

图片Item1-考虑以静态工厂方法代替构造方法Item1-考虑以静态工厂方法代替构造方法缺点1. 只提供静态工厂方法的话,该类就无法被继承(子类化)缺点2. API的查找比较麻烦常见静态工厂方法的命名from —— 类型转换方法of —— 聚合方法valueOf —— 比from和of更繁琐的一种替代方法instance或者getInstancecreate或者newInstancegetTypenewTypeType优点1. 有名字,代码可读性更高优点2. 减少系统的性能开销优点3. 可以返回所声明的

2022-06-20 21:55:11 247 2

原创 我在华为度过的 “两辈子”(学习那些在大厂表现优秀的人)

我在华为度过的“两辈子”

2022-06-20 21:29:58 1377 2

原创 一文彻底搞懂leveldb架构

leveldbleveldb是一个写性能十分优秀的存储引擎,是典型的LSM-tree的实现。LSM的核心思想是为了换取最大的写性能而放弃掉部分读性能。那么,为什么leveldb写性能高?简单来说它就是尽量减少随机写的次数。leveldb首先将数据更新到内存中。当内存中的数据量达到一定阈值,将这部分数据再真正刷新到磁盘文件中。一般来说,顺序写60MB/s,随机写45MB/s.整体架构leveldb主要由以下几个重要的部件构成:1.memtable2.immutable memtable3.sst

2022-05-18 15:09:11 8452 3

原创 大厂面试之JAVA核心技能:Slipped Conditions

聊聊Splipped Condtion定义一个更现实的例子解决Slipped Conditions问题定义所谓Slipped conditions,就是说, 从一个线程检查某一特定条件到该线程操作此条件期间,这个条件已经被其它线程改变,导致第一个线程在该条件上执行了错误的操作。这里有一个简单的例子:public class Lock { private boolean isLocked = true;= public void lock(){ synchronized(th

2022-05-10 16:49:45 202

原创 golang实现简单rpc调用

RPC通信过程RPC的通信过程网上介绍很多,这里就不在单独介绍了,具体过程如下:1.Client以本地调用的方式发起调用;2.Client stub收到调用后负责将被调用的方法名、参数等打包编码成特定格式成网络传输的消息体;3.Client stub将消息体通过网络发送给服务端;4.Server stub收到通过网络接收到消息后按照相应格式进行拆包解码,获取方法名和参数;5.Server stub根据方法名和参数进行本地调用;6.被调用者(Server)本地调用执行后将结果返回给Server

2022-05-05 17:27:14 840

原创 多进程生产者消费者框架设计

前言介绍了进程如何基于面向对象的封装,本章我们基于封装好的Process类来实现一种无锁版的生产者和消费者框架,用它实现了高性能文件拷贝功能。读这篇文章之前大家可以想一下如果是你,你会怎么设计这样的框架?在这个模型中作为每个生产者,如何把读取到内容发送给消费者。而作为消费者,如何把接收到的内容写入文件,并且最终保证文件内容是一致的。好了,废话不多说,我们来通过代码看下是怎么设计的吧?生产者消费者模型我们回顾一下什么是生产者消费者模型。这个模型是为了解决在整个程序过程中既要不断产生数据,又要处理数据的

2022-04-24 14:56:40 2698

原创 源码剖析Redis中如何使用跳表的

前言阿里云今年春招校招面试题,面试官问Redis在是如何使用跳表的?让很多同学赶到很头疼。今天我们就来讲一讲吧。Sorted Set的结构redis的数据类型中有序集合(sorted set)使用非常广泛,本身具有集合的功能,同时又可以支持集合带权重,并且按权重排序。它可以通过ZRANGEBYSCORE按照元素权重返回一个范围内的元素,或者通过ZSCORE返回某个元素的权重值。它能以常数复杂度返回元素的权重,相信很多童鞋都能想到是采用了哈希表索引。而能支持范围查询如何做到的呢?那就得说到今天的重点跳表

2022-04-11 14:52:49 1812

原创 阿里云数据湖分析急招实习生

我们阿里云对象存储部门急招后端开发岗实习生,地点成都阿里中心。欢迎学弟学妹投递

2021-12-18 13:51:50 4356 11

原创 【网易面试题】如何实现一个线程安全的shared_ptr智能指针

题目描述网易一面遇到过这么一个题目,面试官要求自己实现一个线程安全的shared_ptr智能指针。题目分析可能很多人只知道shared_ptr是C++11模块库的头文件定义的一个智能指针,即shared_ptr模版。只要将new运算符返回的指针交给shared_ptr这个“管家”,就不必担心在哪里没有delete p了。shared_ptr在被删除的时候会自动执行delete p。通过 shared_ptr 的构造函数,可以让 shared_ptr 对象托管一个 new 运算符返回的指针,写法如下:

2021-12-16 14:54:28 1861 5

原创 带你玩转多进程编程(一)

前言之前用加法器的例子一文带你轻松掌握多种范式讲解了多种范式的封装差异得到了很多童鞋的阅读。这次我再通过对进程的封装来给大家继续加深讲解下关于这几种编程范式的差异吧。结构化设计相对于pthread_create()函数,fork函数要弱一些。不过不要紧我们马上把它加强一下。#include <iostream>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>using n

2021-12-12 22:08:45 1030 2

原创 一文彻底搞懂Docker中的namespace

什么是namespacenamespace是对全局系统资源的一种封装隔离。这样可以让不同namespace的进程拥有独立的全局系统资源。这样改变一个namespace的系统资源只会影响当前namespace中的进程,对其它namespace中的资源没有影响。以前Linux也有一个。之前有一个系统调用chroot和namespace类似。namespcae分类chroot内部不能访问外部的内容,namespce在此基础上提供了UTS、IPC、mount、PID、network、User等隔离机制。

2021-12-08 17:13:01 6557 1

原创 一文带你彻底搞懂Docker中的cgroup

前言进程在系统中使用CPU、内存、磁盘等计算资源或者存储资源还是比较随心所欲的,我们希望对进程资源利用进行限制。这就要提到今天聊到的cgroup。什么是cgroupLinux CGroup(Linux Contral Group),它其实是Linux内核的一个功能,它用来控制、限制一个进程组群的资源。最开始是由Google工程师Paul Menage和Rohit Seth于2006年发起的,最早起名叫进程容器。在2007之后随着容器得提出,为了避免混乱重命名为cgroup,并且被合并到了内核2.6.2

2021-11-26 15:06:26 13317 7

原创 【原创】 互联网大事记-开章

互联网大事记-开章预想通过这个系列记录互联网世界发生过的有较大影响的事情,以轻松诙谐的方式去呈现。为这个世界留下些记号, 我们应该学习匠人,能够对事物付出持久的爱,并为之奉献。internet-源起事物都是从小长大的慢慢变强大的。人刚生下来可不就是个光溜溜的不会说话不会思考,没行动能力的小动物。随着他慢慢适应周边环境快速学习,最终成长为一个独立的能思考的人。互联网的婴儿阶段起源于20世纪60年代的美国。老美总喜欢搞一些假想的敌人,假想的困局,然后去琢磨怎么去攻克这个难题。其实在和平年代,这个也有一定

2021-11-16 09:45:53 785 1

原创 一文搞懂MySQL XA如何实现分布式事务

一文搞懂MySQL XA如何实现分布式事务前言XA 协议如何通过MySQL XA实现分布式事务前言MySQL支持单机事务的良好表现毋庸置疑,那么在分布式系统中,涉及多个节点,MySQL又是如何实现分布式事务的呢?比如开发一个业务系统,它接受外部的请求,然后访问多个内部其它系统才能执行该请求。执行时我们需要同时更新多个数据库的值(D1,D2,D3)。由于系统必须处于一个一致性,也就是这三个数据库的值要么同时更新成功,要么全部不更新。不然会造成子系统有些指令成功了,有些指令尚未执行。导致对结果理解混乱。那

2021-11-07 23:17:16 4252 4

原创 【大厂JAVA核心技能】来聊聊Java的锁使用

聊聊java中的锁背景一个简单的锁锁的可重入性锁的公平性背景锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字(译者注:这说的是Java 5之前的情况)。自Java 5开始,java.util.concurrent.locks包中包含了一些锁的实现,因此你不用去实现自己的锁了。但是你仍然需要去了解怎样使

2021-11-04 14:39:07 150

原创 【大厂JAVA核心技能】Java中的读/写锁

相比Java中的锁(Locks in Java)里Lock实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(译者注:也就是说:读-读能共存,读-写不能共存,写-写不能共存)。这就需要一个读/写锁来解决这个问题。Java5在java.util.concurrent包中已经包含了读写锁。

2021-11-04 14:38:13 145

原创 【源码讲解】Redis的字符串是如何实现的

这里写自定义目录标题前言前言为什么不用char*前言这里写自定义目录标题前言前言为什么不用char*前言字符串在日常开发中应用得比较普遍,对于Redis来说,键值对中的键是字符串,值也是字符串。比如在Redis中写入一条客户信息记录姓名、性别、爱好等。在Redis这种内存数据库中,由于字符串被广泛的应用,在设计字符串时基于以下几点来设计:1.支持丰富高效的字符串操作,比如追加、拷贝、比较等2.能保存二进制数据3.能尽可能的节省内存开销可能会有人问了,既然C语言库提供了char*这样的字符

2021-10-21 23:01:54 2314 2

原创 【源码讲解】Redis中内存优化的数据结构是如何设计的

文章目录前言三种优化过的数据结构SDS 设计**redisObject 结构体****嵌入式字符串**ziplist 设计intset 设计共享对象前言Redis 作为内存数据库,如何高效地使用内存非常重要。为了提升内存的使用率,主要采取数据结构优化设计及使用以及内存数据按照规则淘汰。内存数据按照淘汰规则主要通过 Redis 的内存替换策略实现的,也就是将很少使用的内存数据淘汰,这样就可以更好地把内存空间给频繁使用的数据使用。下面,我们就通过源码讲解下 Redis 中内存友好的数据结构是如何设计的以及R

2021-10-11 11:34:46 1857 1

原创 【职场思考】没听过的22条技术大牛的建议

JUST DO IT用这句英文做引子有两层含义: 一个是字面意思,另一层则是 IT 这个行业代表着当前最具争议的行业。而我本身也在这个行业里面,所以从这个行业的角度给大家分享下周边的大佬们对于新入门的学弟妹的一些建议。Nicholas C. Zakas全世界最著名的js 程序员之一。他对职业生涯最好的七个建议如下:1)不要别人让做什么就做什一定要自己参与进去,要提出自己的想法,并给反馈2) 推销自己你做了很多但是别人不知道,那么你的贡献就没法去被很好的衡量,那么你的发展就没那么顺利。3)

2021-10-11 09:50:02 353 1

原创 阿里P7教你该如何处理个人发展与平台的关系

个人与组织平台的关联普通人从出生到死,都同组织平台脱不了关系。哪怕你活在农村,山区,你也会涉及很多流言蜚语,也会被别人评头论足,这就是说你同社会摆脱不了的关联,不管这种关联是正向还是负向。这里作为职场老兵,今天就来聊聊个人跟组织,或者说人跟平台是有怎样的关系。家庭平台家庭平台给你带来的东西都是与生俱来,外面的人如果对你的家庭议论,如果不中听你就要反驳,甚至争吵。其实这里面有一层关系在里面,其实我们可以把它理解成利益关系就更清晰了。这里举个朋友Y的例子,90年末期,Y的父亲在某南方城市包工程,赚到了不少

2021-10-09 16:45:58 1882

原创 【源码讲解】Redis的高性能hash如何设计的

文章目录哈希表的优势如何实现链式hash哈希冲突如何设计与实现链式 hash为什么链式hash可以解决冲突实现 rehash什么时候触发 rehashrehash 扩容渐进式 rehash实现哈希表的优势哈希表作为一种关键的数据结构应用非常普遍,比如在 Memcache 中,哈希表被用来作索引。而对于 Redis 来说,哈希表是键值对中的一种值类型,同时,Redis 也是用一个全局哈希表来保存所有的键值对,这样既能满足应用存取哈希型结构的数据需求,又能提供快速查询功能。哈希表之所以应用这么广泛,主要原

2021-10-08 16:55:31 4507 4

原创 阿里技面之LSM-Tree如何加速随机写

面试还原技面第二轮面试题问到了LSM-Tree是如何实现加速随机写的。不是存储研发方向的童鞋们一看这个题可能会一脸懵逼,可能会疑惑什么是LSM-Tree啊,以前只听过红黑树、B+树。那么,这个数据结构又有什么特点,为什么能用来对随机写进行加速的。什么是LSM TreeLSM树(英文全程Log-Structured Merge Tree)它是一种分层、有序、面向磁盘的存储结构。先看Log Structured表示日志结构的,日志是软件或者系统打出来的,就像平时写日记一样,一页页往下写,系统写日志不会写错

2021-10-07 21:51:39 2810 4

原创 阿里技面之raft如何选主

背景一面在考查技术基础首先被问到过raft协议如何选主?主挂了选出的新主如何重新进行日志复制?raft协议一直都是分布式系统一致性的难点,能讲清楚很不容易,下面我们就通过现场还原的方式讲讲该如何回答这两个问题的。现场还原Q1面试官:那你先说一下raft协议是如何选主吧?A1 我:为了保证数据一致性,最好的方式是唯一节点去读,唯一节点去写。这样的数据肯定是一致的。但是分布式架构显然不可能一个节点处理。因此raft提出在集群的所有节点中需要有一个节点来充当这个唯一节点,在一段时间内,只有这一个节点负

2021-09-26 13:09:37 7183 2

原创 小白都能看懂的分布式事务与2PC

实现分布式事务原子性的协议一说到事务,一般就会想到ACID特性,其中A(atomic)其实就是指事务的原子性。那么什么是原子性呢,简单来说原子性就是要求事务只有两个状态:一是成功,也就是所有操作全部成功二是失败,任何操作没有被执行,即使过程中已经执行了部分操作,也要保证回滚这些操作。其实要做到原子性并不容易,因为多数情况下事务是由多个操作构成的序列。而分布式事务原子性的表现与普通的事务原子性一致。分布式事务要涉及多个物理节点,而且还增加了网络这个不确定因素,使得要满足分布式事务的原子性问题更加复

2021-08-24 11:32:27 659

原创 一文搞懂Java并发编程模型有哪些

聊聊多线程的代价是否应该使用多线程程序更复杂上下文切换的开销增加资源消耗是否应该使用多线程从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。程序更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂

2021-07-26 16:22:34 691

空空如也

空空如也

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

TA关注的人

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