自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (1)
  • 收藏
  • 关注

原创 CodeTop 1-20

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。返回你可以从这笔交易中获取的最大利润。新链表是通过拼接给定的两个链表的所有节点组成的。

2022-11-01 23:23:30 269 1

原创 Mac Vue 项目上传到阿里云服务器及 nginx

本以为很简单, 结果熬了大夜花十小时弄完, 希望能给大家带来帮助少走弯路笔者环境: Mac + 云服务器 php 环境 + Vue 项目 + nginx若未购买服务器, 请看另一篇。

2022-09-18 20:33:06 855

原创 Mac brew homebrew 更新下载出问题

多半是源的问题, 建议查询方式卸载后重新下载或者如果你本就没下载那么输入之后选择 1 即可参考但接下来下载会报错。

2022-09-18 19:58:00 344

原创 setTimeout 和 setInterval

异步编程当然少不了定时器了,常见的定时器函数有setTimeout、、。最常用的是setTimeout,很多人认为setTimeout是延时多久,那就应该是多久后执行。其实这个观点是错误的,因为 JS 是单线程执行的,如果前面的代码影响了性能,就会导致setTimeout不会按期执行。当然了,可以通过代码去修正setTimeout接下来看,其实这个函数作用和setTimeout基本一致,只是该函数是每隔一段时间执行一次回调函数。通常来说不建议使用。第一,它和setTimeout。...

2022-08-17 23:39:59 252

原创 闭包基础理解

前提知识点: 执行上下文和垃圾回收机制,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部变量。. 有两种常用用途函数作为参数被传递函数作为返回值被返回闭包的第一个用途是使我们在函数外部能够访问到函数内部的变量。通过使用闭包,可以通过在外部调用闭包函数,从而在外部访问到函数内部的变量,可以使用这种方法来创建私有变量。闭包的另一个用途是使已经运行结束的函数上下文中的变量对象继续留在内存中,因为闭包函数保留了这个变量对象的引用,所以这个变量对象不会被回收。...

2022-08-17 23:37:35 71

原创 cookie 、localStorage 和 sessionStorage 区别

上面几种方式都是存储少量数据的时候的存储方式,当需要在本地存储大量数据的时候,我们可以使用浏览器的 indexDB 这是浏览器提供的一种本地的数据库存储机制。它不是关系型数据库,它内部采用对象仓库的形式存储数据,它更接近 NoSQL 数据库。浏览器端常用的存储技术是 cookie 、localStorage 和 sessionStorage。...

2022-08-15 23:03:29 544

原创 强缓存和协商缓存

强缓存策略和协商缓存策略在缓存命中时都会直接使用本地的缓存副本,区别只在于协商缓存会向服务器发送一次请求。它们缓存不命中时,都会向服务器发送请求来获取资源。在实际的缓存机制中,强缓存策略和协商缓存策略是一起合作使用的。浏览器首先会根据请求的信息判断,强缓存是否命中,如果命中则直接使用资源。如果不命中则根据头信息向服务器发起请求,使用协商缓存,如果协商缓存命中的话,则服务器不返回资源,浏览器直接使用本地资源的副本,如果协商缓存不命中,则浏览器返回最新的资源给浏览器。...

2022-08-12 23:22:15 4464

原创 浏览器的缓存机制

服务器在返回资源的时候,在头信息中添加了 Etag 属性,这个属性是资源生成的唯一标识符,当资源发生改变的时候,这个值也会发生改变。如果不命中则根据头信息向服务器发起请求,使用协商缓存,如果协商缓存命中的话,则服务器不返回资源,浏览器直接使用本地资源的副本,如果协商缓存不命中,则浏览器返回最新的资源给浏览器。浏览器的缓存机制指的是通过在一段时间内保留已接收到的 web 资源的一个副本,如果在资源的有效时间内,发起了对这个资源的再一次请求,那么浏览器会直接使用缓存的副本,而不是向服务器发起请求。...

2022-08-12 23:20:55 140

原创 CSRF 攻击

这种方法解决了使用 cookie 单一验证方式时,可能会被冒用的问题,但是这种方法存在一个缺点就是,我们需要给网站中的所有请求都添加上这个 token,操作比较繁琐。第三种方式使用双重 Cookie 验证的办法,服务器在用户访问网站页面时,向请求域名注入一个Cookie,内容为随机字符串,然后当用户再次向服务器发送请求的时候,从 cookie 中取出这个字符串,添加到 URL 参数中,然后服务器通过对 cookie 中的数据和参数中的数据进行比较,来进行验证。同时这种方式不能做到子域名的隔离。...

2022-08-10 23:51:25 1644

原创 XSS攻击

对于第一个方面,如果我们对存入数据库的数据都进行的转义处理,但是一个数据可能在多个地方使用,有的地方可能不需要转义,由于我们没有办法判断数据最后的使用场景,所以直接在输入端进行恶意代码的处理,其实是不太可靠的。XSS 的本质是因为网站没有对恶意代码进行过滤,与正常的代码混合在一起了,浏览器没有办法分辨哪些脚本是可信的,从而导致了恶意代码的执行。存储型指的是恶意代码提交到了网站的数据库中,当用户请求数据的时候,服务器将其拼接为 HTML 后返回给了用户,从而导致了恶意代码的执行。...

2022-08-10 23:49:23 2109

原创 基础理解网络模型

该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。这些都是物理层的传输介质。网络层与数据链路层的对比,通过上面的描述,我们或许可以这样理解,网络层是规划了数据包的传输路线,而数据链路层就是传输路线。寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的。...

2022-08-09 23:45:19 129

原创 当在浏览器中输入 Google.com 并按下回车之后发生了什么?

3)**DNS解析:**下一步首先需要获取的是输入的 URL 中的域名的 IP 地址,首先会判断本地是否有该域名的 IP 地址的缓存,如果有则使用,如果没有则向本地 DNS 服务器发起请求。本地 DNS 服务器也会先检查是否存在缓存,如果没有就会先向根域名服务器发起请求,获得负责的顶级域名服务器的地址后,再向顶级域名服务器请求,然后获得负责的权威域名服务器的地址后,再向权威域名服务器发起请求,最终获得域名的 IP 地址后,本地 DNS 服务器再将这个 IP 地址返回给请求的用户。...

2022-08-09 23:42:49 93

原创 v-model 简单理解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u8yCwCSr-1659972316717)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/33608b6b986d4f18932d198e5b9bfc08~tplv-k3u1fbpfcp-zoom-1.image)]可以。父组件将searchText变量传入custom-input 组件,使用的 prop 名为value;...

2022-08-08 23:25:31 600

原创 vue 中的 key

diff 算法需要比对虚拟 dom 的修改,然后异步的渲染到页面中,当出现大量相同的标签时,vnode 会首先判断 key 和标签名是否一致,如果一致再去判断子节点一致,使用 key 可以帮助 diff 算法提升判断的速度,在页面重新渲染时更快消耗更少相关代码如下diff 算法详解 传送门详细资料可以参考: 《Vue 面试中,经常会被问到的面试题 Vue 知识点整理》 《Vue2.0 v-for 中 :key 到底有什么用?》 《vue 中 key 的作用》使用 index 作为 key和没写基本上没区

2022-08-08 23:21:44 1606

原创 如何保存页面的当前的状态

比如从 B 组件跳转到 A 组件的时候,A 组件需要更新自身的状态。但是如果从别的组件跳转到 B 组件的时候,实际上是希望 B 组件重新渲染的,也就是不要从 Storage 中读取信息。所以需要在 Storage 中的状态加入一个 flag 属性,用来控制 A 组件是否读取 Storage 中的状态。在这里面需要注意的是组件更新状态的时机。除此之外,在Vue中,还可以是用keep-alive来缓存页面,当组件在keep-alive内被切换时组件的。要切换的组件作为子组件全屏渲染,父组件中正常储存页面状态。.

2022-08-07 23:52:32 1046

原创 基础了解虚拟 DOM

通过事务处理机制,将多次DOM修改的结果一次性的更新到页面上,从而有效的减少页面渲染的次数,减少修改DOM的重绘重排次数,提高渲染性能。另外现代前端框架的一个基本要求就是无须手动操作DOM,一方面是因为手动操作DOM无法保证程序性能,多人协作的项目中如果review不严格,可能会有开发者写出性能较低的代码,另一方面更重要的是省略手动DOM操作可以大大提高开发效率。Virtual DOM的更新DOM的准备工作耗费更多的时间,也就是JS层面,相比于更多的DOM操作它的消费是极其便宜的。...

2022-08-07 23:49:26 153

原创 Vue3 中的 Composition API

在 Vue2 中,代码是 Options API 风格的,也就是通过填充 (option) data、methods、computed 等属性来完成一个 Vue 组件。这种风格使得 Vue 相对于 React极为容易上手,同时也造成了几个问题:于是在 Vue3 中,舍弃了 Options API,转而投向 Composition API。Composition API 本质上是将 Options API 背后的机制暴露给用户直接使用,这样用户就拥有了更多的灵活性,也使得 Vue3 更适合于 TypeScri

2022-08-06 23:43:56 441

原创 基础理解 Vuex

Vuex 是一个专为 Vue.js 开发的全局状态管理系统。每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个容器,它包含着你的应用中大部分的状态 ( state )。用于多个组件中数据共享、数据缓存等。(无法持久化、内部核心原理是通过创造一个全局实例 new Vue)Vuex为Vue Components建立起了一个完整的生态圈,包括开发中的API调用一环。...

2022-08-06 23:42:26 87

原创 $nextTick 原理及作用

nextTick 的核心是利用了如 Promise 、MutationObserver、setImmediate、setTimeout的原生 JavaScript 方法来模拟对应的微/宏任务的实现,本质是为了利用 JavaScript 的这些异步回调任务队列来实现 Vue 框架中自己的异步回调队列。nextTick 是典型的将底层 JavaScript 执行原理应用到具体案例中的示例,引入异步更新队列机制的原因∶。由于Vue的DOM操作是异步的,所以,在上面的情况中,就要将DOM2获取数据的操作写在。...

2022-08-05 23:44:45 1053

原创 defineProperty 和 proxy 的区别

Object.defineProperty 函数一共有三个参数,第一个参数是需要定义属性的对象,第二个参数是需要定义的属性,第三个是该属性描述符。一个属性的描述符有四个属性,分别是 value 属性的值,writable 属性是否可写,enumerable 属性是否可枚举,configurable 属性是否可配置修改。整体思路是数据劫持 + 观察者模式。...

2022-08-05 23:33:56 3003

原创 Vue 组件的参数传递方式

父组件通过 refs组件名来获得子组件,子组件通过refs 组件名来获得子组件,子组件通过 refs组件名来获得子组件,子组件通过parent 获得父组件,这样也可以实现通信。第一种是使用 eventBus 事件总线的方法,它的本质是通过创建一个空的 Vue 实例来作为消息传递的对象,通信的组件引入这个实例,通信的组件通过在这个实例上监听和触发事件,来实现消息的传递。使用 eventBus ,其实就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。(1)父子组件间通信。(2)兄弟组件间通信。.

2022-08-04 23:48:15 954

原创 Vue 的生命周期

5)beforeUpdate 钩子函数,在响应式数据更新时触发,发生在虚拟 DOM 重新渲染和打补丁之前,这个时候我们可以对可能会被移除的元素做一些操作,比如移除事件监听器。(8)destroyed 钩子函数,在实例销毁之后调用,调用后,Vue 实例中的所有东西都会解除绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。Vue 一共有8个生命阶段,分别是创建前、创建后、加载前、加载后、更新前、更新后、销毁前和销毁后,每个阶段对应了一个生命周期的钩子函数。钩子函数,在组件被挂载到页面之前触发。...

2022-08-04 23:46:54 220 1

原创 简单理解 JS 事件循环

因为 js 是单线程运行的,在代码执行的时候,通过将不同函数的执行上下文压入执行栈中来保证代码的有序执行。在执行同步代码的时候,如果遇到了异步事件,js 引擎并不会一直等待其返回结果,而是会将这个事件挂起,继续执行执行栈中的其他任务。当异步事件执行完毕后,再将异步事件对应的回调加入到与当前执行栈中不同的另一个任务队列中等待执行。任务队列可以分为宏任务对列和微任务对列,当当前执行栈中的事件执行完毕后,js 引擎首先会判断微任务对列中是否有任务可以执行,如果有就将微任务队首的事件压入栈中执行。...

2022-08-03 23:53:05 144

原创 JavaScript 中的 this

this 是执行上下文中的一个属性,它指向最后一次调用这个方法的对象。在实际开发中,this 的指向可以通过四种调用模式来判断。使用构造器调用模式的优先级最高,然后是 apply、call 和 bind 调用模式,然后是方法调用模式,然后是函数调用模式。this 取值是从函数执行的时候判定的, 而不是定义的时候判定的。箭头函数的 this 取上级作用域的值。...

2022-08-03 23:47:21 148

原创 JS 原型原型链

可以看到重写原型的时候p的构造函数不是指向Person了,因为直接给Person的原型对象直接用对象赋值时,它的构造函数指向的了根构造函数Object,所以这时候。所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性,和。in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。原型链上的所有原型都是对象,所有的对象最终都是由。是构造函数,原型链终点是。,所以,原型链的终点是。...

2022-08-02 23:49:45 195

原创 JS 预编译

JavaScript 是解释性语言, 即编译一行, 执行一行. 但在编译前存在预编译过程.预编译分为两种, 全局的预编译(代码执行前)和函数的预编译(函数执行前).

2022-08-02 23:45:30 98

转载 Vue3 如何写 Vue2 render: (h) => h(“router-view“)

代码】Vue3如何写Vue2render(h)=>h(“router-view“)

2022-07-31 20:59:21 911

原创 Vue 使用 less-loader 6.X 的javascriptEnabled 报错解决

这是因为6.0之后javascriptEnabled属性被放在lessOptions中,所以需如下代码设置。less-loader6.0.0之前如需开启javascriptEnabled需进行如下配置。

2022-07-31 20:20:42 1075

原创 JS 练手 (更新中)

JS 练习题 日更

2022-07-08 17:11:47 134

原创 如何调试 VSCode JS代码

VSCode 如何调试 JS 代码

2022-07-01 23:45:18 1130 1

原创 W7_回溯

代码随想录的回溯

2022-07-01 16:54:22 63

原创 W6_二叉树

代码随想录二叉树部分

2022-06-29 22:11:40 118

原创 W5_栈和队列

代码随想录的栈和队列

2022-06-14 18:38:49 63

原创 W3_哈希表习题

代码随想录的哈希表练习

2022-06-08 13:08:17 88

原创 Mac 虚拟机 VMware Ubuntu

参考: https://www.jianshu.com/p/489ea047caa8虽然参考的文章是 19 年的, 但今年使用依然没出现任何问题笔者电脑是 Mac 20 年购入 2 GHz 四核Intel Core i5 (非 M1)VMware 版本: 12.2.3Ubuntu 版本: 22.04 LTS1. 下载 VMwarehttps://customerconnect.vmware.com/en/downloads/details?downloadGroup=FUS-1223-NEW&a

2022-05-17 17:38:08 621

原创 Unity 2D 碰撞卡死 移动卡死

人物卡死的问题有很多, 目前笔者遇到的解决方案有 trigger 勾选, 改变刚体 Collider, 增加不可移动代码三种.1. 两个碰撞体间 trigger 勾选一般而言, 刚体 Rigidbody 所在的 Box Collider 2D 的 trigger 不打勾(打不打勾看项目当时的需求和情况有所改变), 与之相撞的 BX2D 的 trigger 打勾但大部分项目这种肯定是做好的, 那么就有一种可能是人物底部方形和碰撞体方形重合, 于是有了接下来第二点2. 改变刚体 Collider我们

2022-05-15 14:19:41 3207

原创 Unity 2D 用动画设计碰撞后无法再通过的地面(陷阱)

一. 导入资料在 Scenes 下创建 Traps 文件夹, 将陷阱前后状态的图片导进去再将陷阱拖入地图中(这里没有经过 tile 处理)拖入后添加 box collider 2D针对 stove 对象, 我们添加tag标签和layer层级(可以和 ground 一层)二. 添加动画接下来添加动画在 Traps 里新建 animation controller 和两个 animation进入 animation controller我们将开始的 stove 图片放入 idle,

2022-05-13 07:04:19 405

原创 Unity 如果不小心把 Project Assets 栏, Inspector 栏或其他布局窗口删了怎么办?

虽然很基础但还是找了半天的布局问题在’Window’下点’Layouts’中的’Default’即可解决

2022-05-11 11:38:56 3032 1

转载 新手向: IntelliJ IDEA 类和方法注释的生成以及Javadoc的简单使用记录

原文链接: https://www.cnblogs.com/zh94/p/7686658.htmlidea,设置类注释和,方法注释的常见的设置方法(不同的版本设置方法有所偏差,简单记录一些目前自己在使用的方法,)方法注释:在 keyMap 中搜索 Fix doc comment , 后点击右键设置一个快捷键(本人采用的 ALT+M)然后点击 ok,使用时:需要在选中方法后再使用该快捷键,便会生成所对应的模板注释信息;使用 File and code Template 生成类注释:一般为创建该类后,则.

2021-06-30 20:03:16 299

原创 Java 笔试练习 04 : T66~81

文章目录66. 以下代码执行后输出结果为( )67. 以下哪个方法用于定义线程的执行体?68. 下面关于垃圾收集的说法正确的是69. 通过HttpServletRequest. getParameter获取的参数.70. 以下哪个事件会导致线程销毁?()71. 根据以下代码段,下列说法中正确的是( )。72. What will happen when you attempt to compile and run the following code?73. 下面哪一项不属于优化Hibernate所鼓励的?

2021-06-23 20:42:02 1165 2

给对象的爱心树(基于html, 点开即运行)

可以改的有三个地方: 网页标题(可不改, 献给一生最爱的人), 左侧要和对象说的话, 以及下方设置在一起的时间

2021-05-20

空空如也

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

TA关注的人

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