- R --- Error in library(***) : there is no package called ‘***’ (服务器非root用户)
auto_star
r语言服务器
步骤步骤一:在自己目录下创建R包安装路径步骤二:配置用户本地的R库路径步骤三:安装缺失的包(在终端)步骤四:验证安装步骤一:在自己目录下创建R包安装路径mkdir-p~/R_libs步骤二:配置用户本地的R库路径在家目录下,编辑(或新建).Renviron文件:vim~/.Renviron在文件内写入如下内容:R_LIBS_USER=~/R_libs,保存后退出。步骤三:安装缺失的包(在终端)在终
- 关于创建vue3项目 vscode的vetur插件依然报错需要template有根标签解决方法
墨雪遗痕
vuevue
为了解决vscode的vetur插件把vue3项目当成vue2去检查然后出现了报错非要template下仍然有要标签的报错我找到了以下方法,这个不会影响vetur的设置本身,只会对当前的项目生效第一步:打开你的package.json第二步:"eslintConfig":{"rules":{"vue/no-multiple-template-root":"off"}}把这个配置放到里面去,通过规则
- springboot请求响应——响应
Hellyc
springboot后端java
packagecom.hxy.springboot.springbootdemo01.demo01;importcom.hxy.springboot.springbootdemo01.pojo.Result;importcom.hxy.springboot.springbootdemo01.pojo.User;importorg.springframework.format.annotation.
- 包管理工具(npm、cnpm、Yarn、CYarn)
前端_学习之路
nodejs
NPM全称:NodePackageManager,Node的包管理器,也是一个应用程序。包是什么Node.js的包基本遵循CommonJS规范,将一组相关的模块组合在一起,形成一个完整的工具作用通过NPM可以对Node的工具包进行搜索、下载、安装、删除、上传。借助别人写好的包,可以让我们的开发更加方便。安装安装完nodejs之后会自动安装npm常用命令查看npm的版本npm-v初始化npminit
- java实现hbase表创建、数据插入、删除表
zhuiwenwen
hadoop
近日查看了相关资料后,梳理了一下用java实现hbase的表创建、数据插入、删除表,代码如下:1、需要的jar包:commons-codec-1.4.jarcommons-logging-1.0.4.jarhadoop-0.20.2-core.jarhbase-0.20.6.jarlog4j-1.2.15.jarzookeeper-3.2.2.jar2、代码:packageorg.myhbase;
- Linux开发工具使用
大大大蠢驴
linuxc++学习笔记linuxc++后端
Linux开发工具使用2.1Linux软件包管理器yumYUM(YellowdogUpdater,Modified)是Linux系统中的一个软件包管理工具,主要用于安装、更新、卸载和管理RPM软件包。它基于RPM(RedHatPackageManager)进行包管理,并自动处理依赖关系,避免手动安装时出现缺少依赖包的问题。YUM语法格式:yum[options][command][package_
- package.json版本前缀
田本初
前端
前言执行npmi下载依赖后,element-plus出现bug(单页面多个date-picker同时开启),这是v2.9.0+的问题,但是项目package.json中版本如下:"element-plus":"^2.7.6",乍一看并不是版本问题,但是package-lock.json中版本却是2.9.7版本前缀版本号主要分为三个部分:如2.7.6,其中2为主版本(major)、7为次要版本(mi
- package.json browserslist
82年的辣鸡
JavaScriptVue.jsvue
作用:根据提供的目标浏览器的环境来,智能添加css前缀,js的polyfill垫片,来兼容旧版本浏览器。避免不必要的兼容代码,以提高代码的编译质量。共享使用browserslist的组件们:组件名功能Autoprefixerpostcss添加css前缀组件bable-preset-env编译预设环境智能添加polyfill垫片代码postcss-normalize基础语法:只要package.js
- spring mvc (七) 接收json数据
_painter
JavaSpringMvcspringmvcjson
注意:启动方式为maven插件启动以实体类方式接收json数据注册配置类packagecom.painter.config;importorg.springframework.web.context.WebApplicationContext;importorg.springframework.web.context.support.AnnotationConfigWebApplicationCo
- Python--8
神经毒素
python开发语言
笔记:模块和包:模块和包的基本概念:模块(module):一个.py文件就是一个模块包(package):类似于一个文件夹,可以管理和保持很多模块注意:真正的包:__init__.py通过包和模块,我们就可以项目化的管理软件python中模块的导入问题:importxxx#直接导入需要的模块或者包importxxx.xxx.xxx.xx#如果存在多层,可以这样层层导入importxxxasalia
- electron框架(4.0)electron-builde和electron Forge的打包方式
不断努力的根号七
electron框架electronjavascript前端
----使用electron-builder打包(需要魔法)--安装electron-builder:npminstallelectron-builder-D--package.json中进行相关配置:{"name":"video-tools","version":"1.0.0","main":"main.js","scripts":{"start":"electron.","build":"el
- flutter-实现瀑布流布局及下拉刷新上拉加载更多
冲浪的鹏多多
Flutterflutter
文章目录1.效果预览2.结构分析3.完整代码4.总结1.效果预览在Flutter应用开发中,瀑布流布局常用于展示图片、商品列表等需要以不规则但整齐排列的内容。同时,下拉刷新和上拉加载更多功能,能够极大提升用户体验,让用户方便地获取最新和更多的数据。预览图如下:2.结构分析先安装依赖插件#瀑布流布局:https://pub.dev/packages/waterfall_flowwaterfall_f
- RuntimeError: object has no attribute sparse_csc_tensor: File “/home/lbilic/anaconda3/envs/diffdock/
海洋 之心
图神经网络pytorch深度学习人工智能图神经网络
文章目录问题描述:原因分析:解决方案:问题描述:使用torch-geometric运行一个图神经网络Demo,出现了如下问题RuntimeError:objecthasnoattributesparse_csc_tensor:File"/home/lbilic/anaconda3/envs/diffdock/lib/python3.9/site-packages/torch_sparse/tens
- Golang io模块详细功能介绍与示例
demonlg0112
Golanggolang网络开发语言后端devops
io是Go语言标准库中处理I/O操作的核心模块,它定义了许多接口和实用函数,用于处理各种输入输出操作。下面我将详细介绍io模块的主要功能,并提供相应的代码示例。1.核心接口1.1io.Reader接口typeReaderinterface{Read(p[]byte)(nint,errerror)}示例:从字符串读取数据packagemainimport("fmt""io""strings")fun
- vue使用到的工具node npm cnpm pnpm yarn管理
半痴半醉半天真
vuenpmvue.js前端
vue前端框架搭建项目使用到的工具1、node.jsnodejs是JavaScript的一个运行环境,使得我们在前端写的js代码能够在服务端运行。相较于传统的web开发,前端使用js开发,服务端还需要用其他语言来写。node.js官网下载地址:https://nodejs.org/en/download/,一路默认即可。最后通过cmd命令框输入:node-v查看即可2、npmnodepackage
- Node.js 包管理工具 npm、pnpm、cnpm、yarn
7 号
Node.jsnode.jsnpm
目录什么是npmnpm主要功能什么是package.jsonpackage.json版本范围规则安装配置npm环境使用npmnpm版本和帮助命令npm包相关命令安装包卸载包升级第三方包升级自己开发的包查看已安装的包清除缓存和修复package.json相关运行命令脚本全局配置npm包发布相关代理(Proxy)相关npm仓库镜像源配置cnpm什么是npxnpm、pnpm和yarn的区别什么是npmn
- C++多线程知识点总结
Null_Bug_Null
C++语法知识点总结c++开发语言算法
C++多线程知识点总结相比C++98,C++11提供了很多的全新的完备的特性,其中一项重要支持就是语言本身正式支持了多线程。本文将较为全面地简要介绍一下C++11中多线程相关库。总的来说,C++提供了两套多线程技术相关的类库:以线程类为代表的标准线程库,包括:thread类、锁mutex、原子变量atomic等以异步执行为目标的异步执行库,包括:future、promise、packaged_ta
- Session模拟登录与退登
代码续发
java学习java
一、基本结构页面登录的网页页面表单提交给LoginServlet处理Title/loginServlet"method="post">名称:密码:消息提示${msg}//EL表达式,显示servlet中传递的登录失败信息LoginServlet登录登录成功转发到user.jsp页面,显示用户信息。登录失败,转发到login.jsp页面,并显示登录失败信息。packagenet.xdclass.we
- WX小程序
Angelyb
Java后端小程序
下载packagecom.sky.utils;importcom.alibaba.fastjson.JSONObject;importorg.apache.http.NameValuePair;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.entity.UrlEncodedFormEnt
- java 去除List集合中实体类、属性的重复
x1321362731
javaList去重实体类的属性java集合去重
1.//实体类中重写equals与hashCode方法packagetest;publicclassStudent{privateStringname;privateStringage;privateStringsex;//......省略getset方法@Overridepublicbooleanequals(Objectobj){Students=(Student)obj;returnname
- JAVA list实体类转换通用_json <--->List集合,实体类 之间的相互转换
张鹤臣
JAVAlist实体类转换通用
packagecom.hp.svse;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;importnet.sf.json.JsonConfig;publicclassJsonTest{publics
- 强推python !pip镜像源切换工具
大博士.J
pythonpip开发语言
#强推!Pythonpip镜像源切换工具,让包管理更轻松在开发Python项目时,我们经常需要安装各种第三方库来增强功能。然而,默认的PyPI(PythonPackageIndex)服务器在国外,对于国内用户来说,访问速度可能较慢,甚至有时会遇到连接超时的问题。为了解决这个问题,使用国内镜像源是一个很好的选择。但是,手动修改pip配置文件或每次通过命令行指定镜像源不仅繁琐,而且容易出错。今天,我要
- Golang os模块功能详解与示例
demonlg0112
Golanggolangmicrosoft开发语言云原生后端运维开发devops
os是Go语言标准库中与操作系统交互的核心模块,提供了丰富的功能来操作文件系统、进程、环境变量等。下面我将详细介绍os模块的主要功能,并提供相应的代码示例。1.文件与目录操作1.1文件操作创建文件packagemainimport("fmt""os")funcmain(){file,err:=os.Create("test.txt")iferr!=nil{fmt.Println("Errorcre
- npm install 详解
2401_89793006
前端npm前端node.js
npminstall详解npminstall是Node.js包管理工具npm中最常用的命令之一。它用于安装项目所需的依赖包,并可以针对不同的场景提供多种选项和参数。以下是对npminstall的详细解析:基本用法1.安装单个包在当前项目的node_modules文件夹中安装指定的包,并将其添加到package.json的dependencies部分。npminstallpackage-name示例
- 【nvidia-B200 生产环境】NVIDIA 570.124.06+Cuda12.8 Ubuntu22.04 nccl-test 一键部署脚本(免修改复制即用)
清风 001
AI大模型底层建设ubuntu数据库postgresql
目录1.初始化与日志记录2.安装基础工具与配置更新3.NVIDIA驱动安装570.124.064.安装MellanoxOFED24.10-2.1.8.05.安装CUDA12.86.安装NCCL和测试7.配置rc.local和其他优化8.B200单独步骤9.最终测试与重启10.完整生产脚本,复制即可直接使用总结1.初始化与日志记录LOG_DIR="/opt/packages"mkdir-p$LOG_
- uv - 配置 [官方文档翻译]
知识搬运bot
#Pythonuv配置configure.envpip环境变量索引
文章目录配置概述配置文件设置`.env`配置pip接口环境变量`UV_BREAK_SYSTEM_PACKAGES``UV_BUILD_CONSTRAINT``UV_CACHE_DIR``UV_COMPILE_BYTECODE``UV_CONCURRENT_BUILDS``UV_CONCURRENT_DOWNLOADS``UV_CONCURRENT_INSTALLS``UV_CONFIG_FILE`
- 获取GPU信息 --createWindowSurface EGL_BAD_NATIVE_WINDOW -- failed: EGL_BAD_MATCH
jiantaocd
JAVAAndroidUIAndroidandroid三星gpusurface
之前网上有很多关于获取GPU信息的帖子,大部分手机都可以获取到,但部分奇葩就不行了。贴代码:packagecom.example.gpuinfo;importjavax.microedition.khronos.egl.EGLConfig;importjavax.microedition.khronos.opengles.GL10;importandroid.app.Activity;import
- 卸载conda,poetry常用命令,vscode使用poetry虚拟环境
LeonNo11
pythoncondawindowslinux
~/miniconda3/bin/condainitbash~/miniconda3/bin/condainitzshcondainfo查看当前环境的配置信息condainstallpackage-namecondainstallpackage-name=version安装依赖包condauninstallpackage-name=version卸载依赖包condaupdatepackage-na
- wsdl调用
天很蓝_风很大
wsdl接口调用java
packagea;importjava.io.IOException;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.alex.core.kit.SignUtils;importcom.alibaba.fastjson.JSON;importco
- Java类初始化过程
自由与自然
java开发语言
packageorg.example;importjava.util.ArrayList;importjava.util.Scanner;/***Helloworld!*/publicclassApp{publicstaticvoidmain(String[]args)throwsInterruptedException{newChild();}}classParent{Stringname=in
- 集合框架
天子之骄
java数据结构集合框架
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
- Table Driven(表驱动)方法实例
bijian1013
javaenumTable Driven表驱动
实例一:
/**
* 驾驶人年龄段
* 保险行业,会对驾驶人的年龄做年龄段的区分判断
* 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞)
*/
public class AgePeriodTest {
//if...el
- Jquery 总结
cuishikuan
javajqueryAjaxWebjquery方法
1.$.trim方法用于移除字符串头部和尾部多余的空格。如:$.trim(' Hello ') // Hello2.$.contains方法返回一个布尔值,表示某个DOM元素(第二个参数)是否为另一个DOM元素(第一个参数)的下级元素。如:$.contains(document.documentElement, document.body); 3.$
- 面向对象概念的提出
麦田的设计者
java面向对象面向过程
面向对象中,一切都是由对象展开的,组织代码,封装数据。
在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。
下面就结合编程语言的发展史,聊一聊面向过程和面向对象。
c语言由贝尔实
- linux网口绑定
被触发
linux
刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。
一、环境描述
我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0和eth1两张网卡。
二、双网卡绑定步骤:
2.1 修改/etc/sysconfig/network
- XML基础语法
肆无忌惮_
xml
一、什么是XML?
XML全称是Extensible Markup Language,可扩展标记语言。很类似HTML。XML的目的是传输数据而非显示数据。XML的标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。是W3C的推荐标准。
二、为什么学习XML?
用来解决程序间数据传输的格式问题
做配置文件
充当小型数据库
三、XML与HTM
- 为网页添加自己喜欢的字体
知了ing
字体 秒表 css
@font-face {
font-family: miaobiao;//定义字体名字
font-style: normal;
font-weight: 400;
src: url('font/DS-DIGI-e.eot');//字体文件
}
使用:
<label style="font-size:18px;font-famil
- redis范围查询应用-查找IP所在城市
矮蛋蛋
redis
原文地址:
http://www.tuicool.com/articles/BrURbqV
需求
根据IP找到对应的城市
原来的解决方案
oracle表(ip_country):
查询IP对应的城市:
1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994
2. select city from ip_
- 输入两个整数, 计算百分比
alleni123
java
public static String getPercent(int x, int total){
double result=(x*1.0)/(total*1.0);
System.out.println(result);
DecimalFormat df1=new DecimalFormat("0.0000%");
- 百合——————>怎么学习计算机语言
百合不是茶
java 移动开发
对于一个从没有接触过计算机语言的人来说,一上来就学面向对象,就算是心里上面接受的了,灵魂我觉得也应该是跟不上的,学不好是很正常的现象,计算机语言老师讲的再多,你在课堂上面跟着老师听的再多,我觉得你应该还是学不会的,最主要的原因是你根本没有想过该怎么来学习计算机编程语言,记得大一的时候金山网络公司在湖大招聘我们学校一个才来大学几天的被金山网络录取,一个刚到大学的就能够去和
- linux下tomcat开机自启动
bijian1013
tomcat
方法一:
修改Tomcat/bin/startup.sh 为:
export JAVA_HOME=/home/java1.6.0_27
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_H
- spring aop实例
bijian1013
javaspringAOP
1.AdviceMethods.java
package com.bijian.study.spring.aop.schema;
public class AdviceMethods {
public void preGreeting() {
System.out.println("--how are you!--");
}
}
2.beans.x
- [Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization
bit1129
serialization
enableComplexMapKeySerialization配置项的含义
Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址。
GsonBuilder用于
- 【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题
bit1129
Stream
包括Spark Streaming在内的实时计算数据可靠性指的是三种级别:
1. At most once,数据最多只能接受一次,有可能接收不到
2. At least once, 数据至少接受一次,有可能重复接收
3. Exactly once 数据保证被处理并且只被处理一次,
具体的多读几遍http://spark.apache.org/docs/lates
- shell脚本批量检测端口是否被占用脚本
ronin47
#!/bin/bash
cat ports |while read line
do#nc -z -w 10 $line
nc -z -w 2 $line 58422>/dev/null2>&1if[ $?-eq 0]then
echo $line:ok
else
echo $line:fail
fi
done
这里的ports 既可以是文件
- java-2.设计包含min函数的栈
bylijinnan
java
具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/
import java.util.ArrayList;
import java.util.List;
public class MinStack {
//maybe we can use origin array rathe
- Netty源码学习-ChannelHandler
bylijinnan
javanetty
一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享”
例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是
因为每一次调用decode方法时,可能数据未接收完全(incomplete),
它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的
p
- java生成随机数
cngolon
java
方法一:
/**
* 生成随机数
* @author cngolon@126.com
* @return
*/
public synchronized static String getChargeSequenceNum(String pre){
StringBuffer sequenceNum = new StringBuffer();
Date dateTime = new D
- POI读写海量数据
ctrain
海量数据
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming
- mysql 日期格式化date_format详细使用
daizj
mysqldate_format日期格式转换日期格式化
日期转换函数的详细使用说明
DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The&n
- 一个程序员分享8年的开发经验
dcj3sjt126com
程序员
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。
明确入行的目的
很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容
- android欢迎界面淡入淡出效果
dcj3sjt126com
android
很多Android应用一开始都会有一个欢迎界面,淡入淡出效果也是用得非常多的,下面来实现一下。
主要代码如下:
package com.myaibang.activity;
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.CountDown
- linux 复习笔记之常见压缩命令
eksliang
tar解压linux系统常见压缩命令linux压缩命令tar压缩
转载请出自出处:http://eksliang.iteye.com/blog/2109693
linux中常见压缩文件的拓展名
*.gz gzip程序压缩的文件
*.bz2 bzip程序压缩的文件
*.tar tar程序打包的数据,没有经过压缩
*.tar.gz tar程序打包后,并经过gzip程序压缩
*.tar.bz2 tar程序打包后,并经过bzip程序压缩
*.zi
- Android 应用程序发送shell命令
gqdy365
android
项目中需要直接在APP中通过发送shell指令来控制lcd灯,其实按理说应该是方案公司在调好lcd灯驱动之后直接通过service送接口上来给APP,APP调用就可以控制了,这是正规流程,但我们项目的方案商用的mtk方案,方案公司又没人会改,只调好了驱动,让应用程序自己实现灯的控制,这不蛋疼嘛!!!!
发就发吧!
一、关于shell指令:
我们知道,shell指令是Linux里面带的
- java 无损读取文本文件
hw1287789687
读取文件无损读取读取文本文件charset
java 如何无损读取文本文件呢?
以下是有损的
@Deprecated
public static String getFullContent(File file, String charset) {
BufferedReader reader = null;
if (!file.exists()) {
System.out.println("getFull
- Firebase 相关文章索引
justjavac
firebase
Awesome Firebase
最近谷歌收购Firebase的新闻又将Firebase拉入了人们的视野,于是我做了这个 github 项目。
Firebase 是一个数据同步的云服务,不同于 Dropbox 的「文件」,Firebase 同步的是「数据」,服务对象是网站开发者,帮助他们开发具有「实时」(Real-Time)特性的应用。
开发者只需引用一个 API 库文件就可以使用标准 RE
- C++学习重点
lx.asymmetric
C++笔记
1.c++面向对象的三个特性:封装性,继承性以及多态性。
2.标识符的命名规则:由字母和下划线开头,同时由字母、数字或下划线组成;不能与系统关键字重名。
3.c++语言常量包括整型常量、浮点型常量、布尔常量、字符型常量和字符串性常量。
4.运算符按其功能开以分为六类:算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。
&n
- java bean和xml相互转换
q821424508
javabeanxmlxml和bean转换java bean和xml转换
这几天在做微信公众号
做的过程中想找个java bean转xml的工具,找了几个用着不知道是配置不好还是怎么回事,都会有一些问题,
然后脑子一热谢了一个javabean和xml的转换的工具里,自己用着还行,虽然有一些约束吧 ,
还是贴出来记录一下
顺便你提一下下,这个转换工具支持属性为集合、数组和非基本属性的对象。
packag
- C 语言初级 位运算
1140566087
位运算c
第十章 位运算 1、位运算对象只能是整形或字符型数据,在VC6.0中int型数据占4个字节 2、位运算符: 运算符 作用 ~ 按位求反 << 左移 >> 右移 & 按位与 ^ 按位异或 | 按位或 他们的优先级从高到低; 3、位运算符的运算功能: a、按位取反: ~01001101 = 101
- 14点睛Spring4.1-脚本编程
wiselyman
spring4
14.1 Scripting脚本编程
脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源码直接可运行;
如果我们经常需要修改的某些代码,每一次我们至少要进行编译,打包,重新部署的操作,步骤相当麻烦;
如果我们的应用不允许重启,这在现实的情况中也是很常见的;
在spring中使用脚本编程给上述的应用场景提供了解决方案,即动态加载bean;
spring支持脚本