自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张驰Terry

汗水浇灌灵感,千里之行始于足下

  • 博客(68)
  • 资源 (9)
  • 收藏
  • 关注

原创 SQLite的13个使用场景

SQLite和C/S SQL数据库引擎没有直接的可比性,这些数据库引擎包括MySQL, Oracle, PostgreSQL, 或者 SQL Server,因为SQLite试图解决另外一个问题。C/S SQL数据库引擎实现企业级数据共享,他们强调数据的可伸缩性,并发性,中心性和控制性;SQLite 为独立应用和设备提供本地化存储,它强调资源节约,高性能,可靠性,独立性和易用性。SQLite不和C/S数据库引擎竞争,它的竞争对象是fopen()(Linux中打开文件的函数)![http://man..

2021-03-31 11:37:54 35

原创 什么是泳道

背景微服务框架下服务个数多、调用链路较长,其中一个服务出问题会影响到整条链路。但QA提测往往需要该条链路上的多个服务配套测试,甚至是同时测试一个服务的多个演进版本。提供稳定环境 和 多服务/多版本同时测试 看似相悖的需求,通过泳道“Swimlane”能够得到解决。测试过程中会遇到的问题关于一个服务上的多个需求的同时测试,存在服务抢占分支测试的问题; 不同的业务组在测试时依赖的第三方服务有改动或正在进行新需求测试影响本业务测试。微服务框架下服务个数多、调用链路较长,其中一个服务出问题会影响

2021-03-31 11:37:22 77

原创 在第三方页面如果注入jquery调试

在 Chrome 浏览器安装 扩展 jQuery Injector调试页面前设置在页面中加载jQuery

2021-03-31 11:36:44 16

原创 ES6 Proxy 性能之我见

本文翻译自https://thecodebarbarian.com/thoughts-on-es6-proxies-performanceProxy是ES6的一个强力功能,它通过为get/set一个属性 设置"陷阱"(函数处理器)让我们可以拦截对于对象属性的操作。比如:const obj = {};const proxy = new Proxy(obj, { get: () => { console.log('hi'); }});obj.a; // "hi".

2021-03-31 11:35:45 35

原创 npm 卸载模块

npm uninstall -g xxx 卸载全局模块xxxnpm uninstall -g node-gyp

2021-03-31 11:07:06 23

原创 url中#(hash)的含义

url中#(hash)的含义hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)1.“#”代表网页中的一个位置。其右面的字符,就是该位置的标识符比如:<http://www.example.com/index.html#print>就代表网页index.html的print位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。(单页应用)为网页位置指定标识符,有两个方法。一是使用锚点,比如<aname=.

2021-03-31 11:05:41 23

原创 peerDependencies的具体作用

peerDependencies的目的是提示宿主环境去安装满足插件peerDependencies所指定依赖的包,然后在插件import或者require所依赖的包的时候,永远都是引用宿主环境统一安装的npm包,最终解决插件与所依赖包不一致的问题。...

2021-03-31 11:05:11 36

原创 mac 安装 Iterm2的乱码问题如何解决

访问 https://www.nerdfonts.com/font-downloads ,然后下载 Nerd Font 字体,解压后,将内容放入~/Library/Fonts目录然后修改 Iterm2字体为 Nerd Font 即可

2021-03-31 11:02:50 27

原创 执行 brew install 命令长时间卡在 Updating Homebrew 的解决方法

~ brew install composerUpdating Homebrew... ## 如果碰到长时间卡在这里按住 control + c 之后命令行会显示^C,就代表已经取消了 Updating Homebrew 操作大概不到 1 秒钟之后就会去执行我们真正需要的安装操作了...

2021-03-31 11:02:12 14

原创 Structure of a Google Docs document 谷歌文档的结构

本文由 @张驰 翻译,更新时间:2020-02-16https://developers.google.com/docs/api/concepts/structure谷歌文档的结构本指南解释了 Google Docs 文档的内部结构:组成文档的元素以及这些元素之间的关系。顶级元素文档的顶级元素包括正文和文档的许多其他属性作为一个整体:document: { body: ... , // 文档正文内容 documentStyle: ... , //文档样式 l

2021-03-24 14:44:11 1202 4

原创 WebAssembly 实践:如何写代码

本文不讨论 WebAssembly 的发展,只是一步一步地教你怎么写 WebAssembly 的各种 demo。文中给出的例子我都放在 GitHub 中了(仓库地址),包含了编译脚本和编译好的可执行文件,只需再有一个支持 WebAssembly 的浏览器就可以直接运行。配置开发调试环境安装编译工具略。参考官方Developer’s Guide和Advanced Tools,需要安装的工具有:Emscripten Binaryen WABT (WebAssembly Binary ...

2021-03-24 14:41:04 29

原创 WebAssembly让你的Javascript计算性能提升70%

现在的JavaScript代码要进行性能优化,通常使用一些常规手段,如:延迟执行、预处理、setTimeout等异步方式避免处理主线程,高大上一点的会使用WebWorker。即使对于WebWorker也仅仅是解决了阻塞主线程的问题,但是对于JavaScript计算性能慢的问题并没有解决。这里对一些需要密集计算的场景我给大家推荐一个神器——WebAssembly。在目前阶段,WebAssembly 适合大量密集计算、并且无需频繁与 JavaScript 及 DOM 进行数据通讯的场景。比如游戏渲染引擎、物理引

2021-03-24 14:40:27 26

原创 Webpack 下使用 web workers 及 基本原理 和 应用场景

阅读目录一:web workers的基本原理 二:web Workers 的基本用法 三:在webpack中配置 Web Workers 四:Web Worker的应用场景回到顶部一:web workers的基本原理我们都知道,我们的javascript采用的是单线程模型,所有的任务都在一个主线程中完成,一次只能执行一个任务,如果有多个任务需要被执行的话,那么后面的任务会依次排队等着,那么这种情况下,如果我们需要处理大量的计算逻辑的时候,那么就会比较耗时,那么用户界面就很有可能出现假死的

2021-03-24 14:39:55 119 3

原创 Web Worker 的内部构造以及 5 种你应当使用它的场景

这一次我们将剖析 Web Worker:对它进行简单概述后,我们将分别讨论不同类型的 Worker 以及它们内部组件的运作方法,同时也会以场景为例说明它们各自的优缺点。在文章的最后,我们将讲解最适合使用 Web Worker 的 5 个场景。我们在 之前的文章 中已经详尽地讨论了 JavaScript 的单线程运行机制,对此你应当已经了然于胸。然而,JavaScript 是允许开发者在单线程模型上书写异步代码的。异步编程的 “天花板”我们已经讨论过了 异步编程 的概念及其使用场景。异步编程通

2021-03-24 14:39:14 10

原创 如何在TypeScript中的window上显式设置新属性?

declare global { interface Window { MyNamespace: any; }}window.MyNamespace = window.MyNamespace || {};

2021-03-24 14:38:39 27

原创 如何指定某些目录配置忽略eslint?

创建 .eslintignore,并且设置内容src/xx/bbsrc/yy/cc

2021-03-24 14:37:37 108

原创 NUI是什么?

自然用户界面(英語:Natural user interface, NUI)是指一类无形的用户界面。“自然”一词是相对图形用户界面(GUI)而言的,GUI要求用户必须先学习软件开发者预先设置好的操作,而NUI则只需要人们以最自然的交流方式(如语言和文字)与机器互动[1]。直观的说,使用NUI的计算机不需要键盘或鼠标。...

2021-03-24 14:37:02 45

原创 Web应用优化 - 减少重复计算

典型场景:一堆非常需要耗时的数据,每次更新都需要重新计算,但是更新的频率并不高。使用缓存可以有效的减少计算和查找时间。1. 数据快照典型场景:Google Docs 文档后端返回的模型,优先利用快照Google Docs 文档服务器会根据某种策略,对 Google Docs 文档的用户操作变更集(changeset)合并后的结果进行一次快照,确保用户再次打开 Google Docs 文档时,优先使用快照内容,节省每次服务端实时合并变更集的耗时。2 缓存重复 dom api 调用结果

2021-03-20 14:28:14 49 2

原创 Web应用优化 - 压缩内容传输量

1. 选取合适的数据协议典型场景:打开 Google Docs 表格拉取后台数据,http 响应内容的序列化采用 Protobuf 协议。数据序列化:JavaScript 对象转为字节,将字节恢复为 JavaScript 对象,然后在网络间传输。常见的协议有 JSON/XML/Protobuf 等。对于一个庞大的 docs 表格,使用 JSON 或者 xml 格式进行数据传输,太过于冗余。{ "workbookConfig":[ [ { .

2021-03-20 14:27:40 101 3

原创 Web 应用优化 - 充分利用缓存

1. 借助于浏览器典型场景:Google Docs文档 → 发生断网 → 开启离线编辑Google Docs 文档在网络异常或服务异常的情况下,不会直接中断用户的编辑动作。对于特殊环境或者紧急情况下,用户体验友好。离线场景的持久化存储基于 indexedDB。indexedDB 可以针对大文件保存 Blob 数据,而 File 类是基于 Blob 的,所以本地附件离线持久化经过验证可行。localforage 对 indexedDB 进行了封装,提供了更加便利的 api,支持 Promise 调

2021-03-20 14:27:04 2057 7

原创 Web 应用优化 - 按需加载资源

1. 按需引入典型场景:Google Docs 中的正文内容中存在「代码块」 → 按需加载代码块关联的插件脚本。按需引入常常依赖于开发者的意识,经常被忽略,有时候开发者只需要用到 lodash 中的 isEqual 函数,但却将整个工具库都引入,例如编写了以下代码import { isEqual } from 'lodash'如果只需要单独导入,可以采用以下两种方式// 方式1import isEqual from 'lodash/isEqual'// 方式2imp...

2021-03-20 14:26:22 22

原创 Web应用优化 - 优化切页模式

1. 首页Google网盘打开模式优化SPA典型场景:Google Docs 空间列表 → 打开目录 → 打开云文件SPA是一种web应用程序或网站,它通过使用来自web服务器的新数据动态重写当前web页面来与用户交互,而不是浏览器加载整个新页面的默认方法。目标是更快的过渡,使网站感觉更像一个本地应用程序。2. 移动端切换容器优化典型场景:移动端 Google Docs 文档列表 → 打开单个 docs 文档在移动端 Google Docs App 中,文档列表,页面呈现是一个常驻的

2021-03-20 14:25:32 15

原创 Flutter的优势与劣势

对Flutter相关资料的阅读,根据各大厂(美团、头条、阿里等)的经验,总结如下:Flutter,本质上一套跨平台的UI框架,通过OpenGL这种跨平台的绘制库(内部会调用操作系统API)实现了一套代码跨多端。Framework底层是Flutter引擎,引擎全部使用C++实现,强大的引擎能力,提供高效的图形和文字绘制。所以Flutter主要做页面的跨端开发,当前情况下,开发一个成熟的跨端产品,并不能完全抛弃原生开发。优势:一套代码,多端运行,而且运行效率和流畅性介于原生和H5之间 掌握Fl

2021-03-20 14:19:54 1153 5

原创 Nginx开启gzip的配置

nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip压缩,该模块是默认基础的,不需要重新编译,直接开启即可。基本配置# 开启gzipgzip on;# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩gzip_min_length 1k;# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明gzip_comp_level 1;# 进行压缩的文件类型。javascript有多.

2021-03-20 14:19:23 3223 7

原创 如何实现一个简单好用的思维笔记工具

周末实现的一个简单好用的思维笔记项目,https://fancylife.github.io/z-mindnote

2021-03-20 14:16:59 14

原创 正向代理与反向代理的区别

「正向代理」指一对一或多对一,Server 不知道请求的 Client 都是哪些人反向代理恰好跟正向代理相反。同时反向代理一般是负载均衡的一个原理。按照上面所说,正向代理是一对一或多对一,那么反向代理就是一对多,画图说明:...

2021-03-20 14:16:18 12

原创 vite 构建,页面打开空白如何解决

比如部署页面最终部署在 https://fancylife.github.io/z-mindnote/ 下,就必须在vue-router 中配置以下代码,否则确实会打开白屏export default createRouter({ history: createWebHistory('/z-mindnote/'),//你的网站根目录地址 routes,});...

2021-03-20 14:15:09 331 1

原创 使用canvas判断用户是否安装字体

根据用户设置的字体将某一个字符绘制在canvas上(fillText()),并提取像素信息(getImageData()),然后和默认字体进行比对,如果像素不一致,说明字体生效,如果像素完全一致,说明字体不生效。var isSupportFontFamily = function (f) { if (typeof f != "string") { return false } var h = "Arial"; if (f.toLowerCase() ==

2021-03-17 10:46:45 18

原创 什么是ASM?

ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。ASM 能够通过改造既有类,直接生成需要的代码。增强的代码是硬编码在

2021-03-17 10:46:00 57

原创 什么是UI Path?

在了解UiPath之前, 我们首先应该了解RPA的概念.RPA(Robotic Process Automation)中文全称为机器人流程自动化, 以自动化软件作为虚拟劳动力,依据预先设定好的程序与现有系统进行交互,并完成预期的任务。通过RPA软件编写的“机器人”程序, 可以捕捉并模拟我们日常的键盘、鼠标操作等人机交互行为,它们可以完成识别、触发、通信、文本生成等任务,自动执行重复性的业务流程。RPA是目前最受欢迎的人工智能应用技术之一,因为它允许企业在原有业务系统之上进行业务流程自动化的部署,

2021-03-17 10:45:23 272

原创 什么是Excel宏?

什么是宏宏是一些储存了一系列命令的程序。当你创建一个宏命令的时候,你只是将一系列的键盘输入结合成一个简单的命令,你以后可以“回演”这个命令。因为宏命令可以减少复杂任务的步骤,使用宏命令可以显著得减少你花在创建,设置格式,修改和打印工作表的时间。你可以通过 Excel 内置的录制工具来创建宏命令,也可以在代码编辑器里面直接写代码。微软 Excel2002 电子表格具有强大的编程功能。技巧:普通语言Excel5 是市场上第一个使用 VBA 的软件。从那以后,VBA 开拓了在所有微软办公应用软件中的应

2021-03-17 10:44:43 44

原创 什么是RPA? Robotic Process Automation

RPA(机器人过程自动化)是一种根据预先设定的执行程序,通过模拟并增强人类与计算机的交互过程,执行基于一定规则的大批量、可重复性任务,实现工作流程自动化的软件。RPA并不是一个新兴概念,最早客追溯到上世纪50个年代初,其发展至今,经历了多个阶段。主要是使用屏幕抓取和其他技术(如:OCR、AI等)来创建可以自动执行任务的专用技术手段。RPA目前是最受欢迎的人工智能应用程序领域之一,因为它可在各种操作系统间自动化的完成工作流程。公司对RPA解决方案感到兴奋,因为:大多数大型非科技公司仍依赖.

2021-03-17 10:44:05 75

原创 如何实现一个简单好用的roadmap制作工具

周末实现的一个简单好用的roadmap制作工具,https://fancylife.github.io/z-roadmap/,开源给大家

2021-03-17 10:12:23 158

原创 Typescript 泛型

介绍软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。泛型之Hello World下面来创建第一个使用泛型的例子:identity函数。 这个函数会返回任何传入它的值。 你可以把这个函数当成是echo命令。不用泛型的话,这.

2021-03-15 11:38:48 14

原创 前端性能分析功能

作者:Mahdhi Rezvi译者:前端小智来源:blog.bitsrc最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。github 地址:https://github.com/qq44924588...我们可以编写一些漂亮,且吸引人的网站,但如果该网站无法快速加载到浏览器中,人们往往会跳过它。 尽管有许多性能规则,但归根结底,这全都取决于加载时间。根据Jakob Nielson说法,在网建的网站时,需要注意以下几点:..

2021-03-15 11:19:13 55

原创 如何实现一个sandbox?

qiankun 中沙箱的实现比较复杂,本章讲解 ProxySandbox 的实现方式。createSandbox 是在 loadApp 的时候执行的。返回值中包含 mount 和 unmount 两个函数,分别在微应用 mount 和 unmount 生命周期执行。`export function createSandbox(appName**:** string, elementGetter**:** () => HTMLElement | ShadowRoot, singular**:**

2021-03-15 11:18:22 119 1

原创 什么是函数的副作用——理解js编程中函数的副作用

什么是函数副作用?函数副作用是指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响。副作用的函数不仅仅只是返回了一个值,而且还做了其他的事情,比如:1、修改了一个变量2、直接修改数据结构3、设置一个对象的成员4、抛出一个异常或以一个错误终止5、打印到终端或读取用户输入6、读取或写入一个文件7、在屏幕上画图函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并且降低程序的可读性,严格的函数式语言要求函数必须无副作用。纯函数 ( Pure Function )

2021-03-15 11:17:45 86

原创 Typescript 类型推断

TypeScript 能根据一些简单的规则推断(检查)变量的类型,你可以通过实践,很快的了解它们。#定义变量变量的类型,由定义推断:`let foo = 123; // foo 是 'number' let bar = 'hello'; // bar 是 'string'foo = bar; // Error: 不能将 'string' 赋值给 `number``这是一个从右向左流动类型的示例。#函数返回类型返回类型能被return语句推断,如下所示,推断函数返回为一个数字:..

2021-03-15 11:17:10 14

原创 redux-saga 是什么?

前言在使用react redux的时候,会经常遇到需要处理异步action的情况。处理异步action的方法有几种。其中redux-thunk,redux-saga都是处理异步action的中间件。利用这些中间件可以很好的达到我们预期效果redux-sagaredux-saga是一个用于管理应用程序 Side Effect(副作用,例如异步获取数据,访问浏览器缓存等)的 library,它的目标是让副作用管理更容易,执行更高效,测试更简单,在处理故障时更容易。个人是这么理解redux-sag

2021-03-15 11:16:08 17

原创 快速生成gitignore文件

看到大家提交代码都比较随意,把一些本地的工程文件都提交到了git仓库中,这样会带来一个坏处,别的同事pull了你的代码,以后发现在自己本地环境跑不起来,因为工程文件中定义了一些工程路径,二进制包路径之类的配置。在线生成自己手写gitignore比较麻烦,我找了一个能自动生成gitignore文件的方式,https://gitignore.io/这个网站只有输入相关信息就能生成对于的.gitignore文件,基于上述文件,大部分情况下默认生成配置就够了。有特殊需求,再自己手动修改一下。在本地工程目

2021-03-15 11:15:17 31

阅读md文件的工具

md工具

2013-09-04

前端架构图-前端未来.png

前端架构图-前端未来.png

2021-01-08

kibana-5.3.1

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。 Kibana让我们理解大量数据变得很容易。它简单、基于浏览器的接口使你能快速创建和分享实时展现Elasticsearch查询变化的动态仪表盘。安装Kibana非常快,你可以在几分钟之内安装和开始探索你的Elasticsearch索引数据,不需要写任何代码,没有其他基础软件依赖。

2017-09-06

javascript高级编程

javascript高级编程

2012-11-28

apache-maven-3.5.0

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。

2017-09-06

elasticsearch-5.3.1.zip

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题以及可能出现的更多其它问题。

2017-09-06

Angular开发指南

Angular入门书籍,讲的很细,从Angular对dom的编译,数据的双向绑定,服务的注入等等都将的很细,推介大家看一看

2013-09-04

js高级程序设计

JavaScript高级程序设计(中文版 全书)

2012-11-28

java生成json对象

java生成json对象,这是封装好的jar包

2012-11-25

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除