Origin of Ray

一起探索互联网的秘密

尤雨溪发表了名为 Vue3.0 Updates 的主题演讲,对 Vue3.0 的更新计划、方向进行了详细阐述(感兴趣的小伙伴可以看看完整的 PPT),表示已经放弃使用了 Object.defineProperty,而选择了使用更快的原生 Proxy !!

这将会消除了之前 Vue2.x 中基于 Object.defineProperty 的实现所存在的很多限制:无法监听 属性的添加和删除数组索引和长度的变更,并可以支持 MapSetWeakMapWeakSet

阅读全文 »

webpack的核心概念

  • Entry: 入口,webpack执行构建的第一入口,可以抽象理解为input
  • Module: 模块, 在webpack里面一切皆是模块,一个模块对应一个文件,webpack会从配置的Entry开始,递归找到所有依赖的模块。
  • Chunk:代码块, 一个chunk是由多个模块组合而成,用于代码合并与分割。
  • Loader: 模块转换器,用于将模块的元内容按照需求转换成新内容。
  • Plugin: 扩展插件,在webpack构建流程中的特定时机会广播对应的事件,插件可以监听这些事件,在特定的时机做对应的事情。
阅读全文 »

最近在看Azure文档的时候,被文档中的许多概念搞得非常困惑,就去查看了一些官方文档,算是一个临时的理解和总结。

阅读全文 »

今天来聊一道简单却十分巧妙的算法问题:算出一共有几个和为 k 的子数组。

那我把所有子数组都穷举出来,算它们的和,看看谁的和等于 k 不就行了。

关键是,如何快速得到某个子数组的和呢,比如说给你一个数组 nums,让你实现一个接口 sum(i, j),这个接口要返回 nums[i..j] 的和,而且会被多次调用,你怎么实现这个接口呢?

因为接口要被多次调用,显然不能每次都去遍历 nums[i..j],有没有一种快速的方法在 O(1) 时间内算出 nums[i..j] 呢?这就需要前缀和技巧了。

阅读全文 »

什么是sql注入

原理

​ sql注入的原理是将sql代码伪装到输入参数中,传递到服务器解析并执行的一种攻击手法。也就是说,在一些对server端发起的请求参数中植入一些sql代码,server端在执行sql操作时,会拼接对应参数,同时也将一些sql注入攻击的“sql”拼接起来,导致会执行一些预期之外的操作。

阅读全文 »

缘起:启用HTTPS也不够安全

有不少网站只通过HTTPS对外提供服务,但用户在访问某个网站的时候,在浏览器里却往往直接输入网站域名(例如Example Domain),而不是完整的URL(例如Example Domain),不过浏览器依然能正确的使用HTTPS发起请求。这背后多亏了服务器和浏览器的协作,如下图所示。

https://res.cloudinary.com/dvtfhjxi4/image/upload/v1608034077/origin-of-ray/微信截图_20201215200744_st7ygu.png

图1:服务器和浏览器在背后帮用户做了很多工作

简单来讲就是,浏览器向网站发起一次HTTP请求,在得到一个重定向响应后,发起一次HTTPS请求并得到最终的响应内容。所有的这一切对用户而言是完全透明的,所以在用户看来,在浏览器里直接输入域名却依然可以用HTTPS协议和网站进行安全的通信,是个不错的用户体验。

一切看上去都是那么的完美,但其实不然,由于在建立起HTTPS连接之前存在一次明文的HTTP请求和重定向(上图中的第1、2步),使得攻击者可以以中间人的方式劫持这次请求,从而进行后续的攻击,例如窃听数据、篡改请求和响应、跳转到钓鱼网站等。

阅读全文 »

这周查阅了一些关于vue全局异常处理的文章,自己几种方案并根据自己的需求进行了一定的改造,这里记录一下。

阅读全文 »

首先上一道leetcode的题目:https://leetcode-cn.com/problems/satisfiability-of-equality-equations/

这道题我们看到之后很容易的思路就是先把所有相等的关系找个数据结构保存下来,然后依次判断不等式的两方是否同时存在于刚才的结构中。

这个过程的第一步就是并集,把相关的数据放在一个集合中,第二步就是查找,在这个集合中查找相关性是否成立,这个查找的过程中可以进行一定的优化,也就是并集查找中的路径压缩。这里推荐这篇博客:https://blog.csdn.net/liujian20150808/article/details/50848646

阅读全文 »

这篇文章讲的是异步编程语法的发展过程,异步方法的调用是如何逐渐变成同步语法的。

异步编程的方法,大概有下面四种

  • 回调函数
  • 事件监听
  • 发布/订阅
  • Promise 对象

ECMAScript 6 (简称 ES6 )作为下一代 JavaScript 语言,将 JavaScript 异步编程带入了一个全新的阶段。这组系列文章的主题,就是介绍更强大、更完善的 ES6 异步编程方法。

新方法比较抽象,初学时,我常常感到费解,直到很久以后才想通,异步编程的语法目标,就是怎样让它更像同步编程。

这边文章讲的是这几种语法之间的关联,如果阅读过程中对于任意一个语法有深入理解的需求,可以去看一下阮一峰老师的ES6语法入门

阅读全文 »

nodejs的两大特性,即异步IO事件驱动。通过对***《深入浅出nodejs》***和几篇博客的阅读以后,有了大致的了解,总结一下。

注意本文的内容基于node11以上。

同步与异步,阻塞与非阻塞

“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。
1.同步与异步
同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由调用者主动等待这个调用的结果。

而异步则是相反,调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用*发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。

阅读全文 »
0%