- 博客(179)
- 资源 (12)
- 收藏
- 关注
原创 MySQL自增主键为何不连续
自增值的存储原理MyISAM引擎的自增值保存在数据文件中InnoDB引擎的自增值,保存在内存里MySQL 8.0版本后,才有了“自增值持久化”的能力,实现了“如果发生重启,表的自增值可以恢复为MySQL重启前的值”,具体情况是,在MySQL 8.0版本,将自增值的变更记录在了redo log中,重启的时候依靠redo log恢复重启之前的值MySQL 5.7及之前版本,自增值保存在内存里,没有持久化。所以,每次重启后打开表时,都会去找当前自增值的最大值max(id),然后将max(id)+1作为
2024-01-20 22:19:04
552
原创 53_最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。
2024-01-16 23:51:27
487
1
原创 121_买卖股票的最佳时机
数组开始递减的时候会找最小值,这个时候如果卖,那么卖的利润在降低,只有开始递增的时候计算差值,这个时候利润在升高,这个时候买入成本在升高。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。
2024-01-16 23:19:48
430
原创 637_二叉树的层平均值
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。
2024-01-16 21:50:17
453
原创 103_二叉树的锯齿形层序遍历
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。利用双端队列的两端皆可添加元素的特性,设打印列表(双端队列)q。奇数层 则添加至 q 尾部。偶数层 则添加至 q 头部。
2024-01-16 20:40:31
372
原创 BFS(广度优先搜索)_层序遍历&最短路径_总结
层序遍历LeetCode 102. Binary Tree Level Order Traversal 二叉树的层序遍历(中等)LeetCode 103. Binary Tree Zigzag Level Order Traversal 之字形层序遍历LeetCode 199. Binary Tree Right Side View 找每一层的最右结点LeetCode 515. Find Largest Value in Each Tree Row 计算每一层的最大值LeetCode 637. A
2024-01-16 20:17:34
464
原创 docker命令拾遗(二)
docker run :创建一个新的容器并运行一个命令语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明:-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;-d: 后台运行容器,并返回容器ID;-i: 以交互模式运行容器,通常与 -t 同时使用;-P: 随机端口映射,容器内部端口随机映射到主机的端口-p: 指定端口映射,格式为:主机(宿主)端口:容器端口-t: 为容器重
2021-10-13 21:50:49
204
原创 go clone 大仓库导致Timeout
先拉主库git clone --depth 1 https://github.com/xxx/xxx.git在拉其他分支git fetch --depth 1 origin remote_other_branchrefgit clone --depth=1时的一些问题
2021-08-25 21:47:21
287
原创 编译时注入变量
原理golang程序在build时自动生成版本信息,使用 ./main --version可以查看版本和build时间使用链接选项-X设置一个二进制文件中可以访问的变量源码package mainimport ( "fmt" "os" "github.com/deckarep/golang-set")var version = "no version"func main() { params := os.Args[1:] if len(params) == 0 { r
2021-08-25 21:10:11
290
原创 110_平衡二叉树
// 给定一个二叉树,判断它是否是高度平衡的二叉树。// 本题中,一棵高度平衡二叉树定义为:// 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。package mainimport "math"/** * Definition for a binary tree node. */type TreeNode struct { Val int Left *TreeNode Right *TreeNode}func isBalanced(node *Tree
2021-08-25 20:17:08
171
原创 107_二叉树的层序遍历 II
package main/** * Definition for a binary tree node. */type TreeNode struct { Val int Left *TreeNode Right *TreeNode}func levelOrderBottom(root *TreeNode) [][]int { //深度优先遍历(dfs) result := make([][]int, 0) var preorder func(node *TreeNode,
2021-08-25 20:14:27
162
原创 104_二叉树的最大深度
package main/** * Definition for a binary tree node. */type TreeNode struct { Val int Left *TreeNode Right *TreeNode}func maxDepth(root *TreeNode) int { if root == nil { return 0 } l := maxDepth(root.Left) r := maxDepth(root.Right) //
2021-08-25 20:13:17
211
原创 102_二叉树的层序遍历
方法一package main/** * Definition for a binary tree node. */type TreeNode struct { Val int Left *TreeNode Right *TreeNode}// 总结: 前序遍历,遍历时记录层级,记录层级的值func levelOrder(root *TreeNode) (res [][]int) { var preorder func(node *TreeNode, depath int)
2021-08-25 20:11:17
154
原创 range切片与数组的原理
是否会出现无限循环package mainimport "fmt"func main() { v := []int{1, 2, 3} for i := range v { v = append(v, i) } fmt.Println(v)}输出[1 2 3 0 1 2]原理在遍历切片的时候,range语句声明之初,就将切片已经copy了一份,长度和内容// The loop we generate:// for_temp := range// .
2020-11-17 22:45:54
249
原创 指针问题 之 range
问题代码package mainimport "fmt"type user struct { name string sex uint // 1 男 0 女}func main() { u := []user{ {"Jansen",1}, {"Lee",1}, {"Leo Lee",0}, } n := make([]*user,0,len(u)) for _,v := range u{ n = append(n, &v) } fmt.Printl.
2020-11-17 21:40:08
286
原创 race问题
package mainimport "fmt"func main() { total, sum := 0, 0 for i := 1; i <= 10; i++ { sum += i go func() { total += i }() } fmt.Printf("total:%d sum %d", total, sum)}第一个问题 total 为不确定值(不是你想要的),因为total的写入是在协程里,并且增量i是闭包直接带入,加之协程的调度并非顺序导致
2020-11-14 14:56:56
306
原创 微服务之Go-Micro(九)服务熔断和降级 hystrix-go 初见
环境准备github.com/afex/hystrix-go/hystrix本工程源码地址在装饰器出构建熔断降级逻辑package wapperimport ( "context" "fmt" "github.com/afex/hystrix-go/hystrix" "github.com/micro/go-micro/v2/client" "github.com/micro/go-micro/v2/metadata" "go-micro-service/service/.
2020-11-14 11:06:17
614
翻译 微服务之Go-Micro(十)服务熔断和降级 hystrix-go 介绍
介绍使用说明以命令模式执行 Hystrix 代码定义依赖外部系统的业务程序逻辑(即运行外部业务逻辑的入口),将功能传递给hystrix-go系统正常时,就只会运行这个业务程序逻辑hystrix.Go("my_command", func() error { // talk to other services return nil}, nil)定义回退行为如果你想要你的外部业务代码在服务中断期间运行,那你就把第二个函数,也就是运行外部业务逻辑的入口,传给hystrix-go.
2020-11-14 10:59:23
753
原创 微服务之Go-Micro(八)基于Gin框架的Http网关
背景在单体应用时代,客户端向后端服务器发起请求来获取数据。负载均衡器将请求路由给后端的集群服务的某一个,然后后端服务器程序会从DB获取数据返回给客户端。微服务架构下,单体应用被切割成多个微服务,如果将多个微服务直接对外暴露,肯定会出现诸多问题客户端的请求报文和微服务暴露的API不匹配,协议可能都不一样,有的是二进制的rpc,也可能使用某种消息传递协议微服务难以重构,为了满足需求合并或者重构服务势必导致开发成本因此,微服务网关应运而生需求描述客户端向基于Gin框架构建Http网关发起.
2020-11-10 23:47:17
1629
1
原创 微服务之Go-Micro(七)装饰器Wrapper
Clientpackage mainimport ( "context" "fmt" "github.com/micro/go-micro/v2" "github.com/micro/go-micro/v2/client" "github.com/micro/go-micro/v2/metadata" "github.com/micro/go-micro/v2/registry" "github.com/micro/go-micro/v2/registry/etcd" Models.
2020-11-09 22:53:55
435
原创 微服务之Go-Micro(六)GRPC调用
工具下载protobufhttps://github.com/protocolbuffers/protobuf/releases/download/v3.13.0/protoc-3.13.0-win64.zipWindow 下安装:Linux 安装tar -xvf protobufcd protobuf./configure --prefix=/usr/local/protobufmakemake checkmake install如遇报错,则需升级gcc:e.
2020-11-08 22:22:32
546
原创 微服务之Go-Micro(五)指令方式启动多个服务
Server 源码package mainimport ( "fmt" "github.com/gin-gonic/gin" "github.com/micro/go-micro/v2/registry" "github.com/micro/go-micro/v2/registry/etcd" "github.com/micro/go-micro/v2/web")// 全局中间件func GlobalMiddle(c *gin.Context) { fmt.Println(".
2020-11-08 22:22:20
787
原创 微服务之Go-Micro(四)如何构造一个微服务集群中的Client
Etcd 注册中心访问http://127.0.0.1:8082/service/user如下源码package mainimport ( "fmt" "github.com/micro/go-micro/v2/client/selector" "github.com/micro/go-micro/v2/registry" "github.com/micro/go-micro/v2/registry/etcd" "log")func main() { reg :.
2020-11-08 22:21:59
332
原创 微服务之Go-Micro(三)把服务注册到ETCD中
服务注册由于单体应用演进为微服务集群,那么服务的管理即注册和发现应运而生,由此微服务的角色成了 服务提供者(Server)、服务消费者(Client)和服务注册中心(Registry)微服务(Server)在启动时,将自己的网络地址等信息注册到注册中心,注册中心负责存储和维护这些数据。服务消费者(Client)从注册中心查询服务提供者的地址,并通过该地址调用服务提供者的接口。每个微服务与注册中心使用一定机制通信(例如心跳)。如果注册中心与某微服务长时间无法通信,就会注销该实例。微服务网络地.
2020-11-08 22:21:48
969
原创 微服务之Go-Micro(二)Gin管理微服务的API
环境准备Go语言版本golang 1.14依赖库 go-microgo get -u github.com/gin-gonic/gin源码package mainimport ( "github.com/gin-gonic/gin" "github.com/micro/go-micro/v2/web")func main() { router := gin.Default() router.Handle("GET", "/", func(context *gin.
2020-11-08 22:21:34
769
原创 微服务之Go-Micro(一)如何构造一个微服务集群中的Server
环境准备Go语言版本golang 1.14依赖库 go-microgo get -u github.com/micro/micro/v2源码在这里插入代码片package mainimport ( "github.com/micro/go-micro/v2/web" "net/http")func main() { server:=web.NewService(web.Address(":8001")) server.HandleFunc("/", func.
2020-11-08 22:21:20
371
1
转载 “努力就会成功”
我们学计算机当程序员最大的福气不是可以到大公司里加班和996,而是我们生活在了第三次工业革命的信息化时代,这才是最大的福气,所以,我们应该努力地提升自己,而不是把自己当劳动力一样的卖了!在这样的一个时代,你要做的不是通过加班和拼命来跪着挣钱,而是通过技能来躺着挣钱
2020-05-05 12:04:01
282
原创 (十) Angular 8 响应式开发 --RXJS 资源集合(二)
官网: https://rxjs.dev/guide/overview中文手册 https://cn.rx.js.org/manual/index.html
2020-05-02 23:41:57
319
原创 (九) Angular 8 响应式开发 --RXJS(一)
可观察对象用法实战输入提示(type-ahead)建议可观察对象可以简化输入提示建议的实现方式。典型的输入提示要完成一系列独立的任务:从输入中监听数据。移除输入值前后的空白字符,并确认它达到了最小长度。防抖(这样才能防止连续按键时每次按键都发起 API 请求,而应该等到按键出现停顿时才发起)如果输入值没有变化,则不要发起请求(比如按某个字符,然后快速按退格)...
2020-05-02 23:26:49
437
原创 (十)python 设计模式 --- 适配器模式
背景当我们把异构组件用于另一个系统中,不对代码进行任何修改的仍然能进行通信的情况很少见。但又并非总是能修改该组件代码。如果是外部提供的组件,修改代码也不切实际。此时我们可以编写一个额外的代码层,该代码层让异构组件接口和调用端结构能够通信。适配器模式(Adapter pattern) 结构性设计模式,帮助我们实现不兼容接口之间的兼容原则不要求访问他方接口的源代码不违反开放/封...
2020-05-02 23:08:08
384
原创 (九)python 设计模式 --- 亨元模式
背景一个对象的创建,玩玩伴随着一定的开销,性能问题也将不得不面对。一个大型复杂系统,当需要创建大量的同时段并存的对象时,资源受限将是个问题。因为从理论上讲,当我们创建一个对象时,往往需要分配额外的内存,虽然现在的操作系统对内存的管理大都是基于虚拟内存的理论,理论上有超出硬件内存容量的内存空间。但实际一个系统如果耗尽了所有的物理内存,就会开始将内存页替换到二级存储设备,往往是硬盘,这个样的...
2020-05-02 18:16:24
337
原创 如何解决邮件中通过http链接展现在邮件正文的媒体资源访问不到的问题(python)
背景当面临,所处开发、测试和生产环境面临各种墙的情况下,邮件中附带的超文本链接的资源在邮件发送后,邮件接收者因为自身所处的接收端的网络条件限制(例如,外网访问内网资源),而访问不到的情况。如下跨墙解决方式或许能够给您一些参考解决方案如果无法访问资源是图片形式,可将图片转成base64的形式<img src="data:image/png;base64, ****"/>替换邮件正...
2020-02-23 02:03:04
572
原创 (八) Angular 8 开发必备清单--proxy配置文件代理
代理到后端服务器你可以使用 webpack 开发服务器中的代理支持来把特定的 URL 转发给后端服务器,只要传入 --proxy-config 选项就可以了。 比如,要把所有到 http://localhost:4200/api 的调用都转给运行在 http://localhost:3000/api 上的服务器,可采取如下步骤。在项目的 src/ 目录下创建一个 proxy.conf.json...
2020-01-04 15:38:34
2805
原创 iframe与宿主页面的通信问题
1. 利用 sessionStorage 进行相对安全的通信(localStorage)保存数据语法:sessionStorage.setItem("key", "value");读取数据语法:var lastname = sessionStorage.getItem("key");删除指定键的数据语法:sessionStorage.removeItem("key");...
2020-01-04 15:19:40
1195
原创 Python雾里看花-链式调用
# -*- coding: utf-8 -*-class SuperTupl(tuple): def to_lis(self): return list(self) def to_dic(self, set_key=0): a = {str(val[set_key]): val for val in self} return...
2019-07-27 22:37:32
300
原创 Git报错- 【refusing to merge unrelated histories】
To git@service1:/srv/Service/.gitremote: error: You can set 'receive.denyCurrentBranch' configuration variable to ! refs/heads/master:refs/heads/master [remote rejected] (branch is currently ...
2019-04-30 20:41:37
502
原创 docker命令拾遗(一)
docker 管理命令docker systemdocker system df 显示docker容器与镜像的磁盘使用情况docker system events 获取实时事件docker system info 显示系统相关的信息docker system prune 删除无用数据磁盘清理命令 【 API 1.25 + 】docker system prune删...
2019-04-30 20:35:49
192
protobuf-3.13.0.1.zip
2020-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人