自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 漏洞复现 一 EasyCVR-taillog任意文件读取

EasyCVR视频管理平台,作为TSINGSEE青犀视频旗下的一款重要产品,是一款功能强大的视频融合+AI智能分析网关平台。平台基于分布式、负载均衡等流媒体技术,提供广泛兼容、安全可靠、开放共享的视频综合服务。它支持多协议的设备视频接入、采集、AI智能检测、处理、分发、管理等服务,并具备轻量化接入、传输、处理与分发能力,可实现一站式视频融合共享管理。支持RTSP、RTMP、GB28181、GB35114、海康Ehome、大华SDK、海康SDK等多种协议的视频设备接入,兼容市面上几乎所有视频终端。

2024-12-19 17:18:02 389

原创 解决Centos中文件系统根目录上磁盘空间不足问题

centos中提示根目录磁盘空间仅剩250MB,劝我赶紧扩容,我意识到如果占完后会不会开不开机,吓得我赶紧去扩容!!!

2024-11-29 15:18:30 1159 1

原创 Go的逃逸分析

栈上分配内存比在堆中分配内存有更高的效率栈上分配的内存不需要GC处理堆上分配的内存使用完毕会交给GC处理逃逸分析目的是决定内分配地址是栈还是堆逃逸分析在编译阶段完成。

2024-11-15 23:56:02 368

原创 go的单元测试

其中f(x)解释了失败的操作和对应的输入,y是实际的运行结果,z是期望的正确的结果。即使表格中前面的数据导致了测试的失败,表格后面的测试数据依然会运行测试,因此在一个测试中我们可能了解多个失败的信息。我们现在的任务就是修复这些错误。当然,一旦我们已经修复了失败的测试用例,在我们提交代码更新之前,我们应该以不带参数的go test命令运行全部的测试用例,以确保修复失败测试的同时没有引入新的问题。我们可以很容易地向表格添加新的测试数据,并且后面的测试逻辑也没有冗余,这样我们可以有更多的精力去完善错误信息。

2024-11-08 17:15:00 1069

原创 快速理解GO中的接口类型

Go 的接口类型是一个重要的概念,它允许定义一个方法集合,而不需要指定具体的实现。上面这段代码中都隐式的实现了animal接口,当然我们也可以显示的实现。对于要实现相同逻辑的方法,这里就节省了代码量。

2024-10-30 15:00:00 162

原创 GO的接口类型和类型断言

接口类型具体描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的实例。io.Writer类型是用得最广泛的接口之一,因为它提供了所有类型的写入bytes的抽象,包括文件类型,内存缓冲区,网络链接,HTTP客户端,压缩工具,哈希等等。io包中定义了很多其它有用的接口类型。Reader可以代表任意可以读取bytes的类型,Closer可以是任意可以关闭的值,例如一个文件或是网络链接。再往下看,我们发现有些新的接口类型通过组合已有的接口来定义。

2024-10-25 20:00:00 833 1

原创 linux安装protoc3(详细教程)

想在项目中引入proto,发现报错找不到命令,但是直接通过镜像装也是报错,于是就手动安装一下吧~~~

2024-09-09 11:25:25 721

原创 linux系统中启动ES报错(Exception in thread “main“ java.nio.file.AccessDeniedException:)

首先要明白Elasticsearch 不允许以 root 用户身份运行,需要以非 root 用户身份运行,这是为了避免潜在的安全风险。root 用户具有系统的完全控制权,如果 Elasticsearch 以 root 用户身份运行,一旦发生漏洞,攻击者可能会获取对系统的完全控制权。这是说明我们的用户权限不够,此时需要切回到root用户,给普通用户设置权限。此时说明我们要切换到普通用户的身份去运行ES。设置完权限后,继续切换到普通用户下,运行。如果用root用户启动,会报错如下。看到日志,说明启动成功!

2024-09-05 17:00:06 696 1

原创 FOFA-入门指南

网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统对全网的网络资产进行统计,分析,获取信息,通过这些信息给用户提供漏洞及时发现,漏洞发生之后,快速定位,以及安全数据分析等服务。简单的理解就是 更加清楚的掌握网络资产的分布状况。

2024-08-30 09:50:16 2516

原创 Redis常用数据类型的底层实现

redis常用数据类型的底层实现!!!

2024-08-21 09:16:16 838

原创 搞懂go的Context包

Context仅仅是一个接口定义,跟据实现的不同,可以衍生出不同的context类型;cancelCtx实现了Context接口,通过WithCancel()创建cancelCtx实例;timerCtx实现了Context接口,通过WithDeadline()和WithTimeout()创建timerCtx实例;valueCtx实现了Context接口,通过WithValue()创建valueCtx实例;三种context实例可互为父节点,从而可以组合成不同的应用形式;

2024-08-15 14:35:31 876

原创 Go内存逃逸分析

栈上分配内存比在堆中分配内存有更高的效率栈上分配的内存不需要GC处理堆上分配的内存使用完毕会交给GC处理逃逸分析目的是决定内分配地址是栈还是堆逃逸分析在编译阶段完成。

2024-08-10 11:30:06 504

原创 详解Go的内存分配机制

Golang程序启动时申请一大块内存,并划分成spans、bitmap、arena区域arena区域按页划分成一个个小块span管理一个或多个页mcentral管理多个span供线程申请使用mcache作为线程私有资源,资源来源于mcentral。

2024-08-10 09:15:16 1184

原创 虚拟内存的作用及实现原理

我们实际用到的物理地址就是主存,但是物理主存空间有限,所以一般现代操作系统都会想办法把一部分内存块放到磁盘中,用到的时候再装入主存,但是对用户程序而言,是不需要注意实际的物理内存的,为什么呢?因为有虚拟内存的机制。让操作系统为每个进程都分配一个虚拟地址,互不干涉。这样每个进程都不能访问物理地址,而是通过访问虚拟地址去映射到物理地址一个进程最终要访问到哪个物理内存,由操作系统来管理这里也引入两个概念。

2024-07-26 11:18:31 1013

原创 MVCC实现原理分析

如果被访问版本的trx_id,与readview中的creator_trx_id值相同,表明当前事务在访问自己修改过的记录,该版本可以被当前事务访问如果被访问版本的trx_id,小于readview中的min_trx_id值,表明生成该版本的事务在当前事务生成readview前已经提交,该版本可以被当前事务访问.如果被访问版本的trx_id,大于或等于readview中的max_trx_id值,表明生成该版本的事务在当前事务生成readview后才开启,该版本不可以被当前事务访问.

2024-07-22 09:20:29 913

原创 详解TCP流量控制和拥塞控制

当接收方发现丢了一个中间包的时候,发送三次前一个包的 ACK,于是发送端就会快速地重传,不必等待超时再重传。Seq2丢失后,后续发送Seq3、4、5的时候,都是返回了ACK2,当返回三个相同ACK的时候,会在定时器过期前,重传丢失的报文段。这时,如果接收方出现了缓存区,但是告诉发送方时候,ACK丢失了,那么发送方将一直不知道窗口大小可以变了吗?接收方的ACK应答丢失了,发送方以为没发出去,就重发了,于是接收方收到重复数据后,告诉发送方真相。当重复传输的时候,告诉发送方,真正的原因。开始进入线性增长阶段。

2024-07-19 20:06:06 1067

原创 输入URL到网页显示中间经历了哪些过程?

浏览器先对URL进行解析,从而生成发送给web服务器的信息。

2024-07-18 11:15:06 904

原创 GMP调度模型解析

Goroutine是轻量级的协程,被放置在P处理器中。M是操作系统的线程,一个M线程一次只能执行一个P处理器中的一个Goroutine。调度器负责在多个M线程和P处理器之间公平地分配Goroutine,以实现高效的并发执行。

2024-07-12 17:21:11 866

原创 Linux常用基础知识汇总

linux基础知识,带你快速入门linux!!!

2024-06-28 18:30:07 1227

原创 Mysql从数据页的角度理解B+树查询

InnoDB的数据按 数据页 为单位来读写的,默认数据页大小为16KB。每个数据页之间通过双向链表的形式组织起来,物理上不连续,但逻辑上连续。每个数据页内包含用户记录,每个记录之间用单向链表的方式组织起来,为了加快在页内查询速度,设置了页目录,页目录存储的是各个槽(分组),且主键值有序,此时便可通过二分快速查找。数据页多的情况下,InnoDB采用B+树作为索引,每个节点都是一个数据页。叶子节点存储的数据就是实际数据那就是聚簇索引,一个表只能有一个聚簇索引;

2024-06-08 21:01:49 794 3

原创 rabbitmq-service.bat install exited with code 1 解决方案

最新在安装rabbitmq,在安装到最后一刻的时候,弹出来来了这个问题,网上搜了很多教程,花费了好几个小时,发现大多都不管用!!!在这里记录一下,我解决的方法。首先介绍一下我的 erlang版本26.2.5;rabbitmq版本3.13.2在安装弹出这个界面后,我们可以打开安装详情看见以下这个问题说明 这是 rabbitmq service 安装时的权限不足导致的。

2024-05-26 10:00:46 3007 2

原创 mysql中锁机制的介绍

锁定数据库中的所有表。对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。其典型的使用场景是做全局的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。缺点:​ 如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆。​ 如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志,会导致主从延迟。添加全局锁释放全局锁。

2024-05-26 08:16:27 932

原创 Go的垃圾回收机制

垃圾回收就是对程序中不再使用的内存资源进行自动回收的操作

2024-05-25 22:00:10 1149

原创 golang操作阿里云oss实现文件上传

OSS指的是对象存储服务,是一种用于存储和检索大量非结构化数据(例如图片、视频等)的云计算服务。OSS提供了高可用性、可扩展性和安全性,并且可以通过互联网进行访问。对象存储服务通常以存储桶(Bucket)和对象(Object)的形式组织数据。存储桶是存储的容器,类似于文件夹,而对象是存储的实际数据,可以是任意类型的文件或数据。

2024-05-02 10:06:16 849 1

原创 Go实现简单的命令行应用(记事本)

我们首先介绍一个用于构建命令行应用程序的go语言包:。它提供了一组功能强大且易于使用的工具,用于定义命令、解析命令行参数、执行命令以及处理应用程序的输入和输出等任务。下面简单介绍一下这个包的使用1.2 设置应用程序的名称、版本和用法说明1.3 添加程序的命令部分参数介绍:1.4 最后运行应用程序二、实现记事本的功能我们注意到上面1.3中介绍了每个命令都有对应的执行函数。那么接下来我们把对应的函数实现一下就可以了2.2 删除某条记录获取命令行中要删除的 id读取记事本中所有内容存

2024-04-20 15:05:30 566 1

原创 MySQL事务为什么要两阶段提交?

两阶段提交中的两阶段分别是准备阶段(Prepare)和提交阶段(Commit)。确保了事务的原子性和统一性。

2024-04-17 21:00:16 924

原创 MySQL三大日志详解(Undo log、Redo log和Binlog)

Mysql的数据都是存在磁盘中的,当有一条记录需要更新的时候,InnoDB 引擎就会先更新内存(同时标记为脏页),然后将本次对这个页的修改以 redo log 的形式记录下来,这个时候更新就算完成了。后续,InnoDB 引擎会在适当的时候,由后台线程将缓存在 Buffer Pool 的脏页刷新到磁盘里,这就是WAL (Write-Ahead Logging)技术。WAL 技术指的是, MySQL 的写操作并不是立刻写到磁盘上,而是先写日志,然后在合适的时间再写到磁盘上。

2024-04-17 15:50:09 1226

原创 Javaweb在线购物商城-完整源代码

这是一个基于JavaWeb的在线购物商城系统。主要用实现,数据库用的mysql。你是否还在被课程设计而折磨呢?当你看到这篇文章也许会给你带来帮助!!!下面一张图告诉你,系统有哪些功能!如果需要完整源代码,可以直接跳转到文章尾部。

2024-04-15 16:00:56 7005 1

原创 linux宝塔面板部署goweb项目

1.1 先去获取想要下载go版本的链接,然后去宝塔终端下载1.2 去刚才下载的文件路径中 打开终端,解压刚才下载的安装包1.3 添加go到环境变量1.4 立即生效1.5 检测go版本go version1.5 设置Golang的GOROOT和GOPATH1.5.1:Golang的安装目录,即/usr/local/go1.5.2:Golang项目的路径,可自定义,例如/golang/blogs-golang1.5.3 立即生效。

2024-04-01 08:52:00 1229

原创 WebSocket在gin中的使用—实现群聊和私聊

WebSocket是一种在客户端和服务器之间建立持久性连接的通信协议,它允许客户端和服务器之间进行全双工通信。

2024-03-24 11:06:06 1546 1

原创 ngrok实现内网穿透

内网穿透就是在不暴露整个内部网络的情况下,让外部用户能够访问位于内部网络中的设备、服务或应用程序。通俗的讲,就是你的网络不在局限于局域网内访问,其他人也可以进行访问你的网络。在实际运用中,你在本地跑起来一个项目,内网穿透后,其他人可以也可以访问你的项目了。

2024-03-16 10:23:15 382

原创 漏桶和令牌桶的限流策略

我们可以简单理解为:有一个漏桶,然后不断往这个漏桶里面加水,无论加多少水,这个漏桶流出的速率是固定的,不会因为流入水的多少而改变,从而实现了水流控制,也就是限流操作。具体的说,令牌桶算法会不断的生成令牌并放入到令牌桶中,每个请求在执行之前,都需要从令牌桶中获取一个令牌,如果此时获取不到令牌则需要等待,直到令牌桶中有令牌为止。然后创建一个令牌桶,从令牌桶中获取令牌,如果每次最少能获取一个,如果此时令牌桶里有令牌,请求可以执行,如果没有令牌,则中止当前的请求。我们用下一滴水滴下落时间。

2024-03-08 15:55:37 243

原创 Git操作远程仓库及分支的使用

常规分支(Regular Branch):常规分支是指代码仓库中的主要分支,通常是用于存放稳定的、生产可用的代码版本。在常规分支上进行的更改会直接影响到项目的生产环境。在 Gitee 中,通常情况下,master 分支就是常规分支,开发者们会将稳定的、经过测试的代码合并到 master 分支中。保护分支(Protected Branch):保护分支是指在代码仓库中被设置了额外限制或权限的分支。这些限制可以包括阻止普通开发者直接向该分支推送代码、要求代码审查通过后才能合并等。

2024-02-29 20:38:15 2159

原创 Centos7安装docker(图文详细教程)

这样一个流程下来就可以 在 centos7上 完成 docker的安装了!

2024-02-22 20:26:16 639

原创 CSRF和XSS攻击详解及区别

CSRF(Cross-Site Request Forgery)攻击是一种利用用户已登录的身份,欺骗用户在未经其同意的情况下对某个站点发起请求的攻击方式。攻击者利用用户在其他站点中的登录状态,通过伪造请求,使用户在不知情的情况下执行了恶意操作。

2024-02-22 08:08:18 1141 1

原创 带你快速上手gorm一一基础知识汇总

orm即Object-Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。

2024-02-20 16:56:19 2924

原创 Redis三大缓存问题及解决方法(雪崩、击穿、穿透)

当大量缓存数据在同一时间过期(失效)或者Redis故障宕机时,如果此时有大量的用户请求,都无法在Redis中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个系统崩溃,这就是缓存雪崩的问题。缓存击穿:针对某一个key(热点数据)的请求,大量并发请求都查询这一个数据,但是该数据不在缓存中,导致多请求直接访问数据库,而其他请求被阻塞等待该请求的返回结果,导致系统性能下降。导致大量请求直接到达数据库,导致数据库瞬间压力骤增,设置宕机。

2024-02-18 22:15:00 7298

原创 Redis中过期删除策略和内存淘汰策略

衰减的值 跟前后访问时间的差距有关系,如果上一次访问的时间与这一次访问的时间差距很大,那么衰减的值就越大,这样实现的LFU算法是根据访问频率来淘汰数据的,而不是访问次数.传统的LRU算法是基于 「链表」结构,链表的元素按照操作顺序从前往后排列,最新操作的被移动到表头,每次需要淘汰数据的时候,只需要选择链表尾部的即可。Redis的回收机制不会回收没有设定过期时间的数据,只会回收设置了有效期的。对logc的增加操作,也并不是单纯的 +1,而是根据概率增加,如果logc越大的key,它的logc就越难再增加。

2024-02-17 20:58:08 1075

原创 Redis常用数据类型及应用场景

例如用户一的 Session 信息被存储在服务器一,但第二次访问时用户一被分配到服务器二,这个时候服务器并没有用户一的 Session 信息,就会出现需要重复登录的问题,问题在于分布式系统每次会把请求随机分配到不同的服务器。例如,可以将任务的优先级作为Sorted Set中的分数,任务的标识作为Sorted Set中的成员,然后可以按照优先级获取任务。例如,可以将用户的分数作为Sorted Set中的分数,将用户ID作为Sorted Set中的成员,然后根据分数对用户进行排名。

2024-02-17 15:30:00 954

原创 golang中引入redis

像一些需要频繁访问的数据就可以缓存到Redis中,可以加速数据的访问,同时也减轻了底层数据库(如Mysql)的压力,提高系统整体性能。这是我们最直观能感受到的一个优点。还有一些Redis的列表和发布/订阅功能可以方便的构建简单且高效的消息队列系统。还有原子操作和有序集合功能可以非常方便的实现计数器,排名,排行榜等功能。redis有着 快速、可扩展、持久化、多语言支持、丰富的功能和优秀的缓存执行等优点。将键名为 “score” 的键值存入到 redis数据库中,设置键的值为 100。

2024-01-29 08:00:00 362

空空如也

空空如也

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

TA关注的人

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