- 博客(33)
- 收藏
- 关注
原创 7days golang orm 笔记
反射的简单使用ValueOf, Elem,Indirectreflect.ValueOf把一个interface{}包起来成为reflect.ValueValue.Interface() 是反向操作,得到被Value包起来的值Value.Elem 和 reflect.Indirect类似,当Value包起来一个指针时,这两个方法可以得到指针指向的具体对象的值 var i int = 3 var p *int = &i fmt.Println(p, i) //0xc0000ae008
2022-01-14 10:49:11
429
原创 笔记-设计数据密集型应用-ch3
ch3 存储与检索事务性负载 or 分析性存储引擎:日志结构(log structured)、面向页面(page oriented)例如b树db的数据结构最简单的数据库grep "^$1," database | sed -e "s/^$1,//" | tail -n 1#grep取$1,开头的行#sed s/aa/bb/ 把aa替换为bb,这里把$1,替换为空,即删除#tail 只输出最后一行(相同key,取最后添加的value)索引:存一些额外元数据,加速查询(会拖慢写入的速度)哈
2021-11-03 19:05:51
164
原创 redis一点命令
SET key value [EX seconds] [PX milliseconds] [NX|XX]NX: 只有键不存在,才对键设置XX:只有键已经存在,才对键设置
2021-10-27 10:51:26
146
原创 golang text/template
text/templatehttps://www.cnblogs.com/wanghui-garcia/p/10385062.htmlurfave/cli 命令行框架https://jaycechant.info/2020/golang-in-action-day-8/
2021-10-26 14:55:45
112
原创 HTTPS的公钥私钥
https://www.jianshu.com/p/14cd2c9d2cd2 感谢!密码学基础密钥:是一种参数,是明文转密文或密文转明文的算法中输入的参数。对称加密:其加密过程如下:明文 + 加密算法 + 私钥 => 密文解密过程如下: 密文 + 解密算法 + 私钥 => 明文非对称加密:被公钥加密过的密文只能被私钥解密,过程如下:明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文被私钥加密过的密文只能被公钥解密,过程如下:明文
2021-10-21 22:36:04
851
原创 笔记-设计数据密集型应用-ch2
https://vonng.gitbooks.io/ddia-cn/content/ch2.htmlch2 数据模型与查询语言模型:关系模型SQLNoSQL对象关系不匹配:ORM(object-relational mapping),多表join。对比json,嵌套代替join。多对一和多对多关系:用ID连接多个表,有用信息只存储一处。网络模型:解决多对多关系,记录的链接形成访问路径,类似编程中的指针。路径优势很复杂。关系模型:“访问路径”通过查询优化器确定,链路也相对简单。文档模型的架
2021-10-20 22:04:01
135
原创 Golang unsafe.Pointer 和 uintptr
参考这里 感谢!golang中的指针:普通指针:var ptr *int 定义一个int类型指针内置类型uintptr,本质是一个无符号整形,足够容纳一个指针unsafe.Pointer,可以指向任意类型的指针// uintptr is an integer type that is large enough to hold the bit pattern of any pointer.// uintptr是一个能足够容纳指针位数大小的整数类型uinptr 主要用来做地址的加减,配合un
2021-10-20 17:00:32
214
原创 MongoDB概念学习
mongoDB官网 https://docs.mongodb.com/一、概念名词mysql中的表,在mongo中叫collectionrow,对应叫documentcolumn,对应field文档模型 (Document)JSON/BSON格式,便于struct映射方便的文档嵌套,无需Join对document操作是原子的Schema灵活无需预定义每条document的schema可以不一样(相似schema的document放到一个collection里面
2021-09-28 17:44:13
84
原创 Kibana 几个语句
记录下刚接触 Kibana 用到的几条 DSL (domain specific language)ES中表叫索引(index)每个表包的schema叫mapping,包含哪些字段、类型、是否可以搜索这个字段等一行记录叫document例子中的表my_index有id、activityId,name等字段# 查询数据库中所有的表GET _cat/indices# 查询表的mappingGET my_index/_mapping# 查表中document的个数GET my_ind
2021-09-28 16:42:54
167
原创 工厂模式 Go例子
工厂模式,每个实例都实现接口,调用清晰结合gorouine,实例可以并发执行相似的步骤工作中遇到的例子package mainimport ( "fmt" "golang.org/x/sync/errgroup")type ModuleHandler interface { //接口 foo(chan int) //channel用来传递数据}var moduleHandlers []ModuleHandlerfunc init() { //init收集各实例 modu
2021-09-10 15:39:58
138
原创 golang闭包
闭包是:内层函数对外层变量的使用例子:package mainimport "fmt"func counter() func() { i := 0 return func() { //闭包 i++ //i的作用域是整个counter函数 fmt.Println(i) }}func main() { counterFunc1 := counter() for i := 0; i < 3; i++ { counterFunc1() } counterFunc2
2021-09-10 14:47:49
94
原创 模板模式 Go例子
接口Say父类SayAny,实现模板中通用的方法方法DoSay(Say),封装调用模板各个方法子类Hello,实现各自具体逻辑package mainimport "fmt"type Say interface { //这里定义好模板,子类需要具有的方法 beforeSay() say()}type SayAny struct{}func (SayAny) beforeSay() { //模板实现通用的方法 fmt.Println("get up the courage .
2021-09-09 18:18:40
87
原创 golang init函数
编译器会让init在main函数之前执行,init函数常用来加载配置文件,连接数据库等。golang每个包都可以有init其它包的init先执行,main包中的init最后执行(按依赖顺序)(一个包中可以有多个init)//first/first.gopackage firstimport "fmt"func init() { fmt.Println("first init")}func Run() {}//main.gopackage mainimport ( "f
2021-09-09 17:42:33
78
原创 golang interface 指针、对象
接口 Say结构体 Hellopackage mainimport "fmt"type Say interface { say()}type Hello struct {}func(h *Hello) say(){ //这里写指针,作为接口时必须引用 fmt.Println("hello")}func main() { var sayHello Say = &Hello{} //这里 sayHello.say()}如果 Hello.say() 方法传的指.
2021-09-09 17:20:57
1401
原创 Go defer
go专家编程2.1约定把defer的内容,叫做延迟函数golang官方总结了defer三个规则1. 延迟函数的参数在defer语句出现时就确定了func a() { i := 0 defer fmt.Println(i) i++ return}//打印0如果defer参数是地址,可能会改变func main() { a := 1 p := &a defer func(p *int) { fmt.Println(*p) }(p) a =
2021-09-07 21:15:37
74
原创 服务器负载
机器负载what is loadCPU负载指的是一段时间,在cpu上运行或等待的线程数it is the CPU demand that includes sum of the running and the waiting threads.uptime命令可以查看得到1、5、15分钟内cpu负载对于单个核,平均负载=0.7,比较理想超过3,队列已经很拥挤了...
2021-09-06 15:54:38
134
原创 Mysql 隔离级别
mysql隔离级别事务隔离级别举例说明首先,隔离级别讨论的是事务之间的,数据可见性问题Read uncommited: 一个事务可以看到其它事务未提交的数据(脏读)Read commited: 如果有事务update,读操作的事务要等update结束才能读(避免脏读,造成不可重复读)可能一个事务中的两次读操作,看到的数据不同(其它事务update)Repeatable read(mysql默认): 当有事务读操作,不允许其它事务update(可重复读,但因为允许insert,可能幻读)Ser
2021-09-06 15:05:13
64
原创 golang 多协程错误处理
Go多协程并发环境下的错误处理两个协程A、B如果A发生panic,B会挂掉!(程序整体会panic)A协程的panic,只有A可以recoverfunc main() { go func() { for { fmt.Println("goroutine A is ok") time.Sleep(500 * time.Millisecond) } }() go func() { time.Sleep(1200 * time.Millisecond) panic(
2021-09-06 14:40:22
740
原创 HTTP错误码
错误码汇总1xx信息响应,表示接收到请求并继续处理2xx处理成功3xx重定向,需进一步处理4xx客户端错误5xx服务端错误502:网关或代理服务器,收到上游无效响应504:网关或代理服务器,请求上游,响应超时当nginx收到了无效的响应时,就返回502。当nginx超过自己配置的超时时间,还没有收到请求时,就返回504错误。常见502-504错误问题分析...
2021-09-06 11:06:49
89
原创 Go group
WaitGroupsync.WaitGroup会阻塞在检查点,直到所有goroutine完成func main(){ var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() time.Sleep(time.Second) fmt.Println(i) }(i) } wg.Wait() //等待}errgrouperrgrou
2021-09-05 22:06:44
702
原创 Go 时间
formattime.Now().Format("2006-01-02T03:04:05Z")time.Now().Format("2006-01-02T03:04:05+08:00") //东八区time.Now().Format("2006-01-02T03:04:05 08:00") //空格和+一样//RFC 3339标准–>Z指的是UTC+0,世界协调时间(经度=0°)GMT是格林尼治时间,是一个时区时间,恰巧基本和UTC一样时区time.Now()得到的是当地时区时间
2021-09-03 16:34:28
297
原创 快捷键note
iterm2bash添加颜色(utunbu配色方案)->Git show branch name ->ps1 语法#enables colorin the terminal bash shell exportexport CLICOLOR=1#sets up thecolor scheme for list exportexport LSCOLORS=gxfxcxdxbxegedabagacad#sets up theprompt color (currently a gr
2021-09-01 14:38:25
139
原创 Mysql explain
explainref refexplain得到的字段含义:id: 值越大先被执行,值相同从上到下。select_typesimpleprimary+subquery+derived(from之后的派生表) 嵌套类型union+union resulttabletypesystem: 表中只有一行数据const: where中是primary/unique key,且只选一行eq_ref:也常见于primary/unique key扫描ref:普通索引或者唯一索引的部分前缀
2021-08-23 14:14:31
56
原创 7days golang cache 笔记
学习7days golang分布式缓存部分:referencelfu (least frequently used): 按访问次数淘汰 lru(least recently used): 按时间淘汰 实现:队列,每次访问都把节点放到队首,淘汰队尾 lru-k:2q实现 访问k次才进入缓存队列,否则按fifo进入临时队列、淘汰 缓存队列按照lru淘汰 接口型函数 ref价值:函数实现了接口(通过在接口方法中调用自己),可以和实现了该接口的结构体一样,当做参数传递。(是g..
2021-08-20 17:23:25
352
原创 3个桶均分8升水 c++
3个桶均分8升水 c++题目思路细节代码结果题目3个桶,分别为8L,5L,3L。初始状态8L的桶里满水,另外2个桶空。过程中只能将一个桶向另一个桶,倒满或者倒空水,求所有将8L水均分为4L+4L的方案,并展示倒水过程。思路搜索用的BFS(DFS应该也可)简单的用vector<int>{a, b, c} 来表示3个桶中水的多少,即状态;用一个unordered_map< vector<int>, vector<vector<int>> >
2020-09-23 15:28:02
426
原创 leetcode50 N皇后 c++
题目:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。思路:从开始学数据结构就看过这个大名鼎鼎的问题,终于可以磕磕绊绊的自己写出来了最简单的版本了;)回溯法。x在每...
2018-09-18 11:05:24
243
原创 leetcode 周赛100(896-899) c++
参考:酒井算协的解答非常感谢这个公号每周的解答,对于小白的我需要看一会才能明白,于是把自己的一些理解记下来。896 单调数组题目:如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的...
2018-09-05 23:04:51
268
原创 leetcode100 相同的树 python
题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。思路:之前看到过用递归比较简单。只需对比每个节点值、以及左、右孩子是否相同。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# ...
2018-08-30 16:48:22
193
原创 leetcode6 Z字形变换 python
题目:将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左到右"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数。思路: 1. 官方答案版本1 以上面这个例子解释:遍历原始字符串,用currow变量记录所处的行,即让currow变换为...
2018-08-23 17:06:51
1088
1
原创 leetcode5 最长回文子串 python
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。思路:参考了官方答案 https://leetcode-cn.com/problems/longest-palindromic-substring/solution/,写了下面几种答案1. 中心扩展方法 思路:扫一遍字符串s,对于回文子串长为奇数的情况,求s[i]为轴对称中心的回文...
2018-08-23 16:58:07
3901
1
原创 leetcode3 无重复字符的最长子串 python
题目:给定一个字符串,找出不含有重复字符的最长子串的长度。思路:参考的官方答案3。设一个滑动窗口[i, j]。和一个字典,键:字符,值:字符s[j]上一次出现位置。j逐一增加;i取两者最大值:max( 当前i,s[j] 在字典中的值加1);最长无重复子串取j-i+1 的最大值;同时更新字典中键s[j] 的值。class Solution: def lengthO...
2018-08-23 16:31:07
1203
原创 leetcode2 两数相加 python
题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。思路:类似加法公式,每次算两个数字的相加,carry保存进位。先处理l1、l2都有数字的部分;再处理l1或l2有数字的部分;最后考虑最高位可能的进位。# Definition for singly...
2018-08-23 16:30:35
539
原创 leetcode1 两数之和 python
题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。思路:利用哈希快速查找。实现就是用一个字典,键是数字大小,值时序号。遍历nums,如果target-nums[i]在字典里,读出对应序号就可以和i一起返回了。class Solution: def twoSum(self, nums, ta...
2018-08-23 16:29:36
168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人