自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 VSCode撸猫插件vscode-cats它来了,一起来云撸猫吧

前言大约两周以前,我写了一篇如何给 VSCode 和个人网站添加 live2d 喵咪的博客,没想到得到了众多大佬的喜爱,但大佬们想要简单快乐的撸猫,给VSCode和网站领养喵咪 一起快乐撸猫 实现撸猫有几分繁琐,用户体验性不佳。因此为了让众多大佬更舒服的撸猫,我将撸猫功能封装成 vscode-cats 插件,同时已经将 vscode-cats 0.0.1 成功发布在 VSCode 应用市场上。如果想下载插件,VSCode 扩展中直接搜索 vscode-cats 安装。?????????????????

2021-12-09 10:17:15 4300 13

原创 【面试利器】 原生JS灵魂拷问,你能答上多少(一)

前言目前的前端世界,三大框架横行,原生JavaScript所用越来越少。但我认为JavaScript作为每一个前端工程师的立身之本,学再多遍都不为过。因此我决定整理JavaScript中容易忽视或者混淆的知识点,写一系列文章,以灵魂追问的方式,系统且完整的带大家遨游不一样的JavaScript。JS类型之问——检测篇第一问:js中的数据类型有哪些?原始数据类型:共有7种Boolean Number String undefined null Bigint Symbol引用数据类型:1种

2021-10-16 16:49:16 3129 78

原创 ⭐2w字大章 38道面试题 让你彻底学会JavaScript的this指向问题⭐

前言当一个函数调用时,会创建一个执行上下文,这个上下文包括函数调用的一些信息(调用栈,传入参数,调用方式),this就指向这个执行上下文。this不是静态的,也并不是在编写的时候绑定的,而是在运行时绑定的。它的绑定和函数声明的位置没有关系,只取决于函数调用的方式。本篇文章有点长,涉及到很多道面试题,有难有简单,如果能耐心的通读一编,我相信以后this都不成问题。学习this之前,建议先学习以下知识:JavaScript之预编译JavaScript之手撕newJavaScript之手撕ca

2021-10-14 09:14:15 2989 91

原创 JavaScript之彻底理解原型与原型链

1.前言原型与原型链知识历来都是面试中考察的重点,说难不算太难,但要完全理解还是得下一定的功夫。先来看一道面试题开开胃口吧:function User() {}User.prototype.sayHello = function() {}var u1 = new User();var u2 = new User();console.log(u1.sayHello === u2.sayHello); console.log(User.prototype.constructor); consol

2021-10-09 11:12:57 2021 62

原创 重构云计算,打造 AI 原生时代的云计算产品与技术体系,实现 AI 零距离

自 ChatGPT 大模型横空出世以来,文心一言、通义千问等诸多大模型接踵而来,感觉这个世界每天都在发生着翻天覆地的变化。今年很有幸,参与了云栖的盛宴,当时被震惊到瞠目结舌,12 月 20 日百度云智能云智算大会,又给我一记重拳,这让我不由得开始重新评估 AI 与我们的距离,AIGC 的时代或许已经开始吹响冲锋的号角,而我们也应该做好充足的准备,迎接新的挑战。在此次百度智能云智算大会上,我细致的听了全程,受益匪浅,学习到很多先进的概念,例如云智一体、智算、数据"智"理、模型即服务等。

2023-12-23 09:59:13 2769

原创 剥茧抽丝,细数模块化的前世今生

近几年,时常会感叹,前端,发展的太迅猛了。日新月异的新概念,异彩纷呈的新思想泉水般涌出;前端项目的复杂度、开发成本、维护难度也在不断提升,前端三件套开发模式(HTML-CSS-JS)滞后于前端的进步,这要求我们需要以更高层次的眼光来重新审视前端——工程化。工程化是一个工学概念,其核心是结合实际建立科学的、规范的设计和生产流程,目的是**降本提效**。

2023-03-29 10:04:35 296 1

原创 还在为满意的渐变色发愁吗?10+个网站帮你轻松实现

前言????前端开发中,色彩的搭配非常重要,好的色彩设计会给网站增光添彩,让用户一看上去就感觉心情愉悦;坏的色彩~~~随着设计技术的进步,渐变颜色在色彩设计中越来越受欢迎,但想设计出满意的渐变色并不容易(切实体会,感觉自己设计的颜色真的丑的离谱)。前几天小包在使用 CSS 绘制口红时,迟迟就选不出合适的颜色,甚至小包一度对自己的审美产生了质疑,小包,你真是做前端的吗?最终小包也没能解决自身审美的问题,但小包会用搜索啊,互联网大法好,下面咱们来一起看看小包的书签存货加度娘的成果吧。如果大家有更好的

2021-12-20 08:45:35 1214 17

原创 vscode-cats插件是如何开发的?小包带你来实现一下

前言经过两个周的努力,昨天成功发布人生第一个插件 vscode-cats ,本文给大家介绍一下插件的开发过程,顺便也给自己做个记录。插件下载: VSCode 扩展中直接搜索 vscode-cats 即可。应用市场: vscode-catsgithub: vscode-cats如果能给 github 点个 star 就更完美了。最开始开发 vscode-cats 时,感觉真的是暗无天日、遥遥无期。首先文档全是英文,看起来还是有几分吃力;二就是这种插件的模式实现 VSCode 并不提倡,

2021-12-16 13:05:18 1007 11

原创 animation-delay负值妙用,你不来了解一下吗

????前言小包上一篇文章讲述如何实现随机不规则圆角头像时,其中一种方案通过妙用 animation-delay 负值和 paused 进行实现,这不由让我对 animation-delay 负值产生巨大兴趣,经过几天的学习,我发现 animation-delay 负值的独特特性带来的威力真是非同小可。学习本文章,你会学会:animation-delay 负值特性animation-delay 负值实现 bounce loading 效果animation-delay 负值实现 音浪 loadi

2021-12-14 15:31:25 1858 11

原创 2021年前端最新笔试百题

2021年前端最新笔试百题,题目来源牛客网在线试题,题目都是各大互联网大公司所出题目,质量可以保证,希望能帮到大家

2021-11-20 12:49:46 10690 16

原创 给VSCode和网站领养喵咪 一起快乐撸猫

前言本月技术征文,代码 “吸猫”,我构思了很久,没有想出特别好的创意,要不就是创意太大,技术水平不够无法实现。因此就开始翻各位大佬们的创意,希望能找到点方向。前天大佬 大帅老猿 使用 live2d 开发了一个 chrome 撸猫插件,还添加了喵语聊天功能。我观摩了大佬的博客好久,一是为大佬的创意点赞,二为大佬的技术点赞,太强了。晚上睡觉前,我就在想,光浏览器上有喵咪可不过瘾啊,如果能给我的网站和 Vscode 编辑器都添加上喵咪,那岂不是处处有喵咪,快乐加倍。说干就干,东查西看,终于成功实现了在 V

2021-11-13 11:25:30 2883 12

原创 【缅怀钱老】学习实现炫酷漂亮的火箭发射效果

缅怀钱学森钱老先生逝世十二周年。学习实现火箭发射效果:包括火箭主体部分绘制、火箭发射部分。内含源码。

2021-11-01 12:54:02 582 2

原创 你听说过摩尔投票法吗

前言前几天在刷力扣题目时,看官方题解发现的算法,我感觉这个算法非常有意思,是一个很好的思维开拓,因此我整理摩尔投票算法的一些知识,分享给大家。摩尔投票法博耶-摩尔多数投票算法( Boyer–Moore majority vote algorithm ),中文常作多数投票算法、摩尔投票算法等,是一种用来寻找一组元素中占多数元素的常数空间级时间复杂度算法。算法思想在集合中寻找可能存在的多数元素,这一元素在输入的序列重复出现并占到了序列元素的一半以上;在第一遍遍历之后应该再进行一个遍历以统计第一次算法遍

2021-10-28 09:57:56 440

原创 抓取牛客最新前端面试五百题 可视化分析前端面试热点

前言秋招感觉即将接近尾声了,今年的秋招可谓是风起云涌、锣鼓喧天、异彩纷呈(听说腾讯总包都40w+,流下羡慕的眼泪)。秋招期间,我特别喜欢在牛客上看各位大佬的面经、offer等,看的不亦乐乎,每天增加一个小幻想。前几天在看面经时,突然想到,有的题我见过很多次,有的题第一次见,现在虽说有八股文,但每年的面试行情应该都会有小的变化,要不来做个统计,粗略的估计一下今年面试市场的态势。说做就做,耗费了我好几个快乐游戏的夜晚,挨着面试题、面经的复制、去重,最后精挑细选出547道题目,其中笔试题200道,面试题3

2021-10-24 10:49:44 1119 8

原创 【面试利器】原生JS灵魂拷问,你能答上多少(三)

前言目前的前端世界,三大框架横行,原生JavaScript所用越来越少。但我认为JavaScript作为每一个前端工程师的立身之本,学再多遍都不为过。因此我决定整理JavaScript中容易忽视或者混淆的知识点,写一系列文章,以灵魂拷问的方式,系统且完整的带大家遨游基础的的JavaScript,给大家带来不一样的体验。系列文章链接:【面试利器】原生JS灵魂拷问,你能答上多少(一)【面试利器】原生JS灵魂拷问,你能答上多少(二)JavaScript数组之问第二十七问:那些数组方法会修改原数组

2021-10-22 21:12:38 868 5

原创 【面试利器】原生JS灵魂拷问,你能答上多少(二)

前言目前的前端世界,三大框架横行,原生JavaScript所用越来越少。但我认为JavaScript作为每一个前端工程师的立身之本,学再多遍都不为过。因此我决定整理JavaScript中容易忽视或者混淆的知识点,写一系列文章,以灵魂拷问的方式,系统且完整的带大家遨游基础的的JavaScript,给大家带来不一样的体验。系列文章链接:【面试利器】原生JS灵魂拷问,你能答上多少(一)JavaScript运算符之问第十六问 你知道||与&&的返回值规则吗?短路效应:&

2021-10-20 12:58:46 2452 26

原创 JavaScript之预编译学习(附带多个面试题)

前言在学习JavaScript预编译之前,先了解一下JavaScript从编译到执行的过程,大致分为四步:词法分析语法分析:检查代码是否存在错误,若有错误,引擎会抛出语法错误。同时会构建一颗抽象语法树(AST)。预编译解释执行预编译JavaScript是解释性语言,也就是说,编译一行,执行一行,但js并非上来就进入编译环节,它在编译之前存在预编译过程。js中预编译一般有两种:全局的预编译和函数的预编译,分别发生在script内代码执行前和函数的执行前。函数预编译首先来看一个例子:

2021-10-08 13:29:44 2433 57

原创 JavaScript之彻底学会Event Loop

前言学习JavaScript执行机制能更好的理解JavaScript的代码执行顺序,进而更好的理解JavaScript的异步模式。Event Loop即事件循环,是浏览器或Node解决单线程运行时不会阻塞的一种机制。(也可以理解为经常使用的异步)在正式学习Event Loop之前,先提出几个问题:什么是同步与异步?JavaScript是一门单线程语言,那如何实现异步?同步任务和异步任务的执行顺序如何?异步任务是否存在优先级?同步与异步计算机领域中的同步与异步和我们现实社会的同步和异

2021-10-05 21:17:02 2238 61

原创 JavaScript之手撕new

前言什么是new呢?new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。光看定义还是有几分晦涩,直接看一个具体的例子,来了解一下JavaScript中的new实现的功能。举个例子// 现实中瘦不了,但网络中一定要保持苗条function Thin_User(name, age) { this.name = name; this.age = age;}Thin_User.prototype.eatToMuch = function () {

2021-10-04 22:04:26 2765 18

原创 JavaScript之手撕call、apply

前言call/apply的核心理念就是借用方法。这话乍一听上去,感觉有点云里雾里。讲一个生活中的实例来描述一下:老邓和老王是邻居,老邓家有火锅,老王家有烧烤架。老王家很少吃火锅,但突然有一天想吃火锅,他就可以去老邓家借用火锅,这样老王家不仅吃上了火锅,还没花买锅的钱。同样如果有一天老邓家想吃烧烤,便可以去老王家借烧烤架。call/apply做的便是类似的事,A对象上实现了一个方法,B对象由于一些需求,也需要调用同样的方法,最好的方法肯定是B直接去调用A对象的方法,自身无需扩展。基本介绍语法:f

2021-10-02 21:50:02 1919 25

原创 JavaScript之手撕常用数组高阶函数

前言JavaScript中提供了一些高阶函数,例如map、filter、every等,还有ES6新提供的find等,熟练使用后能提高编写代码的效率。下面就一起来学习一下这些高阶函数,并使用原生JS模拟实现。那么什么样的函数是高阶函数那?至少满足下列一个条件的函数:接受一个函数或者多个函数作为参数输出一个函数JavaScript中的高阶函数大多都是接受一个函数作为参数,具体传参如下:Array.prototype.func = function(callback(currentValue[,

2021-09-27 21:37:45 897 5

原创 力扣:583. 两个字符串的删除操作

题源: 583. 两个字符串的删除操作本题要求经过删除之后两个字符串相等,求解最少的操作次数。根据贪心思想,最后剩余的字符串越长,删除操作越少。那么该题也就转化成了求两个字符串的最大公共子序列长度即可。最长公共子序列的递推公式:具体代码:def minDistance(word1, word2): n, m = len(word1), len(word2) # dp = [[0] * (m + 1) for _ in range(n + 1)] dp = [[0 for _

2021-09-25 11:31:41 144

原创 JavaScript之作用域链

1.前言在文章的最开始,先简要的介绍一下关于作用域的几个概念,作用域相关的知识可以参考词法作用域与动态作用域[[scope]]: 每个函数在创建时,都会有一个隐藏属性[[scope]],它指向创建该函数时的AO。VO变量对象:也可称作AO,存储函数中所需要的变量、参数、函数等数据,VO中包含一个额外的属性,该属性指向创建该VO的函数本身。作用域链::[[scope]]中所存储的执行期上下文对象的集合,这个集合呈链式链接,这种链式链接叫做作用域链。查找变量:在那个函数里面查找变量,就从那个函数的作

2021-09-23 19:50:59 2608

原创 力扣:725 分隔链表

题源: 分隔链表算法流程:遍历链表,求出链表长度listLenlistLen除以k得到平均长度splitLen和余数remainder。题目要求每部分的长度应该尽可能的相等:前面的部分的长度应该大于或等于后面的长度因此remainder应当在前remainder上平均分配举个例子:root = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], k = 3,len = 11, k = 3,splitLen, remainder = 11 // 3, 11 %

2021-09-22 09:06:25 117

原创 力扣:673. 最长递增子序列的个数

题源:最长递增子序列的个数做这个题之前可以顺路复习一下LIS最长递增子序列问题。1. LIS题源:最长递增子序列最长递增子序列有两种做法;O(n2)的动态规划和O(nlogn)的贪心+二分。1.1 动态规划定义dp[i]为以第i个元素为结尾的最长上升子序列长度,其中num[i]必须被选择,那么状态转移方程为(dp初始化值为1):dp[i] = max(dp[j]) + 1; j < i, num[i] > num[j]def findNumberOfLIS(nums):

2021-09-21 21:02:53 150

原创 力扣每日一题:650 只有两个键的键盘

题源:只有两个键的键盘初读这个题,感觉就应该是动态规划,但是找不出状态转移方程,当看到题解之后还是感到非常遗憾,就差一点点。1. 思路与想法题目中只有两种操作,copy和paste,其中copy必须拷贝当前的所有内容,最终得出n个A所需操作的最小次数。最小次数,copy全部,这两个在一开始就给予了我贪心的感觉,对于n个A来说,它期望的上一次操作是n/2处整体复制粘贴过来,n/2是n/4…依次类推,就可以得到最小的次数。但很快我发现了上述思想的漏洞,举个例子,如果此时的n是15,那就没法通过n/2-&

2021-09-19 20:37:31 173

原创 JavaScript静态作用域与动态作用域

概述在文章最开始,先学习几个概念:作用域:《你不知道的js》中指出,作用域是一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找。简单来说,作用域规定了如何查找变量。静态作用域:又称词法作用域,是指作用域在此法阶段就被确定了,不会改变。动态作用域:函数的作用域在函数调用时才决定的。静态作用域与动态作用域JavaScript采用的是词法作用域,函数定义的位置就决定了函数的作用域。具体看一个例子:var val = 1;function test()

2021-09-14 21:29:14 1565

原创 leetcode刷题记录——二分简单题

35. 搜索插入位置题源:搜索插入位置刷题时间:20210908二分查找的典型题,查找target元素,若查到返回索引,查不到返回插入位置索引。也就是返回第一个大于或等于target的位置。def searchInsert(nums, target): left, right = 0, len(nums) while left < right: m = left + (right - left) // 2 # 防止越界 if nums[m] &

2021-09-14 20:38:28 107

原创 JavaScript预编译学习

JavaScript 预编译在重新学习JavaScript之前,先了解一下JavaScript从编译到执行的过程,大致分为四步:词法分析语法分析:检查代码是否存在错误,若有错误,引擎会抛出语法错误。同时会构建一颗抽象语法树(AST)预编译解释执行预编译JavaScript是解释性语言,也就是说,编译一行,执行一行,但js并非上来就进入编译环节,它在编译之前存在预编译过程。js中预编译一般有两种:全局的预编译和函数的预编译,分别发生在script内代码执行前和函数的执行前1. 函数预编

2021-09-11 07:46:08 197

原创 二分查找算法

二分查找概述二分查找作为经典的查找算法,思想比较简单,但每次写相关代码,总出现左右区间混乱,最终造成死循环。代码分析区间的左右开闭问题: [0, length - 1]循环边界: while left < right,这样可以保证最终返回值left == right,随便返回哪个都可以区间[left.. right]可以划分为两种情况:分为[left..mid]和[mid+1..right],分别对应right = mid和left = mid + 1分为[left..mid-1]

2021-09-08 16:35:49 150

原创 javascript柯里化

1.什么是柯里化?柯里化概念其实很简单,只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。实例:function add(a, b, c, d) { return a + b + c + d;}//通常调用方式var sum = add(1, 2, 3, 4);//柯里化的调用方式var curryAdd = Curry(add);var sum = cu...

2019-01-20 11:01:09 300

原创 Sass进阶一

初学sass完全感受不到sass作为一种编程语言的完全性,接着往后面学,sass才开始精彩。①、sass支持类似c语言的条件、循环语句@if @else @while @each @forif .. else ... 没什么油水@for 支持两种语法 @for $i from 1 through 12{/*$i in [1,12]*/}@for $i from 1 to1

2017-05-14 23:13:00 351

原创 CSS伪类+border实现Banner标签、冒泡式提醒等

一、前言在实现Banner和冒泡式提醒前,我们可以先了解一下border的实现规律,语言不好表述,直接上代码和效果图。 width: 0; height: 0; border-top:20px solid; border-left:20px solid red; border-right:20px solid green; border-bottom:20px solid

2017-05-11 23:39:41 937

原创 Sass初涉

经历数不清日月的颓废之后,决定重新坚持自己的前端之路,说实话,到现在 ,对前端是很迷茫的,前端这个行业,真是应了那句话,“学了不一定有用”,更新换代太快,基础已打牢。从昨天开始我开始深入学习前端,JS方面学习函数式编程和模块化(require,commentJS),css学习预处理语言sass,框架方面接触facebook的react。那么今天便小小研究了一下sass对于浸润了很多

2017-05-10 00:06:06 352

原创 npm、bower安装

一、NPMNPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。二、NPM安装配置1、windows下环境安装NPM比较简单,直接去node的官网(http://nodejs.org/)下载便可。新版本nodejs集成了NPM功能。2、按照步骤安装完nodejs后,打开cm

2017-05-08 22:53:08 3006

原创 POJ 1436 Horizontally Visible Segments 简单hash+区间更新

分析:线段树好题,类似poj2528, 题意是求解线段三角形的数目题目大意:在一个平面内,有一些竖直的线段,若两条竖直线段之间可以连一条水平线,这条水平线不与其他竖直线段相交,称这两条竖直线段为“相互可见”的。若存在三条竖直线段,两两“相互可见”,则构成“线段三角形”。给出一些竖直的线段,问一共有多少“线段三角形”。 首先处理端点问题:想象一下若同一x位置有两条线段,y

2016-08-04 11:11:19 438

原创 POJ 2528 Mayor's posters 离散化+线段树+简单Hash

题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:这题数据范围很大,直接搞超时+超内存,需要离散化:离散化简单的来说就是只取我们需要的值来用,比如说区间[1000,2000],[1990,2012]我们用不到[-∞,999][1001,1989][1991,1999][2001,2011][2013,+∞]这些值,所以我只需要1000,1990,2000,2012就够了

2016-08-04 10:58:13 499

原创 线段树学习(二)区间修改

线段树的区间修改主要有三种:成段增减, 成段替换,区间异或区间更新是指更新某个区间内的叶子节点的值,因为涉及到的叶子节点不止一个,而叶子节点会影响其相应的非叶父节点,那么回溯需要更新的非叶子节点也会有很多,如果一次性更新完,操作的时间复杂度肯定不是O(lgn),例如当我们要更新区间[0,3]内的叶子节点时,需要更新出了叶子节点3,9外的所有其他节点。为此引入了线段树中的延迟标记概念,这也是

2016-08-04 10:43:31 947

原创 poj2886 Who Gets the Most Candies?反素数+线段树

分析:约瑟夫环的升级版,求最大糖果数(因子数可用反素数打表获得)维护一颗线段树,区间存储剩余孩子数这里涉及一个新的概念: 反素数#include #include #include #include using namespace std;const int maxn = 500000 + 10;int antiprime[]={1,2,4,6,12,24,36

2016-08-03 16:39:36 387

原创 线段树练习(4)poj2828 Buy Tickets

分析:线段树好题; 观察发现,最后一个人插入的位置是固定的联想到逆序读入,维护一颗线段树,区间存储剩余的位核心查询代码:(原因理解下面Hint)  if(p  else update(p-sum[i#include #include #include #include using namespace std;const int maxn = 2

2016-08-03 16:30:26 349

汽水瓶c语言解答

一个简单的小程序,有兴趣可以看看,本人新手一枚,望指教

2015-11-21

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

TA关注的人

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