Go杂记
学习Go好久了,知识很多都遗忘了,这篇记录下写kv系统时遇到的Go的问题。全文由我和ChatGPT组成。
Q: Go Modules是什么?
Go Modules 是 Go 语言的官方依赖管理系统,从 Go 1.11 版本开始引入。它允许你明确地管理项目的依赖版本,包括自动添加新的依赖到你的模块和自动升级或降级已有的依赖。
在 Go Modules 中,每个项目都是一个模块,每个模块都有一个 go.mod 文件在其根目录。这个文件描述了模块的名称、Go 的版本以及模块的依赖。
例如,一个 go.mod 文件可能看起来像这样:
12345678module github.com/my/awesomeprojectgo 1.14require ( github.com/some/dependency v1.2.3 github.com/another/dependency v4.5.6)
在这个例子中,github.com/my/awesomeproject 是模块的名称,go 1.14 是使用的 Go 版本,require 部分列出了模块的依赖及其版本。
当你在模块中运行 ...
MySQL 是怎样运行的:从根儿上理解 MySQL读书笔记
这是一本掘金小册,看目录确实更适合面向面试学习,写的不错。
前面三节分别是开篇介绍,介绍MySQL的安装,启动,连接,介绍了下存储引擎,配置文件,启动选项,系统变量,状态变量。这些不是特别重要。
字符集和比较规则
字符集指的是某个字符范围的编码规则。
比较规则是针对某个字符集中的字符比较大小的一种规则。
字符集和比较规则有四级,服务器级别,数据库级别,表级别,列级别。
三个重要的系统变量:
character_set_client:服务器解码请求时使用的字符集
character_set_connection:服务器处理请求时会把请求字符串从character_set_client转为character_set_connection
character_set_results: 服务器向客户端返回数据时使用的字符集
采用这个语句将这三个变量设为同样的值。
1SET NAMES 字符集名;
在Pg中只能指定数据库的编码,可以指定列的排序规则。
MySQL中的utf8和utf8mb4:
utf8mb3:阉割过的utf8字符集,只使用1~3个字节表示字符。
utf8mb4:正宗的 ...
高性能MySQL读书笔记
高性能MySQL读书笔记MySQL架构简要介绍了MySQL服务层和存储引擎层。
并发控制,事务,隔离级别。
快照读:读取的是记录的可见版本 (有可能是历史版本),不用加锁。
普通的查询语句
当前读:读取的是记录的最新版本,并且,当前读返回的记录,都会加上锁,保证其他事务不会再并发修改这条记录。
增删改(x锁)
select * from … for update(x锁)
select * from … lock in share mode
delete/update的具体流程:
当一个Update SQL语句被发送到MySQL服务器时,MySQL服务器会根据where条件找到第一条满足条件的记录。
找到这条记录后,InnoDB引擎会将这条记录返回给MySQL服务器,并对这条记录进行加锁,这种加锁操作被称为”current read”。
MySQL服务器收到这条加锁的记录后,会发起一个Update请求,更新这条记录。
更新完这条记录后,MySQL服务器会继续查找下一条满足条件的记录,然后重复上述过程,直到没有满足条件的记录为止。
因此,一个Update操作内部实际上包 ...
I'm coming!
工作快三年了,现在决定又开始写博客!!!
线性表
什么是线性表?
定义 由同类型数据元素构成有序序列的线性结构.
表中的元素个数为表的长度
没有元素叫空表
起始位置叫表头,结束位置叫表尾
抽象数据类型描述:
数据对象集:线性表是n(>=0)个元素构成的有序序列
操作集:
List MakeEmpty():初始化一个空线性表
ElementType FindKth(int K,List L):根据位序K返回相应的元素
int Find(ElementType X,List L):在线性表L中查找X第一次出现的位置
void Insert(ElementType X,int i,List L):在位序i前插入一个新元素X
void Delete(int i,List L):删除指定位序的元素
int Length(List L):返回线性表L的长度n
实现利用数组的连续存储空间实现12345678typedef struct LNode *List;struct LNode{ ElementType Data[MAXSIZE]; int Last; ...
网络原理(2)
本篇介绍网络的物理层.
版权声明,本文基于王道考研书籍整理,并非原创.
本篇的重要内容:
(一) 通信基础
信道,信号,带宽,码元,波特,速率,信源与信宿等基本概念
奈奎斯特定理与香农定理:编码与调制
电路交换,报文交换与分组交换:数据报与虚电路
(二) 传输介质
双绞线,同轴电缆,光纤与无线传输介质;物理层接口的特性
(三) 物理层设备
中继器,集线器
2.1通信基础2.1.1基本概念1.数据,信号与码元数据是指传送信息的实体.信号则是数据的电气的或电磁的表现,是数据在传输过程中的存在形式.数据和信号都可以用”模拟的”或”数字的”来修饰:①连续变化的数据(或信号)称为模拟数据(或模拟信号);②取值仅允许为有限的几个离散数值的数据(或信号)称为数字数据(或数字信号).
码元是指用一个固定时长的信号波形(数字脉冲),表示一位k进制数字,代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个吋长内的信号称为k进制码元,而该时长称为码元宽度.1码元可以携带多个比特的信息量.例如,在使用二进制编码时,只有两种不同的码元,一种代表0状态,另一种代表1状态.
2.信源,信 ...
html总结
总结一些HTML的知识.
常用标签文字标签和注释标签文字标签1<font size="5" color="red"> </font>
属性:
size:文字大小,范围1-7
color:文字颜色
两种表示方式
英文单词
使用十六进制数表示
注释标签HTML的注释:’‘
标题标签 水平线和特殊字符标题标签1234<h1> </h1><h2> </h2>...<h6> </h6>
从1-6字体大小依次缩小,同时自动换行.
水平线1
标签内结束,不成对.
属性:
size
color
特殊字符对特殊字符转义:
123< <&rt; >  空格
列表标签<dl></dl>:表示列表的范围
在dl里面<dt></dt>:表示上层内容
在dl里面<dd></dd>:表示上层内容
<ol></ ...
网络原理(1)
本篇介绍一些网络的前提内容.
协议与划分层次五层协议
OSI的划分过于复杂,运行效率低,层次不合理,有些功能在多个层次重复出现.而TCP/IP协议的下面两层并没有具体内容,因此在实际学习过程中折中一下.
(1)应用层(application layer)应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。这里的进程就是指主机中正在运行的程序。对于不同的网络应用需要有不同的应用层协议。在互联网中的应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,等等。我们把应用层交互的数据单元称为报文(message)。
(2)运输层(transport layer)运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。所谓“通用的”,是指并不针对某个特定网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用和复用相 ...
Java的JDBC
用Java操作数据库.
前提工作为当前项目添加驱动IDEA有内置的数据库工具(貌似ultimate版才有),可以直接在IDEA中像用SSMS,workbench,Navicat等工具一样操作数据库,这个工具也有独立版,叫DataGrip.使用这个工具时,只要注意密码用户名,端口号,而且它会提示下载驱动.
然后把这个下下来的驱动包加入当前项目,File>Project Structure>Dependencies,点加号加进去.
注册驱动,建立连接12345678910111213141516171819202122232425262728293031323334353637import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;//注意不要导错包 public class TestJDBC { public static void main(String[] args) { try { ...
Java中静态代码块、构造代码块、构造函数、普通代码块
转载自:http://www.cnblogs.com/ysocean/p/8194428.html
在Java中,静态代码块、构造代码块、构造函数、普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序。
1、静态代码块①、格式 在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块:
②、执行时机 静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。后面在比较的时候会通过具体实例来证明。
③、静态代码块的作用 一般情况下,如果有些代码需要在项目启动的时候就执行,这时候就需要静态代码块。比如一个项目启动需要加载的很多配置文件等资源,我们就可以都放入静态代码块中。
④、静态代码块不能存在任何方法体中 这个应该很好理解,首先我们要明确静态代码块是在类加载的时候就要运行了。我们分情况讨论:
对于普通方法,由于普通方法是通过加载类,然后new出实例化对象,通过对象才能运行这个方法,而静态代码块只需要加载类之后就能运行了。
对 ...