自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 递归法求二叉搜索树的最近公共祖先

笔记:p和q其中的一个在 LCA 节点的左子树上,另一个在 LCA 节点的右子树上。节点p,q的最近公共祖先(LCA)是距离这两个节点最近的公共祖先节点。如果条件 2 和条件 3 都不成立,这就意味着我们已经找到节。都在右子树上,那么以右孩子为根节点继续 1 的操作。都在左子树上,那么以左孩子为根节点继续 1 的操作。考虑的是节点的深度。下面这张图能帮助你更好的理解。

2025-08-22 11:47:48 21

原创 N皇后问题代码实现

N皇后问题源自国际象棋规则,皇后作为攻击范围最广的棋子(可沿行、列、斜线移动),问题要求在一个N×N的棋盘上放置N个皇后,使其彼此无法攻击。该问题最早由国际象棋棋手马克斯·贝瑟尔于1848年提出八皇后问题(N=8的特例),后推广至任意N值,成为算法设计中的基础案例。‌是一个经典的计算机科学组合优化问题,要求在N×N的棋盘上放置N个皇后,使得任意两个皇后不互相攻击(即彼此不同行、不同列且不在同一斜线上)。

2025-08-21 15:20:57 253

原创 中心扩展法求最长回文子串

回文中心的两侧互为镜像。因此,回文可以从他的中心展开,并且只有 2n-1 个这样的中心(一个元素为中心的情况有 n 个,两个元素为中心的情况有 n-1 个)。偶数长度的回文串以该字符右侧的空字符串为中心。奇数长度的回文串以该字符为中心;

2025-08-19 12:14:18 124

原创 凸函数与损失函数

这是 Deeplearning.ai 课程中出现的碗,其中 J(w, b) 是逻辑回归(Logistic Regression)的损失函数,这里假设只有两个参数 w 和 b,纵轴是 J(w, b) 的值。凸函数是数学中的一个重要概念,它描述了一种特殊的函数曲线形状。凸函数指的是在其定义域内,任意两点的连线上的值都不小于函数在这两点上的值的函数。如下图,如果损失函数「就像这个碗,它又大又圆」,那么我们很容易就能发现,这个损失函数的最低点有且只有一个,就是碗底。粗略的说,这种长得像碗的函数就是。

2025-08-17 16:53:11 103

原创 浅谈三数之和的再优化问题

然后我们选择一个人做 C 位,既然是 C 位,那么就需要左右各有一个人。先选择队伍最左边(最小值)和队伍最右边(最大值)两个人,加上你,算一下总和。如果大于 0,说明实力太强了,就把就把右侧的人选调左一位,反之,则调整左边的人选,增强一下实力。当某边选到紧挨着你的人的时候,就意味着组队结束,以你为 C 位的所有可能都已经尝试完毕了。首先安排所有人按照顺序排队站好,这是一个需要花时间的操作,不过磨刀不误砍柴工,付出这个时间还是值得的。现在已经想到了可用的通用方案,根据题目的特点,看看还有哪里可以做一些优化。

2025-08-16 13:25:43 186

原创 局部变量与全局变量的关系及应用

现在 myvar2.sh 成功继承了环境便令 MYVAR,但是在 myvar2.sh 内改变 MYVAR 并不会影响全局的 MYVAR。如果想让脚本和终端在同一环境下执行程序(此时在脚本内改变变量内容就会影响到整个环境),我们可以。环境变量所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量;这个脚本,具体的做法是在执行脚本的指令前面加一个。以上就是本文的三个板块。

2025-08-15 20:13:15 318

原创 人工智能时代,有多少智能就有多少人工

在某个纪实采访中,管理标注员的负责人用特斯拉(Tesla)的自动驾驶事故鼓励员工,2016 年,一辆自动驾驶模式下的特斯拉发生车祸事故。最需要 AI 去做的事情, AI 反而无能无力,而我们为了能让 AI 取代劳动密集型的工作,得先为 AI 服务,付出密集、辛勤的劳动,这让数据标注工作看上去有点反乌托邦的“魔幻”感觉。在一些专业数据标注公司,机器占30%,而人工标注占比达到70%左右。这就像一个悖论,AI能否进化的更为智能某种程度上取决于这些标注工作的人,而这个工作却是最不智能、最没有技术含量的。

2025-08-08 17:34:09 273

原创 实际开发中的面向对象编程(OOP)

如大家所知,C++是一种强大且灵活的编程语言,支持多种编程范式,使得开发者能够选择最适合特定问题的解决方案。在实际开发中,面向对象编程、泛型编程、函数式编程和元编程是最常用的几种范式。不可否认,面向对象编程 是C++ 的核心编程范式,通过类和对象的概念,将数据和操作数据的方法封装在一起,使代码具有更好的组织性和可维护性。通过类封装数据和操作,隐藏内部实现细节,只对外暴露接口。今天的文章分享就到这里了,希望对大家的学习和工作有所帮助~方法,展示了多态的威力。今天我们只讲:面向对象编程。

2025-06-27 10:24:06 118

原创 AI辅助编程之代码生成

虽然我对脚本语言一窍不通,但只要说清楚需求,AI 就能帮忙写出一份可执行的脚本。就实际使用情况来看,AI 目前很难做到 100% 实现需求,但能够搭出一个能够运行的基本框架,在这个基础上,再对程序进行一些必要的修改就能帮助我们完成任务了。可以看出,AI 在写脚本方面还是比较在行的。不过也会遇到 AI 写出 bug 的场景,此时我们可以让它接着修改,也可以根据代码逻辑手动调整。举个例子,笔者在工作中有时会收到大批量的压缩文件,一个个解压这些文件有些耗时,我希望能够有个一键解压所有文件的脚本。

2025-06-26 11:58:55 341

原创 Pareto前沿优化的具体操作

举个例子,在骑手短缺的区域,系统可以自动降低送达时间的权重,增加空间因子的比重,以确保更多订单能被及时接单。如果遇到恶劣天气,系统可以优先分配订单给经验更丰富的骑手,并增加补偿,以减少骑手的风险和顾虑。:系统会计算当前所有可派发的订单,并筛选出一批“最优”订单,即在所有目标(时间、距离、收益)之间取得平衡的订单。:在不同的城市、天气条件和订单需求下,系统可以自动调整派单策略,而不是使用固定的计算方式。:结合图神经网络分析道路状况、天气、订单密度等因素,并据此优化派单逻辑。

2025-06-25 11:36:34 156

原创 运用JUC包来解决并发问题

最后,还有 StampedLock,它除了支持悲观读写 read-Lock/writeLock,还支持乐观读 tryOptimisticRead,也就是不加锁,直接读取数据,但需要在读取之后对比一下读取前后的版本号,也就是 stamp,判断是否在读取的过程中发生了写入。与之配套的Condition对象,用于替代 wait tify 机制,并且通过 Condition 的 await 函数还可以设置等待被唤醒的超时时间,如果超时没有被人唤醒,就自己醒过来。如大家所知,除了synchronized关键字,

2025-06-24 18:16:38 155

原创 html网页设计入门需要背完所有CSS属性吗?

只要掌握常用的几十个属性,就能应对 90% 的网页设计场景!今天的文章分享就到这里了,希望对大家的学习和工作有所帮助~三、遇到新需求,现学现查 MDN 或各种官方文档就能解决;一、理解基本布局逻辑(float 、flex);会炒蛋的人,可以做出蛋炒饭、蛋包饭、番茄炒蛋。会用 flex 的人,可以做出各种网页布局!二、知道什么时候该用什么属性;

2025-06-24 11:20:50 211

原创 运用Flex布局写更优雅的导航栏

实际上,当你熟悉了 float 后,就可以自然过渡到现代更流行的 Flex 布局,因为Flex 不仅写法简单,效果更好,而且响应式设计(适配手机端)也更方便!最后,align-items: center 的应用,使得 Logo 和链接在垂直方向上实现了。这些属性的结合使用,不仅提高了页面布局的灵活性和响应性,还为用户提供了更加舒适的视觉体验。今天的文章分享就到这里了,希望对大家的学习和工作有所帮助哦~的效果,确保了页面元素的均衡布局,增强了视觉上的。,进一步提升了页面的整体协调性和。

2025-06-23 11:59:37 287

原创 运用python实现计算标准偏差函数的方法

如大家所知,标准偏差(Std Dev,Standard Deviation) -统计学名词。一种度量数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。标准偏差的大小可通过标准偏差与平均值的倍率关系来衡量。好了,今天的文章分享就到这里了,希望对大家的学习和工作有所帮助~

2025-06-21 10:51:59 227

原创 前端的安全隐患之API恶意调用

对于资深开发者而言,这几乎是一种本能,无需过多解释。然而,初入职场的开发新手可能会感到困惑:为何要对前端传来的数据持有如此不信任的态度?难道人与人之间连基本的信任都不存在了吗?

2025-06-20 10:44:59 189

原创 算法工程师的工作日常,需要具备哪些能力?

能力的话,第一是专业技术能力,即你最起码要懂一些用到的算法模型原理,掌握基本的算法能力。第三是数据分析能力,算法不管做怎样的优化,都需要建立在数据的基础上,这也是算法工程师必备的一个技能。作为算法工程师的话,我们平常的工作更多的是去做一些数据分析,调研目前的业务痛点,再去做技术方案的选型,最后将相关的模型和系统开发上线,有效提升和转化站点流量。但算法很有可能是你在那里鼓捣了几个月的技术、模型,最后发现线上效果好像并没有提升,所以说,还是会需要有去不断面对不确定性的这种心态在。

2025-05-19 09:05:43 243

原创 WebSocket解决方案的一些细节阐述

实际上,集成WebSocket的方法都有相关的工程挑战,这可能会影响项目成本和交付期限。但是,功能蠕变通常意味着基本的实时体验需要对共享实时体验和协作功能提出额外的要求。另一个常见问题是,原始设计在产品获得足够的市场反馈以了解其发展方向之前,就将重大约束嵌入到产品中。错过的消息需要传递,而不重复已处理的消息。整个体验需要完全无缝。但是,如果产品不能满足其创造的需求,那么快速进入市场并获得早期成功可能会弄巧成拙。有一些真正复杂的工程问题需要解决,以保证排序和恰好一次语义所需的数据完整性。

2025-05-18 09:33:32 536

原创 栈的计算方式和表达方式

好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!最后处理运算符栈中剩余的符号,依次出栈即可。顺序遍历中缀表达式。遇到数值则直接输出。遇到运算符分三类处理。

2025-05-15 16:25:40 220

原创 浅谈编译型语言的运用

如大家所熟悉的,程序在执行之前需要一个专门的编译过程,把程序编译成机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了,程序执行效率高,依赖编译器,如 C/C++、Golang 等,它们可以编译后生成 .exe文件,之后无需再次编译,直接运行 .exe文件即可。编译型语言往往会花费较长的编译时间,但编译完成后,会有很好的运行性能,因此,编译型语言编写的程序每次修改都要再次经历一遍完整编译过程后,修改效果才能生效,迭代时间会比解释型语言要长。

2025-04-11 12:30:00 204

原创 源代码所指向的程序文本问题

指的是由程序员使用各种编程语言编写的还未经编译或者解释的程序文本,对于计算机而言,源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。编译是把源代码的每条语句都编译成机器语言, 并最终生成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,在运行时会有很好的性能;解释是只在执行到对应的语句时才会将源代码一行一行的解释成机器语言,给计算机来执行,所以使用解释器来执行的语言也被称为动态语言。,由于他们的操作方法不同,所以会有不同的运行效果。

2025-04-10 16:15:00 349

原创 函数作为参数传递

如大家所知,把函数当做参数传递,这代表我们可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数参数中,这样一来可以分离业务代码中变化与不变的部分,其中一个重要的应用场景就是回调函数。回调函数的应用不仅只在异步请求中,当一个函数不适合执行一些请求时,我们也可以把这些请求封装成一个函数,并把它作为参数传递给另一个函数,“委托” 给另一个函数来执行。

2025-04-09 19:45:00 196

原创 进程的阻塞原语与撤销原语

一个正在运行的进程因其所申请的资源未得到满足,而被迫称为阻塞状态等待阻塞事件的完成,进程的这种状态变化是通过运行进程本身调用阻塞原语来实现的。阻塞原语的实现过程是首先中断 CPU 对当前运行进程的执行,将运行进程的 CPU 现场信息放到内存该 PCB 中的 CPU 状态保护区,然后将该运行进程置为阻塞状态,并把它插入到进程阻塞队列中 ,接下来系统执行进程调度程序将 CPU 分配给另一个就绪进程。

2025-04-08 18:45:00 388

原创 进程控制块PCB中的信息

8、PCB 现场保护区,即当进程因为某种原因放弃使用 CPU 时,需要将当时(执行的断点处)的 CPU 各种状态信息保存起来(暂存于内存中操作系统的内核区),以便该进程再次得到 CPU 时,能够恢复当时的 CPU 各种状态,即复原当时的现场和环境,使得该进程可以不受影响地由断点处恢复运行。进程是程序在 CPU 上的一次执行过程,所以进程除包含正在执行的程序和数据段外,还包括此次执行的“环境”信息,如 CPU 状态,核心栈数据以及该程序在内存的存储空间等,而这些信息都保存在进程控制块 PCB 中。

2025-04-07 15:45:00 172

原创 浅谈在HTTP中GET与POST的区别

GET 请求方式符合幂等性和安全性,GET请求方式是做查询操作,因此不会改变数据库中原有的数据,认为符合安全性,事实上 GET 请求可能会出现多次请求的结果不一致(例如在两次请求中间对数据库中的数据做了更改),从这来说不符合幂等性的定义,但是因为 GET 请求只是查询数据库,不会对数据库做任何更改,因此也可以认为是幂等的。其次,POST 请求方式每次获得的结果都可能不一样,因为 POST 请求是作用在上一级的 URL 上的,每一次请求都会添加一份新的资源,或者修改资源信息。

2025-04-06 18:15:00 586

原创 异步函数 async/await的认识与学习

如大家所了解的,async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。这时候,正常情况下,await 命令后面是一个 Promise 对象,如果不是,会被转为一个立即 resolve 的 Promise 对象。以上代码指定 300ms 后输出 Hello。

2025-04-03 20:30:00 383

原创 WeakMap结构的键名问题

它的键名所引用的对象都是弱引用,即垃圾回收机制不将该引用考虑在内,因此,只要所引用的对象的其他引用被清除了,垃圾回收机制就会释放该对象所占用的内存。一个典型的应用场景是,在网页的 DOM 元素上添加数据时就可以使用 WeakMap 结构,当该 DOM 元素被清除,其对应的 WeakMap 记录就会自动被移除。需要注意的是:WeakMap 的专用场景就是它的键所对应的对象可能会在将来小时,WeakMap 结构有助于防止内存泄露。但是,WeakMap 弱引用的只是键名而不是键值,键值依然是正常引用的。

2025-04-03 07:00:00 277

原创 Function-bind绑定函数

其实 ,call 和 apply 也可以重新绑定 this ,但是 bind 会返回一个新的函数,并将传入的参数和函数绑定起来,而 call 和 apply 则是使用新的 this 去直接调用、执行函数。

2025-04-02 09:04:02 382

原创 JavaScript装饰者模式

接下来 把当前的 this 保存起来,这个 this 指向原函数,然后返回一个“代理”函数 ,这个“代理”函数只是结构上像代理而已,并不承担代理的职责(比如控制对象的访问等)。它的工作是把请求分别转发给新添加的函数和原函数,且负责保证它们的执行顺序,让新添加的函数在原函数之前执行(前置装饰),这样就实现了动态装饰的效果。1、必须要维护中间变量(_load 变量),虽然看起来并不起眼,但是如果函数的装饰链较长,或者需要装饰的函数变多,这些中间变量的数量也会越来越多。2、会遇到 this 被劫持的问题。

2025-04-01 14:52:06 238

原创 WebSocket通信协议

WebSocket 是浏览器端和服务器端建立实时连接的一种通信协议,可以在服务器和浏览器端建立类似 socket 方式的消息通信。优势是方便服务器和浏览器之间的双向数据实时通信,WebSocket 在网络中传输的最小单位也是帧,数据的传输也可以理解为流式的传输,但 WebSocket 存在兼容性问题,并非所有浏览器都支持 WebSocket 协议。

2025-04-01 12:20:34 237

原创 HTTP 1.1长连接问题

HTTP1.1 支持长连接和请求的流水线处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟,在 HTTP1.1 中默认开启长连接 keep-alive,一定程度上弥补了 HTTP1.0 每次请求都要创建连接的缺点。HTTP1.0 需要使用 keep-alive 参数来告知服务器端要建立一个长连接。在长连接问题上,HTTP 1.1与HTTP 1.0还是有所区别的。

2025-03-31 12:05:17 511

原创 HTTP常见状态码分析

当浏览者访问一个网页时,浏览者的浏览器会想网页所在的服务器发出请求,当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。304 Not Modified,未修改,所请求的资源被修改,服务器返回此状态码,不会返回任何资源。301 Moved Permanently,永久性重定向,请求的资源已经永久的移动到新的URL,浏览器会自动定向到新的URL,今后任何新的请求都应使用新的 URL 代替。2**,成功,操作被成功接收并处理。

2025-03-30 19:45:18 189

原创 深层嵌套数据的整理

我们来做个假设,拿到一个深层嵌套的数据,这类数据的特点,数据层次分明,格式一样,但是不确定嵌套的层级:经过处理后,输出 value 值为 key,父元素 label + 自身 label 组成对应的 value 值,即:使用递归的方法实现,代码示例如下:打印结果如下:

2025-03-30 10:52:42 178

原创 轮询和长轮询

长轮询 long-poll,即 HTTP 请求可以设置一个较长的 Timeout 等待时间,这样网络轮询请求就可以维持一段较长的时间后返回结果,这也就是 long-poll 的基本思路,服务器只要在这段长轮询时间内进行响应,请求便会立即返回结果,如果这段时间服务器没有返回,浏览器端将自动响应超时,并重新发起一个长轮询请求。比如浏览器每隔一秒向服务器发送一次请求,在一秒内服务器更新的内容会在下一次轮询中被浏览器拉取,所以这种方案相对来说实时性较差,而且没有新消息时依然需要不断轮询,比较耗费系统资源。

2025-03-29 18:33:00 385

原创 python全局变量引用

同样,如果在非全局作用域中,想主动释放变量引用的对象,也可以通过这样的方式,虽然 delete 操作和重新赋值具有相同的效果,但是在 V8 中通过 delete 删除对象的属性有可能干扰 V8 的优化,所以通过赋值方式解除引用更好。如果需要释放常驻内存的对象,可以通过 delete 操作来删除引用关系,或者将变量重新赋值,让旧的对象脱离引用关系,在接下来的老生代内存清理和整理的过程中,会被回收释放。如果变量是全局变量,由于全局作用域需要直到进程退出才能释放,此时将导致引用的对象常驻内存(常驻在老生代中)。

2025-03-28 12:23:19 142

原创 V8内存的限制

如大家所熟悉的,在一般的后端开发语言中,在基本的内存使用上没有什么限制,然而在 Node 中通过JavaScript 使用内存时就会发现只能使用部分内存(64 位系统写约 1.4GB,32 位系统下约为 0.7GB)。在这样的限制下,将会导致 Node 无法直接操作大内存对象,比如无法将一个 2GB 的文件读入内存中进行字符串分析处理,即使物理内存有 32GB,这样在单个 Node 进程的情况下,计算机的内存资源无法得到充分的使用。

2025-03-27 20:52:49 200

原创 创建login.api.js步骤和方法

login.api.js、home.api.js 差不多。

2025-03-26 13:58:30 185

原创 Vue简单的store模式

好了,今天的文章分享就到这里了,希望对大家有帮助哦!

2025-03-26 11:23:34 352

原创 Vue .sync修饰符

我们有时候会遇到这么一个问题:一个组件上只能定义一个v-model,如果其他prop也要实现双向绑定的效果该怎么办呢?在有些情况下,我们可能需要对一个 prop 进行“双向绑定”,vue .sync 修饰符以前存在于 vue1.0 版本里,但是在 2.0 中移除了 .sync。但是在 2.0 发布之后的实际应用中,我们发现 .sync 还是有其适用之处,比如在开发可复用的组件库时。我们需要做的只是让子组件改变父组件状态的代码更容易被区分。

2025-03-25 08:15:04 195

原创 ElementUI时间选择、日期选择

如大家所发现的,由于ElementUI 时间选择器,日期选择器,时间日期选择器点击清除按钮时,v-model 所绑定的属性值会变成 null,所以当使用 ElementUI 时间选择器,日期选择器,时间日期选择器 时,v-model 默认值应设置 null。ElementUI 中没有内置清除按钮的回调函数。今天的文章就介绍到这里了,相信大家认真去看文字介绍及代码,一定会很容易发现问题、找出问题、解决问题的。若有其他疑问,也欢迎留言,一起讨论解决哦!或者添加监听,值为 null 时,赋值为。

2025-03-24 20:45:24 300

原创 Vue部署上线清除浏览器缓存

不得不承认,Vue项目打包上线之后,每一次都会有浏览器缓存问题,需要手动的清除缓存。这样用户体验非常不好,所以我们在打包部署的时候需要尽量避免浏览器的缓存。

2025-03-24 09:11:37 612

空空如也

空空如也

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

TA关注的人

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