自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 收藏
  • 关注

原创 【copilot 使用指南 - @workspace】

看下加和不加workspace的区别,不加,只能推测,无法给出准确答案,加完以后,则可以搜索整个项目,给出答案。那么如何让copliot 跨文件分析,分析整个项目,分析整个代码目录下的代码,就要用到@workspace

2024-05-06 23:30:14 1717

原创 【傻傻分不清? DDOS防护 VS 防火墙】

DDoS-Distributed Denial of Service 分布式拒绝服务攻击,是一种网络安全攻击,其中攻击者利用大量计算机或其他设备向目标系统发送大量请求,使其无法正常响应或完全瘫痪,攻击手段为消耗服务器资源。4层传输层的攻击包括在 ip,tls攻击,消耗socket资源。7层应用层攻击还有伪造用户请求,进入到业务服务中,消耗服务器cpu以及数据库资源等。特点:伪造,大量。

2024-04-23 10:32:49 1835 3

原创 【Mobile Push - 自己做个移动端消息推送】

Mobile Push 是什么,还不清楚的同学可以参考这篇。简单来说就是 移动端上的消息弹框提示 ,一般来讲,我们可以直接对接设备厂商的云服务通道 或者 借助国内外第三方Mobile Push消息推送服务 来实现这个功能。但是其实这个也可以不和设备厂商,第三方消息推送服务商强绑定,完完全全自己做。下面介绍下,开源消息推送协议。

2024-04-08 00:04:09 1026

原创 【通过OpenPGP签名,聊RSA 是与非, 公钥加密-私钥解密,真的对吗?】

至此我们再看问题 :公钥加密-私钥解密, 真的对吗?答案是对的。同样 ` 私钥加密-公钥解密 也是对的。公钥加密-私钥解密,是对要传输的原始数据的加解密,用于数据加密场景私钥加密-公钥解密,是对要签名的数据哈希的加解密,用于签名验签场景基于RSA非对称加密的理论基础 ,进行的安全场景实践,真是奇妙的设计啊!

2024-03-23 18:07:42 823

原创 【IoT进阶-数字孪生实现-附代码】

AWS IoT Device Shadow 服务为 AWS IoT 事物对象添加影子。无论设备是否已连接,Shadows 都可以将设备的状态提供给 AWS IoT 应用程序和其他服务。AWS IoT 事物对象可以有多个命名的阴影,这样您的物联网解决方案就有更多选项可以将您的设备连接到其他应用程序和服务。这里事物就是指的设备本身阴影就是**设备分身,**所以影子服务和我们上面介绍的数字孪生是完全吻合的!

2024-03-19 23:33:22 1866

原创 【Go - 超实用,3行代码实现个自增器】

根据上面要点,需要跨服务进程可以访问,且保障严格自增。综上考虑, 依赖MonogoDB来实现这个自增器,以下是代码实现,自增器的作用是生成一个唯一的递增序列号。这在一些需要生成自增id的场景十分有用,比如自增的订单号,任务号,序列号。最后可以带入运行一下,

2024-09-15 13:26:28 488

原创 【Go - 类型断言】

类型断言,Go语言中,类型断言用于将接口类型的变量转换为具体类型。valueokoktruefalse如果类型断言失败,ok为falsevalue将是具体类型的零值。

2024-09-15 13:25:19 455

原创 【Http 每天一小问 ,不想明文,使用Https加密传输,但Get请求参数在url里,这部分会加密吗?】

用过Https的小伙伴都知道HTTP 中的TLS 会在传输前,对传输内容进行加密。但假如有个Get请求,其包含参数在url里,比如:?user_id=uu001,这部分会被加密的吗,传输的过程会不会是明文的。

2024-09-09 20:22:19 434

原创 【Http 每天一小问 ,Post上传文件时, 文件和 -d(--data)和 -F(--form) 不能同时存在 ,怎么办】

今天在做文件上传的时候 ,遇到报错, Warning: You can only select one HTTP request method!You asked for both POST ,选项来发送表单数据,包括文件和其他字段。然后在服务端的时候接收,类似。

2024-09-09 20:21:44 407

原创 【Http 每日一问,访问服务端的鉴权Token放在header还是cookie更合适?】

下面具体展开下。在选择将鉴权 Token 放在 HTTP Header 还是 Cookie 中时,需要考虑安全性、使用场景和具体需求。

2024-09-07 01:04:41 718

原创 【Go - 变长参数】

在函数定义中,变长参数必须是参数列表中的最后一个参数,并且其类型前面要加上...。// b 是一个 int 类型的切片。

2024-09-07 01:03:46 472

原创 【Go - 函数 参数缺省/默认值】

Go现在与将来都不会支持参数默认值。Go始终在使得自己变得尽可能的简单,而增加这种额外的支持会使parser变得更复杂。但是如果仍然需要,这里也有一些实现途径,这种算是比较常见的一种,。b_optional 本质是个变长参数,对应一个切片,切片长度可能为0,也可能包含1个或者多个值。不强校验每个字段必须要存在,在函数开始时检查添加默认值。

2024-09-06 20:05:11 580

原创 【Go - 拼接字符串】

在 Go 中,可以使用多种方式拼接字符串。

2024-09-06 20:04:25 418

原创 【Go - vendor, 本地, 独立依赖包】

go vendor机制通过将依赖包复制到项目的vendor目录中,确保了项目的依赖包版本一致性和独立性。结合 Go Modules 使用,可以更好地管理项目的依赖包,避免因外部包的变化而导致的问题。

2024-09-03 23:58:53 874

原创 【Go - 每日一小问 ,const 变量存储在哪里,堆还是栈上?】

答:都不是 , 在bss(未初始化数据区) 和 data(初始化数据区)上。

2024-09-03 23:58:17 357

原创 【Go - 10分钟,快速搭建一个简易日志回传系统】

上周一个平凡的工作日傍晚,快要下班的时候,客户端新产品线负责人突然火急火燎的找到我 ,说新的APP马上要release了,发现还少个APP异常崩溃时,用户上报日志的功能 ,需要后端支持,提供个日志回传接口。时间紧,立刻开始行动。提供个接口 ,自然不是难题,但是只需要提供一个接口吗?我知道这很急,但先别急,

2024-09-01 14:43:47 1394

原创 【Go - 每日一小问,new出来的空间,是在堆还是栈上,用手动回收吗】

和有些语言不同,Go中的new 不是直接分配在栈或堆上,而是取决于内存逃逸。Go语言中的new不一定总是在堆上分配内存,实际分配由编译器决定,基于变量是否逃逸作用域,也就是取决于内存逃逸。。Go判断内存逃逸 可以通过如下命令, 查看是否逃逸,典型的内存逃逸场景,:如果一个变量在函数返回后仍然被引用,那么它必须分配在堆上。:如果一个变量的地址被返回或传递给其他函数,它也可能会逃逸到堆上。:如果一个变量被传递给另一个 goroutine,它也会逃逸到堆上。

2024-09-01 14:42:04 499

原创 【Go - 特殊导入包方式 . 和 _】

导入:将导入包中的标识符直接引入到当前包的命名空间中,简化代码但可能引起命名冲突。导入:只执行包的init函数,不引入任何标识符,通常用于初始化。根据具体需求选择合适的导入方式,可以提高代码的简洁性和可维护性。

2024-08-27 23:02:20 265

原创 【yarn publish : 报错 passed folder/tarball doesn‘t exist 】

当执行yarn publish 时报错,具体命令类似报错内容,网上搜了一圈,基本没有这个报错的相关内容,最后分析并解决了,这里记录分享下过程,给遇到相同问题的朋友个参考。

2024-08-27 23:01:42 357

原创 【Go - 每日一小问: 对未初始化的的 chan 进行读写,会怎么样?为什么?】

对未初始化的chan进行读取操作会导致永久阻塞,因为没有数据可读。对未初始化的chan进行写入操作会导致永久阻塞,因为没有 goroutine 可以读取数据。这种设计确保了程序的健壮性,防止对未初始化的chan进行误操作。

2024-08-26 22:02:00 543

原创 【Go - 每日一小问: 对已经关闭的的 chan 进行读写,会怎么样?为什么?】

对已关闭的chan进行读取操作会返回零值并且不会阻塞,可以通过第二个返回值判断chan是否已关闭。对已关闭的chan进行写入操作会导致运行时(panic这种设计确保了数据的一致性和程序的健壮性。

2024-08-26 22:01:25 252

原创 【Go - 模式示例 - 5分钟写个 生产者/消费者 】

今天写个经典模式 生成者-消费者,开始之前简单梳理下, 这个模式需要注意什么,废话不多说,直接上代码,

2024-08-25 01:22:03 378

原创 【Go - interface, 强类型语言中的任意类型 】

在 Go 语言中,是一个空接口,表示可以存储任何类型的值。空接口没有任何方法,因此任何类型都实现了空接口。这使得成为一种通用类型,可以用于存储任意类型的数据。

2024-08-25 01:21:13 363

原创 【抓耳挠腮,还是升职加薪,一起来画架构图!】

最近又遇到个焦头烂额的事情 ,老板有了新想法,业务有所转向,需要新的方案设计 ,架构设计,以进行后续实施。很快,第一次汇报来了, 由于前期准备时间短,模块拆分不清晰,有的部分又讲得过细节,表述的不太好,直接被打回了。一时之间抓耳挠腮,怎么汇报,讲清其中的设计思路,争取到相应资源,是重点,也是难点。这时急需一组架构图,来辅助,拿下汇报!

2024-08-17 16:29:26 788

原创 【Go - 防患未然 race 参数】

race参数是一个强大的工具,用于检测 Go 程序中的数据竞争问题,帮助开发者提高并发程序的稳定性和可靠性。

2024-08-17 16:26:23 452

原创 【 狗拿耗子webpack - require, 一文解决动态加载问题】

我们有个使用场景 ,程序启动时,把文件路径传入,再去加载这个文件。项目整体是采用webpack打包,本以为会顺利,直到…

2024-08-08 23:53:19 757

原创 【python下用sqlite3, 多线程下报错,原因和解决 】

在python下用sqlite3, 多线程 在UPDATE 或者INSERT的时候, 会报错sqlite3.OperationalError: cannot commit - no transaction is active

2024-08-08 23:52:20 390

原创 【Go - Docker 镜像:完整示例,5分钟搭个Go运行环境】

简单起见,就是一个 myapp 文件夹,里面有一个main.go的文件 和 其对应的Dockerfile,

2024-08-06 22:29:02 442

原创 【Go - 编译:浅尝辄止 】

在Go语言中,你可以选择go build编译代码生成二进制文件,或者直接使用go run命令运行代码。两种方式各有优缺点,

2024-08-06 22:27:40 902

原创 【协作提效 Go - gin ! swagger】

Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。而对于我们的研发团队来说,swagger可以清晰的定义接口,即是代码也是文档,大大提升了前后端沟通的效率,团队内协作的效率!而Go - Gin框架支持Swagger,下面一步一步来看下如何使用库来生成和展示接口文档。

2024-08-02 22:02:32 649

原创 【Go - 规范】

通过遵循这些规范,希望可以帮助你编写出更清晰、可维护的Go代码。

2024-08-02 22:00:29 1105

原创 【Go - channel】

**核心:进程内的通信管道, 用于进程内协程的数据传递。**记住这句话,全文都是围绕这个展开的,进程通信有多种方式,channel便是其中一种,其无疑是Go语言进程内通信的利器。

2024-08-01 01:31:50 487

原创 【Go - 异常 / 错误值 】

在Go语言中,异常处理的方式与其他语言(如Java或Python)有所不同。Go不使用异常机制,而是采用了错误处理模式,即通过返回值来传递和处理错误。:函数返回两个值,第一个是结果值,第二个是错误值。如果发生错误,错误值将不为。在Go中,推荐使用返回错误值的方式来处理错误,而不是使用。要谨慎,因为它们会打破正常的控制流,增加代码的复杂度。,因为后者更适用于处理不可恢复的错误情境。用于在程序遇到严重错误时终止程序的执行,这是Go中最常见的错误处理方式。接口,定义自己的错误类型。

2024-08-01 01:30:24 403

原创 【网络请求调试神器,curl -vvv 返回都有什么】

curl -vvv是一个用于在命令行中执行 HTTP 请求的命令,其中-vvv是一个选项,用于启用详细的调试输出。vvv这个选项对于调试网络请求非常有用,可以帮助你了解请求和响应的具体细节。

2024-07-30 23:09:01 480

原创 【Go - sync.WaitGroup】

是类型的一个方法,用于设置或调整等待组中的计数器。参数delta表示要添加到等待组计数器的值,它可以是正数、负数或零。

2024-07-30 23:00:17 386

原创 【Go - mongodb - bson / schema】

虽然MongoDB 是no-sql类型,但在使用的时候,表结构一般是固定的,且在代码中为了更清晰的展示表结构 以及 其字段。所以一般都是 定义声明其schema,以下是个示例,import ("context""fmt""log""sync""time"// User 表结构定义// 使用omitempty来表示某些字段是可选的// 获取MongoDB客户端的单例if err!

2024-07-29 23:24:32 633

原创 【Go - redis client 单例模式】

以下是redis client单例,使用sync.Once保证无论单线程(协程)还是多线程(协程) 只执行一次。

2024-07-29 23:23:35 475

原创 【登录知多少,OIDC 大家都在用,一文速通流程 】

OIDC(OpenID Connect)是一个基于 OAuth 2.0 的身份验证协议,用于在应用程序之间安全地传递身份信息。OIDC提供了 身份验证,单点登录(SSO)等功能。用户请求登录• 用户通过客户端(应用程序)请求登录。• 客户端将用户重定向到授权服务器的登录页面。用户认证• 用户在授权服务器的登录页面输入凭据进行认证。•授权服务器验证用户身份后,生成一个授权码,并将用户重定向回客户端。交换授权码• 客户端接收到授权码后,向三方平台后端发送请求。• 三方平台后端 在拿着授权码。

2024-07-28 18:05:42 758

原创 【Go - 如何查看类型,运行前/运行时】

在Go中,你可以使用函数来获取变量的类型。这需要导入reflect包。这段代码会打印出client变量的具体类型,例如,这表示client是指向类型的指针。

2024-07-28 18:04:40 392

原创 【Go - 定时器知多少,4种常见场景】

这些方法提供了灵活的方式来处理在 Go 程序中的定时任务。选择哪种方式取决于你的具体需求,比如是一次性延时执行、重复执行还是需要延迟调用。

2024-07-27 18:10:36 511

空空如也

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

TA关注的人

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