自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最简单的typora+gitee+picgo配置图床

你是否因为管理图片而感到头大?是时候了解一下 Typora、Gitee 和 PicGo 这个超级三剑客了,它们可以帮你轻松打造自己的图床,让你的博客图片管理变得简单又有趣。让我们开始这场神奇的图床之旅吧!

2024-07-22 10:21:33 1111 1

原创 go-zero框架入门

使用 Raft 共识算法**,确保了在分布式环境中的强一致性**。再举个例子:正常项目中配置文件写在代码中,若配置文件修改,项目就该重新启动,但是若使用了etcd,每次去查看对应RPC的配置信息时都是从etcd中实时获取。并且etcd本身为分布式系统设计,提供了原生的服务发现和配置管理功能,支持 Watch 机制,可以。之后打开一个命令行窗口,输入:etcd就可以启动了,然后再打开一个黑窗口(上一个不要关)这就是go-zero使用前的前置工作了,下一步就是去写简单的项目。1.在根目录下创建一个user包。

2024-07-18 15:51:26 672 1

原创 计网ip层重要面经总结

跨域(Cross-Origin)指的是在浏览器中运行的脚本试图访问不同源(即不同的域、协议或端口)的资源时所遇到的安全限制问题。具体来说,浏览器出于安全考虑,限制了来自不同源的页面间的互操作性,防止恶意网站利用用户登录状态等进行跨站攻击。不同的协议:比如从发送请求到。不同的域名:比如从发送请求到。不同的端口:比如从发送请求到。CORS(跨域资源共享)服务器端设置响应头:在服务端的响应中添加头部,指定允许访问的源。表示允许所有源访问。JSONP 是一种通过动态创建

2024-07-12 09:40:43 1090 2

原创 内网、外网通信的底层实现

NAT(Network Address Translation,网络地址转换)是一种网络技术,主要用于解决IPv4地址短缺问题和增强网络安全性(所以nat并不是绝对需要使用的,它是为了解决ipv4短缺提出的方案)。就我总结来说:总结来说:nat设备就是局域网和公网沟通的一个。

2024-07-11 16:30:59 503

原创 ipv4和ipv6的兼容性问题

大家可能在阅读中唯一的疑问就是,当客户端先前往dns64进行目标ipv4转假ipv6的过程中,并未事先通知nat64,为什么nat64能直接从假ipv6中获取到真ipv4呢?整个过程的关键是DNS64和NAT64的协调工作,确保IPv6客户端能够通过伪造的AAAA记录访问仅有IPv4地址的服务器。这样,客户端对目标服务器的访问是透明的,无需知道其实际的IPv4地址。是不是很神奇,这个已经说的很清楚了,如果还是没有看懂,不妨下去再查一查相关的知识。封装后的 IPv4 报文通过 IPv4 网络传输到节点 B。

2024-07-11 15:05:58 1174

原创 elk在宝塔中的简单部署和使用

可以适用于大多数情况,也可根据实际情况可以选择不同的收集工具), 收集多种不同格式的数据,并转换成es可以分辨的格式(如json)存入es中指定的索引中,然后通过kibana就可以查看es中收到的数据。es中的文档:是 Elasticsearch 中存储的基本数据单元,表示一条记录或一项数据,类似于数据库中的一行。elastic中的索引:是一个逻辑命名空间,包含一组相关的文档,类似于传统关系型数据库中的数据库。每个工具都是单独存在的而不会互相影响,在实际使用中,需要将三者分别运行,并打通整个流程。

2024-07-08 14:32:55 949

原创 im的逻辑入门讲解

WebSocket 是一种网络通信协议,提供了一种在单个TCP连接上进行全双工通信的方式。这意味着客户端和服务器可以同时发送和接收数据,而不需要等待对方的响应,这与传统的HTTP请求-响应模式不同。

2024-06-29 16:56:51 764

原创 面经训练No1

存储:Cookie是由客户端浏览器存储的小型文本文件。安全性:默认情况下,Cookie是明文传输的,可以通过设置属性来增强安全性(如HttpOnly、Secure)。生命周期:Cookie可以设置过期时间,过期后自动删除;也可以设置为会话Cookie,关闭浏览器时删除。大小限制:Cookie的大小通常限制在4KB左右。发送机制:每次HTTP请求都会携带Cookie,自动发送给服务器。

2024-06-02 08:07:01 1033

原创 消息队列入门-1

消息队列(Message Queue,MQ)是一种跨进程通信或应用程序通信的机制,用于在分布式系统中传递消息。消息队列系统通常包含一个或多个生产者(producers)和一个或多个消费者(consumers),消息由生产者发送到队列中,并由消费者从队列中读取和处理。消息队列功能其实很容易理解,甚至通过名字就可以猜出他的功能;

2024-05-26 08:24:37 735

原创 消息队列入门讲解

消息队列(Message Queue,MQ)是一种跨进程通信或应用程序通信的机制,用于在分布式系统中传递消息。消息队列系统通常包含一个或多个生产者(producers)和一个或多个消费者(consumers),消息由生产者发送到队列中,并由消费者从队列中读取和处理。消息队列功能其实很容易理解,甚至通过名字就可以猜出他的功能;

2024-05-19 11:37:10 911

原创 简单的IM入门讲解

WebSocket 是一种网络通信协议,提供了一种在单个TCP连接上进行全双工通信的方式。这意味着客户端和服务器可以同时发送和接收数据,而不需要等待对方的响应,这与传统的HTTP请求-响应模式不同。WebSocket 是一种网络通信协议,提供了一种在单个TCP连接上进行全双工通信的方式。这意味着客户端和服务器可以同时发送和接收数据,而不需要等待对方的响应,这与传统的HTTP请求-响应模式不同。

2024-05-19 11:33:36 961

原创 实现用户个人随机salt生成jwt及鉴别用户权限的实现思路

这就出现了一个问题,中间件中每次都是要验证token是否正确和有效,如果salt放到mysql中每次验证都需要查询数据库,对性能影响很大,所以,我们就需要在用户登陆时就将用户个人信息放入redis缓存中设置过期时间,若用户活跃,那么该信息就会一直放在redis中,提升用户进行用户信心相关业务操作时的性能。利用用户名,id,权限等级,salt生成用户token;初始化首先需要在拿到用户手机号后,调用函数升成用户名,用户salt,用户头像,在插入用户信息时,数据库会将用户id一并生成,并生成默认权限。

2024-05-12 08:14:17 459

原创 跑腿业务和支付业务的具体实现流程

,钱会变成已冻结金额(接单人待提现金额=原待提现金额-任务金额&&接单人已冻结金额=原已冻结金额+任务金额),当工单被解决时,(两种情况,若后台判发起人胜,这笔钱会从接收人的已冻结移动到发起人的可提现金额,当后台判接单人胜,这笔钱会直接从接单人的已冻结转到可提现),异常解决时该任务会直接从异常转变为已完成;如果你以为这就结束了,那就太天真了,一个完整的业务逻辑,应该将所有能预料到的情况都包含在内,例如,这些方法中若一些方法的sql语句执行成功,一些失败,应该怎么处理?例如,基础支付的回调通知。

2024-04-24 11:06:50 981

原创 项目开发流程

分发接口责任到人,各开发人员对负责的接口文档持续更新(推荐使用实时更新的markdown工具记录,例如有道云,共同工作,可以实时查看到各开发人员的接口状态,上级负责人应实时监测,不合理时及时调整),接口开发完成后,后端进行项目接口测试,成功后与前端进行联调测试,压力测试等,完全通过后进行项目上线工作。应考虑极端环境下的实现,以及安全性的实现。

2024-04-21 22:27:49 896

原创 宝塔面板部署go项目

即和本地跑项目没太大区别;但是该方法不太适合大型的项目,因为build会占用较大的内存,而服务器内存通常都较小,会有概率失败,而且下载各种环境也是一个弊端,日常项目自然是没有问题的;为了能够更完整的演示docker部署,教程会先演示在本地生成docker镜像并提交到dockerhub,然后在服务器上拉取先前提交的docker镜像生成容器运行;3.事先生成项目的linux版本二进制文件为main,单独将main拉进服务器,并配置启动项,若没有问题可直接运行,直接少了build和下载环境的步骤;

2024-04-20 08:12:36 1788

原创 两阶段提交进阶

如果没有两阶段提交,一旦在提交阶段发生了故障,可能会导致数据的更新操作部分应用到了数据库中,而另一部分未能成功应用。上一节我们讲了,两阶段提交逻辑上的表现,其实较为肤浅,并且偏向理论,可能大家都能看懂,但是如果放入实际的mysql应用中并联系事务和日志进行分析,又会怎么样呢?如果没有两阶段提交,可能会导致已经提交的事务对数据的修改丢失,或者未提交的事务对数据的修改被错误地应用到了数据库中。(在这个过程中,其实redo和undo作用和单体数据库作用是一样的,都是维持单体数据库的持久性和一致性);

2024-04-17 21:33:45 909

原创 使用urfave/cli实现命令行备忘录

于是就写了一个基于github.com/urfave/cli包的简单命令行备忘录demo;功能很简单,代码也并不是很复杂,当作入门来看还是很不错的;当然,学这些工具并不是就是为了去实现一个简单备忘录,在这个学习的过程中能了解到很多新鲜的东西亦能拓宽我们的视野,比如说,知道了黑窗口中各种命令究竟是如何去实现的,为什么go语言适合去制作这种命令行工具,shell脚本如何去实现的,docker,数据库命令,git等等的命令原理,这有助于我们对计算机整体知识和底层的理解;

2024-04-17 16:42:56 1050

原创 第15届蓝桥杯题解

首先每组K个人,那么一共有N/K个组,遍历K从小到大改变,计算每次的期望,期望算法:感染概率为p,那么没感染概率为(1-p),一个组中,所有人都没感染概率Math.pow((1-p),i);这道题很多人纠结于程序如何结束,题目中并没有详细给出,所以好多人做起来很难受,不知道如何下手,其实没结束那就不结束就好了,每次进行查询操作,都把最新的同步输出去就行了,即程序输入并不需要结束运行,而是做到边输入边输出;思路:先分桌子,桌子一个一个分, 先分6人桌:3+3,4+2,2+2+2,3+2, 4,3;

2024-04-17 10:53:46 919 4

原创 分布式事务的具体实现:两阶段提交(2PC)

分布式事务“顾名思义,指的是涉及到多个分布式系统或者多个数据库的事务操作。在分布式系统中,如果一个事务涉及到多个独立的组件或者服务,每个组件或服务可能位于不同的物理节点上,那么这个事务就被称为分布式事务。在分布式系统中实现分布式事务是一个复杂的问题,因为涉及到多个独立的组件或者服务,可能存在网络延迟、通信故障、节点故障等因素。为了保证分布式事务的一致性和可靠性,需要使用合适的事务管理协议和机制,如两阶段提交(2PC)、三阶段提交(3PC)、基于消息的事务、分布式事务管理器等。

2024-04-15 16:39:23 1370

原创 蓝桥杯22年javaB组省赛真题

如果不考虑全部情况,这道题是拿不到满分的,因为中间值可能连续出现很多个,先说基本思路,先对所有初始值排序,并找到中间值是多少,然后从中间值两边遍历,统计出中间值左侧不等于中间值的数多,还是右侧不等于中间值的数多,然后对原数组遍历,根据和中间值的关系使用不同的方案;即,末尾0应该是最小单位2*5组成的,又2很容易很多,只用查询有多少个5就行了,再看题目k范围比较大就不能暴力查找了,用二分查找会好很多,因为整个的阶乘是已经自然排好的;本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

2024-04-07 14:32:46 525 3

原创 23年蓝桥杯javaB组

23年蓝桥杯当时并没有参加,不过打算参加24年的蓝桥杯,于是打算复习下23年的题目,哦,不做不知道,做了几道题后评价一下,真的是老🐷上🏠,;😂发现蓝桥杯的题目都是偏思维,和立扣的题目还是有很大差别的;想要参加蓝桥杯的话,一定要将往年的真题都看一看;话不多说,上题目!

2024-03-30 21:42:38 882

原创 操作系统进程线程相关知识点总结

死锁(Deadlock)是指在多个进程或线程之间,彼此持有对方所需资源而无法继续执行的情况,导致所有参与者都陷入了无法解脱的僵局状态。在死锁中,每个进程都在等待其他进程释放资源,而无法释放自己所持有的资源,从而导致所有进程都无法向前推进。互斥条件(Mutual Exclusion):至少有一个资源必须是被独占的,即一次只能被一个进程使用。这意味着当一个进程持有了某个资源时,其他进程必须等待。请求与保持条件(Hold and Wait)

2024-03-24 10:45:59 887

原创 常见的操作系统进程调度策略

在实际应用中,可以根据系统的特点和需求选择合适的调度算法,甚至可以将抢占式和非抢占式调度算法结合起来,以充分发挥各自的优势。该算法根据进程的等待时间和服务时间来计算响应比,然后选择具有最高响应比的进程优先执行,以确保长时间等待的进程能够及时得到服务。抢占式优先权调度算法是一种按照进程优先级来选择下一个要执行的进程的算法,允许优先级较高的进程抢占正在执行的进程,立即获得CPU资源。短作业优先调度算法能够最大程度地减少平均等待时间,提高系统的吞吐量,但需要预先知道每个进程的执行时间,对实时系统的适用性较差。

2024-03-24 10:20:33 916

原创 加密算法详解

应用:1.由于其确定性,在存储密码时通常将密码和自己设置的字段相加后再生成哈希,防止黑客暴力破解;又由于不可逆行,即使是内部员工也不可能知道用户真实密码是什么,因为密码在传入后台后会直接进行加密再和数据库中数据比较;2.说到哈希不得不再提一下token的生成了,我们都知道token有三部分组成,第一部分是token的加密算法和令牌类型第二部分说明存储的数据,包含确定用户唯一性的信息,权限等。

2024-03-16 21:25:47 763 2

原创 基础数据类型及加密算法讲解

应用:1.由于其确定性,在存储密码时通常将密码和自己设置的字段相加后再生成哈希,防止黑客暴力破解;又由于不可逆行,即使是内部员工也不可能知道用户真实密码是什么,因为密码在传入后台后会直接进行加密再和数据库中数据比较;2.说到哈希不得不再提一下token的生成了,我们都知道token有三部分组成,第一部分是token的加密算法和令牌类型第二部分说明存储的数据,包含确定用户唯一性的信息,权限等。

2024-03-16 20:55:16 738

原创 GO语言接入支付宝

在传输的过程中谁都可以获取到这个信息并对其使用公钥进行解密,所以这不是加密和解密的场景,因为这个过程注定无法保密,这个过程是用于验证发送者的身份的,因为在网络上的信息是可以被获取和篡改的,如果私钥只有一人拥有,使用私钥进行加密,获取到这个加密后的数据之后,拿着公钥进行解密,如果能够解开,说明了发送者的身份就是私钥的拥有者,而这种身份的证明和不可抵赖性则是这个使用中最为重要的关注点,而传输的内容则不是关注的内容。在支付领域,异步通知通常用于处理支付结果的通知,例如支付成功或失败的通知。

2024-03-09 09:58:22 1212

原创 mysql中Select执行全过程

如果 SQL 是查询语句(select 语句),MySQL 就会先去查询缓存( Query Cache )里查找缓存数据,看看之前有没有执行过这一条命令,这个查询缓存是以 key-value 形式保存在内存中的,key 为 SQL 查询语句,value 为 SQL 语句查询的结果。对于mysql连接,需要先经过tcp的三次握手,若密码都没有问题,会验证用户权限,然后保存起来,后续该用户在此连接里的任何操作,都会基于连接开始时读到的权限进行权限逻辑的判断。修改完成后,只有再新建的连接才会使用新的权限设置。

2024-02-26 09:21:41 1161

原创 栈和队列入门,小白看过来!!

栈(Stack)和队列(Queue)是计算机科学中常用的数据结构,它们用于管理和组织数据。

2024-02-25 16:32:26 281

原创 计算机网络:数据链路层

解读这道题,就是原数据是101001,为了给他加上冗余码,先给出一个条件:除数P=1101(有时会说是x的三次方+x的平方+1),看x最大次方是3,所以原数据后+3个0进行除法运算,不同为1,相同为0,,**计算出的余数叫做帧检验序列FCS,**最后算出结果加到原数据的后边,即为发送出去的数据,对方拿到数据后,也用数据除除数,若数据中间没有发生变故,被除数必然是为0.说明数据正确。在接收端,接收到的数据帧会被解析,根据帧头中的控制信息提取出数据,并进行后续的处理和传递。(先讲基础功能,最后再说协议)

2024-02-22 15:23:45 1090

原创 计算机网络:物理层详解

它的工作原理是通过接收来自源设备的信号,重新放大它,并将放大后的信号传输到目标设备,从而弥补信号在传输过程中因为传输距离、信号衰减等原因而产生的损失。要注意的是,分组交换分成很多组,不同的组能走不同的路线前往目的地,并且可能还会用不同的方法传输数据:虚电路方式,数据报方式。随着技术的发展,集线器逐渐被更先进的网络设备如交换机所取代,交换机具有更高的性能和更智能的数据转发能力。需要注意的是,由于集线器是一种物理层设备,它只在数据链路层的物理层进行操作,并且。只用知道:双绞线,同轴电缆,光纤,无线传输介质。

2024-02-22 15:22:21 1289

原创 计算机网络看这里就够了!!!

一些基础概念因特网发展阶段:三个大标题:从单个ARPANET-----逐步建成三级结构的因特网----逐步形成多层次ISP结构(互联网服务提供商(Internet Service Provider)的因特网一些专有名词单位。

2024-02-20 15:20:58 1280

原创 三次握手,四次挥手的大白话版本

首先我们要知道握手和挥手是在做什么,握手是为了让客户端和服务端建立连接,挥手是为了让客户端和服务端断开连接,握手时客户端主动发起请求,挥手双方都能发起请求。

2024-02-20 10:44:04 466

原创 docker的基本使用

Docker是一种用于开发、部署和运行应用程序的开源平台。它基于轻量级容器技术,提供了一种封装应用程序及其所有依赖项的方式,使得应用程序可以在不同的环境中一致地运行。Docker的主要优势包括环境一致性、快速部署、轻量级和资源隔离。它在DevOps、持续集成和微服务架构中得到广泛应用,成为现代应用开发和部署的标准之一。

2024-02-19 15:11:31 714

原创 0成本部署github前端项目流程

但是Vercel由于不可抗力因素,包括官网在内的网站在国内都无法访问,你懂的,用户是无法进入的而且这个生成的网站链接也并不好看所以需要我们自己准备一个域名,新用户可以随便去个国内域名商先领个一年免费的,这个也不会推荐先去b站找视频学习下,然后以阿里云为例:点击域名对应后边的解析点击添加记录我们现在的操作是让我们的域名指向刚刚生成的网站,记录类型选CNAME主机类型随便写,是域名前缀,记录值就写成自己刚刚Vercel生成的网站链接。

2024-02-19 09:21:41 1918

原创 redis在go中的基础命令和示例

为了提高学习效率和增加linux命令的记忆,将命令分为九大类。

2024-02-18 09:47:12 623

原创 linux基础常用命令加示例

为了提高学习效率和增加linux命令的记忆,将命令分为九大类,更方便学习和查漏补缺,在之后复习的时候也能有重点。

2024-02-18 08:50:40 634

原创 redis在go语言中的使用

之前的Set方法中,最后一个参数是0,表示的就是过期时间设置,默认以秒为单位,当为0时,表示永不过期,写10,就是10s后过期,写其他单位的数字就需要加单位,如1*time.Minute就是1分钟;redis使用的是5.0.14的windows版本(正常开发项目redis都是在linux上使用,windows的redis版本很低),但基础功能都有,满足学习要求;左侧会显示key,点击后右侧会显示value的值,使用和查找起来较为方便,能够增加学习效率,当然还有很多功能,这里就不赘述。

2024-02-18 08:12:16 1925

原创 二叉树入门算法题详解

了解后知道其实二叉树就是特殊的链表,只是每个根节点节点都与两个子节点相连而其实图也是特殊的链表,是很多节点互相连接;这样说只是便于理解和定义,在使用中还是要牢记各种数据结构的性质的。

2024-02-17 11:14:00 1621 1

原创 go学习之air库的使用

进入后,有bin,pkg目录,进入bin目录,你能看到air.exe文件。之后你需要去找到库下载的地方,若使用的是go mod可以使用命令。保存后,打开cmd输入air -v检验是否配置成功。配置成功,之后每次保存项目都会自动运行了。这时候将此文件目录设置成path环境变量。

2024-01-28 15:09:53 540

原创 写立扣mysql题目收获

on-把表都连接起来,再用not in查询不在范围内的,即。难点:知道concat,upper,left,right关键字的用法;编写解决方案,修复名字,使得只有第一个字符是大写的,其余都是小写的。这些只是写了30多道题总结的,只后会更新关键字,直到刷完100题~!熟练一眼就能看出答案,但如果不知道if这个关键字就会很麻烦。从中也能发现sql学习是建立在熟练使用关键字的基础上的!也可以用多个where,select一步步查询,即。学习中的易错点和有趣的题目。,反之亦然),仅使用。,且不产生中间临时表。

2024-01-26 17:45:07 698

空空如也

空空如也

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

TA关注的人

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