Li Yucang

While there is life there is hope

常见排序算法

算法集锦

常见排序算法 基础知识 比较和非比较的区别 常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlog2n),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 常见的快...

算法系列题

对常见算法了然于胸

算法系列题 程序代码使用c++编写,如果对c++基本语法还不熟悉,建议先去了解,这样有助于更快的理解代码。 数组中重复的数字 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对...

git文件夹探索

探究版本控制的奥秘

git文件夹探索 git是一款分布式代码版本管理工具,通过git能够更加高效地协同编程。了解git的工作原理将有助于我们使用git工具更好地管理项目。通过了解.git文件夹中的文件组成,我们可以从一个角度去窥探git的实现原理。 学习知识需要找到知识的源头,git学习也不例外,首先我们找到git官方文档,对git了解不够的小伙伴可以先阅读文档补充知识。我们主要对.git文件夹下的相关文件...

vue国际化实践

迈向国际化之路

vue国际化实践 我们在做国际化时会面临的问题: 语言翻译 静态文案翻译(前端静态模板文案) 动态文案翻译(server端下发的动态数据) 样式 不同语言文案长度不一样造成的样式错乱 图片的替换 map表维护 第三方服务 SD...

vue 源码分析

源码探索之旅

vue 源码分析 本文将从几个方面入手一步步带大家解读vue源码,对应vue源码版本v2.6.11。 深入响应式原理 Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。这使得状态管理非常简单直接,不过理解其工作原理同样重要,这样你可以避开一些常见的问题。 双向数据绑定 MVVM中,M 即 mode...

vue-router 源码分析

源码探索之旅

vue-router 源码分析 路由知识 路由的概念 路由这个概念最开始是在后端出现的,以前使用模板引擎开发页面的时候经常会看到这样的路径: http://hometown.xxx.edu.cn/bbs/forum.php 有时还会有带.asp 或.html 的路径,这就是所谓的 SSR(Server Side Render),通过服务端渲染,直接返回页面。 其响应过程是这样的...

vuex 源码解析

源码探索之旅

vuex 源码解析 Vuex 是专为 Vue 开发的统一状态管理工具。当我们的项目不是很复杂时,一些交互可以通过全局事件总线解决,但是这种观察者模式有些弊端,开发时可能没什么感觉,但是当项目变得复杂,维护时往往会摸不着头脑,如果是后来加入的伙伴更会觉得很无奈。这时候可以采用 Vuex 方案,它可以使得我们的项目的数据流变得更加清晰。本文将会分析 Vuex 的整个实现思路,当是自己读完源码的...

:first-of-type的误用

探索css伪类选择符

:first-of-type 的误用 近期在使用:first-of-type + class 定位元素的时候发现不起作用,所以翻阅资料小小的整理总结一下。 相信大家对 E:first-child 、E:nth-child 这种伪类选择符 Pseudo-Classes Selectors 的写法并不陌生,但其实伪类选择符不仅仅只有你经常用的这几种写法,如下表: ...

容易混淆的client-、scroll-、offset-

js获取DOM元素位置和尺寸大小

容易混淆的 client-、scroll-、offset- 在一些复杂的页面中经常会用 JavaScript 处理一些 DOM 元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽略的一部分,要想写出预想效果的 JavaScript 代码,我们需要了解一些基本知识。 首先,每个 HTML 元素都有下列属性: offse...

js中的文件和二进制数据的操作

二进制以及相关转换

js 中的文件和二进制数据的操作 本篇文章总结了浏览器端的二进制以及有关数据之间的转化,如 ArrayBuffer,TypedArray,Blob,DataURL,ObjectURL,Text 之间的互相转换。为了更好的理解与方便以后的查询,特意做了一张图做总结。 为了后续的方便,这里简单写一个函数,用来下载一个链接: function download (url, name) {...