- Spark RDD 之 Partition
博弈史密斯
SparkRDD怎么理解RDD的粗粒度模式?对比细粒度模式SparkRDD的task数量是由什么决定的?一份待处理的原始数据会被按照相应的逻辑(例如jdbc和hdfs的split逻辑)切分成n份,每份数据对应到RDD中的一个Partition,Partition的数量决定了task的数量,影响着程序的并行度支持保存点(checkpoint)虽然RDD可以通过lineage实现faultrecove
- 关于python的一些面试题
1.技术面试题(1)TCP与UDP的区别是什么?答:在工作机制上TCP采用三次握手四次挥手的机制保障信息传递的稳定性,更适合文件的传输和下载。而UDP采用的是直接传输和直接接受的机制提高信息传递的高效性,更适合点对点的实时交流的环境。(2)DHCP和DNS的作用是什么?答:DHCP相当于网络中的智能管家,他会自动将局域网内的设备进行配置包括但不限于:IP地址、子网掩码、DNS服务器地址。而DNS相
- python里面ca_Python SSL服务器提供中间CA证书
洗心岛
python里面ca
我使用Python(2.7)SSL模块编写一些服务器代码,如下所示:ssock=ssl.wrap_socket(sock,ca_certs="all-ca.crt",keyfile="server.key",certfile="server.crt",server_side=True,ssl_version=ssl.PROTOCOL_TLSv1)全部-约阴极射线管'包含签名CA证书和根CA证书:-
- 服务器搭建python响应https,python实现简单的https服务器
以下提供一个简单的方式快速部署一个https服务器,用于非生产环境的测试使用,如果是正式的生产环境,考虑到性能安全等因素,就不要使用这个了。1、使用pyOpenSSL库:#coding:utf-8fromBaseHTTPServerimportHTTPServer,BaseHTTPRequestHandlerfromSocketServerimportThreadingMixInfromSocke
- Leetcode刷题笔记——哈希表篇
code_lover_forever
Leetcode刷题笔记leetcode笔记散列表python
Leetcode刷题笔记——哈希表篇一、哈希表在面试中的高频考题第一题:两数之和Leetcode1:两数之和:中等题(详情点击链接见原题)给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标python代码解法classSolution:deftwoSum(self,nums:List[int],target:int)->
- Various ways to integrate Python and C (C++)
a13393665983
c/c++人工智能python
VariouswaystointegratePythonandC(C++)KoichiTamura'sblog:VariouswaystointegratePythonandC(C++)VariouswaystointegratePythonandC(C++)ThisisoriginallywhatIwroteinamailIsenttoafriendofmine.Imodifieditalitt
- How to setup a Mac with Python dev tools
whackw
macmac
HowtosetupaMacwithPythondevtoolsNotesforhowtosetupa64-bitMacwithimportantPythondevelopmenttoolsDeprecated–clickhereforupdatedpageforYosemiteversionCreatedbyTrondKristiansenon27.7.2009,andlastupdated05
- 理解module, script, library, package in Python
ikeepo
#小白学Pythonmodulelibraryscriptpackagesetup
OverviewPythonmodulesandPythonpackagesaretwomechanismsthatfacilitatemodularprogramming.AscriptisaPythonfilethat’sintendedtoberundirectly.AmoduleisaPythonfilethat’sintendedtobeimportedintoscriptsorothe
- Python 服务器端与客户端的加密通信(SSL/TLS)解析
现实逃脱计划TA
pythonssl网络
```htmlPython服务器端与客户端的加密通信(SSL/TLS)解析在当今互联网时代,数据安全变得越来越重要。为了保护数据在传输过程中的安全,使用SSL/TLS协议进行加密通信成为了一种常见的做法。本文将详细介绍如何在Python中实现服务器端和客户端之间的SSL/TLS加密通信。什么是SSL/TLS?SSL(SecureSocketsLayer)和TLS(TransportLayerSec
- python教程修订版
Ethan learn English
python
9/23Inthiscourse,I'mgoingtoteachyoueverythingyouneedtoknowtogetstartedprogramminginPython.Now,Pythonisoneofthemostpopularprogramminglanguagesoutthere在众多的……中.Andit'sbyfar目前为止oneofthemostsõughtafter受欢迎的
- Three ways to run a python script file
captainOO7
python
Pythonoffersthreedistinctwaystorunascriptormodule,andeachoneaffectssys.path,__name__,andimportbehaviorinsubtlebutimportantways.Let’sbreakthemdownclearly:TheThreeWaystoRunPythonCode1.DirectScriptExecut
- Python自动化神器:Pyautogui库实战指南
码界奇点
Pythonpython自动化开发语言python3.11ui
欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。持续学习,不断总结,共同进步,为了踏实,做好当下事儿~非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。✨✨欢迎订阅本专栏✨✨TheStart点点关注,收藏不迷路文章目录1.PyAutoGUI简介1.1什么是PyAutoGUI?1.2安装
- tensorflow sigmoid_cross_entropy_with_logits 函数解释及公式推导
CrazyWolf_081c
tensorflowsigmoid_cross_entropy_with_logits函数解释及公式推导tensorflow官方文档解释参考pytorch--BCELosspytorch--BCELoss解释参考定义在tensorflow/python/ops/nn_impl.py.功能:计算在给定logits和label之间的sigmoidcrossentropy。测量离散分类任务中的概率误差,
- 写一个空调风机时长统计系统
需求:通过python图形化程序需要实现空调风机的时长统计。界面功能介绍:该空调系统分为8页,通过右上角左右翻页的方式进行页面切换,翻页按钮是翻到最后一页后只能通过上一页往前面,同理第一页也是这样。做了颜色采样,采样而且每页的风机数量是不同的,灰色:#515151RGB:818181绿色:#1bf928RGB:2724940底色:#033047RGB:34871灰色是未开机状态、绿色是开机状态、底
- 超简单linux上部署Apache
悟空骑猪看电影
apachelinux运维网络
1.Apache是什么?Apache是世界上最流行的开源Web服务器软件,由Apache软件基金会维护。主要功能:接收客户端(如浏览器)的HTTP请求,返回网页、图片等静态/动态资源。特点:跨平台(Linux、Windows、macOS)模块化设计(按需加载功能)支持多语言扩展(PHP、Python等)高稳定性和安全性2.核心架构与工作原理多进程模型(MPM)Prefork:多进程模式,每个请求由
- nodejs关于后端服务开发的探究
墨水白云
node.js
前提在当前的环境中关于webserver的主流开发基本上都是java、php之类的,其中javaspring系列基本上占了大头,而python之流也在奋起直追,但别忘了nodejs也是可以做这个服务的,只是位置有点尴尬,现在就来探究下nodejs做webserver的当前现状。nodejs简介Node.js是一个基于ChromeV8引擎的JavaScript运行环境。Node.js使用了一个事件驱
- Python自动操作GUI神器PyAutoGUI
小菜菜-K
PYTHON
日常使用计算机,命令行程序可以说是为批量操作文件而生,但作为普通用户,最多的还是通过鼠标键盘操作形形色色的图形界面程序。试想下面一个场景:有成千上万个文件,都需要通过图形界面进行同样的一套编辑、保存工作,靠手工一遍一遍地重复做,累死人不说,时间久了必然出现错误,作为程序猿,怎么能忍重复3次以上的工作,必须利用程序自动化。要想图形界面也能像命令行程序那样精确控制,就需要GUI自动化工具了。不得不赞P
- Python练习(7)Python模块与方法:20道核心实战练习题(含答案与深度解析)(上)
目录引言基础篇(5题)练习1:模块导入方式对比练习2:模块别名应用练习3:条件导入模块练习4:模块搜索路径管理练习5:包结构初始化进阶篇(5题)练习6:模块重载机制练习7:类方法与静态方法区分练习8:魔术方法应用练习9:模块级变量作用域练习10:装饰器实现方法注册高级技巧篇(5题)练习11:动态模块导入练习12:命名空间包练习13:模块卸载陷阱练习14:元类方法控制练习15:上下文管理器方法实战案
- python启动其他程序或命令(pandoc)
SUN_SU3
python
编写python脚本时,有些功能由其他程序执行,直接在python脚本中启动对应的程序或命令执行即可,现记录用过的几种方法:查看程序的安装目录:whichpandoc1)subprocess:importsubprocessa=subprocess.Popen(['/opt/***/pandoc','/home/***/test.docx','-o','/home/***/test.html'])
- 全国青少年软件编程(Python)等级考试四级考试真题2024年3月——持续更新.....
owbc_
电子学会(python)三四级考试真题及答案(持续更新)python算法开发语言青少年编程
青少年软件编程(Python)等级考试试卷(四级)分数:100题数:38一、单选题(共25题,共50分)1.运行如下代码,若输入整数3,则最终输出的结果为?()deff(x):ifx==1:s=1else:s=f(x-1)*xreturnsn=int(input(“请输入一个大于1的整数:”))print(f(n)+f(n-1))A.2B.4C.8D.16标准答案:C试题解析:由于f(3)=f(2
- 【亲测免费】 PyPandoc 项目常见问题解决方案
PyPandoc项目常见问题解决方案基础介绍PyPandoc是一个为Pandoc提供的Python薄壳包装器。Pandoc是一个通用的文档转换工具,能够将标记格式的文档转换为多种格式。PyPandoc主要使用Python编程语言,旨在简化Pandoc在Python项目中的使用。新手常见问题及解决步骤问题1:如何安装PyPandoc问题描述:新手在使用PyPandoc时,首先需要了解如何正确安装。解
- 青少年人工智能Python编程水平测试四级 模拟试卷9 试题解析
编程小伙伴测评网
YCL试题详解python开发语言少儿编程青少年编程算法数据结构排序算法
1、以下选项中,说法正确的是?()A、条件1and条件2,表示条件满足其中1个即可B、条件1or条件2,表示2个条件需要同时满足C、and和or不能在一个条件表达式中同时使用D、andor一般和if语句搭配使用正确答案:D试题解析:and是逻辑与,同时满足结果才满足;or是逻辑或,满足一个结果就是满足;
- 青少年人工智能Python编程水平测试四级 模拟试卷5 试题解析
编程小伙伴测评网
YCL试题详解python开发语言少儿编程青少年编程算法推荐算法
【单选题】(每题2分)1、运行下列代码后,输入4,输出的结果是?()num_1=input()num_2="3"print(num_1+num_2)A、7B
- 十年老Python程序员:给我一个链接,没有我不能爬的视频,只有我顶不住的视频
IT孔乙己
一、写在前面真的,为什么别人发游戏这么多人看,我发了两次了加起来才一百个。算了算了,不整游戏了,反正你们也不爱看~python今天来试试把头条上扭腰上热门的那些妹子爬一爬,不知道我顶不顶得住~python二、准备工作1、使用的环境python3.8pycharm2021.2专业版2、要用的第三方模块seleniumrequestsparsel三、大致流程鉴于你们不喜欢我啰嗦,但是流程呢,我还是要给
- Python中win32com的用法详解:自动化办公与COM交互的利器
detayun
Pythonpython自动化交互win32
在Python自动化办公场景中,win32com模块凭借其与WindowsCOM(ComponentObjectModel)的深度集成能力,成为操控MicrosoftOffice、工业设备甚至第三方软件的核心工具。本文将通过实战案例、技术细节和避坑指南,系统解析这一模块的核心用法。一、核心功能与安装配置1.1模块定位与优势win32com是pywin32扩展包的核心组件,其核心价值在于:跨软件交互
- Python 进阶(一):多线程
目录1.相关概念1.1解释器1.2GIL2.threading2.1方法属性2.2线程对象2.3锁对象2.4条件对象2.5信号量对象2.6事件对象1.相关概念1.1解释器Python解释器的主要作用是将我们在.py文件中写好的代码交给机器去执行,比较常见的解释器包括如下几种:CPython:官方解释器,我们从官网下载安装后获得的就是这个解释器,它使用C语言开发,是使用范围最广泛的Python解释器
- Python 基础(十四): 错误和异常
目录1错误2异常2.1内置异常2.2异常处理2.3抛出异常2.4自定义异常程序中的错误我们通常称为bug,工作中我们不仅需要改自己程序中的bug,还需要改别人程序中的bug,新项目有bug要改,老项目也有bug要改,可以说bug几乎贯穿一个程序员的职业生涯…我们通常将bug分为Error(错误)和Exception(异常),我们下面来具体学习下Python中的错误和异常。1错误错误通常是指程序中的
- word python 域 操作_Python进阶:关于 Word 基本操作
铃木大宝
wordpython域操作
1.概述Word是一个十分常用的文字处理工具,通常我们都是手动来操作它,本节我们来看一下如何通过Python来操作。Python提供了python-docx库,该库就是为Word文档量身定制的,安装使用pipinstallpython-docx命令即可。2.写入首先,我们使用Python来创建一个Word文档并向其中写入一些内容。2.1标题我们先来创建Word文档并向其中添加标题,完整实现代码如下
- word2007中怎么去掉小箭头【解决办法】
walt18
总结word2007小箭头
【1】office2007最左上角有个圆圈,也就是office按钮,里面有新建、保存等功能的那个。右下角有个“word选项”【2】点击“显示”,找到“始终在屏幕上显示这些格式标记”那一栏,里面有个选项“段落标记(M)”,将那个钩去掉。问题解决。
- 华为OD机试2025 B卷 - 通过软盘拷贝文件 (C++ & Python & JAVA & JS & GO)
无限码力
华为OD机试真题刷题笔记华为od华为OD机试华为OD机试2025B卷华为OD2025B卷华为OD机考2025B卷
通过软盘拷贝文件华为OD机试真题目录点击查看:华为OD机试2025B卷真题题库目录|机考题库+算法考点详解华为OD机试2025B卷100分题型题目描述有一名科学家想要从一台古董电脑中拷贝文件到自己的电脑中加以研究。但此电脑除了有一个3.5寸软盘驱动器以外,没有任何手段可以将文件持贝出来,而且只有一张软盘可以使用。因此这一张软盘是唯一可以用来拷贝文件的载体。科学家想要尽可能多地将计算机中的信息拷贝到
- 矩阵求逆(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到设计文档中,那将会是一件非常痛苦的事情。