- 博客(110)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 有价值资料索引
一、语言1. C++2. lua2.1tolua++ 参考手册中文版https://blog.csdn.net/zgl390963305/article/details/799488793. python3.1 一堆python面试题https://blog.csdn.net/weixin_41666747/article/details/799428473.2...
2019-07-25 11:30:29
187
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Lyndon的知识目录
一、语言 1. C++1.1 常见错误https://blog.csdn.net/san_77227487/article/details/888652421.2string类函数实现https://blog.csdn.net/san_77227487/article/details/888659911.3常见基本类型的字节大小https://blog.csd...
2018-11-15 17:18:53
653
原创 GO语言 服务发现概述
作为一个服务发现服务,不仅要保存服务的访问方式(ip+port),还需要有服务监听的功能,隔一段时间去监听你的服务是否正常。在传统的系统部署中,服务运行在一个固定的已知的 IP 和端口上,如果一个服务需要调用另外一个服务,可以通过地址直接调用。一个服务需要改动时,不应该让其他服务做相应改动,服务的键值存储 需要是全局性的。所以,服务发现 就是只通过服务的名字就能够使用服务,并且支持服务所在地址是动态变化的。服务注册中心是服务发现的核心,保存了各个可用服务实例的网络地址(IP和端口)。
2024-06-05 01:18:19
753
1
原创 MongoDB 分布式 概述
MongoDB 的分片集群,数据会被均匀的分布在不同的 shard 中,对于每一个 shard 中的数据,是存储在一个个的 chunk 中的,每个 chunk 代表 shard 中的一部分数据。MongoDB 中分片键划分数会根据数据范围,将不同范围内的数据划分到不同的分片中,同一个范围内的数据就能够分布在同一个分片中了。集合必须有一个以分片键开头的索引,如果集合本身没有对应的索引,在指定分片的时候会创建对应的索引。2、Sharding 分片模式:将不同的数据分配在不同的机器中,也就是数据的横向扩展。
2024-06-04 08:42:12
372
原创 怎么做 Redis 容灾
Redis容灾通常指的是数据备份和恢复机制,以确保在发生故障时可以尽快恢复服务。4. 哨兵模式(Sentinel):监控主Redis服务器,当主服务器发生故障时,自动将一个从服务器升级为新的主服务器。3. 主从复制:设置一个主Redis实例和一个或多个从Redis实例,数据会自动被复制到从实例。5. 集群模式(Cluster):创建一个Redis服务器网络,数据会在多个节点间分布。2. 使用AOF日志:记录每个写操作,重启Redis时通过回放这些操作来恢复数据。
2024-06-03 23:33:12
308
原创 Go语言 几种常见的IO模型用法 和 netpoll与原生GoNet对比
当有客户端消息到达,主线程完成io读操作后,将后续逻辑业务放入线程池的一个线程中执行,主线程继续监控IO请求。一个进程/线程处理多个I/O,内核同时监视多个文件描述符,一旦某个描述符就绪,通知程序进行相应的读写操作;用户调用如accept、read等系统调用,向内核发起I/O请求后,应用程序会从用户态陷入内核态。当fd中数据就绪后,操作系统内核会将数据从内核空间拷贝到进程空间,并交回控制权。多个请求是依次执行的,fd1的请求完成了,才去处理fd2的请求。每accept到一个客户端后,都启动一个新的线程。
2024-06-03 21:36:32
897
原创 Go语言 一些问题了解
而组合表示的是对象之间的包含关系。组合模式需要承担的职责更低,比如省去了构造和析构的继承逻辑。开发者使用阻塞式的方式来编写程序,然后通过goroutine和channel来处理并发,每个channel对应一个io操作。Go语言中的网络IO模型,主要采用IO多路复用的方式,通过 goroutine 和。1. 代码更优雅:对象的层次结构能够保持简洁,易于理解对象是负责哪个单一任务。3. 使用更灵活:嵌入的对象,可以在运行的时候被改变,被替换成同类型对象。Go语言中,网络IO的操作被封装在netpoll中。
2024-06-03 12:52:56
405
原创 运维相关知识
(2) I/O饱和度:随着IO的增加而超过所能处理的程度叫做饱和度。(4) 吞吐量:每秒的 I/O 请求大小(),单位为bps(比特每秒)(5) 响应时间: I/O 请求从发出到收到响应的间隔时间。(1) I/O使用率:磁盘处理 I/O 的。(3) IOPS:每秒的 I/O 请求数。iostat 命令可以查得。(6) 磁盘剩余空间。
2024-06-01 19:09:21
248
原创 GO语言 linux部署
3. 跨平台支持:开发机器上编译生成 Linux 下运行的可执行文件,然后拷贝到 生产服上直接运行,无需关心服务器上是否安装了 Go 语言环境。2. 内置运行时环境:可执行文件中内置了运行时环境,包括垃圾回收、调度器等,因此可以独立运行,不需要额外的运行时支持。4. 静态链接:编译器会将程序的所有依赖包括在最终的可执行文件中,生成的可执行文件不需要依赖外部的动态链接库。1. 可以直接在服务器上运行编译好的二进制文件,不需要在服务器上下载语言环境。
2024-05-28 12:02:20
191
原创 Go语言垃圾回收机制原理
垃圾回收是一种自动内存管理技术:通过检测程序中不再使用的内存,并释放这些内存供其他对象使用,从而实现对内存的自动管理。在Go语言中,垃圾回收器通过标记-清除(Mark-Sweep)算法来实现对内存的管理。Go语言的垃圾回收机制是一种高效且可靠的内存管理方案。通过采用标记-清除算法以及一系列性能优化策略,垃圾回收器能够自动管理内存,避免内存泄漏和内存溢出等问题。同时,Go语言的垃圾回收器还针对并发编程进行了优化,以减少对并发执行的影响。
2024-05-25 15:50:46
461
原创 MongoDB 和 MySQL 的对比
MongoDB是一个基于分布式文件存储的数据库,可以方便地扩展到大量的数据和高并发。MongoDB使用的是面向文档的查询语言,可以对JSON格式的数据进行查询。MongoDB 是动态模式, 同一个集合里的文档不需要有相同的字段和结构。MongoDB 是文档型数据库,存储的是文档型数据(JSON格式)。MySQL 是关系型数据库,存储的是结构化的表格数据。MySQL更适合结构化数据和需要事务支持的场景。MySQL 虽然也可以扩展,但需要更多的工作。MySQL可以对表中的列建立索引。MySQL延迟相对较高。
2024-05-24 17:59:26
334
原创 GO语言 gin框架 简述
gin 框架中采用的路由库是基于httprouter做的,是第三方HTTP路由包,特点高性能、可扩展(1) 使用方式:New()函数生成了一个 Router对象。GET()方法 或 POST()方法 注册一个适配路径的响应函数将 Router对象 作为参数传给 ListenAndServe()函数 启动HTTP服务。(2)httprouter为常用的HTTP方法提供快捷使用方式:获取: func (r *Router) GET(path string, handle Handle)
2024-05-22 16:03:19
447
原创 简述一下Kafka是什么
生产者将消费发布到 消息中心,消息中心把消息以 话题(topic) 的方式划分到多个分区里(实现分布式),消费者对话题进行订阅。4. 消息中心是以消息的key 为基础,求hash值,负载均衡选择分区。6. 总之,Kafka的工作原理是将消息存储在分区中,同时支持多个消费者组订阅同一个topic,以实现高吞吐量的消息传递。5. 消息消费者从消息中心,根据自己的订阅topic,并获取分配到的分区,然后从分区中拉取消息进行消费。3. Kafka分为三部分,消息生产者,消息中心,消息消费者。
2024-05-17 14:36:54
193
原创 c++ const 的多种用途
常成员函数,不能修改对象的成员变量,也不能调用类中任何非 const 成员函数。该对象为常量对象,其中的任何成员都不能被修改,不能调用其他非const成员函数。const 在 * 左边。指针指向的值不可变,即 *p 不可修改。const 在 * 右边。指针本身不可变,即 p 不可修改。参数在函数内部不可改变。
2024-05-17 11:10:00
208
原创 C++与Go语言的性能对比分析
Go:动态编译,不将所有依赖项包含在可执行文件中,库文件是在运行时加载的。启动速度比较慢,编译速度相对快,生成文件比较小。C++:静态编译,把更多的库文件链接在一起,形成一个单独的可执行文件。启动速度比较快,编译速度相对慢,生成文件比较大。使用系统级线程,由操作系统调度,灵活性低,性能效率低。使用用户级线程,由Go语言内部调度,灵活性高,性能效率高。C++:面向对象方面有更强的抽象性和扩展性,支持泛型编程、模板元编程等高级特性,编程能力更灵活。Go:自动内存管理机制,避免内存问题,降低难度。
2024-05-15 23:19:02
413
原创 GO语言核心30讲 实战与应用 (io包,bufio包,os包,网络服务,http,性能分析)
原站地址:Go语言核心36讲_Golang_Go语言-极客时间
2024-05-11 19:32:38
389
原创 GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)
(2) 对done字段的赋值1 是在 Once内部用defer语句的方式进行的,不是交给用户操作,所以无论是逻辑错误还是panic都必然赋值1,不能再执行。(1) Do方法只会在参数函数执行结束之后,才把done字段的值变为1。所以,有多个只需要执行一次的函数,就应该为它们每一个都分配各自的Once值。(3) Done方法:对计数器的值进行减1操作。(1) 计数器的值不能小于0.虽然是开箱即用,但是必须且尽早地增加其计数器的值。(2) 它的Do方法只接受一个函数参数,且必须是无参数声明和结果声明的函数。
2024-05-07 18:34:30
471
原创 GO语言核心30讲 实战与应用 (基本规则,测试手法,Mutex,条件变量,原子操作)
原站地址:Go语言核心36讲_Golang_Go语言-极客时间
2024-05-05 05:40:32
1249
4
原创 GO语言核心30讲 进阶技术 (接口,指针,go语句,if for switch语句,错误处理,panic recover)
7. 用 值为nil的接口变量 给 其他接口变量 赋值时,结果仍然是带类型的nil。两者的方法集合是不等价的,指针类型的方法集合 包含了值类型的所有方法集合,但反过来就不是了。6. 接口变量被赋予动态值的时候,存储的是包含了这个动态值的副本的一个结构更加复杂的值。这里 pet 的值就是带类型的nil (Go 会用一个叫iface的实例包装它)它包含两个指针,一个是指向类型信息的指针,另一个是指向动态值的指针。实现了一个接口所有的办法,但不代表它的值类型实现了这个接口。操作之后,也是以副本的方式进行赋值。
2024-04-30 15:08:57
923
4
原创 GO语言核心30讲 进阶技术 (数组切片,list ring,字典,通道,函数,结构体)
只要传递的是引用类型的,就是“传引用”。如果传递的是值类型的,就是“传值”。切片属于引用类型,数组属于值类型。2. 可以把切片看成是对数组的一层封装,因为每个切片的底层数据结构中,一定会包含一个数组。切片也可以被看作是对底层数组的某个连续片段的引用(窗口)。cap(s2) = 8-3,即 底层数组长度 减去 起始索引 , 从起始索引位置向右扩展到最末端。例子: s1是切片,底层数组是8个元素。s2 := s1[3:6]1. 两者最大的不同:数组的长度是固定的,而切片的长度是可变的。
2024-04-28 23:24:05
781
原创 GO语言核心30讲 基础知识
代码重构时更方便,只要修改一处定义数据类型的代码,其他位置的数据类型都会自动推断。(2) 内层和外层的变量是两个独立的变量,所以可以数据类型不同。短变量声明 name := "abc" 只能在函数体内部使用。(1) 可以编译通过,内层代码块中,会使用内层的变量,屏蔽掉外层的。(3) 声明并赋值的变量必须有多个,并且至少要有一个是新的变量。(3) 代码运行是,查找变量的顺序是,从内部往外部。5. 具有嵌套关系的不同代码块间,存在重名的变量。(1) 再次声明时的数据类型不能改变。(2) 需要使用短变量声明。
2024-04-25 13:33:42
392
原创 一些网络的常见问题
系统读数据的时候知道上层是什么报文,可以直接交给内核进程或协议栈处理。IP数据包首部有个叫协议字段,指出了上层协议是TCP还是UDP。
2024-04-22 11:37:31
238
原创 Java 高级教程
1. 数据结构Java2中引入了一种新的框架-集合框架(Collection)2. 集合接口(1) 用得最多的是list接口和set接口。(2) List 接口存储的是有序的,可以重复的元素。Set 接口存储的是无序的,不重复的数据。(3) List接口检索效率高,插入和删除效率低。Set接口检索效率低,插入和删除效率高。(4)Map.Entry: 描述Map中的一个元素(键/值对)。3. 集合实现类(1) ArrayList: 实现了List的接口, 随机访问和..
2022-04-05 16:38:55
1628
原创 Java 基本知识点备忘
1.一个源文件中只能有一个 public 类,但可以有多个非 public 类2.源文件的名称应该和 public 类的类名保持一致3.package 语句 在最前面,然后是import 语句
2021-07-30 14:37:21
136
原创 php 读写 excel文件的 PhpSpreadsheet 库 安装
1. 安装libzipwget https://libzip.org/download/libzip-1.5.2.tar.gztar -zxf libzip-1.5.2.tar.gzcd libzip-1.5.2mkdir buildcd buildapt-get install cmakecmake .. (#注意:cmake后面有两个小数点)make -j4make testmake install2. 安装 zipwget http:...
2020-08-05 17:21:00
602
原创 安装nginx
yum install nginxgroupadd wwwuseradd -m www -g www -s /bin/bash -d /home/www
2019-10-30 16:06:18
115
原创 安装php-redis
wget https://pecl.php.net/get/redis-2.2.4.tgz/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmake && make install在php.ini中添加Redis扩展 首先配置extensio...
2019-10-30 15:32:53
141
原创 debian安装php-5.6.18
根据网上资料,发现debian9.9自带的这个openssl版本,php5.6不支持。所以手动安装1.0.2的opensslhttps://www.openssl.org/source/openssl-1.0.2k.tar.gz解压后进入文件夹./configmakemake installmv /usr/local/bin/openssl /usr/local/bin/openssl...
2019-10-30 13:59:55
767
原创 centos安装php-5.6.18
1、从PHP官网下载最新的PHP源代码wget http://museum.php.net/php5/php-5.6.18.tar.gz2、使用tar命令进行解压,添加www用户和组tar zxvf php-5.6.18.tar.gzcd php-5.6.18groupadd wwwuseradd -c php-fpm-user -g www -M php-fpmyum ...
2019-10-30 13:49:13
358
原创 Go语言备忘
1. “{”不能单独放在一行2. 同一个文件夹下的文件只能有一个包名,否则编译报错3. 一个语句不需要以 ';' 结尾,但如果想把多个语句写在同一行,就需要以“;”结尾4. 字符串连接用 “+”5.使用 := 赋值操作符,只能被用在函数体内,而不可以用于全局变量的声明与赋值6.如果你想要交换两个变量的值,则可以简单地使用a, b = b, a,两个变量的类型必须是...
2019-10-06 17:19:17
193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人