防重复提交

使用Token令牌机制可以有效地防止CSRF攻击和重复提交。在提交表单时,服务器会生成一个Token令牌,并将其存储在Redis中。然后,将这个Token令牌作为表单的一个隐藏字段或URL参数传递给客户端。客户端提交表单时,将这个Token令牌一并提交给服务器。服务器在处理表单时,会检查这个Token令牌是否正确,并在处理完表单后删除这个Token令牌。这种方式可以有效地防止重复提交和CSRF攻击,但是需要注意保护Token令牌的安全性,否则可能会被攻击者利用。 Token令牌机制是一种常用的Web应用程序防止重复提交和CSRF攻击的方法。它的基本思想是在每次提交表单时,服务器会生成一个Token令牌,并将其存储在Redis中。然后,将这个Token令牌作为表单的一个隐藏字段或URL参数传递给客户端。客户端提交表单时,将这个Token令牌一并提交给服务器。服务器在处理表单时,会检查这个Token令牌是否正确,并在处理完表单后删除这个Token令牌。 Token令牌机制的实现步骤如下: 在服务器端生成一个Token令牌,并将其存储在Redis中。Token令牌可以使用随机数、UUI
3 min read

数据结构:栈

栈(Stack)是一种先进后出(LIFO)的数据结构,它只允许在栈顶进行插入和删除操作。栈可以用数组或链表来实现。 在栈中,插入和删除操作通常称为入栈(push)和出栈(pop)。当插入一个元素时,它被放置在栈顶,当删除一个元素时,它是从栈顶删除的。栈顶是栈中最新添加的元素,栈底是栈中最早添加的元素。 栈的应用非常广泛,例如,计算机中的函数调用和递归调用都是通过栈来实现的。当一个函数被调用时,它的参数、返回地址和局部变量等信息被压入栈中,当函数返回时,这些信息又从栈中弹出。 以下是栈的基本操作: push(element):将一个元素压入栈顶。 pop():从栈顶弹出一个元素。 top():返回栈顶元素,但不对栈进行修改。 isEmpty():判断栈是否为空。 size():返回栈中元素的个数。 栈的时间复杂度为O(1),因为所有操作都是在栈顶进行的。但是,栈的空间复杂度为O(n),因为需要存储所有元素。 在计算机中,栈(Stack)被广泛应用于函数调用、
2 min read

HTTP 协议发展史

HTTP 是浏览器与服务端之间最主要的通信协议,HTTP 是应用层协议(7层),应用层产生的数据会通过传输层协议作为载体来传输到互联网上的其他主机中,而其中的载体就是 TCP 协议(3.0使用UDP),基于 TCP 协议进行连接,然后传输对应内容信息。 20 世纪 60 年代,美国国防部高等研究计划署(ARPA)建立了 ARPA 网,这被认为是互联网的起源。70 年代,研究人员基于对 ARPA 网的实践和思考,发明出了著名的 TCP/IP 协议。该协议具有良好的分层结构和稳定的性能,并在 80 年代中期进入了 UNIX 系统内核,促使更多的计算机接入了网络。 1989 年,蒂姆伯纳斯-李博士发表了一篇论文,提出了在互联网上构建超链接文档系统的构想。在篇文章中他确立了三项关键技术:URI、HTML、HTTP。 基于这三项技术,
14 min read

Fiddler 安装并抓取HTTPS请求

众所周知 Fiddler 是一个非常实用的抓包工具(主要是对于Http请求)而且有很多的扩展功能可以去官网下载,我们在开发中,难免需要抓包工具来查看接口数据 或者 测试接口的安全性, 如未签名而进行值的修改,下面将介绍它的安装以及配置 证书 来抓取Https加密信息。 Fiddler 官方网址: Fiddler | Web Debugging Proxy and Troubleshooting SolutionsExplore the Fiddler family of web debugging proxy tools and troubleshooting solutions. Easily debug, mock, capture, and modify web and network traffic.Telerik.com [https://www.telerik.com/fiddler]
3 min read

IDEA 常用插件以及开发工具

1、静态代码质量管理工具部署平台 Code Quality and Code Security | SonarQube [https://www.sonarqube.org/] 2、代码质量检查插件 FindBugs 可以直接以插件安装在IDEA IDE中 FindBugs™ - Find Bugs in Java Programs (sourceforge.net) [https://findbugs.sourceforge.net/] 3、翻译插件(英语不好者必备) Translation 可以在代码开发试图中直接翻译 4、代码编码格式约束插件 CheckStyle-IDEA 通过检查对代码编码格式,命名约定,Javadoc,类设计等方面进行代码规范和风格的检查,从而有效约束开发人员更好地遵循代码编写规范 5、Java Meven 包冲突检测工具 Maven Helper 可以检测整个项目pom.
2 min read

7层网络协议

1、物理层: 解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。 它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。 2、数据链路层: 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。 3、网络层: 计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。 该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。 4、传输层:
3 min read

K3S 集群搭建

最近学习了K8S集群的部署,期间使用了很多的部署方式,例如官方给出的 kubeadm [https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/] 工具,青云的KK工具一键部署,也有github上开源免费或收费的一键部署工具,都尝试过,但最后选择了K3S-up [https://github.com/alexellis/k3sup] 来进行集群的部署。 相对于K8S来说,K3S系统容器数量少,轻量级,并且默认使用 containerd 作为容器运行时,内部的 ingress 使用的是 go 语言开发的 traefik,集成了SQLite 代替 Etcd,但在多个master节点中最好使用 Etcd 组件,来保证数据一致性,从而可以HA。 本次搭建选用阿里云6台共享性服务器。 3台master(2核4g) 3台worker(2核4g) 并搭建
3 min read

Jenkins自动化发布

记录一下最近配置Jenkins的部分步骤: 整体流程:使用 docker 部署Jenkins 进行线上发布并打包docker镜像上传至私有docker镜像仓库、并配置 docker login 线上推送/拉取镜像发布运行。 安装docker 拉取 Jenkins 镜像就不再描述,有很多帖子。 1、配置并安装maven、jdk、git、nodeJs等基本组件 2、安装对应各种支持插件、如gitlab。 nodejs 插件前端发布使用 连接远程服务端并执行命令插件 3、创建任务、并配置任务各个环节执行命令与使用组件 3.1、拉取git库代码 3.2、替换源码中的环境值、如dev环境替换为pro nacos 连接地址与命令空间等 我使用的是最简单的sed -i 命令,该命令可以匹配正则表达式从而替换文本字符串。 3.3、进行maven打包 4、打包完成之后使用shell命令把target包下的jar包cp到对应docker-compose文件下,此处需要提前写好docker-compose文件与对应服务的docker-file文件。 5、
2 min read

Java 逻辑引擎的构思

在工作中多年之后,深知设计模式的重要性,设计模式的合理使用可以让我们复杂的业务逻辑实现得更加的灵活,更好的支持多态性,易扩展,易维护等好处。 那么可不可以设计一款专门为后端java开发人员量身定制一款本身就具备了设计模式的UI逻辑引擎。开发人员只需要进行逻辑组件的组合,然后再双击组件书写SQL或JAVA代码,把组件的成员变量进行传递,并最终入库。 原理类似于目前的kettle工具。 如果有这样的逻辑引擎我们java开发势必能够大幅度减少工作量。 其中的灵感来至于我在工作中使用的,工厂模式,代理模式,策略模式,装饰模式与SPI构思思想组合而成的。 通过UI组件生成的配置文件,告诉代理策略类,调用其中对应组件逻辑单元.class文件。在系统启动时加载所有的逻辑策略,确保spring bean都可以正常加载入内存。 后续执行全部通过代理策略类进行逻辑处理。组装每一个单独的bean,从而完成一个复杂的业务逻辑。 这样的的实现也符合单一职责原则与开闭原则。 可能在目前市场上对应的项目就是低代码平台或者零代码平台了吧。
2 min read

随心笔记

hi 欢迎留言,共同探讨IT技术~