- 博客(103)
- 收藏
- 关注
原创 常见回归损失函数详解:L1 Loss, L2 Loss, Huber Loss
L1 损失函数又称为绝对误差损失,其形式为,即预测值与真实值之间差值的绝对值。该函数对异常值具有鲁棒性,梯度恒定不易爆炸,但由于不可导点和不连续导数,可能导致优化过程中收敛速度变慢。
2025-05-20 10:07:30
389
1
原创 苍穹外卖超详细合集!包含博客以及全套源代码!
在csdn上有很多博客都是跟着视频写的,个人建议先看视频,看完了跟着博客做,这样印象深一点。以下是我认为优质的博客,最后也会附上博主自己有关的学习笔记(作为后端小白对某些知识点会感到困惑),以及全套源代码。但是由于前端博主在此之前就学过了,而且前端也不是本项目的重点,就不做赘述。历时二十天左右,苍穹外卖这个项目算是做完了,收获良多。学习过程中也找到很多优质的博客,以及大家分享的源代码(互联网开源精神万岁)。以下是一些零碎的知识点补充。
2025-03-04 20:16:47
5683
2
原创 苍穹外卖零碎知识点学习记录
swagger可以自动根据代码接口生成接口文档,还可以在里面测试接口**思考:**通过 Swagger 就可以生成接口文档,那么我们就不需要 Yapi 了?1、Yapi 是设计阶段使用的工具,管理和维护接口2、Swagger 在开发阶段使用的框架,帮助后端开发人员做后端的接口测试通过以下注解,会影响最终的接口文档。在编写代码的过程中,随手加上这些注解,增加文档的可读性所实现的功能不止是对员工启用或禁用,而是可以对员工信息的多个字段进行动态更新。为什么能适用多个功能呢?因为 标签里使用了多个 标签来进行
2025-03-04 19:56:31
925
原创 springboot常用注解
在前后端分离的开发中,前端通常会以 JSON 格式发送数据到后端,后端使用注解将 JSON 数据转换为 Java 对象进行处理。
2025-03-04 19:51:34
1077
原创 MyBatis 实现批量查询操作:以苍穹外卖套餐菜品关联查询为例
通过使用 MyBatis 的<foreach>标签,我们可以方便地实现批量查询操作,避免了多次执行单条查询语句带来的性能开销。这种方式不仅提高了代码的简洁性和可维护性,还能有效地提升数据库操作的效率。在实际开发中,我们可以根据具体的业务需求,灵活运用<foreach>标签的各种属性,实现不同类型的批量操作,如批量插入、批量更新等。希望本文能帮助你更好地理解和掌握 MyBatis 中的批量操作技巧。
2025-02-19 19:22:13
439
原创 MyBatis 插入操作中的主键生成与获取(内含苍穹外卖新增菜品例子)
在使用 MyBatis 进行数据库操作时,插入数据并获取自动生成的主键是一个常见的需求。本文将详细介绍 MyBatis 中<insert>标签的和属性的使用方法和原理,帮助你更好地掌握这一技术点。
2025-02-18 19:52:37
437
转载 mybatis实现分页查询(苍穹外卖)
请求参数类型为Query,不是json格式提交,在路径后直接拼接。然后也不用在传参时加上@RequestBody。
2025-02-09 20:59:58
87
原创 JWT 与 ThreadLocal协作实现信息传递(苍穹外卖员工管理)
JWT 是一种在网络应用间安全传递信息的开放标准。它以 JSON 对象的形式,将用户的身份信息(如员工 ID)进行编码,并通过加密算法生成一个令牌。这个令牌可以在客户端和服务器之间安全地传输,服务器可以根据令牌验证用户的身份。ThreadLocal 是 Java 中的一个线程局部变量,它为每个使用它的线程提供一个独立的变量副本。每个线程可以独立地对自己的副本进行读写操作,而不会影响其他线程的副本。这就好比给每个线程都分配了一个专属的 “小盒子”,线程可以在自己的 “小盒子” 里存放和取出数据。
2025-02-09 14:04:49
773
原创 Springboot的Bean管理
比喻版在spring中,需要添加以下注解,给具体的路径才能扫描到bean但springboot却不用指定路径,为什么?因为SpringBootApplication本质上是一个组合注解,里面包含@ComponentScan,如果不写具体扫描路径,就会扫描当前类所在包,及其所有子包。扫描范围如下。如果在com.example.test 05包外,启动类就扫描不到了(但一般也没人这么写)涉及到第三方bean注册,感觉暂时用不到,先不学了
2024-12-11 15:54:00
906
1
原创 gitee仓库的推送教程
确保您的计算机上已经安装了 Git。如果没有安装,可以从下载并安装。git init这会初始化一个新的 Git 仓库。替换为您在 Gitee 上创建的仓库的 URL。命令会添加当前目录下的所有文件到暂存区。后面跟着的是提交信息,您可以根据实际情况修改。如果您的默认分支名不是master,请替换为您的分支名(例如main(可选): 如果您想要通过 SSH 方式连接到 Gitee,您需要在 Gitee 上设置 SSH 密钥。这需要在您的 Gitee 账户设置中添加您的公钥。
2024-11-24 15:30:02
821
2
原创 vue路由缓存问题
给 routerv-view 添加key属性,强制不添加缓存,破坏缓存,所以这个方法性能会比较差。使用 onBeforeRouteUpdate钩子函数,做精确更新。没用onBeforeRouteUpdate前的渲染。用onBeforeRouteUpdate后。
2024-10-09 15:01:27
684
原创 结合vueuse实现图片懒加载
在 Vue.js 中,是用于注册自定义指令的 API。自定义指令允许你在组件的模板中实现特定的功能或行为,这些功能或行为通常是 DOM 操作。自定义指令是一种可以在模板中使用的功能,通常以v-开头。例如,v-model和v-bind是内置指令。通过创建自定义指令,你可以扩展 Vue 的功能。: 用于注册自定义指令。自定义指令: 可以在模板中添加特定的功能,增强组件的交互性。钩子函数: 提供不同生命周期阶段的操作机会。简单来说,这段代码的目的是确保只有当用户滚动到
2024-10-02 15:18:09
1578
1
原创 插槽slot在vue中的使用
在 Vue.js 中,插槽(slot)是一种用于实现组件内容分发的功能。通过插槽,可以让父组件在使用子组件时自定义子组件内部的内容。插槽提供了一种灵活的方式来组合和复用组件。项目中有很多地方需要调用一个组件,比如弹窗,但是,有个可能弹出是表格,有的可能弹出是照片,这个决定于需要调用这个子组件的父组件,这种情况下就可以在自组建(这个弹窗中)使用slot,,slot的HTML元素和内容,完全取决于使用他的父组件给他传了啥。
2024-10-01 16:47:50
771
1
转载 3分钟让你学会axios在vue项目中的基本用法(建议收藏)
axios框架全称基于promise用于浏览器和node.js的http客户端,因此可以使用Promise API。
2024-09-28 10:39:30
377
原创 vue3组合式API,看这篇就够了
子组件使用定义事件:你可以在子组件中定义事件名称(如),并使用emit来发送数据。父组件使用监听事件:在父组件中,通过监听子组件的事件,并定义处理函数来处理接收到的数据。上面可以看到有两种写法,关于defineEmits带不带参数解释如下通过ref,开发者可以轻松地访问和操作真实的 DOM 元素或子组件实例。这为动态更新内容、调用组件方法等提供了极大的便利,使得 Vue 的开发更加灵活和强大。ref在 Vue 中的作用确实类似于在原生 JavaScript 中使用id或class属性,然后通过。
2024-09-24 12:33:07
2529
原创 Pinia从安装到使用
counter.jsApp.vue 是 Pinia 提供的一个实用函数,用于将 store 中的状态转换为响应式引用(reactive refs)。这使得在 Vue 组件中使用 Pinia 的状态更加方便,尤其是在组合式 API 中。为什么使用 在组合式 API 中,直接从 store 中解构状态可能会导致失去响应性。使用 可以确保我们解构出来的每个状态仍然是响应式的。需要注意的是,要区分一下,解构数据和解构方法是不一样的解构数据需要加上storeToRefs(否则会失去响应性),解构方法则不
2024-09-24 12:26:01
413
原创 Javastript看这篇就够了
当然了,还有别的方法事件对象,存的是时间触发时的相关信息在 JavaScript 中,事件对象是一个特殊的对象,它包含了与特定事件相关的信息,比如事件的类型、目标元素、事件触发时鼠标或键盘的状态等。事件对象通常在事件处理函数中自动传递给该函数,使得函数可以访问这些信息。type:事件的类型,比如"click"等。target或 srcElement:触发事件的元素。在 DOM 级别 0 中使用srcElement,而在 DOM 级别 2 和现代浏览器中使用target。:事件监听器绑定的元素,与。
2024-09-18 23:31:07
797
原创 CSS媒体查询
例如,同一个网页,在电脑上显示和在手机上显示有可能不一样的,因为电脑的屏幕更大,显示的东西可能更多。为了适应不同设备的屏幕大小,就要写多种样式,例如在电脑上,ipad上,手机上的样式都要设置。
2024-09-09 20:47:20
497
原创 CSS定位
可以通过边偏移,灵活改变盒子在网页中的位置。例如图中左右箭头的小图标,是覆盖在底图上的,这种实现就需要用到定位模式需要注意的是,这里的偏移量。例如left:50px,就是设置当前盒子到达父级盒子左侧的距离为50px,其他的以此类推。
2024-09-05 11:37:59
539
原创 Codeforces Round 962 (Div. 3)
这仅仅是调和数列,因此在所有可能的 a 中, b 大约有 nlogn 个选择。因此,我们可以同时循环 a 和 b。我的思路一开始是枚举a,然后通过已有的两个式子变换,使得能在只知道a的情况下直接知道b和c。但这样的式子无法构造。当 a=1时, bb 有 n 个选择。当 a=2 时, b 有 n2 个选择。分析:正解是,先得到以下两个式子。
2024-07-29 11:28:43
215
原创 字典树简介
1. **节点结构**:字典树的每个节点包含若干个指向子节点的指针,通常使用数组或哈希表来实现。3. **高效性**:字典树能够在时间复杂度为 O(m) 的情况下,进行字符串的插入、查找和删除操作,其中 m 为字符串的长度。总的来说,字典树是一种用于高效存储和检索字符串数据的数据结构,通过利用字符串的前缀信息,能够快速地进行查找、插入和删除操作,具有较高的效率和适用性。5. **适用场景**:字典树适用于需要高效存储和检索大量字符串数据的场景,例如搜索引擎中的关键词提示、拼写检查、网络路由表等。
2024-07-23 10:15:44
380
原创 离散化区间和(acwing)
再观察,发现其实最多出现3e5个点(n+2*m),3e5的数组我们是可以开出来的,那我们就只关心已经出现过的点,并这些点的下标进行“重新赋值”。就拿上面这题来讲,我们要求区间和肯定要用到前缀和数组。我们观察到 下标是[-1e9,1e9],我们没办法开一个1e9的数组,太大了。例如有三个数,下标分别为:2,8,1e8。我们就可以将其下标“重写成1,2,3”,达到节省空间的目的。我自己喜欢用map进行重写,y总用了二分重写,个人觉得我的比较方便且容易理解一些。首先解释一下什么叫离散化,
2024-04-04 13:38:17
425
原创 Codeforces Round 932 (Div. 2)
分析:本来我是想比较s的第一个和最后一个字符,若第一个字符小等于最后一个字符,那就不用翻转,然而这种思路是错的。例如:abbaaa,当然是需要翻转的。
2024-03-12 21:35:51
462
原创 Educational Codeforces Round 162 (Rated for Div. 2)(A~D)
分析:先找出区间[l,r],a[l]为1第一次出现,a[r]为1最后一次出现,[l,r]以外的区间不用管。所以我们要将[l,r]中所有1的区域块练成一块。经过简单的样例分析发现,假设1的区域t1和区域t2间有x个0,按照最优的走法,只需要x步就能将这两块区域合成一块。所以问题就转换成[l,r]有多少个0。
2024-02-27 11:13:39
523
原创 Codeforces Round 926 (Div. 2)(A~C)
分析:说实话,打比赛的时候看到这题没多想,过了一下样例发现将数组排序一下就行,交了就过了。刚刚写题解反应过来,a2-a1+a3-a2.....an-a(n-1) = an - a1,所以最后结果只取决于最大和最小的差。
2024-02-16 18:45:45
553
原创 Codeforces Round 923 (Div. 3)
分析:如果[l,r]存在两个不相同的数,那么一定存在 ai!= aj,且 j = i+1,即这两个数是相邻的。这样的话我们可以用前缀和预处理,然后找pre[j]>pre[l]。正常从前往后遍历是O(n),我们还有q次查询,时间复杂度O(n2)会超时。因此我们用二分查找来进行查询,时间复杂度O(nlogn)
2024-02-10 21:58:48
564
1
原创 2024牛客寒假算法基础集训营3
感觉有些题是有难度,但是是我花时间想能想的出来的题目,总体来说做的很爽,题目也不错。个人总结了几个做题技巧,也算是提醒自己。1.多分类讨论2.从特殊到一般,便于找规律。例如有一组数,有奇数和偶数,那我们可以构造一组数据全是偶数,观察其规律,然后插入一个奇数,再观察其规律。3.很多编程题都涉及到数学知识,可以根据题意列出公式,然后试着把这个公式变形,没准有惊喜。
2024-02-10 20:10:54
1604
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人