自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(548)
  • 资源 (2)
  • 收藏
  • 关注

原创 gorm 一对多

【代码】gorm 一对多。

2024-06-20 15:13:46 256

原创 gorm 一对一操作

通过gorm标签来指定外键(属于关系:关系和外键的指定不在同一方)通过gorm标签来指定外键(属于关系:关系和外键的指定在同一方)通过Debug()可以看到底层对应执行的Sql是什么样子。

2024-06-20 14:39:19 238

原创 gorm 增删改查

【代码】gorm 增删改查。

2024-06-20 11:46:36 322

原创 gorm简介

即Object-Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它们就可以了。gorm是go语言的一个orm框架,Golang写的,开发人员友好的ORM库。【1】创建一个数据库:testgorm。录入安装GORM的命令。

2024-06-20 11:34:32 202

原创 Go Gin框架

Gin是一个用Go编写的HTTPweb框架。它是一个类似于martini但拥有更好性能的API框架, 优于httprouter,速度提高了近 40 倍。访问Gin官方中文文档。

2024-06-14 15:32:32 375 2

原创 defer+recover机制处理错误

解决办法:利用defer+recover捕获panic进行处理,即使协程出现错误,主线程仍然不受影响可以继续执行。问题:多个协程工作,其中一个协程出现panic,导致程序崩溃。

2024-06-13 16:35:05 454

原创 管道(channel)select

只要有其中一个满足条件,就执行相应的逻辑,一般会写个for,里面加入select进行监听多个channel,如果有数据就执行对应的逻辑操作。select功能:解决多个管道的选择问题,也可以叫多路复用,可以从多个管道中随机公平的选择一个来执行。case后面必须进行的是io操作,不能是等值,随机去选择一个io操作。default防止select被阻塞,加入default。

2024-06-13 16:20:20 263

原创 管道(channel)和协程案例

2、开启一个readData协程,从管道中读取writeData写入的数据。4、主线程需要等待writeData和readDate协程都完成工作才退出。3、注意:writeData和readDate操作的是同一个管道。1、开启一个writeData协程,向管道中写入50个整数。

2024-06-13 15:28:01 160

原创 管道(channel)的关闭

使用内置函数close可以关闭管道,当管道关闭后,就不能再向管道写入数据了,但是仍然可以从该管道读取数据。(类似商城排队限流,一旦进去10个人后,保安拉取一个警戒线,不准外面的人在进入了,但是里面进去的10个人,仍然可以进行操作)

2024-06-13 14:46:03 152

原创 管道(channel)入门

2:数据类型指的是管道的类型,里面放入数据的类型,管道是有类型的,intChan只能写入整数int。3、自身线程安全,多协程访问时不需要加锁,channel本身就是线程安全的。4、管道有类型的,一个string的管道,只能存放string类型的数据。3:管道是引用类型,必须初始化才能写入数据,即make后才能使用。1、管道本质就是一个数据结构-队列。var 变量名 chan 数据类型。管道(Channel)1:chan管道关键字。

2024-06-13 14:34:14 229

原创 多个协程操纵同一个数据2个锁【互斥锁】【读写锁】

其中Mutex为互斥锁,Lock()加锁,Unlock()解锁,使用Lock()加锁后,便不能再对其进行加锁,直到利用Unlock()解锁对其解锁后,才能再次加锁,适用于读写不确定场景,即读写次数没有明显的区别。有一个机制:确保:一个协程在执行逻辑的时候,另外的协程不执行 ---》锁的机制---》加入互斥锁。【1】互斥锁(和上厕所一样,用的时候把门锁上,不用的时候把门给关上)----在读的时候,数据之间不产生影响,写和读之间才会产生影响。有读有写,在写的过程中,锁生效,但是读可以并发读,没有影响。

2024-06-13 11:05:39 225

原创 go 协程

协程又称为微线程,作用:在执行A函数的时候,可以随时中断,去执行B函数,然后中断继续执行A函数(可以自动切换),注意这一切换过程并不是函数调用(没有调用语句),过程很像多线程,然而协程中只有一个线程在执行(协程的本质是单线程)。线程是CUP控制的,而协程是程序自身控制的,属于程序级别的切换,操作系统完全感知不到,因而更加轻量级。如果内部计算器变为0,Wait方法阻塞等待的所有线程都会释放,如果计数器小于0,方法panic。注意Add加上正数的调用应在Wait之前,否则Wait可能只会等待很少的线程。

2024-06-13 10:09:55 430

原创 Go API

Go语言提供了大量的标准库,因此 google 公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。官方位置:https://golang.org。Golang中文网在线标准库文档: https://studygolang.com/pkgdoc。

2024-06-12 16:14:52 572

原创 Go 断言

在 Go 语言中,(Assertion)是一种类型转换的方式,它用于将一个接口类型转换为其他类型。

2024-06-12 16:06:57 207

原创 映射map

delete(map,"key") , delete是一个内置函数,如果key存在,就删除该key-value,如果k的y不存在,不操作,但是也不会报错。PS:key、value的类型:bool、数字、string、指针、channel 、还可以是只包含前面几个类型的接口、结构体、数组。PS:key通常为int 、string类型,value通常为数字(整数、浮点数)、string、map、结构体。(3)key是不可以重复的,如果遇到重复,后一个value会替换前一个value。

2024-06-12 14:33:35 301

原创 切片(slice)

【3】切片(slice)是对数组一个连续片段的引用,所以切片是一个引用类型。相对的切片却是随处可见的,切片是一种建立在数组类型之上的抽象,它构建在数组之上并且提供更强大的能力和便捷。切片有3个字段的数据结构:一个是指向底层数组的指针,一个是切片的长度,一个是切片的容量。【1】切片定义后不可以直接使用,需要让其引用到一个数组,或者make一个空间供切片来使用。【3】方式3:定一个切片,直接就指定具体数组,使用原理类似make的方式。【1】方式1:定义一个切片,然后让切片去引用一个已经创建好的数组。

2024-06-12 14:30:39 255

原创 defer关键字

比如你想关闭某个使用的资源,在使用的时候直接随手defer,因为defer有延迟执行机制(函数执行完毕再执行defer压入栈的语句),发现:遇到defer关键字,会将后面的代码语句压入栈中,也会将相关的值同时拷贝入栈中,不会随着函数后面的变化而变化。在函数中,程序员经常需要创建资源,为了在函数执行完毕后,及时的释放资源,Go的设计者提供defer关键字。所以你用完随手写了关闭,比较省心,省事。

2024-06-12 14:20:55 285

原创 golang闭包

(1)返回的是一个匿名函数,但是这个匿名函数引用到函数外的变量/参数 ,因此这个匿名函数就和变量/参数形成一个整体,构成闭包。(2)闭包中使用的变量/参数会一直保存在内存中,所以会一直使用---》意味着闭包不可滥用(对内存消耗大)感受:匿名函数中引用的那个变量会一直保存在内存中,可以一直使用。闭包本质依旧是一个匿名函数,只是这个函数引入外界的变量/参数。闭包就是一个函数和与其相关的引用环境组合的一个整体。匿名函数+引用的变量/参数 = 闭包。【5】不使用闭包可以吗?

2024-06-12 14:19:45 573

原创 go匿名函数

(2)将匿名函数赋给一个变量(该变量就是函数变量了),再通过该变量来调用匿名函数(用的少)【3】如何让一个匿名函数,可以在整个程序中有效呢?将匿名函数给一个全局变量就可以了。【1】Go支持匿名函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数。(1)在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次(用的多)

2024-06-12 14:18:00 554

原创 init函数

每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用。【1】init函数:初始化函数,可以用来进行一些初始化的操作。【2】全局变量定义,init函数,main函数的执行流程?

2024-06-12 14:16:07 199

原创 golang函数

对特定的功能进行提取,形成一个代码片段,这个代码片段就是我们所说的函数。【3】函数和函数是并列的关系,所以我们定义的函数不能写到main函数中。遵循标识符命名规范:见名知意 addNum,驼峰命名addNum。首字母大写该函数可以被本包文件和其它包文件使用(类似public)形参列表:个数:可以是一个参数,可以是n个参数,可以是0个参数。func 函数名(形参列表)(返回值类型列表){【2】函数的作用:提高代码的复用性。形式参数列表:作用:接收外来的数据。实际参数:实际传入的数据。

2024-06-12 14:12:34 428

原创 循环for、for rang

【代码】循环for、for rang。

2024-06-12 14:07:35 161

原创 golang简介

腾讯作为国内的大公司,还是敢于尝试的,尤其是Docker容器化这一块,他们在15年已经做了docker万台规模的实践,具体可以参考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice。一般的选择,都是选择用于自己公司合适的产品系统来做,比如消息推送的、监控的、容器的等,Golang特别适合做网络并发的服务,这是他的强项,所以也是被优先用于这些项目。和蓝鲸平台,容器开发有关。

2024-06-12 13:59:36 932

原创 go错误处理

【代码】异常处理defer+recover()

2024-06-12 13:42:39 125

原创 封装引用私有变量

【代码】封装引用私有变量。

2024-06-12 13:40:48 122

原创 go的面向对象继承

【代码】go的面向对象继承。

2024-06-12 13:37:33 114

原创 go interface

【代码】go interface。

2024-06-12 13:32:22 223

原创 基准性能测试工具 BenchmarkDotNet

基准性能测试工具 BenchmarkDotNet

2022-09-22 16:16:52 1230 1

原创 .NET RulesEngine(规则引擎)

RulesEngine

2022-06-22 10:43:33 1249

转载 【ASP.NET Core 3.1_参考中间件源码实现自定义AOP】

AOP

2022-06-13 18:00:45 405

原创 Dapper UOW+事物AOP

Dapper UOW AOP

2022-06-09 11:06:14 424

转载 轻松实现AOP之Postsharp

Postsharp文档请参考:PostSharp Documentation - PostSharp 6.10 Documentation没有人喜欢样板代码。我们通常通过使用常见的面向对象编程模式来减少它,但使用模式的代码开销通常与我们最初使用样板代码时几乎相同——如果不是更大的话。以某种方式标记应该实现某些行为的部分代码,并在其他地方解决实现,这将是非常好的。例如,如果我们有一个,我们可以使用Dapper从关系数据库中获取所有学生:这是关系数据库存储库的一个非常简单的实现。如果学生列表没有太大变化并

2022-06-07 16:48:20 899

转载 MyCat | 分库分表实践

阅读目录一、引言 1.切分模式 2.为什么用MyCat 二、分库分表实践 1.基本环境 2.业务目标 3.创建实际数据库 4.安装配置MyCat 5.配置server 6.配置schema 7.启动MyCat 8.MyCat插入和查询 三、附录欢迎大家前往我的个人博客,获取更好的阅读体验和更多分享文章~返回顶部引言先给大家介绍2个概念:数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。切分模式一种是.

2022-03-31 13:46:38 140

转载 .net core xss攻击防御

SS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如我们在表单提交的时候插入脚本代码如果不进行处理,那么就是这种效果,我这里只是演示一个简单的弹窗下面给大家分享一下我的解决方案。需要用到这个库:HtmlSanitizerhttps://github.com/mganss/HtmlSa

2022-02-23 14:20:58 678

转载 MSSQL清理日志\删除数据\收缩数据库

 首先解释一下数据库的版本是SQL Server 2012。清除的数据库800多G,磁盘空间就剩10多G,数据量最多的表有2亿。目的就是清楚去年的数据(2017年之前),遇到了一些问题,总结起来就是三方面问题:  1.如何清理日志文件。  2.删除千万级别的数据。  3.数据库的收缩操作。一、清除日志文件  刚开始直接用delete语句删除给报了两次错误:“The transaction log for database 'DB' is full due to 'ACTIVE_TR.

2022-01-28 11:54:36 3198

转载 Carter--模块化组织和管理.NET 6 Minimal API应用程序接口服务的利器

概述亲爱的.NET开发者们,大家好!!!我还是你们的老朋友,码友网的创建者和维护者–Rector。今天我为大家分享的是.NET 6 Minimal APIs应用程序开发中模块化服务接口的轻量组件–Carter。早在.NET 6发布预览版的时候,我就发布过一篇关于《创建API服务最小只要4行代码!!!尝新体验ASP.NET Core 6预览版本中发布的最小Web API(minimal APIS)新特性》的文章,和大家一起预览了.NET 6中Minimal API的新特性。如今(2021年1

2022-01-19 18:02:21 627

转载 Jmeter教程(一) - 入门

一、下载登录官网Jmeter下载,得到压缩包jmeter-5.0.tgz,下载地址:Apache JMeter - Download Apache JMeter二、安装将下载得到的压缩包解压即可,这里我解压到自己电脑的路径为E:\Mysoftware\apache-jmeter-5.0。三、运行点击bin目录下的jmeter.bat即可启动Jmeter。启动后可以看到一个java编写的图形界面。四、一个简单的压测实例现有一个http请求接口http://...

2022-01-07 15:15:39 287

转载 .NET Core 中正确使用 HttpClient 的姿势

为了更方便在服务端调用 HTTP 请求,微软在 .NET Framework 4.x 的时候引入了 HttpClient。但 HttpClient 有很多严重问题,一直饱受诟病,比如 InfoQ 的这篇文章t.cn/Evzy80y,吐槽了 HttpClient 不能立即关闭连接、性能消耗严重等的问题。.NET Core 2.1 开始引入的 HttpClientFactory 解决了 HttpClient 的所有痛点。有了 HttpClientFactory,我们不需要关心如何创建 HttpClient.

2022-01-07 14:22:29 785

转载 灰度发布方案

一、灰度发布定义灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B 上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。二、实现思路方向1、在代码中做。一套线上环境,代码中做开关,对于不同的用户走不同的逻辑2、在接入层做。多套(隔离的)线上环境,接入层.

2021-12-16 11:02:42 5808

转载 centos8配置nfs教程本机系统mac

1 在服务器端 安装nfs 以及 rpcbindyum install -y nfs-utils rpcbindmkdir -p /data/nfschown -R nfsnobody:nfsnobody /data/nfs 2 配置权限vim /etc/exports文件写入#nfs dir /data/nfs/data/nfs 192.168.1.0/24(rw) #客户端ip(rw,sync,insecure) #不加insecure会connect ref

2021-12-15 17:27:22 907

.net国际化语言封装类库

.net国际化语言封装类库,可直接引用类库进行.net站点的国际化

2019-01-30

异步同时将信息推送到多个接口中

很多时候我们可能有某个信息,需要同时推送到多个接口中,推送的信息是一样的,这里主要采用了异步进行同时进行推送到各个接口中进行处理,可扩展,可维护

2019-01-30

空空如也

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

TA关注的人

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