- 博客(447)
- 资源 (2)
- 收藏
- 关注
原创 Go结构体标签与自定义结构体标签
在这个示例中,我们有一个名为 Person 的结构体。该结构体有一个叫做 "Age" 的字段,该字段有一个结构标签min=18,将最小年龄限制设定为 18 岁。该结构体还有一个名为 "Name" 的字段,该字段有一个结构标签,这意味着该字段不能为空。例子的目标是创建一个可以理解这些结构标签并基于这些规则验证Person对象是否有效的验证函数。具体来说,我们将创建一个函数,用来检查Person的年龄是否≥18岁,以及姓名字段是否不为空。
2025-01-23 11:49:27
1198
1
原创 Go匿名结构体使用场景
struct { ... }:定义一个匿名结构体类型。匿名结构体通常用于临时数据结构或一次性使用的场景。你可以在匿名结构体中嵌套其他匿名结构体。通过使用匿名结构体,你可以在 Go 程序中方便地定义和使用临时数据结构,而无需为其定义单独的类型名称。匿名结构体可以让我们不用先定义结构体类型,再定义结构体变量。让结构体的定义和变量的定义可以结合在一起,一次性完成。构造测试数据处理Json嵌套锁。
2024-10-31 17:51:23
985
原创 Go语言匿名字段使用与注意事项
当匿名字段没有指定标签时,序列化后的结构为同级,如当匿名属性和主属性的字段标签一样时,序列化会忽略匿名属性的字段。当匿名属性和主属性的字段标签不一样时,序列化不忽略任何字段。
2024-09-26 11:42:21
924
原创 MySQL update set语句中 逗号与and的区别
以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:参数说明:例如表中目前id = 101的数据执行后:有时把set后面字段间的逗号替换成and也不会报错:之后的结果为:可以看到age的值为1 。 这是因为MySQL 在语法上,并不认为 and 这个用法是错误的,那么说明 MySQL 用另外的方式“解读”了这个语句。最容易想到的,就是 MySQL 是不是在 set 的时候,把 and 解释成了逻辑运算符,而不是英文意义上的“和”?,上面语句standard_d
2024-08-02 10:34:45
516
原创 Go select 语句使用场景
select 语句中除 default 外,每个 case 操作一个channel,要么读要么写select语句中除 default 外,各 case 执行顺序是随机的select 语句中如果没有 default 语句,则会阻塞等待任一 caseselect 语句中读操作要判断是否成功读取,关闭的 channel 也可以读取。
2024-06-07 20:11:52
1307
原创 Go 切片常用操作与使用技巧
在 Go 语言中的切片(slice)是一种灵活的动态数组,它可以自动扩展和收缩,是 Go 语言中非常重要的数据结构之一。切片是基于数组实现的,它的底层是数组,可以理解为对底层数组的抽象。它会生成一个,并通过切片长度关联到底层数组部分或者全部元素。
2024-05-23 19:06:15
1584
原创 Dubbo3.x 异步转同步源码
底层netty通信是异步的,那我们平时调用采取的同步是如何将底层的异步转为同步的呢?dubbo远程rpc协议和网络框架有多种,我们以默认的dubbo协议、网络框架netty作为切入点.
2024-05-14 17:29:42
965
原创 BigDecimal工具类编写
1.在创建BigDecimal对象时,需要注意构造函数的使用。如果使用字符串或者字符数组、或者int整型等参数来创建BigDecimal对象,可以保证精度不会丢失;而如果使用浮点数或双精度数等参数创建BigDecimal对象,则可能会出现精度丢失的问题。因为部分浮点数计算本身就无法表示,所以在传入bigdecimal对象里的时候就已经丢失精度了。所以,在涉及到精度计算的过程中,我们尽量使用 String 类型来进行转换。
2024-03-05 20:01:53
430
1
原创 Java stream求和以及mapToDouble sum精度丢失解决办法
在 Java 8 中,合并流的元素并产生单个值。其中double求和会丢失精度,可以使用。
2023-09-05 16:00:45
3789
1
原创 Mac下IntelliJ IDEA快捷键
⌘ Command⇧ Shift⌥ Option⌃ Control⌫ Delete⌦ 向前删除键(Fn+Delete)↑ 上箭头↓ 下箭头← 左箭头→ 右箭头End Fn + →⇥ 右制表符(Tab键)⇤ 左制表符(Shift+Tab)快捷键。
2023-06-20 16:01:43
876
原创 MySQL update set 语句中,与 and的区别
这是因为MySQL 在语法上,并不认为 and 这个用法是错误的,那么说明 MySQL 用另外的方式“解读”了这个语句。最容易想到的,就是 MySQL 是不是在 set 的时候,把 and 解释成了逻辑运算符,而不是英文意义上的“和”?(70 and non_standard_duration = 5)中的70不为0所以为true,non_standard_duration=5和表中的值是相等的,所以也为true,所以整个表达式的值为true,因此最终standard_duration的值为1(true)
2023-05-05 11:18:05
601
原创 GitLab revert 导致新提交 merge 代码丢失(diff丢失)
你将本地的原分支feature_xxx代码修改后提交到远程分支,发起Merge到Master的申请会发现,feature_xxx分支和master分支的差异commit只有feature_xxx分支revert后的提交记录(之前的代码变动都没有了)是因为对于master而言,已经合并过feature_xxx,master包含feature_xxx的commitid,这些提交不会参与diff,所以不会显示出两个分支的不同。然后将代码提交到你原分支的远程分支feature_xxx。...
2022-07-18 14:37:45
3336
转载 Go select死锁分析
首先进入要上传代码的目录,例如,我要将test文件夹下的代码上传到gitlab,则,cd test1通常需要创建README.md文件,echo "# test" >> README.md1执行git命令,此命令会在当前目录下创建一个.git文件夹,git init将项目的所有文件添加到仓库中,git add .这个命令会把当前路径下的所有文件,添加到待上传......
2022-07-15 16:56:35
256
原创 Go struct和map转化为JSON串
struct和map转化为json串主要就是由于map无序,转化后的json串key是无序的如果参数是接收一个参数,那么通过结构体和map转化都是可以的代码示例:package mainimport ( "encoding/json" "fmt")type Person struct { Name string `json:"name"` Age int `json:"age"` Like []string `json:"like"` //不加`json:"like"
2022-05-17 16:54:43
933
原创 Go 常见使用问题记录
1.字符串分割,如果对""空字符串分割会怎么样func main() { str := "" sList := strings.Split(str, ",") fmt.Println(sList) if sList == nil { fmt.Println("分割空字符串后列表为空") } else { fmt.Println(fmt.Sprintf("分割空字符串后列表不为空,列表长度为:%d", len(sList))) for index, value := range s
2022-04-19 15:07:53
1224
原创 Go 字符串时间等相互转化以及时间加减等操作
1.获取当前时间的第二天零点时间,以及获取当前的23:59:59 的时间戳和date类型:package mainimport ( "fmt" "time")func main(){ timeStr := time.Now().Format("2006-01-02") fmt.Println(timeStr) //使用Parse 默认获取为UTC时区 需要获取本地时区 所以使用ParseInLocation t2, _ := time.ParseInLocation("2006-
2022-04-19 10:33:44
3373
原创 Go版本升级
需求:将Go版本升级到1.15版本中的最新版,例如我升级的时候1.15中最新的是版本是1.15.15升级步骤:先执行Go卸载brew uninstall go执行升级命令brew install go@1.15配置环境变量:# 编辑 ~/.zshrc文件,加入下面两行export GOPATH=$HOME/goexport PATH=$GOPATH/bin:$PATH# 保存后执行使配置立刻生效source ~/.zshrc然后执行:brew li.
2022-04-02 11:40:49
1447
原创 Mac使用brew安装Python3.*并设为默认版本
mac系统虽然默认打开的是python2,但是也默认自带了python3,只要在终端用命令python3就会打开python3下面讲的是用brew安装最新的python3brew install python3可以看到python3的实际安装目录是/usr/local/Cellar/python@3.9/3.9.12打开配置文件并写入python的外部环境变量open ~/.bash_profile然后写入:export PATH=${PATH}:/usr
2022-03-29 22:12:59
12749
原创 redis 为什么对数字/字符串append操作后,编码格式object encoding从int/embstr变成raw了
不单单int编码类型(type是string),进行字符串操作后,会自动转码为raw;对普通的短字符串(长度小于等于44个字节)进行append操作后,编码格式也会发生改变(即使操作后长度还是小于等于44个字节也会由原来的embstr变成raw)!embstr存储形式将 RedisObject 对象头和 SDS 对象连续存在一起,使用 malloc 方法一次分配。redis 3.2之后empstr只能容纳44字节:embstr的最小占用空间为19(16+3),而64-19-1(结尾的..
2022-02-14 14:55:32
1106
原创 Mac环境下使用CLion调试redis 6.X源码
1.下载并安装CLion下载地址:Download CLion: A Smart Cross-Platform IDE for C and C++2.打开CLion并导入redis源码源码地址:https://github.com/redis/redis选择自己要下载的版本,我这里下载的6.2.1导入CLion步骤:将上图中复制的地址导入CLion,或者下载ZIP包然后解压后导入,这步骤很简单2.进行编译构建这一过程有可能出现下面的错误:...
2022-02-11 11:33:02
2262
1
原创 MySql 连接查询中 on 和 where 的区别
大家可以先看MySQL:left join 避坑指南看过之后再接着看下面在多表查询时,ON和where都表示筛选条件,on先执行,where后执行。 on 后跟连接条件,然后再加的筛选条件只针对关联表(从表) 执行顺序:从表按照条件筛选,然后再进行连接;即先筛选再连接 where 则针对连接后产生的临时表进行筛选 执行顺序:先连接再筛选 区别:外连接时,on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。而where条件是在临时表生.
2022-01-21 16:52:44
4620
1
转载 go 格式化输出
官方英文:https://golang.org/pkg/fmt/【简介】 fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf。格式“占位符”衍生自 C,但比 C 更简单。【打印】占位符:[一般] %v 相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名 %#v 相应值的 Go 语法表示 %T 相应值的类型的 Go 语法表示 %% 字面上的百分号,并非值的占位符[布尔] %t 单词 true 或 fal.
2022-01-05 21:07:42
645
原创 MySQL redo和binlog
redo log用来保证事务的持久性redo概念可以参考:MySQL · 引擎特性 · InnoDB redo log漫游mysql是如何保证一致性的呢?最简单的做法是在每次事务提交的时候,将该事务涉及修改的数据页全部刷新到磁盘中。但是这么做会有严重的性能问题,主要体现在两个方面:因为Innodb是以页为单位进行磁盘交互的,而一个事务很可能只修改一个数据页里面的几个字节,这个时候将完整的数据页刷到磁盘的话,太浪费资源了! 一个事务可能涉及修改多个数据页,并且这些数据页在物理上并不...
2021-12-31 11:09:11
1288
1
转载 Mac下安装Redis
使用Homebrew安装Redis(1)安装命令:brew install redis(2)查看软件安装及配置文件位置Homebrew安装的软件会默认在/usr/local/Cellar/路径下;redis的配置文件redis.conf存放在/usr/local/etc路径下(3) 启动redis服务方法一:brew除了可以帮助我们安装软件以外,还可以帮助我们启动软件brew services start redis方法二:redis-server /usr
2021-09-01 20:49:32
235
原创 Go 排序
示例代码:import ( "fmt" "sort")type Person struct{ name string age int8}type PersonSortList []Personfunc (p PersonSortList) Len() int { return len(p)}func (p PersonSortList) Swap(i, j int) { p[i],p[j] = p[j],p[i]}func (p PersonSortList
2021-08-30 21:04:05
179
原创 go 打印 %v %+v %#v 的区别
v 值的默认格式%+v添加字段名(如结构体就先输出结构体的字段类型,再输出该字段的值)%#v 相应值的Go语法表示代码示例:package mainimport ( "fmt")type EqStruct struct{ Name string Age int32}func main(){ e1 := EqStruct{} e1.Name = "2" fmt.Printf("e1=%v \n", e1) //如果值是一个结构体,%+v...
2021-07-23 16:44:42
1040
原创 Intellij idea中修改git账号名
Intellij idea中修改git账号显示名(也即git提交代码的作者名字)可以通过git config user.name查看当前的用户名。修改git代码提交人显示的信息,可以使用如下命令在idea的Terminal中执行:git config --global user.name "xxx"...
2021-06-28 20:24:18
1469
原创 从数据库中分批取数据进行处理
思路1:用分页查询的方式取先查询出要处理的总数据量 count,然后假设每批要处理100条,代码 //获取可push的记录进行发送消息 private void getData(){ //查出总数据量 long count = xxxMapper.countByExample(example); int pageSize = 100; long pageNum = count / pageSize; l
2021-05-20 20:15:23
1970
原创 git将本地分支与远程分支建立联系
关联命令:git branch --set-upstream-to=origin/<branch> <localbranch>
2021-04-14 15:26:19
840
原创 Go time.Time比较时间大小
可以将待比较的时间格式化成相同格式的字符串,然后使用time的Before, After, Equal 方法即可.例子:func main(){ time1 := "2021-03-19 09:23:29" time2 := "2021-03-20 08:50:29" //先把时间字符串格式化成相同的时间类型 t1, err1 := time.Parse("2006-01-02 15:04:05", time1) t2, err2 := time.Parse("2006-01-02 1
2021-03-19 14:20:25
27808
原创 python将列表转化为字典结构,相同Key的放入value列表中
将列表按照其中元素对象的某一属性为key转化为字典结构,相同Key的对象放入value列表中代码示例:# coding=utf-8import jsonclass Person: def __init__(self, name, age, id): self.name = name self.age = age self.id = id def __str__(self): return '姓名:%s 年龄.
2021-02-07 10:48:50
2246
1
原创 Go time获取本周一\下周一\下周日
主要用到了AddDate对时间进行加减天数,time.Weekday()得到今天是周几,周日对应的是0,周一到周六对应1,2,3,4,5,6我们接下来的计算代码是一周从周一开始周日结束,既周一到周日为同一周。package mainimport ( "fmt" "time")func main(){ now := time.Now() lastMonday ,err:= GetLastWeekMonday(now,"20060102") lastSunday ,err:=
2021-01-10 20:21:20
5005
原创 有想加入字节跳动的吗
北京 上海 杭州 南京 深圳 成都都有岗位 ,开发 测试 算法 大数据 产品 运营 销售 等岗位都有,要求本科及以上学历,想来试试的把简历发我邮箱liuhmmjj@163.com
2020-12-02 11:10:30
371
图解HTTP(彩色高清带目录).zip
2019-06-24
elasticsearch权威指南高清中文pdf
2019-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人