- 上传文件到钉盘流程详解
jspyth
开发场景案例分析开发语言java后端
文章目录前言准备工作实现过程Maven依赖封装一个工具类获取文件上传信息unionId获取钉盘目录spaceId创建上传到钉盘前言 本文详解如何通过钉钉的API实现上传文件到钉盘目录,代码通过JAVA实现。准备工作1、在钉钉开发者后台创建一个钉钉企业内部应用;2、创建并保存好应用的appKey和appSecret,后面用于获取调用API的请求token;3、应用中配置好所需权限:企业存储文件上传
- 方的ScalersTalk第四轮新概念朗读持续力训练Day203 20200301
daisy境界的彼方
练习材料:Weoftenreadinnovelshowaseeminglyrespectablepersonorfamilyhassometerriblesecretwhichhasbeenconcealedfromstrangersforyears.TheEnglishlanguagepossessesavividsayingtodescribethissortofsituation.Thete
- 探索ASP.NET Core 8.0的奇妙世界
郎凌队Lois
探索ASP.NETCore8.0的奇妙世界practical-aspnetcore该项目提供了关于ASP.NETCore实际应用开发的一系列教程和示例,涵盖了从基础知识到高级主题,是一个实用的学习资源库。适合于想要掌握ASP.NETCore技术栈的开发者进行学习和参考。项目地址:https://gitcode.com/gh_mirrors/pr/practical-aspnetcore随着微软的A
- kubernetes里面那些事—————存储
背锅攻城师
kubernetes容器云原生
常用数据卷类型一,emptyDir1.1,emptyDir概念1.2,应用场景1.3,yaml示例二,hostPath2.1,hostPath概念2.2,应用场景2.3,yaml示例三,congfigmap3.1,configmap的作用3.2,注意事项:3.3,使用configmap创建java项目配置文件3.4,subPath应用3.5,configmap作为环境变量四,secret4.1,s
- 现代密码学2.2、2.3--由“一次一密”引出具有完美安全的密码方案共同缺点
WeidanJi
现代密码学概率论密码学数学
现代密码学2.2、2.3--由“一次一密/One-TimePad”引出具有完美安全的密码方案共同缺点One-TimePad密码方案定义正确性/correctness完美隐藏性/perfectlysecret具有完美隐藏性的密码方案的共同缺点特例缺点共同缺点博主正在学习INTRODUCTIONTOMODERNCRYPTOGRAPHY(SecondEdition)--JonathanKatz,Yehu
- python socket多人聊天程序
Q3493620082
服务器运维python网络
项目名称:SecretChat秘密聊天版本:v1.0稳定版使用说明在server_config.json文件中设置服务器的IP和端口,可以是本地,也可以是云服务器。运行server.exe开启聊天服务器。打开client.exe消息发送端,输入服务器的IP和端口,即可连接服务器发送消息。打开messages.exe消息接收端,输入服务器的IP和端口,即可连接服务器接收聊天消息。可以选择将你的服务器
- 90、k8s之secret+configMap
ly1435678619
kuberneteslinux容器
一、secret配置管理配置管理:加密配置:保存密码,token,其他敏感信息的k8s资源应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器1.1、加密配置:secret:[root@master01~]#kubectlgetsecrets##查看加密配置[root@master01~]#kubectlgetsecrets-nkube-system##查看加密
- aliyun图片存储OSS工具类
码农娟
工具专栏java
pom.xml配置jar包com.aliyun.ossaliyun-sdk-oss3.17.4yml配置相关key#oss配置oss:#AKaccessKey:accessKey#SKsecretKey:secretKey#访问域名:以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.comendpoint:https://oss-cn-h
- 使用阿里云OSS+PicGo配置图床
木木点
之前一直用免费的,最近接触OSS就创建了个开通OSS首先登录阿里云,找到OSS服务,这里可以选择套餐也可以选择按量image进入控制台创建Bucketimage权限选择公共读,保存好区域信息image创建用户image选择编程访问image确定后得到创建用户的信息,这里要记下AccessKeyID和AccessKeySecret,之后配置PICGO用到,因为这个界面关掉之后就不好找了创建完后添加O
- 《终极自由之路》11.如何揭露头脑
觉醒吧
翻译:小粒子儿大天体SeethesourceofthemindandyouwillfindyourSelf.看清头脑的根源,你会发现你的真我。Turnthemindbackuponthemindanditwillrevealitssecrets.将头脑转回头脑上,头脑会透露它的秘密。Concentratethemindononethoughtandallotherthoughtswilldropa
- Web_php_unserialize(攻防世界)
ha0cker
php开发语言web安全
1.打开环境,审计代码。file=$file;}function__destruct(){echo@highlight_file($this->file,true);}function__wakeup(){if($this->file!='index.php'){//thesecretisinthefl4g.php$this->file='index.php';}}}if(isset($_GET[
- 攻防世界 Web_php_unserialize
Cyan1u
#攻防世界php
Web_php_unserializePHP反序列化看看代码file=$file;}function__destruct(){echo@highlight_file($this->file,true);}function__wakeup(){if($this->file!='index.php'){//thesecretisinthefl4g.php$this->file='index.php';
- 【Keep在口语里的16个地道用法】
MsReevs
1.Keepitreal.莫装逼。2.keepyoucompany.陪在你身边。3.keepintouch!保持联系。4.Keeptrying!继续努力。5.Keepquiet!安静!6.Keepittoyourself!Keepitasecret.保密。7.Keepupthegoodwork!好好干!8.Keepyourchinup!别灰心,打起精神来。9.Keepyourshirton!别着急
- 隐语课程 SecretFlow的安装部署
皓月雪
学习笔记
SecretFlow安装:1.先开启电脑上的虚拟机功能,以管理员身份打开PowerShell并运行:dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart2.在Windows上安装WSL2,安装WSL|MicrosoftLearn3.将WSL2设置为默认版本,以管理员身份打开PowerShell
- 第二百一十六节 JSF教程 - JSF基本标签、JSF表单文本框示例
程序猿小D
开发语言java反射jvmjdkJSF
JSF教程-JSF基本标签JSF提供了一个标准的HTML标签库,它们被渲染成相应的html输出。为了使用这些标签,我们需要在html节点中使用以下URI的命名空间。JSF基本标签以下是JSF2.0中的重要基本标签。标签描述h:inputTexttype=“text"的HTML输入,文本框。h:inputSecrettype=“password"的HTML输入,文本框。h:inputTextarea
- Spring Boot集成第三方登录之微博登录
java的小粉丝
准备工作网站接入登陆微博开放平台,进入微连接,选择网站接入image.png点击立即接入image.png开发者信息认证填写开发者信息与身份认证信息image.png创建应用开发者信息认证通过后即可创建应用。image.png应用创建成功后会得到appkey和appsecretimage.png在应用信息的高级信息中设置授权回调地址image.png添加测试账号,这里使用开发者账号测试。image
- [C#] 基于 Token 的鉴权与签名机制详解 接口对接鉴权 token、sign(a=1&b=2&c=3&d=4)、Base64、参数加密、MD5
一个代码猎人
ASP.NETCorec#c语言开发语言
1.鉴权方式1.1.获取Token1.1.1.调用服务接口{{projectUrl}}/ois/order/getAuth,传入分配好的appKey和appSecret,验证通过后返回accesstoken。1.1.2.调用其他接口时需要此token参与签名计算。1.1.3.token的有效时间不固定,推荐根据响应code判断是否需要重新获取token:当code=1004或code=1005时需
- k8s - Volume 简介和HostPath的使用
nvd11
K8Skubernetes容器云原生
K8S的持久化K8S实现持久化存储的方法有很多种例如卷(Volume),持久卷(PV),临时卷(EV)等,还有很多不常用的选项上图没有列出来其中Volume本身也分很多种包括Secret,configMap(之前的文章covered了),hostPath,emptyDir等本文主要focusonhostPathHostPath的简介官方定义:hostPath卷能将主机节点文件系统上的文件或目录挂载
- getLocation:fail, the permission value is offline verifying
打乒乓球只会抽
微信公众平台
getLocation:fail,thepermissionvalueisofflineverifying后端会根据appid和secret生成签名,前端wx配置时一定用appid来验证签名的正确本次错误为配置初始化失败:前端与后端的appId不一致,我的失误也
- HannahLin的ScalersTalk第四轮新概念朗读持续力训练Day 143 20190227
HannahLin
Lesson24-1AskeletoninthecupboardWeoftenreadinnovelshowaseeminglyrespectablepersonorfamilyhassometerriblesecretwhichhasbeenconcealedfromstrangersforyears.TheEnglishlanguagepossessesavividsayingtodescri
- SpringBoot前后端数据传输加密
Willis_m
加密解密springboot前后端
采用的算法为AES算法加密工具类packagecom.pibigstar.utils;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.spec.SecretKeySpec;importorg.apache.commons.codec.binary.Base64;/***前后端数据传输加密工具类
- 一篇文章教会你用Python爬取淘宝评论数据【淘宝商品评论数据接口】
电商数据girl
电商项目API接口测试淘宝商品评论API接口pythonjavagit大数据人工智能前端开发语言
【一、项目简介】本文主要目标是采集淘宝的评价,找出客户所需要的功能。评论最新数据,按最近日期,评论内容,评论图片……统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等。淘宝/天猫获得淘宝商品评论API返回值说明item_review-获得淘宝商品评论taobao.item_review公共参数名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretStri
- Flask知识点2
我的棉裤丢了
Flaskflaskpython后端
1、flash()get_flashed_messages():用来消耗flash方法中存储的消息使用flash存储消息时,需要设置SECRET_KEYflash内部消息存储依赖了session2、CSRF(CrossSiteRequestForgery)跨站请求伪造,指攻击者盗用你的身份发送恶意请求CSRFProtect解决CSRF安装扩展包flask-wtffromflask_wtf.csrf
- Flask的secret_key作用
zybsjn
flask
app=Flask(__name__)app.secret_key='your_secret_key'app.secret_key在Flask应用中扮演了非常重要的角色,它用于保护和加密敏感的会话数据和防范某些类型的攻击。下面是secret_key的主要作用和相关解释:1.加密会话数据Flask使用secret_key来对会话数据进行签名和加密。会话数据存储在客户端的cookie中,但因为它被签名
- Your Diffusion Model is Secretly a Zero-Shot Classifier论文阅读笔记
Rising_Flashlight
论文阅读笔记计算机视觉
YourDiffusionModelisSecretlyaZero-ShotClassifier论文阅读笔记这篇文章我感觉在智源大会上听到无数个大佬讨论,包括OpenAISora团队负责人,谢赛宁,好像还有杨植麟。虽然这个文章好像似乎被引量不是特别高,但是和AI甚至人类理解很本质的问题很相关,即是不是要通过生成来构建理解的问题,文章的做法也很巧妙,感觉是一些学者灵机一动的产物,好好学习一个!摘要这
- 大模型对齐方法笔记一:DPO及其变种IPO、KTO、CPO
chencjiajy
深度学习笔记机器学习人工智能
DPODPO(DirectPreferenceOptimization)出自2023年5月的斯坦福大学研究院的论文《DirectPreferenceOptimization:YourLanguageModelisSecretlyaRewardModel》,大概是2023-2024年最广为人知的RLHF的替代对齐方法了。DPO的主要思想是在强化学习的目标函数中建立决策函数与奖励函数之间的关系,以规避
- Gitlab迁移到新的服务器后点击Integrations报500错误的解决方法
奔跑吧邓邓子
常见问题解答(FAQ)gitlab服务器jenkins
目录一、问题描述二、解决方法1.方法12.方法2(1)备份/etc/gitlab/gitlab-secrets.json(2)进入数据库(3)查看ProjectID(4)查找hookID并删除(5)申请访问令牌并执行api删除操作一、问题描述Gitlab迁移到新的服务器后点击Integrations报500错误:查后台日志/var/log/gitlab/gitlab-rails/productio
- python如何快速生成一个密钥
youhebuke225
pythonpythonjava前端
在Python中,快速生成一个密钥通常依赖于内置的库或第三方库来生成一个安全的随机字符串。以下是一些常见的方法来生成密钥:使用secrets模块Python3.6及以上版本引入了secrets模块,它用于生成适合管理密码、账户认证信息、安全令牌等敏感数据的加密强随机数。importsecretsimportstring#生成一个长度为32的密钥,包含大写字母、小写字母和数字key=''.join(
- 如何使用阿里云OSS进行前端直传以及分片上传
I will.874
阿里云前端云计算
在使用阿里云OSS进行前端直传时,首先我们需要去阿里云官网注册自己的存储桶,然后申请相关的accessKeyId和accessKeySecret,然后新建一个桶,为这个桶命名以及选择对应的地区。然后可以根据自己的业务,封装对应的组件,以下是根据我自己的项目,所封装的上传组件,所用的是React技术栈importOSSfrom"ali-oss";import{plus}from'../apis/pe
- Kubernetes中的配置管理:Secret与ConfigMap的深入解析
夜色呦
kubernetes容器云原生
引言在Kubernetes集群中,配置管理是确保应用程序正常运行的关键。Kubernetes提供了两种主要的方式来存储和管理配置数据:Secret和ConfigMap。虽然它们都用于存储配置信息,但它们的用途、特性和使用场景却有所不同。本文将详细比较Secret和ConfigMap,并通过代码示例来展示它们在实际应用中的使用。Secret与ConfigMap概述Secret是用于存储敏感信息的Ku
- 二分查找排序算法
周凡杨
java二分查找排序算法折半
一:概念 二分查找又称
折半查找(
折半搜索/
二分搜索),优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而 查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表 分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步
- java中的BigDecimal
bijian1013
javaBigDecimal
在项目开发过程中出现精度丢失问题,查资料用BigDecimal解决,并发现如下这篇BigDecimal的解决问题的思路和方法很值得学习,特转载。
原文地址:http://blog.csdn.net/ugg/article/de
- Shell echo命令详解
daizj
echoshell
Shell echo命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串:
echo "It is a test"
这里的双引号完全可以省略,以下命令与上面实例效果一致:
echo Itis a test 2.显示转义
- Oracle DBA 简单操作
周凡杨
oracle dba sql
--执行次数多的SQL
select sql_text,executions from (
select sql_text,executions from v$sqlarea order by executions desc
) where rownum<81;
&nb
- 画图重绘
朱辉辉33
游戏
我第一次接触重绘是编写五子棋小游戏的时候,因为游戏里的棋盘是用线绘制的,而这些东西并不在系统自带的重绘里,所以在移动窗体时,棋盘并不会重绘出来。所以我们要重写系统的重绘方法。
在重写系统重绘方法时,我们要注意一定要调用父类的重绘方法,即加上super.paint(g),因为如果不调用父类的重绘方式,重写后会把父类的重绘覆盖掉,而父类的重绘方法是绘制画布,这样就导致我们
- 线程之初体验
西蜀石兰
线程
一直觉得多线程是学Java的一个分水岭,懂多线程才算入门。
之前看《编程思想》的多线程章节,看的云里雾里,知道线程类有哪几个方法,却依旧不知道线程到底是什么?书上都写线程是进程的模块,共享线程的资源,可是这跟多线程编程有毛线的关系,呜呜。。。
线程其实也是用户自定义的任务,不要过多的强调线程的属性,而忽略了线程最基本的属性。
你可以在线程类的run()方法中定义自己的任务,就跟正常的Ja
- linux集群互相免登陆配置
林鹤霄
linux
配置ssh免登陆
1、生成秘钥和公钥 ssh-keygen -t rsa
2、提示让你输入,什么都不输,三次回车之后会在~下面的.ssh文件夹中多出两个文件id_rsa 和 id_rsa.pub
其中id_rsa为秘钥,id_rsa.pub为公钥,使用公钥加密的数据只有私钥才能对这些数据解密 c
- mysql : Lock wait timeout exceeded; try restarting transaction
aigo
mysql
原文:http://www.cnblogs.com/freeliver54/archive/2010/09/30/1839042.html
原因是你使用的InnoDB 表类型的时候,
默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,
因为有的锁等待超过了这个时间,所以抱错.
你可以把这个时间加长,或者优化存储
- Socket编程 基本的聊天实现。
alleni123
socket
public class Server
{
//用来存储所有连接上来的客户
private List<ServerThread> clients;
public static void main(String[] args)
{
Server s = new Server();
s.startServer(9988);
}
publi
- 多线程监听器事件模式(一个简单的例子)
百合不是茶
线程监听模式
多线程的事件监听器模式
监听器时间模式经常与多线程使用,在多线程中如何知道我的线程正在执行那什么内容,可以通过时间监听器模式得到
创建多线程的事件监听器模式 思路:
1, 创建线程并启动,在创建线程的位置设置一个标记
2,创建队
- spring InitializingBean接口
bijian1013
javaspring
spring的事务的TransactionTemplate,其源码如下:
public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean{
...
}
TransactionTemplate继承了DefaultT
- Oracle中询表的权限被授予给了哪些用户
bijian1013
oracle数据库权限
Oracle查询表将权限赋给了哪些用户的SQL,以备查用。
select t.table_name as "表名",
t.grantee as "被授权的属组",
t.owner as "对象所在的属组"
- 【Struts2五】Struts2 参数传值
bit1129
struts2
Struts2中参数传值的3种情况
1.请求参数绑定到Action的实例字段上
2.Action将值传递到转发的视图上
3.Action将值传递到重定向的视图上
一、请求参数绑定到Action的实例字段上以及Action将值传递到转发的视图上
Struts可以自动将请求URL中的请求参数或者表单提交的参数绑定到Action定义的实例字段上,绑定的规则使用ognl表达式语言
- 【Kafka十四】关于auto.offset.reset[Q/A]
bit1129
kafka
I got serveral questions about auto.offset.reset. This configuration parameter governs how consumer read the message from Kafka when there is no initial offset in ZooKeeper or
- nginx gzip压缩配置
ronin47
nginx gzip 压缩范例
nginx gzip压缩配置 更多
0
nginx
gzip
配置
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢?
gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用
- java-13.输入一个单向链表,输出该链表中倒数第 k 个节点
bylijinnan
java
two cursors.
Make the first cursor go K steps first.
/*
* 第 13 题:题目:输入一个单向链表,输出该链表中倒数第 k 个节点
*/
public void displayKthItemsBackWard(ListNode head,int k){
ListNode p1=head,p2=head;
- Spring源码学习-JdbcTemplate queryForObject
bylijinnan
javaspring
JdbcTemplate中有两个可能会混淆的queryForObject方法:
1.
Object queryForObject(String sql, Object[] args, Class requiredType)
2.
Object queryForObject(String sql, Object[] args, RowMapper rowMapper)
第1个方法是只查
- [冰川时代]在冰川时代,我们需要什么样的技术?
comsci
技术
看美国那边的气候情况....我有个感觉...是不是要进入小冰期了?
那么在小冰期里面...我们的户外活动肯定会出现很多问题...在室内呆着的情况会非常多...怎么在室内呆着而不发闷...怎么用最低的电力保证室内的温度.....这都需要技术手段...
&nb
- js 获取浏览器型号
cuityang
js浏览器
根据浏览器获取iphone和apk的下载地址
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" content="text/html"/>
<meta name=
- C# socks5详解 转
dalan_123
socketC#
http://www.cnblogs.com/zhujiechang/archive/2008/10/21/1316308.html 这里主要讲的是用.NET实现基于Socket5下面的代理协议进行客户端的通讯,Socket4的实现是类似的,注意的事,这里不是讲用C#实现一个代理服务器,因为实现一个代理服务器需要实现很多协议,头大,而且现在市面上有很多现成的代理服务器用,性能又好,
- 运维 Centos问题汇总
dcj3sjt126com
云主机
一、sh 脚本不执行的原因
sh脚本不执行的原因 只有2个
1.权限不够
2.sh脚本里路径没写完整。
二、解决You have new mail in /var/spool/mail/root
修改/usr/share/logwatch/default.conf/logwatch.conf配置文件
MailTo =
MailFrom
三、查询连接数
- Yii防注入攻击笔记
dcj3sjt126com
sqlWEB安全yii
网站表单有注入漏洞须对所有用户输入的内容进行个过滤和检查,可以使用正则表达式或者直接输入字符判断,大部分是只允许输入字母和数字的,其它字符度不允许;对于内容复杂表单的内容,应该对html和script的符号进行转义替换:尤其是<,>,',"",&这几个符号 这里有个转义对照表:
http://blog.csdn.net/xinzhu1990/articl
- MongoDB简介[一]
eksliang
mongodbMongoDB简介
MongoDB简介
转载请出自出处:http://eksliang.iteye.com/blog/2173288 1.1易于使用
MongoDB是一个面向文档的数据库,而不是关系型数据库。与关系型数据库相比,面向文档的数据库不再有行的概念,取而代之的是更为灵活的“文档”模型。
另外,不
- zookeeper windows 入门安装和测试
greemranqq
zookeeper安装分布式
一、序言
以下是我对zookeeper 的一些理解: zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个“栗子”。
栗子1号:
假设我是一家KTV的老板,我同时拥有5家KTV,我肯定得时刻监视
- Spring之使用事务缘由(2-注解实现)
ihuning
spring
Spring事务注解实现
1. 依赖包:
1.1 spring包:
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.
- iOS App Launch Option
啸笑天
option
iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有此程序启动的原因。
launchOptions中的可能键值见UIApplication Class Reference的Launch Options Keys节 。
1、若用户直接
- jdk与jre的区别(_)
macroli
javajvmjdk
简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JDK就是Java Development Kit JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。 如果安装了JDK,会发同你
- Updates were rejected because the tip of your current branch is behind
qiaolevip
学习永无止境每天进步一点点众观千象git
$ git push joe prod-2295-1
To
[email protected]:joe.le/dr-frontend.git
! [rejected] prod-2295-1 -> prod-2295-1 (non-fast-forward)
error: failed to push some refs to '
[email protected]
- [一起学Hive]之十四-Hive的元数据表结构详解
superlxw1234
hivehive元数据结构
关键字:Hive元数据、Hive元数据表结构
之前在 “[一起学Hive]之一–Hive概述,Hive是什么”中介绍过,Hive自己维护了一套元数据,用户通过HQL查询时候,Hive首先需要结合元数据,将HQL翻译成MapReduce去执行。
本文介绍一下Hive元数据中重要的一些表结构及用途,以Hive0.13为例。
文章最后面,会以一个示例来全面了解一下,
- Spring 3.2.14,4.1.7,4.2.RC2发布
wiselyman
Spring 3
Spring 3.2.14、4.1.7及4.2.RC2于6月30日发布。
其中Spring 3.2.1是一个维护版本(维护周期到2016-12-31截止),后续会继续根据需求和bug发布维护版本。此时,Spring官方强烈建议升级Spring框架至4.1.7 或者将要发布的4.2 。
其中Spring 4.1.7主要包含这些更新内容。