自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (1)
  • 收藏
  • 关注

原创 Jaeger 教程,OpenTelemetry 教程

上面是一个使用 OpenTelemetry trace 的一个源码。

2023-08-11 10:13:28 250

原创 Gin 请求流程源码分析

只要实现接口就可以注册到标准库的中,然后就会启动一个web应用。

2022-06-08 09:00:00 605 1

原创 gin Engine源码分析

Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧。

2022-06-07 09:15:28 482

原创 golang time包的单调时钟处理

我们今天主要是来看一看golang time 包的时间应用方式。在说到计算机处理时钟上,主要的分为2种方式:墙上时钟(wall time)单调时钟(monotonic clocks)两者的一般规则是「wall time」用于告知时间,而「monotonic clock」用于测量时间;除外还有其他的时钟处理方式。如果你还不了解上面两种时钟的概念,那么我推荐你可以先访问:你真的了解计算机的时间吗?这篇文章详细说明了这两种时钟的来历。再看下面的内容之前,我会认为你已经知道了什么是 墙上时钟 和 单

2022-05-25 14:03:56 589

原创 对于升级go1.18的goland问题

截止目前,go1.18 已经发布了22 天,当前有很多的小伙伴已经在使用最新的版本,尝试着各种解锁新姿势。但是更新之后,在goland中打开发现全是报错,是不是怀疑自己打开的方式不对?报错:'main'redeclared as the imported package name报错:Cannot use 'fmt.Sprintf("xxx:%v" , err)' (type string) as the type any对于这类完全不知道的新问题,尝试着删除 .idea 文件;重启 gola

2022-04-06 11:23:09 8772 9

原创 redis学习笔记-sorted set原理

zset 基本使用我们先来看一下 zset 都有哪些操作:序号命令及描述1ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数2ZCARD key 获取有序集合的成员数3ZCOUNT key min max 计算在有序集合中指定区间分数的成员数4ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment5ZINTE

2022-03-21 10:38:36 1696

原创 redis学习笔记-set原理

set 基本使用Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合对象的编码可以是 intset 或者 hashtable。如果是 intset 那么它是 经过升序排序的。序号 命令及描述 1 SADD key member1 [member2] 向集合添加一个或多个成员 2 SCARD key获取集合的成员数 3 SDIFF key1 [key2]返回第一个集合与其他集合之间的差异。 4

2022-03-21 10:35:19 1606

原创 限流算法-常见的4种限流算法

首先我们先来看看什么是限流?限流是指在系统面临高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。另一种解释:在计算机网络中,限流就是控制网络接口发送或接收请求的速率,它可防止DoS攻击和限制Web爬虫。那么我们为什么会限流?日常的业务上有类似秒杀活动、双十一大促或者突发新闻等场景,用户的流量突增,后端服务的处理能力是有限的,如果不能处理好突发流量,后端服务很容易就被打垮,导致整个系统崩溃!亦或是爬虫等不正常流量,我们对外暴露的服务都要以最大恶意去防备我们的调用者。我们

2022-03-17 17:50:53 17355

原创 redis学习笔记-hash原理

基本概念字典又称散列表,是用来存储键值(key-value)对的一种数据结构,在很多高级语言中都有实现。通常有 map 之类的。在redis使用中的特点:可以存储海量数据,键值对是映射关系,可以根据键以O(1)的时间复杂度取出或插入关联值。键值对中键的类型可以是字符串、整型、浮点型等,且键是唯一的。例如:执行set test "hello world"命令,此时的键test类型为字符串,如test这个键存在数据库中,则为修改操作,否则为插入操作。键值对中值的类型可为String、Hash、Lis

2022-03-17 10:25:57 1208

原创 redis学习笔记-list原理

list 基本功能命令描述BLPOP key1,key2,…… timeout移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或者弹出元素为止。BRPOP key1 [key2 ] timeout移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BRPOPLPUSH source destination timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直

2022-03-16 10:11:36 1765

原创 redis学习笔记-string原理

字符串 是 Redis 最基本的数据类型,不仅所有 key 都是字符串类型,其它几种数据类型构成的元素也是字符串。注意字符串的长度不能超过 512 M。首先是谁规定不能超过 512 M?或者为什么不能超过 512 M?// 源码定义(检查字符串长度)static int checkStringLength(redisClient *c, long long size) { if (size > 512*1024*1024) { addReplyError(c,"strin

2022-03-15 10:27:43 511

原创 redis学习笔记-概述

redis介绍Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。Redis到底有多快Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QP

2022-03-15 10:23:54 109

原创 goland 高效开发golang的配置

1. 配置Goland项目为了达到项目的代码规范化建议设置 go fmt 和 goimports 的 File Watcher ,有顺序 go fmt goimports goimports 需要自己手动下载官方:go install golang.org/x/tools/cmd/goimports@latest修改后的地址:https://github.com/workwb/tools/releases/download/v0.1.11/goimport

2021-12-15 16:56:20 1244

原创 golang文件传输工具,支持大文件

在局域网中需要传输文件,并且放在指定的位置,简单的在网上寻找了一下,发现这类软件都不少,但是没有一个是符合现在需要的,简单,快速,大文件。所以你懂的,作为一个程序猿,是时候自己写一个工具了。特性:支持超大文件传输 支持局域网最大上传速度(瓶颈在下载或者上传的上限) 使用 tcp 可靠传输 也可以在外网传输,至少一个可以连接另一个(可互通)的情况下 内存占用很少 支持指定文件存放的文件夹目录源代码我已经提交到github 上,有兴趣的朋友可以看看,并提出意见,或者学习也是可以的 【ft

2021-05-13 11:38:18 1913 2

翻译 goalng1.8 的变化

Go 1.8 简介最新的Go版本1.8版比Go 1.7版本晚了六个月。它的大部分更改是在工具链,runtime, 和 libraries的实现上。语言规范有两个小的更改。与往常一样,该版本保留了Go 1兼容性的承诺。我们希望几乎所有Go程序都能像以前一样继续编译和运行。该版本增加了对32位MIPS的支持, 更新了编译器后端以生成更有效的代码, 通过消除 stop-the-world的堆栈重新扫描来减少了GC暂停, 增加了HTTP / 2 Push支持, 增加了HTTP正常关机, 增加了更多上下文支持,

2021-03-09 19:53:53 564

原创 golang利用C语言调用脚本实现

问题:在使用golang自带的调用命令时,不知道你们是否有遇到执行脚本已经完成,但是程序还在一直等待。如果没有你不妨试一下在脚本中添加一个脚本,比如在 a.sh 中在执行b.sh 。这个时候你就会发现程序退不出来;当然不只是脚本中执行脚本的问题,还有在脚本中执行某些命令也会出现这样的问题。为了方便使用,比如某些项目中的脚本太多,或者在不同的文件夹项目有相同的脚本,我们不妨把脚本都提出来,使用golang 写一个程序来调用这些脚本。我们先说一下C语言调用脚本或者命令的方式:system() 就

2021-01-13 14:15:41 350

原创 实现 etcd + confd + prometheus 自动发现

根据服务注册metrics到etcd,confd 拉取etcd的配置,自动生成配置文件到promethoues,然后热加载来提供自动的指标监控。具体代码和实现请查看github 仓库etcd_confd_promethoues

2020-11-18 12:39:03 1421 2

原创 golang使用redis分布式锁 [2020年更新]

我还记得上一篇文章golang使用redis分布式锁还是18年写的,但是对于现在来说已经不适用,所以今天我更新了go使用redis分布式锁,对想用redis分布式锁的人一个简单的讲解,并快速用于实践。首先,最需要的还是redis的go客户端github.com/gomodule/redigo 已经不是之前的那个路径了。 然后下载github.com/go-redsync/redsync这个库,他就是实现分布式锁的核心。 当然你也可以自己实现,但是我今天只说这个库的用法。// A Mute...

2020-05-15 13:48:49 4237 2

原创 golang实现最简单的麻将胡牌算法(不包括牌型,有需求后续可以更新牌型计算)

话不多说,代码先给出来 文件名 mahjong.go很多的实现方法,写的注释我觉得已经很详细了,多看下注释。package mainimport ( "sort" "fmt")//牌类型type CardType intconst ( CardType_Unknown CardType = iota CardType_W CardType_T CardType_S...

2019-11-28 16:26:58 1143

原创 golang 读写锁的那点事

快捷目录RWMutex简介应用场景问题解决方案RWMutex简介读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相...

2019-11-26 20:24:33 1267 3

原创 spring mvc 关于视图解析的坑

<!--注册视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="WEB-INF/jsp/"/> ...

2019-10-25 10:57:50 443

原创 Spring 框架切换默认日志系统

基本上有两种方法来关闭commons-logging:排除spring-core模块的依赖关系(因为它是明确依赖于commons-logging的唯一模块) 依赖于一个特殊的commons-logging依赖关系,用空的jar代替库(更多的细节可以在SLF4J FAQ中找到)maven方式(我们这里只说这一种):要排除commons-logging,请将以下内容添加到depen...

2019-10-24 16:27:24 432

原创 win10搭建ftp 局域网内其他设备 无法访问

第一步:打开windows防火墙——允许应用或功能通过windows防火墙 第二步:更改设置——充许其它应用 第三步:浏览——添加C盘-windows-system32-svchost.exe 这个才是重点 最后一步:给刚刚添加的windows服务主进程都打上勾。 现在你可以试一下开启防火墙能不能连上ftp...

2019-09-28 01:10:06 6772

原创 golang KMP实现

我直接上代码,需要了解相关原理的可以看一下https://blog.csdn.net/v_JULY_v/article/details/7041827我也是看的这个以及其他资料学习的package main//暴力匹配func ViolenceMatch(s , p string) int { i := 0 // 主串的位置 j := 0 // 模式串的位置 for i &l...

2019-05-31 20:49:09 608 2

转载 数据结构简介

数据结构分类数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。1、数组数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。...

2019-05-06 16:08:03 128

转载 golang GF框架

GF(Go Frame)是一款模块化、松耦合、轻量级、高性能的Go语言Web开发框架。支持热重启、热更新、多域名、多端口、多服务、HTTP/HTTPS、动态路由等特性 ,并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、服务注册、配置管理、模板引擎、数据校验、分页管理、数据库ORM等等等等, 并且提供了数十个实用开发模块集,如:缓存、日志、时间、命令行、二进制、...

2018-10-24 15:22:52 5710

原创 golang使用redis分布式锁

昨天由于项目需求,需要使用redis分布式锁,在网上找了半天,也没有找到一个简单的教程,经过自己研究,了解简单使用方法,都可以直接拿过来自己用,下面我就发出来给大家分享一下。首先下载 github.com/garyburd/redigo,因为这个分布式锁是根据上面所实现; 下载 gopkg.in/redsync.v1这个就是实现分布式锁的源代码(如果测试需要下载 github.c...

2018-09-19 11:52:56 11930 16

原创 GoLand 下载

GoLand 2018.2.1 下载2018.09.06(亲测,可以使用)https://download.csdn.net/download/billgates_wanbin/10649921 

2018-09-17 15:31:29 964

原创 go语言工具IntelliJ IDEA 说明

IntelliJ IDEA 2017.3.*  中可以使用go插件来开发,后面的版本都不能兼容go插件,需要重新下载goland这个软件;现在最新版本是goland 2018.2.2  ,其中的添加了多种工具和功能。性能比我之前用goland2017 好太多了 。下面有我的一个下载链接,你们也可以自己在网上自己下载。https://download.csdn.net/download/...

2018-09-06 16:17:14 1276 1

原创 golang DES加密解密

我写了一个例子,方便看懂或者直接拿来用。直接上代码:package mainimport ( "crypto/des" "fmt" "crypto/cipher" "encoding/hex" "bytes")func main() { //key的长度必须都是8位 var key = "12345678" var info = &

2018-04-13 14:40:49 6190 11

翻译 Go语言中database/sql包操作MySQL(使用预先准备的语句)

准备好的陈述和连接在数据库级别,准备好的语句绑定到单个数据库连接。典型的流程是客户端向服务器发送带占位符的SQL语句以供准备,服务器用语句ID作出响应,然后客户端通过发送其ID和参数来执行语句。然而,在Go中,连接并不直接暴露给database/sql包的用户 。你不准备在连接上发表声明。你准备在一个DB或一个Tx。并database/sql具有一些便利行为,例如自动重试。由于这些原因,准备好的语...

2018-03-20 10:30:08 706

翻译 Go语言中database/sql包操作MySQL(修改数据和使用事务)

修改数据的语句用Exec(),最好用事先准备好的声明,来实现的INSERT, UPDATE,DELETE,或其他不返回行的语句。以下示例显示如何插入行并检查有关操作的元数据:stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")if err != nil { log.Fatal(err)}res, err := stmt.E...

2018-03-20 10:23:09 1675

翻译 Go语言中database/sql包操作MySQL(检索结果集)

有几种习惯操作可以从数据存储中检索结果。执行一个返回行的查询。准备重复使用的声明,多次执行并销毁它。以一次性方式执行陈述,而不准备重复使用。执行一个返回单行的查询。这个特例有一个捷径。Go的database/sql函数名称很重要。如果一个函数名包含Query,它被设计为询问数据库的问题,并且将返回一组行,即使它是空的。不返回行的语句不应该使用Query函数; 应该使用Exec()。从数据库获取数据...

2018-03-20 10:15:14 4389 4

翻译 Go语言中database/sql包操作MySQL(访问数据库)

现在你已经加载了驱动程序包,你已经准备好创建一个数据库对象了sql.DB。创建一个sql.DB,你使用sql.Open()。将返回一个*sql.DB:func main() { db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/test") if err != nil { log.Fatal(err) }...

2018-03-20 09:51:39 4453

翻译 Go语言中database/sql包操作MySQL(导入数据库驱动程序)

要使用database/sql你需要导入包本身,以及你想要使用的特定数据库的驱动程序。您通常不应该直接使用驱动程序包,但有些驱动程序会鼓励您这样做。(在我们看来,这通常是一个坏主意。)相反database/sql,如果可能的话,你的代码只应该引用定义的类型。这有助于避免让代码依赖于驱动程序,以便可以用最少的代码更改来更改底层驱动程序(从而更改您访问的数据库)。它还会强迫你使用Go语言,而不是特定的...

2018-03-20 09:42:39 1091

翻译 Go语言中database/sql包操作MySQL(1)

要在Go中访问数据库,可以使用sql.DB。使用此类型来创建语句和事务,执行查询和获取结果。你应该知道的第一件事是sql.DB不是数据库连接。它也没有映射到任何特定数据库软件的“数据库”或“模式”的概念。它是数据库接口和存在的抽象,可能与本地文件一样多样,可通过网络连接访问,或者内存中和进程中。在sql.DB为您执行一些重要的任务幕后:它通过驱动程序打开和关闭与实际底层数据库的连接。它根据需要管理...

2018-03-20 09:33:38 411

转载 svn 文件状态标记的含义

svn status打印五列字符,紧跟一些空格,接着是文件或者目录名。第一列告诉一个文件的状态或它的内容,返回代码解释如下:A item文件、目录或是符号链item预定加入到版本库。C item文件item发生冲突,在从服务器更新时与本地版本发生交迭,在你提交到版本库前,必须手工的解决冲突。D item文件、目录或是符号链item预定从版本库中删除。M item

2017-06-08 19:44:02 331

原创 关于Springboot + hibernate 使用websocket的详细代码

在之前,学习Springboot的时候遇到了许多的问题,希望通过这个博客向爱好学习Springboot的人避免一些误区;主要是Springboot + hibernate +websocket ,好了废话不多说开始吧:在之前我就不说springboot环境的问题了,网上教程也很多。一、首先创建一个Springboot工程:然后选择所需要的包:然后先创建一个实体类:Use

2017-05-16 10:54:20 509

原创 对于Spring对websocket的属性注入失败问题,困扰我一天,最后终于解决了

首先导入包必须的:spring-websocket.jar 以及一个websocket-api.jar org.springframework spring-websocket 4.3.5.RELEASE package com.sanker.webSocket;import java.io.IOException;import java.util

2017-05-08 17:14:01 4586 6

原创 MyBatis Generator Mybatis代码生成介绍

Mybatis官方提供了代码生成工具,这里是官方网站: http://mybatis.github.io/generator/index.html可以自动生成 Java POJOs, Mapper.xml, Mapper.java。1、下载 mybatis-generator-core-1.3.2.jar  google上有2、下载 myeclipse插件 https://

2017-02-12 16:38:07 640

_cups-pdf.rar

linux系统中通用虚拟打印机源代码, 纯c代码,inux系统中通用打印机系统的实现源代码,通过631端口监听打印请求,电脑可以作为打印服务器

2019-06-21

空空如也

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

TA关注的人

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