- 博客(32)
- 收藏
- 关注
原创 设计模式之命令模式及golang实现
符合:单一职责原则结构Command:命令,接口方法ICommand.Exec(),不同类型的命令针对不同的业务有不同的实现。(看CCTV1,看湖南卫视),公共的接口方法(按)Invoker:调用者,可以持有多个命令,可以对命令写日志,回放等操作。(遥控器的返回键)Receiver:接收者,电视...
2022-03-14 19:19:47 439
原创 单调栈例题
单调栈不需要太多的文字定义,单调栈三个字,你理解的是什么就是什么关键是怎么解题出现不满足单调的元素,那么从栈顶开始清算到满足单调为止不满足者的出现,导致开始清算,清算了最后一个元素,可能按照不满足者的标准也可以刷新记录(可能往左延伸的)所以有这几类问题往左延伸有意义的。以及往左延伸无意义的往左延伸无意义的未来哪天比今天温度高func dailyTemperatures(temperatures []int) []int { stack:=[]int{} res:=m
2022-03-12 01:21:21 384
转载 in 和 exist 的选择,认为正确的版本【转载】
看了很多博客感觉都不对,说的不是那么回事典型的连接类型共有3种:排序- 合并连接(Sort Merge Join (SMJ) )嵌套循环(Nested Loops (NL) )哈希连接(Hash Join)效率分析比如:A表(主查询,即:外表)和B表(子查询,即:内表)关联查询;当A表和B表大小相当时,用in和exists查询效率差不多;当A表(主查询)比B表(子查询)大的时,即子查询表小的时候用In效率高;当A表(主查询)比B表(子查询)小的时,即子查询表大的时候用exists效率高;
2022-03-08 17:26:34 190
原创 leetcode 排序链表
递归merge会加大栈空间和时间pre,cursor每次加大merge单元后都要从头开始l2 找第二段unit的时候要注意nil判断func sortList(head *ListNode) *ListNode { dataLen := 0 for p := head; p != nil; p = p.Next { dataLen++ } unitLen := 1 dummyHead := ListNode{0, head} //cursor := head for unitLen
2022-03-02 21:48:32 145
原创 golang string原理
解析词法分析将字符串常量标记为StringLit类型的Token语法分析识别单撇号或者双引号,双引号中有双斜杠转义分析,双引号不能有换行字符串拼接抽象语法树阶段将+操作解析为OADDSTR+操作两边是字符串常量时,语法分析阶段放在字符串数组中然后拼接。“A”+“b”+“c”+操作两边有字符串变量的拼接时,运行时函数来进行拼接,如果拼接后的字符串小于32B,用一个临时缓存,如果大于32B,在堆区开辟一个足够大的内存空间,将多个字符串放入其中,涉及内存复制。string转字节数组不是无损的指针引
2022-02-27 17:11:37 246
原创 golang知识点
1、channel是一个指针slice和mapmakemap 和 makeslice 的区别,带来一个不同点:当 map 和 slice 作为函数参数时,在函数参数内部对 map 的操作会影响 map 自身;而对 slice 却不会主要原因:一个是指针( *hmap),一个是结构体( slice)。Go 语言中的函数传参都是值传递,在函数内部,参数会被 copy 到本地。*hmap指针 copy 完之后,仍然指向同一个 map,因此函数内部对 map 的操作会影响实参。而 slice 被 copy 后
2022-02-27 15:37:47 539
原创 数据库知识点
数据库事务特性ACID原子性 一致性 隔离性 持续性隔离级别读未提交 :可能脏读读已提交 : 可能不可重复读可重复读 :可能幻读序列化 :最高级别隔离,加表级别的锁幻读和不可重复读的区别事务中多次读取的数据被其他事务修改过,导致不可重复读,禁止读时写。加锁的时候如果类比算法复杂度,那么锁住特定数据就行,行级锁,O(1)事务中的集合操作,(重点是集合操作,如总数,平均数)每次读出不一样的值,这是与不可重复读的区别。避免幻读要加表级别的锁,O(n)...
2022-02-25 10:59:37 721
原创 linux知识点
软连接和硬链接索引节点Inode存储文件块的元数据信息,inode帮助linux系统快速定位到文件目录中存有文件到inode节点(号)的对应信息,找到inode后,可以找到文件的数据块硬链接linux允许多个文件指向相同inode号码,inode信息中有一项叫做连接数,记录指向该inode的文件名总数。给文件创建硬链接就是增加一个指向其inode的文件名,其inode的链接数+1软链接symbol link软链接文件是一种特殊的文件,内容是另一个文件的路径,但二者的inode是不一样的。A文件
2022-02-24 10:38:15 632
原创 golang垃圾回收
回收策略三色标记-清除算法回收阶段内存达到垃圾回收的阈值之后开始新一轮的垃圾回收触发垃圾回收2、标记准备阶段因为懒清扫,所以标记准备阶段需要清扫上一次GC遗留的需要清扫的对象重置各种状态和统计指标大部分操作在STW stop the world时进行标记准备阶段为每个逻辑处理器P启动一个标记goroutine,但不是每个goroutine都有执行的机会。该阶段需要决定需要多少标记goroutine的执行 和 如何调度标记协程需要多少标记协程的执行量:规定标记goroutine消
2022-02-23 21:18:51 170
原创 计算机网络知识点
TCP UDP1、传输层,对网络层的报文解封装,交给上层使用,对上层的报文添加头交给下层2、结构上,udp首部8,tcp 20-60字节3、TCP面向连接,一对一,可靠(流量控制、拥塞控制);UDP 无连接,多播,不可靠为什么3次握手1、 防止过期的建立连接请求突然到达服务器,建立连接,浪费资源2、 tcp是可靠的传输,对消息编号,3次握手能够确认双方发送的序号...
2022-02-23 10:25:16 1262
原创 2个有序数组第K大 logK解法
findKth中每次减少K/2,第一次找第5大的,那么第二次找第三大的先考虑边界条件rm1 rm2分别表示从第一个第二个数组开始排除的位置初始化为K/2if nums1[rm1-1] < nums2[rm2-1]这个表示可以排除 rm1个数了,如果正常就是排除了K/2个数进入下一次递归用这个可以解决2个有序数组的中位数,分情况讨论一下,如果是偶数个,那么找2次,再求平均。如果是奇数个那么直接求中间的 第 len1+len2 / 2 +1 个//两个有序数组第k小的数func
2022-02-21 14:00:49 360
原创 mit lab2b 实现记录
记录一下趟过的坑收到Candidate的投票请求Candidate的ElectionTimout之后,向peers发出投票请求参数如下 args := RequestVoteArgs{ Term: rf.getTerm(), CandidateId: rf.me, LastLogIndex: len(rf.log)-1, LastLogTerm: rf.log[len(rf.log)-1].Term, }raft论文中的那个图:最开始我把第二点理解错了,理解为
2022-02-20 22:25:12 376
原创 mit6.824lab1
环境指导书,认真看 https://pdos.csail.mit.edu/6.824/labs/lab-mr.html要求golang1.15 那就用那个版本我开始尝试使用1.17发现gobuild不通过在windows的goland上编代码, 在远程linux服务器(或者虚拟机)上执行。没有mac的可以尝试远程目录挂载。windows挂载远程目录实验是做完了,这里写一写过程,整理一下思路过程首先认真读了mapreduce的论文,因为以前本科也上过课,研一也上过,所以对于mr的过程还是
2022-02-20 22:24:32 1460
原创 leetcode螺旋矩阵golang
做的有点卡 写点思路背一下 万一面到了写得快行是len(matrix)考虑5行5列规律是第一次往右5个,y增大第二次往下4个,x增大第三次方向是往左4,y减小…变量控制好方向就行result够数m*n了退出循环水平方向第一次5,y增大,第二次4个,y减小,第三次3个y增大dirLR表示水平方向的正负,dirUD表示数值方向的正负dir 1-4分别表示 右下左上新进入一个方向先减小count,水平从6开始,第一次减到5,竖直直接从5减到4func spiralOrder(matri
2022-02-20 00:24:30 213
原创 epoll
多态程序中定义的引用变量所指向的具体类型在运行期间才会确定。B+树更适合数据库索引B+树内部节点不包含具体数据,只有指向叶子节点的索引,相对于B树小2、查询更稳定,非终端节点都不指向文件内容,只作为叶子节点的索引,因此所有的关键字查询都是从根节点到叶子节点,高度一样。...
2022-02-19 20:47:27 403
原创 Maven-dependencyManagement理解
dependencyManagement可以指定版本号,但在当前module A不实际引入子模块B可以通过parent标签指定父模块A,可以访问A模块中dependencyManagement所定义的版本,在B的 <dependencies.> 中可以不指定版本当B是A的子模块,但是又想继承另一个C模块的pom的时候,比如想要获取C的some包的版本定义等,在B的dependencyManagement中写上C的GAVC: <groupId>com.example&.
2021-12-21 18:36:50 120
原创 k部分翻转链表nc50 golang实现
head指向还没进行翻转的第一个元素从head开始先数k个,还没数到k,遇到空的元素那么把head接到尾部,返回完事,head指针要保留检验完成剩余还多于k个,那么从当前的结果的尾部开始进行头插法,插入第一个的时候标记,作为next k个的newTail最后一个return 实属多余,满足语法需要package mainimport . "nc_tools"/* * type ListNode struct{ * Val int * Next *ListNode * } *
2021-12-18 00:31:31 407
原创 堆排序golang实现
堆排序思想利用最大堆、最小堆 堆顶元素最大、最小,每次获得一个最大最小值关键点如代码注释中所示A. 数组长度/2,从这个下标开始的原因是:上图的例子中,就是从4这个节点开始(9/2或8/2)都是4,这保证所有有子节点的节点都能进行down这个操作,这由二叉树的性质决定的B down这个操作,每一次递归的作用是,保证每一个单元,比如最小堆,每一个如3,7,8组成的三节点都满足最小堆的性质,就是父节点值最小。down操作直到左儿子节点下标超过数据长度了就结束。从底层有儿子节点的第一个节点开始,都
2021-12-18 00:18:35 662
原创 面试-浏览器跨域
1、由于95年引入浏览器的同源政策,防止恶意数据窃取,网站的请求受到域名、端口、协议的访问限制2、解决跨域有1. jsonp,是通过一种特殊的方法,像服务器请求数据像请求脚本一样,不会受到同源限制,简单,仅支持get,老式浏览器2. CORS,跨域资源共享,请求时Header带上ACCESS-Control-Allow-X的参数,规定服务器响应需要在Header里加上是否允许这个域的请求,支持所有http请求方法,delete 和 put 会首先发出一个option预检查是否支持。缺点是有些浏览器不支
2021-12-04 17:40:02 2169
原创 幻读和不可重复读-理解
幻读和不可重复读的区别事务中多次读取的数据被其他事务修改过,导致不可重复读,禁止读时写。加锁的时候如果类比算法复杂度,那么锁住特定数据就行,行级锁,O(1)事务中的集合操作,(重点是集合操作,如总数,平均数)每次读出不一样的值,这是与不可重复读的区别。避免幻读要加表级别的锁,O(n)...
2021-11-30 11:49:32 263
原创 springboot中application.yml多环境生效规则
springboot中application.yml多环境生效规则application.ymlspring: profiles: active: dev application: name: user-service redis: host:192.168.1.2application-dev.ymlspring: redis:# database: 0 host: 192.168.1.1 port: 6379 time
2021-11-25 22:30:32 1936
原创 redistemplate序列化方式选择
JdkSerializationRedisSerializer序列化后长度最小,Jackson2JsonRedisSerializer效率最高。如果综合考虑效率和可读性,牺牲部分空间,推荐key使用StringRedisSerializer,保持的key简明易读;value可以使用Jackson2JsonRedisSerializer如果空间比较敏感,效率要求不高,推荐key使用StringRedisSerializer,保持的key简明易读;value可以使用JdkSerializationRedis
2021-11-19 11:16:04 547
原创 docker启动redis -配置文件修改
下载默认配置文件wget http://download.redis.io/redis-stable/redis.conf放在 /root/redis下修改配置文件.bind 127.0.0.1 //127.0.0.1 限制只能本机访问 将其改为0.0.0.0 protected-mode no #默认yes,开启保护模式,限制为本地访问 daemonize no默认no,改为yes意为以守护进程方式启动,yes会使配置文件方式启动redis失败(一开启就退出)创建数据data目
2021-11-18 10:14:00 2888
原创 openstack集群停电后恢复使用记录
实验室openstack集群在停电后dashboard访问不了通过一番操作又起来了,具体是为什么也不深究了 人生苦短看日志cd /var/log/novavi nova-api.log发现数据库连不上操作1给keystone用户赋予权限mysql -u root -pGRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY ‘passwordxxx’;flush privileges;操作2vim /
2021-11-17 11:26:36 1773
原创 java导出复杂打印格式的Excel
要做成:打印区域为:划分的小单元是一盒的数据,也就是8行为一个单元来填入数据,这个看你具体的业务。更常见的是以一行为单位。使用工具:某大佬的插件,稍微改动了一下打印部分的设置ExcelTemplate插件代码https://gitee.com/jiangyongbing24/poi/blob/master/src/export/ExcelTemplate.java博客原文https://blog.csdn.net/jiangyongbing008/article/details/100795
2021-10-23 19:27:41 841
原创 windows远程挂载服务器文件夹
因为在windows下运行k8s的代码生成器有问题,又没mac,只能远程挂载一下linux文件夹才能勉强维持生活这样子下载https://github.com/billziss-gh/sshfs-wingit下载sshfs安装好readme里面的两个插件后按照格式 \sshfs\用户名@地址\ 就可以挂载用户的根目录,这对应centos根目录下的/root...
2021-10-20 11:48:07 936
原创 Kubernets in docker - kind部署应用及端口映射访问
docker 安装略kubectl安装加入k8s的仓库源cat > /etc/yum.repos.d/k8s.repo << EOF[kubernetes]name=kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.co
2021-10-18 16:11:52 1943
原创 Openstack创建虚拟机磁盘空间不足-LVM重新分区
Openstack创建虚拟机磁盘空间不足/dev/mapper/centos-home 分区拥有 800+GB 的剩余空间,而 /dev/mapper/centos-root 分区则只剩 30+GB 的空间。解决:lvm重新分区LVM逻辑卷管理LVM是Linux的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储
2021-10-14 17:25:12 1409
原创 StatefulSet的理解
service 是将kubernetes的一组pod暴露给外部的机制Service的访问:DNS和VIPstatefulset:对有状态service应用的支持,记录其拓扑状态和存储状态,Deployment的改良,Headless ServiceHeadless指 Cluster Ip 为Noneyaml中用一个字段serviceName=nginx告诉stateful set控制器,使用nginx这个Headless service的名字保持pod的可解析身份该Service不会被分配一个
2021-10-12 18:17:31 163
原创 Options的理解和在go-micro中的使用
Options的理解和在go-micro中的使用c++中有重载,python中的函数参数可以省略,golang提供Options达到替代效果,几乎很多的框架中都有应用。一般框架中似乎会定义一个叫做Options的结构体,感觉这个命名对初学者真不友好。记住Option是函数,Options是结构体。Options里面包含该框架的基本类型,而Option则代表操作其中一个或多个类型的函数。type Option func(*Options)感觉不叫Options反而更加易读。如Person结构体ty
2021-09-27 19:45:41 281
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人