- esp32开发快速入门 8 : MQTT 的快速入门,基于esp32实现MQTT通信
z755924843
ESP32开发快速入门服务器网络运维
MQTT介绍简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联
- 4G MQTT网关在物联网应用中的优势-天拓四方
北京天拓四方
边缘计算iot物联网其他
随着物联网(IoT)技术的飞速发展,各种设备和系统之间的互联互通变得日益重要。MQTT(MessageQueuingTelemetryTransport)作为一种轻量级的发布/订阅消息传输协议,因其高效、可靠、简单的特性,在物联网领域得到了广泛的应用。而4GMQTT网关,作为连接物联网设备和MQTT服务器的桥梁,其在物联网应用中的作用愈发凸显。本文将探讨4GMQTT网关在物联网应用中的优势。4GM
- Elasticsearch Java API 的使用(22)—实现桶聚合
迷途码界
ElasticsearchJavaAPI桶聚合
分组聚合使用terms实现分组集合publicclassEsTermsAggthrowsUnknownHostException{publicvoidTermsAgg(TransportClientclient){AggregationBuilderagg=AggregationBuilders.terms("terms").field("agg");SearchResponseresponse=
- TCP/IP模型成功与OSI模型失败的深层原因:技术、理念与市场化路径的比较
kaixin_啊啊
tcp/ipphp服务器
目录TCP/IP体系结构模型1.网络接口层(NetworkInterfaceLayer)2.互联网层(InternetLayer)3.传输层(TransportLayer)4.应用层(ApplicationLayer)TCP/IP模型与OSI模型的比较:OSI模型OSI模型的七层结构:OSI模型的优点:OSI模型与TCP/IP模型的区别:TCP/IP模型成功与OSI模型失败的深层原因1.技术适用性
- Oracle 用户及角色 介绍
iteye_3158
数据库
一.用户管理1.1建立用户(数据库验证)CREATEUSERDAVEIDENTIFIEDBYpwdDEFAULTTABLESPACEusersTEMPORARYTABLESPACEtempQUOTA5mONusers;1.2修改用户ALTERUSERDAVEQUOTA0ONSYSTEM;1.3删除用户DROPUSERDAVE;DROPUSERDAVECASCADE;1.4显示用户信息SELECT*
- Oracle用户、权限、角色管理
一心只为学
oracle数据库运维服务器
一、用户管理1、创建用户1.1创建用户user1,密码为123456,指定默认表空间为user1_tbs,临时表空间为user1_temp#user1_tbs表空间和user1_temp临时表空间需要提前创建好。#创建表空间user1_tbsSQL>createtablespaceuser1_tbsdatafile'/u01/app/oracle/oradata/ORCL/datafile/use
- java实现es分页查询_elasticsearch high level rest api分页查询数据
weixin_42565971
java实现es分页查询
Transport方式查询数据,在今后的elasticsearch中将不在维护,官方推荐用用highlevelrestapi或者lowerlevelapi去操作elasticsearch中的数据。在elasticsearch的增删改查操作中,其实最复杂的也就是分页查询了,根据elasticsearch官方资料,做个简单的笔记.1.准备jar包,我用的elasticsearch7.3版本,各版本需要
- ActiveMQ集群、负载均衡、消息回流
星星都没我亮
ActiveMQactivemq
文章目录集群配置主备集群SharedFileSystemMasterSlavefailover故障转移协议TransportOptions负载均衡静态网络配置可配置属性URI的几个属性NetworkConnectorProperties动态网络配置消息回流消息副本集群配置官方文档http://activemq.apache.org/clustering主备集群http://activemq.apa
- MQTT (Message Queuing Telemetry Transport)遥测消息传输协议
weixin_30653097
网络
最近在AIOT和筑联开发平台,其传输方式都是MQTT!它这么重要,一定要做个笔记,以免看过的又忘记了!MQTT是在TCP之上的协议,和HTTP一样,都属于应用层协议!下面的都是边看边记录来源于:MTQQ协议中文手册术语:网络连接、应用消息、客户端、服务端、订阅、主题名、主题过滤器、会话、控制报文数据表示:二进制位、整数数值、UTF-8编码字符串、编辑约定MTT控制报文格式:前8位固定格式7-4位表
- MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)
kunwen123
python
MQTT从MQTT.fx上报数据到服务器1、MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。2、MQTT协议是广泛应用的物联网协议(https://mqtt.o
- esp32通过NBIoT模块连入MQTT服务器
发愤图强想做全栈的小陈
服务器数据库sqlite
title:esp32通过NBIoT模块连入MQTT服务器keywords:nbiot,esp32,c++,python,mqtttags:[esp32,c++,python,mqtt,nbiot]categories:[嵌入式,前后端]esp32通过NBIoT模块连入MQTT服务器先简单介绍一下MQTT(MessageQueuingTelemetryTransport),是一种轻量级、开放的发布
- ubuntu安装docker + 配置国内源和加速器
好饿呀~~~
【Linux】docker
ubuntu安装Docker官方文档:Docker安装教程1环境依赖$sudoapt-getupdate$sudoapt-getinstall\linux-image-extra-$(uname-r)\linux-image-extra-virtual2安装docker包$sudoapt-getinstall\apt-transport-https\ca-certificates\curl\sof
- 12c RAC扩容undo表空间
weixin_33721427
数据库
Oracle12cR1RACcolsidfora10colnamefora20colvaluefora20selectsid,name,valuefromv$spparameterwherename='undo_tablespace';SIDNAMEVALUE------------------------------------------------------------orcl2undo_
- oracle 扩容undo,【案例】Oracle RAC数据库undo使用率较高的解决思路办法
南门居士-杜锦刚
oracle扩容undo
天萃荷净Oracle研究中心案例分析:运维DBA反映Oracle数据库undo使用较大,结合案例分析undo使用问题。本站文章除注明转载外,均为本站原创:转载自lovewife&lovelife—Roger的Oracle技术博客本文链接地址:aboutUndoTablespaceusedHigh今天有朋友在问关于undo使用很高的问题,这个问题其实很常见了,上次也正好处理过一起,客户的3节点rac
- Oracle undo表空间爆满的解决
小学生汤米
ORACLEORACLEundo空间满
1.查找数据库的UNDO表空间名,确定当前例程正在使用的UNDO表空间:Showparameterundo_tablespace。2.检查数据库UNDO表空间占用空间情况以及数据文件存放位置;selectfile_name,bytes/1024/1024/1024fromdba_data_fileswheretablespace_namelike'UNDOTBS%';3.查看回滚段的使用情况,哪个
- undo 表空间满了的处理方法
cm_0205
数据库
在插入数据或者update时,有时会报ora_30036错误,导致数据插入失败,其原因是数据库的undo表空间不足所致,解决undo表空间满的方法有两种。方法一:添加undo表空间的数据文件altertablespaceundoadddatafile'/u01/oracle/backup/undo02.dbf'size100Mreuse;方法二:切换undo表空间1、建立新的表空间undotbs3
- 绿色物流:TMS在节能减排中的角色
呆码科技
软件开发临沂软件开发交通物流大数据
绿色物流:TMS在节能减排中的角色随着全球气候变化的严峻挑战,节能减排已成为各行各业不可回避的议题。物流行业作为连接生产与消费的重要桥梁,其碳排放量不容忽视。在追求经济效益的同时,如何实现绿色、可持续的物流发展,成为当前亟待解决的问题。TMS(TransportationManagementSystem,运输管理系统)作为物流管理的核心工具,通过优化运输路径、提高装载率、推广绿色运输方式等手段,正
- 进行网络出现问题Error Domain=kCFErrorDomainCFNetwork Code=-1022 "The resource could not be loaded because th
沐梓弦乐
Object-c
ErrorDomain=NSURLErrorDomainCode=-1022"TheresourcecouldnotbeloadedbecausetheAppTransportSecuritypolicyrequirestheuseofasecureconnection."UserInfo={NSUnderlyingError=0x7fce0c9ac400{ErrorDomain=kCFError
- Python2中Paramiko模块遇到CryptographyDeprecationWarning的解决方法
lishixiongbishe
java
使用Python2的paramiko模块,写了一个简单的ssh登录主机执行命令的脚本,发现每次执行都有一个报错:/data/sshenv/lib/python2.7/site-packages/paramiko/transport.py:33:CryptographyDeprecationWarning:Python2isnolongersupportedbythePythoncoreteam.S
- SSL/TLS 协议详解
xfxf996
协议详解ssl
本文转载自:https://www.cnblogs.com/adforce/archive/2012/11/27/2790937.html作者:adforce转载请注明该声明。SSL(SecureSocketsLayer,安全套接层),及其继任者TLS(TransportLayerSecurity,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密
- SSL/TLS协议核心原理解析与实战
编程小海浪
网络sslhttps
什么是SSL/TLSSSL(securesocketslayer,安全套接层)安全传输技术。TCP是传输层的协议,但是它是明文传输的,是不安全的。SSL的诞生给TCP加了一层保险,为TCP通信提供安全及数据完整性保护。TLS只是SSL的升级版,它们的作用是一样的。TLS(TransportLayerSecurity,传输层安全协议)由两层组成:TLS记录(TLSRecord)和TLS握手(TLSH
- 物联网平台通信协议之 MQTT 协议
seadog1
通信协议整理物联网
物联网平台通信协议之MQTT协议文章目录物联网平台通信协议之MQTT协议MQTT概述MQTT数据格式MQTT概述MQTT(MessageQueuingTelemetryTransport),消息队列遥测传输协议,是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上。其设计思想是轻巧、开放、简单、规范,因此易于使用和开发。MQTT最大优点
- 13. UDP协议与RTP协议
::呵呵哒::
udp网络协议网络
UDP协议UDP协议比较简单:UDP的长度是固定的,用总长度-UDP长度就是数据长度。UDP是不保证他的有序性和可靠性的。对于音频和视频是这样是比较好的,因为这段丢了,我们可以从下一段在开始解码。RTPRTP协议概述RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输层协议,RTP协议和RTP控制协议RTCP一起使用。RTP被定义为在一对
- NVIDIA NCCL 源码学习(八)- 数据通信链路transport的建立
KIDGINBROOK
ncclncclgpucuda
上节以ringGraph为例介绍了机器间channel的连接过程,现在环里每个rank都知道了从哪个rank接收数据以及将数据发送给哪个rank,本节具体介绍下P2P和rdmaNET场景下数据通信链路的建立过程。上节说到nccl通过ncclTransportP2pSetup完成了数据通信链路的建立,还是以上节两机十六卡的环为例:第一台机器的环:graph->intra:GPU/0GPU/7GPU/
- 无法访问 请与这台计算机,计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系以查...
陆盖盖
无法访问请与这台计算机
计算机无法访问,您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您(1)安装NWlinkIPX/SPX/NetBIOSCompatibleTransportProtocol协议。(2)开启guest账号:右击我的电脑\管理\用户有个guest,双击之去掉“账户已停用”前面的勾。(3)右击我的电脑\属性\计算机名,查看该选项卡中出现的局域网工作组名称(4)使用winxp防火墙的例外:wi
- redroid搭建云手机学习笔记(一)
顶点元
Androidlinuxredroid云手机
参考链接通过Redroid搭建自己的云手机docker安装docker官网目前打不开了,通过官网安装的方式无法实现,这里需要借助镜像网站来实现docker的安装参考链接:https://developer.aliyun.com/mirror/docker-ce#step1:安装必要的一些系统工具sudoapt-getupdatesudoapt-get-yinstallapt-transport-h
- 浅谈MQTT
CN.LG
Pythonphp开发语言
一、基本介绍MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,它被设计用于低带宽、不可靠的网络环境中的远程通信。MQTT协议在物联网(IoT)领域非常流行,因为它能够支持大量的设备连接,并且具有低功耗和低带宽消耗的特点。二、关键特点轻量级:MQTT协议的消息头部很小,这使得它非常适合带宽有限的环境。发布/订阅模式:MQTT使用发布/订阅消息模式
- 嵌入式笔试题(2)
月夕花晨374
系统架构c++数据结构算法
1.请简述一下MQTT协议MQTT协议是一种轻量级的、基于发布-订阅模式的通信协议,用于在物联网(IoT)和M2M(机器到机器)通信中进行消息传递。其全称为MessageQueuingTelemetryTransport,即消息队列遥测传输。MQTT协议的特点包括:1.轻量级:MQTT协议采用二进制消息格式,使用较小的协议头和消息体,以减少网络带宽和存储消耗。2.发布-订阅模式:MQTT采用发布-
- Dubbo与Netty
蹩脚的小三
CodecCodecSupportAbstractCodecTransportCodecCodecAdapterDispacherChannelHandlersDispatcherAllDispatcherAllChannelHandlerChannelEventRunnableWrappedChannelHandlerChannelHandlerChannelHandlerAdapterChan
- linuxoracle查看用户权限_linux 下oracle 分配用户权限
weixin_39528994
#su-oracle$sqlplus/nologSQL>connect/assysdba--//创建临时表空间createtemporarytablespacetest_temptempfile'/data/oracle/oradata/test/test_temp01.dbf'--//Linux下的文件系统size64mautoextendonnext64mmaxsize2048mextentm
- 矩阵求逆(JAVA)初等行变换
qiuwanchi
矩阵求逆(JAVA)
package gaodai.matrix;
import gaodai.determinant.DeterminantCalculation;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 矩阵求逆(初等行变换)
* @author 邱万迟
*
- JDK timer
antlove
javajdkschedulecodetimer
1.java.util.Timer.schedule(TimerTask task, long delay):多长时间(毫秒)后执行任务
2.java.util.Timer.schedule(TimerTask task, Date time):设定某个时间执行任务
3.java.util.Timer.schedule(TimerTask task, long delay,longperiod
- JVM调优总结 -Xms -Xmx -Xmn -Xss
coder_xpf
jvm应用服务器
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:
java -Xmx
- JDBC连接数据库
Array_06
jdbc
package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtil {
//完
- Unsupported major.minor version 51.0(jdk版本错误)
oloz
java
java.lang.UnsupportedClassVersionError: cn/support/cache/CacheType : Unsupported major.minor version 51.0 (unable to load class cn.support.cache.CacheType)
at org.apache.catalina.loader.WebappClassL
- 用多个线程处理1个List集合
362217990
多线程threadlist集合
昨天发了一个提问,启动5个线程将一个List中的内容,然后将5个线程的内容拼接起来,由于时间比较急迫,自己就写了一个Demo,希望对菜鸟有参考意义。。
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
public c
- JSP简单访问数据库
香水浓
sqlmysqljsp
学习使用javaBean,代码很烂,仅为留个脚印
public class DBHelper {
private String driverName;
private String url;
private String user;
private String password;
private Connection connection;
privat
- Flex4中使用组件添加柱状图、饼状图等图表
AdyZhang
Flex
1.添加一个最简单的柱状图
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
<?xml version=
"1.0"&n
- Android 5.0 - ProgressBar 进度条无法展示到按钮的前面
aijuans
android
在低于SDK < 21 的版本中,ProgressBar 可以展示到按钮前面,并且为之在按钮的中间,但是切换到android 5.0后进度条ProgressBar 展示顺序变化了,按钮再前面,ProgressBar 在后面了我的xml配置文件如下:
[html]
view plain
copy
<RelativeLa
- 查询汇总的sql
baalwolf
sql
select list.listname, list.createtime,listcount from dream_list as list , (select listid,count(listid) as listcount from dream_list_user group by listid order by count(
- Linux du命令和df命令区别
BigBird2012
linux
1,两者区别
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
- AngularJS中的$apply,用还是不用?
bijian1013
JavaScriptAngularJS$apply
在AngularJS开发中,何时应该调用$scope.$apply(),何时不应该调用。下面我们透彻地解释这个问题。
但是首先,让我们把$apply转换成一种简化的形式。
scope.$apply就像一个懒惰的工人。它需要按照命
- [Zookeeper学习笔记十]Zookeeper源代码分析之ClientCnxn数据序列化和反序列化
bit1129
zookeeper
ClientCnxn是Zookeeper客户端和Zookeeper服务器端进行通信和事件通知处理的主要类,它内部包含两个类,1. SendThread 2. EventThread, SendThread负责客户端和服务器端的数据通信,也包括事件信息的传输,EventThread主要在客户端回调注册的Watchers进行通知处理
ClientCnxn构造方法
&
- 【Java命令一】jmap
bit1129
Java命令
jmap命令的用法:
[hadoop@hadoop sbin]$ jmap
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a
- Apache 服务器安全防护及实战
ronin47
此文转自IBM.
Apache 服务简介
Web 服务器也称为 WWW 服务器或 HTTP 服务器 (HTTP Server),它是 Internet 上最常见也是使用最频繁的服务器之一,Web 服务器能够为用户提供网页浏览、论坛访问等等服务。
由于用户在通过 Web 浏览器访问信息资源的过程中,无须再关心一些技术性的细节,而且界面非常友好,因而 Web 在 Internet 上一推出就得到
- unity 3d实例化位置出现布置?
brotherlamp
unity教程unityunity资料unity视频unity自学
问:unity 3d实例化位置出现布置?
答:实例化的同时就可以指定被实例化的物体的位置,即 position
Instantiate (original : Object, position : Vector3, rotation : Quaternion) : Object
这样你不需要再用Transform.Position了,
如果你省略了第二个参数(
- 《重构,改善现有代码的设计》第八章 Duplicate Observed Data
bylijinnan
java重构
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusE
- struts2更改struts.xml配置目录
chiangfai
struts.xml
struts2默认是读取classes目录下的配置文件,要更改配置文件目录,比如放在WEB-INF下,路径应该写成../struts.xml(非/WEB-INF/struts.xml)
web.xml文件修改如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class&g
- redis做缓存时的一点优化
chenchao051
redishadooppipeline
最近集群上有个job,其中需要短时间内频繁访问缓存,大概7亿多次。我这边的缓存是使用redis来做的,问题就来了。
首先,redis中存的是普通kv,没有考虑使用hash等解结构,那么以为着这个job需要访问7亿多次redis,导致效率低,且出现很多redi
- mysql导出数据不输出标题行
daizj
mysql数据导出去掉第一行去掉标题
当想使用数据库中的某些数据,想将其导入到文件中,而想去掉第一行的标题是可以加上-N参数
如通过下面命令导出数据:
mysql -uuserName -ppasswd -hhost -Pport -Ddatabase -e " select * from tableName" > exportResult.txt
结果为:
studentid
- phpexcel导出excel表简单入门示例
dcj3sjt126com
PHPExcelphpexcel
先下载PHPEXCEL类文件,放在class目录下面,然后新建一个index.php文件,内容如下
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
if (PHP_SAPI == 'cli')
die('
- 爱情格言
dcj3sjt126com
格言
1) I love you not because of who you are, but because of who I am when I am with you. 我爱你,不是因为你是一个怎样的人,而是因为我喜欢与你在一起时的感觉。 2) No man or woman is worth your tears, and the one who is, won‘t
- 转 Activity 详解——Activity文档翻译
e200702084
androidUIsqlite配置管理网络应用
activity 展现在用户面前的经常是全屏窗口,你也可以将 activity 作为浮动窗口来使用(使用设置了 windowIsFloating 的主题),或者嵌入到其他的 activity (使用 ActivityGroup )中。 当用户离开 activity 时你可以在 onPause() 进行相应的操作 。更重要的是,用户做的任何改变都应该在该点上提交 ( 经常提交到 ContentPro
- win7安装MongoDB服务
geeksun
mongodb
1. 下载MongoDB的windows版本:mongodb-win32-x86_64-2008plus-ssl-3.0.4.zip,Linux版本也在这里下载,下载地址: http://www.mongodb.org/downloads
2. 解压MongoDB在D:\server\mongodb, 在D:\server\mongodb下创建d
- Javascript魔法方法:__defineGetter__,__defineSetter__
hongtoushizi
js
转载自: http://www.blackglory.me/javascript-magic-method-definegetter-definesetter/
在javascript的类中,可以用defineGetter和defineSetter_控制成员变量的Get和Set行为
例如,在一个图书类中,我们自动为Book加上书名符号:
function Book(name){
- 错误的日期格式可能导致走nginx proxy cache时不能进行304响应
jinnianshilongnian
cache
昨天在整合某些系统的nginx配置时,出现了当使用nginx cache时无法返回304响应的情况,出问题的响应头: Content-Type:text/html; charset=gb2312 Date:Mon, 05 Jan 2015 01:58:05 GMT Expires:Mon , 05 Jan 15 02:03:00 GMT Last-Modified:Mon, 05
- 数据源架构模式之行数据入口
home198979
PHP架构行数据入口
注:看不懂的请勿踩,此文章非针对java,java爱好者可直接略过。
一、概念
行数据入口(Row Data Gateway):充当数据源中单条记录入口的对象,每行一个实例。
二、简单实现行数据入口
为了方便理解,还是先简单实现:
<?php
/**
* 行数据入口类
*/
class OrderGateway {
/*定义元数
- Linux各个目录的作用及内容
pda158
linux脚本
1)根目录“/” 根目录位于目录结构的最顶层,用斜线(/)表示,类似于
Windows
操作系统的“C:\“,包含Fedora操作系统中所有的目录和文件。 2)/bin /bin 目录又称为二进制目录,包含了那些供系统管理员和普通用户使用的重要
linux命令的二进制映像。该目录存放的内容包括各种可执行文件,还有某些可执行文件的符号连接。常用的命令有:cp、d
- ubuntu12.04上编译openjdk7
ol_beta
HotSpotjvmjdkOpenJDK
获取源码
从openjdk代码仓库获取(比较慢)
安装mercurial Mercurial是一个版本管理工具。 sudo apt-get install mercurial
将以下内容添加到$HOME/.hgrc文件中,如果没有则自己创建一个: [extensions] forest=/home/lichengwu/hgforest-crew/forest.py fe
- 将数据库字段转换成设计文档所需的字段
vipbooks
设计模式工作正则表达式
哈哈,出差这么久终于回来了,回家的感觉真好!
PowerDesigner的物理数据库一出来,设计文档中要改的字段就多得不计其数,如果要把PowerDesigner中的字段一个个Copy到设计文档中,那将会是一件非常痛苦的事情。