Jacleklm's Blog

Jacleklm's Blog

Python Basic Knowledge
概述基本来源于菜鸟教程 入门简介 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。 Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。 环境 需配置一些环境变量,暂不做 https://www.runoob.com/python3/python3-install.html 运行 python fileName.py运行 用vs code右键 数据类型 多行语句。Py...
解决hexo g生成index.html为空的问题
背景最近一段时间博客通过域名访问的方式一直访问为空白页面,我以为是github的问题过段时间就好了,就没太管,后来一直没恢复,于是查了下是什么原因。刚开始以为是githubpage的问题,往这个方向折腾了好久没啥结果… 不过也知道到了 username.github.io 下可以通过路由的方式部署多个项目,问题没解决不过也没白折腾吧。 问题最终发现是之前没管的hexo的循环依赖问题:hexo -s预览博客的时候出现循环引用的报错:hexo (node:7801) Warning: Accessing non-existent property 'filename'...。...
TypeScript中的内置工具类型及其实现
先来看下基础实现 clone,把 T 里面的都拷贝一次: 123type cloneT<T> = { [K in keyof T]: T[K];}; Partial用法将类型定义的所有属性都修改为可选 12345678910type Foo = { name: string; age: number;}type Coord = Partial<Foo>// 等同于type Coord = { name?: string; age?: number;} 实现123type Partial<T...
TypeScript中的类型编程
前言本篇文章是读了林不渡的TypeScript 的另一面:类型编程,码了一些 demo 并查了其他文档等最后留下的学习笔记。建议直接读原文,本文可读性较差 类型编程的特点/看法 它会带来代码量大大增多(可能接近甚至超过业务代码),编码耗时增长等问题,而带来的唯一好处就是类型安全,包括的类型提示,进一步减少可能存在的调用错误,以及降低维护成本。看起来似乎有得有失,但实际上,假设你花费 1 单位脑力使用基础的 TS 以及简单的类型编程,你就能够获得 5 个单位的回馈。但接下来,有可能你花费 10 个单位脑力,也只能再获得 2 个单位的回馈 另外一个类型编程不受重视的原因则是实际业务...
hope statistics puppeteer 工具小结
PuppeteerPuppeteer 是 Google Chrome 团队官方的无界面(Headless)Chrome 工具。Chrome 作为浏览器市场的领头羊,Chrome Headless 将成为 web 应用 自动化测试 的行业标杆 Headless浏览器是指没有窗口的浏览器 用处通过 Puppeteer 我们可以让浏览器帮我们自动完成很多事情, 例如 : 生成页面的截图或者PDF 自动表单提交 (模拟登陆等),UI测试,键盘输入 创建自动化测试环境 具体API见官方文档 hope statistics puppeteer一个基于 puppeteer 和 node 编写的...
用 node.js 开发一个可交互的命令行应用
原生 node 用 process.argv 直接读取 process.stdin.on 劫持输入 readline 模块 进行逐行读取。该模块提供了一个接口,用于一次一行地读取可读流(例如 process.stdin)中的数据12345678910111213141516171819202122const app = require('./app')const readline = require('readline');const rl = readline.createInterface({ input: process.stdi...
《深入浅出Node.js》读书笔记
感受:这本书更偏向于讲 NodeJS 的大纲和原理。所以本笔记只讲原理和case,对于API不熟的请翻文档,或看小卡的笔记, 或看poetries的笔记 第一章 Node 简介Chrome 浏览器的组成和 Node 的组件组成 Node 的特点 异步 I/O。eg. Ajax, fs.readFile 等,Node 中绝大数的操作都以异步的方式进行调用 事件与回调函数。将前端中广泛成熟点时间机制引入后端,配合 IO 使用,eg. 监听 request 事件,然后执行回调函数 单线程。保留了 JS 在浏览器中单线程的特点 优点:不用在意状态的同步问题,没有死锁的存在,也没有上下...
按需加载 & 样式自动加载 —— babel-plugin-import
几乎完全转自 一篇文章搞定 babel-plugin-import 插件 ,可以理解为 读后 & 自己敲一遍 的笔记,建议直接读原文章 Background我们用 element-ui 或 antd 的时候,样式都支持全局引入和按需引入。按需引入需要安装一个 babel-plugin-import 的插件,将全局的写法变成按需引入的写法。其实也是用了AST语法树转换的原理,实现 1234import { Button } from 'antd'; ↓ ↓ ↓ ↓ ↓ ↓var _button = require('ant...
AST详解
TODO:还有这篇 字节分享几乎完全转自 AST 团队分享 ,可以理解为 读后 & 自己敲一遍 的笔记 What & Why What: 抽象语法树(Abstract Syntax Tree,简称 AST)是源代码的抽象语法结构的树状表现形式 Why: webpack、eslint 等很多工具库的核心都是通过抽象语法树来实现对代码的检查、分析等操作 浏览器就是通过将 js 代码转化为抽象语法树来进行下一步的分析等其他操作,所以将 js 转化为抽象语法树更利于程序的分析 一个简单的例子: 首先一段代码转换成的抽象语法树是一个对象,该对象会有一个顶级的 type 属性 P...
渲染方案
长列表 / 无限下拉列表 渲染考虑到性能,我们不可能将一个长列表(甚至是一个无限下拉列表)的所有列表元素都进行渲染,应该是只渲染部分数据并随着下拉渲染新数据 方案一:Intersection Observer + padding该方案来自云音乐-一个简洁、有趣的无限下拉方案 Intersection Observer详见MDN,建议全都读完 一直以来,检测元素的可视状态或者两个元素的相对可视状态都不是件容易事。传统的各种方案不但复杂,而且性能成本很高,比如需要监听滚动事件,然后查询 DOM , 获取元素高度、位置,计算距离视窗高度等等。 这就是 Intersection Obs...
哈希表 & 哈希算法
定义哈希表 (散列表)在线性表中,所有的数据都是顺序存储,当我们需要在线性表中查找某一数据时,当线性表过长,需要查找的数据排序比较靠后的话,就需要花费大量的时间,导致查找性能较差 所以我们可以把数据存在哈希表中,通过 key 去拿到数据。这个过程可以描述为: 拿到key(关键字) > 关键字通过散列函数(哈希函数)计算出来的值则称为散列值(哈希值、Hash 值) > 过散列值到**散列表(哈希表、Hash 表)**中就可以获取检索值 如下图: 所以我们需要存的信息有:key,散列函数,散列表信息。所以,散列表是一种空间换时间的存储结构,是在算法中提升效率的一种比较常用的方...
React - Hook
本文大部分来自ConardLi 的 blog,建议直接看原博客 What & Why使用 Hooks,你可以在将含有 state 的逻辑从组件中抽象出来,这将可以让这些逻辑容易被测试。同时,Hooks 可以帮助你在不重写组件结构的情况下复用这些逻辑。所以,它也可以作为一种实现状态逻辑复用的方案解决了 HOC 嵌套地狱的问题,使得逻辑复用更加清晰 State HookuseState 是一个钩子,他可以为函数式组件增加一些状态,并且提供改变这些状态的函数,同时它接收一个参数,这个参数作为状态的默认值 Effect HookEffect Hook 可以让你在函数组件中执行一些具有 s...
avatar
Jacleklm
witness me