草庐IT

浅谈PHP设计模式的备忘录模式

简介:备忘录模式,属于行为型的设计模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。备忘录模式顾名思义,就是存档功能,类似Git工具,每次提交都相当于一次备份。主要有一下角色构成Memento——负责存储Originator的唯一内部状态,它可以包含:string,number,array,类的实例等等。Memento「不是公开的类」(任何人都不应该且不能更改它),并防止Originator以外的对象访问它,它提供2个接口:Caretaker只能看到备忘录的窄接口,他只能将备忘录传递给其他对象。Originator却可

react组件实例属性state

state有状态state的组件称作复杂组件,没有状态的组件称为简单组件状态里存储数据,数据的改变驱动页面的展示//创建组件classWeatherextendsReact.Component{//构造器调用1次constructor(props){super(props);//必须接收对象this.state={isHot:true};//左边为实例对象,实例对象原本没有changeWeather//顺着原型对象查找到changeWeather,再由bind修改绑定的this//最后左侧多出了个函数,并赋值为changeWeatherthis.changeWeather=this.chang

react组件实例属性state

state有状态state的组件称作复杂组件,没有状态的组件称为简单组件状态里存储数据,数据的改变驱动页面的展示//创建组件classWeatherextendsReact.Component{//构造器调用1次constructor(props){super(props);//必须接收对象this.state={isHot:true};//左边为实例对象,实例对象原本没有changeWeather//顺着原型对象查找到changeWeather,再由bind修改绑定的this//最后左侧多出了个函数,并赋值为changeWeatherthis.changeWeather=this.chang

GO实现Redis:GO实现Redis协议解析器(2)

本文实现Redis的协议层,协议层负责解析指令,然后将指令交给核心database执行echodatabase用来测试协议层的代码https://github.com/csgopher/go-redisRESP协议RESP是客户端与服务端通信的协议,格式有五种:正常回复:以“+”开头,以“\r\n”结尾的字符串形式错误回复:以“-”开头,以“\r\n”结尾的字符串形式整数:以“:”开头,以“\r\n”结尾的字符串形式多行字符串:以“$”开头,后跟实际发送字节数,再以“\r\n”开头和结尾$3\r\nabc\r\n数组:以“*”开头,后跟成员个数SETkeyvalue*3\r\n$3\r\nSE

11-verilog-有限状态机

有限状态机写RTL的时候,实现一个功能的时候有很多种方法将系统划分为多个状态,状态之间有状态的转移,第一步,第二步,,,,形成有限状态机流水线技术设计,从输入到输出有多个步骤有限状态机,状态是有限的,比如8个状态,16个状态等,在进行设计的时候,状态机的状态不要太多,状态超过10个,就会造成设计复杂度和验证复杂度都变高.有限状态机分类MooreFSM输出只与当前的状态有关,与输入没有关系MealyFSM输出不仅与当前的状态有关,还与输入有关MooreFSM-设计自动售货机分析输入输出信号自动售货机,输入的就是硬币,输出的是饮料和找零(确定输入,输出)假设饮料只有一种价格2.5元,输入的零钱只有

GO实现Redis:GO实现Redis协议解析器(2)

本文实现Redis的协议层,协议层负责解析指令,然后将指令交给核心database执行echodatabase用来测试协议层的代码https://github.com/csgopher/go-redisRESP协议RESP是客户端与服务端通信的协议,格式有五种:正常回复:以“+”开头,以“\r\n”结尾的字符串形式错误回复:以“-”开头,以“\r\n”结尾的字符串形式整数:以“:”开头,以“\r\n”结尾的字符串形式多行字符串:以“$”开头,后跟实际发送字节数,再以“\r\n”开头和结尾$3\r\nabc\r\n数组:以“*”开头,后跟成员个数SETkeyvalue*3\r\n$3\r\nSE

11-verilog-有限状态机

有限状态机写RTL的时候,实现一个功能的时候有很多种方法将系统划分为多个状态,状态之间有状态的转移,第一步,第二步,,,,形成有限状态机流水线技术设计,从输入到输出有多个步骤有限状态机,状态是有限的,比如8个状态,16个状态等,在进行设计的时候,状态机的状态不要太多,状态超过10个,就会造成设计复杂度和验证复杂度都变高.有限状态机分类MooreFSM输出只与当前的状态有关,与输入没有关系MealyFSM输出不仅与当前的状态有关,还与输入有关MooreFSM-设计自动售货机分析输入输出信号自动售货机,输入的就是硬币,输出的是饮料和找零(确定输入,输出)假设饮料只有一种价格2.5元,输入的零钱只有

kube-state-metrics 在大规模集群下的优化

当我们使用Prometheus来监控Kubernetes集群的时候,kube-state-metrics(KSM) 基本属于一个必备组件,它通过WatchAPIServer来生成资源对象的状态指标,它并不会关注单个Kubernetes组件的健康状况,而是关注各种资源对象的健康状态,比如Deployment、Node、Pod、Ingress、Job、Service等等,每种资源对象中包含了需要指标,我们可以在官方文档https://github.com/kubernetes/kube-state-metrics/tree/main/docs处进行查看。要安装KSM也非常简单,代码仓库中就包含了对

kube-state-metrics 在大规模集群下的优化

当我们使用Prometheus来监控Kubernetes集群的时候,kube-state-metrics(KSM) 基本属于一个必备组件,它通过WatchAPIServer来生成资源对象的状态指标,它并不会关注单个Kubernetes组件的健康状况,而是关注各种资源对象的健康状态,比如Deployment、Node、Pod、Ingress、Job、Service等等,每种资源对象中包含了需要指标,我们可以在官方文档https://github.com/kubernetes/kube-state-metrics/tree/main/docs处进行查看。要安装KSM也非常简单,代码仓库中就包含了对

被迫开始学习Typescript —— class (有彩蛋哦)

TS的class看起来和ES6的Class有点像,基本上差别不大,除了可以继承(实现)接口、私有成员、只读等之外。参考:https://typescript.bootcss.com/classes.html基本用法我们可以定义一个class,设置几个属性,然后设置一个方法,封装Object.assign简化reactive的赋值操作。创建自己的对象基类importtype{InjectionKey}from'vue'classBaseObject{$id:string|symbol|InjectionKeyname:stringage:numberconstructor(id:string,n