自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Gin框架小结

1 创建并初始化Engine对象。

2024-04-16 14:29:40 929

原创 ElasticSearch总结

在tokenizer之前对文本进行处理。例如删除字符、替换字符**tokenizer:**将文本按照一定的规则切割成词条(term)。例如keyword,就是不分词;还有ik smart**tokenizer filter:**將tokenizer输出的词条做进一步处理。例如大小写转换、同义词处理、拼音处理等我们在创建索引库时,通过settings来配置自定义的 analyzer(分词器)如何使用拼音分词器?下载pinyin分词器解压并放到elasticsearch的plugin目录。

2023-08-27 17:47:23 1688

原创 Docker

参数如表格所示。

2023-08-03 20:10:33 1105

原创 K8s总结

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的机制。前身为 谷歌的kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化。

2023-08-02 01:02:11 417

原创 kafka总结

如果应用只关心 key对应的最新 value值,则可以开启 Kafka相应的日志清理功能,Kafka会定期将相同 key的消息进行合并,只保留最新的 value值。

2023-08-01 21:42:54 1096

原创 常见问题整理

sync.Map思想:就是用两个数据结构(只读的 read 和可写的 dirty)尽量将读写操作分开,来减少锁对性能的影响。消息持久化 :redis是内存数据库,虽然有aof和rdb两种机制进行持久化,但这只是辅助手段,这两种手段都是不可靠的。三次握手才可以阻止重复历史连接的初始化 (客户端收到后可以根据自身的上下文,判断这是一个历史连接)如果对某个list的并发读写非常高,就产生了无法解决的热key。四次挥手:被动方 回复ACK后,要处理现有的请求完成后,才能发第三次挥手 FIN。Block阻塞分析,

2023-06-16 02:44:00 109

原创 网络知识小结

网络知识随手记

2023-03-07 02:15:24 169

原创 操作系统相关小结

操作系统随手记

2023-03-06 00:55:01 145

原创 常见限流算法

限流算法我们会努力提升API的吞吐量和QPS(Query Per Second 每秒查询量),但总归有上限.为了应对巨大流量的瞬间提交,我们会做对应的限流处理.计数器计数器就是统计记录单位时间内进入系统或者某一接口的请求次数,在限定的次数内的请求则正常接收处理,超过次数的请求则拒绝掉,或者改为异步处理。滑动时间窗口这个名称要跟TCP的窗口滑动区分开来,但是理解之后会发现其实也是有点相似。计数器算法对流量的限制比较粗放,而滑动时间窗口的算法则是对流量进行更加平稳的控制。上面的计数器的单位时间是1分

2021-09-17 01:03:22 100

原创 线程同步的几种方式

1.互斥锁保护了一个临界区,在这个临界区中,一次最多只能进入一个线程。如果有多个进程在同一个临界区内活动,就有可能产生竞态条件(race condition)导致错误,其中包含递归锁和非递归锁,(递归锁:同一个线程可以多次获得该锁,别的线程必须等该线程释放所有次数的锁才可以获得)。2.读写锁从广义的逻辑上讲,也可以认为是一种共享版的互斥锁。可以多个线程同时进行读,但是写操作必须单独进行,不可多写和边读边写。如果对一个临界区大部分是读操作而只有少量的写操作,读写锁在一定程度上能够降低线程互斥产生的代价。

2021-09-07 05:52:31 2513

原创 Redis相关知识

Redis是什么Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis有哪些优缺点?优点读写性能优异, Redis能读的速度是110000次/s,写的速度

2021-08-31 02:43:08 263

原创 Golang随手记

1、slice和数组的区别(1)go是有数组的,只是平时用切片比较多。数组大小一旦创建就不能改变,数组长度大于元素个数的时候会用0补位,这跟其他语言是相通的。(2)切片slice可以看作是对数组的一切操作,它是一个引用数据类型,其数据结构包括底层数组的地址,以及元素可操作长度len或可扩容长度cap。(3)要想突破slice的扩容cap限制进行无限扩容就需要使用append()函数进行操作。如果append追加的元素后slice的总长度不超过底层数组的总长度,那么slice引用的地址不会发生改变,反之

2021-08-26 02:45:31 502

原创 MongoDB相关知识

NoSQL什么是NoSQL?NoSQL指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需

2021-08-21 00:05:04 101

原创 MySQL知识汇总

mysql知识

2021-08-18 21:30:18 167

原创 Linux:僵死进程

一、何为僵死进程?一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁, 而是留下一个称为僵死进程的数据结构(系统调用exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵死进程,并不能将其完全销毁)。在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等,但是仍然为其保留一定的信息(包括进程号进程PID,退出状态,运行时间等), 直到...

2019-09-09 18:11:50 136

原创 C/C++:#define宏函数和inline内联函数

1,宏函数宏函数的作用:1)、避免函数调用,提高程序效率常用的就是最大值与最小值的判断函数,由于函数内容并不多,如果定义为函数在调用比较频繁的场合会明显降低程序的效率,其实宏是用空间效率换取了时间效率。如取两个值的最大值:#define MAX(a,b) ((a)<(b) ? (b) : (a))使用宏函数的优点有两个:(1)适用于任何实现了operator<的类型,包括自...

2019-09-09 17:21:41 321

原创 C/C++:#define与const区别

一:区别(1)就起作用的阶段而言: #define是在编译的预处理阶段起作用,而const是在 编译、运行的时候起作用。(2)就起作用的方式而言: #define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。(3)就存储方式而言:#define只是进行展开,有多少地方使用,就替换多少次,它定义的宏常量在内存中有若干个备份;const...

2019-09-09 16:53:07 143

原创 Linux下的五种I/O模型

一、关于I/O模型的引出我们都知道,为了OS的安全性等的考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer。如下图所示:整个请求过程为: 用户进程发起请求,内核接受到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。在整个请...

2019-08-28 22:34:09 136

原创 操作系统:并行和并发

并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个CPU上运行。并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应用程序同时在进行。如:打游戏和听音乐两件事情在同一个时间段内都...

2019-08-28 22:19:59 1026

原创 struct结构体内存对齐相关知识

内存对齐的意义结构体中成员按照定义时的顺序依次存储在连续的内存空间。但并不是像数组那样的连续。内存对齐计算内存地址比较方便,内存地址会非常有规律,减小了内存寻址时间。若不对齐,内存地址的变化非常没有规律。cpu把内存当成是一块一块的。块的大小可以是2,4,8,16 个字节,因此CPU在读取内存的时候是一块一块进行读取的,块的大小称为(memory granularity)内存读取粒度。我们...

2019-08-26 00:39:55 294

原创 sizeof和strlen

strlenstrlen()是函数,用于计算字符串数组的实际长度(到‘\0’结束,不包含‘\0’);strlen只能用于计算char *a或char a[]格式的,不能用于计算string类型1 #include<iostream> 2 using namespace std; 3 void main() 4 { 5 char a[10]; //未初始化,长度不确定 ...

2019-08-23 17:42:14 225

原创 C语言MYSQL api归纳

mysql_affected_rows()上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。mysql_autocommit()切换 autocommit模式,ON/OFFmysql_change_user()更改打开连接上的用户和数据库。mysql_charset_name()返回用于连接的默认字符集的名称。mysql_close()关闭服务器连接。my...

2019-08-12 17:06:17 109

原创 进程间通信:消息队列

在Linux中,IPC消息队列是一个双向通信的全内存设计,即内核保证了读写顺序和数据同步,并且是性能比较好的先进先出的数据结构。消息队列的应用场景:比如异步任务处理,抢占式的数据分发,顺序缓存区等。消息队列的产生原因消息队列其实就是消息传输过程中保存消息的容器,既然有了管道,为什么要出现消息队列呢?理由如下:(1)生命周期:匿名管道和命名管道都是随进程的,意味着管道的生命周期是随进程的退出而...

2019-08-06 19:14:00 377

原创 进程间通信:共享内存

共享内存的通信原理在Linux中,每个进程都有属于自己的进程控制块(PCB)和地址空间(Addr Space),并且都有一个与之对应的页表,负责将进程的虚拟地址与物理地址进行映射,通过内存管理单元(MMU)进行管理。两个不同的虚拟地址通过页表映射到物理空间的同一区域,它们所指向的这块区域即共享内存。特别提醒:共享内存并未提供同步机制,也就是说,在第一个进程结束对共享内存的写操作之前,并无自动机...

2019-08-06 17:43:33 678

原创 进程相关(linux)

进程概念**狭义定义:**进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程的概念主要有两点:第一,进程是一个实体。每一个进程...

2019-08-06 16:12:20 131

原创 进程间的通信方式:管道

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、等。其中 Socket和Streams支持不同主机上的两个进程IPC。一、管道的概念管道是一种两个进程间进行单向通信的机制。 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传...

2019-08-04 15:33:36 548

原创 操作系统:进程间的同步和互斥

临界资源和临界区临界资源:系统中一次只允许一个进程访问的资源。如I/O设备、共享文件、共享变量等。临界区:并发执行的进程中,访问临界资源的必须互斥执行的代码段叫临界区。在操作系统中,进程是占有资源的最小单位(线程可以访问其所在进程内的所有资源,但线程本身并不占有资源或仅仅占有一点必须资源)。但对于某些资源来说,其在同一时间只能被一个进程所占用。这些一次只能被一个进程所占用的资源就是所谓的临界...

2019-08-03 17:33:17 1165

原创 进程虚拟地址空间

每个程序在被运行起来之后,它将拥有自己独立的虚拟地址空间这个虚拟地址空间的大小由计算机的硬件平台决定,具体是由cpu的位数决定的。比如32位的平台决定了虚拟地址空间位4G。这4G空间的分配如下1 内核空间最上面的1G。内核总是驻留在内存中,是操作系统的一部分。内核空间为内核保留,不允许应用程序读写该区域的内容或直接调用内核代码定义的函数。2 栈(stack)包括以下内容和用途:1 函...

2019-07-30 21:31:02 1562

原创 C/C++ static关键字用法总结

C/C++static关键字用法总结static若修饰以下时:全局变量 外延性 ,加上static后, 作用域仅限于本文档局部变量 存储位置从栈上变成data段的rw段(未初始化时放在bss段),生命周期跟整个进程的周期一样1,类外1static全局变量static int a;这个变量的含义是在该cpp内有效,但是其他的cpp文件不能访问这个变量;如果有两个cpp文件声明了...

2019-07-30 20:49:25 89

原创 Nginx内存池源码分析

Nginx内存池Nginx简介Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和...

2019-05-06 21:09:12 442

原创 排序算法:一

算法算法:解决特定问题的步骤的描述特性:输入:有零个输入或者多个输输出:只有一个或者多个输出有穷型性:算法在执行有限个步骤时,会自动结束而不会陷入无限循环里面确定性:算法的每一步都有确定的含义而不会出现二义性可行性:算法的每一步都可以通过有限次数完成。复杂度算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需...

2018-11-16 22:36:19 96

原创 统计文档中的单词出现的次数

统计文档中的单词出现的次数给定一个.txt文件要去统计出文件长度,文件有多少个单词,每个单词出现的次数,并按照降序输出。思路:定义结构体存放单词和次数读取文件求文件长度判断是否为单词并将单词存入结构体统计每个单词出现次数排序代码如下:#include&lt;stdio.h&gt;#include&lt;assert.h&gt;#include&lt;string.h&gt;...

2018-11-16 22:09:43 1195

原创 C语言相关(六)

结构体在定义一个变量时 次变量拥有诸多 属性 我们需把属性写进去 则不能用普通的定义变量来定义它 如:在写学生管理系统时 学生具有多种属性 性别 年龄等等这时我们就需要结构体了。定义:struct Student{ char name[10]; int age; char sex[5];}st;注意 结构体内的成员 不能对其进行初始化调用成员:void Show(Stud...

2018-11-06 21:23:57 128

原创 C语言相关(五)

递归什么是递归?程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来...

2018-11-06 21:03:53 103

原创 C语言相关(四)

二维数组二维数组的定义int arr[2][2]={{1,2},{3,4}}; 行 列int brr[2][2]={1,2,3,4};int crr[][2]={1,2,3,4,5,6};//列不能省略注意:二维数组的内存是连续的 第二行的0号下标和第一行的最后一个下标在内存中是相连的。二维数组在函数传参时的使用可以直接传一个二维数组void Func(int array[][]...

2018-11-06 20:57:40 97

原创 C语言相关(三)

逆制字符串如:abcdef==&gt;fedcba思路:使用两个指针分别指向第一个字符和最后一个字符 然后交换位置向中间位置移动 最后完成代码如下:void Reverse(char *pbegin,char *pend){ assert(pbegin!=NULL&amp;&amp;pend!=NULL); char tmp=0;//用来交换 临时存放 while(pbegin&l...

2018-10-23 00:28:37 102

原创 C语言相关(二)

C语言入门三数组1 什么是数组数组表示相同类型的数据集合,是聚合类型2、数组存放在哪个位置??方法内3、数组什么时候确定大小?编译时4、什么时候给数组分配内存??程序运行时5、最多分配多大的内存?栈的大小 1M-2M6 定义数组int arr[5] = {1,2,3,4,5}//5为数组长度数组初始化只有一次机会即在定义数组的时候功能函数中传参数若为数组,可使用指...

2018-10-19 21:43:11 123

原创 C语言相关(一)

C语言入门2变量与常量1,变量变量:在运行过程中可以改变的变量名必须以下划线或者字母开头,可以由下划线数字字母组成。作用域:{ }之间。生命周期:程序/函数运行完 变量的内存会由系统自动回收。int a = 10;//a:变量= 左边的叫左值 右边的叫右值。2, 常量常量:在运行过程中不可改变的常量的定义 使用const或#defineconst:修饰的变量叫常变量 关键...

2018-10-12 15:26:46 131

空空如也

空空如也

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

TA关注的人

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