自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 5分钟精通Excel在go中的使用

包含了最基础的文件创建和写入功能,需要注意的是excel并不是只有文件名,一个excel中是包含了很多张工作表的,所以在创建和之后写入数据时,都要指定插入哪个工作表。这里贴一个中文版的链接(以excelize库为例,相对其他库来说,体验很不错),不过要注意该库是不支持.xls文件的,最好将要处理的文件从.xls复制到.xlsx中再进行处理。总结来说的go操作excel不是很难,易上手,在开发中可以将数据拉取后放到数据库中进行存储,也可以将数据库中数据进行处理后存到excel中。第二张表才是真正生成的数据。

2024-09-25 17:03:36 346

原创 5分钟熟练上手ES的具体使用

类似于关系型数据库中的“表结构”或“schema”,它告诉 Elasticsearch 每个字段是什么类型,应该如何处理和索引这些字段的数据。于是这一篇博客应运而生。的子级,它定义了文档中每个字段的名称和类型。每个字段的类型决定了 Elasticsearch 如何存储、索引和查询该字段的数据。(X的意思是指定HTTP请求的方法)如GET,POST,PUT,DELETE等。类型适合存储并查询复杂的嵌套数组数据,如订单中的商品列表或评论的回复。:类似于关系型数据库中的“行”,是 JSON 格式的数据单位。

2024-09-13 15:04:04 1268

原创 go切片的深入学习以及context库的使用

1.如果期望容量大于当前容量的两倍就会使用期望容量;2.如果当前切片的长度小于 1024 就会将容量翻倍;3.如果当前切片的长度大于 1024 就会每次增加 25% 的容量,直到新容量大于期望容量;

2024-09-07 07:42:12 1231 1

原创 两阶段提交进阶

**commit 阶段**:把 XID 写入到 binlog,然后将 binlog 持久化到磁盘(sync_binlog = 1 的作用),接着调用引擎的提交事务接口,将 redo log 状态设置为 commit,此时该状态并不需要持久化到磁盘,只需要 write 到文件系统的 page cache 中就够了,因为只要 binlog 写磁盘成功,就算 redo log 的状态还是 prepare 也没有关系,一样会被认为事务已经执行成功;称为**撤销日志**称为**重做日志**

2024-08-31 09:06:29 381

原创 “学会吊打面试官系列”8.12~8.24面试难点记录

一共面了三家小公司,以下为个人记录的比较重要的10道题目。

2024-08-24 20:42:23 446

原创 5分钟了解常见的互联网攻击方式,按照原理来分类

SQL注入攻击利用了Web应用程序对用户输入数据的信任,并且没有正确地过滤或转义输入的数据。攻击者利用这一点,向应用程序的输入字段中注入恶意的SQL代码片段,使得应用程序在构造SQL查询语句时误认为这些恶意代码是合法的查询语句的一部分,从而执行了攻击者意图中的数据库操作。如果这段话被显示到用户的个人主页,那么访问这个用户空间的其他用户就会被攻击,进而被黑客拿走Cookie中的关键信息。跨站脚本攻击, 跨站脚本攻击,攻击者通过注入恶意脚本到网页,获取用户信息或控制用户浏览器。以形式来分的话有这些大类;

2024-08-10 20:30:50 756

原创 Go切片深入学习

1.如果期望容量大于当前容量的两倍就会使用期望容量;2.如果当前切片的长度小于 1024 就会将容量翻倍;3.如果当前切片的长度大于 1024 就会每次增加 25% 的容量,直到新容量大于期望容量;

2024-08-03 15:51:23 533

原创 ipv4和ipv6间互相通信的原理

如果目标域名只有IPv4地址,DNS64服务器会查询该域名的A记录,然后将其转换为IPv6地址(通常以特定前缀,例如64:ff9b::/96 开头),并返回给客户端一个伪造的AAAA记录。:NAT64路由器识别出伪造的IPv6地址中的IPv4部分,将该地址转换为真实的IPv4地址,并将IPv6报文转换为IPv4报文。○当 IPv6 客户端向伪造的 IPv6 地址(例如 64:ff9b::c000:0221)发送请求时,NAT64 路由器会识别这个前缀(64:ff9b::/96)。

2024-08-01 20:56:26 1329

原创 go-zero中api和rpc的使用步骤

这个例子没有体现出数据库操作,具体的,当涉及到数据库时,将model层和rpc层与api层并列,让rpc调用到model层的方法,让api层调用rpc层的方法实现。由于我们要在api层调用rpc层的方法,肯定是要先声明userclient才能直接调用到里边的方法。至此,api和rpc的连接已经完成了,然后将api层的逻辑放入到rpc的logic中。具体的逻辑实现,解析token中的id和name,返回给api层的logic。通过调用rpc层的方法返回该方法的响应info,返回info中的参数。

2024-08-01 11:18:47 373

原创 go-zero中api从入门到大师

定义了请求和响应的数据结构。

2024-07-31 09:38:36 649

原创 go-zero框架入门---认识微服务以及环境的安装

微服务是一种软件架构风格,它将一个大型应用程序拆分成多个小型的、独立部署的服务,每个服务实现单一业务功能。每个服务运行在自己的进程中,并通过轻量级的通信机制(通常是HTTP RESTful API)相互协作。

2024-07-31 09:05:04 998

原创 DNS查询服务器的基本流程以及https的加密过程

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

2024-07-30 14:08:15 405

原创 计算机网络必会面经

第一次握手客户端请求建立连接,将首部的SYN标识位置为1,初始化序列号seq=x,发送给服务器,并进入SYN_SENT状态,等待服务器确认。第二次握手服务器接收到SYN后,将首部的SYN和ACK标识位置为1,回复确认ack的值为客户端发送的序列号x+1,同时自己也要初始化一个seq=y,ACK和SYN一起发送客户端,进入SYN_RECV状态。第三次握手。

2024-07-30 14:07:13 1034

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

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

2024-07-22 10:21:33 1293 2

原创 go-zero框架入门

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

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

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

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

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

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

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

2024-07-11 16:30:59 551

原创 ipv4和ipv6的兼容性问题

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

2024-07-11 15:05:58 1890

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

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

2024-07-08 14:32:55 1126

原创 im的逻辑入门讲解

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

2024-06-29 16:56:51 784

原创 面经训练No1

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

2024-06-02 08:07:01 1050

原创 消息队列入门-1

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

2024-05-26 08:24:37 750

原创 消息队列入门讲解

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

2024-05-19 11:37:10 926

原创 简单的IM入门讲解

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

2024-05-19 11:33:36 1048

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

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

2024-05-12 08:14:17 499

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

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

2024-04-24 11:06:50 1001

原创 项目开发流程

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

2024-04-21 22:27:49 910

原创 宝塔面板部署go项目

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

2024-04-20 08:12:36 2436

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

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

2024-04-17 16:42:56 1172

原创 第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 973 4

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

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

2024-04-15 16:39:23 1894

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

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

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

原创 23年蓝桥杯javaB组

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

2024-03-30 21:42:38 917

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

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

2024-03-24 10:45:59 902

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

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

2024-03-24 10:20:33 1186

原创 加密算法详解

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

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

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

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

2024-03-16 20:55:16 749

原创 GO语言接入支付宝

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

2024-03-09 09:58:22 1385

原创 mysql中Select执行全过程

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

2024-02-26 09:21:41 1272

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

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

2024-02-25 16:32:26 303

空空如也

空空如也

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

TA关注的人

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