当前位置: 首页 > news >正文

dsa加训

refs: OI Wiki - OI Wiki (oi-wiki.org)

1. 枚举

POJ 2811 熄灯问题

refs : OpenJudge - 2811:熄灯问题

如果要枚举每个灯开或者不开的情况,总计2^30种情况,显然T。

不过我们可以发现:若第i行的某个灯亮了,那么有且仅有第i行和第i+1行的同一列的灯可以影响到它(把它关掉)。

如果某一行的操作已经结束,那么就只有下一行能影响到它了。因此我们可以仅仅枚举第一行的所有操作序列。接下来的每行都会尝试去“填补”上一行产生的问题(也即上一行的没有熄灭的灯)。

在枚举第一行的操作序列时,我们可以发现这是一个长度为6的0-1串,因此转换为十进制后,范围在0-63,我们可以用一个range(64)的列表以及位运算来实现这个操作。

from typing import Listgrid = []m,n = 5,6for _ in range(m):grid.append(list(map(int,input().split())))# 仅枚举第一行,检查剩余行 操作从全0到全1
f_ops = [x for x in range(64)]directions = [(0,0),(-1,0),(0,1),(1,0),(0,-1)
]def mat_clone(g:List[List[int]])->List[List[int]]:r,c = len(g),len(g[0])ans = [[0 for _ in range(c)] for _ in range(r)]for i in range(r):for j in range(c):ans[i][j] = g[i][j]return ansdef all_down(g:List[List[int]])->bool:return sum([sum(g[i]) for i in range(len(grid))])==0def is_valid(x:int,y:int)->bool:return 0<=x<m and 0<=y<ndef flip(x:int,y:int,puz:List[List[int]]):for direction in directions:nx,ny = x+direction[0],y+direction[1]if is_valid(nx,ny):puz[nx][ny] = 1-puz[nx][ny]def check(fop:int)->bool:ops = [[0 for _ in range(n)] for _ in range(m)]for i in range(n-1,-1,-1):ops[0][i] = fop&1fop >>= 1puz = mat_clone(grid)for i,op in enumerate(ops[0]):if op==1:flip(0,i,puz)for i in range(1,m):for j in range(n):if puz[i-1][j]==1:ops[i][j] = 1flip(i,j,puz)if all_down(puz):for row in ops:print(' '.join(list(map(str,row))))return Truereturn Falsefor f_op in f_ops:if check(f_op):break

我觉得这道题我写的已经比较优雅了,仅仅60行。

假设行数为m,列数为n,则时间复杂度O(mn*2^n)

3. 递归

LC 437 路径总和Ⅲ

refs: 437. 路径总和 III - 力扣(LeetCode)

向下深搜,维护任意一个子链的路径和到哈希表里,key是路径和,v是出现次数。每次把当前节点加到其下的子链的路径和上去,如果发现为targetSum,则根据v更新答案。

class Solution:def pathSum(self, root: Optional[TreeNode], targetSum: int) -> int:ans = 0def check(d:dict,tmp:dict,curr:int):nonlocal ansfor k,v in d.items():if k+curr == targetSum:ans += vif k+curr in tmp:tmp[k+curr] += velse:tmp[k+curr] = vdef dfs(node:TreeNode)->dict:if node is None:return {}nonlocal ansld = dfs(node.left)rd = dfs(node.right)if node.val == targetSum:ans += 1res = {}res[node.val] = 1check(ld,res,node.val)check(rd,res,node.val)return resdfs(root)return ans

还有种写法更加简洁,运行时间也更短的:维护任一子链前缀和并置入哈希表,key是前缀和,v是出现次数。查询去掉多少个前缀和可以将当前节点和剩余前缀和加起来等于targetSum即可。

class Solution:def pathSum(self, root: Optional[TreeNode], targetSum: int) -> int:m = defaultdict(int)m[0] = 1def dfs(node:TreeNode,prefix:int)->int:if node is None:return 0cnt = 0prefix += node.valif prefix - targetSum in m:cnt += m[prefix-targetSum]m[prefix] += 1cnt += dfs(node.left,prefix)cnt += dfs(node.right,prefix)m[prefix]-=1return cntreturn dfs(root,0)

注意维护哈希表时记得回溯时去掉当前prefix,不然可能导致a链上的前缀和被b链上的节点所用。也即

m[prefix] -= 1

时间复杂度:瓶颈哈希表,O(n)

5. 贪心

NOIP2012提高组D1T2

refs: 国王游戏 - Vijos

这题挺难的,思维上想不到,不是dsa知识储备的问题。

设第i个大臣手上的数为

(a_i,b_i)

对于任意合法的(i,i+1),设第i个大臣前的左手数字的乘积为s。金币最大数有以下两种情况:

  1. (i,i+1):

max(\frac{s}{b_i},\frac{s\cdot a_{i}}{b_{i+1}})

  1. (i+1,i):

max(\frac{s}{b_{i+1}},\frac{s\cdot a_{i+1}}{b_i})

若前者站位方式更优于后者,则:

max(\frac{s}{b_i},\frac{s\cdot a_{i}}{b_{i+1}}) < max(\frac{s}{b_{i+1}},\frac{s\cdot a_{i+1}}{b_i})

等价于(通分+约分):

max(b_{i+1},ai\cdot bi) < max(b_{i},a_{i+1}\cdot b_{i+1})

也就是说,对于任意相邻的两个大臣,计算上式,如果前者更大,那么这两个大臣应该互换位置。

注意,这个过程是递归的,如果(i,i+1)换了位置,那么还得检查(i-1,i+1)要不要换位置……直到不需要换位置为止。核心思想是每次交换都把相邻两人之间的最大金币数削减到更小的值

那么这个一直交换的过程相当于什么呢?显然,是冒泡排序

所以在具体实现时,我们可以把每个大臣手里的数封装为一个类实例,然后覆写比较类实例的函数,直接对实例列表排序即可(冒泡排序本身是排序的一种实现方式,既然我们要对整个列表排序,为什么不用更快的排序方式呢?比如py提供的内置快排)

n = int(input())a,b = tuple(map(int,input().split()))from functools import total_ordering@total_ordering
class nh:def __init__(self,tup:tuple) -> None:self.l = tup[0]self.r = tup[1]def  __lt__(self,x)->bool:if isinstance(x,nh):return max(x.r,self.l*self.r) < max(self.r,x.l*x.r)lrh = [] 
for _ in range(n):lrh.append(nh(tuple(map(int,input().split()))))lrh = sorted(lrh)mx = 0
base = afor nho in lrh:mx = max(mx,base//nho.r)base *= nho.lprint(mx) 

时间复杂度O(nlogn),瓶颈在排序。

不过这里还有一个问题,我们不妨从归并排序的角度来考虑。

假设我们现在有两个分开的子序列,不妨叫L和R好了,那么在归并时,我们不断从L和R的头部元素中选个最小的放进去。例如,一个归并的结果可能是:

[\;L[0]\;R[0]\;R[1]\;]

也就是说:

L[0]<R[0]<R[1]

这个不等式拆成两份看都没什么问题,毕竟子序列有序,但问题是,为什么

\begin{cases} L[0]<R[0]\\R[0]<R[1] \end{cases}

能推出来

L[0]<R[1]

从直观感受上来说,当比较类实例时,我们比较的是相邻元素在上式中的值,当两个元素不相邻,为什么会有传递律

这个还需要从数学上给出一个数值的证明。我们假设有三个大臣,其手上的数为:

\begin{cases} (l1,r1)\\ (l2,r2)\\ (l3,r3) \end{cases}

根据上述定义,有:

\begin{cases} max(r_2,l_1\cdot r_1) < max(r_1,l_2\cdot r_2)\\ max(r_3,l_2\cdot r_2) < max(r_1,l_3\cdot r_3) \end{cases}

我们知道,若:

\begin{cases} a < b \\ c < d \end{cases}

max(a,c) < max(b,d)

于是有:

max(r_2,r_3,l_1\cdot r_1,l_2\cdot r_2) < max(r_1,r_2,l_2\cdot r_2,l_3 \cdot r_3)

去掉重复项:

max(r_3,l_1\cdot r_1) < max(r_1, l_3 \cdot r_3)

也即(l1,r1)<(l3,r3)的定义。

因此传递律得证,我们可以放心大胆地排序了。

有感

从大二上第一次接触到贪心算法开始,我就觉得这是一个很容易盛产“江湖骗子”的知识点。它不像dp,人家是有严格的状态定义和转移方程的,所以比较令人放心。但是贪心更偏思维和直观感受,或者说就是口胡。说难听点,我觉得除了个别显然且直观的贪心算法的证明(如最短路反证法),其他证明,就算是写在了教科书上,也是“以其昏昏,使人昭昭”,很多时候看到一个证明,我的感受就是:“啊?这就证出来了?”包括我自己写的有关贪心算法的证明,十个里面估计有九个都是在胡扯。这个东西对于我来说几乎无法证明,甚至无法理解别人的证明。

拿这个国王游戏举例,覆写lt然后直接对实例列表进行排序,可以A,而且跑的还很快。可关键在于,如果按照最朴素的邻项交换,那么就会是一个O(n^2)的冒泡排序,虽然跑得慢,但是人家实打实地比较了任意两个元素之间的大小。但如果是归并或者快排,无疑建立在了这个类的实例遵循传递律的基础上,那么传递律又是谁保证的呢?因此我觉得讨论传递律是非常必要的。我在题解区看了一圈,有不少跟我一样直接对实例列表调内置库的sorted的题解,但没人说过传递律的问题。可以想见一些贪心算法的证明中到底遗漏掉了多少细节和重要的地方。

相关文章:

dsa加训

refs: OI Wiki - OI Wiki (oi-wiki.org) 1. 枚举 POJ 2811 熄灯问题 refs : OpenJudge - 2811:熄灯问题 如果要枚举每个灯开或者不开的情况&#xff0c;总计2^30种情况&#xff0c;显然T。 不过我们可以发现&#xff1a;若第i行的某个灯亮了&#xff0c;那么有且仅有第i行和第…...

SpringBoot源码(1)ApplicationContext和BeanFactory

1、调用getBean方法 SpringBootApplication public class SpringBootDemoApplication {public static void main(String[] args) {ConfigurableApplicationContext applicationContext SpringApplication.run(SpringBootDemoApplication.class, args);applicationContext.get…...

CANoe编程实例--TCP/IP通信

1、简介 本实例将使用目前常用的开发工具C#来开发服务器端&#xff0c;以CANoe端作为客户端。服务器端和客户端&#xff0c;通过TCP/IP连接&#xff0c;实现数据交换。 首先在服务器端建立一个监听Socket&#xff0c;自动创建一个监听线程&#xff0c;随时监听是否有客户端的连…...

Neuron协议网关的北向应用插件开发

目录 概述 指令处理层开发​ 应用层开发​ .open​ .close​ .init​ .uninit​ .start​ .stop​ .setting​ .request​ 插件设置文件​ 适配华为的思路 概述 最近研究了一段时间的Neuron协议网关&#xff0c;前面的博文也提到它虽然能够把数据发到华为的IoT平台上…...

【BUG】已解决:You are using pip version 10.0.1, however version 21.3.1 is available.

You are using pip version 10.0.1, however version 21.3.1 is available. 目录 You are using pip version 10.0.1, however version 21.3.1 is available. 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#…...

electron-builder打包vue2项目不显示element-ui图标

1、使用版本 vue ^2.6.14element-ui ^2.15.14vue-cli-plugin-electron-builder 2.1.1 2、解决办法 1&#xff09; 如果是简单的图标可以使用图片代替&#xff08;这种对于elementui组件的图标还是不会显示&#xff09; 2&#xff09;在vue.config.js配置 const { defineCon…...

controller层-请求格式为json-请求方法为get

前置条件 get请求映射&#xff0c;内容和PostMapping一致&#xff0c;需要请求参数更换为get数据 请求过程&#xff1a;用户请求--初始化DispatcherServlet及对接和分发用户请求--controller--service 用户请求&#xff1a;http://ip:port/user/getinfo 请求方法&#xff1a;ge…...

【Linux】网络通信基础:应用层协议、HTTP、序列化与会话管理

文章目录 前言1. 应用层自定义协议与序列化1.1 什么是应用层&#xff1f;1.2 再谈 "协议"1.3 序列化 和 反序列化 2. HTTP 协议3. 认识 URL(统一资源定位符)4. urlencode和urldecode5. HTTP 协议请求与响应格式5.1 HTTP 请求5.2 HTTP 响应 6. HTTP 的方法6.1 GET 方法…...

@NotNull、@NotEmpty 和 @NotBlank 区别

NotNull、NotEmpty 和 NotBlank 是 Java Bean Validation (JSR 380) 规范中定义的注解&#xff0c;通常用于验证对象的属性是否满足特定的条件。这些注解常用于后端验证&#xff0c;确保接收到的数据符合预期。 NotNull 用途&#xff1a;验证一个对象是否不为null。 注意&#…...

大模型应用—大模型赋能网络爬虫

大模型赋能网络爬虫 简单来说,网页抓取就是从网站抓取数据和内容,然后将这些数据保存为XML、Excel或SQL格式。除了用于生成潜在客户、监控竞争对手和市场研究外,网页抓取工具还可以用于自动化你的数据收集过程。 借助AI网页抓取工具,可以解决手动或纯基于代码的抓取工具的…...

在 Qt 中获取 MouseMove 事件

在编写 Qt 程序时&#xff0c;我希望在鼠标移动时&#xff08;即使鼠标在另一个窗口上&#xff09;能够调用 mouseMoveEvent(QMouseEvent* event) 方法。目前&#xff0c;在我的 mainwindow.cpp 文件中&#xff0c;我有如下代码&#xff1a; void MainWindow::mouseMoveEvent(…...

自动驾驶系列—智能巡航辅助功能中的路口通行功能介绍

自动驾驶系列—智能巡航辅助功能中的车道中央保持功能介绍 自动驾驶系列—智能巡航辅助功能中的车道变换功能介绍 自动驾驶系列—智能巡航辅助功能中的横向避让功能介绍 自动驾驶系列—智能巡航辅助功能中的路口通行功能介绍 文章目录 2. 功能定义3. 功能原理4. 传感器架构5. 实…...

如何为WordPress网站设置多语言站点

随着全球化的发展&#xff0c;拥有一个支持多语言的站点已成为提升用户体验、扩大受众范围的重要手段。本文将详细介绍如何为WordPress网站设置多语言站点&#xff0c;提供两种最佳方案详解&#xff0c;帮助您轻松实现多语言站点的搭建与管理。无论您是选择在同一站点内发布多语…...

【RHCE】综合真机实验(shell完成)

目录 题目&#xff1a; 需求描述 实操 一、服务端&#xff08;servera&#xff09; 1.ip配置 2.更改主机名 3.创建本地仓库 4.DNS服务 1.下载软件包和防火墙允许 2.配置主配置文件 3.配置区域文件 1.named.exam 2.named.fangxiang 4.重启服务 5.验证结果&#x…...

【Python】成功解决conda创建虚拟环境时出现的CondaHTTPError: HTTP 000 CONNECTION FAILED错误

【Python】成功解决conda创建虚拟环境时出现的CondaHTTPError: HTTP 000 CONNECTION FAILED错误 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&a…...

苹果笔记本电脑如何优化系统 苹果电脑系统优化软件哪个好 cleanmymac x怎么用

随着时间的推移&#xff0c;你可能会发现你的MacBook运行速度变慢&#xff0c;甚至在执行一些基本任务时也会感觉到卡顿。这不仅影响了工作效率&#xff0c;也大大降低了使用体验。但别担心&#xff0c;优化你的Mac系统比做早餐还简单。本文将用一种轻松的风格向你介绍7种简单易…...

Vue数组操作之sort详解

在 Vue.js 中&#xff0c;sort() 方法用于对数组进行排序。它会改变原数组&#xff0c;并返回排序后的数组。默认情况下&#xff0c;sort() 方法按照字母顺序&#xff08;Unicode 编码顺序&#xff09;对数组中的元素进行排序。如果需要按照其他规则排序&#xff0c;可以传递一…...

解决 Android 应用安装错误:INSTALL_FAILED_BAD_PERMISSION_GROUP

解决 Android 应用安装错误&#xff1a;INSTALL_FAILED_BAD_PERMISSION_GROUP 在开发 Android 应用时&#xff0c;我们有时会遇到安装错误。这篇文章将讨论一种常见的错误&#xff1a;INSTALL_FAILED_BAD_PERMISSION_GROUP&#xff0c;并介绍解决方法。 问题描述 在尝试安装…...

浅谈断言之JSON断言

浅谈断言之JSON断言 JSON断言是Apache JMeter中一个非常实用的功能&#xff0c;它允许用户验证HTTP响应中的JSON数据是否符合预期。这对于API测试尤为重要&#xff0c;因为JSON&#xff08;JavaScript Object Notation&#xff09;是Web服务间通信的常用数据格式。通过精确地检…...

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(四)-无人机认证与授权

引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 【免费】3GPPTS23.256技术报告-无人机系…...

1万+台网络设备运维如何选择支撑工具?

针对1万台网络设备的运维管理&#xff0c;需要采取一套系统化、自动化且高效的管理方法与策略。“工欲善其事&#xff0c;必先利其器”&#xff0c;以下结合一些关键步骤探讨运维支撑软件工具的方案。 1 建立完善的设备档案 设备信息记录&#xff1a; 为每台设备建立详细的…...

Spring Boot集成Spring Batch快速入门Demo

1.什么是Spring Batch&#xff1f; Spring Batch 是一个轻量级的开源框架&#xff0c;它提供了一种简单的方式来处理大量的数据。它基于Spring框架&#xff0c;提供了一套批处理框架&#xff0c;可以处理各种类型的批处理任务&#xff0c;如ETL、数据导入/导出、报表生成等。S…...

Linux 文件系统

在 Linux 中&#xff0c;所有的文件都是从根目录开始的&#xff0c;且所有的设备都是文件。例如&#xff0c;一块硬盘是一个文件&#xff0c;这块硬盘上的分区也是一个文件&#xff0c;声卡也是一个文件。 这种表示设备的文件叫做设备文件。设备文件一般来说是保存在/dev这个目…...

47、PHP实现机器人的运动范围

题目&#xff1a; PHP 实现机器人的运动范围 描述&#xff1a; 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动&#xff0c;每一次只能向左&#xff0c;右&#xff0c;上&#xff0c;下四个方向移动一格&#xff0c;但是不能进入行坐标和列坐标的数位之和大于k…...

Linux第四节课(指令与权限)

1、date指令(时间) 程序运行到自己的每一个关键时刻&#xff0c;都要自己打日志&#xff01; 日志包括时间、日志等级、日志具体信息、其他信息等&#xff0c;然后按照行为单位写入文件中&#xff0c;这个文件被称为日志文件&#xff01; 在日志文件中筛选信息时&#xff0c…...

扫雷-C语言

一、前言&#xff1a; 众所周知&#xff0c;扫雷是一款大众类的益智小游戏&#xff0c;它的游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子&#xff0c;同时避免踩雷&#xff0c;踩到一个雷即全盘皆输。 今天&#xff0c;我们的目的就是通过C语言来实现一个简…...

RockyLinux 9 PXE Server bios+uefi 自动化部署 RockLinux 8 9

pxe server 前言 PXE&#xff08;Preboot eXecution Environment&#xff0c;预启动执行环境&#xff09;是一种网络启动协议&#xff0c;允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器&#xff0c;它提供了启动镜像和引导加载程序&#xff0c;…...

接口测试基础

一、认识接口测试 接口测试 接口&#xff1a;系统之间数据交互的通道。 硬件接口 软件接口 接口测试&#xff1a;基于不同的输入参数&#xff0c;校验接口响应数据与预期数据是否一致。 为什么要学接口测试? 提前介入测试、尽早发现问题 中级测试工程师必备技能 接口测试学…...

为什么 from . import * 不会导入子模块

为什么 from . import * 不会导入子模块 在 Python 中&#xff0c;from . import * 并不会自动导入子模块。这是因为 import * 的行为是由模块的 __all__ 变量决定的。如果没有定义 __all__&#xff0c;它只会导入当前模块中定义的顶层变量和函数&#xff0c;而不会递归地导入…...

LangGPT结构化提示词编写实践

langGPT提示词 # Role: 浮点数比较助手 ## Profile - author: LangGPT - version: 1.0 - language: 中文 - description: 一个专门帮助用户进行浮点数比较的助手&#xff0c;确保LLM能够准确识别和对比浮点数。## Skills 1. 理解浮点数的结构和数值意义。 2. 精…...

React: class 和 style

一、class 1、在react中使用className属性来绑定类名 <div className"header flex-middle-middle">添加2个类名 </div>2、动态添加类名 <div className{item ${nameactive ? active : }}>动态添加active类名 </div>二、style 1、react中…...

【数据结构】包装类、初识泛型

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…...

TCP客户端connect断线重连

文章目录 TCP客户端connect断线重连1、为什么要断线重连2、实现代码 TCP客户端connect断线重连 1、为什么要断线重连 客户端会面临服务器崩溃的情况&#xff0c;我们可以试着写一个客户端重连的代码&#xff0c;模拟并理解一些客户端行为&#xff0c;比如游戏客户端等. 考虑到…...

细说MCU用DMA改变DAC输出信号频率和改善输出波形质量的方法

目录 一、参考硬件 二、修改定时器参数改变输出波形频率 三、改善波形质量 四、代码修改 五、查看结果 一、参考硬件 本项目的软件硬件工程参考作者的其他文章&#xff1a;细说MCU用DMA实现DAC输出的方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/14065…...

Java高级面试题

文章目录 Java高级特性Java 8 中的新特性有哪些&#xff1f;Lambda 表达式的用途是什么&#xff1f;Stream API 的工作原理是什么&#xff1f;Optional 类的作用是什么&#xff1f;什么是函数式接口&#xff1f;Java 9 之后的新特性有哪些&#xff1f; 并发编程Java中的线程池是…...

USART串口理论知识总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码 #include <stdint.h…...

基于 HTML+ECharts 实现智慧景区数据可视化大屏(含源码)

构建智慧景区数据可视化大屏&#xff1a;基于 HTML 和 ECharts 的实现 随着旅游业的蓬勃发展&#xff0c;智慧景区的概念逐渐深入人心。通过数据可视化&#xff0c;景区管理者可以实时监控游客流量、设施使用情况以及环境状况&#xff0c;从而提升游客体验和管理效率。本文将详…...

vxe-table——实现切换页码时排序状态的回显问题(ant-design+elementUi中table排序不同时回显的bug)——js技能提升

之前写的后台管理系统&#xff0c;都是用的antdelement&#xff0c;table组件中的【排序】问题是有一定的缺陷的。 想要实现的效果&#xff1a; antv——table组件一次只支持一个参数的排序 如下图&#xff1a; 就算是可以自行将排序字段拼接到列表接口的入参中&#xff0c…...

SQL

SQL全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库的…...

maven archetype

1.简介 maven脚手架是为了创建一个项目模板&#xff0c;以后新建项目都能够复用该模板 maven中模板引擎使用的是velocity,在文件中可以使用它的语法获取变量等操作 2.实现 单模块脚手架实现 pom.xml <?xml version"1.0" encoding"UTF-8"?> &…...

浏览器打开抽奖系统html

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>在线抽奖 随机选取 自动挑选</title> <script src"https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <style> body {…...

微信小程序-使用Component方法代替Page方法构造页面

一.使用Component方法的前提条件 在小程序js文件里使用Component方法代替Page方法需要在json文件里面定义usingComponents属性 {"usingComponents": {} }二.注意事项 1.在page页面里使用的钩子函数和事件监听方法都需要写在methods对象里面 methods:{update(){thi…...

Spark SQL----DISTRIBUTE BY子句

Spark SQL----DISTRIBUTE BY子句 一、描述二、语法三、参数四、例子 一、描述 DISTRIBUTE BY子句用于根据输入表达式对数据进行重新分区。与CLUSTER BY子句不同&#xff0c;这不会对每个分区内的数据进行排序。 二、语法 DISTRIBUTE BY { expression [ , ... ] }三、参数 e…...

HTML5-canvas1

1、canvas&#xff1a;创建画布 <canvas id"canvas"></canvas>2、画一条直线 var canvasdocument.getElementById(cancas&#xff09;; canvas.width800; canvas.height800; var contextcanvas.getContext(2d); //获得2d绘图上下文环境 //画一条直线 c…...

【NOI-题解】1009 - 数组逆序1162 - 数组元素的删除1211 - 数组元素的插入1161. 元素插入有序数组1159. 数组元素的移动

文章目录 一、前言二、问题问题&#xff1a;1009 - 数组逆序问题&#xff1a;1162 - 数组元素的删除问题&#xff1a;1211 - 数组元素的插入问题&#xff1a;1161. 元素插入有序数组问题&#xff1a;1159. 数组元素的移动 三、感谢 一、前言 本章节主要对数组问题中数组元素移…...

新电脑如何设置 npm 源及查看源、安装 cnpm、pnpm 和 yarn 的详细教程

当你获得一台新电脑&#xff0c;或需要在现有电脑上优化 JavaScript 和 Node.js 的开发环境时&#xff0c;正确配置 npm 是一步不可少的过程。本教程将详细指导你如何设置 npm 源&#xff0c;查看当前源&#xff0c;以及如何安装 cnpm、pnpm 和 yarn。 1. 设置 npm 源 npm (N…...

完全移动huggingface模型仓库(不是简单mv)

Linux中移动huggingface模型仓库 参考链接 先在bashrc中配置&#xff1a; export HF_DATASETS_CACHE"/your/path/dataset" export HF_HOME"/your/path/" export HUGGINGFACE_HUB_CACHE"/your/path/hub" export TRANSFORMERS_CACHE"/your…...

手机空号过滤批量查询的意义及方法

手机空号过滤批量查询是现代营销和通信管理中常用的技术手段&#xff0c;旨在通过批量处理手机号码&#xff0c;筛选出活跃号码和空号等无效号码&#xff0c;以提高营销效率和减少不必要的通信成本。以下是关于手机空号过滤批量查询的详细解答&#xff1a; 一、手机空号过滤批…...

Dockerfile制作部署wordpress-6.6

目录 一. 环境准备 二. 准备对应的配置文件 三. 编写Dockerfile 四. 构建镜像 五. 配置MySQL 六. 安装wordpress 七. 扩展 一. 环境准备 localhost192.168.226.25 rocky_linux9.4 Docker version 27.0.3 关闭防火墙和selinux&#xff0c;进行时间同步。 安装docker…...

项目的纪要

ai客服项目中发现的问题: 可以在控制台看到我们存储的cookie: 可以看到是这样的, 但是我们通过getCookie方法专门获取这个字段, 然后在控制台打印后 const userName getCookie(SA_USER_NICK_NAME); console.log(userName, userName); 输出结果是: 然后我们尝试通过de…...