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

Vuetify-VUE-UI库

vuetify-Material 样式的 Vue UI 组件库。 vuetify提供了相当完善的UI组件、其风格和flutter类似。 vuetify也提供了完善的中文文档、目前来说我觉得他们的文档写得比较用心、组件的所有的属性与状态都是描述得相当清晰。 目前看到在阿里的开源项目有所使用。 github: https://www.baidu.com/link?url=_kB7QNKlpvDXYFaluX6r1Ayabxobyz3v1IdwX2JHhdphje7EujvLLdsy6he4jy-R&wd=&eqid=a6a024e9001759af0000000662985e2c [https://www.baidu.com/link?url=_kB7QNKlpvDXYFaluX6r1Ayabxobyz3v1IdwX2JHhdphje7EujvLLdsy6he4jy-R&wd=&eqid=a6a024e9001759af0000000662985e2c] 后续会在自己的前端项目中尝试使用。
1 min read

Kettle工具使用

最近使用了Kettle这款ETL工具、对于多数据源进行数据之间的同步,迁移,转换,修正等功能进行了解与使用。 kettle-水壶、顾名思义就是把各种数据源中的表数据都当做水流、从多个水流汇总、分流、解析的工具。 无需任何编程、只需要手动拖动配置组件。即可完成复杂的数据处理功能。 数据迁移小例子: kettle 提供了相当多的组件可以应付不同场景的数据转移,导入,导出,值映射等功能。并可以数据导出excel文件。 表输入:从数据库中执行sql从而查询出导入数据。 表输出:从Kettle中运行得到最终结果集向表中输出数据。 字段名称完善:可赛选数据列,设置列别名等。 排序:可以根据数据字段进行排序。 数据合并:把两个不同来源的数据进行合并、类似于mysql join功能。 值映射:很多数据库状态值1,2,3的状态码 在新数据库中可能为 4,5,6 则可以使用值映射进行值替换。 字段修正:修正数据源的字段名称与数据类型。以方便迁移到新数据源中。 新增、更新:对目标数据源执行新增数据操作。如果已有对应id则进行更新操作。 合理使用Kettle
2 min read

随心笔记

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