JavaScript(六)
JavaScript(六)
基于《JavaScript高级程序设计》
AJAX
XMLHttpRequest(XHR)对象:
一般直接构造函数创建对象
1var xhr = new XMLHttpRequest();
XHR用法:
xhr.open("get/post", url, true/false) 第三个值表示是否异步发送请求。但不会真正发送请求,只是启动一个请求备发送,由send()发送。
xhr.send() 接收一个参数为请求主体发送的数据,不调用也必须传一个null
属性有:
responseText : 响应主体文本
responseXML
status : HTTP状态,注意304是表示请求资源未发生过更新,可以直接用浏览器缓存数据
statusText : HTTP状态说明,跨浏览器不可靠
另外为了顺利发送异步请求,还需检测xhr的readyState属性,可取值如下:
一般主要对值是否为4进行判断。
xhr.abort()在接收响应之前取消异步请求。
http头部
xhr的setRequestHead ...
JavaScript(五)
JavaScript(五)
基于《JavaScript高级程序设计》
表单脚本
表单基础知识:<form>元素表示,对应js的HTMLFormElement,继承自HTMLElement。 可以通过id属性,由getElementById(id)获得表单的引用,也可用document.forms获得页面所有的表单元素,再由索引或者name值进行访问。
123var form = document.getElementById("myForm");form.submit(); //提交表单,但不会触发submit事件// form.reset(); //会触发reset事件
表单有elements属性,是表单中所有表单元素的集合。通过name或者索引可以访问。
表单字段共有属性:
disabled \ form(只读的指针) \ name \ readOnly \ tabIndex \ type \ value
还有 focus() \ blur() 两个共有方法。
文本框脚本:<input>设置为 type=tex ...
JavaScript(四)
JavaScript(四)
基于《JavaScript高级程序设计》
事件
事件捕获
目标阶段
事件冒泡
事件处理程序:响应某个事件的函数,均以”on”开头
eg:
12345<form method="POST"> <input type="text" name="username" value=""> <!-- 作用域包含父元素入口 --> <input type="button" value="Echo Username" onclick="alert(username.value)"></form>
像这样创建一个封装着元素属性值的函数,有一个局部变量event事件对象,在函数内部其this值等于事件的目标元素。
i. DOM 0级事件处理程序:
先获取元素的引用,再为其指定事件处理程序
eg:
123456var btn = docum ...
JavaScript(三)
JavaScript(三)
基于《JavaScript高级程序设计》
DOM 文档对象模型
描绘一个层次化的节点数
针对HTML/XML的API
节点层次
i. Node类型:所有节点类型继承自Node类型,由12个数值常量表示
节点关系:
childNodes/parentNode 属性,前者维护一个NodeList类数组对象,firstchild/lastchild。对应还有hasChildNodes()方法
previousSibling/nextSibling
节点操作:
appendChild()
insertBefore(待插入节点, 参照节点) :被插入的节点会被放置在参照节点前面,成为其previousSibling
replaceChild(待插入节点, 被替换节点)
removeChild(要移除的节点)
cloneChild(true/false) : true为深复制,不光是副本还包含其整个子节点树,false为浅复制,只有该节点本身,类似于孤儿。
ii. Document类型 : document对象在浏览器中是H ...
JavaScript(二)
JavaScript(一)
基于《JavaScript高级程序设计》
面向对象 OOP
Object.defineProperty() 修改属性默认的数据特性或者访问器属性,接收三个参数:属性所在的对象,属性名,描述符对象(即数据特性或者get/set)
数据特性有:
Configurable
Enumberable
Writable
Value
访问器属性:只能调用Object.defineProperty()来实现
Configurable
Enumberable
Get: 在读取属性时,会自动调用
Set: 在写入属性时,会自动调用
Object.defineProperties() 对一个对象同时定义多个属性
Object.getOwnPropertyDescriptor() 取得给定属性的描述符
创建对象:
Object构造函数和字面量:
123456789101112131415var person = new Object();// 对象字面量var person = { // 属性 name = "Jam ...
JavaScript(一)
JavaScript(一)
基于《JavaScript高级程序设计》
基础语法与c类似,面向对象跟Java类似(我瞎说的
组成:
核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)
基本语法
typeof(操作符) 检测给定变量的数据类型
eg:
12typeof xxxtypeof(xxx) // 两种格式都可
var声明变量而未加以初始化时,变量的值为 undefined
null 空对象指针 undefined 派生于其中,
1null == undefined // 结果为true
Boolean类型, 通过Boolean()函数可将一些数据类型转化。
1Boolean(NaN) == false
Object类型:是所有实例的基础
12var o = new Object() var o = new Object // 不传参的情况下可省
无符号右移 >>>
相等不相等:先转换操作数再比较 1"55"==55 // true
全等不全等 === / !== :直接比较
奇怪 ...
TCP(一)
TCP(一)
kafka学习(二)
kafka学习(二)
内部工作原理 && 可靠数据传递
内部工作原理
控制器:一个集群中只能有一个,负责分区leader的选举
复制
首领副本
跟随者副本:首领以外的副本
同步的副本:持续请求到的最新消息副本
每一个分区有一个首选首领
处理请求broker在其所监听的端口上运行Acceptor线程,这个线程会创建一个连接,并将它交给Processor线程处理,Processor线程负责从client获取请求消息并放进请求队列交由IO线程处理,然后从响应队列中获取响应消息。
生产请求:生产者发送的请求,客户端要写入broker的消息
获取请求:从broker中读取消息时发送的请求
元数据请求
都需要发送给分区的首领副本,因为首领副本拥有这个分区完整且最新的信息,如果发到一个不包含改首领副本的broker上,会报错
一般客户端只能读取被写入到所有同步副本的消息,防止首领崩溃后,这些消息消失。
数据存储
对broker的分区分配,一个原则是每个分区的副本分配在不同的broker上,或者指定机架信息,则副本应该处于不同的机架的broker上
kafk ...
kafka学习(一)
kafka学习(一)
发布于订阅系统(生产者与消费者模型) 本书基于java语言实现
zookeeper和 kafka 配置安装 (环境:vmware ubuntu 18.04)
发送消息到kafka Broker
创建kafka producer 指明bootstrap servers/keys.deserializer/value.deserializer
send:
发送并忘记
同步发送,返回Future对象,调用get()方法等待,可能会导致延迟比较大或者堵塞
异步发送,指定callBack函数,服务器响应时调用
生产者配置
序列化,依托schema,可指定schema注册表 / 反序列化
分区 根据键生成hash值,或者自定义分区策略
从kafka读取数据消费者群组:包含消费者,一个群组的消费者订阅同一个主题,每个消费者接收主题一部分分区的消息,也可能被闲置
分区再均衡:分区的所有权从一个消费者转移到另一个消费者,比如由于一个消费者崩溃了,则它的工作被该群组中另一个闲置的消费者替代。涉及到向被指派为群组协调器的broker发送心跳来维持其和群组的从属关系 ...
k8s学习(三)
k8s学习(三)
基于《Kubernetes in Action》
源码仓库
Volume
pod的一部分,和pod共享相同的生命周期。即在pod启动的时候创建卷,并在删除pod的时候销毁卷。用于pod内共享数据(hostPath除外
可用的volume类型:
emptyDir : 存储临时数据的简单空目录
hostPath : 将目录从工作节点的文件系统挂载到pod中
gitRepo : 检出Git仓库的内容来初始化
nfs : 挂载到pod中的NFS共享卷
configMap, secret等其它类型
emptyDir:
创建包含共用卷的pod,eg:
1234567891011121314151617181920212223242526apiVersion: v1kind: Podmetadata:name: fortunespec:containers:- image: luksa/fortune name: html-generator volumeMounts: - name: html mountPath: ...