本节主要内容: 首先将介绍模拟点击和表单填写的原理,然后使用脚本实现一个自动化登录论坛的功能 模拟点击 前端开发的同学应该都写过下面类似的代码,主要是监听一个按钮的click事件,用以实现一些功能. //html <button id="btn" onclick="click()">按钮</button> //js btn.onclick=function(){ alert('按钮被点击了') } //jq $('#btn').click(function(){ alert('按钮被点击了'…
本节主要内容: 首先将介绍模拟点击和表单填写的原理,然后使用脚本实现一个自动化登录论坛的功能 模拟点击 前端开发的同学应该都写过下面类似的代码,主要是监听一个按钮的click事件,用以实现一些功能. //html <button id="btn" onclick="click()">按钮</button> //js btn.onclick=function(){ alert('按钮被点击了') } //jq $('#btn').click(function(){ alert('按钮被点击了'…
打算写一些关于油猴脚本开发的资料,希望大家都能够写出属于自己的脚本! 暂时没有详细的规划,可能突然出现灵感就下笔了.大体预计是从易到难的更新.后期可能会进行整理.未经允许,禁止转载! 扩展主要使用:Tampermonkey,当然如果你使用其他的也没有关系,只要你熟悉它.后面都用油猴代称.本系列指南中,脚本也都指基于油猴使用的脚本. 本节主要内容: 描述脚本的作用和油猴,脚本的基本结构,创建一个脚本,使它能够在我们的论坛首页弹出'HelloWorld'的对话框 首先我对你的期望: 1.了解JavaScript和一些D…
git和github git和github其实并不是同一样东西 git git是由Linus Torvalds(没错,就是写linux内核的那个大佬)开发的一个分布式版本管理系统,主要用于代码的版本控制. 最简单的功能比如:你可以查看你之前的代码提交,与现在的代码进行比较,查看修改了什么内容,如果这个版本出现了bug,你也可以找到写这个bug的罪魁祸首. 还有相同功能的软件:svn. 工具的下载地址:https://git-scm.com/download/win linux平台可以使用相关包管理工具安装,例如Ub…
GO Slice(切片) 感觉切片只要知道底层是引用的一个数组对象,就挺好理解了.这里写下一些笔记,方便记忆和以后再来查找. 切片和数组 切片由三个部分组成:指针(指向底层数组),长度(当前切片使用的长度),容量(切片能包含多少个成员) 然后还有一句和数组相关的:当调用一个函数的时候,函数的每个调用参数将会被赋值给函数内部的参数变量,所以函数参数变量接收的是一个复制的副本,并不是原始调用的变量。(所以数组作为参数,是低效的,还需要进行一次数组的拷贝,可以使用数组指针) 然后如果我们想要传递给一个函数一个数组,函数需…
minikube在Windows下安装需要Hyper-V或者VirtualBox,我这里之前已经装了docker for desktop,所以只能用Hyper-V的方式了,这两种会冲突 minikube是一个可以在本地使用Kubernetes的工具(mini?) 之前我使用过docker for desktop:https://github.com/CodFrm/learnMicroService/blob/master/doc/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%…
来了解一下分布式事务,事务简单来说就是:"要么什么都不做,要么做全套" 本地事务 平常我们的事务都是在同一个数据库中执行. 举个栗子:当你发帖的时候,需要发表帖子存入数据库,然后再给这个发帖的用户增加积分.如果帖子存入数据库失败,那么就不再往下执行;但是你增加积分失败了,然而你的帖子已经发布出去了,总不可能再去删除刚刚发的那条帖子吧.如果你使用了事务的话,那么可以在一项失败的时候,回滚事务,一切就像没有发生一样. ACID模型 说到事务就不得不说A(原子性)C(一致性)I(隔离性)D(持久性),来贴一下百科说明. …
微服务架构中,每个微服务所拥有的数据对当前微服务来说是私有的,只能通过其提供的 API 进行访问.我们需要实现业务的事务在多个服务之间保持一致性,还有就是不同服务中数据的数据聚合. 最终我选择了尝试领域驱动设计和CQRS,可以从git看到我对本节有不少改变=_=,尝试一下,希望不要误人子弟,对于理论的知识我也不会在本文中写太多,我会贴我觉得不错的一些文章. 方案 这一节将来探究不同的微服务之间,不同服务中数据的数据聚合.我将列出几种方法. 字段冗余 这一种方法是在查询的表中增加一些字段存储另外一些表的数据,这种方法…
原本打算是用k8s的,但是这么一弄感觉越来越往运维方向走了.现在的网关和服务中心已经够用了.所以只写了一部分,作为附录,如果以后有时间会继续填坑. 这一节的话,主要是数据库拆分和我们之前分开的两个微服务(权限和发帖)接上数据库(主要是代码). 未拆分前 未拆分前,我们的架构大概是这样的,所有的微服务从同一个数据库中请求,这样的好处是简单,但是微服务之间的关系又觉得没有区分开来,微服务架构的一个非常明显的功能就是一个服务所拥有的数据只能通过这个服务的API来访问. 拆分后 拆分后大概是上图这样,一个微服务对应一个数据…
容器的好处就不多说了,一次构建到处运行.对于微服务来说,需要将各个微服务部署到多个主机上,而且所需要的环境还不一定相同,甚至冲突,那么容器就很好的解决了这个问题,容器所占用的资源比虚拟机小多了.而且容器部署起来很是方便.然后go和docker也是很配的一对,go编译之后可以直接的放入容器中运行,而不需要依赖环境. 这一节的话我们还需要在代码里面种加入服务发现和注册的功能,以便在容器中能够动态扩容. 服务注册 先获取开发包 go get -u github.com/hashicorp/consul # 其实好像不要-…
本系列在github中更新,源码和docker都可在github项目中找到:https://github.com/CodFrm/learnMicroService GitHub文章:点我去GitHub看 上一节完成了api网关,这一节来了解微服务架构中的服务发现 我们现在的微服务rpc调用我们是直接的填入的ip和端口,客户端连接服务端.但是当我们的微服务多起来,而且是集群部署那么问题就出来了,我们不可能每一个都填好ip和端口,这样是不方便动态扩容和部署的,而且当我们调用的时候也无法做到很好的负载均衡.关于这个有两种…