- 博客(86)
- 收藏
- 关注
原创 面试题07-09
知道了 InnoDB 的索引实现后,就很容易明白为什么不建议使用过长的字段作为主键,因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。再例如,用非单调的字段作为主键在 InnoDB 中不是个好主意,因为 InnoDB 数据文件本身是一颗 B+Tree ,非单调的主键会造成在插入新记录时数据文件为了维持 B+Tree 的特性而频繁的分裂调整,十分低效,而使用自增字段作为主键则是一个很好的选择。
2024-07-09 14:43:02 356
原创 《Elasticsearch实战》学习笔记
1.默认情况下,计算文档相关性得分的算法是 TF-IDF(term frequency-inverse document frequency, 词频-逆文档频率)。2.至少在Elasticsearch中,文档比数据表的行更为灵活。这主要是因为文档可以是具有层次型的。4.端口 9200 默认用于 HTTP 的通信。应用程序使用 RESTAPI 时连接这个端口。3.端口 9300 默认用于节点之间的通信,称为transport。
2023-04-21 19:32:11 844 1
原创 《Elasticsearch权威指南》学习笔记
3.实际上Elasticsearch的数据存储结构决定了其不能像关系数 据库那样进行字段级的更新,所有的更新都是先删除旧文档,再插入 一条新文档,但这个过程对用户来说是透明的。6.hits.total的准确性由请求参数track_total_hits控制,当设置为true 时,请求将准确跟踪总命中数("relation":"eq")。4.在Elasticsearch中,删除操作只是把需要删除的文档的ID记 录到了一个列表中,当段合并时才有可能真正把源文档删除。如果未指定size,则默认为10。
2023-04-03 16:06:17 294
转载 Manacher算法(马拉车算法)
Manacher算法,又叫“马拉车”算法,可以在时间复杂度为O(n)的情况下求解一个字符串的最长回文子串长度的问题。
2022-11-18 11:38:35 3623
原创 内存重排和sync.map
golang-notes/memory_barrier.md at master · cch123/golang-notes · GitHub【Go】内存同步_如雨随行的博客-CSDN博客曹大谈内存重排 - Stefno - 博客园【Go】内存同步_如雨随行的博客-CSDN博客golang-notes/memory_barrier.md at master · cch123/golang-notes · GitHub从 Memory Reordering 说起https://www.cs.utexas.
2022-02-23 16:29:55 334
转载 《GO并发编程实战》—— 原子操作
《GO并发编程实战》—— 原子操作声明:本文是《Go并发编程实战》的样章,感谢图灵授权并发编程网站发布样章,禁止以任何形式转载此文。我们已经知道,原子操作即是进行过程中不能被中断的操作。也就是说,针对某个值的原子操作在被进行的过程当中,CPU绝不会再去进行其它的针对该值的操作。无论这些其它的操作是否为原子操作都会是这样。为了实现这样的严谨性,原子操作仅会由一个独立的CPU指令代表和完成。只有这样才能够在并发环境下保证原子操作的绝对安全。Go语言提供的原子操作都是非侵入式的。它们由标准库代码包syn
2021-07-16 15:43:55 322
转载 在gitlab上使用动态gif作为自己的头像(转)
开始在使用私人的gitlab的时候,我发现gitlab可以上传自定义头像,而且支持各种类型,但是裁剪后都只变成了png类型。这样的话,头像就都是静态的了,显得十分枯燥。经过20分钟的摸索,我终于将我的头像改成了动态头像。原理感谢开源精神,我们可以在gitlab上看到关于gitlab的全部代码。这里是有关修改个人信息的前端代码。读代码的部分就不介绍了,简而言之,在点击更新个人资料设置的时候,会检查是否在某个元素中通过jquery.data()方法存储了头像图片的blob对象,如果有的话,就把这个对
2020-10-27 17:17:22 1906
原创 7.27
string底层实现,channel底层实现,redis分布式锁实现, redis的SETNX方法。幂等,cap,gmp模型,多路复用,es,英文单词颠倒。(空间复杂度)先将每个单词颠倒,然后逆序输出字符串,map非线程安全的体现。同时写入相同的key会报致命错误,fatal error: concurrent map writes(致命错误:并发映射写入)变量逃逸,以及分析。linuxb+树为什么矮胖,...
2020-07-27 19:00:21 165
原创 kafka笔记
1.消息队列的两种模式 (1).点对点模式(一对一,消费者主动拉取数据,收到消息后消息队列删除该消息) 支持多个消费者,但是一个消息只能被一个消费者消费。 (2).发布订阅模式(一对多) 分为主动推送和消费者拉取(kafka模式)两种,消费后消息不会删除,但是消息只能在队列里存在一段时间。...
2020-07-27 16:35:23 159
原创 07.21
1.mongodb内嵌查询。2.redis aof和rdb。3.记录一天下单量(锁和channel选用)。4.grpc定义map。5.redis查询key访问量。6.分词器原理。ik分词器分英文。7.kafka能保证顺序的一致性吗。其它mq。8.defer执行顺序。 p := &person{ age:10, } defer fmt.Println(p.age) defer func(*person) { fmt.Println(p.age) }
2020-07-21 18:49:34 166
原创 Golang 内存管理笔记
.data区存放全局变量。.bss存放未初始化的全局变量。堆和栈中间是数据共享区。.rodata存放全局常量。栈帧:用来给函数运行提供内存空间,存在于栈上。 当函数调用时,产生栈帧;函数调用结束时,栈帧释放。 栈帧存放:1.局部变量;2.形参;3.内存字段描述值。(形参与局部变量存储地位等同)视频链接:https://www.bilibili.com/video/BV1ME411e7uC?p=2...
2020-07-20 22:56:17 248
原创 Mysql学习笔记
视频链接:https://www.bilibili.com/video/BV1Vs411M7Qi?p=531.索引的作用:排序和查询。2.链接层--服务层--引擎层--存储层。3.innodb:事务优先;myisam:性能优先。4.sql语句实际解析过程:from...on...join...where...group by...having...select和distinct...order by...limit...https://www.cnblogs.com/annsshadow
2020-07-19 22:59:57 256
原创 Mysql事务--笔记
一、innodb和myisam的区别1.sql语句执行过程:连接器、分析器、优化器、执行器。2.mysql常见的存储引擎:innodb(磁盘)、myisam(磁盘)、memory(内存)。 hash索引一般用在memory存储引擎上。3.innodb存储数据采用两种同名文件: .frm(存储表结构和源数据的地方) .ibd(实际存储数据的地方)4.myisam存储数据采用三种同名文件: .frm .MYD(存放数...
2020-07-18 23:58:48 163
转载 如何避免回表查询?什么是索引覆盖?
一、什么是回表查询?这先要从InnoDB的索引实现说起,InnoDB有两大类索引:聚集索引(clustered index) 普通索引(secondary index)InnoDB聚集索引和普通索引有什么差异?InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引:(1)如果表定义了PK,则PK就是聚集索引;(2)如果表没有定义PK,则第一个not NULL unique列是聚集索引;(3)否则,InnoDB会创建一个隐藏的row-id作为聚集
2020-07-15 16:22:59 392
原创 Go并发编程实战笔记
一、Go语言的主要特征1.开放源代码的通用计算机编程语言。2.静态类型、编译形的语言,语法趋于校本化。3.卓越的跨平台支持,无需移植代码。4.全自动的垃圾回收机制,无需开发者干预。5.原生的先进并发模型和机制。6.拥有函数式编程范式的特性,函数为一等代码块。7.无继承层次的轻量级面向对象编程范式。8.Go语言的垃圾回收采用的是并发的标记清楚算法(Concurrent Mark and Sweep,CMS)。虽然是并发的操作,时间比串型操作短很多,但是还是会在垃圾回收期间停止所
2020-07-01 10:50:48 978
转载 golang 面试题(十三)interface内部结构和nil详解
1.以下代码打印出来什么内容,说出为什么。package mainimport ( "fmt")type People interface { Show()}type Student struct{}func (stu *Student) Show() {}func live() People { var stu *Student return stu}func main() { if live() == nil { fmt.Println("AAAAA
2020-05-16 17:37:22 1401
原创 golang 面试题(十二)chan缓存池
1.下面的迭代会有什么问题?func (set *threadSafeSet) Iter() <-chan interface{} { ch := make(chan interface{}) go func() { set.RLock() for elem := range set.s { ch <- elem } close(ch) set.RUnlock()
2020-05-14 17:09:19 858
转载 golang 面试题(十一)
1. 下面代码输出什么?func calc(index string, a, b int) int { ret := a + b fmt.Println(index, a, b, ret) return ret}func main() { a := 1 b := 2 defer calc("1", a, calc("10", a, b)) a = 0 defer calc("2", a, calc("20", a, b)) ...
2020-05-14 14:14:45 309
原创 golang 面试题(十)协程交替打印奇偶数
问题:两个协程交替打印1-100的奇偶数,一个协程打印奇数,一个协程打印偶数。代码1:package mainimport ( "fmt" "runtime" "time")func main() { //设置可同时使用的CPU核数为1 runtime.GOMAXPROCS(1) go func() { for i := 1; i < 101; i++ { //奇数 if i%2 == 1 { fmt.Println("线程1打印:",.
2020-05-12 16:34:41 2679
原创 golang 面试题(九)冒泡排序和二分查找
1.冒泡排序代码:package bubblingSort//冒泡排序func BubblingSort(parameter []int)[]int { for i := 0; i < len(parameter); i++ { for j := 1; j < len(parameter) - i; j++ { if parameter[j-1] > parameter[j] { parameter[j-1],parameter[j] = paramet
2020-05-12 15:55:03 172
原创 golang 面试题(八)斐波那契数列和回文链表
1.斐波那契数列代码:package fib//求斐波那契数列第n项func PrintFib(n int)int { if n <= 0 { return 0 } if n >= 3 { return PrintFib(n - 1) + PrintFib(n - 2) } else { if n == 1 { return 0 } if n == 2 { return 1 } } return 0}2.回文链表:(.
2020-05-12 14:31:57 282
原创 golang 面试题(七)小米面试题,字符串
题目如下:给出一个字符串s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例1:输入:s = "(abcd)"输出:"dcba"示例2:输入:s = "(u(love)i)"输出:"iloveu"s=> (uevoli) => iloveu示例3:...
2020-05-08 16:11:44 1704
转载 golang 面试题(六)select
1.下面代码会触发异常吗?请详细说明func main() { runtime.GOMAXPROCS(1) int_chan := make(chan int, 1) string_chan := make(chan string, 1) int_chan <- 1 string_chan <- "hello" select { ...
2020-05-07 15:38:15 812
原创 golang 面试题(五)switch,break和fallthrough
1.glang中的switch,不用添加breakjava代码:package test;public class TestRunnable{ public static void main(String[] args) { int i = 0; switch (i){ case 0: S...
2020-05-07 14:44:44 1910
转载 golang 面试题(四)go的组合继承
1. 下面代码会输出什么?type People struct{}func (p *People) ShowA() { fmt.Println("showA") p.ShowB()}func (p *People) ShowB() { fmt.Println("showB")}type Teacher struct { People}fun...
2020-05-07 11:31:19 947
原创 golang 面试题(三)管道chan
某网站的面试题:链接:http://www.coder55.com/article/34958首先执行了一下,确实死锁,如图:按题目要求添加代码:第一次执行:第二次:第三次:第六次:因为线程执行顺序并不一定,所以加上答案中的方法,并不一定得到相应的结果。当然题目要求的是不报错,但是如果写入c2的线程执行晚于读取线程是否还是会报错?第二...
2020-05-06 17:51:16 780 4
原创 golang 面试题(二)闭包
下面的代码会输出什么,并说明原因://代码1package mainimport ( "fmt" "runtime" "time")func main() { //设置最大的可同时使用的 CPU 核数 为1 runtime.GOMAXPROCS(1) for i := 0; i < 10; i++ { go func() { fmt.Printl...
2020-05-06 14:43:29 534
转载 golang 面试题(一)
1. 写出下面代码输出内容。package mainimport ( "fmt")func main() { defer_call()}func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() defer...
2020-04-30 23:29:38 389
转载 Golang 常量初始化规则与枚举
在定义常量组时,如果不提供初始值,则表示将使用上行的表达式。package mainimport "fmt"const ( a = 1 b c d)func main() { fmt.Println(a) // b、c、d没有初始化,使用上一行(即a)的值 fmt.Println(b) // 输出1 fmt.Println(c) // 输出1 fmt.Prin...
2020-04-30 16:31:55 404
转载 Tomcat学艺-Tomcat中对静态资源的访问也会用servlet来处理吗?
tomcat,熟悉的陌生人。我们所有的项目都运行在它上面,而我们却往往对它视而不见。现实中也是如此,我们周围充满了空气,我们无时无刻不在呼吸,但你从来没关心过它。同样的,Tomcat于我们而言,也只是在创建环境或者运行项目爆出各种错误时,才会去看看它。上世纪90年代在大洋彼岸,有一家名唤SUN的公司,创造了一门全新的语言,叫Java。经过短短几年的发展,一跃成为市场上最炙手可热的语言。随后又悟...
2020-04-30 11:32:07 713
转载 Object类和集合
1.了解Object类的部分方法Object大概属于那种“熟悉的陌生类”。虽然我们日常使用的所有类都默认继承它(毕老师说就像上帝一样的存在),但是我们却“看不到”它,平时用到它的几率更是少之又少。由于集合中的几个重要知识点,比如重写hashCode()和equals()方法,比如打印对象时默认调用的toString()方法,又比如我们上一篇提到的反射可能用到的getClass()方法,这些方法...
2020-04-30 11:12:33 985
转载 WebService
WebService介绍首先我们来谈一下为什么需要学习webService这样的一个技术吧….问题一如果我们的网站需要提供一个天气预报这样一个需求的话,那我们该怎么做?????天气预报这么一个功能并不是简单的JS组件就能够实现的,它的数据是依赖数据库分析出来的,甚至需要卫星探测..我们个人建站是不可能搞这么一个数据库的吧。那么既然我们自己干不了,我们可以去找别人吗???我们从搜...
2020-04-27 16:11:57 152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人