自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小白

此博客只做为方便本人后续使用的时候做个记录 顺便分享给有需要的朋友

  • 博客(89)
  • 资源 (6)
  • 收藏
  • 关注

原创 深入浅出WebRTC:揭秘实时通信的黑科技

通过本文的深入浅出,相信你已经对WebRTC有了更深的理解。媒体捕获、实时传输、网络建立这三个环节如同通信的三板斧,虽然有些复杂,但只要踏踏实实一步步走,也能玩转WebRTC这个黑科技。在实际应用中,你可能还需要考虑信令服务器的搭建、安全性等问题,但这已经超出了我们今天的范畴。希望本文能够为你打开WebRTC这扇神秘的大门,让你在实时通信的领域里畅游自如。好了,小伙伴们,是时候把你的WebRTC技能装进口袋,去创造属于自己的实时通信奇迹了!

2023-12-09 13:30:00 1676

原创 Go语言的深度奥秘:编程的精妙巧思

Go语言以其独特的设计哲学、高效的并发模型和强大的工具链,为编程者提供了一种令人愉悦的编程体验。

2023-12-09 09:00:00 971

原创 Rust深入浅出:编程的深邃大海中的奇妙冒险

Rust深入浅出的编程之旅已经告一段落。在这个编程的深邃大海中,我们探索了生命周期的奇妙、Trait与泛型的巅峰、智能指针的魔法之光、并发编程的时空之旅、异步编程的优雅舞台、Rust与的魔法契约,以及生态系统的宝藏之地。

2023-12-08 09:00:00 967 1

原创 Go入门:探索编程的奇妙世界

在这场Go的大冒险中,我们一起探索了这门语言的轻盈与深邃。从安装Go的启程仪式,到goroutine的并发之舞,再到Go Modules的包的组织之舞,每一个环节都充满了乐趣和发现。希望你能在Go的奇妙世界中找到编程的乐趣,用这门语言去创造属于自己的编程奇迹。在编程的路上,愿你的代码轻盈而强大,bug永远无法阻挡你前进的步伐。加油,Go冒险者们!

2023-12-08 01:30:00 431

原创 Rust:入门指南与编程的奇妙冒险

在这场Rust的奇妙冒险中,我们一起踏上了一段编程的旅程。从安装Rust的仪式,到所有权和借用的冒险,再到Cargo的魔法仪式,每一个环节都充满了乐趣和挑战。希望你能在Rust的奇妙世界中找到编程的乐趣,用这门语言去创造属于自己的编程奇迹。编程的路上,愿你的代码奇妙而安全,bug永远无法逃脱你的代码之网。加油,Rust冒险者们!

2023-12-07 13:30:00 888 2

原创 MySQL注入防御大作战:建立坚不可摧的代码堡垒

MySQL注入是一种黑客通过在用户输入中注入SQL代码,以实现对数据库的非法访问的攻击手法。这种攻击可能导致敏感数据泄露、破坏数据库完整性,甚至系统崩溃。MySQL注入如同数据库的黑暗魔法,我们需要学会如何在这个魔法世界中建立强大的防御。通过本文的学习,我们了解了MySQL注入的危害,并学到了构建坚不可摧的代码堡垒的方法。在防范MySQL注入的战斗中,我们需要充分运用输入验证、参数化查询、审慎处理错误信息、审计和持续学习等方法,将黑客的攻击挡在系统之外。

2023-12-07 09:00:00 328

原创 Rust与Go:编程语言之争中的双雄对决

在Rust与Go的发展方向中,我们看到了两门语言各自的光芒。Rust以其性能和安全性为卖点,Go以其简洁和并发为特色。它们各有千秋,但又不是绝对对立的。在编程的世界里,我们可以灵活运用各种语言,因地制宜,发挥它们的优势。最终,无论你是Rust的拥趸还是Go的粉丝,都值得为这个多彩的编程舞台添砖加瓦。在编程的征途中,愿你的代码永远不崩溃,bug永远逃不出你的代码网。加油,编程骑士们!

2023-12-06 13:30:00 652

原创 Tauri魔法指南:从零开始开发一个桌面应用

通过这篇Tauri魔法指南,我们深入浅出地探索了如何使用Tauri从零开始开发一个桌面应用。从安装仪式到桌面奇迹,我们一起学习了Tauri的魔法,看到了前端在桌面领域施展魔法的可能性。愿每一位前端小巫师都能在Tauri的引导下,轻松而愉快地走进桌面应用的奇妙冒险之旅。愿你的桌面应用在用户的电脑上绽放出最璀璨的魔法之花!

2023-12-06 09:00:00 685

原创 Tauri深入浅出:前端的桌面奇迹

Tauri是一场前端的桌面奇迹,是一个让我们穿越到桌面应用世界的神奇工具。从安装仪式到桌面奇迹,我们用深刻的洞察力和诙谐的语言,揭示了Tauri的神秘面纱。愿每一位前端开发者都能在Tauri的引导下,轻松而愉快地走进桌面应用的奇妙冒险之旅。前端的桌面奇迹,即将在你的指尖中绽放!

2023-12-05 13:30:00 802

原创 穿越前端边界:TAURI与桌面应用的奇妙冒险

在Tauri的引导下,我们前端开发者有了新的冒险机会。不再局限于浏览器的框架,我们可以在桌面应用的领域里施展代码的。

2023-12-05 09:00:00 656

原创 前端与VR/AR:代码的魔法穿越

前端开发者们,你们准备好了吗?VR/AR时代已经来临,代码的魔法穿越时空。通过WebGL、WebXR、A-Frame和AR.js,我们前端开发者将成为这场魔法冒险的勇士。在前进的路上,不要忘记代码的本质,让魔法为用户带来奇迹的同时,保持着我们前端开发者的幽默感。穿越吧,前端的勇士们,让我们一起畅游在代码的魔法时代!

2023-12-04 20:00:00 744

原创 前端未来:代码的魔法世界

未来前端,将是一个充满魔法的世界。VR/AR的奇妙邂逅、量子计算的时空穿越、AI的智能共舞和区块链的信任卫士,这些都将成为前端开发者的新玩具。前端代码不再是枯燥的字符和标签,而是一种能够创造奇迹的魔法。让我们拭目以待,一起探索前端的未来,笑看技术的变幻莫测。前端,代码的魔法世界,等你来探险!

2023-12-04 14:50:05 373

原创 用Python实现贪吃蛇游戏

贪吃蛇是一款经典的游戏,玩家通过控制蛇头的方向来吃食物并不断增加蛇的长度。本文将分块讲解实现贪吃蛇游戏的逻辑,并附上完整的Python代码,考虑所有情况,让您了解游戏的实现过程。在这个部分,我们将导入必要的模块,设置游戏窗口大小和网格大小,并定义一些游戏所需的常量。在这个部分,我们将定义游戏的主循环,并处理事件,包括退出游戏、键盘输入控制蛇的移动等。在这个部分,我们将定义函数来生成食物的随机位置,并控制蛇的移动。在这个部分,我们将定义函数来绘制游戏区域的网格以及蛇的身体。

2023-07-21 09:37:05 8216 4

原创 Python数据分析:从泰坦尼克号乘客生存率探索数据洞察

我们将使用一个名为"Titanic"的数据集,该数据集包含了泰坦尼克号上乘客的信息,包括年龄、性别、船票等级、是否生还等。通过对"Titanic"数据集的分析,我们可以得出一些结论:女性的生存率明显高于男性,头等舱乘客的生存率也较高。现在我们可以进行数据分析,例如统计幸存者和非幸存者的人数,并分析不同因素与生存率的关系。接下来,让我们进行数据探索,查看数据的基本信息,以及处理缺失值和不必要的列。首先,我们需要下载"Titanic"数据集,并使用pandas库读取数据。步骤2:数据探索与清洗。

2023-07-20 09:40:28 587

原创 每日一题:找出数组中第 k 大的元素

该算法的平均时间复杂度为 O(n),其中 n 是数组的长度。在快速选择算法中,每次选取一个基准元素进行分区,每次分区的时间复杂度为 O(n)。在平均情况下,每次分区可以将数组划分为大小接近一半的两个部分,因此平均需要递归 log(n) 次。因此,总的平均时间复杂度为 O(n + log(n)),近似于 O(n)。在最坏情况下,如果每次分区的基准元素都是当前数组中的最小或最大元素,算法的时间复杂度将退化为 O(n^2)。但由于基准元素的随机选择,最坏情况的出现概率较低。

2023-07-13 09:30:00 244

原创 每日一题:反转链表

该算法的时间复杂度为 O(n),其中 n 是链表的长度。在算法的执行过程中,需要遍历一次链表,并对每个节点进行指针的反转操作。因此,总的时间复杂度是线性的。

2023-07-12 09:30:00 227

原创 每日一题:寻找缺失的数字

该算法的时间复杂度为 O(n),其中 n 是序列的长度。在算法的执行过程中,需要遍历一次数组来计算实际的元素和,以及进行一些基本的数学运算。因此,总的时间复杂度是线性的。

2023-07-11 09:30:00 201

原创 每日一题:判断一个字符串是否是有效的括号序列

该算法的时间复杂度为 O(n),其中 n 是字符串的长度。在算法的执行过程中,我们需要遍历一次字符串,并在栈上进行入栈和出栈操作。由于每个字符最多入栈和出栈一次,因此总的时间复杂度是线性的。

2023-07-10 09:30:00 266

原创 每日一题:合并两个有序数组

该算法的时间复杂度为 O(m + n),其中 m 和 n 分别是两个数组的长度。在算法的执行过程中,我们需要遍历两个数组,并比较元素大小,然后将元素添加到合并后的数组中。因此,该算法的时间复杂度与两个数组的总长度成线性关系。

2023-07-09 09:30:00 122

原创 每日一题:最长连续递增子序列长度

该算法的时间复杂度为 O(n),其中 n 是数组的长度。在算法的执行过程中,我们只需要遍历一次数组,对于每个元素,可以在常数时间内进行比较和更新操作。因此,该算法的时间复杂度是线性的。

2023-07-08 09:30:00 143

原创 每日一题:找出数组中的两个数,使其和等于给定的目标值。

该算法的时间复杂度为 O(n),其中 n 是数组的长度。在算法的执行过程中,我们只需要遍历一次数组,对于每个元素,可以在常数时间内进行查找操作。因此,该算法的时间复杂度是线性的。

2023-07-07 10:45:41 691

原创 红黑树:自平衡的二叉搜索树

解决方案:将父节点和叔叔节点都变为黑色,将祖父节点变为红色,然后将当前节点指向祖父节点,并以祖父节点为基准进行进一步调整。这样可以保持性质5。当插入的节点的父节点是红色时,此时可能破坏了性质4,即一个红色节点的子节点不能是红色。通过以上操作,我们可以保持红黑树的性质,并且在最坏情况下,红黑树的高度仍然保持在O(log n)的范围内,保证了高效的插入和搜索操作。当我们向红黑树中插入一个新节点时,首先将其插入为一个红色节点,然后通过一系列的旋转和变色操作来调整树的结构,以保持红黑树的性质。这样可以保持性质5。

2023-05-31 11:15:39 709

原创 如何使用 rrweb 进行前端录屏

rrweb 是一个开源的 JavaScript 库,它可以帮助我们记录用户在浏览器中的所有行为并生成一个可重放的回放文件。在本文中,我们将介绍如何使用 rrweb 进行前端录屏,并生成可重放的回放文件。在实际应用中,我们可以将录制文件上传到服务器,并使用 rrwebPlayer 对象来回放录制内容,从而帮助我们分析用户行为、调试网站问题等。在上面的代码中,我们使用了 Vue 3 的 setup 函数,并通过 onMounted 和 onUnmounted 生命周期钩子来启动和停止录制。

2023-04-28 09:15:00 988 1

原创 前端异常监控和容灾:保障应用程序稳定性和可用性

前端容灾可以保证网站或应用程序在出现异常情况时,能够自动切换到备份服务器、实现负载均衡和缓存机制等措施,提高服务的可用性和稳定性。监控系统是一种全面的前端异常监控技术,可以监控网站或应用程序的各种异常情况,并及时发出告警。这些系统可以自动捕获 JavaScript 异常、接口异常、资源加载异常等,并提供丰富的数据分析和可视化功能。前端异常监控是指监控网站或应用程序在用户使用过程中出现的异常情况,并及时进行记录和处理。在监控过程中,可以使用各种监控工具和技术,如错误日志、监控系统、数据分析等。

2023-04-27 09:15:00 743

原创 自建前端监控埋点体系

因此,以上示例只是一个简单的前端监控埋点体系的示例,需要根据具体业务场景和需求进行优化和完善。另外,在实际应用中,需要根据具体的业务场景和需求进行埋点设计和数据处理。例如,为按钮添加点击事件的监听器,记录点击事件的时间和相关信息。定义监控指标:根据应用程序的需求,定义需要监控的指标和事件。例如,页面加载时间、点击事件、页面切换等。需要注意的是,在实现监控埋点系统时,还需要考虑数据的安全性和可靠性,确保数据不会被恶意篡改或丢失。设计埋点方案:为页面加载事件和按钮添加相应的监听器,记录事件时间和相关信息。

2023-04-26 09:15:00 1162

原创 怎么编写前端监控工具

前端监控工具可以帮助开发人员了解页面的性能指标、用户行为和错误情况,从而更好地优化前端应用程序。开发人员可以使用类似的代码来监控其他类型的错误,例如未处理的 Promise 异常或资源加载错误。开发人员可以使用各种方法和技术来编写自己的监控工具,或者使用现有的第三方工具来监控和报告页面性能和用户行为。前端监控工具还可以捕获并报告页面上的错误,以便开发人员可以快速发现并修复这些问题。除了收集页面性能指标之外,前端监控工具还可以监控用户行为,以了解用户与页面的交互情况。

2023-04-25 16:51:43 579

原创 Promise和Promise.all原理和实现 你知道吗

JavaScript Promise 是一种用于处理异步操作的对象,它可以让你更加优雅和简单地处理异步操作的结果。Promise.all 则是一个可以将多个 Promise 合并为一个的工具,可以实现并行处理多个异步操作的结果。下面我们来介绍 Promise 和 Promise.all 的原理及实现。

2023-04-22 09:15:00 748

原创 npm install xxx的执行过程及示例

package.json文件是每个npm软件包的主配置文件,它包含有关软件包的信息,例如名称,版本,依赖项和开发人员脚本等。在安装软件包时,npm还可以执行其他一些任务,例如缓存软件包以提高后续安装速度,验证软件包的完整性和安全性等。安装软件包和其依赖项后,npm将在项目的“node_modules”文件夹中创建软件包的目录结构。下载软件包和其依赖项后,npm将根据软件包中的“package.json”文件安装软件包。如果本地npm缓存中不存在该软件包,则npm将从npm存储库中下载该软件包。

2023-04-22 09:15:00 1402

原创 线段树懒惰标记的实现及应用

在构建线段树时,对于每个节点,我们可以将其左子树和右子树的最大值或最小值相比较,得到该节点的最大值或最小值。在构建线段树时,对于每个节点,我们可以将其左子树和右子树的总和或乘积相乘,得到该节点的总和或乘积。在构建线段树时,对于每个节点,我们可以将其左子树和右子树的元素之和相加,得到该节点的元素之和。在构建线段树时,对于每个节点,我们可以将其左子树和右子树的异或和异或起来,得到该节点的异或和。在构建线段树时,对于每个节点,我们可以将其左子树和右子树的最大值和最小值分别合并,得到该节点的最大值和最小值。

2023-04-21 09:15:00 413

原创 使用 JavaScript Promise 和 Promise.all 处理异步操作

JavaScript Promise 和 Promise.all 是用于处理异步操作的重要工具。Promise 是一种表示异步操作的对象,它可以让你更加优雅和简单地处理异步操作的结果。Promise.all 则是一个可以将多个 Promise 合并为一个的工具,可以实现并行处理多个异步操作的结果。

2023-04-20 17:49:17 186

原创 线段树:一种高效的区间查询数据结构

在update方法中,我们首先判断当前节点代表的区间是否是我们需要更新的位置,如果是,我们直接将该位置的值更新为指定的值。在这个实现中,我们使用了一个数组来存储树的节点,其中tree[i]表示以i为根的子树所代表的区间的和。在初始化时,我们递归地构建了整个线段树,然后我们就可以使用update方法来更新指定位置的值,使用query方法来查询指定区间的和。它将一个区间划分成多个较小的区间,并对每个子区间维护一些预处理信息,这些信息可以帮助我们快速地回答各种类型的区间查询问题。

2023-04-20 09:21:53 231

原创 回溯算法及其应用

backtrack函数则是回溯算法的核心,它用于递归地搜索解空间,并在搜索过程中记录可能的解,然后验证这个解是否符合要求。通过回溯算法,我们可以找到数独问题的一个解,如果数独问题有多个解,回溯算法也可以找到所有的解。对于每一个空格,我们依次尝试填入1到9的数字,并检查填入的数字是否合法。总之,回溯算法是一种常用的求解问题的方法,它可以用于求解各种类型的问题,包括数独、八皇后、0/1背包等等。对于数独问题,回溯算法的时间复杂度取决于解的数量,一般来说解的数量不会太多,因此回溯算法是一个有效的求解方法。

2023-04-19 09:15:00 513

原创 排序+双指针:高效解决数组和链表相关问题

通过先将数组或链表排序,然后使用双指针遍历,我们可以解决很多常见的问题,如查找两个数的和等于目标值,查找三个数的和等于目标值,查找最接近目标值的三个数等。现在我们需要找到这个数组中两个数的和等于给定的目标值,如果存在这样的两个数,就返回它们的下标。在遍历的过程中,如果找到了两个数的和等于目标值,就返回它们的下标。而双指针的思路则是使用两个指针分别指向数组或链表中的不同位置,然后根据指针的移动来解决问题。结合排序和双指针的思路,我们可以先将数组或链表进行排序,然后使用双指针来解决问题。

2023-04-18 09:15:00 264

原创 动态规划算法及其在JavaScript中的实现

当s1[i-1]不等于s2[j-1]时,dp[i][j]取决于前面的状态,可以选择从dp[i-1][j]或者dp[i][j-1]转移过来,因为最长公共子序列的长度取决于前面的字符是否相同。动态规划算法的关键是将问题分解为子问题,并用递推的方式求解子问题的最优解,从而推导出原问题的最优解。动态规划算法的时间复杂度与状态的数量相关,通常来说,状态的数量等于子问题的数量,而子问题的数量通常等于问题的规模的某个幂次,因此动态规划算法的时间复杂度通常是O(n^k),其中n为问题规模,k为子问题的数量。

2023-04-15 09:15:00 545

原创 双指针算法的高级用法及示例

在一些情况下,我们可能需要使用双指针的高级用法,例如快慢指针和滑动窗口。本文介绍了双指针的高级用法,并提供了 JavaScript 示例代码,希望能够帮助你更好地理解和应用双指针算法。快慢指针是一种双指针的高级用法,它通常用于链表的操作中。快指针和慢指针同时从链表的头部开始遍历,快指针每次遍历两个节点,慢指针每次遍历一个节点。滑动窗口是一种双指针的高级用法,它通常用于字符串或数组的操作中。滑动窗口指的是一个固定大小的窗口,在字符串或数组中从左往右滑动,窗口内的内容不断发生变化。中所有字符的子串的起始位置。

2023-04-14 09:15:00 318

原创 Python 3.x教程:如何使用Python将图片转为漫画风格?

漫画效果生成的效果会因为原始图片的不同而有所差异,因此可能需要对代码中的参数进行微调以达到最佳效果。通过不断尝试和调整,你可以使用Python将你的图片转换为独特的漫画风格。在本文中,我们将介绍如何使用Python将图片转换为漫画。以上代码读取名为input.jpg的图片,将其转换为灰度图像,然后使用Canny算法检测边缘。以上代码将名为input.jpg的图片转换为漫画效果,并将生成的漫画效果图片保存为output.jpg。最后,我们可以使用cv2.imwrite函数将生成的漫画效果图片保存到本地。

2023-04-13 09:15:00 1430

原创 使用Python自动下载网页中的M3U8链接并转换为MP4格式

通过以上的步骤,我们可以使用Python自动下载网页中的M3U8链接,并将其转换为MP4格式。在本文中,我们将介绍如何使用Python获取网页中的M3U8链接,并自动下载M3U8文件和其中的所有.ts文件,并将它们合并为一个MP4文件。我们可以使用Requests库下载M3U8文件,并使用正则表达式提取其中的所有.ts文件的链接。我们可以使用FFmpeg将所有的.ts文件合并为一个MP4文件。以上代码使用FFmpeg将所有的.ts文件合并为一个MP4文件,并将其保存为output.mp4。

2023-04-12 09:15:00 3042

原创 用JavaScript实现最大子数组和的动态规划算法

接着,我们定义状态转移方程为dp[i] = max(dp[i-1]+arr[i], arr[i]),即以arr[i]为结尾的最大子数组和,要么是以arr[i-1]为结尾的最大子数组和加上arr[i],要么是arr[i]本身。动态规划算法的核心思想是将问题分解成重叠的子问题,并通过存储和复用已解决的子问题的结果来避免重复计算,从而提高算法的效率。例如,对于数组[-2,1,-3,4,-1,2,1,-5,4],我们希望找到一个子数组,使得这个子数组的和最大。我们可以通过滚动数组的方式,减少使用的空间。

2023-04-11 09:15:00 435

原创 JavaScript中的代理和反射:实现数据绑定和事件监听

在JavaScript中,代理(Proxy)和反射(Reflect)是两个重要的概念,它们可以用于实现数据绑定和事件监听等功能。在本文中,我们将会探讨代理和反射的概念,以及如何使用它们实现数据绑定和事件监听。

2023-04-10 09:15:00 545

原创 JavaScript中的Proxy和Reflect对象:拦截器和捕获器的使用

JavaScript 中的 Proxy 和 Reflect 是 ES6 中新增的两个对象,它们可以帮助我们在对象访问和操作时拦截并执行自定义逻辑。在本文中,我们将讨论 Proxy 和 Reflect 的捕获器(也称为拦截器)的用法,并通过示例来说明它们的作用。

2023-04-09 09:30:00 713

shims-vue.d.ts

解决ts引入vue爆红

2022-01-05

python实现微信机器人颜值评分

python实现微信机器人颜值评分

2021-12-06

深拷贝和浅拷贝一些例子

深拷贝和浅拷贝一些例子

2021-04-20

mapbox绘制航线图

使用地图绘制航线图

2021-04-19

canvas.html

主要是利用html5 canvas 绘制商品出货单

2020-01-03

多主流地图切片下载器

支持多主流地图切片下载 包括但不限于 谷歌 高德 百度 天地图等 多线程下载 速度超快 支持海量地图下载 支持将下载的地图转换为ArcGIS切片缓存格式 支持将下载的地图转换为MBTiles格式离线地图包 支持将下载的地图转换为OruxMaps离线地图包 支持将下载的地图转换为SQLiteDB格式离线地图包

2019-12-30

空空如也

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

TA关注的人

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