Yinode Blog

断裂,就一直断裂

树形递归结构过滤算法

对某个树形结构进行过滤是一个比较常见的场景,但同时想要写出没有问题,并且简洁的代码也并非易事,本文将对这种算法进行简单的分析,并在最后给出代

JS LocalStorage 导出导入工具

let genStorageSyncCode = () => { const kvList = [] for (let i = 0; i < localStorage.length; i++) { const k = localStorage.key(i) const v = localStorage.getItem(k) kvList.push({ k, v }) } const code = `${kvList.map((item) => { return `localStorage.setItem('${item.k}','${item.v}')` }).join(';')}` return code } console.log(genStorageSyncCode()) 直接导出代码,复制到另外一个页面控制台conso

H5跳转微信小程序(个人微信+企业微信)的实现

实践和落地

从H5打开小程序是一个非常常见的功能,但是实现起来也颇有一些坑,作为过来人给大家指指路。 我将分别讲述如何在个人微信以及企业微信中的自带浏览器

React+Typescript+Prettier+ESLint 项目初始化

项目初始化

React项目初始化 TypeScript + ESLint + Prettier自动格式化 新建项目 需要提前安装create-react-app命令,不做赘述 npx create-react-app your-app-name --template typescript cd your-app-name 添加并

最短摘要的生成

分而治之

最近好久没写文章了,大量的时间都花在了刷LeetCode上,最近开始重拾博客。 最短摘要 假设我们拥有一个分词数组W = [w1,w2,w3,w4,w5…] 并拥有一个query数组

用遗传算法(GA)来解决 MTSP(多旅行商问题)

引言 本文章会侧重实际运用,给出对于 MTSP 和 TSP 问题的一个 GA 算法,并具有较高可用性的方案。并在最后给出一个可以跑在Web Browser 上的可视化 Demo。 并且会

如何在二维平面上寻找最近的两个点(分治法)

分而治之

给定一组在二维空间中的点(数量为 N),如何快速找出最近的两点? 显然,可以通过遍历所有点之间的距离,然后直接选出这些距离之中的最小值,但是,这

红黑树的实现

JavaScript Version

红黑树是一种非常高效的数据结构

Element-UI Table组件用户自定义配置方案分享-自定义列宽、排序、显隐

支持用户自定义列宽,排序,显隐并长期记忆化

JavaScript中 Console.log 函数到底有多慢

最近在写JS的时候碰到一个很奇怪的现象,起初是碰到一个树遍历的问题,我封装了一个迭代器用于遍历,并希望能够实际的统计一下性能,使用了cons

算法分析中的常见渐进符号

最近在重新复习算法,所以翻了下算法导论,查阅了点资料,记录下渐进符号。 O 读作 大 O 拉丁字母 O 描述一个函数数量级的渐近上界 O(g(n)) = f(n) , 存在正常量 c 和

计算π [蒙特卡洛+碰撞计数+巴塞尔]

仅供娱乐 蒙特卡洛方法 基于统计的方法 发射大量的随机点,通过这个比值就能换算出π的值 至于判断点是否在圆内用简单的通项公式 sqrt((a - x) ^ 2 + (b - y) ^ 2) <=

计算传递闭包 [离散数学]

传递闭包 传递闭包、即在数学中,在集合 X 上的二元关系 R 的传递闭包是包含 R 的 X 上的最小的传递关系。 例如,如果 X 是(生或死)人的集合而 R 是关系“为

生成排列与组合 [离散数学]

前置工具代码 一些前置的工具 下面代码不会再给出 // 求N的阶乘 const factorial = (() => { var f = [1, 1] var i = 2 return function factorial(n) { if (typeof f[n] != 'undefined') return f[n] var result = f[i - 1] for (; i <= n; i++) f[i] = result =

A Star 搜索算法 常用于游戏中的路径查找

非常酷的一个启发式搜索算法,整体类似于dij最短路径算法,只不过加入了预估距离的概念,当然由于博客数据丢失,之前的博客内容没了,不过还好代码

连连看中的广度优先搜索算法

由于博客数据丢失,只剩下了代码。。。。。之前写的MD都没了。。 const gameConfig = { maxLevel: 10// 最大搜索层级 2代表 只搜索经过两次转角能到达的点 } // 简易队列系统 配合

微信小程序 全局任务弹窗方案分享(微侵入式) Template + Request 拦截器

分享原生小程序关于全局弹窗的实现思路

小程序利用Canvas绘图生成海报排雷经验分享

最近小程序搞的比较多,最烦人的就是这个海报生成,踩雷不少,跟大家分享一点经验,也许可以解决你的问题

计算机中的 原码、反码、补码 [转]

计算机中的各种码 究竟有着怎样的关系呢

计算机中的补码与无符号编码 [笔记]

什么事补码以及无符号数

不用第三个Temp变量 实现两个变量之间交换的方法 [XOR 运算]

计算机中的基础位运算

使用计算机的基础位运算功能实现变量交换

canvas判断用户是否点击在一条线上

利用一种非常简单的方式来判断用户是否触摸到了一条直线

V8 Lite - 轻量级的V8引擎 [译]

Lite - 适用于低内存设备的 V8引擎版本

编辑距离算法 - 计算两个单词之间的相似度

利用简单的编辑距离,来判断两个拉丁文单词直接的相似度,常用于输入纠错!

LRU 缓存算法

LRU 是一种 『最久未用优先淘汰』 的缓存管理算法

机器学习 K均值分类算法

基础且典型的一种无监督机器学习分类算法

字典树的实现

字典树也被称之为前缀树,是一种根据字母序列为基础的快速检索数据结构

构建一个用于创建组件库的项目脚手架工具 [类 Vue-cli-3]

有没有觉得创建一个独立NPM组件过于费时费力呢?

CentOS 7 编译安装 Nginx 配合 SSL 模块

准备 先安装一下接下来需要的依赖套件 yum install -y gcc-c++ openssl openssl-devel zlib zlib-devel pcre pcre-devel 下载 nginx cd ~ wget http://nginx.org/download/nginx-1.12.2.tar.gz tar -zxvf nginx-1.12.2.tar.gz 编译安装 cd nginx-1.12.2 ./configure –prefix=/usr/local/nginx –with-http_ssl_module make && make install 检测安装是否成功 /usr/local/nginx/sbin/nginx -v 常用操作 /usr/local/nginx/sbin/nginx # 启动 /usr/local/nginx/sbin/nginx -s

修复 iOS Web Input 输入框失去焦点无法还原页面滚动位置

推荐注册到 Vue 全局 Mixin 里 并在 updated 生命周期中重新运行 const fixInputPaddingMixin = { mounted() { this._fixInput(); }, updated() { this._fixInput(); }, methods: { _fixInput() { let inputs = document.querySelectorAll('input'); if (inputs.length >= 1) { for (let item of inputs) { item.addEventListener( 'focus', () => { item.scrollTop = document.body.scrollTop; }, false, ); item.addEventListener( 'blur', () => { document.body.scrollTop

哈希表的实现

哈希表 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数

前端实现真正的遮罩穿透效果

后续更新: 事实上大家如果有这个需求可以先去看看 css 里的 clip-path,是个更好的选择! 最近在工作中要去做一个类似于一些软件游戏里面的引导的

虚拟滚动的实现(适合大量的列表数据)

假设我们拥有10w条数据,需要在Web上进行展现,但是如果我们进行实际的渲染就会发现,整个初次渲染的成本的非常之高,用户的体验是非常差的。所

利用状态机实现一个简单的解释器

有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的

浅谈常见编程语言中的垃圾收集算法

垃圾回收(英语:Garbage Collection,缩写为GC),在计算机科学中是一种自动的存储器管理机制。当一个计算机上的动态存储器不再需

最长递增子序列 与 0 1 背包问题 [动态规划]

最长递增子序列 在计算机科学中,最长递增子序列(longest increasing subsequence)问题是指,在一个给定的数值序列中,找到一个子序列,使得

Webpack JS模块化原理

最近一直在看一些和JS模块化发展历程的东西,正好呢,也想了解一下Webpack在我们背后帮我们做了那些事情,所以就有了今天的这篇文章。 首先我

从JS的阻塞角度谈谈浏览器渲染原理

前言 这样,在解析包含的javascript代码之前,页面的内容将完全呈现在浏览器中。而用户也会因为浏览器窗口显示空白页面的时间缩短而感到打

移动端强制横屏方案

最近工作中要开发一个横屏应用,无论用户是否开启手机旋转功能,进行强制横屏。  这里面也收获了一些经验,在这里和大家分享一下。 首先说明我的方案只

DOM中的各种XY定位属性以及元素宽高属性

我们都用过不少JS中的定位属性,比如scrollTop,clientX等等,但是其实单纯从命名上,我们是很难区分各种属性的含义的,我平时也经

JavaScript中的 == 相等操作符

想到这个的主要原因是最近看到了一个非常有趣的题目 [] == ![] 大家有想到结果是什么吗?其实结果是 true,下面是具体的判断链 [] == ![] -> [] == false -> [] == 0 ->

让 Vue.js 中的 provide / inject 支持响应式

provide / inject provide / inject Vue.js 2.2.0 版本后新增的 API. 还发出了这样的警告provide 和 inject 主要为高阶插件/组件库提供用例。并不推荐直接用于应用程序代码中。 provide 和 inject 绑定

初次尝试WebAssembly X Rust

这个东西其实我大约一年之前听到了解到,但是一直没有尝试。 正巧最近自己写了个文本校对工具,公司内部的一些人员在用,功能上没有问题,主要就是因为

Vue.js源码 阅读引导

前言 最近一直在看 Vue.js 源码,大约花了半个多月的时间阅读,有非常多的感悟,所以在这里希望能和大家分享一下我的成果。 首先我认为 Vue.js 这种牛逼框架的源码绝

Vue源码中编程技巧记录

记录下我在阅读过程,觉得非常有学习的必要,非常好的东西。 操作对象属性的引用 <性能-可读性> exp function name(vm) { let data = vm.$options.data // 接下来需要读取dat

一些Web最佳实践的探索

最近用 Django 整了一个匿名的论坛,包含主题回复点赞,板块,用户等系统,麻雀虽小,但是基本功能还是全的的。但是不对接多可惜啊。 正好这半年多的前端开发

JavaScript 中 几种快排的实现

其实也就是前段时间点阮一峰快排事件,正好去看看大家的实现,在这里记录一下,并写一下注释 实现 1 特点 简单 智力经济 性能较差 加随机化比较方便 只要把取

利用AOP的思路完成微信公众号网页中的分享来源统计功能

需求 最近遇到了这么一个需求,我们拥有一个主要容器是微信浏览器的移动端 WebAPP 。他的主要功能是运营一些活动比如说抢红包啦,答题啦,所以我们需要对用户

微信+vue 任意页面直接通过路由进入并拦截按钮 返回任意页面

先来阐述一下需求 首先我拥有一个详情页面 B 用户可以进入到页面 B 之中分享出去页面 B 但别的用户通过地址直接进入页面 B 这时候 如果用户按了一下返回按钮

微信webapp分享出去带分享参数 form 导致进入分享无法正常匹配路由 vue

以下是某个单页应用的地址 http://m.cswh.me/dh/#/activity/flagRaisingPolice?act_token=b5f01112731d4c47bc5a7214d17365b2 而在这个页面使用微信的JSAPI进行分享之后,即使你设置了 wx.ready(function() { wx.onMenuShareAppMessage({ link: window.location.href , title: that.config.share_title, imgUrl: uploadURL + that.config.share_icon, desc: that.config.share_text }) wx.onMenuShareTimeline({ link: window.location.href, title: that.config.share_title, imgUrl: uploadURL + that.config.share_icon, desc: that.config.share_text }) })