自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 go chan基本使用

怎么理解这个缓冲,我个人的理解是是执行这个chan 操作的时候是否发送阻塞。操作:读和写。读取的时候,我们都应该要是阻塞的,例如我们的socket、的recv函数。当然取决于你设置的是阻塞的套接字还是非阻塞的套接字了。无缓冲的chan,讲究读写对称,也就是你在读的时候会阻塞,看下面这个例子:ch是一个无缓冲的chan,在主线程里面,ch

2023-04-27 14:04:34 1613 5

原创 735. 行星碰撞

给定一个整数数组 asteroids,表示在同一行的行星。对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动)。每一颗行星以相同的速度移动。找出碰撞后剩下的所有行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入:asteroids = [5,10,-5]输出:[5,10]解释:10 和 -5 碰撞后只剩下 10 。 5 和 10 永远不会发生碰撞。示例

2022-07-13 23:40:17 107

原创 1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[

2022-07-12 21:00:16 63

原创 mysql事务

mysql 是我们很熟悉的数据库系统,我们对于mysql的了解有哪些?如果让我们设计一个数据库系统我们会如何考虑?能不能就mysql 的一个方面有一个较深入的了解?mysql 的系统架构的分层:第一层是大多数基于网络的客户端/服务器的工具或者服务都有的架构,用于处理网络请求的,连接处理,授权认证,安全等。第二层是mysql的核心服务功能,包括查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现。第三层包含了存储引擎,存储引擎负责了msyql 中的数据存储和提取。服务器通过API与

2022-07-08 17:43:21 1009

原创 mysql 忘记密码后重置

1、修改my.ini增加 skip-grant-tables2、停止 net stop mysql3、启动 net start mysql4、登录 mysql -u root -p[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtS3rTAe-1656422055977)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220628201259002.png)]5、更新sqluse mysql;

2022-06-28 21:15:01 314

原创 华为od一面面试算法

华为od面试算法

2022-06-11 14:11:59 2592 6

原创 链表中倒数最后k个结点

描述输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。数据范围:要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)进阶:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)例如输入{1,2,3,4,5},2时,对应的链表结构如下图所示:其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有的节点来比较。示例1输入:{1,2,3

2021-11-16 13:24:59 116

原创 goland执行linux命令操作

goland执行linux命令需求代码实例需求需要通过openssl 生成rsa 秘钥,然后保存该秘钥。代码实例package mainimport ( "io/ioutil" "bytes" "fmt" "os/exec")func main() { //获取当期执行路径 pwd, err := utils.ExecShell("pwd") if err != nil { fmt.Println("当前命令执行出错") } rootPath := st

2021-10-14 19:29:05 754

原创 goweb入门之gorm

go web 入门之gormJava转go,个人觉得学习一门新的语言最重要的是可以将我们已经实现的项目通过新的语言实现,这样可以开始看到效果不至于失去了兴趣。作为web 开发,无论是微服务架构也好,单体架构也好,最基本的还是增删改查。所以mvc模式以及与数据库交互的逻辑都是通用的,可以通过增删改查入门一个框架,然后再详细学习,循序渐进。准备条件go 的orm 框架这里选择的是gormgo mod 管理1、引入相关的依赖下载相关的依赖由于go 讲究没有的代码要删除,所以必须先import 然后使用

2021-07-24 13:33:37 211 3

原创 git 恢复单个文件到之前的提交

git命令将单个文件回滚到之前提交版本1、git log + fileName例如 我们想恢复auditListLogic.go 这个文件,先进入到文件目录下,或者写全文件路径通过git log auditListLogic.go 即可看到文件提交信息2、git checkout 3、git staus 查看状态,重新commit4、提交远程即可 git push origin zdm/rule-recovery...

2021-07-24 12:54:47 1343

原创 在filter中获取request的输入流以至于出现getInputStream() has already been called for this request问题的解决

filter处理request数据,并对其进行校验问题需求出现的问题解决方法最后代码问题需求现在需要对所有用户的输入数据请求进行处理,要求用户请求数据的数据不含有html的标签。对于该问题首先我们可以写一个filter过滤器,取出request中的数据,请求数据包括param和body的形式,也就是字符串拼接或者放在请求体中。取出数据后,在进行正则表达式校验就可以了。出现的问题思路就是这样,在写的过程中,但是由于我们从request中调用了getInputStream(),这样会导致,在con

2021-02-05 23:01:22 1722 4

原创 基于SpringBoot实现数据源的切换

基于SpringBoot实现数据源的切换多数据源切换的思路yml 配置多数据源注入数据源bean定义apo切面以及数据源切换注解测试样例多数据源切换的思路Spring 框架具有ioc和aop两大特性,简单来说就是管理bean和面向切面编程。通过Spring 框架实现我们的动态数据源,可以通过继承yml 配置多数据源注入数据源bean定义apo切面以及数据源切换注解测试样例...

2021-02-02 22:31:25 447

原创 Centos7下安装mysql5.7

Centos7下安装mysql5.71、查看是否安装了mysql。2、下载mysql wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm3、安装mysql源 yum -y install mysql57 -commity-release-el7-11.noarch.rpm4、查看安装效果 yun repolist enabled | grep mysql.*5、安装mysql服务器(yun in

2020-09-06 12:26:53 342

原创 git基础操作之上传与下载

git基础操作之上传与下载git下载与安装github创建仓库github删除仓库git上传项目到仓库git下载项目到本地参考文章git下载与安装下载网址:git下载地址.官网下载git太慢,可以参考这篇博客链接: git传送门.下载完成至此git安装完成。查看本机的系统环境变量,我们发现在path下多了一个我们安装的git的可执行的目录,也就是我们可以通过windows下的cmd可以直接操作git的命令。github创建仓库要实现通过git上传项目到仓库,首先我们要有一个gith

2020-09-01 22:38:54 923 1

原创 面试八股文之一HashMap源码分析

HashMap源码分析jdk1.7HashMapjdk1.8HashMap面试官:说一下HashMap的底层数据结构?面试官:说一下HashMap的扩容机制?面试官:说一下HashMap是不是线程安全的?从而引出ConcurrentHashMap。面试官:说一下HashMap的put的过程是怎么样的。面试官:把你知道的都告诉我。我jdk1.7HashMapjdk1.8HashMap...

2020-08-27 16:54:29 2403 2

原创 SpringBoot基础之@SpringBootApplication分析

Spring的自动装配@SpringBootApplication一、@SpringBootConfig二、自定义start一、@SpringBootConfig随着Spring框架的流行,在web服务器端的开发,Spring几乎成了开发的标准。但是随着开发的业务越来越复杂,分布式微服务的出现。基于SpringBoot开发在web服务端以及分布式微服务应用中SpringBoot和基于SpringBoot的SpringCloud等也已经成为了主流。SpringBoot的特点创建独立的Spring应用

2020-08-25 21:30:57 3205 11

原创 Java注解实现以及应用

java注解的实现以及注解的作用四大元注解自定义注解java反射java注解在java框架中的使用四大元注解java注解是在jdk1.5版本出现的,注解(Annotation)可以理解为对代码的解释,可以做一些扩展或者补充。注解通常有这样几个作用范围、作用在class上、还有就是方法上method,还有就是字段上。注解与注释的不同就不用赘述了。可能我们在最开始学习或者入门做些小的开发时,很少去理解注解到底是怎么实现。但是只有当我们能真正理解注解,并能在实际中使用他。自己设计出非常精妙的注解,使我们的代码

2020-08-21 20:10:42 1108 1

原创 mysql的读提交与可重复读

隔离级别脏读可能性不可重复读可能性幻读可能性加读锁YESYESYESNONOYESYESNONONOYESNONONONONOmysql事务时间事务1事务2事务3T1beginbeginbeginT2T3commitT4T5T6commitT7commitT8T4 的时候事务3 读到了提交的数据T4的时候事务2由于在提交直接读了一遍相同的数据,因此事务2读到的是提交之前的数据。

2023-04-25 00:20:30 515

原创 Redis-cli Go代码

如果您计划运行生产Redis Cluster部署,或者想更好地了解Redis Cluster如何在内部工作,请参阅Redis Cluster规范(https://redis.io/docs/reference/cluster-spec/)。要了解Redis Enterprise如何处理缩放,请参阅Redis Enterprise的线性缩放(https://redis.com/redis-enterprise/technology/linear-scaling-redis-enterprise)。

2023-04-23 21:12:48 600

原创 Protocol Buffers Go Generated Code Guide

例如,Go导入路径为example.com/project/protos/fizz的输入文件protos/buzz.proto会在example.com/project-protos/fizz/pzz.pb.Go中生成一个输出文件。如果未指定路径标志,这是默认的输出模式。例如,Go导入路径为example.com/project/protos/fizz的输入文件protos/buzz.proto会在example.com/project-protos/fizz/pzz.pb.Go中生成一个输出文件。

2023-04-18 23:08:28 401

原创 Protocol Buffers 介绍

Protocol Buffers ,协议缓冲区。什么是Protocol Buffers呢?或者我们简称PB 吧。那么Protocol Buffers 是一种与语言无关、与平台无关的可扩展机制,用于序列化结构化的数据。example自定义一个协议使用生成的类持久化数据什么是Protocol Buffers ?协议缓冲区是谷歌的语言中立、平台中立、可扩展的机制,用于序列化结构化数据。比如xml,但是相比较xml 更小,更快,更简洁。您可以定义一次数据的结构化方式,然后可以使用特殊生成的源代码,使用各种语

2023-04-15 22:11:29 420

原创 Redis - Hash

HINCRBY increments the value at a given field by the integer provided. HINCRBY将给定字段的值递增所提供的整数。HMGET returns the values at one or more given fields. HMGET返回一个或多个给定字段的值。HSET sets the value of one or more fields on a hash. HSET设置哈希中一个或多个字段的值。

2023-04-09 23:57:29 60

原创 Redis-Set

Redis Sets是唯一字符串(成员)的无序集合,你可以使用Redis有效的进行以下三种场景1、跟踪唯一项目(例如跟踪方位给定博客文档的所有唯一IP地址)2、表示关系(例如,具有给定角色的所有用户的集合)3、执行常见的集合操作,如交集、并集和差集。例1:为用户123 和456 存储一组喜爱的图书ID检查用户123 是否喜欢742 和299用户123 和456 共同喜欢的书籍限制1<<32 -1。

2023-04-09 23:32:46 140

原创 Redis -List

LMOVE 从todo的list队列移动到in-process 队列中,原子操作。原子性的操作,从一个list push 出来到另一个list中。Redis列表是字符串值的链表。1 << 32 -1(4294967295)个元素。第一种情况,将List视为一种先进先出的队列。本章介绍redis 的List的数据结构。LPUSH 将一个新元素添加到列表的头部。RPUSH 将一个新元素添加到列表的尾部。移除并获取列表的第一个元素,如果没有阻塞。LTRIM 保留特定区间的元素。list支持多个阻塞的命令。

2023-04-09 22:57:43 279

原创 redis 第一章

redis 是一个开源的软件,可以存储结构化的数据在内存中,像内存数据库,缓存、消息中间件、流处理引擎。redis 提供的数据结构像strings, hashes, lists, sets, sorted sets。Redis具有内置复制、Lua脚本、LRU驱逐、事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster的自动分区提供高可用性。您可以对这些类型进行原子操作,比如附加到字符串;递增散列中的值;将元素推送到列表中;计算集交集、并集和差集;

2023-04-09 18:59:40 311

原创 go binary包

最近在看一个第三方包的库源码,bigcache,发现其中用到了binary 里面的函数,所以准备研究一下。可以看到binary 包位于encoding/binary,也就是表示这个包的作用是编辑码作用的,看到文档给出的解释是用于数字和字节序的转换以及变长值的编解码。

2023-04-09 11:29:06 820

原创 bigcache 源码解析

为什么要传递上线文呢,上下文可以作为协程之间的通信,通过我们对于每个请求都会创建一个上下文,用于在函数之间的传递,其中包括WithCancle,WithDateLine,WithTimeOut,WithValue。以上就是我们从git 上拷贝的样例,其中我们可以看到,第一步先new出一个cache 出来,这里主要包含两个参数,一个上下文,一个是Config对象。Config 对象就是我们的cache的一个核心配置对象了,我们来看一看config 对象都有些什么。bigcache 源码解析。

2023-04-08 11:36:00 466

原创 判断某个数是不是2 的指数倍

正常思维不断除以2 直到余数为0 或者余数不为0 不为0说明不是2的指数倍。按位与操作,当num&(num-1) 为 0 时正好此时该数是2的指数倍。判断是不是2的指数倍,2 4 8 16 32 64 …

2023-04-07 19:38:14 110

原创 mysql-查询优化

mysql 做为数据存储的中间件,在业务上使用的非常频繁,与此同时,数据包括新增、修改、删除、查询,这四个基本操作。不可否认,我们使用的最频繁的是查询。查询的应用场景下,包含各种各样的条件与场景:1、分页2、模糊查询3、分组查询4、排序事实上针对不同的业务场景,我们处理sql 的场景不同。针对查询条件我们会建立索引。如果数据库数据表的数据太多,我们还可能考虑分库分表,总之针对不同的情况,我们优化的方案不尽相同。

2023-04-06 21:12:29 276

原创 go实现一个本地缓存

提升性能,快速响应。通常我们对于持久化数据都会放在数据库中,一般来说,我们都是直接访问数据库的,数据的性能瓶颈在于1、网络连接2、磁盘io,取决于sql 性能与数据量等等。一般我们针对我们的应用程序会增加一层缓存,在选择缓存时,我们也会有很多选择、包括redis、memcache、这些都是作为进程独立部署的,可以用于分布式缓存。如果从业务量出发,同时成本低,我们可以采用本地缓存的方式,本地缓存具有的优点1、访问快,不需要网络连接2、易于实现缺点。

2023-04-04 22:24:52 1216 2

原创 go实现socket通信

socket 编程

2023-03-31 00:20:39 573 2

原创 冒泡、插入、归并、快速、基数、桶、堆、计数、希尔九大排序

堆排序、快速排序

2023-03-23 21:20:56 65

原创 go chan

go chan

2023-03-08 20:01:43 97

原创 价值百万的2022年度总结

2022年,有一部分时间在居家办公,工作方式方法经过了不断的学习与打磨,慢慢得感觉也成熟了很多。我们身处江湖之中,任何时候都需要不断学习,不断进步。运气不顺时低调处事,可以帮我们渡过低谷。

2023-01-12 21:37:42 506 1

原创 318. 最大单词长度乘积

leetcode

2022-10-27 23:11:06 141

原创 第一个只出现一次的字符

描述在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)数据范围:0 \le n \le 100000≤n≤10000,且字符串只有字母组成。要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)示例1输入: “google” 返回值: 4输入:“aa” 返回值:-1import java.util.*;public class Solution { public int FirstNotRepeat

2021-11-11 13:36:54 251

原创 删除链表的节点

删除链表的节点描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。1.此题对比原题有改动2.题目保证链表中节点的值互不相同3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点数据范围:0<=链表节点值<=100000<=链表长度<=10000示例1输入:{2,5,1,9},5返回值:{2,1,9}说明:给定你链表中值为 5 的第二..

2021-11-06 19:32:30 86 2

原创 git 命令

丢弃当前合并git merge --abort

2021-09-17 14:32:15 68

原创 go文件操作

go 文件操作一、文件创建二、文件读取三、文件删除四、文件修改文件操作是非常重要的,从实际的应用场景看,文件可以用来存储大量的数据,例如通过文件来记录日志,通过文件来存储大量的文本。文本操作我们也可以抽象为对内容的增删改查。抽象为四个接口,Read、Write、Create、Delete。通过这四个基础的方法我们可以对文件进行操作。一、文件创建//go 语言文件的操作十分简单newFile,err := os.Create(path)if err != nil {fmt.Println("文件创

2021-08-30 13:17:59 127

原创 java自定义日志注解

java自定义日志注解日志记录是一件很有意义的事情,通过日志可以记录当前用户做了哪些操作。对当前所做的操作进行描述以及记录。可以发现记录用户当前做了哪些操作是一个公共方法,是否单独写一个工具类,然后每次调用该工具类中的方法呢?显然这种方式不太友好,可扩展性不强。我们可以有更好的设计,可以利用Spring的AOP特性,在某一点进行方法增强。具体的实现:@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD, ElementType

2021-02-23 22:47:57 452

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除