解析函数

[深入理解Android卷一全文-第三章]深入理解init

若如初见. 提交于 2019-11-29 20:44:10
由于《深入理解Android 卷一》和《深入理解Android卷二》不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在OSC博客中全文转发这两本书的全部内容。 第3章 深入理解init 本章主要内容 · 深入分析init。 本章涉及的源代码文件名及位置 下面是本章分析的源码文件名及其位置。 · init.c system/core/init/init.c · parser.c system/core/init/parser.c · builtins.c system/core/init/builtins.c · keywords.h system/core/init/keywords/h · init.rc system/core/rootdir/init.rc · properties_service.c system/core/init/properties_service.c · libc_init_dynamic.c bionic/libc/bionic/libc_init_common.c · libc_init_common.c bionic/libc/bionic/libc_init_common.c · properties.c system/core/libcutils/properties.c 3.1 概述 init是一个进程,确切地说

vue的双向绑定原理及实现

╄→гoц情女王★ 提交于 2019-11-29 17:40:55
前言 使用vue也好有一段时间了,虽然对其双向绑定原理也有了解个大概,但也没好好探究下其原理实现,所以这次特意花了几晚时间查阅资料和阅读相关源码,自己也实现一个简单版vue的双向绑定版本,先上个成果图来吸引各位: 代码: 效果图: 是不是看起来跟vue的使用方式差不多?接下来就来从原理到实现,从简到难一步一步来实现这个SelfVue。由于本文只是为了学习和分享,所以只是简单实现下原理,并没有考虑太多情况和设计,如果大家有什么建议,欢迎提出来。 本文主要介绍两大内容: 1. vue数据双向绑定的原理。 2. 实现简单版vue的过程,主要实现{{}}、v-model和事件指令的功能。 相关代码地址: https://github.com/canfoo/self-vue vue数据双向绑定原理 vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,那么vue是如果进行数据劫持的,我们可以先来看一下通过控制台输出一个定义在vue初始化数据上的对象是个什么东西。 代码: var vm = new Vue({ data: { obj: { a: 1 } }, created: function () { console.log(this.obj); } }); 结果: 我们可以看到属性a有两个相对应的get和set方法,为什么会多出这两个方法呢?因为vue是通过Object

vue的双向绑定原理及实现

断了今生、忘了曾经 提交于 2019-11-29 17:40:45
前言 使用vue也好有一段时间了,虽然对其双向绑定原理也有了解个大概,但也没好好探究下其原理实现,所以这次特意花了几晚时间查阅资料和阅读相关源码,自己也实现一个简单版vue的双向绑定版本,先上个成果图来吸引各位: 代码: 效果图: 是不是看起来跟vue的使用方式差不多?接下来就来从原理到实现,从简到难一步一步来实现这个SelfVue。由于本文只是为了学习和分享,所以只是简单实现下原理,并没有考虑太多情况和设计,如果大家有什么建议,欢迎提出来。 本文主要介绍两大内容: 1. vue数据双向绑定的原理。 2. 实现简单版vue的过程,主要实现{{}}、v-model和事件指令的功能。 相关代码地址: https://github.com/canfoo/self-vue vue数据双向绑定原理 vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,我们可以先来看一下通过控制台输出一个定义在vue初始化数据上的对象是个什么东西。 代码: var vm = new Vue({ data: { obj: { a: 1 } }, created: function () { console.log(this.obj); } }); 结果: 我们可以看到属性a有两个相对应的get和set方法,为什么会多出这两个方法呢?因为vue是通过Object.defineProperty(

探讨vue的双向绑定原理及实现

时光怂恿深爱的人放手 提交于 2019-11-29 17:40:02
1.vue的实现原理 vue的双向绑定是由数据劫持结合发布者-订阅者模式实现的,那么什么是数据劫持?vue是如何进行数据劫持的?说白了就是通过Object.defineProperty()来劫持对象属性的setter和getter操作,在数据变动时做你想要做的事情. var vm = new Vue({ data: { test : { a: 1 } }, created: function () { console.log(this.test); } }); get和set.为什么会有这两个方法呢,这正是vue通过Object.defineProperty()进行数据劫持的. Object.defineProperty()这个方法是做什么的呢?文档上是这样说的 简单的说,他可以控制一个对象属性的一些特有操作,比如读写权,是否可枚举,这里我们主要研究它的get和set方法 我们可以很轻松的打印出一个对象的属性数据: var Book = { name: '人性的弱点' }; console.log(Book.name); // 人性的弱点 //在console.log(book.name)同时,直接给书加一个书号 var Book = {}; var name = ''; Object.defineProperty(Book,'name',{ set:function(value)

2019JS必看面试题

£可爱£侵袭症+ 提交于 2019-11-29 17:33:57
2019JS必看面试题: https://www.jianshu.com/p/f1f39d5b2a2e 1. javascript的typeof返回哪些数据类型. 答案:string,boolean,number,undefined,function,object 2. 例举3种强制类型转换和2种隐式类型转换? 答案:强制(parseInt,parseFloat,number) 隐式(== ===) 3. split() join() 的区别 答案:前者是将字符串切割成数组的形式,后者是将数组转换成字符串 4. 数组方法pop() push() unshift() shift() 答案:push()尾部添加 pop()尾部删除 unshift()头部添加 shift()头部删除 5. IE和标准下有哪些兼容性的写法 答案: var ev = ev || window.event document.documentElement.clientWidth || document.body.clientWidth Var target = ev.srcElement||ev.target 6. ajax请求的时候get 和post方式的区别 答案: 一个在url后面 ,一个放在虚拟载体里面 get有大小限制(只能提交少量参数) 安全问题 应用不同 ,请求数据和提交数据 7.

nodejs模块化解析

好久不见. 提交于 2019-11-29 17:24:04
1.每一个js文件都是一个模块,需要暴露才能让其他js模块引入使用;因为每一个js文件都是一个闭包作用域,避免全局变量污染 2.练习:写函数求和,写函数求平均数 3.模块标识 内建模块(底层的c++),文件模块(自己写的),核心模块(node_modules目录下) 4.exports和require怎么来的? exports和require是函数,我们暴露出的模块,Node都会给我们封装成函数,并且传入了五个参数 我们的exports是函数的一个参数 5.exports,require,module,_filename,_dirname函数的作用 exports 用来将函数内部的局部变量和拒不函数暴露到外部; require 用来引入外部的模块 module 表示当前模块 _filename是本js文件的绝对路径 _dirname是本js文件的路径 来源: https://www.cnblogs.com/mlzdev/p/11524360.html

看代码学习python基础

你离开我真会死。 提交于 2019-11-29 14:47:03
#-- 寻求帮助: dir(obj) # 简单的列出对象obj所包含的方法名称,返回一个字符串列表 help(obj.func) # 查询obj.func的具体介绍和用法 #-- 测试类型的三种方法,推荐第三种 if type(L) == type([]): print("L is list") if type(L) == list: print("L is list") if isinstance(L, list): print("L is list") #-- Python数据类型:哈希类型、不可哈希类型 # 哈希类型,即在原地不能改变的变量类型,不可变类型。可利用hash函数查看其hash值,也可以作为字典的key "数字类型:int, float, decimal.Decimal, fractions.Fraction, complex" "字符串类型:str, bytes" "元组:tuple" "冻结集合:frozenset" "布尔类型:True, False" "None" # 不可hash类型:原地可变类型:list、dict和set。它们不可以作为字典的key。 #-- 数字常量 1234, -1234, 0, 999999999 # 整数 1.23, 1., 3.14e-10, 4E210, 4.0e+210 # 浮点数 0o177, 0x9ff, 0X9FF

vue部分知识点

感情迁移 提交于 2019-11-29 11:29:11
1. vue渐进式   把框架分层:视图层 =》组件机制 =》 路由机制 =》 状态管理 =》 构建工具   即可以使用最核心的视图层渲染功能来开发需求,也可以根据需求加入其他模块。 2. 变化侦测   渲染:状态 =》DOM =》 用户界面   vue响应式系统赋予框架重渲染的能力,主要归功于变化侦测,即检测数据的变化,当数据变化时驱动视图更新 3. Object的变化侦测   Object.defineProperty将属性转换成getter/setter的形式来追踪变化,读取数据时会触发getter,修改时间时触发setter;   在getter中收集有哪些依赖使用了数据,当触发setter时,通知getter中收集的依赖数据发生了变化;   收集的依赖存储在Dep中,Dep用来收集依赖/删除依赖/向依赖发送消息;   依赖,即Watcher,只有Watcher触发的getter才会收集依赖,哪个Watcher触发了getter,就把哪个Watcher收集到Dep中;当数据发生变化时会循环依赖列表,把所有Watcher都通知一遍;      Watcher:先把自己设置到全局唯一的指定位置,如window.target,再读取数据,触发getter,在getter中从全局唯一的那个位置读取当前正则读取数据的Watcher,并把这个Watcher收集到Dep中

原型对象和原型链解析

自闭症网瘾萝莉.ら 提交于 2019-11-29 11:21:45
📖摘要 本文主要深入介绍了 [[prototype]] 和 prototype 这两个属性,顺着这个思路讲解了原型链的形成过程。 从一个题目开始 从一个很迷惑的经典题目开始。 Object instanceof Function //true Function instanceof Object //true [[prototype]]和prototype 首先,我们要了解,这里的 Object 和 Function 都是指JS中的内置函数对象。为了讲透它,我们从两个属性入手, [[prototype]] 和 prototype 。 这两个属性都说是指向原型。那有什么不同呢。 一、存在的对象不同。 每一个函数在创建之后 都会拥有一个名为 prototype 的属性,这个属性指向该函数的原型对象。 [[prototype]] 是 任何对象都有的内部属性 。也就是,只有函数对象有 prototype 属性,而每个对象都有 [[prototype]] 属性。 【这里说明一下,由于 [[prototype]] 是内部属性,所以ES5之前是不可以直接访问的,但Safari、Firefox和Chrome都支持一个属性 _prpto_ ,可以用它来访问。从ES5后,新增了方法 Object.getPrototypeOf() 可以用来访问这个内部属性。】 二、指向不同。 [[prototype]]

函数解析——python学习第三次总结

孤街浪徒 提交于 2019-11-29 09:55:48
.str字符串类型(二) 1.  isalpha  判断目标字符串中是否只含字母   表达式  str.isalpha()  ==>  bool   示例: 1 a = 'alex' 2 v = a.isalpha() 3 print(v)# 输出# True   源码: 1 def isalpha(self, *args, **kwargs): # real signature unknown 2 """ 3 Return True if the string is an alphabetic string, False otherwise. 4 5 A string is alphabetic if all characters in the string are alphabetic and there 6 is at least one character in the string. 7 """ 源码 2.  isdecimal    isdigit  都是用来判断目标字符串是否是数字,下面这个不光能判断纯文本,还能判断复杂符号。   表达式  str.isdecimal()  ==>  bool       str.isdigit()  ==>  bool   示例: 1 a = '②' 2 b = a.isdecimal() 3 c = a.isdigit() 4