自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go-zero中分布式事务的实现(DTM分布式事务管理器,在一个APi中如何调用两个不同服务的rpc层,并保证两个不同服务之间的业务逻辑同时成功)

1.DTM分布式事务管理器,解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。2.SAGA事务模式,SAGA事务模式是DTM中常用的一种模式,简单易上手.(当然还有其它更多的事务模式,这里采用的SAGA只不过是其中一种较为简单的方法)3.Go-zero框架,ETCD服务注册...和。

2024-03-03 14:25:18 1400

原创 go-zero标准的项目结构,以及如何使用docker-compose部署道linux服务器上

go-zero标准的项目结构,以及如何使用docker-compose部署道linux服务器上。

2024-02-19 19:44:36 987 1

原创 Go协程的简单介绍

进程指的是一个在内存中运行的程序,是应用程序的启动实例,每一个进程都有独立的内存空间,不同的进程通过进程的通信方式来通信.进程是资源分配的最小单位.线程从属于进程,一个进程至少会包含一个线程,线程是CPU能够进行运算调度的基本单位.一个进程中可以有多个线程,而这多个线程之间可以共享这个进程的资源并通过共享内存等线程间的通信方式来通信.

2023-12-08 12:06:09 185 1

原创 Go语言map的使用

map的初始化方法分为字面量初始化和使用make初始化。

2023-11-20 22:43:48 641 1

原创 Go语言通道

1.变量方式通过这种方式声明的通道,值为nil.2.使用内置函数make。

2023-11-02 22:43:46 62

原创 Linux服务器部署SpringBoot项目完整流程(不使用内置的Tomcat) 以及 部分BUG修改

使用 scp -r /path/to/your/local/project user@your_server_ip:/path/to/remote/directory 或者 xftp都可以.首先是最重要的一步:在Tomcat官网上找到合适自己项目的Tomcat版本(下图只是一个示例,具体可以自己搜索,主要是tomcat适配的JDK版本和合适的Tomcat安装包。将Tomcat压缩包上传到服务器的指定目录下面,如:/usr/local/tomcat。命令启动tomcat服务器,进入tomcat目录,执行。

2023-10-28 22:53:24 386

原创 Go语言切片的简单介绍和底层原理

s1 的长度为2,即可以使用s1[0]和s1[2]操作切片里面的元素,容量为5表示,后面向切片中添加元素时,除非预留容量已满,否则添加操作是不需要在重新分配内存的,使用预留的内存即可.切片原容量为4,因此前两次追加操作不会发生扩容操作,但是因为和切片数组共享内存空间,修改切片的值,会影响到原数组中后面的两个值.当切片的容量不足时,会先重新分配一块更大的内存,将原切片的数据拷贝到新切片之后,再返回新切片,扩容之后在将新数据追加进去.创建完切片之后,底层会分配一个数组,数组的长度就是切片的容量.

2023-10-19 20:47:43 84

原创 Windows系统通过部署wsl + Goland进行跨平台开发

近期项目中因为用到了 Golang库中的 "log/syslog" 包,而这个包是禁止在windows平台上编译的.并且在windows环境上开发也会有诸多不便,如执行makefile文件的make命令,本地开发环境中docker,etcd,redis的搭建等等,而这些通过部署wsl去搭建一个linux环境就很可以很方便的解决了.

2024-09-18 15:22:33 1005

原创 Go的并发模型-CSP以及其它并发模型的介绍

常见的并发模型可分为三类: 基于线程与锁的共享内存模型 , Actor模型 , CSP模型.

2024-07-19 16:41:19 480

原创 Redis的缓存雪崩,击穿,穿透的介绍

为保证缓存中的数据与数据库的数据一致,会给Redis里的数据设置一个过期时间,当缓存数据过期后,用户访问的数据如果不在缓存里,业务系统需要重新生成新的缓存,因为就会访问数据库,并将数据更新到Redis里,这样后续请求就可以直接命中缓存.用户访问的数据,即不在缓存中,也不再数据库中,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据,没法构建缓存数据,来服务后续请求.当有大量恶意请求访问不存在的数据时,也会发生缓存穿透,因此在判断出是恶意请求时,直接返回错误.

2024-07-08 08:06:59 895

原创 Go语言垃圾回收(GC原理)以及GPM模型设计

1.STW暂停STW(暂停业务逻辑,找出可达和不可达对象)2.对可达对象做上标记标记完成之后,对象5和对象6不可达,被GC清除.之后STW结束.1.程序创建起初,全部标记为白色,将所有对象放入白色集合中.2. 将程序的根节点集合展开,遍历Root Set(非递归形式,只遍历一次).得到灰色节点3.遍历灰色标记表,将可达的对象从白色标记为灰色,遍历之后的灰色,标记为黑色.4.循环执行第三步,直到灰色标记标中无任何对象.5.收集所有白色对象(垃圾)如果三色标记法不被STW保护.当一个白色对象被黑色对象所引用,且

2024-06-03 08:21:56 1197 1

原创 InnoDB独立表空间

第一个组的第一个页面,页号为0.它存储了表空间的一些整体属性以及第一个组内256个区对应的XDES Entry结构.

2024-05-20 14:04:06 697

原创 Go项目中使用ZMQ(zeroMq)的方法以及部署方法

最近写的一个项目,用了一个神奇的玩意儿,zeroMq.本来go使用第三方库只需要go get -u "xxx" ,一下就好了,但这个不行.go语言中拉完三方库后,需要有一个gcc的环境才能将项目正常启动.

2024-05-16 18:20:05 718

原创 MySQL 单表访问

MySQL直接利用主键值在聚簇索引中定位对应的用户记录.并且唯一的二级索引也可以在常数时间内定位到一条记录. 这种const访问方法只能在主键列或者唯一二级索引与一个常数进行等值比较才有效.

2024-05-09 17:32:21 621

原创 Go语言并发控制

children 中记录了由此context 派生的所有child , 此context被"cancel"时,会把其中所有的child都cancel掉.cancelCtx与deadline和value无关 , 所以只需要实现Done() 和 Err() 外露接口即可.有一种context,它不是用于控制呈树状分布的goroutine , 而是用于在树状分布的goroutine之间传递信息.Value()方法就是此种类型的context,根据key查询map集合中的value.

2024-04-20 08:35:50 1103

原创 Go语言并发赋值的安全性

结构体中有多个字段,此时struct赋值时,并不是原子操作,各个字段之间独立,在并发操作时可能会出现异常.

2024-04-20 08:35:43 301

原创 Go语言中的互斥锁(Mutex)和读写锁(RWMutex)

RLock(): 读锁定,等待写操作结束(如果有)RUnlock(): 解除读锁定,唤醒等待写操作的协程(如果有)Lock(): 写锁定,与Mutex完全一致,阻塞等待所有读操作结束(如果有)Unlock(): 解除写锁定,与Mutex一致,唤醒因读锁定而被阻塞的协程(如果有)

2024-04-09 21:37:29 479

原创 Go语言中的defer执行时机以及panic如何正常恢复

Go语言的函数中return语句在底层并不是原子操作,它分为给返回值赋值和RET指令两步.而defer语句的执行的时机就在返回值赋值操作后,RET指令前.

2024-03-31 10:20:49 711 1

原创 Go变量声明简短模式

变量声明的简短模式不能提供数据类型,也只能在函数内部使用.

2024-03-31 10:10:16 378

原创 Windows11电脑是如何搭建docker环境的

学完Linux系统下的docker使用之后,越发好奇docker在windows电脑上如何使用的.正好这次项目需要,便去研究了一番.

2024-03-03 15:52:01 591

原创 微服务项目,后端有多个请求地址,如何通过Nginx反向代理,使前端只需要使用一个请求地址

还是很简单的,并且不会让前端请求地址改来改去了(

2024-02-21 21:59:11 520 1

原创 Go版本管理工具g的使用(Windows版本)

如果不想太麻烦,可以直接把已经存在的Go相关的环境变量全部清除.

2024-02-01 11:15:27 622

原创 使用GORM集成Casbin基于RBAC模型,实现鉴权

Casbin鉴权是真的方便.

2024-01-28 22:25:08 804

原创 一条Select 语句 的执行流程

Server层首先调用存储引擎接口定位到满足查询条件的第一条二级索引记录.定位到二级索引后,先不执行回表操作,而是先判断该索引中包含的列(reward列)的条件是否成立.如果不成立则直接跳过该二级索引.如果成立,则执行回表操作将完整的记录返回给Server层.执行器查询的过程是一个while循环,所以还会再查询一次,但因为不是第一次查询,所以会调用read_record函数指针指向的函数.因为优化器访问类型为const,这个函数指针会被指向为一个永远返回-1的函数.所以当执行该函数时,结束循环.

2024-01-21 22:05:08 1147

原创 力扣4.寻找两个正序数组的中位数(通过归并解决)

合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。合并数组 = [1,2,3] ,中位数 2。请你找出并返回这两个正序数组的。的正序(从小到大)数组。

2024-01-15 11:40:39 404 1

原创 Vue阶段考核总结

通过redirect:’/路径’,实现页面的重定向,当跳转到这个路由组件时,页面会自动跳转到重定向之后的页面.2.v-test和v-html:v-test:不能解析html标签,会将html也渲染到页面上.v-html:可以解析html标签,会将解析后的内容添加到页面上.3.vue的数据代理原理:(1).通过Object.defineProperty()把data对象中所有的属性添加到vm中.(2).为每一个添加到vm上的属性,指定一个setter和getter方法.

2023-12-28 18:32:59 390 1

原创 JS+jQuery考核总结

考核时间:2022.11.5;考核内容: 考核时的主要问题就是对一些细节方面的问题,还有一些是对自己写作品时用的比较少的知识点并没有了解太多,对用的比较少的知识点遗忘了很多.JS的组成:由BOM(浏览器对象模型 Browser Object Model),DOM(文档对象模型 Document Object Model)以及ECMAscript三部分组成.prompt()方法 用于显示可提示用于进行输入的对话框 var person=prompt("请输入你的名字","Harry Potter");

2023-12-28 18:28:54 381 1

原创 Javaweb商城作品(前端页面有两版 分别为普通的html+css页面和vue2.0框架+elementui写的页面)

用户可用过商城首页的导航栏,或者侧边栏相应按钮进入个人信息的编辑页面,此页面用户可以编辑自己的商城昵称,上传头像,选择国家地区,性别,完善个人信息.也可以在个人信息页面修改自己的查看,并且修改自己的密码,将账号从该网站退出,或者注销此账号.但是注销账号的同时,用户所有的个人信息,购买记录均会被删除.新用户可以通过登录页面的注册按钮进行注册.注册时用户需要输入自己想要的账号,密码,验证码,并且需要再次输入密码,只有两次密码一致才能注册.对新用户输入的账号进行判断,如果账号已经存在,则提醒用户.

2023-12-28 18:08:33 922 1

原创 MySQL视图,存储过程以及触发器

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,提高数据处理的效率.存储过程思想很简单,就是数据库SQL语言层面的代码封装与重用.特点1.封装,复用2.可以接收参数,也可以返回数据3.减少网络交互,效率提升。

2023-12-16 09:59:58 861 1

原创 SpringBoot项目实现阿里云的文字以及图片审核

上传的图片URL需要是在阿里云商存储的图片路径,并且必须携带https:// 或者 http。

2023-12-04 17:56:05 620

原创 Linux上安装Docker以及通过Docker部署nginx,去部署一个前端页面

2. 借助xftp7(可以申请免费版的) , 连接上自己的服务器或者虚拟机后,找到新建的/data/nginx/html文件夹.将编写的页面上传到这个文件夹即可。1.通过cd命令进入/data/ngnix/html文件夹中后 使用mkdir -p 命令新建一个index.html页面然后编写代码(不推荐)这样就成功部署了. 在自己的浏览器中输入服务器的主机ip/index.html就可以看到ngnix默认的页面了。可以通过查看docker 版本验证是否安装成功。

2023-09-26 21:48:49 175 4

原创 使用Vue脚手架(Vue CLI)创建Vue项目的流程以及node.js的环境变量的配置.

在使用安装Vue CLI之前,需要先安装好node.js,否则在使用nmp 命令安装Vue CLI时,会报错.(npm 不是可用命令 或 内部命令).

2023-07-23 12:55:40 283

原创 JDBC API的使用 (MySQL 8版本以上)

/此处不需要再传递sql语句了,在获取SQL执行对象PreparedStatement时已经对SQL语句进行预编译了,executeUpdate();执行DML语句(对数据库表中的数据进行增删改操作)时返回值是执行完DML语句后受影响的行数,可以通过此返回值来判断sql语句是否执行成功.Class.forName("com.mysql.jdbc.Driver);执行DDL语句(对数据库,数据表进行操作)时,返回值为int类型.但是一般不会使用Java代码去执行DDL语句.rs.next();

2023-07-09 10:13:03 204 1

原创 通过内网穿透让别人访问到自己的Javaweb项目

IDEANATAPP可以免费使用,但是免费的域名不稳定,并且会时长更换,可以根据需要自行选择.如果选择购买,需要注册一个二级域名.

2023-06-11 10:09:24 595

原创 Javaweb基于Commons_ui实现的文件上传

form表单提交时,如果没有文件上传或者下载,可直接获取input里面的value值进行数据提交,但是涉及到文件的上传与下载之后,就需要按照headers: {},

2023-05-21 15:44:24 100 1

原创 Javaweb常见问题以及解决办法(持续更新)

1.找到apache-tomcat目录下的conf目录,找到里面的logging.properties文件.添加过滤器之后,项目访问外部css样式,图片的路径也会被过滤器拦截,导致样式,图片失效.不要使用cmd快捷命令打开黑窗口,否则会产生权限不够的问题.以管理员身份运行.浏览器会缓存原有的CSS样式,导致新改的样式无法生效,清除浏览器的缓存即可.2.将文件出现的UTF-GBK,或注释掉前四个UTF-8的语句。参数无法识别,需要在每个参数前面加上@Param()注解。该处的路径,是访问项目中资源的路径.

2023-04-21 15:44:16 5173

原创 外部引入js文件,获取dom全为null (Cannot read properties of null) 外部引入的js文件失效.

在外部引入js文件时,js获取的dom全为null. 报错:Cannot read properties of nullwindow对象是JS访问浏览器窗口的一个接口,由于js文件时由外部引入,因此直接引入js文件时,文档内容并未加载(包括图像,脚本文件,CSS文件等),因此此时js获取的dom全为空.解决办法:将外部引入的js封装在或者也可以使用document.addEventListener('DOMContentLoaded',function(){})DOMContentLoaded事

2022-09-26 19:33:53 1137

原创 HTML+CSS实现动态效果相册

纯HTML+CSS实现的动画效果

2022-09-04 21:24:14 1453

原创 小米商城官网(html+css)

纯html+css,实现了一部分的动画

2022-08-15 08:22:39 1763

原创 拼图小游戏

拼图小游戏,初学java

2022-07-21 19:45:57 819 1

Java拼图小游戏,并且具有音乐播放功能

游戏实现了的验证码的随机生成,计时,音乐播放,难度改变等功能,并且具有登录功能.注意游戏没有和数据库交互.如果需要将Java小游戏打包为exe文件,可以私信我.

2023-12-28

JS作品,todolist清单

使用js实现的todolist清单,具有本地存储,定时,以及增删改功能,内容包含源码

2023-12-28

vue2商城打包后的文件

vue2商城打包后的文件 , 不包含后端代码,因此部分页面无法进入, 需要完整代码可私信

2023-12-28

Jquery作品视频,需要源码可以私信

Jquery作品视频,需要源码可以私信

2023-12-28

空空如也

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

TA关注的人

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