自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kafka-splunk数据通路实践

鉴于目前网络上没有完整的kafka数据投递至splunk教程,通过本文操作步骤,您将实现kafka数据投递至splunk日志系统。

2024-02-05 17:51:43 1523

原创 使用KubeSphere练习故障注入

故障注入工具:选择中。

2023-12-01 16:17:22 439

原创 kafka学习笔记(一)--脑裂

我知道你想裂,但你先别裂。

2023-11-26 12:42:47 1476 1

原创 微服务系列(三)--通过spring cloud zuul过滤器实现线上流量复制

最后,我们会发现,通过zuul请求provider时,流量会被复制到provider-mirror。●假设provider-mirror是provider-demo的灰度应用。需求提了n遍了,好好好,那这个需求就由我测试来做。

2023-11-22 23:25:29 1277

原创 腾讯微服务平台TSF学习笔记(一)--如何使用TSF的Sidecar过滤器实现mesh应用的故障注入

-自定义部分endlocal delay_percent = 50 --50% 异常local delay_duration = 1000 --延迟1000msendend。

2023-11-19 15:52:22 616

原创 微服务系列(2)--注册中心

Consul是由HashiCorp公司推出的一款开源工具,是一个分布式的、高可用的、高性能的服务注册与发现系统,它提供了服务注册、服务发现、健康检查、KV存储等功能。

2023-08-11 17:38:52 1225

原创 微服务系列(1)-who i am?

微服务学习

2023-07-24 20:40:28 1025 1

原创 哈希的故事 之 二次探测和hashtable

哈希真的给我留下了巨大的阴影二次探测:若当前key与原来key产生相同的哈希地址,则当前key存在该地址后偏移量为(1,2,3…)的二次方地址处key1:hash(key)+0key2:hash(key)+1^2key3:hash(key)+2^2···二次探测法中会每一个空间采用一个状态标识来解决直接删除带来的问题,当删除元素时将该对应空间设置为DELETE;在进行查找某个元素时,判断标识位如果是EXIST和DELETE就继续往后探测查找,直到遇到EMPTY结束。代码实现://二次探测

2020-10-04 16:17:52 423

原创 为什么unordered_map桶的大小是8?

其实还是因为泊松分布。STL中的hashmap就unordered_map。它记录的键是元素的哈希值,通过对比元素的哈希值来确定元素的值。unordered_map的底层实现是hashtable,采用开链法(也就是用桶)来解决哈希冲突,当桶的大小超过8时,就自动转为红黑树进行组织。而转换为红黑树,尤其是红黑树的插入删除遍历的复杂度最坏时间复杂度都是log(n),一旦转为红黑树哈希表的性能将大大降低,所以只有桶中包含足够多的元素以供使用时,我们才会使用rbtree。那为什么这个数字是8呢?官方给出这样一张

2020-10-03 21:22:06 2291 3

原创 拜占庭容错机制

看redis文档的时候注意到这样一句:Leases: an efficient fault-tolerant mechanism for distributed file cache consistency.Leases are proposed as a time-based mechanism that provides efficient consistent access to cached data in distributed systems. Non-Byzantine failur

2020-10-02 22:23:26 1009

原创 Redis I/O复用 & 分布式锁实现(笔记)

北海虽赊,扶摇可接。文章目录Reactor模式Redis的网络(文件)事件处理器文件事件处理器I/O复用问题Reactor模式Reactor pattern(反应堆设计模式)是一种事件处理模式,用于处理通过一个或多个输入同时交付给服务处理程序的服务请求。然后,服务处理程序对传入的请求进行多路分解,并将它们同步分发到关联的请求处理程序。(wiki)Redis的网络(文件)事件处理器Redis 基于 Reactor 模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(File Eve

2020-10-02 19:42:02 182

原创 缺页异常(WHO I AM?)

总结一下Page Fault:虚拟内存分布以32位的Linux系统为例,每个进程独立拥有4GB的虚拟地址空间,如图:虚拟空间和物理空空间如何完成映射?每个进程都有一个页表,每个页面对应一个页表项,随进程而动态变化。自己画的话样子大概是这么个样子:页式存储的缺点是因为页表的存在访问会变慢(需要段号和offest映射)以及单页表对来纳许内存空间要求很高,所以中间通常会加一层缓存(快表TLB)或者多级页表的方式访问。不可能每个进程都占用4GB空间的,实际上只有程序运行时用到了才去内存中寻找虚

2020-09-22 17:43:56 2289

原创 KinectFusion中的多线程优化GPU源码笔记

我想和自己聊聊关于KinectFusion中的多线程优化点云拼接问题。看过KinectFusion源码的同学都知道,它是用GPU做并行计算来完成icp"实时"拼接的。为了提高点云的品拼接速度,该算法中将GPU分为一个一个的block,每个 block 中有 block.x 乘以 block.y 个线程,每个线程的计算独立。如图:每个像素单个线程处理 计算匹配点 根据匹配点计算像素点的cotribution单个线程在GPU中累加(reduce)每个block累加和存储到GPU显存源码是:

2020-09-18 13:09:09 366

原创 张政友标定手推+笔记

|・ω・`)年轻真好,那时候还有时间推公式。

2020-09-15 22:46:46 131

转载 为什么栈比堆快

今天真是问题小喷泉哈哈~https://www.jianshu.com/p/770d279bb531栈是本着LIFO原则的存储机制, 对栈数据的定位相对比较快速, 而堆则是随机分配的空间, 处理的数据比较多, 无论如何, 至少要两次定位.其次, 栈是由CPU提供指令支持的, 在指令的处理速度上, 对栈数据进行处理的速度自然要优于由操作系统支持的堆数据.再者, 栈是在一级缓存中做缓存的, 而堆则是在二级缓存中, 两者在硬件性能上差异巨大....

2020-09-15 16:16:25 304

原创 关于圆形标定的疑惑

一直觉得自己做的圆形标定很ok(从实验数据上看也是这样的),今天中午吃饭的时候忽然想到相机畸变在越偏离图像中心点的地方畸变越大,所以说约靠近边界的椭圆标定出的圆心就越不可靠。从这点来看我的标定算法是不如传统的棋盘格的,但是好在相机本身的畸变比较小,所以综合下来圆形标定法好一点。否定自己的过程真是又受挫又激动今日的怀疑人生。。。。...

2020-09-15 15:18:35 461 2

原创 你会redis吗?我可以学!(持续更新)

面试是学习最好的助推器。redis嘛~不会归不会,但是我有勤劳的双手和聪明的大脑,我可以学!

2020-09-12 22:24:37 606

原创 内存对齐究竟在做什么?

刚开始接触内存对齐的时候,我的理解是这样的——操作系统在以空间换时间。现在看看当时真是too young!实际,内存对齐的意义远比这大得多。如果不理解内存对齐,我们所编写的程序将有可能产生下面的问题:1、程序运行速度变慢;2、应用程序产生死锁;3、操作系统崩溃;4、程序会毫无征兆的出错,产生silently fail !!!!什么是内存对齐“程序员必须要知道内存不是一个一个字节读取的”。在了解什么是内存对齐之前,我们先来复习一下8086中的规则字和非规则字。规则字是低位地址为奇数

2020-09-10 12:06:37 540

原创 Tinyhttp源码分析

文章目录tinyhttpd简介tinyhttpd运行源码分析Tinyhttp的执行流程tinyhttpd简介tinyhttpd是一个超轻量型Http Server,使用C语言开发,附带一个简单的Client,毕竟只有500来行,是很好的 Http Server 学习资料。下载链接:tinyhttpdtinyhttpd运行在运行之前在不同的Linux版本上可能要做不同的改动,根据编译器的提示走很快就能编译好,注意要改下Makefile文件。运行结果如下:源码分析tinyhttpd中主要包含以下

2020-09-10 10:58:42 162

原创 虽然你只是按下了回车,但这中间的事太多

一个经典问题引发的思考:“一个优秀的程序员必须有足够的网络姿势和数据库姿势,来,你说说当你在浏览器中输入“www.expruan.site”后发生了什么?”“面试官,这个域名解析失败,好像什么都没发生?”“连域名都不续费,你先等通知吧”目录一个经典问题DNS解析过程TCP三次挥手报文传输一个经典问题“当我们在浏览器的地址栏中输入网址并按下回车时,直至web页面显示时,这中间发生了什么?”这是一个经典的问题,无非就是:1、DNS将域名解析为IP地址并回传给客户端;2、可能需要通过三次握手建立

2020-09-08 10:02:09 147

原创 索引:“其实我是一种数据结构”

“人家真的 不是目录”索引的自白引言索引概述索引的创建索引的删除索引的查询explain查询有无索引show keys查询何种索引索引的原理聚簇索引辅助索引联合索引索引存在的问题引言大家好,我是索引,在MySQL中你可以使用CREATE INDEX indexName ON table_name (column_name)或alter table table_name add index(column_name)来创造我!在这里我主要澄清一下,我不是目录,你可以认为我是一种排序的数据结构,实在不行你就

2020-09-07 21:51:44 960

原创 迷宫求解问题(一)

有障碍物,可以上下左右四个方向走,请问有多少解法?//经典迷宫dfs//第一行N,M,T,N,M表示行和列,T为障碍物总数;第二行起点坐标SX,SY,终点坐标FX,FY//接下来T行每行为障碍物点的坐标//请问有多少种从起点到终点的方案?#include<iostream>using namespace std; //0 :边界以外//1:可以移动的区域//2:障碍物int board[10][10];//迷宫int vis[10][10];//标记int T,sx,sy

2020-09-07 08:12:19 263

原创 关于事务的小小理解

目录什么是事务事务的实现一个事务的实现过程什么是事务事务是数据库区别于文件系统的重要特征之一。它是由若干条SQL语句组成的。在事务中的操作,要么都做,要么都不做,是一个不可分割的单元。事务必须同时满足:原子性(Atomicity):事务的所有操作,要么都做,要么都不做,不会结束在中间某个环节。隔离性(Isolation):多个事务同时访问数据库中同一数据时,所表现出来的相互关系。持久性(Durability):事务完成后,事务所做的修改进行持久化保存,不会丢失。一致性(Consistency)

2020-09-06 15:21:48 183

原创 怎么让类只能在堆上生成实例

今天遇到一个很有意思的面试题:面试官:“怎么让类只能在堆上生成实例?”我:“把析构函数设为私有”原因如下:编译器在为类对象分配栈空间时,会先检查类的析构函数的访问性,其实不光是析构函数,只要是非静态的函数,编译器都会进行检查。如果类的析构函数是私有的,则编译器不会在栈空间上为类对象分配内存。当然,之后必须提供一个public的函数删除对象。class test{private: ~test(){ cout << "test destroy" << endl; }

2020-09-06 15:20:37 191 2

原创 session和cookie那些事儿

昨晚做完b站的笔试,不得不说一句,“bilibili,年轻人秋招笔试信心加油站!”。中间遇到一道关于session和cookie的问题,发现自己在这点上有知识点遗漏,所以借着博客总结一下吧。session和cookie出现的原因因为由于http是无状态,在服务器响应完毕以后,服务端和客户端的连接就断开了,这个过程称为一次会话结束,但有些场景,比如要进行登录记住密码或者多长时间免登录之类的,这时就要用的session和cookie;就是为了让服务器认识你是谁。cookie和session的工作原理co

2020-09-05 09:35:55 207 1

原创 关于NULL和nullptr

首先要明白一点:C语言中,NULL是指针,即#define NULL ((void *)0);C++中NULL是0C由于C中的NULL是void*类型的指针,所以有以下代码:int *i = NULL;foo_t *f = NULL;void* 指针赋值给int *和foo_t *的指针的时候,隐式转换成相应的类型。而如果换做一个C++编译器来编译的话是要出错的,因为C++是强类型的,void *是不能隐式转换成其他指针类型的,所以通常情况下,编译器提供的头文件会这样定义NULL:#ifd

2020-09-02 11:10:05 220

原创 实时三维重建笔记

我胡汉三维重建又干回本行了目录由KinectFusion谈起实时三维重建与SLAMKinectFusion算法流程浅谈实时重建中的ICP算法何为ICP实时重建中的ICP算法的GPU实现相机位姿估计点云与全局模型的融合光线投影算法由KinectFusion谈起KinectFusion首次实现了基于RGB-D实时三维重建,该算法的流程是将获取的深度图像转化为点云,然后从模型投影获得到深度图像配准,求解位姿,根据相机位姿将点云数据融合到场景的三维模型中,最后使用光线投影算法求解当前视角下所看到的场景。具体实

2020-08-30 22:38:58 500

原创 随笔<科幻小说>

一小片与编程无关与想象力有关的地儿~还有半个小时就十一点了,13公寓要关门的点。匆匆忙忙的研究生两年我似乎每天都是这么过来的,两年的时间,最长陪伴我的除了手边的测量仪和论文就是各式各样的科幻书。我庆幸自己还喜欢这些东西。有些问题看似无聊,实则不然。它们是一种提示,提示我仔细审视所处的世界。如果冰从水底开始形成,河里的鱼怎样过冬?我会丢弃对这个世界的想象力吗?我会丢弃自己的好奇心吗?好在有另外一些人存在,他们不止于提出对这个世界的各种假设——那些“与现实世界无关”的问题,还试图以文学家的的身份尝试

2020-08-29 22:47:28 240

原创 关于同名隐藏的一些思考

关于同名隐藏的一些思考,不一定对。《高质量C/C++编程指南》中有提到同名隐藏即子类子类中的同名函数屏蔽了父类的同名基类方法,其规则如下:如果子类的函数名与基类的函数名同名,但是参数不同,此时,无论有无virtual修饰,基类函数都将被“隐藏”。(依旧被继承).如果子类的函数名与其参数都与父类相同,但是父类没有virtual修饰,此时基类函数被隐藏思考:为什么会发生同名隐藏?个人思考,觉得这应该是调用顺序的问题。C++中,遇到一个函数调用,需要根据名字来确定调用的是哪一个函数,这

2020-08-29 11:02:29 244

原创 哈希的故事(三)

关于哈希的思考哈希函数的设计哈希函数的设计哈希函数可以快速定位被查找元素的位置,这在海量数据的查找中至关重要,理想的搜索方法是不经过比较直接定位元素的地址,但如(一)中所说,哈希冲突是无法避免的,如何设计哈希函数区避免哈希冲突的产生?哈希函数的设计原则应当是:1、哈希函数的定义必须包括所要存储的元素的所有关键码,如果哈希散列表允许m个元素,则表的值域必须在0~m-1之间2、哈希函数计算出的地址应当尽可能的均匀分布在空间中3、哈希函数不应带来更大的复杂度,即函数设计简单对于哈希函数来说,需要

2020-08-28 19:55:13 241

原创 哈希的故事(二)

哈希的故事常用的哈希方法实现常用的哈希方法实现插入 删除 求大小 清空 查找//hashtable#include<iostream>#include<vector>#include<memory>#include<cstring>using namespace std;template<class Type>class HashNode{ //friend class HashTable<Type,_N>;

2020-08-28 11:39:55 144

原创 钻石继承(笔记整理)

钻石继承(菱形继承)是多继承的特殊形式。钻石继承通常会有二义性,例如:class A{ public: int m_a=0;};class B:public A{ public: int m_b=1;};class C:public A{ public: int m_c=2;};class D:public B,public C{ public: int m_d=3;};int main(){ D d; d.m_d=40;//正确 d.m_c=20;//正确 /

2020-08-05 19:41:30 1429

原创 博弈论游戏(一)

取石子问题1、巴什博弈一堆石子,有n个,两个人轮流取,每次至少取1个,至多取m个,拿走最后一个石子的人获胜假设一堆石子有 n=m+1 由于一次只能取m个,无论先手取多少个,后手总能拿走剩余的,这时一定是先手负于是找到取胜规则:一对石子 n=(m+1)*r+s对于先手应该先取走s个,设后手取走k个,先手再取走 m+1-k 剩余的石子个数为 (m+1)(r-1) 以后保持...

2020-08-05 19:40:30 13686

原创 适配器&deque

什么是适配器适配器是一种设计模式,该种模式是将一个类的接口转换成客户期待的另一个接口。(对,就像电源适配器那样->->)需要注意的是,在STL标准库中,stack和queue虽然也可以保存数据,但其并不是STL容器,而是容器适配器,这是因为stack和队列只是对其他容器的接口进行了包装,STL中stack和queue默认使用deque:deque的原理...

2020-07-08 17:28:11 140

原创 优先级队列的简单实现

自动调整namespace my{ template<class T,class Cont=vector<T>,class Comper=less<T>>//提供类型、容器、比较方法(默认大堆) class priority_queue{ public: priority_queue():c(){ } template<class InputIterator> priority_queue(InputIterator

2020-07-07 20:50:29 161

原创 仿函数(一)

引入:int main(){ plus<int> pl; //仿函数+ minus<int> mu;//仿函数- cout<<pl(10,20)<<endl; cout<<mu(100,30)<<endl; return 0;}仿函数从使用方法来看像是一个函数,但其实际是一个对象。仿函数的实现核心在于对括号的重载。例:using namespace std;//仿函数 使用方法像函数 但实际是对象也叫函数对象 其

2020-07-07 16:19:18 216

原创 STL:链表和迭代器

#include <iostream>#include <cstring>#include <typeinfo>#include <stdlib.h>#include <assert.h>//#include <list>//#include <stack>#include <iterator>//迭代器//空间配置器using namespace std;//链表实现namespace

2020-06-17 17:22:18 199

原创 构造函数和析构函数

构造函数在创建C++对象实例化后,其内部数据是随机值,对于C而言,通常采用初始化函数进行初始化,而在C++中,可以认为初始化工作交给了构造函数完成。关于构造函数必须要了解的有:构造函数的函数名必须和class类名一样,可以带形参也可以不带,但不能有返回值,如同人一生只能出生一次,对于一个实例而言,一生只能构造一次 。构造函数可以重载 ,即构造函数的参数可以不一样 。创建对象时根据传递的实参来判断调用哪一个构造函数。但是如果构造函数参数中有默认值,那么将无法确定哪个函数作为初始化,不能重载。

2020-05-28 11:28:14 175

原创 变量的生命周期&作用域&存储

二者的概念生命周期:变量的创建到变量的销毁之间的一个时间段,或者说一个变量存在的周期。作用域:一个变量可以被引用的范围。通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。要理解C语言中各种变量的作用域和生命周期,必须结合C语言的内存管理。详情见链接: https://blog.csdn.net/u011616739/article...

2020-03-14 22:04:52 291

原创 writeup:2019 ISCC Aesop_secret

下载附件后打开是一个.gif文件,第一反应是分帧、拼图。分帧工具:https://tu.sioe.cn/gj/fenjie/Notepad顺手打开后发现这么一串字符串 :U2FsdGVkX19QwGkcgD0fTjZxgijRzQOGbCWALh4sRDec2w6xsY/ux53Vuj/AMZBDJ87qyZL5kAf1fmAH4Oe13Iu435bfRBuZgHpnRjTBn5+xsD...

2020-03-11 23:26:17 422

空空如也

空空如也

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

TA关注的人

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