自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 详讲api网关之kong的基本概念及安装和使用(二)

本文演示的相关功能有,基于consul的负载均衡,jwt认证,限流,黑名单功能,其他功能比如反爬策略,协议转换感兴趣的小伙伴们可以自己探索一下。

2024-01-30 10:52:41 1110

原创 详讲api网关之kong的基本概念及安装和使用(一)

前面我们聊过sentinel,用来限流熔断和降级,如果你只有一个服务,用sentinel自然没有问题,但是如果是有多个服务,特别是微服务的兴起,那么每个服务都使用sentinel就给系统维护带来麻烦。那么网关是个啥东西呢,简单来说,网关就是一个服务器,也是所有服务的唯一入口。api网关不仅可以实现系统层面的限流熔断等技术,还可以提供服务发现,负载均衡,协议转换,流量管理,黑白名单,反爬策略,身份验证,灰度发布,监控,缓存等等功能。

2024-01-25 18:09:56 1599

原创 聊一聊服务治理三板斧:限流、熔断、降级和go-sentinel的实现

我们知道,对于一个项目之初,我们不可能上来就按几千的并发去配置,为什么?两个方面,第一个是成本高。第二个是维护难度大。即便是天猫淘宝这种,也是采用的动态扩容的方式来应对双十一。那么一个项目如何应对突然的高并发,我们有哪些常用的措施和处理呢?我们接下来就来看看 限流熔断和降级。

2024-01-19 17:47:49 944

原创 MySQL的内部XA的二阶段提交

靠redo-log和undo-log。比如我们执行了一个insert操作,然后主节点a服务器crash redo-log之后服务宕机了,还没来得及写入bin-log,服务器恢复之后,由于其他机器没有insert的bin-log导致a服务器和其他服务器数据不一致。如果先crash bin-log 我们执行了一个insert操作,主节点a服务器crash bin-log后服务宕机,服务恢复之后,其他节点根据bin-log执行了insert,但是服务a并没有redo-log,不会恢复数据,同样导致数据不一致。

2024-01-16 10:34:26 868

原创 扒开MySQL的源码,探索MVCC实现方式

通过阅读源码和实操,我们了解了MySQL是怎么在无锁的情况下怎么保证了多版本控制,就是在数据发生变化的时候,将变化前的内容以undo-log的形式保存了下来,然后通过DB_ROLL_PTR将多个版本链起来,来提高表的并发读写。但是带来的问题,最明显的就是对内存的需求更高,cpu和io开销更大了,同理垃圾回收开销也随着变大。而且对于大事务来说,数据版本过多可能导致性能降低等问题。

2024-01-15 11:22:36 1007

原创 HTTP、CDN、DNS的这些知识,我也不知道你知道不知道,反正我被问到过

HTTP,全称Hyper Text Transfer Protocol,即超文本传输协议,是一个简单的请求-响应协议,它通常运行在TCP之上。HTTP目前一共经历了HTTP 0.9,HTTP 1.0,HTTP 1.1,HTTP 2.0,那么我们分别来看看每个版本的HTTP的功能和发生的变化HTTP 0.9HTTP 0.9是第一个版本的HTTP协议,已过时。它只允许客户端发送GET这一种请求,而想我们常用的POST PUT DELETE 是不.

2022-01-10 19:23:53 1776

原创 使用ffmpeg对视频指定时间点加入指定音频和gif动图 实现水印旋转

注:本文为了方便演示,都是在源文件目录下执行的命令,如果不同目录请使用具体路径 视频中添加字幕 首先看一下我的目录 001.mp4dianzan.movr001.flvtx.wav皮肤粗糙_棒棒-1.assimage.png 给原视频文件001.mp4加上字幕文件,生成r001.flv文件,视频的格式你想要哪种都可以,(可以先使...

2021-03-17 19:51:07 1931 15

原创 最全的百度网盘搜索引擎

1.易查搜索(https://so.acurd.com/)推荐指数 *****+资源聚合做的比较好的一个网站,也是最常用的一个网站,据up主说有脚本会定时检测每个搜索引擎,不通的或者服务器挂的搜索引擎会自动下架,保证了高可用,这里感谢一下作者的良苦用心,加油!!2.虫部落(http://magnet.chongbuluo.com/)推荐指数 *****和top1有一部分重合,可以解决你的大部分搜索需求,但也正因为太多了,所以有点良莠不齐。3.云盘精灵(https://www.yunp

2020-07-24 14:28:41 6272

原创 使用docker搭建nginx集群,实现负载均衡

最近都是在忙一些琐碎的小事,有几个选题,一直在纠结写哪个,最终决定先从简单的来吧。简单的往往比较琐碎,熟悉的小伙伴可以1.5倍速浏览哈 环境基于centos7,docker 安装教程参考https://www.runoob.com/docker/centos-docker-install.html(选择手动安装靠谱一点,毕竟国内网络不稳定),这里不做赘述了。相信聪明如一休的你一定可以解决。最后,别忘了替换镜像源 start----------------------------------..

2020-07-02 20:43:50 2008 2

原创 后端程序员入门react笔记(九)- react 插件使用

props 用于父子组件传递数据消息订阅-发布 可以用于兄弟组件,祖孙组件redux 用于兄弟组件,祖孙组件context 用于祖孙组件。

2024-03-22 11:41:58 751 1

原创 后端程序员入门react笔记(八)-redux的使用和项目搭建

我们先来看一下redux的工作流程,可以有一个大概的印象,我们看到,redux的核心有三个,一个是action creator, 一个是store,一个是reducers,其中redux的核心是什么?这样看起来明显是不科学的,那么有没有一种方法,让我们写一次,就可以不用写了呢,有,首先第一点我想到的就是用一个特殊标签包裹一下这些组件,只要在标签内的,都默认传递了store,react真的这么做了,这饿就是provider ,我们来看一下怎么用。我们知道,每个容器组件我们都需要传递一个store,像这样。

2024-03-14 18:48:24 1005

原创 后端程序员入门react笔记(七)- React路由

现代的前端页面大多是SPA(单页面应用程序), 也就是只有一个HTML页面的程序,这样用户体验好,服务器压力小,所以更受欢迎。但是一个页面可能有很多功能,比如一个页面,可能会有导航栏,有内容页。头部区域和尾部区域,那么如果是互联网刚起来的那几年,每个导航栏可能就是一个a标签,点击跳转新页面。但是这种跳转不管是对于服务器还是对于用户来说,可能都是不友好的。那么怎么能实现这样一种功能呢,就是我们点击导航栏的时候,只有内容刷新?你用点击事件固然可以这么做。

2024-03-11 11:20:06 1178

原创 后端程序员入门react笔记(六)- 讲透Promise与Fetch

一层层的嵌套,这就是回调地狱。这即不好看,也不好写,逻辑更是混乱。那么怎么办呢?至少作为后端,我们取使用orm取数据的时候都会用到一种链式操作,比如`Model(user).Where("email = ?",query.Email).Where("password = ?",utils.Md5Encode(query.PassWord)).First(user)`。我们永远可以在之前的操作结果上加条件。那么js有没有这种写法呢?有的,这个东西就叫做promise

2024-02-28 15:32:50 1086

原创 后端程序员入门react笔记(五)ajax请求

axios提供了请求拦截器和响应拦截器,帮助我们在请求前对config做一些配置,判断是否重复提交,或者对config做一些检查以及配置纠正等,响应拦截器帮助我们根据不同的返回内容做不同的数据处理,相关案例如下。我们知道,我们前端的服务器是3000端口,但是我们后端的服务器不一定是3000,也可能是80端口,现在我启动一个go编写的后台服务,调用一下接口。axios提供了两种方式来发送请求, 一种是通过axios(config)来发送请求,另一种就是上面列子中的axios.get,

2024-02-23 18:10:19 952

原创 后端程序员入门react笔记(四)-综合运用,写一个小demo

有时候我们会遇到这样的问题,有两个css对一个class声明了样式,这样的话后引入的css会覆盖前面的css样式,导致样式冲突,那么我们怎么解决这种问题呢,我们可以使用样式的模块化,我们起名一个index.module.css和一个content.module.css。

2024-02-22 18:39:34 1369

原创 JavaScript操作数组常用的函数

【代码】JavaScript操作数组常用的函数。

2024-02-22 14:56:08 379

原创 后端程序员入门react笔记——react的diff算法(三)

我们知道,react里面操作的都是虚拟dom,最后经过render渲染为真正的dom,那么为什么要提出虚拟dom这个概念呢?其实就是将逻辑和视图区分开,react的虚拟dom,就相当于mvc的c,将数据逻辑和真正的dom区分开,从而减少了对dom的操作,不仅避免了资源浪费,而且页面的构建也得到了很大的提升。

2024-02-21 17:02:33 1386

原创 优雅地用eruda在移动端上调试网页

Eruda 是一个专为手机网页前端设计的调试面板,类似 DevTools 的迷你版,其主要功能包括:捕获 console 日志、检查元素状态、捕获XHR请求、显示本地存储和 Cookie 信息等等。其有以下功能:Console面板:捕获Console日志,支持log、error、info、warn、dir、time/timeEnd、clear、count、assert、table;支持占位符,包括%c自定义样式输出;支持按日志类型及正则表达式过滤;支持快捷命令加载underscore、jQuery库;

2024-02-18 17:17:49 304

原创 后端程序员入门react笔记——react的生命周期(二)

这个函数我们太常见了,在初始化类的state的时候,或者初始化类的props的时候都会用到,就是一个类的构造函数。对后端人员来说很熟悉。

2024-02-04 18:34:14 893

原创 后端程序员入门react笔记(一)

我们在上面代码可以看到,在js里面我们竟然可以直接写html,而且还不报错,其实这个有趣的标签语法既不是字符串也不是 HTML,而是JSX,它是一个 JavaScript 的语法扩展。在了解react之前,我们还需要了解一些基础工具,比如npm,npm 全称是 node package manager,其实就是一个管理js编写的软件包的管理工具,可以下载,安装,升级,上传js软件包。为了在国内尽快的下载js库,我们需要配置一下npm的镜像源,即从哪个源下载,这里我指定了华为,其他的还有腾讯,淘宝等镜像源。

2024-02-04 14:56:00 1441

原创 记一次gorm版本不兼容踩坑经历

gorm.io 的 Find 方法在进行查找时,如果查找结果为空,不会报record not found,当接收函数为集合时,返回空集合;在gorm2.0以后的版本,有的时候为了方便,对于不需要操作的数据,我会直接interface返回结果,比如这样。这个很让人头疼,查看源码,发现确实有这样的限制,不是slice和struct就会报错,但这明显是不符合规范的,我不知道大家有没有注意过,在不同的项目中引入的gorm 有时候git地址是不一样的,有。这个仓库中,由于版本不兼容,所以留存了两个仓库。

2024-01-23 16:10:54 542

原创 csdn写作关于markdown语法说明-相关操作及对应效果

MarkdownAuthors: John: Luke对应效果MarkdownHTMLAuthorsJohnLuke。

2023-11-27 16:17:03 950

原创 让国内AI模型解题:滑动窗口中找出最大值,文心一言,通义千问错误率100%,讯飞星火略胜一筹

最近,一些大厂陆续放出了自己的AI模型,处于日常的使用和准确度,我通过一道试题来看一下文心一言、讯飞星火和通义千万的回答结果本道题是一道很经典的算法题,请在滑动窗口中找出最大值。

2023-11-23 11:16:00 170

原创 goland开启debug一直connected的问题 undefined behavior - version of Delve is too old for Go

golang的调试器是delve,Goland内置有一个delve,这个问题表面上看,就是内置delve的版本过低了。我写了一段代码在test.go文件,然后使用单测模式打了几个断点并debug,然后情况出现了,一直在running。idea的调试有的就是有问题,我用过PHPstorm出现过类似问题,所以我新建了一个main文件,并执行,发现报错。debugger面板显示connected,没有任何报错和输出。也就是说,只需要更改为最新的调试器就可以了。

2023-11-17 11:50:34 526

原创 聊一聊被人嘲笑的if err!=nil和golang为什么要必须支持多返回值?

看似实现了一样的功能,但是两者的实现方式是不一样的。golang没有try catch 异常捕捉机制,那么我们至少需要一个返回值来返给我们结果,第二个如果有error了,我们需要知道error,由程序员去控制要不要处理error,而不是直接panic,虽然if err!=nil 被其他程序员嘲笑,但是,这确实是go处理错误的一种方式- go是静态语言,在接收值的时候,我们已经规定好了返回的类型是什么,如果正确了返回正确的值,如果错误了,你可以返回我nil和error,而不是直接把error作为返回值给我。

2023-11-09 18:18:56 394

原创 用go开发项目,提前做好这些工作,让你事半功倍!

在项目中,如果我们代码发生了改动,一般就得手动重新构建,这样显然是很麻烦的。但是我们说过,viper可以用于实现配置的热加载,那么有没有一种办法,可以让go程序也实现热加载呢?viper热加载是利用了第三方库fsnotify.NewWatcher(),用来检测文件,fsnotify利用了os包里面的接口来检测文件是否发生变化,如果发生变化则重新读取。bee是beego框架的热编译工具,同样可以对GIN框架进行热编译,使用起来很方便,功能也有很多。个人感觉这种热部署用起来更舒服,我们可以通过。

2023-09-20 20:40:59 116

原创 yapi运行接口无法发送cookie的问题

今天用yapi调试接口,需要登录验证,可是把cookie在header头设置之后就是发送不了,但是别人就可以环境代码都一致,最后只能猜测是cross-request插件的问题,后来经过版本和id比对,我用的3.1版本,别人用的3.0版本所以我将3.0版本上传到阿里网盘,有需要的可以下载链接: https://pan.baidu.com/s/1ql5jIcJiGaBwSdse_82a_Q?pwd=jd3k 提取码: jd3k

2023-08-24 16:39:57 157

原创 https你很熟?灵魂三连问之https安全在哪里?客户端如何验证https证书的合法性?ssl是如何加密数据的?

如果你用的是ca机构发给你的pem和key,那么ca认为证书就是合法的,如果是你自己生产的证书,那么ca就认为你是不安全的,浏览器就会提示你。前面我们说过,在传输之前,我们需要用公钥对数据加密,但是公钥是明文传输的,那么可能就会出现如下图的情况,中间人对客户端伪装成服务端,对服务端又伪装成客户端,客户端和服务端都以为已经拿到了对方的公钥,对数据加密传输了,而其实用的却是中间人的公钥,那中间人自然可以加密解密,窃取,篡改了。那么ssl/tls是怎么解决上面我们说的,被窃听,被篡改,被伪造的问题的呢?

2023-08-17 15:48:18 396

原创 goanno的简单配置-goland配置

【代码】goanno的简单配置-goland配置。

2023-08-07 16:05:00 219

原创 谈谈mysql——主从模式下的同步方式及半同步、MGR的部署方式

为了解决异步存在的问题,MySQL5.5版本推出半同步复制,在master执行完毕后,commit之前,slave的io进程开始把Binlog写入到relaylog中,写完之后,反馈给master,master收到任何一个slave的反馈后,执行commit并返回结果给客户端。因为需要等待所有的从库都执行完该事务才能返回,所以全同步复制的性能较差。这里讲一个小技巧,为了减少主从延迟的问题,主库和备库的硬件性能尽可能保持一致,如果主备硬件差距比较大,从主从延迟的角度上看,应该在性能更好的机器上面安装备库。

2023-07-07 17:27:58 1281

原创 谈谈mysql——Binlog的复制方式和解析技巧

而且对于较为复杂的sql来说,这种方式也更高效,因为你中间不论执行了多少sql,我日志只记录物理日志,可能就是一行数据。这种模式的优点就是二进制日志里的事件更加紧凑,而且binlog的日志量会更小,比如我们更新了几十万条记录,而日志里面只记录了一条update语句。将行模式下的binlog以注释的SQL语句的形式显示,在适用的情况下,还包括表的分区信息。如果声明是mixed,MySQL则动态切换的,基于语句的复制执行不了的时候,就会采取行复制。在不加任何参数的情况下,我们看到的日志是压缩过的。

2023-07-05 17:56:01 353

转载 微服务越来越多,如何打通各个服务之间的登录状态?来试试JWT

token是可以被解析的,那我的token岂不是不安全,说的对,token只是实现登录认证,并不保证你的数据不外泄,所以我们不能把重要的信息放到token里面去。基于上面的两种场景,我们提出来refresh_token的机制,其实就是多了一个刷新token的触发机制,第一次登录的时候,我们给用户颁发两个token ,一个access_token,有效期比较短,比如是4小时,还有一个refresh_token ,就是刷新token,假设有效期是24小时。

2023-06-28 16:59:24 280

原创 为什么golang的map不支持并发操作?sync.map又是怎么实现的?

sync.map的实现原理- 通过read map和dirty map 将读写分离,实现高效读写- 如果read map读取不到并且amended为true(false表示read map和dirty map一致,就没必要再读dirty map了),则给map加锁并从dirty map读取,将misses+1。如果map中一共有n个元素,但是读了n次都没有在read map中找到(就是misses的值大于等于map的长度),则会将dirty map升级为 read map ,dirty map 重置为n

2023-06-06 19:05:04 509

原创 这些神仙问题,整垮了chatGpt

如果说这些问题还不足以烧掉我的CPU。那么搞一些奇奇怪怪的字符串,各种类型的编码,甚至一些乱七八糟的代码。试图攻击我,击败我。但是我也不是吃素的呀,我迅速解决了这些bug。之前朋友们的那些提问,ChatGPT已经做了回答,重新输入问题就可以了!这次的教训是,过滤输入,控制输出,是程序员应该永远记住的一句话。最后,给大家推荐一篇我之前写过关于网络安全的文章。

2023-05-06 11:38:26 535 1

原创 go继承nacos配置中心并读取配置信息

平时我们写一个demo的时候,或者说一个单体的应用,都会有一个配置文件,不管是 json文件或者yaml文件,里面包含了redis,mysql,es等信息,如果我们修改了配置文件,往往我们需要重启,为了避免重启,后来引入了viper,可以实现热更新。但并不是所有的项目都支持viper。如果是一个分布式系统,肯定是有很多服务模块做支撑的,而且服务是可伸缩的,可能有几十台服务,也可能有几百台服务。如果每个服务模块下面都有自己的配置文件,那么如果mysql更新了端口号,运维人员就得一个一个文件的改。

2023-05-04 19:53:56 844 5

原创 什么是内存?什么是内存逃逸?怎么做内存逃逸分析

我们知道,CPU计算很快,但是磁盘的IO实在是太慢了。解决CPU和磁盘之间速度的鸿沟,我们引入了内存。其实在CPU内部还有一部分缓存。我们先来看一下计算机的存储设备有哪些。我们再量化一下这些存储设备的速度,大概是这样CPU : 每个指令大概需要 0.38ns,以此作为对比的基本单位 1s一级缓存:读取时间大约为 0.5ns,对比 CPU 的时间大约是 1.3sCPU 分支预测错误: 耗时为 5ns,对比 CPU 的时间大约是 13s。

2023-04-25 11:26:01 648

原创 go-zore入门,可能看这一篇就行了

- 微服务框架对比- goctl的安装和使用- go-zore的api服务- go-zore的rpc服务- 一探负载均衡的实现方法- 服务发现- 使用consul代替etcd实现服务发现- 中间件的实现- 相关代码已传送至gitee[点击获取代码](https://gitee.com/guofuzhang/app-go)

2023-04-24 15:01:48 769

原创 明明白白的聊一下什么是服务发现

服务注册:服务进程在注册中心注册自己的元数据信息。通常包括主机和端口号,有时还有身份验证信息,协议,版本号,以及运行环境的信息。服务发现:客户端服务进程向注册中心发起查询,来获取服务的信息。服务发现的一个重要作用就是提供给客户端一个可用的服务列表。

2023-04-10 17:50:59 780

原创 Microsoft Edge Dev版本如何使用chat功能

2.访问https://www.bing.com 如何这个时候你访问的页面是长这个样子。那么你需要设置一下地域。

2023-03-16 14:50:47 2452

原创 从零开始撸,基于gin+gorm+grpc实现项目改造

/我们定义一个博文的数据结构, syntax = "proto3";blog";//生成的go文件存放目录在哪;包名叫什么// ID// 业务id// 标题// 标题样式// 缩略图// 关键词// 描述// 内容// 创建时间// 更新时间// 作者// 来源// 摘要 } // 定义blog服务 service BlogInfo {//定义方法} //定义id的消息类型。

2023-03-14 13:03:46 1113 1

空空如也

空空如也

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

TA关注的人

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