centos7安装kubernets集群 一定确保全部Running状态,再安装网络插件!多等一会,我们发现,所有的pod都是Running状态了。任意一个节点的ip:30306 即可进入nginx初始页面。注释 /dev/mapper/rhel-swap这一行。我们发现coredns没有启动,需要安装网络插件。上面命令在各个node上执行,将节点加入集群。准备三台虚拟机,centos7系统。
IOS中通过快捷捷径打开场所码或者健康码 本文标题其实应该叫“使用快捷捷径打开任意微信小程序页面”,因为本质上这篇文章就是说明如何在获取微信小程序任意界面的页面路径,以及通过Universal link在微信中打开对应页面的方法(本文使用“跨时空”APP来达到此目的)。其实此方法来源于微信公众号发表文章时,需要在文章中打开指定小程序页面的功能,本意上是增加小程序的使用场景,没想到给了我们可乘之机😁。,点击上方的“小程序”,然后在弹出窗中输入对应小程序的全称或AppId(此处以。后,在新的弹窗中输入自己的微信号,点击开启;里面),点击下一步;
Go语言面试题合集(2022) 强三色不变式:不存在黑色对象引用白色对象的情况了, 因为白色会强制变成灰色。当全部三色标记扫描之后,栈上有可能依然存在白色对象被引用的情况,所以要对栈重新进行三色标记扫描, 但这次为了对象不丢失, 要对本次标记扫描启动STW暂停. 直到栈空间的三色标记结束。如果有个goroutine一直占用资源,那么GMP模型会从正常模式转变为饥饿模式(类似于mutex),允许其它goroutine使用work stealing抢占(禁用自旋锁)。
Go语言类库-reflect(反射) 反射是计算机程序在运行时可以访问,检查和修改本身状态或者行为的一种能力,大多数编程语言都支持反射。Go语言中,使用反射可以在程序执行过程中更新变量和检查对象的属性,调用对象的方法。reflect.TypeOf 返回reflect.type接口类型的变量(其实包内部得到的是一个rtype的结构体指针,在返回是转为了type接口变量),通过调用type接口的方法,能获取类型相关的信息;
解决jetbrain(datagrip,goland)系列工具闪退问题 我默默地读着这句话,隐隐约约仿佛猜测应该是破解安装包的问题,我找到goland的bin文件,在iTerm上执行,果然报错了,弹出了说GOLAND_VM_OPTIONS="xxx"的目录找不到,这下就明白了。由于笔者mac电脑上goland好久未更新了,今日得闲,卸载了旧的goland,从jetbrain官方下载goland 2022最新版本的,安装–>打开–>GG。这里就会有一些关于jetbrain的变量(我这里清除了,所以看不到),太多了,手动清除太麻烦了,接下来需要找到设置这些环境变量的文件。
同步异步,阻塞非阻塞和IO模型 各个IO Model的比较如图所示:通过上面的图片,可以发现non-blocking IO和asynchronous IO的区别还是很明显的。在non-blocking IO中,虽然进程大部分时间都不会被block,但是它仍然要求进程去主动的check,并且当数据准备完成以后,也需要进程主动的再次调用recvfrom来将数据拷贝到用户内存。而asynchronous IO则完全不同。它就像是用户进程将整个IO操作交给了他人(kernel)完成,然后他人做完后发信号通知。
Elasticsearch面试问题汇总 Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。全文检索是指对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当查询时,根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
Redis常见面试题(2022) Redis 是一个开源(BSD 许可)、基于内存、支持多种数据结构的存储系统,可以作为数据库、缓存和消息中间件。它支持的数据结构有字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,除此之外还支持 bitmaps、hyperloglogs 和地理空间( geospatial )索引半径查询等功能。
读《高性能MySQL》笔记---数据库结构设计 MySQL将DECIMAL数字打包保存到一个二进制字符串中(没4个字节存9个数字),所以decimal(18,9),说明该小数一个18个数字,小数点后9个数字,该数值一共占4+4+1(小数点占一个字节)=9个字节,decimal最多允许65个数字,在计算时会转化为DOUBLE计算。枚举列可以把一些不重复的字符串存储成一个预定义的集合,在mysql的内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存“数字-字符串”映射关系的“查找表”。表结构的列不能过多,一般限制在32个左右。
读《高性能MySQL》笔记---MySQL架构 默认情况下,每个客户端连接都会在服务器进程中拥有一个线程,该连接的查询只会在这个单独的线程中执行,该线程驻留在一个内核或者CPU上核心或者CPU中运行。服务器会负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程。MySQL提供了一个API,支持线程池,可以使用池中少量的线程来服务大量的连接。资源上的读锁是共享的,或者说是相互不阻塞的,多个客户端可以同时读取同一个资源而互不干扰。写锁则是排他的,一个写锁既会阻塞读锁也会阻塞其他的写锁,这是出于安全策略的考虑,只有这样才能确保在特定的时间点只有一个客户端
Go语言类库-sync 通道并不是Go支持的唯一的一种并发同步技术。而且对于一些特定的情形,通道并不是最有效和可读性最高的同步技术。本文下面将介绍sync标准库包中提供的各种并发同步技术。相对于通道,这些技术对于某些情形更加适用。sync标准库包提供了一些用于实现并发同步的类型。这些类型适用于各种不同的内存顺序需求。对于这些特定的需求,这些类型使用起来比通道效率更高,代码实现更简洁。
Go语言类库-context context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。是一种并发安全在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等的类型。
Go语言类库-errors 题外话:PathError结构体有error字段,说明这个结构体的Err属性是实现了error接口的类型的对象,于是就会有error接口的方法,所有PathError的对象也会有error接口的方法,也就是说PathError实现了error接口。这里New方法实际上是返回的是一个实现了error接口的类型的变量,这里是errorString结构体变量。能知道错误发生了,但是无法看到他内部到底是什么,不知道具体类型是什么。这样做的不好的地方是自定义的错误和使用错误的包之间形成了依赖关系,代码不够优雅。
defer函数的实践和原理 编译器会把 go 代码中 defer 语句翻译成对 deferproc 函数的调用;deferproc 函数通过 newdefer 函数分配一个 _defer 结构体对象并放入当前 goroutine 的 _defer 链表的表头;在 _defer 结构体对象中保存被延迟执行的函数 fn 的地址以及 fn 所需的参数;返回到调用 deferproc 的函数继续执行后面的代码。func x() {
Go语言数据结构-图 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V, E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。线性表和树可以看做特殊的图。线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex)线性表可以没有元素,称为空表;树中可以没有节点,称为空树;但是,在图中不允许没有顶点(有穷非空性)线性表中的各元素是线性关系,树中的各元素是层次关系,而图中各顶点的关系是用边来表示(边集可以为空)。