自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雨的印记的博客

记录自己学习心得

  • 博客(123)
  • 收藏
  • 关注

原创 构造函数和原型(结合例子,详细!)

构造函数和原型1.1 概述在典型的OOP的语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS中并没有引入类的概念。ES6,全称ECMAScript 6.0,2015年6月发版。但是目前浏览器的JavaScript是ES5版本,大多数高版本的浏览器也支持ES6,不过只实现了ES6的部分功能和特性。在ES6之前,对象不是基于类创建的,而是用一种称为构建函数的特殊函数来定义对象和它们的特性。创建对象可以通过以下三种方式:1. 对象字面量2. new Obj

2020-09-01 14:05:11 1471 3

原创 将jupyter下的文件全部压缩成一个压缩包

import osimport tarfiledef recursive_files(dir_name='.', ignore=None): for dir_name,subdirs,files in os.walk(dir_name): if ignore and os.path.basename(dir_name) in ignore: continue for file_name in files: if

2021-12-09 11:51:39 852

原创 文本分类之textCNN的原理

文本分类算法 textCNN

2021-11-19 21:05:14 782

原创 conda的使用

conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理和环境管理。包管理与pip的使用方法类似,环境管理则是允许用户方便滴安装不同版本的python环境并在不同环境之间快速地切换。conda的设计理念conda将几乎所有的工具、第三方包都当作package进行管理,甚至包括python 和conda自身。Anaconda是一个打包的集合,里面预装好了conda、某个版本的python、各种packages等。安装Anaconda。打开命令行输入conda -V检验是否安装及当前co

2021-10-23 18:26:07 412

原创 组合问题(回溯法)

/** 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] */function getUnion(n, k) { let res = [] let path = [] function backtracing(n, k, startIndex) { if .

2021-10-03 14:18:53 308

原创 二分搜索各种情况总结

1. 基本的二分搜索(递归实现)问题:查找目标元素,存在返回索引,不存在返回 -1let array = [1,2,3,4,5,6,7] target = 3搜索范围:[ l, r ]递归的终止条件:l > r递归代码:function BinarySearch(arr, l, r, target) { if (l > r) return -1 // 递归的终止条件 let mid = Math.floor(l + (r - l) / 2)

2021-09-19 22:50:36 102

原创 第十讲:实现 js 的各种排序算法

我们上一讲学习了数组扁平化的相关知识,那么这一讲的内容和之前相比,较为独立,要说的是数组排序那些事儿。数组排序是你在 JavaScript 的编程过程中经常会遇到的,也是大厂面试中会考察的,尤其是调用 sort 方法,不过今天我们主要围绕数据结构排队进行讲解,关于 sort 方法的详细剖析我会在下一讲和你探讨。那么,为了方便你更好地理解本讲的内容,在课程开始前请你先思考几个问题。数据结构中稳定的排序算法有哪些?不稳定的排序算法有哪些?时间复杂度和空间复杂度分别代表了什么?带着这样的思考,我们开始今天

2021-09-17 16:20:04 171

原创 第八讲:类数组

我在上一讲带你梳理了数组那令人眼花缭乱的各种方法,其实 JS 中一直存在一种类数组的对象,它们不能直接调用数组的方法,但是又和数组比较类似,在某些特定的编程场景中会出现,这会让很多 JS 的初学者比较困惑。那么通过本讲的学习,希望你能更好地去理解类数组原理,以及类数组的转换。我们先来看看在 JavaScript 中有哪些情况下的对象是类数组呢?主要有以下几种:函数里面的参数对象 arguments;用 getElementsByTagName/ClassName/Name 获得的 HTMLCollec

2021-09-17 16:15:23 4478

原创 88. 合并两个有序数组

var merge = function (nums1, m, nums2, n) { // 定义三个指针 let [p1, p2, k] = [m - 1, n - 1, m + n - 1]; // 当p1或p2指向有值 while (p1 >= 0 || p2 >= 0) { if (p1 < 0) { // 如果p1已经移出 // 将p2的位置赋值给nums1相应位置

2021-09-16 20:37:28 81

原创 第七讲:数组 api

Array.from : 只要一个对象对迭代器, 就可以通过 Array.from 变成数组欢迎来到第二个模块“深入数组篇”的学习。JavaScript 数组的 API 经常会被 JS 开发者频繁使用,在整个 JavaScript 的学习过程中尤为重要。数组作为一个最基础的一维数据结构,在各种编程语言中都充当着至关重要的角色,你很难想象没有数组的编程语言会是什么模样。特别是 JavaScript,它天生的灵活性,又进一步发...

2021-09-15 20:57:52 198

原创 第六讲:JSON.stringify 方法

我在上一讲为你剖析了闭包这个难点,带你了解了作用域、闭包产生的原因及表现形式。那么这一讲,我们一起来手工实现一个JSON.stringify 的方法。这个方法能够站在全局考察你对 JS 各种数据类型理解的深度,对各种极端的边界情况处理能力,以及 JS 的编码能力。之所以将这篇作为这一模块的进阶,是因为我想把整个数据类型的知识点串起来,让你理解得更加融会贯通,能够更上一层楼。在大厂的前端面试过程中,这个题目也经常会被问到。大部分候选人只知道这个方法的作用,而如果让他自...

2021-09-15 20:52:18 1932

原创 第九讲:数组扁平化

我在前两讲给你介绍了类数组的相关知识,那么这一讲会结合之前的内容,来聊聊数组相关的应用——如何实现数组扁平化。数组扁平化在一些多维数组的应用场景中会出现,我将围绕 6 种方式来带你实现它。此外,关于数组除了扁平化也有其他问题,比如数组去重等,也是面试中经常会问到的。本讲的目的是将扁平化作为一个切入点,这种思路对于你解决其他类似的问题也是一个很好的启发。按照惯例,在课程开始前请你先思考几个问题:怎样用最普通的方法解决数组扁平化问题?ES6 里面是否有一些高级的方法能够直接实现?下面开始说说什么是数组

2021-09-15 20:46:24 304 1

原创 千分位逗号隔开(手写js)

/* * @Description: * @Autor: zhangbing * @Date: 2021-09-15 12:58:43 * @LastEditors: zhangbing * @LastEditTime: 2021-09-15 13:28:27 */function numFormat(num) { let numArr = num.toString().split('.') let newArr = [] // 整数部分 let numStr = numA

2021-09-15 13:28:47 235

原创 第四讲:new apply call

我在上一讲介绍了继承的概念,同时你也可以看到,其中综合使用了 new、apply 以及 call 的方法,那么这一讲我们就围绕这几个方法进行更深入的讲解,以便于你清楚这几个核心方法的实现思路,更好地去理解继承的原理。JavaScript 中的 apply、call 和 bind 方法是前端代码开发中相当重要的概念,并且与 this 的指向密切相关。很多人对它们的理解还比较浅显,如果你想拥有扎实的 JavaScript 编程基础,那么必须要了解这些基础常...

2021-09-15 10:00:51 111

原创 第五讲:闭包与作用区域

我们上一讲介绍了 call、apply、bind 等方法的实现,而在这一讲中我将会带你一起剖析闭包这个难点。JavaScript 中的闭包是相当重要的概念,并且与作用域相关知识的指向密切相关,在大厂的前端面试过程中经常会被提及。因此希望通过这一讲的学习,你能够彻底掌握它。按照惯例,在课程开始前请你先思考几个问题。JavaScript 中的作用域是什么意思?闭包会在哪些场景中使用?通过定时器循环输出自增的数字通过 JS 的代码如何实现?在讲闭...

2021-09-15 10:00:35 268

原创 第三讲:js继承的6种方式

构造函数继承(借助 call):不能继承父类原型上的属性和方法只能继承父类实例上的属性和方法但可以看到 parent3 执行了两次,第一次是改变child3 的原型是时候,第二次是通过 call 调用 parent 3 的时候。parent3 多构造一次就多进行了一次性能开销,这是我们不希望看到的。可以看到多个继承的对象存在共享一个引用(person4.friends 和 person5.friends)的情况,存在可能篡改的问题,因此还是有一些问题的。...

2021-09-14 22:10:50 588

原创 第二讲:深浅拷贝

02 | 代码基本功测试(下):如何实现一个深浅拷贝?上一讲我们介绍了 JS 的两种数据类型,分别是基础数据类型和引用数据类型,你可以回忆一下我提到的重点内容。那么这一讲要聊的浅拷贝和深拷贝,其实就是围绕着这两种数据类型展开的。我把深浅拷贝单独作为一讲来专门讲解,是因为在 JavaScript 的编程中经常需要对数据进行复制,什么时候用深拷贝、什么时候用浅拷贝,是开发过程中需要思考的;同时深浅拷贝也是前端面试中比较高频的题目。但是我在面试候

2021-09-14 22:04:32 924

原创 第一讲:javascript 核心

返回类型:在第一讲我要为你介绍的是 JS 数据类型的相关知识。作为 JavaScript 的入门级知识点,JS 数据类型在整个 JavaScript 的学习过程中其实尤为重要。因为在 JavaScript 编程中,我们经常会遇到边界数据类型条件判断问题,很多代码只有在某种特定的数据类型下,才能可靠地执行。尤其在大厂面试中,经常需要你现场手写代码,因此你很有必要提前考虑好数据类型的边界判断问题,并在你的 JavaScript 逻辑编写前进行前置判断...

2021-09-14 21:52:46 135

原创 Vue3.0笔记

语言类型静态语言类型动态语言类型(编译阶段才能确定变量类型)为什么需要 Typescript程序更容易理解效率更高更少的错误vue3性能优化:Composition API(组合式API)大型项目的代码难以维护,复用逻辑不太方便ref 和 reactivecomputed 和 watch新的生命周期自定义函数 Hooks函数其他新增特性:更好的 TypeScript 支持为什么要有vue3Vue2 遇..

2021-09-14 21:35:29 238

原创 前端性能优化-服务端和网络优化-极客时间

前端性能优化目录前端性能优化第六章:服务端和网络优化6.1 CDN——如何合理配置CDN缓存6.2 DNS——主流的DNS优化方法有哪些?6.3 HTTP:如何减少 HTTP 请求6.4 Cookie—— 减少 Cookie 大小的策略和益处6.5 服务器——缓存配置和优化方案6.5 服务器——如何开启 Gzip 压缩6.6 HTTPS—— 如何开启全站 HTTPS6.7 HTTP2 —— 升级 HTTP2 的好处有哪些?第七章:流程优化7.1 前端研发流程7.2 协作模式——前后端如何高效开展更高效的合

2021-09-14 19:52:21 189

原创 前端性能优化-接口优化-极客时间

前端性能优化第四章:接口优化4.1 接口优化——如何对接口调用进行优化接口同步到 cdn 集群,同时本地服务器也会有备份,提升性能4.2 接口优化——如何对接口缓存进行优化

2021-09-14 19:32:59 596

原创 前端性能优化-APP原生性能优化-极客时间

前端性能优化目录前端性能优化第五章:WebView(APP 原生性能优化)5.1 WebView —— 如何选择合适的 WebView 内核5.2 浏览器优化:如何设置全局 WebView5.3 浏览器优化——如何进行导航栏预加载5.4 浏览器优化——如何打通登录态5.5 浏览器优化——如何实现 URL 预加载5.6 浏览器优化——如何提升滚动条的使用体验5.7 浏览器优化——如何对 JS—SDK 进行优化5.8 浏览器优化——目前主流的缓存策略有哪些5.9 HTML5 离线:主流的技术实现方案有哪些5.

2021-09-14 19:28:09 578

原创 前端性能优化-渲染优化-极客时间

前端性能优化第三章:渲染优化3.1 浏览器渲染——你是否清楚浏览器的渲染过程3.2 页面渲染——主流的页面渲染技术架构和方案有哪些?3.3 后端同步渲染—— JSP 是如何同步渲染出页面的3.4 页面静态化:动态页面静态化如何实现?3.5 前后端分离——如何正确理解和实现前后端分离不利于 SEO,搜索引擎更喜欢静态页面3.6 单页面应用—— 什么情况下该选择单页面应用缺点:首次页面加载事件长SEO 难度比较大(SSR SEO好做一些)不需要

2021-09-14 19:09:48 264

原创 前端性能优化-静态资源优化-极客时间

系统性学习前端性能优化目录系统性学习前端性能优化第二章 静态资源优化2.1 图片格式和应用场景介绍2.2 图片优化——怎样让图片加载的更快2.3 图片优化——在服务端进行图片自动优化的原理2.4 HTML 优化2.5 CSS 优化2.6 js 优化2.7 如何对 js 缓存进行优化2.8 JavaScript:如何选择合适的模块化加载方案2.9 怎样才能减少浏览器的回流和重绘2.10 DOM编程优化:怎样控制DOM大小并减少DOM操作2.11 静态文件:有哪些常见的压缩工具2.12 静态文件:怎样打包才算

2021-09-14 14:57:40 374

原创 对称加密_非对称加密_数字签名_证书_HTTPS

HTTPS这里写目录标题HTTPS一. HTTP协议的安全问题:1. 对称加密1.1 对称加密的秘钥配送问题:2. 非对称加密2.1 公钥私钥2.2 如何解决秘钥配送问题2.3 解决非对称密钥配送问题:2.4 混合密码系统(结合两者的优点,这也是TLS所使用的方法)2.4.1 混合密码——加密、解密3. 数字签名3.1 如何保证消息的完整性:——引出数字签名3.2 数字签名的2种行为:生成签名和验证签名3.3 数字签名的过程3.4 数字签名——过程改进3.5 非对称加密——公钥私钥再总结:4. 证书——

2021-09-14 14:52:51 325

原创 二叉树的前中后序遍历

/* * @Description: * @Autor: zhangbing * @Date: 2021-09-03 17:17:44 * @LastEditors: zhangbing * @LastEditTime: 2021-09-03 19:17:12 */let tree = { val: 5, left: { val: 2, left: { val: 1, left: null, right: null },

2021-09-03 19:22:35 62

原创 前端性能优化原理与实践

文章目录前言性能优化概况webpack性能调优webpack性能瓶颈webpack优化方案webpack 的 Gzip 和服务端的 Gzip图片优化(质量与性能)二进制位数与色彩的关系JPEG/JPGPNG-8 与 PNG-24SVGBase64WebP浏览器缓存机制与缓存策略前言memory cacheService Worker CacheHTTP CachePush Cache本地存储——Cookie、Web Storage、Index

2021-09-01 20:02:29 737

原创 执行上下文

JS 执行上下文先看个小例子function fn(){ console.log(a);//undefined; var a = 1;}fn();为什么打印出来的是 undefined 呢?执行上下文概念当代码运行时,会产生一个对应的执行环境,在这个环境中,所有变量会被事先提出来(变量提升),有的直接赋值,有的为默认值 undefined,代码从上往下开始执行,就叫做执行上下文。在 JavaScript 的世界里,运行环境有三种,分别是:1.全局环境:代码首先进入

2021-08-31 13:35:05 81

原创 前端性能优化

优化

2021-08-30 16:48:54 65

原创 2021-08-26

数据结构体系课笔记

2021-08-26 10:49:28 43

原创 模块化学习笔记

模块化

2021-08-12 09:57:46 90

原创 Cookie,Session,Token【Codewhy NodeJS学习笔记】

笔记

2021-08-11 15:25:48 152

原创 MySQL 笔记

coderwhy nodejs MySQL

2021-08-11 15:08:12 68

原创 数组扁平化

/* * @Description: * @Autor: zhangbing * @Date: 2021-08-03 13:39:31 * @LastEditors: zhangbing * @LastEditTime: 2021-08-03 15:24:23 *//** * 方法一: 利用递归 */function myFlatten(arr) { let result = [] for (let i in arr) { if (Array.isArray(arr

2021-08-06 12:09:34 53

原创 函数柯里化

/* * @Description: * @Autor: zhangbing * @Date: 2021-08-05 17:28:54 * @LastEditors: zhangbing * @LastEditTime: 2021-08-06 12:05:15 *//** * * @param {*} fn 柯里化绑定的函数 * @param {*} length fn函数形参的个数 * @returns 返回一个新的函数或者执行结果 */ function curryin

2021-08-06 12:07:24 57

原创 面试的一些小问题

一. 0.1 + 0.2 != 0.3 的小数精度问题0.1 + 0.2 != 0.3 的小数精度问题.。这是因为ECMAScript 中的 Number 类型遵循 IEEE 754 标准,使用 64 位固定长度来表示。IEEE 754标准符号位:1位指数位:11位尾数位:52位0.1 和 0.2 用二进制表示的话一般是无限循环的二进制数,相加后后面会截取一部分,并不是完整的相加结果,所以精度会丢失。二. Symbol 的特性独一无二原始类型不可枚举let sym1

2021-08-05 20:42:51 79

原创 React性能优化之shouldComponentUpdate、PureComponent和React.memo

React性能优化之shouldComponentUpdate、PureComponent和React.memo前言最近一直在学习关于React方面的知识,并有幸正好得到一个机会将其用在了实际的项目中。所以我打算以博客的形式,将我在学习和开发(React)过程中遇到的问题记录下来。这两天遇到了关于组件不必要的重复渲染问题,看了很多遍官方文档以及网上各位大大们的介绍,下面我会通过一些demo结合自己的理解进行汇总,并以此作为学习React的第一篇笔记(自己学习,什么都好,就是费头发…)。本文主要介绍以

2021-07-04 14:20:44 732 2

原创 Git 修改已提交的commit注释

Git 修改已提交的commit注释两种情况:1.已经将代码push到远程仓库2.还没将代码push到远程仓库,还在本地的仓库中这两种情况下的修改大体相同,只是第一种情况最后会多一步下面来说怎么修改先搞清楚你要修改哪次的提交注释或者哪几次的提交注释修改最后一次注释如果你只想修改最后一次注释(就是最新的一次提交),那好办:git commit --amend出现有注释的界面(你的注释应该显示在第一行), 输入i进入修改模式,修改好注释后,按Esc键 退出编辑模式,输入:wq保.

2021-05-20 11:05:32 159

原创 组件参数校验与非props属性

组件参数校验与非props属性一、组件的参数校验子组件如何对组件进行约束父组件通过属性的方式对子组件传递内容数据,而子组件通过props的方式对数据进行接收,这时,子组件可以组件中的props传参的规则,设定属性的数据类型:单一数据类型的参数校验如: 指定content必须为字符串 <div id="app"> <child content="hello world"></child> </div&g

2021-04-30 16:08:56 97 1

转载 React 的一些拓展

1. setStatesetState更新状态的2种写法 (1). setState(stateChange, [callback])------对象式的setState 1.stateChange为状态改变对象(该对象可以体现出状态的更改) 2.callback是可选的回调函数, 它在状态更新完毕、界面也更新后(render调用后)才被调用 (2). setState(updater, [callback])------函数式的setSta

2021-04-05 16:38:40 105

空空如也

空空如也

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

TA关注的人

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