Origin of Ray

一起探索互联网的秘密

Blob是什么

Blob(Binary Large Object)表示二进制类型的大对象。在数据库管理系统中,将二进制数据存储为一个单一个体的集合。Blob 通常是影像、声音或多媒体文件。在 JavaScript 中 Blob 类型的对象表示不可变的类似文件对象的原始数据。

image-20200724202124460

如你所见,myBlob 对象含有两个属性:size 和 type。其中 size 属性用于表示数据的大小(以字节为单位),type 是 MIME 类型的字符串。Blob 表示的不一定是 JavaScript 原生格式的数据。比如 File 接口基于 Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。

阅读全文 »

记录一下在使用elementUI时遇到的坑。

elementUI有的事件命名容易让人产生疑惑,如handleSizeChange,handleCLose等。

阅读全文 »

什么是DOM

DOM就是文档对象模型,什么是文档对象模型?这就需要好好说说了。

HTML的文档document页面是一切的基础,没有它dom就无从谈起。

当创建好一个页面并加载到浏览器时,DOM就悄然而生,它会把网页文档转换为一个文档对象,主要功能是处理网页内容。

在这个文档对象里,所有的元素呈现出一种层次结构,就是说除了顶级元素html外,其他所有元素都被包含在另外的元素中。

阅读全文 »

尤雨溪发表了名为 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全局异常处理的文章,自己几种方案并根据自己的需求进行了一定的改造,这里记录一下。

阅读全文 »
0%