CAP定理
### CAP定理 1998年,加州大学的计算机科学家Eric Brewer提出,分布式系统有三个指标: - Consistency(一致性) - Availability(可用性) - Partition toerance(分区容错性)  Eric Brewer说,分布式系统无法同时满足这三个指标。这个结论就叫做CAP定理 ### CAP定理-Partition tolerance Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致  Availability (可用性):用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝 对应的PHP代码可能是这样: ``` function ccvita_string($str){ $result = '<a href="'.$str.'">Link</a>'; return $result; } ``` 第一步,生成代码 PHP为了扩展开发的方便,提供了一个类似代码生成器的工具ext\_skel,具体可以参见说明。 首先我们创建一个文件ccvita.skel,它的内容为 ``` string ccvita_string(string str) ``` 就是告诉ext\_skel这个东西,我们要做的扩展里面有个函数叫ccvita\_string。然后执行 ``` cd MooENV/src/php-5.3.8/ext/ ./ext_skel --extname=ccvita --proto=ccvita.skel cd ccvita/ ``` 这时候,ccvita这个扩展的代码框架就已
node理论学习
1\. 启动一个Node Server,通过这个Server访问一个php文件,怎么输出运行解析php后的结果? 2\. 怎么在Node里实现一个类似php里的sleep()函数? ``` function sleep(milliSeconds) { var startTime = new Date().getTime(); while (new Date().getTime() < startTime + milliSeconds); }; sleep(10000); ``` 3\. Node 自诩异步编程是它的优势,为什么在引用外部包的时候(require()函数)是同步方法,而非异步方法 4\. Node 里有readFile和对应的同步方法readFileSync,但http.get() 却没有 http.getSync(),如果要实现一个http.getSync(),怎么做?
nodejs相关原理
什么是错误优先的回调函数? 如何避免回调地狱? 如何用Node来监听80端口? 什么是事件循环? 哪些工具可以用来保证一致的编程风格? 运算错误与程序员错误的区别? 使用NPM有哪些好处? 什么是stub?举个使用场景? 什么是测试金字塔?对于HTTP API,如何利用测试金字塔? 你最喜欢的HTTP框架,并说明原因? 现在,我们依次来解答这些问题吧。 什么是错误优先的回调函数? 错误优先的回调函数用于传递错误和数据。第一个参数始终应该是一个错误对象, 用于检查程序是否发生了错误。其余的参数用于传递数据。例如: ``` fs.readFile(filePath, function(err, data) { if (err) { //handle the error } // use the data object}); ``` 解析:这个题目的主要作用在于检查被面试者对于Node中异步操作的一些基本知识的掌握。 ### 如何避免回调地狱 你可以有如下几个方法: * 模块化:将回调函数分割为独立的函数 * 使用Promises * 使用yiel
javascript面向对象
### 面向对象的三大特性 * 封装 * 继承 自己没有的,拿别人过来用,就是继承 * 多态 父类引用指向子类的对象(JavaScript中用不到) ### 创建对象的四种方式 * 使用字面量创建对象 ``` var o = {key:value, key:value...} ``` * 用一个创建一个,不能复用,造成代码冗余,资源浪费 * 使用内置构造函数创建对象 ``` var o = new Object(); var o = new Array(); ``` * 创建出来的对象都是空的对象,要手动的去为对象添加属性。造成代码重复 * 封装简单的工厂函数(不推荐使用) ``` function createObj(){ var obj = {}; obj.xx=xxx; return obj; } ``` * 自定义构造函数 ``` function 构造函数名{ this.xxx=xxx; //.... } ``` * 0.构造函数名首字母要大写 1.构造函数一般和new关键字一起使用 2.构造
JavaScript基础知识
## JavaScript的基本组成 * ECMAScript 语法规范 * DOM 操作dom元素的api * BOM 操作浏览器对象的api ### JavaScript数据类型 #### 简单数据类型 * string * number * boolean * undefined #### 复杂数据类型 * Object * Array * Date * RegExp * Function * String * Number * Boolean * null * Math ### 部分关键字的使用 * in * typeof 判断对象的类型 返回值是string类型的 引用类型中,除了function其他的对象都是object类型 * delete * break continue * \=== 和 == * \=== 要判断数据类型和值是否相等 * \== 值判断值是否相等 * || 和 && * 表达式1 || 表达式2 如果 表达式1 就 返回 表达式1 否则 返回 表达式2 * 表达式1 && 表达式2 如果
vue生命周期的学习
**1、什么是vue生命周期?** 答: Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。 ##### **2、vue生命周期的作用是什么?** 答:它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。 ##### **3、vue生命周期总共有几个阶段?** 答:它可以总共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/销毁后 ##### **4、第一次页面加载会触发哪几个钩子?** 答:第一次页面加载时会触发**beforeCreate,**created,**beforeMount,**mounted 这几个钩子 **5、DOM渲染在 哪个周期中就已经完成?**答:DOM 渲染在mounted中就已经完成了。 ##### **6、简单描述每个周期具体适合哪些场景?** 答:生命周期钩子的一些使用方法: beforecreate : 可以在这加个**loading**事件,在加载实例时触发 created :
axios的相关笔记
**1、axios的特点有哪些?** 答: 一、Axios 是一个基于**promise**的 HTTP 库,支持**promise**所有的API 二、它可以拦截请求和响应 三、它可以转换请求数据和响应数据,并对响应回来的内容自动转换成 JSON类型的数据 四、安全性更高,客户端支持防御 XSRF ##### **2、axios有哪些常用方法?** 答: 一、axios.get(url\[,config\])//get请求用于列表和信息查询 二、axios.**delete**(url\[,config\])//删除 三、axios.post(url\[, data\[,config\]\])//post请求用于信息的添加 四、axios.put(url\[, data\[,config\]\])//更新操作 ##### **3、说下你了解的axios相关配置属性?** 答: \`url\`是用于请求的服务器URL \`method\`是创建请求时使用的方法,默认是get \`baseURL\`将自动加在\`url\`前面,除非\`url\`是一个绝对
Vuex的学习
**1、vuex有哪几种属性?** 答:有五种,分别是 State、 Getter、Mutation 、**Action**、**Module** ##### **2、vuex的State特性是?** 答: 一、Vuex就是一个仓库,仓库里面放了很多对象。其中**state**就是数据源存放地,对应于与一般Vue对象里面的data 二、**state**里面存放的数据是响应式的,Vue组件从store中读取数据,若是store中的数据发生改变,依赖这个数据的组件也会发生更新 三、它通过mapState把全局的**state**和 getters 映射到当前组件的 computed 计算属性中 ##### **3、vuex的Getter特性是?** 答: 一、getters 可以对State进行计算操作,它就是Store的计算属性 二、 虽然在组件内也可以做计算属性,但是getters 可以在多组件之间复用 三、 如果一个状态只在一个组件内使用,是可以不用getters ##### **4、vuex的Mutation特性是?** 答: 一、Action 类似于
vue相关原理学习(二)
#### **一、请说下具体使用vue的理解?** 答:1、使用vue不必担心布局更改和类名重复导致的js重写,因为它是靠数据驱动双向绑定,底层是通过Object.defineProperty()定义的数据set、get函数原理实现。2、组件化开发,让项目的可拓展性、移植性更好,代码重用性更高,就好像农民工建房子,拿起自己的工具包就可以开工。项目经理坐等收楼就好。3、单页应用的体验零距离接触安卓原生应用,局部组件更新界面,让用户体验更快速省时。4、js的代码无形的规范,团队合作开发代码可阅读性更高。 #### **二、你觉得哪些项目适合vue框架?** 答:1、数据信息量比较多的,反之类似企业网站就无需此框架了。2、手机web和app应用多端共用一套界面的项目,因为使用vue.cli+webpack后的前端目录,非常有利于项目的跨平台部署。 #### **三、怎么理解MVVM模式的这些框架?** 答:1、M就是Model模型层,存的一个数据对象。2、V就是View视图层,所有的html节点在这一层。3、VM就是ViewModel,它通过data属性连接Model模型层,通过e
vue相关原理学习(一)
#### **1、active-class是哪个组件的属性?嵌套路由怎么定义?** 答:vue-router模块的router-**link**组件。 #### **2、怎么定义vue-router的动态路由?怎么获取传过来的动态参数?** 答:在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id #### **3、vue-router有哪几种导航钩子?** 答:三种,一种是全局导航钩子:router.beforeEach(**to**,**from**,**next**), 作用:跳转前进行判断拦截。第二种:组件内的钩子;第三种:单独路由独享组件 #### **4、scss是什么?安装使用的步骤是?有哪几大特性?** 答:预处理css,把css当前函数编写,定义变量,嵌套。 先装css-loader、**node** **\-loader**、sass-loader等加载器模块, 在webpack-base.config.js配置文件中加多一个拓展:extenstion, 再加多一个模块:modul
react学习笔记一
React来自Facebook,2013年诞生 和Angular不同,react并不是一个完整的MVC/MVVM框架,它只专注于提供清晰、直接的view视图层解决方案。它的功能全部以构建组件视图为核心,并提供类似控制器的函数接口和生命周期函数。在React中没有控制器、没有服务、没有过滤器等等。 React非常轻,目标是minimal API interface,只提供组件化相关的非常少量的API。简化了一切可以简化的东西。比如说Angular中做一个组件,实际上叫做E级的指令,要写scope、link函数,但是react最大限度的简化了一个组件的开发,事实上react就是为了组件开发而诞生的。 React可以搭配flux等架构(Redux实现)。有flux架构护航,数据的单向流动,自称是比MVC、MVVM更高级的一种模式。可以开发大型应用。 React使用virtual DOM技术,使得它性能卓越,开销很小。  Virtual DOM是