自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 资源 (5)
  • 收藏
  • 关注

原创 swagger报错:ParseComment error in file xxx.go :cannot find type definition: response.RR

先给出解决方案,没有兴趣了解具体的原因,以及swag的源码的可以直接看第一部分即可。命令行中增加一个参数:pdl。参数用于控制是否解析外部依赖文件夹,以及解析的级别。

2024-09-19 15:01:38 680

原创 redis有序集合写入和求交集的速度

团队小伙伴做了一个需求。大概的需求是有很多的图片作品,图片作品有一些类别,每个人进入到每个类别的作品业,根据权重优先查看权重最高的的作品,权重大概是基于每个人对该作品的浏览计算,浏览过的作品放在最后展示。小伙伴是基于redis的有序集合的方式实现的,主要用到写入和求交集这两个操作。我们这个系统的作品数量不算多,目前只有5000左右,用户也只有5000左右,这么小的数据量用这种方式实现,我原本觉得是没什么问题的。但是,实际测试下来,就很离谱,不知道他的程序里哪里导致的异常耗时。

2024-09-14 16:38:42 489

原创 开源项目timingwheel

开源的时间轮使用以及源码阅读

2024-09-10 15:16:44 676

原创 golang闭包中变量获取

闭包的本质是一个语法糖,其本质是获取外部变量在其内部使用。文中case2和case3并未涉及闭包,只是作为对比案例。case4这个案例有点不能理解,汇编看着太吃力了。case4和case5留待后续再研究。

2024-09-05 17:46:16 861 1

原创 gorm scan查询报了Scan error on column index 0, name \“count\“: converting NULL to int is unsupported

解决方案:使用sql.NullInt64。

2024-09-05 15:17:04 159

原创 基于约束大于规范的想法,封装缓存组件

架构?何谓架构?好像并没有一个准确的概念。以前我觉得架构就是搭出一套完美的框架,可以让其他开发人员减少不必要的代码开发量;可以完美地实现高内聚低耦合的准则;可以尽可能地实现用最少的硬件资源,实现最高的程序效率......事实上,架构也并非只是追求这些。因为,程序是人写出来的,所以,似乎架构更多的需要考虑人这个因素。我们发现,即便我们在程序设计之初定了诸多规范,到了实际开发过程中,由于种种原因,规范并没有按照我们预想的情况落实。这个时候,我的心里突然有一个声音:约束大于规范冒了出来。

2024-09-03 15:58:25 1126

原创 docker启动MySQL

参数 -p 设置端口,--name 取名 ,-e MYSQL_ROOT_PASSWORD=123456 设置 账号为 root ,密码为 123456 ,-d 表示作为一个守护进程在后台运行。从容器中将配置文件复制到本地的命令:docker cp 容器id:/etc/my.cnf E:/docker/mysql/conf。使用docker exec -it 容器id /bin/bash进入docker容器。使用docker ps命令查看启动的docker进程。这篇文章只做记录,没有什么值得一看的内容。

2024-08-21 10:23:38 216

原创 mysql索引探索

mysql索引探索

2024-08-20 18:08:31 380

原创 令人困惑的mysql索引

头疼,数据库索引太复杂了,这些case,给了我诸多的困惑,我还需要更深入地学习一下索引的底层原理,方可理解这些case。

2024-08-20 11:45:07 365

原创 为什么MySql使用B+树

对于B树,由于内部节点上存了数据信息,导致一页上索引元素相对就少了很多,第一次搜索到Page1,据此,可以定位到Page4,30到50之间的数据就可以拿到了,这个时候需要进行一次中序遍历,先回到Page4的根节点,再执行一次中序遍历返回到Page1和Page2的根节点,最终搜索到Page2,由此定位到Page5,获取50到60之间的数据,由此,可见,为了获取这个范围内的数据,需要多了几次遍历查找。B树有两个特点,和二叉树相比,B树每个节点有更多的子节点,B树每个节点上不仅有索引信息,还存放了数据。

2024-08-16 10:45:50 402

原创 覆盖索引和聚簇索引

假如,我选择第二种情况,每一个索引,都保存全量信息,行不行,这种情况当然可以,比如,我根据userId查询name信息,由于我已经冗余保存了所有的信息,因此,可以拿到name信息。那现在看来只有第一种方案了,由于我在userId上建立索引,我最终保存的数据是userId和id信息,也就是有了userId和id的map关系,我们还是通过userId查询name信息,首先是根据userId信息查询到了id信息,但是这个地方没有name信息,这个时候,怎么办呢?id是数据库自动生成的,这张表的主键。

2024-08-16 10:32:11 257

原创 基于kafka-go写的生产者和消费者

这一篇文章,主要是基于kafka-go写的生产者和消费者的代码。我自定义了一个kafka消息体,消息体中,有一个actionType的概念。为什么要有这么一个定义呢,主要是考虑到kafka的topic的颗粒度不能太细,太细会导致kafka的性能下降,所以,我们的消费需要基于actionType进行细分,以提升消费的并发能力,这里指的是从业务的角度来提升消费能力,而不是通过kafka自身的调整。

2024-08-14 15:05:13 444

原创 kafka-go使用:以及kafka一些基本概念说明

作为开发人员kafka中最常关注的几个概念,是topic,partition和group这几个概念。topic是主题的意思,简单的说topic是数据主题,这样解释好像显得很苍白,只是做了个翻译。一图胜前言,我们还是通过图解来说明。生产者负责写数据,一个topic可以有多个分区。如下图所示,生产者写数据的示意。,即消息在某个分区上是有顺序的,而全局是没有顺序的。这个意味着如果我们需要保证顺序,我们在写消息时需要往同一个分区中写数据。比如,我们有一个场景,有一个订单。

2024-08-09 16:33:33 949

原创 http请求:报unexpected EOF错误

程序中有个地方需要读取body内容,打印bodyBytes的内容总是少了一截。接口还返回了unexpected EOF这个错误。之前遇到这个错误都是因为传参不是个json格式,用json在线工具验证了一下,是个正确的json格式。

2024-07-29 18:15:42 449

原创 关于联合索引和最左匹配原则

这种方式可以极大地提升我们的查询速度,但是,以首字母A发音开头的汉字依然非常多,为了增加查询的速度,我们就需要“联合索引”,比如,第二个字母依然按照A,B,C......这样的方式建立索引,比如,我们想要查找“危”这个字的位置,我们先通过首字母W确定了其位置,然后在W这个前提下再通过第二个字母“E”确定其范围。这个查询是能够命中索引的。原因很简单,因为,这种情况下,B+树可以根据第一级索引,定位到该在哪些节点上查找数据,从而不需要全表扫描,就像我们前面类比的案例,我们能够通过首字母定位到具体的范围。

2024-07-23 11:56:06 675

原创 Grafana :利用Explore方式实现多条件查询

比如:我需要查询日志中包含“/api/v1/warranty/list-by-uid”和“20291205TS00584Z”这两个字符的日志。日志统一推送到Grafana上管理。所以,有了在Grafana上进行日志搜索的需求,而进行日志搜索通常需要多条件组合。通过Grafana的Explore的方式实现多条件查询。选择标签,点后面的“+”可以选择多个过滤标签条件。如此,就实现了多条件日志查询的功能。在主页搜索框中输入“Explore”

2024-07-18 16:49:23 846

原创 golang json反序列化科学计数法的坑

id=33&new_warranty_end_time=1.7208e+09&old_warranty_end_time=1.7207136e+091720755503589{{加密盐值}}经过查询发现,问题出现在json.Unmarshal(bodyBytes, &jsonBody)这个地方,反序列化之后,出来的就是科学计数法的类型。这个部分跟我们的问题不太相关,我们暂且略过。这个问题我们到源码中寻找答案,我们先看这个问题的解决方案。我们可以看一下反序列化之后的数据类型和值,解析为了float类型。

2024-07-12 16:52:14 612

原创 go mod模式下,import gitlab中的项目

第一步:创建一个公用包的项目,比如,core。这里有个点需要注意,不能直接用go mod init进行初始化,否则,引用该包会报路径错误的问题。需要通过这个命令进行初始化(init后面的内容实是ssh链接去掉git@)。执行完之后,push到gitlab上。公用包创建的流程到此就完成了。接下来就是引用包需要做些一些配置。第二步:第三步:需要设置两个环境变量。GOPRIVATE。

2024-05-23 15:55:36 1141

原创 gorm log with traceId 打印带有traceId信息的日志,通过context实现

于是乎,我们就希望有一个全局的traceId可以把一个请求过程中经过的所有链路的关键信息串联起来,这样的话在检索日志的时候可以带来极大的方便,根据traceId把整个链路上的日志全部打印出来。在初始化日志的地方,传从Context中获取对应参数的函数,比如,从context中接受traceId。我们首先需要了解gorm日志打印是如何实现的,任意找一个sql执行方法进去,比如,查询的方法。我们回到前面打印日志的地方,看打印日志的方法,打印日志的Trace方法是这个接口下的一个方法。

2024-05-15 16:32:10 845

原创 /swagger/index.html#/ 的页面可能存在问题,或者已永久移动到新的网址。

在golang的项目中,使用了swagger。新的项目中,用了和之前项目同样的web框架,仔细比对了和之前项目的差异,只不过,目录结构做了调整,所以,首先想到的是目录结构调整导致的问题。于是,把目录结构调整为和之前一直的目录结构。上网搜了一下,没有发现类似的问题。尝试了各种方法,依然没有解决这个问题。无意中看到,浏览器对于6666这样的端口有限制,换了端口,果然解决了问题。关于为什么会有这样的限制,我没有找到太多的资料,有知道的朋友,帮忙解释一下。6666是什么特殊的端口,浏览器为什么有限制?

2024-05-06 11:50:45 1127

原创 http请求头导致了dial tcp:lookup xxxx on 10.43.0.10:53 no sunch host

事实证明人有的时候也不能太偷懒,太偷懒容易给自己埋坑。

2024-04-11 15:42:19 625

原创 golang函数式编程

这意味着,只要这个闭包还在被使用,`a` 和 `b` 就不会被销毁,它们会一直存在,直到闭包不再被使用。golang 中函数是一等公民,对于函数式编程这个思维方式我还很不习惯,在看go-zero的源码过程中,显得很是吃力,go-zero中mapreduce中使用了这个编程思想,为了习惯这种思维方式,我得从基本的函数式编程开始。在这段代码中,闭包 `func() int` 保持了对 `fibonacci` 函数中的局部变量 `a` 和 `b` 的引用。5.测试:通过定义Func类型,可以方便地进行单元测试。

2024-04-09 14:27:41 628

原创 开启多个协程,并行对struct中的每个元素操作,是否会引起并发问题?

写程序时,我们经常会有这样的场景,某个对象中的信息需要从不同的服务中获取,如果我们采用顺序读取的话,就会导致耗时很长,所以,我们时长需要并行从不同服务中获取对应的信息进行组装。我这边直接使用了go-zero中并行执行函数的小工具,这倒没什么,只不过,在使用的时候,有个问题引起了我的注意,这个用法是否安全?期初,我是很犹豫这种写法的正确性,因为,我以为struct是个整体。后面,我实际打印了struct中每个元素的地址,每个元素的地址是不同的,所以,对于struct而言,每个元素应该都是一个独立的变量。

2024-04-07 14:42:38 340

原创 透传http请求遇到了一个小坑

在Go语言的HTTP处理中,io.ReadAll(ctx.Request.Body)读取了请求体的全部内容,并将它存储在一个字节切片中。这个操作会消耗掉请求体的内容,因此,如果你尝试再次读取ctx.Request.Body,你会得到一个空的读取器(reader),因为数据已经被读取过了。

2024-04-02 10:28:02 289

原创 golang slice 转treeslice

【代码】golang slice 转treeslice。

2024-03-14 14:37:49 355

原创 java环境安装,环境变量配置(仅作记录)

在cmd窗口中输入java -version,可以看到安装的java环境的版本,至此,java环境安装成功。环境变量名:JAVA_HOME 变量值:jdk目录位置。win+r调出cmd窗口,输入java,敲击enter键。Path中添加变量值:%JAVA_HOME%\bin。此文档仅是自己安装jdk环境的一个记录文档。

2024-03-06 09:52:10 358 1

原创 golang:mutex理解

为了解决,这种状况,需要制定一个新的规则,就是一段时间内,队列中的goroutine没有被执行过,则优先执行队列中的goroutine,让新来的goroutine去队列中排队等待执行。无忌道:"上面的规则我们还是保留,只是需要做点调整,在排队的人,等的时间超过了10分钟,那么有新来的人还是验明身份做登记排到队伍的后面,过一段时间再切换为新来的人优先观看屠龙宝刀。是新来的还是刚被唤醒的,新来的加入到等待队列的尾部,刚被唤醒的加入到等待队列的头部,然后通过信号量阻塞,直到当前。

2023-08-25 15:02:35 142

原创 golang函数传参——值传递理解

因此,第一个案例中,实际上是把指向底层数组的指针的地址拷贝生成一个副本传到了函数体中,所以,第一个案例中修改了0xc00006c0a0地址里的内容会引发外面的参数发生变化。一直以为golang中函数传参,如果传的是引用类型,则是以引用传递,造成这样的误解,实在也不能怪我。打印的函数参数的地址和外部slice的地址是一致,并且在函数体内修改的值的确影响了slice的值,由此现象很容易得出是。​实际结果,验证了我们的猜想,扩容之后,开辟新的内存地址来存放内容,因此,再修改这个参数也不会影响外部参数。

2023-08-04 16:19:31 1289

原创 周期时间计算方法《二》

【代码】周期时间计算方法《二》

2022-08-24 17:13:14 416 1

原创 周期时间计算方法

【代码】周期时间计算方法。

2022-08-23 17:29:56 896

原创 golang编译出现问题

项目中引入了第三方包(github.com/jinzhu/copier),编译的时候出现了go: github.com/jinzhu/copier@v0.3.5: verifying go.mod: github.com/jinzhu/copier@v0.3.5/go.mod: reading http://192.168.24.11:3000/sumdb/sum.golang.org/lookup/github.com/jinzhu/copier@v0.3.5: 502 Bad Gatewaygo:

2022-07-01 09:55:33 1233

原创 golang 关于引用和指针的深拷贝的问题

问题现象定义一个对象,对象中嵌套定义了map类型和一个对象,复制原来的对象生成新的对象,改变新对象中map的值和嵌套的对象的值会导致原来的对象的值也被改变。现象模拟package mainimport ( "encoding/json" "fmt")type StudyCopy struct { Name string Reference map[string]interface{} Nested *Nested}type Nested struct {

2022-03-30 14:16:25 1648

原创 office 365收不到取消的会议

取消的会议在office 365的日历中无法显示,通过在office 365的日历中收到导入该附件,显示文件已破坏,无法导入成功。

2022-03-02 11:44:59 511

原创 golang 匿名结构体数组对应的json结构体记录

或者

2021-12-15 16:43:40 264

原创 golang beego使用踩坑记录

conf文件中,数组型数据不能放在前面,会导致其他的如string型数据解析为空这种数组型数据要放到文件的最后。一不小心引入了bug,花了一天时间才往配置文件方向考虑,终于定位到问题了...

2021-12-02 10:48:05 174

转载 解决This function or variable may be unsafe

https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html

2021-09-25 21:54:10 104

原创 C++ error LNK2019无法解析外部符号

背景:用visual studio 2019开发MFC项目,第一次写c++的项目,之前都是写c#和go的项目。自定义一个类,引用自定义的类,具体的是引用.h文件,死活不成功,一直报error LNK2019无法解析外部符号这个错误,但是引用.cpp文件却是可以成功的。没搞过c++的项目,但是觉得引用cpp文件能编译,肯定不是最佳解。于是,开始了我的头铁之路,真是查了半天的资料,把网上能看的文章都看完了(当然,网上的文章雷同度太高了),就是不行。最终还是解决了。首先,因为我写go和c#项目的习惯,把不

2021-09-11 20:59:47 930

原创 mongodb 批量把date类型数据改为时间戳

db.customer_poster.find().forEach( function(res){ print("poster_id:",res.poster_id); if (res.update_time instanceof Date){ var updateTime=res.update_time.getTime(); updateTime=updateTime/1000; updateT.

2021-09-02 14:59:34 722

原创 vscode使用记录

通过Go to Implementations查看Interface的实现。如:

2021-08-13 15:56:44 122

原创 常用Linux指令记录

stat 文件名 查询文件属性,创建时间,修改时间等

2021-08-11 09:59:55 123

java环境安装包,jdk

java环境安装包,jdk

2024-03-06

ADB_v1.0.32_tool

附有txt格式的安装办法 包含四个文件,adb.exe AdbWinApi.dll AdbWinUsbApi.dll fastboot.exe

2018-12-10

C#公共通用类

----------Database-------------- 1.DataTable帮助类(DataTableHelper.cs) 2.Access数据库文件操作辅助类(JetAccessUtil.cs) 5.查询条件组合辅助类(SearchCondition.cs) 6.查询信息实体类(SearchInfo.cs) 8.Sql命令操作函数(可用于安装程序的时候数据库脚本执行)(SqlScriptHelper.cs) ----------Device-------------- 声音播放辅助类(AudioHelper.cs) 摄像头操作辅助类,包括开启、关闭、抓图、设置等功能(Camera.cs) 提供用于操作【剪切板】的方法(ClipboardHelper.cs) 获取电脑信息(Computer.cs) 提供用户硬件唯一信息的辅助类(FingerprintHelper.cs) 读取指定盘符的硬盘序列号(HardwareInfoHelper.cs) 提供访问键盘当前状态的属性(KeyboardHelper.cs) 全局键盘钩子。这可以用来在全球范围内捕捉键盘输入。(KeyboardHook.cs) 模拟鼠标点 击(MouseHelper.cs) 全局鼠标钩子。这可以用来在全球范围内捕获鼠标输入。(MouseHook.cs) MP3文件播放操作辅助类(MP3Helper.cs) 关联文件(ExtensionAttachUtil.cs) 注册文件关联的辅助类(FileAssociationsHelper.cs) 打开、保存文件对话框操作辅助类(FileDialogHelper.cs) 常用的文件操作辅助类FileUtil(FileUtil.cs) INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word操作对象(WordCombineUtil.cs) 这个类提供了一些实用的方法来转换XML和对象。(XmlConvertor.cs) XML操作类(XmlHelper.cs) ----------Format-------------- 参数验证的通用验证程序。(ArgumentValidation.cs) 这个类提供了实用方法的字节数组和图像之间的转换。(ByteImageConvertor.cs) byte字节数组操作辅助类(BytesTools.cs) 处理数据类型转换,数制转换、编码转换相关的类(ConvertHelper.cs) CRC校验辅助类(CRCUtils.cs) 枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类(RMBUtil.cs) 常用的字符串常量(StringConstants.cs) 简要说明TextHelper。(StringUtil.cs) 获取中文字首字拼写,随机发生器,按指定概率随机执行操作(Util.cs) 各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助(HttpWebRequestHelper.cs) Net(NetworkUtil.cs) IE代理设置辅助类(ProxyHelper.cs) ----------Winform-------------- 跨线程的控件安全访问方式(CallCtrlWithThreadSafety.cs) CheckBoxList(CheckBoxListUtil.cs) 窗口管理类(ChildWinManagement.cs) 由马丁·米勒http://msdn.microsoft.com/en-us/library/ms996492.aspx提供一个简单的方法打印工作的一个RichTextBox一个帮手(ExRichTextBoxPrintHelper.cs) 显示,隐藏或关闭动画形式。(FormAnimator.cs) 对窗体进行冻结、解冻操作辅助类(FreezeWindowUtil.cs) 窗体全屏操作辅助类(Ful

2018-09-07

datagridview 标题中添加checkbox

解决方案用VS2017编程。在datagridview的列标题中添加checkbox,实现对整列进行全选,反选功能。

2018-07-25

考勤管理源码

请使用VS2017打开。WinForm端的考勤管理源码。仅供学习参考。

2018-07-17

ASP.NET MVC 5高级编程 第5版(中文版)

ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的网站具有复杂的功能,如单页面应用程序、针对移动设备优化、适应性呈现等。本书还包括了MVC 5.1和MVC 5.2中的一些新特性。通过采用分步骤讲解的方法,指导读者如何充分利用MVC。本平台提供的是中文版。 本书的作者加洛韦不是Microsoft的ASP.NET MVC专家,就是ASP.NET MVC领域的智者,所以作为一本实用的教程,不但强化开发人员对概念的认识,也帮助开发人员创建自己的应用程序。 主要内容 解释了ASP.NET MVC框架与其他“每个页面一个文件”的Web框架的区别 介绍了控制器、视图、模型、表单、HTML辅助方法、数据注解和验证、成员资格、授权、安全性和路由 新增了对One ASP.NET项目模板、ASP.NET Identity、Bootstrap和特性路由的介绍 探讨了一些重要主题,如Ajax、NuGet、依赖注入、单元测试和MVC扩展 提供了分步骤指导。

2018-07-03

空空如也

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

TA关注的人

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