自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (2)
  • 收藏
  • 关注

原创 一个简易的reactive实现

【代码】一个简易的reactive实现。

2024-08-14 10:16:09 331

原创 localeCompare 在android中报错

这个错误信息表明你的应用在 Android 平台上因为一个未捕获的异常而崩溃,异常类型是 facebook::jni::JniException,具体是一个 java.lang.NullPointerException。如果是 JNI 调用引起的问题,还需要特别注意 Java 与本地代码的交互。这可能发生在通过 JNI(Java Native Interface)从 C++/C 代码调用 Java 方法时,如果传递的 CharSequence 对象为 null,也会出现这个错误。

2024-08-13 14:35:59 781

原创 正则替换$1

在正则表达式替换中,$1 是一个捕获组的占位符,表示第一个捕获的子表达式。换句话说,$1 会被替换成匹配正则表达式中的第一个捕获组的内容。假设 year_name 为 “2020年”,那么生成的正则表达式为 /(2020年)/g。当 title 包含 “2020年” 时,正则表达式匹配到 “2020年”,并将其替换为。’ 表示将匹配的内容替换成带有红色样式的 span 标签,其中 $1 代表第一个捕获组的内容。’) 使用正则表达式 regex 替换匹配的内容。

2024-07-12 13:41:33 303

原创 JSON.stringfy缺陷记录

【代码】JSON.stringfy缺陷记录。

2024-07-05 15:28:54 120

原创 uuid生成唯一标识

记录一下,业务中需要生成唯一标识。

2024-07-05 15:07:10 222

原创 代码转换成AST语法树移除无用代码console.log、import

可以使用 @babel/parser 解析代码生成 AST (抽象语法树),然后使用 @babel/traverse 进行遍历并删除所有的 console.log 语句,最后使用 @babel/generator 生成修改后的代码。遍历 AST:使用 @babel/traverse 遍历 AST,并找到所有的 console.log 调用表达式并删除它们。生成新的代码:使用 @babel/generator 生成修改后的代码。包含遍历获取所有文件,并将所有文件代码进行处理。代码中移除未使用的import。

2024-07-05 14:46:32 530

原创 git 禁止dev合并到任何其他分支

上述 pre-merge-commit 钩子只在生成合并提交前运行,因此如果 dev 分支的合并是快速合并(fast-forward merge),钩子不会被触发。为确保所有合并操作都被检查,可以同时创建 pre-merge 钩子来处理快速合并的情况:和上面操作一样,不过是从pre-merge-commit换成了pre-merge钩子。预期结果:合并操作应该成功进行。

2024-07-02 18:08:00 435 1

原创 Charles抓包工具踩坑记录

先下载证书到电脑上,然后传到手机保存,再进行安装。解决也很简单,按照提示,打开,然后。android手机上也要装证书。Charles抓包工具。还是那个pem证书文件。

2024-07-02 18:07:41 403

原创 监听和劫持 JavaScript 中的各种错误事件

要监听和劫持 JavaScript 中的各种错误事件,包括 error 事件、未处理的 Promise 拒绝(unhandledrejection),以及 console.error,可以按以下方式实现:监听 error 事件:当 JavaScript 运行时环境中出现未捕获的错误时触发。监听 unhandledrejection 事件:当 Promise 被拒绝但没有处理程序时触发。劫持 console.error:重写 console.error 方法来捕获并处理所有错误日志。以下是一个完整的示例

2024-06-26 13:48:09 379 1

原创 图片预加载和懒加载原理和实现

【代码】图片预加载和懒加载原理和实现。

2023-10-20 14:28:43 149

原创 用ts类型要描述 1到100范围的数字

Enumerate<N, Acc>:生成一个数字数组类型,该数组的长度为 N,其中数组中的元素从 0 开始递增到 N - 1。例如,Enumerate<5> 会生成类型 0 | 1 | 2 | 3 | 4。生成一个整数范围类型,该范围由从 F 到 T 的所有整数构成,并且包含 F 不包含 T。例如,IntRange<3, 6> 会生成类型 3 | 4 | 5。

2023-10-17 11:58:20 509

原创 ts 分发

(distributive)是指在条件类型中的联合类型上自动进行类型推断的机制。当使用条件类型操作联合类型时,TypeScript 会自动将联合类型中的每个成员都应用该条件类型。进行类型转换时,TypeScript 会自动将联合类型中的每个成员应用该条件类型。,它通过判断泛型 T 是否为任意类型来决定是否对其进行包装为。在上面的例子中,我们定义了一个泛型类型。然后,我们定义了一个条件类型。在 TypeScript 中,表示一个盒子,它包含一个值。

2023-10-11 16:23:08 257

原创 TypeScript 实践中的 Equals 类型的实现原理是什么?

是一个函数类型,其中 T 是一个泛型参数。它接受一个参数 arg,并根据 T 是否能够赋值给 X 进行条件判断。这个函数类型相当于一个标记函数,用于在类型级别上判断某个类型是否能够赋值给 X。它会通过对两个类型进行判断,返回一个布尔值来表示这两个类型是否相等。如果第一个函数类型能够赋值给第二个函数类型,也就是说,对于任意的 T,满足。是另一个类似的函数类型,用于在类型级别上判断某个类型是否能够赋值给 Y。条件,则整个表达式返回 true,否则返回 false。使用此条件类型,我们可以比较两个类型是否相等。

2023-10-11 16:20:23 242

原创 ts 练习

ts练习

2023-10-11 13:40:26 43

原创 用响应式 API 做简单状态管理

虽然这在简单的情况下是可行的,但从长远来看,可以被任何组件任意改变的全局状态是不太容易维护的。如果你有一部分状态需要在多个组件实例间共享,你可以使用。都会自动更新它们的视图。现在我们有了单一的数据源。在选项式 API 中,响应式数据是用。这个公开的 API 函数转为响应式。

2023-08-14 14:47:25 117

原创 深拷贝如何解决循环嵌套问题 js

上述代码中使用了 WeakMap 来作为缓存,以避免循环引用导致的无限递归。WeakMap 可以存储对象键和值之间的关联关系,并且不会阻止对象被垃圾回收。在 JavaScript 中,处理循环嵌套结构的深拷贝时,需要注意解决循环引用导致的无限递归问题。

2023-08-07 11:40:44 429

原创 patch-package 实现原理

patch-package 实现原理:如何保存恢复 node_modules 下的代码改动?

2023-07-27 11:37:14 121

原创 git 如何将其一分支未提交的修改传给另一个分支

如果有未提交的修改并且不想丢失它们,切换分支是不可行的。命令将未提交的修改保存为临时存储,并从当前分支上移除这些修改。在将修改应用到目标分支之后,你可以使用。命令删除已应用的临时存储。另外,如果你需要在切换分支之前创建一个新的分支来保存未提交的修改,可以使用。只想将未提交的修改内容文件传递给另一个分支,而不想包括其他文件或提交历史。这样,之前保存的未提交修改就会被应用到目标分支上。如果操作失误会导致代码丢失或者更复杂的情况。应用之前保存的未提交修改,可以使用。

2023-07-25 11:22:03 1972

原创 BroadcastChannel 如何使用

当你在分别的窗口或标签页中发送消息时,BroadcastChannel 会负责将消息传递给所有连接到相同频道的实例。这样,不同窗口之间就能够进行通信。’ 发送到所有连接到 ‘myChannel’ 频道的其他窗口或标签页。是一个用于在不同的浏览器窗口或标签页之间进行通信的接口。它允许你发送消息并在其他窗口或标签页上监听这些消息。这里创建了另一个 ‘myChannel’ 频道实例,并在收到消息时打印消息内容。首先,你需要在发送消息和接收消息的窗口或标签页中创建一个。在其他窗口或标签页中,你也需要创建相同的。

2023-07-19 10:31:37 758

原创 taro 获取当前url的参数

需要注意的是,前提是在路由跳转时将参数作为 URL 的一部分传递。然后,在目标页面的生命周期方法中通过以上方式获取参数,并进行相关的处理。这两种方法都可以在页面或组件的生命周期方法中使用,例如在。跳转到某个页面时,可以通过 url 参数传递参数。或其他生命周期方法中获取 URL 参数。来获取当前页面的 URL 参数。在 Taro 中,可以通过。

2023-07-17 11:43:20 2467

原创 对于vue3中的响应式数据使得lodash无法正确被使用

如果使用 Lodash 对响应式数据进行操作时,通常会出现无法正确监听响应式数据变化的问题。这是因为 Lodash 的函数并不是针对 Vue 3 新的响应式系统设计的。因此,可以使用vue3中的toRaw。在 Vue 3 中,由于其使用了新的响应式系统,与 Vue 2 不同,您需要使用 ref 或 reactive 函数来创建响应式数据。记录自己用到的代码块。

2023-06-15 09:04:29 479

原创 实现打字机的效果

元素,并向后端发起 text/event-stream 请求,建立与服务器的连接。随后,我们在前端监听 onmessage 事件,将服务器推送过来的数据流解析成一段段的文本,并逐步添加到上述。后端在接收到用户输入后,将其发送给AI模型进行处理,并将模型生成的文本逐步发送给前端。协议可以实现 chatGpt 打字机的效果,即实时展示AI回复的文本。在上述代码中,我们首先在前端页面中,创建了一个空的。对象,并将URL设置为与AI模型通信的端点。开头,并在每条消息之间添加换行符。元素中,模拟打字机的效果。

2023-06-12 17:07:10 537

原创 模拟实现useState的实现原理

具体来说,当组件第一次渲染时,React Hook 会创建一个内部的状态变量,并将其存储在当前组件的内存中。同时,由于状态变量是通过闭包保护起来的,因此也可以避免一些常见的状态管理问题,比如因为异步操作导致的数据竞争或者卡顿等问题。实际上,我们可以借助 React 中的 useState Hook 的原理,通过闭包和函数式编程的思想来手动实现一个 useState 函数。众所周知,react 函数式组件是一个纯函数,那么他就不应该会缓存数据,但是我们的state却能将数据保留,为何?

2023-04-26 21:56:41 198 1

原创 addEventListener 第三个参数

addEventListener 方法的第三个参数可以是一个布尔值、一个对象,或者是省略不填。

2023-04-22 14:42:28 2069

原创 实现二倍均值法 抢红包

2-0.01] 产生一个随机金额(注意要向下取整保留两位小数),并将其存入 amounts 数组中,同时更新剩余待分配的金额和红包个数。最后将剩余的金额作为最后一个红包的金额返回即可。该算法接受两个参数 totalAmount 和 totalNum,分别表示待分配的总金额和红包个数。在算法内部,循环 totalNum - 1 次,每次根据随机范围。需要注意的是,由于该算法使用了随机数,因此每次运行结果可能会不同。如果在实际应用中需要保证随机结果的一致性,可以通过生成一组随机种子来实现。

2023-04-21 16:36:07 116

原创 手动实现 apply

创建唯一的符号属性 fn 并将当前函数赋值给该属性,以避免覆盖原对象的同名属性。如果未传入要绑定的 this 对象,则默认为全局对象 window。判断传入的参数是否为数组或类数组对象,如果不是则抛出错误。删除 context 对象上的 fn 属性并返回执行结果。判断当前函数是否为函数类型,如果不是则抛出错误。调用函数,得到函数执行后的返回结果。使用 context。

2023-04-20 08:59:27 125

原创 fentch 如何中断请求

中断一个 fetch 请求可以使用AbortController实现。在执行fetch请求时,可以通过AbortController创建一个信号对象signal,然后将signal作为配置选项传递给fetch()方法,这样就可以在需要中止fetch请求时通过调用AbortController对象的abort()方法来中止请求。然后,在 fetch 请求时将 signal 作为配置选项传递给 fetch 方法。最后,当需要中止 fetch 请求时,调用 controller.abort() 方法即可。

2023-04-19 14:54:50 1109

原创 computed原理

在computed中,其属性值所依赖的数据对象会被设置为响应式数据,当这些响应式数据发生改变时,会通知存储computed的Dep对象,标记该computed为dirty。当某个响应式数据被访问时,会触发getter函数,将当前Watcher对象添加到该响应式数据的依赖列表中,当该响应式数据发生改变时,会触发setter函数,通知依赖列表中的所有Watcher更新。在Vue中,computed是一种常用的属性配置,它能够随着依赖属性的变化而自动更新值并缓存更新后的值,为我们带来很大的便利。

2023-04-19 09:49:27 888

原创 四次挥手中如果服务端拒绝会如何

在正常情况下,第二次挥手是服务端向客户端发送ACK报文段,表示服务端已经收到了客户端发送的FIN报文段,并且服务端也没有数据需要发送给客户端了。如果服务端在第二次挥手时拒绝关闭连接,比如服务端没有接收到客户端发送的FIN报文段而直接发送ACK报文段,这会导致客户端一直处于FIN_WAIT_2状态,无法正常关闭连接。此时,客户端可能会超时并重新发送FIN报文段,或者直接关闭连接。

2023-04-14 09:58:30 159

原创 手写实现 promise

需要注意的是,在实现中使用了数组来保存每个回调函数,因为 Promise 可能会存在多个 then 方法,当状态改变时需要执行所有的回调函数,而保存回调函数的数组也是实现 Promise 链式调用的关键。此外,这个实现还加入了 catch 和 finally 方法,用于捕获 Promise 的错误和添加无论 Promise 状态如何都会执行的逻辑。Promise 是 JavaScript 中用于处理异步操作的对象,我们可以手写实现一个符合 Promise A+ 规范的 Promise。

2023-04-12 17:45:36 779 1

原创 手动实现promise.all

用于存储每个 Promise 对象解决后的结果和已经解决的 Promise 数量。函数的解决值(resolved value)。对象的拒绝值(rejected value)。对象被拒绝(rejected),则整个。对象被解决后,它的返回值会被保存到。在上面的代码中,我们创建了一个名为。对象数组作为参数,并返回一个新的。函数中,我们首先定义了一个空数组。在上面的代码中,我们使用了一个。对象都有不同的超时时间。函数会将拒绝值作为其返回的。对象,最终输出结果为。对象的结果组成的数组。

2023-04-12 15:13:17 708

原创 shutdown_handler:[2]Unknown: POST Content-Length

这个错误出现的原因是文件上传出现错误,所需要上传的文件超出了限制,所以我们需要修改上传文件权限。修改办法,限制前端传入最大为5M以内或者修改。php上传照片发起post请求报错。找到php.ini文件,修改参数。

2023-03-03 14:28:46 793

原创 Syntax Error: TypeError: Cannot set property ‘parent‘ of undefined

但是经过长时间的查询解决方案发现是因为vue版本在下载包的过程中由2.6.11升级为2.7.14导致。所以解决办法是将package.json文件中将vue的版本给固定住也就是说。Vue2的项目重新down下来yarn之后 yarn serve 却报错。首先排查发现判断得出是less解析失败导致。

2023-03-02 11:52:22 3909 1

原创 pinia中onAction

onAction在特定情况下无法监听store中值的修改

2022-11-29 11:26:17 1651 1

原创 jcenter库中的依赖包无法下载

今天突然发现react-native项目打包失败,仔细查看发现是因为jcenter库中的代码无法下载,才明白nnd原来是jcenter跑路了,害得老子忙活了一下午。在这里有讲述全局替换jcenter库的方法,因为项目太多,一个项目一个项目地改太麻烦。这样子重新跑项目 就会发现jcenter库中的包都会被替换成maven.aliyun。里面的代码就直接copy上面图片的代码并根据自己的需要替换相应的库。不过针对项目少的可以直接更改单个项目,可以参考。找到用户下面的.guadle文件夹。

2022-10-31 18:58:30 485

原创 create-react-app 配置src绝对路径

记录一下,功能不多,够用即可

2021-12-08 14:58:07 590

原创 Vue data必须是函数,不能是对象

之前被问到了,知道必须是函数,但是没答出来为什么。组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data数据就应该被复制一次,之后,当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响。...

2021-12-03 09:38:56 238

原创 react Props不允许直接修改

react官方文档中说道,组件无论是使用函数声明还是通过class声明,都绝不能修改自身的props,props 作为组件对外通信的一个接口,为了保证组件像纯函数一样没有响应的副作用,所有的组件都必须像纯函数一样保护它们的props不被修改...

2021-11-30 10:07:52 1625 1

原创 mongoDB整理

创建集合db.createCollection('col')集合的删除db.collection.drop()增删查数据库插入一条数据db.col.insert({title: 'MongoDB', description: 'MongoDB 是一个 Nosql 数据库', tags: ['mongodb', 'database', 'NoSQL'], likes: 100})数据库插入多条数据db.products.insertMany( [

2021-09-03 16:39:43 130

原创 最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 <= m, n <= 200

2021-08-13 17:32:31 298

《计算机组成原理》实验指导书.docx

计算机组成原理是计算机专业的一门重要主干课程。课程的任务是使学生掌握计算要组成部件的工作原理、逻辑实现、设计方法有将各部件连接成整要的方法,建立CPU级和硬件系统级的整机概念,培养学生对计算机硬件系统的分析、开发和设计能力。该课程是计算机硬件系统课程的重要先修基础。

2019-06-09

空空如也

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

TA关注的人

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