自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dablelv 的博客专栏。

The blog world of Dablelv

  • 博客(909)
  • 资源 (9)
  • 问答 (41)
  • 收藏
  • 关注

原创 字典树简介

字典树(Trie)又名前缀树或单词查找树,最初是由美国计算机科学家 Edward Fredkin 在 1960 年提出。字典树是一种基于字符串序列的树形结构,可以高效地存储和检索字符串集合中的所有字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。字典树的优点是利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较。字典树的核心思想是空间换时间,利用字符串的公共前缀减少查询时间以提高查询效率。

2023-03-30 11:14:47 1427 1

原创 哈希树简介

哈希树(Hash Tree),在密码学及计算机科学中是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而除了叶节点以外的节点则以其子节点标签的加密哈希作为标签。哈希树能够高效、安全地验证大型数据结构的内容,是哈希链的推广形式。哈希树的概念由瑞夫·墨克于 1979 年申请专利,故亦称墨克树(Merkle tree)。

2023-03-28 17:08:28 2647

原创 Golang 防止路径遍历漏洞

路径遍历漏洞,也被称为目录遍历漏洞,是一种常见的安全漏洞类型,攻击者可以通过该漏洞访问或修改应用程序之外的目录或文件。这种漏洞通常由于应用程序在接受用户输入时没有正确过滤或验证用户提供的文件路径导致。攻击者可以通过构造特定的输入,使得应用程序执行意外的操作,例如读取敏感文件、修改应用程序之外的文件或删除文件等。如果不对用于输入的路径进行过滤,那么上面的请求路径将被路由到其他桶,导致重要数据泄露。

2023-03-15 15:37:02 1027

原创 一文读懂胜者树与败者树

胜者树和败者树是在排序和归并排序算法中常用的两种数据结构,它们在大规模数据排序中具有高效性和良好的稳定性。本篇博客将详细介绍这两种数据结构。

2023-03-11 22:40:00 3787 1

原创 我的面试问题集

1.多路归并排序使用的优先级队列,堆,胜者树和败者树应该使用哪一种,为什么?

2023-03-11 22:15:00 184

原创 开源静态站点生成工具 Top40(全网第二全)

随着互联网的普及,越来越多的人选择在博客平台上写博客。博客生成电子书形式的静态站点成为一种流行的方式,越来越多的人开始使用这种方法来发布和分享他们的作品。将博客生成电子书形式的静态站点,可以让博客内容更加系统,易于分享和传播。另外,将博客生成电子书形式的静态站点,可以方便地备份博客内容,并且可以将备份文件迁移到其他平台上。本文将介绍最流行的十大博客静态站点生成工具,以 Github star 数来排名。

2023-03-09 20:13:45 1680

原创 喜欢的一些话

自由不是你想做什么就能做什么,而是你不想做什么就可以不做什么。你可以执行命令,但你有把枪口抬高一厘米的主权。相信你,你并不孤单。

2023-03-09 13:02:05 147

原创 Gin 接口超时控制

API 是现代应用程序中的重要组成部分,可以用于提供数据和功能,供客户端应用程序访问。由于网络不稳定、服务器负载、网络拥堵等因素,API 请求可能会花费较长时间。这可能导致客户端应用程序在等待响应时出现延迟,最终导致用户不满意,甚至放弃使用应用程序。为了避免这种情况,可以为 API 请求设置超时时间。超时时间是指在一定时间内,如果 API 请求没有得到响应,将自动取消该请求。这可以防止客户端应用程序一直等待 API 响应,从而提高用户体验。

2023-03-07 11:41:22 2037

原创 Gin 优雅打印请求与回包内容

在开发 Web 应用程序时,难免不会遇到功能或性能等问题。为了快速定位问题,需要打印请求和响应的内容。本文将介绍如何使用 Gin 框架来优雅地打印请求和响应的内容。

2023-03-04 21:08:55 2824 3

原创 Golang 分割字符串

在开发过程中,很多时候我们有分割 字符串 的需求,即把一个字符串按照某种分割符进行切割。在 Go 语言中,分割字符串我们可以分为几种情况,分别为:按空格分割、按字符分割和按字符串分割。

2023-03-02 15:33:44 8728 2

原创 Gin 优雅设置回包

如果需要设置 HTTP 头,可以使用 c.Writer.Header() 方法来获取 HTTP 头,并使用 Set() 方法来设置头字段。在设置回包内容之前,可以先设置 HTTP 状态码,这可以通过调用 c.Status() 或 c.Writer.WriteHeader() 方法来完成。要设置回包内容,可以使用 c.JSON() 或 c.String() 方法,具体取决于要返回的数据类型。要设置 Gin 框架中的回包内容,可以使用 Gin 的上下文对象(c *gin.Context)来完成。

2023-02-27 10:41:34 216

原创 大鲤鱼的书单

韭菜的自我修养( · )

2023-02-27 09:34:33 201

原创 Golang channel 用法与实现原理

Golang channel 是一种并发原语,用于在不同 goroutine 之间进行通信和同步。本质上,channel 是一种类型安全的 FIFO 队列,它可以实现多个 goroutine 之间的同步和通信。channel 是一种引用类型,即使是在不同的 goroutine 之间传递channel时,它们仍然指向相同的底层数据结构。

2023-02-22 20:56:35 1069

原创 Golang select 用法与实现原理

Golang 中的 select 语句是用于多路复用的一种语言结构,用于同时等待多个通道上的数据,并执行相应的代码块。也就是说 select 是用来监听和 channel 有关的 IO 操作,它与 select,poll,epoll 相似,当 IO 操作发生时,触发相应的动作,实现 IO 多路复用。case 必须是一个通信操作。select 语句中除 default 外,各 case 执行顺序是随机的。select 语句中如果没有 default 语句,则会阻塞等待任意一个 case。

2023-02-22 15:36:41 1275

原创 推荐 3 款 Golang 语义化版本库

语义化版本 2.0.0(Semantic Versioning 2.0.0)是一种用于标识软件版本的约定和规范。它包含三个数字组成的版本号,格式为“MAJOR.MINOR.PATCH”,其中:MAJOR(主版本号):当进行不兼容的 API 更改时增加,例如删除 API、更改 API 签名等;MINOR(次版本号):当添加向后兼容的新功能时增加,例如添加新的 API;PATCH(补丁号):当进行向后兼容的 bug 修复时增加,例如修复已有的 API。

2023-02-18 17:30:23 692 2

原创 Golang zap 快速上手

它支持多种日志级别、日志格式和输出方式,包括文本格式和 JSON 格式的输出,以及在控制台输出、文件输出、发送到远程服务、发送到。需要注意的是,Zap 的性能非常高,并且使用简单,因此它是 Golang 中最受欢迎的日志库之一。在上面的示例中,我们创建了一个 JSONEncoder 和一个 Core,将日志输出到标准输出,并将 lumberjackLogger 作为 Core 的 WriteSyncer。在上面的示例中,我们创建了一个生产级别的 Logger,它将日志记录到控制台或文件中。

2023-02-17 12:24:02 866

原创 Golang 日志库 logrus 快速上手

这个包有几个函数:Print、Printf、Println、Fatal、Fatalf、Fatalln、Panic、Panicf、Panicln,可以满足大部分日志的打印和处理需求。zap是Uber开源的一款高性能日志库,它支持多种日志级别和输出方式,包括console、json、file等等。在实际开发过程中,为了节省磁盘和方便查看,日志需要按照时间或者大小维度进行切割分成多分归档过期的日志,删除久远的日志.这个就是在日常开发中经常遇见的日志滚动(log rotation)。

2023-02-16 17:18:34 1684 1

原创 MySQL 判断 JSON 数组是否包含某元素

假设您正在使用 GORM v2 和 MySQL 数据库,并且您的数据表中有一个名为 data 的 JSON 类型的列,其中存储了一个字符串数组,您想要查询该数组是否包含某个元素。在 MySQL 中,并没有内置的数组数据类型。但是,MySQL 提供了一些可以实现类似数组功能的机制,如使用字符串来存储由逗号分隔的值,使用 JSON 类型来存储数组数据等。JSON_CONTAINS 函数还可以判断 JSON 对象中某个字段的值是否为指定的值,具体用法可参见 MySQL 官网的介绍。

2023-02-16 15:02:38 4369

原创 Gin 如何编写一个接收文件的 HTTP 接口

以前遇到编程类的问题,第一时间想到的是 Google,而现在,我会问 ChatGPT。

2023-02-16 10:32:16 565 2

原创 Gin 生成 Swagger 接口文档

采用工具生成,不同的工具生成的接口文档风格不一,增加阅读者的理解成本。使用 Swagger 就是把接口相关信息存储在它定义的描述文件里面(yaml或json格式),再通过维护这个描述文件可以去更新接口文档,以及生成各端代码。生成 API 描述文件后,便可通过 Swagger 为我们提供的库,将 API 描述文件集成到服务中,通过接口的形式提供在线文档。可以在请求 Body 对应的 struct 中添加注释,在接口的请求参数中添加说明,引用自具体的 struct。

2023-02-07 12:48:13 1186

原创 PowerShell 快速入门

PowerShell 是一种跨平台的任务自动化解决方案,由命令行 shell、脚本语言和配置管理框架组成。PowerShell 是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。PowerShell 于2016年8月18日开源并提供跨平台支持,可在 Windows、Linux 和 macOS 上运行。

2023-01-29 20:45:44 2782

原创 consoletype(1) command

consoletype 用于打印连接到标准输入的终端类型。并检查连接到标准输入的控制台是否为当前前台虚拟控制台。如果控制台是虚拟终端(/dev/tty* 或 /dev/console 设备,且不是串行控制台),将打印 vt。如果标准输入是串行控制台(/dev/console 或 /dev/ ttyS*) 将打印 serial。如果标准输入是一个伪终端将打印 pty。

2023-01-28 21:57:00 504

原创 hostid(1) command

hostid 打印当前主机的数字标识符(以十六进制的形式表示)。

2023-01-28 21:29:50 535

原创 stty(1) command

stty 改变或打印终端行设置。

2023-01-28 21:09:51 3257

原创 sleep(1) command

sleep 暂停指定的时间。

2023-01-28 20:12:51 224

原创 tty(1) command

tty(teletypewriter)显示出连接到当前标准输入的终端设备文件名。

2023-01-28 19:22:44 324

原创 command(1) builtin command

command 用于运行指定命令,以抑制正常的 Shell 函数查找。仅执行内置命令或 PATH 中的命令。

2023-01-27 20:43:54 695

原创 wait(1) builtin command

wait 等待每个指定的进程并返回其终止状态。该指令常用于 Shell 脚本编程中,待指定的指令执行完成后,才会继续执行后面的任务。等待作业时,在作业号前须添加百分号"%"。

2023-01-27 19:27:21 286

原创 builtin(1) builtin command

builtin 执行指定的 Shell 内置程序,传递参数,并返回其退出状态。这在定义一个名称与 Shell 内置命令相同的函数时非常有用,可以在函数内通过 builtin 使用内置命令。builtin 命令用以执行 Shell 内建命令,既然是内建命令,为什么还要以这种方式执行呢?别名,使用alias创建的命令。关键字,如if,for。函数内置命令,如cd,pwd等外部命令,在PATH路径中寻找。

2023-01-27 18:46:15 624

原创 enable(1) builtin command

enable 启用或禁用 Shell 内建指令。禁用内置命令,可以在不指定完整路径名的情况下执行与内置命令同名的磁盘命令。Linux 执行命令时,总是先在自己的 Shell builtin 中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量 PATH 指定的路径中依次去查找待执行的命令。因为了解了这一点,所以看起来好像没有办法编写用户自己的命令来替代 Shell builtin 命令。幸运的是,有了 enable 命令我们就能做到了。

2023-01-27 11:29:24 1198

原创 unset(1) builtin command

unset 删除指定的 Shell 变量或函数。注意,unset 不能删除具有只读属性的 Shell 变量和环境变量。

2023-01-26 21:01:12 642

原创 type(1) builtin command

type 用来显示命令的类型。alias 别名keyword Shell 保留关键字function Shell 函数builtin Shell 内建命令file 磁盘文件,外部命令unfound 没有找到type 是 Linux 系统的一种自省机制,知道了命令是那种类型,我们就可以针对性的获取帮助。比如内建命令可以用 help 命令来获取帮助,外部命令用 man 或 info 来获取帮助。

2023-01-26 13:48:43 743

原创 Linux 命令(247)—— domainname / nisdomainname / ypdomainname 命令

nisdomainname 显示或设置系统的 NIS/YP 域名。注意,nisdomainname 和 ypdomainname 均是 hostname 的软链,等同于。

2023-01-25 20:50:00 750 1

原创 mii-tool(8) command

mii-tool(media-independent interface tool)查看、操作媒体无关的接口状态。mii-tool 用于检查或设置网络接口的媒体独立接口(MII)单元的状态。大多数快速以太网适配器使用 MII 来自动协商链路速度和双工设置。大多数智能网络设备使用自动协商协议来传达它们支持的媒体技术,然后选择最快的相互支持的媒体技术。-A 或 --advertise 选项可用于告诉 MII 仅通告其功能的一个子集。一些被动设备,例如单速集线器,无法自动协商。

2023-01-18 17:48:47 1899 2

原创 chage(1) command

chage 修改用户密码过期信息。chage 命令更改密码更改之间的天数和上次更改密码的日期。系统使用此信息来确定用户何时必须更改其密码。

2023-01-18 16:43:39 2071

原创 Docker 命令集锦

构建镜像依赖 Dockerfile,使用。

2023-01-14 21:42:44 155

原创 reset(1) command

reset 用来重新初始化终端。在有些情况,终端显示会混乱无比,比如不小心显示了一个二进制文件或使用tput进行了一些不符合预期的终端配置。在你不知道 reset 命令前,你可以将终端强行关闭,然后重新登录。现在只需要输入 reset 便可将终端样貌恢复如初。当然,你也可以使用tput reset命令重新初始化终端。如果只是想清理屏幕内容,那么clear也可以。注意:reset 其实是 tset 命令的软链。

2023-01-13 21:19:38 1897 1

原创 Linux 命令(243)—— indent 命令

indent 通过插入或删除空格来改变 C 代码文件的外观。indent 可以格式化 C 代码文件,以方便程序员阅读、修改等操作。

2023-01-11 18:13:43 541

原创 VS Code 入门教程

VS Code(Visual Studio Code)是 Microsoft 在 2015 年 4 月 30 日 Build 开发者大会上正式推出的一款跨平台免费开源的代码编辑器。VS Code 不仅仅是一个代码编辑器,丰富的插件,使之成为一款功能强大的 IDE(Integrated Development Environment),能够轻松应对不同语言的差异特性。帮助开发者使用一个 IDE,便可应对多种语言的开发工作。自动用了 VS Code,再也不想用任何商业版 IDE 了。

2023-01-10 18:53:11 243 2

原创 fc(1) builtin command

fc(Fix Command)可以列出、编辑、重新执行历史命令。fc 可以用来查看历史命令,也可以利用使用指定的编辑器编辑并运行最近输入的命令,而不需要重新输入整个命令。使用 Linux 的过程中,在处理很长的并且包含复杂语法的命令时,如果不小心犯了一点小错误,需要重新输入整个命令以及参数,直到命令执行成功为止。另一种选择是使用 fc 命令编辑并重新运行前一个命令,而无需重新输入整个命令以及参数。

2023-01-10 09:12:02 766

tinyxml2+示例代码+介绍文档

资源包含2015.9.23从官网下载的tinyxml2的源码和自己编写的示例代码还有介绍文档,容易上手。官网的示例代码和文档晦涩难懂,才自己整理。

2015-09-26

TinyXML2.rar

C++轻量XML文件解析库!用于C++项目中进行XML文件的读取和创建!使用方法见本人blog!

2015-03-14

Voronoi Diagram维诺图

内包括C#实现的Voronoi Diagram源码,可执行程序和实验报告,请用VS2012或以上版本打开原工程文件。

2015-03-02

C版六中常见排序算法

C语言实现冒泡排序、快速排序、选择排序、堆排序、简单插入排序和希尔排序,并附上代码注释

2013-11-26

C语言版本Linux环境下MD5加密函数

C语言版本Linux环境下MD5加密函数,需要在Linux换进下运行。经测试验证,完全正确,内附带使用说明,谢谢

2013-11-05

C语言MD5算法实现

C语言实现MD5,经测试验证,散列过程完全正确,可供开发者使用!

2013-10-24

C#简单词法分析器

用C#编写的词法分析器,简单实用,适合上交编译原理实验作业,并附有实验报告,用VS2010即可打开原工程.绝对实用!

2013-05-06

C#编写代码生成器源码

C#编写的可连接数据库,进行模板代码生成器,为源码,用VS2010打开。

2013-04-04

JSP连接数据库简单留言板实验报告

贴有源码,JSP连接MySql数据库制作的简易的留言板,并附上实验报告

2013-03-27

HTML 如何设置图片宽高分别为原宽高的不同比例?

2020-08-22

Google C++编程风格指南中6.10节流中不支持字符串操作符重新排序 什么意思

2018-08-05

5.5.50-MariaDB的索引为什么在 where in子句中无法生效,MySQL可以?

2018-07-07

C++模板元编程和编写模板有什么区别?

2018-06-17

g++ -S将源码编译成汇编代码,使用的是哪个工具?

2018-06-11

从长度为n的数组中找出同时满足下面两个条件的所有元素,时间复杂度为O(n)。

2018-05-28

为什么C++局部数组变量地址间隔是16字节的倍数?

2018-05-17

缓冲溢出,为什么不报错?

2018-05-16

RLF、HRLF控制字符到底是什么

2018-05-10

printf关于浮点数的四舍五入的奇怪问题?

2018-05-09

stringstream的输入与输出的用法

2018-03-19

使用JS如何获取剪贴板内容

2018-03-06

Linux命名管道为什么叫FIFO?

2018-02-07

Linux下printf与wprintf不能同时使用?

2018-01-15

C标准库函数setvbuf的名称全称

2018-01-15

mysql count distinct 加条件

2017-06-15

awk如何获取除最后一行的所有行?

2017-05-19

rz命令如何上传文件夹

2017-05-07

CSS浮动为什么不会遮盖同级元素

2015-09-17

Linux下系统调用execl会等待一段时间才执行指定的可执行程序?

2015-09-11

为什么 Go range slice 时通过下标和值拷贝的性能是一样的?

2022-03-17

反向代理的上游服务指的是什么?

2021-03-12

Golang 接口类型可以有数据成员吗

2020-12-02

GoLand 如何自动批量换行

2020-10-07

Golang 如何进行标准错误输出

2019-12-24

git branch -dr origin/<branchname> 无法删除远端分支

2019-09-16

为什么 Golang 中序列化与反序列的函数一般命名为 marshal 与 Unmarshal 呢?

2019-06-26

golang main包可以被import吗

2019-06-11

golang小数默认是float32还是float64?

2019-05-28

golang const 可以修饰函数形参吗

2019-05-28

ldconfig命令全称是什么呢?

2019-04-02

golang的struc成员后跟字符串有什么作用?

2019-03-15

Linux中 链接器 ld 命令的全称是什么英文单词?

2019-03-12

ssh命令默认端口如何查看

2019-02-15

ssh客户端为什么不指定端口也可以登录成功

2019-02-15

C/C++的预处理文件的后缀为什么约定为.i

2019-01-24

go为什么不能获取字符串某个字符地址?

2019-01-13

date命令将时间戳转为可读时间为什么需要加@符号

2018-12-06

GNU C++定义对象时对象名称被括号包围且前面有个下划线是什么意思

2018-10-09

git merge可以操作远端分支吗?

2018-08-16

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

TA关注的人

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