avatar
Articles
170
Categories
9

Home
Categories
Salute Those Who Gaze At The Stars
Home
Categories

Salute Those Who Gaze At The Stars

算法:大数相加
Created2023-11-22|前端剑气双修
js的大数相加所遇到的问题这里只需要明确一点,就是思路。两数相加很简单: return a + b 如此这般,最后的结果: 1e3之类。 正确的思路应该是用指针遍历,进位累加即可。
响应常用状态码
Created2023-11-22|通信杂谈
本文记录一些常用状态码1xx: 100: 请求已被处理,需要客户端继续发送请求。例如post。 2xx:请求成功。 200: 请求成功,返回数据 204: 请求成功,无数据 3xx:重定向 301: 永久 302: 暂时 304: 协商缓存 4xx:客户端错误 401: 未授权,要求身份验证 403: forbidden 404: not-found 5xx:服务器错误 500: 服务器遇到错误,无法完成请求。 502: 网关错误 503: 停机维护服务器无法使用
算法:递归
Created2023-11-21|前端剑气双修
本文介绍递归思想先看一道经典的题: 全排列// 非重复数字: /** * @param {number[]} nums * @return {number[][]} */ var permute = function(nums) { let res = [] let used = new Array(nums.length).fill(0) const f = (n1) => { if(n1.length === nums.length) { // let temp = JSON.parse(JSON.stringify(n1)) res.push([...n1]) // 此处发现一个很懵逼的问题,若写成res.push(n1),结果居然都为空。。。 } for(let i = 0; i < nums.length;i++) { ...
算法:链表
Created2023-11-21|前端剑气双修
本文主要介绍链表相关链表这种数据结构的特点, 就是每一个节点对象通过一个next字段,链接下一个节点,所以总体看来, 就是一种链条的结构。 // 结构 const listNode = function(val) { this.val = val this.next = null } 查找:时间复杂度O(n), 空间复杂度: O(1)删除:时间复杂度O(n), 空间复杂度: O(1) 练练手: 1. 牛客BM1–链表反转思路很清晰: 从头部节点遍历,挨个取出节点,暂存next节点。取出节点连接到新节点即可,最后返回。 let res whiel(head) { const current = head const next = head.next current.next = res res = current head = next } return res 2. 返回倒数第k个元素/* * function ListNode(x){ * ...
CSS系列:常见问题
Created2023-11-20|前端剑气双修
本文用于记录常见css面试题 前端响应式的策略? 媒体查询@media。根据设备的不同宽高数据,使用不同的样式代码 百分比 vm、vh rem。 两栏布局,右侧自适应? flex: 1 calc(100% - 左侧宽度) 左侧浮动,右侧margin-left 盒子水平垂直居中几种方案 3.1 flex <div class="father"> <div class="child"></div> </div> .father { margin: 100px auto; width: 1000px; height: 500px; border: 1px solid red; display: flex; justify-content: center; align-items: center; } .child { border: 1px solid green; width: 500px; height: 100px; &# ...
Vue.js系列:nexttick原理
Created2023-11-17|前端剑气双修
本文尝试梳理在vue中,nextTick方法的实现原理使用:在下次dom更新结束之后,执行nextTick中的回调,这样我们就能拿到dom。 谈到nextTick就不得不说一说js执行环境的事件循环机制。js引擎首先会执行全局代码,并将其中的同步任务放入执行栈中执行。当遇到异步任务时,会将该根据任务类型放入不同的事件队列。比如settimeout、settimeinterval就放入宏任务队列。微任务塞入微任务队列。主执行栈执行完毕后,会按照微任务事件队列优先原则,取出任务执行。微任务空再去宏任务队列中拿。直到最后清空。 具体来说,当我们调用Vue的nextTick方法时,Vue会将回调函数放入一个回调队列中。在当前执行栈执行完毕后,Vue会检查是否存在微任务队列,如果存在,则将回调函数放入微任务队列中。 Vue.nextTick = function (callback) { if (typeof Promise !== 'undefined') { // 使用Promise的then方法作为微任务 Promise.resolve().then ...
electron系列:第一回
Created2023-11-16|前端剑气双修
本系列开始,将逐步介绍前端的客户端经典框架–electron(系列文章)本文主要讲解electron的通信机制 首先祭出一张经典的图: electron有且只有一个主进程,由package.json中的main字段定义,Electron 使用 Chromium 来展示 web 页面,每个页面运行在自己的渲染进程中。 一. 为什么这么划分根本逻辑:主进程拥有服务器端的能力,例如读写文件资源,渲染进程负责页面呈现。 二. 基本配置1. 创建app,主进程设置ipcMain,用来监听渲染进程事件 import { app, BrowserWindow, ipcMain } from 'electron' import { handleGetAllCates, handleGetAllItems, handleGetVideo, getVideoContentVersionTwo } from '../src/utils/videoApi' const fs = require('fs') let mainWindow: BrowserWindow | ...
js的奇奇怪怪那些事儿
Created2023-11-16|前端剑气双修
本文主要是记录一些关于js的奇奇怪怪的特性,题目为主 原型链 function F() {} Object.prototype.a = function() { console.log('a') } Function.prototype.b = function() { console.log('b') } const f = new F() f.a() f.b() // 输出 // a // Uncaught TypeError: f.b is not a function 解答: 因为f首先是一个对象,通过原型链找到a方法输出a 通过new方法出来的f,本质上是基于F构造函数的原型对象{}生成,所以无b方法 js中的代码,是按顺序执行的吗先说结论:作为单线程的语言,当然是一行行按顺序执行,但也并不完全是,为什么?因为有个叫变量提升的骚操作。 // 事例1 showName() console.log(myname) var myname = '极客时间' function showName() ...
性能的考量:第五回(长任务)
Created2023-11-16|性能的考量
关于性能问题,我们前文介绍过了八股文篇、实战版本以及canvas性能相关的实操。今天,我们结合前文介绍过的google的performance工具,来更加深入的聊一聊。在web性能领域,有一个单独的单词long task,就是所谓的长任务。一般来讲,耗时超过50ms即可被认为长任务。这种长任务会导致什么结果呢?大佬解答: If the user is attempting to interact with the page while a long task runs—or if an important rendering update needs to happen—the browser will be delayed in handling that work. 简言之:卡死你。 以目下的一个业务场景为例。该项目的某个页面加载耗时,长达6s。打开performance工具分析发现,符合长任务定义的操作,存在还不止一个,且单个耗时远超50ms,如下图所示: 针对上述的“long task”,我们怎么优化呢? 异步化任务 依据向主线程妥协的原则,有些场景下的一些任务,不 ...
Threejs系列:第三回(贴图纹理)
Created2023-11-16|图形化开发
本文讲解纹理相关内容首先推荐个老外的站点,上面的各种纹理资源应有尽有,拿走不谢。https://ambientcg.com/list 所谓纹理,实质就是我们游戏制作过程中的贴图。比如通过下方代码,我们写了一个圆球体: // 物体 const geometry = new THREE.SphereGeometry( 1); const mesh = new THREE.MeshBasicMaterial({ color: 'green', map: pi }) const cube = new THREE.Mesh(geometry, mesh) scene.add(cube) 效果如下: 是不是感觉很僵硬?不着急,我们在他的表面贴一张图片看看: // 纹理 const texttureLoader = new THREE.TextureLoader() // const pi = texttureLoader.load('./OutdoorHDRI078_1K-HDR.exr') const pi = texttureLoader.load('./doo ...
1…8910…17
avatar
Miles | Isshin
Articles
170
Categories
9
Follow Me
Announcement
変わらない闘志,折れない魂
Recent Post
第一回引言:从“对话”到“推理”的范式转变2026-05-14
SPA发版后偶发白屏:场景、根因与治理方案2026-05-09
从“不存在”的重复请求,聊到 Web 存储的深坑2026-04-23
未来已来-论ai时代的最佳编程实践2026-04-16
现代单页应用(SPA)中微信授权登录的高可用架构实现2026-04-16
Categories
  • AI4
  • IC系列4
  • Miscellany8
  • React系列11
  • 前端剑气双修71
  • 图形化开发31
  • 性能的考量12
  • 语言1
Info
Article :
170
UV :
PV :
Last Push :
©2020 - 2026 By Miles | Isshin
Framework Hexo|Theme Butterfly