1.在网上找人做了一个网站,业务运维源码担心被骗,监控客服说源码这些都给你,业务运维源码他们拿着也没用,监控是业务运维源码真的吗
2.nginx如何监控?
3.运维常见的工具推荐
4.功能更新生成源码异步下载,让系统响应速度提升10倍
5.å端åè¿ç»´åªä¸ªç®åï¼
6.知道源代码有什么好处?要源代码用了干什么?
在网上找人做了一个网站,监控react优秀源码担心被骗,业务运维源码客服说源码这些都给你,监控他们拿着也没用,业务运维源码是监控真的吗
说法有一定的道理
但是这说明另一个问题,那就是业务运维源码他们如果习惯这么做,一般都会服务不好
除非收费很高
你要明白这里面的监控道理和关系
网站,服务,业务运维源码本身和源码归谁没多大关系。监控
但价格和管理模式,业务运维源码才是一个网站能不能稳定运营的关键。
我们做了十三年的企业网站运营,策划。见过太多太多的企业用户,其实网站很多时候本身没有问题,但是误操作却产生了巨大的影响。
比如有些时候,明明改一个就可以了,但是企业呢?自己并没有专业的网站技术人员,只是一个小客服,小秘书在打理网站。或许自己有点小经验于是就动手改代码,但是经验尚浅又没有备份习惯,改错一行代码,全站瘫痪。。。又不得不找技术公司售后服务,而这些,都是没有必要的,额外的售后成本付出。
小公司的网络公司客户少,可能无所谓,但是我们动辄都是几百上千个客户的时候,这种无谓的成本就显得很重要,不可能总去因为这些不必要的事,影响其他正常客户的服务。
所以并不是不给源码,也不是溯源码燕窝仓库不给网站代码权限,而是在可以做到的时候没有必要拥有太高权限,权力越大,责任越大,如果没能力,尽量不要去过多干涉网站技术运作。
还有一点大家心里都明白的,如果说,你拿到代码就能为所欲为的情况,那你根本没必要要源码。。。既然你有那能力做代码方面的工作,那就有能力自己做网站了。。。对不对?无非是慢点,但是很多都是自己既没能力,又觉得略知一二。。。以为拿了源码就能代表什么。
其实你是不知道,对于一般的企业而言,我们有经验的网络公司,稍微加点技术,代码就算给你,你也不可能做其他用处。。。所以不要认为拿到代码能有什么额外的用处。
这也是一个正规的公司或团队必备的管理方案
如果一个公司不论价钱不论协议,随便谁都可以给源码
那就意味着,这个公司的业务是任人复制的,也就意味着你的网站,明天就有另一个副本,另一个公司跟你的一模一样。。。因为他们可以给你,就可以给别人。。。没原则可言。台湾宾果彩券源码
对于服务而言,源码在哪是很重要的,像我们的客户,都会源码和服务器统一管理
服务器什么环境,代码什么状态,谁改了哪里,都一一记录在案。这样某天出现问题,可以最短时间内排查故障,恢复企业网络的运营。
但是你拿走了呢?
网站我们做好的,服务器你们自己去找,代码自己维护,突然出现问题了,问谁都说没动过。。。服务器环境,权限都不是我们的,代码哪里改过都不熟悉,本来一小时就解决的问题,甚至三五天都搞不定,还要各个不同公司,不同的人去协调,去配合。
这段时间的直接损失,间接业务影响,其实是企业的。
说了这么多,明白人可以看的出来其实最重要的不是代码,而是服务,所以对于企业要接入网络的时候,选择的并不是你拥有什么权限,而是你能够得到什么样的服务,服务好,无论代码,服务器在哪,网站都会稳定的运转,花钱再多都是值得的。
但是!!!如果没能力,贵州溯源码体系代码在哪,出了问题没人管,花钱再少也是最大的损失。
而且很多时候,并不是代码能够解决的问题。需要的是经验。
我们现在为企业做的网站,实现的都是智能四维系统,一个网站实现电脑网站+手机网站+企业微信公众平台+APP,全方位的网络支持。这样才能更好的接触 互联网+
而这些,不是说代码给你,你拿走了你就能维护的起来。。。需要很多运维经验和管理精力。
而对于企业而言,我们做好一切后备支持,企业只需管理信息数据即可。
用合适的成本,找合适的人,去做合适的事,这叫良性循环
不需要自己费心,才叫服务。。。什么都想要,什么都拿走,啥都得自己去干。。。那叫负担。
您说呢。
nginx如何监控?
本文将介绍如何在 Linux 环境下通过源码编译安装 Nginx,以及安装相关依赖库,并进行基本的监控配置。监控是运维过程中不可或缺的一部分,能够帮助我们及时了解 Nginx 的运行状态,以便在遇到问题时快速响应。
首先,确保编译环境已经准备好。这包括安装如 gcc、g++ 等开发库。电工维修接单源码可通过运行以下命令完成:
sudo yum install gcc automake autoconf libtool make
紧接着,安装 g++:
sudo yum install gcc g++
为了保证 Nginx 的性能,我们需要安装 PCRE(Perl 核心扩展)和 zlib 库。这两者分别用于正则表达式处理和数据压缩。
下载并编译安装 PCRE 和 zlib 库:
1. 下载并解压 PCRE 源码包,执行配置、编译和安装:
cd /usr/local/src
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8..tar.gz
tar -zxvf pcre-8..tar.gz
cd pcre-8.
./configure
make && make install
随后,下载 zlib 源码包并进行安装:
cd /usr/local/src
wget /zlib-1.2..tar.gz
tar -zxvf zlib-1.2..tar.gz
cd zlib-1.2.
./configure
make && make install
为了保证 Nginx 能够支持 SSL,需要安装 SSL 库。这里以 OpenSSL 为例:
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.0b.tar.gz
tar -zxvf openssl-1.1.0b.tar.gz
cd openssl-1.1.0b
./config
cd
make && make install
最后,进行 Nginx 的安装:
cd /usr/local/src
wget https://nginx.org/download/nginx-1..1.tar.gz
解压并配置 Nginx 安装参数:
tar -zxvf nginx-1..1.tar.gz
cd nginx-1..1
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8. --with-zlib=/usr/local/src/zlib-1.2. --with-openssl=/usr/local/src/openssl-1.1.0b --prefix=/usr/local/nginx --with-http_stub_status_module
编译并安装 Nginx:
make && make install
启动 Nginx:
/usr/local/nginx/nginx
访问 http://..0./ 查看 Nginx 是否正常启动。
为了监控 Nginx 的运行状态,我们可以在配置文件中添加如下代码:
# 设定 Nginx 状态访问地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
}
配置完成后,重启 Nginx 并访问 http://..0./NginxStatus/ 查看状态信息。
通过监控 Nginx 的状态,可以获取诸如活跃连接数、处理请求数等关键信息,有助于及时发现和解决问题。同时,监控 Nginx 的并发进程数和 TCP 连接状态,能够进一步优化系统性能。
总结而言,通过源码编译安装 Nginx 并配置相应的监控选项,可以有效地实现对 Nginx 运行状态的监控,确保其稳定运行并及时响应可能出现的问题。
运维常见的工具推荐
开源的工具在运维领域扮演着关键角色,它们能够有效地支持DevOps实践。以下是一些推荐的开源工具,涵盖了开发工具、自动化构建与测试、持续集成与交付、部署工具以及维护和监控等关键环节。 一、开发工具Git: 分布式版本控制系统,用于管理项目版本,易于学习与使用。
GitLab: 基于Git的代码托管平台,提供Web界面访问,支持公开或私有项目。
Gerrit: 免费、开放源代码的代码审查工具,支持Git作为底层版本控制系统。
Mercurial: 轻量级分布式版本控制系统,适用于Python环境,易于学习与扩展。
Subversion: 版本控制系统,用于替代RCS、CVS,提供分支管理功能。
二、自动化构建与测试Apache Ant: 用于Java环境的自动化工具,支持软件编译、测试与部署。
Maven: 提供高级项目管理功能,简化构建规则,易于使用。
Selenium: Thoughtworks公司开发的集成测试工具。
PyUnit: Python单元测试框架,与JUnit兼容。
PHPUnit: PHP测试框架,基于xUnit设计。
三、持续集成与交付Jenkins: 可扩展的持续集成引擎,支持自动化构建与测试。
Capistrano: 并行执行命令的工具,适用于发布Rails应用。
BuildBot: 自动化编译/测试周期工具,验证代码变更。
Fabric: 提供UI和UX一致的中央管理平台,用于自动化操作、配置与监控。
Go: Google开发的编译型编程语言,支持并发与垃圾回收。
四、部署工具Docker: 开源应用容器引擎,支持应用与依赖打包移植。
Rocket (rkt): CoreOS推出的容器引擎,与Docker类似,用于打包应用。
Ubuntu (LXC): 基于LXC技术的容器平台,支持非特权与分布式。
Chef: 系统集成框架,提供配置管理功能。
Puppet: 集中管理系统配置的工具,支持多元素管理。
CFengine: Unix管理工具,简化管理任务。
Bash: Linux与MacOS的默认shell,广泛使用于自动化任务。
RunDeck: Java/Grails编写的工具,简化数据中心与云环境自动化。
Saltstack: 基于Python的配置管理工具,快速部署。
Ansible: 配置管理器,支持多节点发布与远程任务执行。
五、维护工具Logstash: 日志与事件传输、处理与管理平台。
CollectD: 用于收集系统性能与存储数据的守护进程。
StatsD: 简单的网络守护进程,用于收集统计信息。
六、监控、警告与分析工具Nagios: 监视系统运行状态与网络信息的工具。
Ganglia: 分布式监控系统,支持高性能计算环境。
zabbix: 基于Web的分布式系统监控与网络监视工具。
Kibana: Logstash与ElasticSearch的日志分析Web接口。
本文推荐的这些开源工具涵盖了运维流程的各个方面,从开发、构建、部署到维护与监控,能够有效地支持DevOps实践,提升工作效率与系统的可靠性。功能更新生成源码异步下载,让系统响应速度提升倍
通过本次优化更新,系统在生成源码、流程执行轨迹展示、SQL修改提示、系统函数的jar包定义、运维API依赖JAR包的引入、以及定时任务jar包的管理上,采用了异步操作模式,显著提升了系统响应速度与性能。下面详细解读各项功能的优化点和操作流程。1. 生成源码异步下载优化
优化后,生成源码时将采用异步下载策略。操作流程如下:点击项目卡片的“设置按钮”并选择“生成源码”。
在弹出的二次提示框中,选择是否携带JAR包,确认后点击“确定”。
再次点击项目卡片上的“设置按钮”进入“源码记录”。
在源码记录列表中可实时查看生成状态,生成完成后即可下载源码包。
若生成失败,点击操作栏的“详情”按钮查看具体原因。
2. 流程执行轨迹变量展示优化
优化后的流程执行轨迹功能,不仅能显示当前组件信息,还支持查看流程中其他组件的详细信息。系统变量信息被分类为入口参数、局部变量、配置组参数和基础参数,便于用户快速了解组件执行结果和变量值。3. 修改SQL使用提示优化
当SQL信息被接口引用时,修改SQL后系统将弹出提示,要求在接口中重新选择该SQL信息后才能生效。删除SQL时,系统会提示已引用的接口,需先去除引用后才能执行删除操作。4. 系统函数jar包定义为扩展jar包优化
系统将一些常用函数定义为扩展jar包,仅在需要时自动加载,减少执行引擎包体积,提升性能。以“SysFun_Feidai_BaseUtilsBaseUtils”为例,进行加载与使用。5. 运维API依赖JAR包引入优化
监控检测扩展jar包在本地客户端和执行引擎中使用时,需下载并安装后才能进行指标监控。操作包括下载、解压、配置,以及启动本地客户端等步骤。6. 定时任务jar包定义优化
定时任务jar包已整合至扩展jar包中,新增定时任务时系统会自动加载。用户也可提前手动添加,确保定时任务与项目部署包一同打包。 通过这些优化,系统响应速度得到显著提升,操作流程更加高效便捷。有兴趣的用户可申请免费试用体验。 SoFlu软件机器人,作为全球首款针对微服务架构的软件机器人,革新了传统编码作业模式,通过可视化拖拽与参数配置实现复杂业务逻辑,一人全栈解决后端、前端、测试、运维等各类工作需求,大幅度降低软件开发门槛,显著提升企业软件开发效率与生产力。 通过引入自动化、标准化与工具化流程,SoFlu软件机器人解决了传统软件开发过程中的依赖人工、成本高昂、技术选型难等问题,突破了被国外开发工具“卡脖子”的技术壁垒,为企业软件开发带来了十倍效率提升。å端åè¿ç»´åªä¸ªç®åï¼
æ³è½¬è¡è¿å ¥ITè¡ä¸,请é®å端,å端,è¿ç»´,ç½ç»å®å ¨æä¹éæ©?æ³å¿«éå°±ä¸...
é¦å æåä½ é对äºè¡ä¸ï¼å¯ä»¥æ¯«ä¸å¤¸å¼ å¾è¯´ï¼ä¸æç¼ç¨ç人å°æ¥ä¼°è®¡æ¯å¯¸æ¥é¾è¡ãITè¡ä¸å ¥é¨é¨æ§å¿è¾ä½ï¼å¯¹äºITä¸ä¸å¤çç¥è¯å¨å¤æ²¡æ太é«è¦æ±ãéååä¸ä¸åé¢åçå¦çåå¨èè å å ¥ã
éè¡å¦éå±±ï¼ä¸è®ºååªä¸ªé½å¿ é¡»æ计ç®æºåºç¡ç¥è¯ä½ä¸ºéºå«ï¼ååä¸ä¸æ¹åæ·±å ¥ï¼æè°éæå¨ITé¢åæ¯ä¸åå¨çãä½æ®é认为æµè¯ãå端çå¹å »å¨æçä¸äºï¼å ¥é¨é¨æ§è¾ä½ã
个人è§å¾å¥³çéuiæè å端ï¼ç·çéå端æè è¿ç»´ã
软件æµè¯ï¼æµè¯è¦æ±çææ¯æ§ç¸æ¯å¼åå°±è¦ä½å¾å¤ï¼ä¸è¬ä¸è¦æ±ä½ ä¼å代ç ï¼èä¸æµè¯çé¨æ§ä¹æ¯è¾ä½ï¼å³ä½¿æ¯é计ç®æºä¸ä¸ï¼å®å ¨é¶åºç¡ï¼é»è¾æç»´è½åä¹æ²¡æé£ä¹å¼ºï¼åæ³è¿å ¥ITè¡ä¸çè¯ï¼è¿æ¯ä¸ä¸ªä¸éçæ¹åã
ITè¡ä¸éææ¯å¾å¤ï¼å¯ä»¥å»ºè®®ä½ å¦ä¹ 以ä¸ä¸é¨æ ¸å¿ææ¯ï¼Webå端Javaå¼åæµè¯å¼åé¦å ç¡®å®ç®æ ï¼æ¸ æ¥äºè§£ITè¡ä¸ï¼äºè§£æ¯ä¸ªææ¯çå·¥ä½èè´£åå 容ï¼ç¡®å®èªå·±ä»åçåå±æ¹åã
ææ³ææ¯é«ä¸ç,å¦è¿ç»´ç®åç¹ãè¿æ¯å¦webå端ç®åç¹,ç¥æ导ã1ãç°å¨å¦ä¹ webå端ï¼html5å¼åè¿æ¯ä¸éçéæ©ï¼ç¼ºå£å¤§ï¼åæ¯å¥½ã
2ãå å¦Linuxï¼å¦ä¼è¿ç»´ä¸å¸¸ç¨çææ¯å°±è¡ãLinuxï¼LinuxåWindowsä¸æ ·æ¯ä¸å¥æä½ç³»ç»ï¼æ¯ä¸ä¸ªåºäºPOSIXåUNIXçå¤ç¨æ·ãå¤ä»»å¡ãæ¯æå¤çº¿ç¨åå¤CPUçæä½ç³»ç»ãç®å主æµçæå¡å¨æä½ç³»ç»ã软件å¼åç¯å¢ãäºèç½åºç¨é½åºäºLinuxç³»ç»ã
3ãå¦ææ¯æ³å¿«éæ¾å·¥ä½å°±å¦å端ï¼å端ç¸å¯¹è¦ç®åä¸äºï¼ä½æ¯å端åå±æ¹åç¸å¯¹æ´å¹¿ä¸äºãå¦æä»æ¯å ´è¶£æ¹åæ¥è¯´ï¼å®¡ç¾æ¯è¾å¥½ï¼å¯ä»¥å¾åäºå端ï¼æ´æ³¨éåºç¨æçåååºï¼å¯ä»¥éæ©å端å¼åã
4ãWebå端ç¸å¯¹ä¼ ç»çCï¼Javaï¼åµå ¥å¼çèè¨ï¼æ¯ä¸ä¸ªæ¯è¾å®¹æå ¥æçèä¸æè½ï¼æ»ä¹Webåç«¯å ¥é¨å®¹æï¼æ³çç»å¾é¾ï¼éè¦æ´å¤ç主å¨å¦ä¹ ææ¿ï¼Webå¹è®ä¸å®¶å»ºè®®æ¨ï¼æ¾Webå端å¹è®ï¼è¿æ¯æ¾è¾¾å Webå端å¹è®ã
å端åå端é£ä¸ªå¥½å¦?
ç¸æ¯äºå端å¼åèè¨ï¼å端å¼å人åå¨ä¸å¡é»è¾æ¹é¢è¦æ±æ´é«ï¼æ以å¦æä¹å没æç¸å ³åºç¡çè¯ï¼éæ©å端å¼åå¦ä¹ é¾åº¦ç¸å¯¹ä½ä¸äºãå端工ç¨å¸ä¸»è¦çå·¥ä½èè´£å为ä¸å¤§é¨åï¼åå«æ¯ä¼ ç»çç½é¡µå端å¼åï¼ç§»å¨ç«¯å¼åå大æ°æ®åç°ç«¯å¼åã
ä½æ¯ï¼è¿å¹¶ä¸å®å ¨ç»å¯¹ï¼ä¹ä¸å®å ¨åç¡®ãITé¢åä¸çå个å²ä½çååé常ç»è´ï¼ä»å²ä½ç¹æ§æ¥çï¼Java对äºé»è¾æ§çè¦æ±æ¯è¾é«ï¼æµè¯éè¦ç»å¿åèå¿ï¼ä½åæ¶ä¹éè¦ä¸äºä»£ç è½åï¼Webå端åUI设计åéè¦å¯¹ç¾æä¸å®è§è§£å追æ±ã
å端ç¸å¯¹äºå端å¼åç®åä¸äºï¼å®¹æå ¥é¨ãå端æ´å¤çæ¯ä¸æ°æ®åºè¿è¡äº¤äºä»¥å¤çç¸åºçä¸å¡é»è¾ãéè¦èèçæ¯å¦ä½å®ç°åè½ãæ°æ®çååãå¹³å°ç稳å®æ§ä¸æ§è½çã对äºåå ¥é¨ï¼æç建议æ¯å¦ä¹ å端ã
è¿ç»´åå端å¼ååªä¸ªæ¯è¾é¾é½æ¯æä¸å®çé¾åº¦çï¼ä¸»çèªå·±æä¹ææ©äºï¼éæ©ä¸é¨éåèªå·±çã并ä¸å欢çè¿è¡å¦ä¹ ã
å端æ´å®¹æå ¥é¨ï¼ä½è¿ç»´éè¦æ´å¤çä¸ä¸ç¥è¯åç»éªãæ¯çï¼æ¯ä¸ªèä½é½æä¸åçé¾æç¨åº¦ï¼å端åè¿ç»´é½éè¦ç¬ç¹çè½ååå®è·µã
è¿ç»´ç®åï¼ä½æ¯å ¥é¨æ²¡äººæå¼ä¼ä¸å¢ç³ï¼webç¸å¯¹æ¥è¯´æä¸å®ç稳å®ä¿éæ§ï¼èä¸è®¡ç®æºæ¶ä»£ä¹åå¯è½ä¼è¿å ¥çæ£çæºç æ¶ä»£ï¼æªæ¥åå±ä¼æ´æåæ¯ãå¦æ对å端å¶ä½ å ´è¶£çè¯ä½ å¯ä»¥ççH5eduçæç¨ã
é£ä½ å¯ä»¥éæ©å端å¼åãæµè¯çè¯ï¼åºæ¬ä¸é¾åº¦ä¸å¤§ï¼ä¹ä¸éè¦ä½ å太å¤ç代ç ãè¿ç»´çè¯ï¼ä¹æ¯éè¦äºä»£ç çãè¿ç»´å¿ é¡»ä½ è¦ææ°æ®åºè¿ä¸åãå ¶å®è¿3个ä¸ä¸å½ä¸ï¼æè§å¾æéå女çæ¯æµè¯ä¸ä¸ï¼é¾åº¦ä¸å¤§ï¼å¥³çåçä¹ä¸å°ã
webå端åLinuxå±äºå®å ¨ä¸åçå·¥ä½å²ä½ï¼ä¾§éç¹ä¹æ¯ä¸åçï¼å¹¶æ²¡æä»ä¹é¾æ度èè¨ï¼æéè¦å°±æ¯ç»åèªèº«æ åµæ¥å³å®ï¼éæ©éåèªå·±çææ¯æ好çï¼è¿ä¸¤ä¸ªé½æ¯è¾æå¸åºï¼åå±åæ¯é常ä¸éã
知道源代码有什么好处?要源代码用了干什么?
要回源代码有什么好处?
,我认为客户出钱买的就是源码,那商家就应给客户源码;不给客户源码或给客户的源码是加密的,都是对客户的侵权;有些公司给客户建站,他的源码只能用他的空间,客户不仅见不到源码,每年还要向公司交上千元的维护费用;我在网络公司做过这事我知道,什么维护,就是维持向客户要钱,没有任何保护而已;客户花钱买的源码客户就有权用在任何自己的空间上;而不受任何约束;当然客户不能去出售人家的源码,那样对商家造成损失,客户也要成担责任.
源代码是做什么的?知道了源代码能做什么?
源代码就是源程序
源代码,是指未编译的文本代码。是一系列人类可读的计算机语言指令。
在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
作用
源代码主要功用有如下2种作用:
生成目标代码,即计算机可以识别的代码。
对软件进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的程序员都忽视软件说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。因此,书写软件说明在业界被认为是能创造优秀程序的良好习惯,一些公司也硬性规定必须书写。
需要指出的是,源代码的修改不能改变已经生成的目标代码。如果需要目标代码做出相应的修改,必须重新编译。
代码组合
源代码作为软件的特殊部分,可能被包含在一个或多个文件中。一个程序不必用同一种格式的源代码书写。例如,一个程序如果有C语言库的支持,那么就可以用C语言;而另一部分为了达到比较高的运行效率,则可以用汇编语言编写。
较为复杂的软件,一般需要数十种甚至上百种的源代码的参与。为了降低种复杂度,必须引入一种可以描述各个源代码之间联系,并且如何正确编译的系统。在这样的背景下,修订控制系统(RCS)诞生了,并成为研发者对代码修订的必备工具之一。
还有另外一种组合:源代码的编写和编译分别在不同的平台上实现,专业术语叫做软件移植。
版权
如果按照源代码类型区分软件,通常被分为两类:自由软件和非自由软件。自由软件一般是不仅可以免费得到,而且公开源代码;相对应地,非自由软件则是不公开源代码。所有一切通过非正常手段获得非自由软件源代码的行为都将被视为非法。
质量
对于计算机而言,并不存在真正意义上的“好”的源代码;然而作为一个人,好的书写习惯将决定源代码的好坏。源代码是否具有可读性,成为好坏的重要标准。软件文档则是表明可读性的关键。
效率
虽然我们可以通过不同的语言来实现计算机的同一功能,但在执行效率上则存在不同。普遍规律是:越高级的语言,其执行效率越低。这也是为什么汇编语言生成的文件比用VB语言生成文件普遍要小的原因。