Alice

JavaScript引用类型Object常见用法实例分析

ⅰ亾dé卋堺 提交于 2020-02-28 18:35:23
1、JavaScript数据类型 (1)基本类型 5种基本类型:Undefined、Null、Boolean、Number、String (2)引用类型 5种引用类型:Object、Array、Date、RepExp、Function (3)基本类型与引用类型的异同: 1.保存方式 基本类型是按值访问的。引用类型的值是按引用访问的,引用类型的值是保存在内存中的对象,JavaScript在操作对象时,实际上是操作对象的引用而不是实际的对象。 2.复制变量值 复制基本类型值会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上。复制引用类型值也会将存储在变量对象的值复制一份到新变量的空间,只是值的副本是一个指针,指向存储在堆中的一个对象。 3.参数传递 JavaScript中访问变量有按值和引用两种方式,而参数只能按值传递。 2、Object类型 对象是某个引用类型的实例。 大多数引用类型值都是Object类型的实例。 ---创建Object实例的方法 (1) 使用new操作符后跟Object构造函数。 var person = new Object(); person.name = "Alice"; person.age = 23; person[5] = true; (2) 使用字面量表示法。 var person = { "name" : "Alice", age :

数据库隔离级别以及实现原理

萝らか妹 提交于 2020-02-28 09:37:13
数据库隔离级别及实现原理 在平常的开发过程中,我们一般都会跟数据库打交道, 今天就来介绍下数据库中的隔离级别以及对应的实现原理. Read Uncommited(未提交读) 在一个事务中,可以读取到其他事务未提交的数据变化, 这种读取其他会话还没有提交的事务叫做脏读现象, 在生成环境中几乎没有任何使用. 本篇博客也不会做特别详细的介绍. Read Commited(已提交读) 在Read Commited隔离级别, 不会出现脏读,也不会出现脏写. No dirty reads 如果一个事务正在往数据库中写入数据, 但是此事务还没有提交或者终止, 如果另外一个事务能够看到未提交事务待提交的数据,这就是脏读. 下图展示的是非脏读 从上图中可以看出, 用户2只能看到用户1提交事务之后的数据, 在用户1运行命令set x=3时, 用户2查询x的值,看到的还是2. No dirty writes 如果一个事务在写数据到数据库,并且事务还没有提交, 如果另外一个事务覆盖了前一个事务未提交的数据,就叫做 dirty write (脏写).如下图所示: 从上图可以看出Alice执行第一个update语句后,Bob执行也执行了update语句.可以看到Bob更新操作覆盖了Alice的更新操作;后面Alice的第二个update覆盖了Bob的第二个update语句

如何高效实用 Git

走远了吗. 提交于 2020-02-28 02:21:58
Git 工作流 只要项目是多人参与的,那么就需要使用正确的 Git 工作流程。 下面介绍一个简单有效的工作流程。 场景 假设有一个项目,要开发下一代的 Facebook,你就是这个项目的技术 leader,你的团队有3个开发人员: Alice :1年开发经验 Bob :1年开发经验 John :3年开发经验 You :这个项目的技术 leader Git 中的开发过程 Master branch 主分支 1)主分支始终包含线上产品的代码。 2)任何人,包括技术 leader,都不允许直接修改主分支上的代码,因为主分支是线上代码的拷贝。 3)代码的开发是在其他分支上做的。 Release branch 发布分支 1)项目启动后,首先要为项目创建一个 Release branch,是从 Master branch 创建出来的。 2)关于项目的所有代码都会在这个 Release branch 中,这个 Release branch 也只是一个普通的分支,只是以 “ release/ ” 开头。 3)例如把我们这个项目的 Release branch 命名为 “ release/fb ”。 4)可能同时会有多个项目在开发,所以,为每个项目创建一个独立的 Release branch,例如现在还有一个项目叫 “ release/messenger ”。 5)使用 Release branch

Python断言的最佳实践

巧了我就是萌 提交于 2020-02-27 19:39:58
使用 assert 作为标准代码的一部分而不是仅仅用于调试目的,是否存在性能或代码维护问题? 是 assert x >= 0, 'x is less than zero' 好或坏比 if x < 0: raise Exception, 'x is less than zero' 另外,有没有办法设置业务规则, if x < 0 raise error 总是在没有 try/except/finally 情况下检查,如果在整个代码 x 任何时候小于0都会引发错误,就像你在函数开始时设置 assert x < 0 ,函数中 x 变得小于0的任何地方都会引发异常? #1楼 如前所述,当您的代码不应该达到某一点时,应该使用断言,这意味着存在错误。 我可以看到使用断言的最有用的原因可能是一个不变/前/后条件。 这些在循环或函数的每次迭代的开始或结束时必须是真的。 例如,一个递归函数(2个单独的函数,因此1处理错误的输入,另一个处理错误的代码,导致很难用递归区分)。 如果我忘记编写if语句,那会出现问题。 def SumToN(n): if n <= 0: raise ValueError, "N must be greater than or equal to 0" else: return RecursiveSum(n) def RecursiveSum(n): #precondition:

Schnorr协议:非交互零知识身份证明和数字签名

不问归期 提交于 2020-02-27 18:57:33
本文首发公众号VenusBlockChain,VenusBlockChain致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。有兴趣的小伙伴们,快上车!!! 欢迎关注公众号! 摘要:本篇文章介绍Schnorr的两大应用场景:从交互式零知识身份证明到非交互零知识身份证明、数字签名实现基本原理、菲亚特-沙米尔(Fiat-Shamir)变换。 Schnorr简介 Schnorr机制由德国数学家和密码学家Claus-Peter Schnorr在1990年提出,是一种基于离散对数难题的知识证明机制。 Schnorr本质上是一种零知识的技术,即Prover声称知道一个密钥x的值,通过使用Schnorr加密技术,可以在不揭露x的值情况下向Verifier证明对x的知情权。即可用于证明你有一个私钥。 Schnorr中涉及到的技术有哈希函数的性质、椭圆曲线的离线对数难题。椭圆曲线的离线对数难题:已知椭圆曲线E和点G,随机选择一个整数d,容易计算Q=d*G,但是给定的Q和G计算d就非常困难。 技术价值 证明你知道一个私钥,可用于身份识别中。 数字签名。 本文中所有出现的变量,小写字母表示标量,即一个数字,在这里指整数;大写字母表示离散对数问题中的参数,例如:椭圆曲线中的点。 ** 交互式Schnorr 原始的Schnorr机制是一个交互式的机制。在讲述其机制时

以Lazada为例,看电商系统架构演进

五迷三道 提交于 2020-02-27 07:28:03
什么是Lazada? Lazada 2012年成立于新加坡,是东南亚第一电商,2016年阿里投资10亿美金,2017年完成对lazada的收购。 业务模式上Lazada更偏重自营,类似于亚马逊,自建仓储和为商家提供服务。 在阿里完成对Lazada的收购后,开始对Lazada进行了一系列架构升级,目的是升级为阿里的技术引擎。 Lazada的原始系统 Lazada初期有两个系统: Alice:前台展示系统 Bob:商品,交易,优惠等后台系统逻辑 业务发展过程中将Bob进行了一定的拆分,其中交易,履约能力沉淀到Oms系统中。 系统整体开发语言为Php,一些新的系统为Go。 这样的架构存在很多问题,如: 架构划分不合理:没有分布式和模块化分层思想,模块和模块之间代码耦合严重,改动牵一发而动全身。 稳定性差:每周都有P1故障发生。 大量数据同步:系统间不是通过服务化接口调用,而是采用数据复制拷贝方式实现数据共享。 迭代周期长:系统架构复杂造成的结果是,研发团队合作效率低,稳定性差,导致新需求交付慢。 阿里技术的赋能 在阿里对Lazada收购之后,同时考虑到业务形态及所处的软件技术背景,阿里首先将阿里沉淀的无线端和搜索链路进行了阿里技术体系升级。 将用户,商品详情,购物车,订单,退款,履约等系统全部重构,将数据迁移到新系统。 阿里在整个架构投入上,首先采用调用精兵强将直接接管新架构的研发

了解Object.create()和new SomeFunction()之间的区别

北城余情 提交于 2020-02-27 04:58:30
最近,我偶然发现了JavaScript中的 Object.create() 方法,并试图推断出它与使用 new SomeFunction() 创建对象的新实例有何不同,以及何时要在另一个对象上使用它。 考虑以下示例: var test = { val: 1, func: function() { return this.val; } }; var testA = Object.create(test); testA.val = 2; console.log(test.func()); // 1 console.log(testA.func()); // 2 console.log('other test'); var otherTest = function() { this.val = 1; this.func = function() { return this.val; }; }; var otherTestA = new otherTest(); var otherTestB = new otherTest(); otherTestB.val = 2; console.log(otherTestA.val); // 1 console.log(otherTestB.val); // 2 console.log(otherTestA.func()); // 1 console

区块链基本概念一览

你说的曾经没有我的故事 提交于 2020-02-27 01:57:11
本文翻译自 中本聪 ( Satoshi Nakamoto) 提供的资料 区块链:点对点电子金融服务系统。(Bitcoin: A Peer-to-Peer Electronic Cash System ) 允许在线从甲方向乙方支付,而无需提供格外 的证据。这样可以避免维护信息安全而支付额外的成本。 The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest

来聊聊 应用层

走远了吗. 提交于 2020-02-26 10:02:56
网络应用是计算机网络存在的理由,一批早起的网络应用主要有电子邮件、远程访问、文件传输等,但是随着计算机网络的发展和人类无穷无尽的需求,越来越多的网络应用被开发出来,例如即时通讯和对等(P2P)文件共享,IP 电话、视频会议等。 网络应用是计算机网络存在的理由,一批早起的网络应用主要有电子邮件、远程访问、文件传输等,但是随着计算机网络的发展和人类无穷无尽的需求,越来越多的网络应用被开发出来,例如即时通讯和对等(P2P)文件共享,IP 电话、视频会议等。还有一些多方在线游戏被开发出来如《魔兽世界》等,可以说计算机网络是一切应用演变出来的基础。人要怀有一颗感恩的心,感谢这些前辈的努力,才让我们现在的生活如此丰富多彩。但是我们作为程序员,不仅要能够享受这些成果,还要知道为什么,这样生活才会和谐。 应用层协议原理 研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。例如,在网络应用程序中,有两个互相通信的不同程序:一个是运行在用户主机上的浏览器程序;另一个是运行在 Web 服务器主机上的 Web 服务器程序。 网络应用程序体系结构 网络应用程序的体系结构(application architecture)主要有两种,一种是 客户-服务器体系结构(client-server architecture) ,在客户-服务器体系结构中,有一个持续打开,等待连接的主机称为服务器

玩转 Markdown 所有特性

前提是你 提交于 2020-02-25 17:25:33
:package: 本文已归档到:「 blog 」 目录 <!-- TOC depthFrom:2 depthTo:2 --> 目录 标题 文本样式 列表 分割线 链接 引用 代码高亮 表格 Emoji 表情 注脚 数学公式 Diff 流程图 HTML 编辑器 参考资料 <!-- /TOC --> 标题 Markdown 支持六个级别的标题。 语法: # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 文本样式 :bulb: 粗体、斜体、删除线可以混合使用。 在 Markdown 中,粗体文本、斜体文本可以使用 * 或 _ 符号标记。建议统一风格,始终只用一种符号。 语法 效果 普通文本 普通文本 *斜体文本* _斜体文本_ 斜体文本 斜体文本 **粗体文本** __粗体文本__ 粗体文本 粗体文本 ~~删除文本~~ 删除文本 ***粗斜体文本*** ___粗斜体文本___ 粗斜体文本 粗斜体文本 列表 无序列表 RED YELLOW BLUE 有序列表 第一步 第二步 第三步 任务列表 [x] 完成任务 [ ] 计划任务 多级列表 数据结构 线性表 顺序表 链表 单链表 双链表 树 二叉树 二叉平衡树 分割线 *** 、 --- 、 ___ 都可以作为分割线。 链接 普通链接 语法: [我的博客](https:/