自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 Publish/SubScribe(发布/订阅)模式

前言上一篇文章中,我们讲了如何利用Observer(观察者)模式实现多选框的全选, 本篇文章将带来Publish/SubScribe模式,并且利用该模式实现一个简易的消息通知功能,文章的最后还与Oberver进行对比。什么是发布者/订阅模式?Publish/Subscribe模式使用了一个主题/ 事件通道,这个通道介于希望接收到通知的对象(订阅者)和激活事件的对象之间(发布者)。实现class Pubsub { constructor() { .

2021-05-10 09:53:12 5156

原创 利用Observer(观察者)模式实现多选框的全选

一、什么是Observer(观察者)模式Observer(观察者)是一种设计模式,其中,一个对象(subject)维持一系列依赖于它(观察者)的对象,将有关状态的任何变更自动通知给他们。观察者模式是一个被称为目标的对象,将自己状态的变更自动通知给自己维护的一系列观察者的方法。二、具体实现我们实现Observer模式需要使用到以下组件:Subject(目标):维护一系列的观察者,方便添加或者删除观察者。Observer(观察者):为那些在目标状态发生改变时需要获得通知的对象提供一个更

2021-04-26 09:42:27 487 1

原创 浏览器渲染引擎&性能 之HTML解析器

前言我们都知道浏览器在解析HTML文件时,首先会构建DOM树,然后会解析CSS文件,构建CSS规则树,最后根据DOM树和CSS规则树构建渲染树,等到渲染树构建完成之后,浏览器开始布局渲染树并将其绘制到屏幕,那么浏览器是怎么构建DOM树和CSS树呢?本系列文章将带你从HTML解析器和CSS解析器内部进行分析,带你一步步了解整个构建过程。注:本文针对chrome浏览器而言,不同浏览器处理过程可能不用同。1. DOM模型DOM的全称是文档对象模型,它可以以一种独立于平台和语言的方式访问和修改一个文

2021-03-03 20:44:46 747 1

原创 判断一个链表是否为回文结构(JavaScript)

题目描述判断一个链表是否为回文结构。【题目】给定一个链表的头节点head,请判断该链表是否为回文结构。例如:1->2->1,返回true。1->2->2->1,返回true。15->6->15,返回true。1->2->3,返回false。方法1:将链表的每个节点都放入栈中,然后重新遍历链表,并且进行出栈操作,进行比较。 function isPalindrome1(head) { let sta...

2021-01-24 17:19:20 448 1

原创 旋转矩阵(力扣)

题目描述给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, ...

2020-12-13 17:51:06 489

原创 跳台阶-使代码的运行时间提升了98.9%

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输入: 1返回值: 1示例2输入: 4返回值: 5解题思路:很明显,这道题就用简单的递归来实现。简单举例:跳上1级台阶有1种跳法,跳上2级台阶有2种跳法,跳上3级台阶有3种跳法,跳上4级台接有5种跳法。很显然fn ( n ) = fn( n - 1 ) + fn ( n - 2 ),有了这个式子,我们就可以用递归...

2020-11-22 19:58:53 159

原创 前端人前端魂,前端人必会的几种排序算法

前言自从上周被蓝桥杯国赛血虐之后,本人打算系统的学习一下算法题。今天给大家带来的是四种排序算法:冒泡排序 / 选择排序 /插入排序 / 归并排序1. 冒泡排序什么是冒泡排序:冒泡排序顾名思义就是整个过程像气泡一样往上升,单向冒泡排序的基本思想是(假设由小到大排序):对于给定n个记录,从第一个记录开始依次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和换位后,n个记录的最大记录将位于第n位,然后对前(n-1)个记录进行第二轮比较;重复该过程,直到记录剩下一个为.

2020-11-22 12:30:48 546

原创 大三的我竟然入职了百度

本人现在大三,这篇文章主要就是总结一下自己大学三年的学习过程,希望这篇文章可以给你带来一些的帮助。 高中的我都是吊儿郎当的,一点也不知道学习,这是对物理和数学比较感兴趣,学的比较认真。我会想着各种办法去偷懒,这样的后果就是没有考上一个很好的大学。但是也算是幸运吧,被本省一所三本大学的网络工程专业所录取。报道之前对大学充满着各种的向往,...

2020-11-12 15:26:01 782 5

原创 性能优化-----JavaScript的加载和执行

目录前言1. 脚本位置2. 组织脚本3. 延迟的脚本小结前言对于大多数的开发者来说,JavaScript在浏览器中的性能问题,可以认为是开发者所面临的最严重的可用性问题。Javascript执行过程耗时越久,浏览器等待响应的时间就越长(白屏时间较长,导致用户体验不好)。在页面加载的过程中,<script>标签每次出现都会霸道地让页面等待脚本的额解析和执行,无论当前的JavaScript代码是内嵌的还是包含在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成。

2020-10-26 17:19:56 279

原创 第十一届蓝桥杯Java省赛第二场B组部分题解

本文章会讲解部分题解(因为有的题不会!!,太菜了),如果大家发现解答有问题,可以留言,大家一起讨论。试题A:答案:624 public static void main(String[] args) { // TODO Auto-generated method stub int a = 1; int count = 0; while (true) { String b = a + ""; for (int i = 0; i < b.length(); i+.

2020-10-18 17:25:21 14198 11

原创 第十一届蓝桥杯Java省赛原题(2020年)

第十一届蓝桥杯大赛软件类省赛第二场以上就是第十一届蓝桥杯java 省赛B组的试题,稍后会发布部分题解,欢迎大家一起讨论。祝大家可以取得一个好成绩,冲冲冲!!!!!...

2020-10-17 20:27:17 5919 5

原创 JavaScript宽松相等(==)中你不知道的秘密

前言在日常的JavaScript开发中,我们经常使用宽松相等(==)和严格相等(===)来判断两个值是否"相等",但是他们之间有一个很重要的区别,特别是在判断条件上。那么他们到底有什么区别呢? 我想,很多人都会脱口而出:==比较值相等,===会判断值和类型是否相等。听起来还是挺有道理的,但是还是不够准确。正确的解释是:==允许在判断相等时进行强制类型转换,而===不允许。但是你了解==在判断是进行强制类型转换的具体规则吗?在ES5规范中提到了 “抽象相等比较算法”,定义了==运算符的行为。

2020-08-24 16:54:08 392

原创 【前端面试篇】JavaScript基础(二)

前言上一篇文章中详细介绍了JavaScript中重要的概念,涉及到闭包、原型、作用域、执行上下文等知识点,本篇文章将注重总结JavaScript中手写代码的一些面试题。问题1:JavaScript中模块加载方案有哪些?CommonJS:通过require来引入模块,通过module.exports定义模块的输出接口。这种模块加载方案是服务端的解决方案,它是以同步的方式引入模块的,因为在服务端文件都是存储在本地磁盘,所以读取非常快,所以采用同步的方式加载是没有问题的,但是如果在浏览器端,由于模块的

2020-08-15 16:55:48 229

原创 JS中对象的继承模式

方法一:原型链继承 // 父类型 function Supper() { this.supProp = ' Supper Prop' } Supper.prototype.ShowSupperProp = function() { console.log(this) console.log(this.supProp) } // 子类型 function Sub() {

2020-08-12 15:41:00 148

原创 JS对象的五种创建模式

方法一:object构造函数模式 let p = new Object() p.name = 'Tom' p.age = 12 p.setName = function(name) { this.name = name } console.log(p.age, p.name) p.setName('jack') console.log(p.age, p.name)这种方式适用于起始时不确定

2020-08-12 11:47:03 179

原创 字符串转换整数 (力扣 8 )

题目描述请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不..

2020-08-11 11:19:10 173

原创 【前端面试篇】JavaScript基础(一)

前言本文将总结JS的相关知识以及面试常考知识点,不会细致的讲解,遇到重要的知识点我会推荐给大家几篇自认为不错的文章,方便大家更好的理解。

2020-08-10 15:36:23 230

原创 Z 字形变换(力扣6)

题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int ...

2020-08-06 15:44:30 318

原创 【前端面试篇】计算机网络相关

前言:本人大三学生党,最近在复习基础知识,会整理一些面试常考问题及答案,所以打算写这类型文章,来总结一些最近所学。如发现任何问题,可以留言,我会认真改正。本篇会讲计算机网络相关的问题,下期问题会是JavaScript相关,欢迎大家关注~~问题1:网站的性能优化有哪些?浏览器缓存(接下来问题会有) 资源打包压缩 图片资源优化(webP、svg、雪碧图) CND(接下来问题会有) 减少回流和重绘衍生问题1:什么是回流和重绘?回流:当渲染树中的部分或全部元素的尺寸、结构或某些属性发生改变

2020-08-05 17:06:56 2173 1

原创 最长回文子串(力扣5)

题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路利用回文字符串的特点:正着读和反着读都是一样的,所以首先把s反转,利用i和j控制左右边界,不断从s中截取子字符串,这时需要理解反转字符串中对应i和j的关系,同时从反转字符串中进行截取,进行比较。max表示当前字符串的长度,如果新的子字符串.

2020-08-04 16:56:33 187

原创 最接近的三数之和(力扣16)

题目描述给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。解题思路:首先先对数组进行排序,排序之后方面后序操作。从0索引开始遍历数组,left为i+1,right为length-1。best来保...

2020-07-22 16:48:51 135

原创 在排序数组中查找元素的第一个和最后一个位置(力扣34)

题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]解题思路题目中强调,时间复杂度必须是O(log...

2020-07-03 18:23:21 169

原创 搜索旋转排序数组(力扣33)

题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例2:输入: nums = [4,5,6,7,0,1...

2020-06-30 15:44:52 178

原创 盛最多水的容器

题目描述给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例:输入:[1,8,6,2,5,4,8,3,7]输出:...

2020-06-26 17:49:20 156

原创 前端面试必问:能否用js模拟实现call函数

前言要想实现它,就必须先了解它是做什么的,主要功能是什么MDN:Function.prototype.call() 文档一句话介绍call:call() 方法在使用一个指定的 this 值和若干个指定的参数值的前提下调用某个函数或方法。举个例子:var foo = { value: 1};function bar() { console.log(this.value);}bar.call(foo); // 1从以上代码发现:1. call改变了thi

2020-06-23 17:21:07 190

原创 面试官:能否用JavaScript实现深度克隆

前言前拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用,如果拷贝后的对象发生变化,原对象也会发生变化。只有深拷贝才是真正地对对象的拷贝。首先,需要知道,JavaScript中的数据类型分为基本数据类型和引用数据类型,对于基本数据类型而言,没有深浅拷贝的区别,我们所说的深拷贝都是对于引用数据类型而言的。浅拷贝 const obj = { a: 'a', b: 'b', c: [1, 2, 3], d: { dd: 'dd' } } const array.

2020-06-22 16:45:48 347 4

原创 两数相加------力扣

题目描述给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解题思路:第一次看到这个题的时候,想到的是逐个...

2020-06-15 14:19:52 127

原创 搜索插入位置 ---- Java(二分查找)

题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0public static int searchInsert(int[] nums, int target.

2020-06-07 13:18:29 511 1

原创 最大子序和(贪心算法) ----- Java

题目描述给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。 public int maxSubArray(int[] nums) { int sum = 0; int max = nums[0]; for (int num : nums) { if (sum > 0) { su...

2020-06-07 10:56:21 610

原创 JS的数据类型(深入理解undefined与null)

JS的数据类型总体来说,JS的数据类型可以分为两大类基本数据类型:string: 任意字符串number: 任意数字(整数、小数)boolean: false/ trueundefined: undefinednull: null引入数据类型object: 任意对象Array: 一种特别的对象(数值下标属性,内部数据是有序的)Function:一...

2020-04-08 16:46:57 740

原创 深入理解Redux和React-Redux并完成自己的React和React-redux

React是什么?redux是一个独立专门用于做状态管理的JS库(不是React插件库),作用:集中式管理react应用中多个组件状态共享的状态React主要有三个大模块:action Creator、Store、Reducers接下来主要自己实现一下内容:1.createStore(reducer) :接收一个reducer函数,返回一个store对象2.combine...

2020-04-05 15:42:28 206

原创 第十一届蓝桥杯校赛部分题解

第五题问题描述  小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。  给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。  元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。输入格式...

2020-03-17 14:42:37 763

原创 第十届蓝桥杯java省赛部分题解(适合新手)

以下题解只是个人的理解,如果发现答案有误或者有更简洁方式,望大家及时指出!! 部分题解自己还没有想到更好的方式去解答,如果有更好的解题方式会及时更新。试题A :组队------ 答案 490这道题没有必要使用代码进行解题,本题的坑主要在于一个人只能选择一次,只要认真审题,就可以解答出来。试题B :不同子串 public static void main(String[]...

2020-02-22 18:16:57 232

原创 前后端交互(Promise、fetch、axios、async/awit用法)

1.Promise概述Promise是异步编程的一种解决方案,从语法上讲,Promise是一个对象,从它可以获取异步操作的消息。1.2Promise的好处:1.2.1. 可以避免多层异步调用嵌套的问题(回调地狱)1.2.2. Promise对象提供了简洁的API,使得控制异步操作更加容易。1.3Promise的基本使用 var p = new Promise(funct...

2020-02-02 15:04:45 738

原创 Vue中的组件基础知识

创建组件的方式 // 1.1使用Vue.extend 来创建全局的Vue组件 var com1 = Vue.extend({ // 通过template属性,指定了组件要展示的HTML结构 template:'<h3>这是使用Vue.extend 创建的组件</h3>' }) ...

2020-01-18 15:55:44 246

原创 Java算法题-------菱形的打印及扩展(实心菱形、空心菱形、字母菱形)

实心菱形输入一个正整数M(1<=M<=25),表示菱形的半径(直径就是2*M+1)输出以M为半径的菱形(如图)代码如下 public static void main(String[] args) { Scanner s= new Scanner (System.in); int M =s.nextInt();// 上半层 for(int i =...

2020-01-16 14:10:53 845

原创 Vue中的生命周期函数详解

首先对Vue实例进行初始化,在初始化阶段,对象身上只有一些生命周期函数和默认的事件,其他的东西还都未创建。beforeCreate表示在初始化之前,执行beforeCreate函数时,data和methods中的数据还都没有被初始化。当created函数执行的时候,data和created都已经被初始化完毕,如果要调用methods中的方法和data中的数据,最早只能在created函数中操作...

2020-01-15 14:01:02 1230

原创 螺旋矩阵

题目描述给定一个包含 m x n 个要素的矩阵,(m 行, n 列),写一个函数按照螺旋顺序,返回该矩阵中的所有要素。格式:输入依次输入两个整数 m 和 n,和一个 m x n 的整数数组,最后输出按照螺旋顺序返回的矩阵数组的元素。样例输入3 31 2 34 5 67 8 9样例输出1 2 3 6 9 8 7 4 5 public static...

2019-12-05 15:57:45 307

原创 多边形内角和

题目描述在欧几里德几何中,n边形的内角和是(n−2)×180°。小蒜蒜已经知道其中(n−1)个内角的度数,请编写一个程序,计算出剩下的一个未知内角的度数。输入格式第1行只有一个整数n(3≤n≤20)。第2行有(n−1)个正整数,是每个已知内角的度数。相邻两个整数之间用单个空格隔开。数据保证给定多边形合法。输出格式一个正整数,为未知内角的度数。...

2019-12-05 15:09:30 1341

原创 安全密码

题目描述网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:密码长度大于等于8,且不要超过16(太长了自己容易忘记); 密码开头必须是大写字母; 必须至少包含一个小写字母; 必须至少包含一个数字; 必须至少包...

2019-12-05 15:08:11 1758

空空如也

空空如也

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

TA关注的人

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