0%

动态规划(Dynamic programming)

动态规划本质上是将一个问题拆成几个子问题,分别求解这些子问题,即可推断出大问题的解。核心是避免不必要的计算,尽量缩小可能解空间, 主要操作是寻找递推公式

阅读全文 »

文档流

要想了解什么是文档流,那就要知道流的概念。想象一下,什么是“流”?我们平常说的“水流”“流体”,我们就可以把像河流那样长长的东西作为流。

那这里所指的文档流指的是什么呢?由于这是显示在浏览器上面的,显示在电脑屏幕前的。如果我们将屏幕的两侧想象成河道,将屏幕的上面作为流的源头,将屏幕的底部作为流的结尾的话,那我们就抽象出来了文档流 !

像水流,流动的是水,电磁流流动的是电磁。那文档流流动的又是什么呢?那就是元素!可以将屏幕中显示的内容都可以一一对应为文档中的一个元素,在这里就引出两个概念:内联元素块级元素

阅读全文 »

什么是cdn

cdn全称是内容分发网络。其目的是让用户能够更快速的得到请求的数据。简单来讲,cdn就是用来加速的,他能让用户就近访问数据,这样就更更快的获取到需要的数据。举个例子,现在服务器在北京,深圳的用户想要获取服务器上的数据就需要跨越一个很远的距离,这显然就比北京的用户访问北京的服务器速度要慢。但是现在我们在深圳建立一个cdn服务器,上面缓存住一些数据,深圳用户访问时先访问这个cdn服务器,如果服务器上有用户请求的数据就可以直接返回,这样速度就大大的提升了。

dns服务

要了解cdn就先要了解一下dns。当我们在浏览器中输入一个域名时,首先需要将域名转换为ip地址,再将ip地址转换为mac地址,这样才能在网络上找到该服务器。我们先不看ip转换mac地址的过程,先来看看是怎么将一个域名转换为ip的。

当我们向dns服务器发起解析域名的请求时,dns服务器首先会查询自己的缓存中有没有该域名,如果缓存中存在该域名,则可以直接返回ip地址。如果缓存中没有,服务器则会以递归的方式层层访问。例如,我们要访问www.baidu.com,首先我们会先向全球13个根服务器发起请求,询问com域名的地址,然后再向负责com域名的名称服务器发送请求,找到baidu.com,这样层层递归,最终找到我们需要的ip地址。

dns与cdn的关系

刚才说到cdn实际上是一个就近访问,那么现在有一个问题是,我们怎么知道用户的所在位置从而给他分配最佳的cdn节点呢。这就需要dns服务来进行定位了。当我们通过使用dns服务的时候,可以根据他使用的LDNS服务器来进行一个定位,例如我们的调度服务器看到他是来自深圳电信的LDNS服务器,那么我们就认为该用户来自深圳电信,然后调度服务器可以让该用户去访问深圳电信的CDN服务器,这样就让用户访问到了最优的cdn节点。

通过dns服务我们可以很快的定位到用户的位置,然后给用户分配最佳cdn节点,但是这种调度方式存在一个问题,例如,当我 是北京联通的用户但是使用的却是深圳电信的ldns的话,调度服务器会给我分配到深圳电信的cdn服务器,这样就产生了错误的调度。

阅读全文 »

React中的常用的五种组件形式

目前前端开发的主流技术都已经往组件化的方向发展了,而每一种新的框架的出现,最基础的部分就是组价的编写形式,这就好像学习一门编程语言的时候,总是要从hello world开始一样,而在React中,我们常用的组件编写形式又有哪些呢? 或者说各种不同的组件又可以分为哪几类呢?

阅读全文 »

首先,我们得给图形确定一条路径,只要“一笔画”并且“不走重复路线”就可以了。如图,标出的是其中的一种路径方向。我们先假定路径的正方向为1(其实为-1啥的也都可以,正负方向互为相反数,不是0就行),那么反方向就是其相反数-1。

然后,我们在子路径切割的几块区域内的任意一点各取一条方向任意的射线,这里我只取了三个区域的射线为例,来判断这三块区域是“里面”还是“外面”。

接下来,我们就来判断了。S1中引出的射线L1,与S1的子路径的正方向相交,那么我们就给计数器+1,结果为+1,在外面。

S2中引出的射线L2,与两条子路径的正方向相交,计数器+2,结果为+2,在外面。

S3中引出的射线L3,与两条子路径相交,但是其中有一条的反方向,计数器+1-1,结果为0,在里面。没错,只要结果不为0,该射线所在的区域就在外面。

参考 & 引用

https://www.jianshu.com/p/f1590d4fb5c5

简介

JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

阅读全文 »

简介

牛顿逼近法,又称牛顿法(英语:Newton’s method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数 $f(x)$ 的泰勒级数的前面几项来寻找方程$f(y)=0$的根。

阅读全文 »

JS-模块化进程

随着js技术的不断发展,途中会遇到各种问题,比如模块化。

那什么是模块化呢,他们的目的是什么?

定义:如何把一段代码封装成一个有用的单元,以及如何注册此模块的能力、输出的值
依赖引用:如何引用其它代码单元

到目前为止,大概分为以下几个里程碑式节点。

1
原始的开发方式 ---> CommonJS ---> AMD ---> CMD ---> UMD ---> ES6Module
阅读全文 »

垃圾回收机制简述

内容基本来源于[浅谈程序语言的垃圾回收机制](https://mp.weixin.qq.com/s?__biz=MzU5NzEwMDQyNA==&mid=2247483808&idx=1&sn=06dcf160978dd022a4e5c5c99ad1b073&chksm=fe59d347c92e5a513f42bb071d97247e384d6a3d94cbcb8f03fb200171aa5aa0af1235e910ca&mpshare=1&scene=22&srcid=0824EHt1if6Nq61TpEDriDvj# rd)看了一遍,再抄一遍以加深记忆、知识备份。

背景

众所周知,c/c++需要程序员手动分配和释放内存,要想处理得好,除了会增加程序员的开发成本之外,其实对程序员自身的内存管理能力也有一定的要求。然而如果处理得不好,极易造成内存泄漏。

目的

一些高级编程语言在设计时,决定将内存的分配和回收这一类工作统一交由语言自实现的“自动处理机”,即我们常说的垃圾回收机制。其目的是为了让程序更稳健(程序员手动管理内存的水平不一,交由自动机处理更有保障)、让程序员更轻松(仅需专注程序逻辑本身)。

阅读全文 »