- Git 高亮增强插件 diff-so-fancy
Gilgod
git
macorlinuxhttps://github.com/so-fancy/diff-so-fancy#cd/usr/local/binwgethttps://raw.githubusercontent.com/so-fancy/diff-so-fancy/master/third_party/build_fatpack/diff-so-fancy#chmod777/usr/local/bin/d
- python+playwright自动化测试(四):元素操作(键盘鼠标事件)、文件上传
觅远
python自动化测试爬虫python自动化
目录鼠标事件悬停移动按键点击滚轮操作拖拽键盘事件输入文本内容type输入内容fill输入内容按键操作press文件上传下拉选/单选框/复选框滚动条操作鼠标事件悬停page.get_by_text('设置',exact=True).nth(1).hover()移动page.mouse.move(x=33,y=50)按键#点击操作可设置button参数,选择点击键["left","middle","r
- Git的下载与安装及常用命令
小宝哥Code
Unity引擎git
Git的下载与安装指南Git是目前广泛使用的分布式版本控制系统,适用于代码管理和团队协作。以下是Git的下载与安装步骤。一、Git下载1.官方网站下载访问Git官方网站下载页面:GitDownloads,选择适合您操作系统的版本。2.选择操作系统Windows:点击下载Windows版本。MacOS:点击下载MacOS版本。Linux/Unix:根据发行版选择包管理器安装。二、Git安装1.Win
- WPF项目:xaml笔记
敲代码的TKP
wpf笔记
1.设置页面无标题栏/全屏/禁止用户调整大小WindowStyle="None"设置页面无标题栏WindowState="Maximized"设置页面全屏最大化ResizeMode="NoResize"禁止用户调整大小注:页面非全屏(小窗口)时,想取消标题栏,必须禁止用户调整大小,否则会有白边
- 在Vue页面中实现平滑滚动功能
种花的人_
前端vue
这是一个实现平滑滚动的函数,可以让页面在滚动到指定位置时产生缓动效果该函数依赖于Math.easeInOutQuad函数和requestAnimFrame函数,其中Math.easeInOutQuad函数用于计算当前滚动位置的值(根据时间、起始值、变化量和持续时间),requestAnimFrame函数用于实现动画效果。函数的参数包括:to:目标滚动位置;duration:滚动持续时间,默认为50
- Linux-Ubuntu入门笔记
LeoJamLin
linuxlinux
一.linux操作系统概述1.常见操作系统-服务端操作系统:linux、unix、windowsserver-单机操作系统:windows(dos、ucdos、win95、win98、win2000、xp、vista、win7、win8)MAC、linux(ubuntu)-移动操作系统Android、IOS、Windowsphone2.linux操作系统介绍-为什么要学习linux操作系统1.大部
- uniapp或小程序使用jsencrypt
钢铁熊猫33
小程序前端uniapp小程序jsencryptrsa
uniapp或小程序使用报错jsencrypt.js使用了window对象,app、小程序中没有窗口对象的环境解决办法在jsencrypt.js文件插入以下代码varnavigator2={appName:'Netscape',userAgent:'Mozilla/5.0(iPhone;CPUiPhoneOS9_1likeMacOSX)AppleWebKit/601.1.46(KHTML,like
- Python+Scapy 实现ARP扫描并获取IP+MAC
root@localhost
Pythonpython扫描测试工具
环境:Python3.x+scapydefip_mac_scanner(hosts:str,local_mac:str,detail:bool=False):"""网段IP&MacARP协议扫描器:paramhosts:网段e.g.‘*.*.*.*/*’:paramlocal_mac:本地MAC地址,e.g.‘**-**-**-**-**-**’:paramdetail:是否显示详细信息:retu
- 【云原生技术】K8S更新策略有哪些方式,每种方式的可选必填字段有哪些,详细举例说明
阿寻寻
云原生kubernetes容器
更新策略有哪些方式一、更新策略详细举例1.**RollingUpdate(滚动更新)**说明:必填字段:可选字段:示例:2.**Recreate(重建)**说明:必填字段:可选字段:示例:3.**OnDelete(手动更新)**说明:必填字段:可选字段:示例:总结详细示例小结二、Recreate不可选minReadySeconds吗?Recreate更新策略与minReadySeconds示例总结
- DIY台式机并安装Win10+Debian双系统
秋天的妖风
debianwindows程序人生linux
缘起做为软件开发者,之前一直使用MacBook系列,在公司用MacBookProM1,在家用使用自己的2018款MacBookAir。公司的电脑比较新配置也比较高,做开发使用还算顺利。但是家里的电脑在做开发的时候,打开IDE就已经有点卡顿了,在编程的时候,提示功能更是严重延迟,跟不上手速,于是有了更新电脑的想法。由于MacBook天然对开发友好,还是想用MacBook,但是现在MacBook越来越
- 微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。
肖肖肖丽珠
微信小程序小程序
1,可能是原因是你使用了scroll-view的标签,用onReachBottom触发加载事件。这两个是有冲突的。没办法一起使用。如果页面的样式是滚动的是无法去触发页面的onReachBottom的函数的。因此,你使用overflow:auto.来使用页面的某些元素滚动,照样也无法触发onReachBottom。2,滚动区域有部分内容被遮挡怎么解决起初我以为我给滚动区域设置一个高度。height:
- GoLang从入门到实战全攻略:开启高效编程之旅
奔跑吧邓邓子
项目实战golanggo编程语言
目录一、GoLang初相识:为何选择它二、环境搭建:踏上GoLang征程(一)下载安装包1.Windows系统2.Mac系统(二)设置环境变量1.GOROOT2.GOPATH3.PATH(三)开发工具推荐1.VisualStudioCode2.GoLand三、语法基础:构建代码大厦的基石(一)变量与数据类型(二)控制结构(三)函数与包四、进阶特性:提升代码能力(一)面向对象编程(二)并发编程(三)
- C/C++、网络协议、网络安全类文章汇总
大草原的小灰灰
网络安全c语言c++网络协议网络安全密码学
文章简介本文章主要对本博客的所有文章进行了汇总,方便查找。内容涉及C/C++编程,CMake、Makefile、Shell脚本,GUI编程框架MFC和QT,Git版本控制工具,网络协议基础知识,网络安全领域相关知识,Windows、Linux和Mac平台软件打包流程,一些实用的C/C++开源框架。对于访问量过万的文章进行了标记。文章汇总C/C++编程C++11新特性之std::function类模
- 《CPython Internals》阅读笔记:p329-p335
codists
读书笔记python
《CPythonInternals》学习第16天,p329-p335总结,总计7页。一、技术总结1.debuggingp331,Therearetwotypesofdebugger,consoleandvisual——作者将debugger分为两类:(1)console:lldb(MAC系统使用),GDB(Linux系统使用))。(2)visual:VisualStudioDebugger,CLi
- Information On Installed Database Components and Schemas
cmkcnufwy33419835
数据库java
Subject:InformationOnInstalledDatabaseComponentsandSchemasDocID:472937.1Type:HOWTOModifiedDate:20-JUL-2009Status:PUBLISHEDInthisDocumentGoalSolution1.JServerJAVAVirtualMachine2.OLAPCatalog,OLAPAnalyti
- GitHub Actions是什么
ZhangJiQun&MXP
2021论文教学githubworkflow
目录GitHubActions是什么GitHubActions的使用方法示例注意事项GitHubActions配置文件中-工作流的:Workflow一、自动化任务执行二、规范团队协作三、灵活配置和定制四、提高开发效率五、集成GitHub生态六、可复用性和共享性仓库中的“Actions”部分,特别是聚焦于在M1Mac上执行Python测试的工作流程。以下是对界面上各个部分的详细解释:顶部导航栏:包含
- Vue教程|搭建vue项目|Vue-CLI新版脚手架
cnsxjean
vue.jsjavascript前端框架npmui
一、安装Node环境安装Node及Npm环境Node下载地址:Node.js—RunJavaScriptEverywhereNode.js®isaJavaScriptruntimebuiltonChrome'sV8JavaScriptengine.https://nodejs.org/en/安装完成后,检查安装是否成功,并检查版本,命令如下:node-vnpm-vmac@MacdeMacBook-
- 《CPython Internals》阅读笔记:p329-p335
python
《CPythonInternals》学习第16天,p329-p335总结,总计7页。一、技术总结1.debuggingp331,Therearetwotypesofdebugger,consoleandvisual——作者将debugger分为两类:(1)console:lldb(MAC系统使用),GDB(Linux系统使用))。(2)visual:VisualStudioDebugger,CLi
- 3DGS.cpp:高性能跨平台高斯泼溅实现
张涓曦Sea
3DGS.cpp:高性能跨平台高斯泼溅实现3DGS.cppAcross-platform,highperformancerendererforGaussianSplattingusingVulkanCompute.Supports✅Windows,Linux,macOS,iOS,andvisionOS项目地址:https://gitcode.com/gh_mirrors/3d/3DGS.cpp项目
- 2025年前端面试题汇总
涔溪
前端
JavaScript核心异步编程Promise、async/await的工作原理及应用场景。如何处理并发请求,使用Promise.all()或Promise.race()等方法。解释事件循环机制,理解微任务(microtask)与宏任务(macrotask)的区别。原型链深入理解JavaScript中的原型继承模型。举例说明如何通过修改原型对象影响所有实例。闭包定义闭包及其作用,如实现私有变量和函
- mysql8.0结构_MySQL8.0-目录结构,配置文件
weixin_39537977
mysql8.0结构
server-id=1表示是本机的序号为1,一般来讲就是master的意思skip-name-resolve禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求skip-networkingback_log=600MySQL能有的连接数量。当主要MyS
- 【头歌-Python】Python第一章作业(初级)
谛凌
Python头歌-Educoderpython开发语言头歌
禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/137069102参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301如果代码存在问题,麻烦大家指正~~有帮助麻烦点个赞~~Python第一章作业(初级)第1关:浮点数四则运算与格式化输出第2关:计算矩形面积第3关:简单数学
- npm install安装缓慢或卡住不动
Amy_cx
npm前端node.js
起因今天执行npminstalleslint-plugin-cypress@latest--save-dev命令时进度条一直卡着不动,于是想着安装yarn来操作。方案1全局安装yarn(Mac在npm前加sudo):npminstall-gyarnyarn安装好之后安装依赖用:yarnadd+依赖名称启动项目用:yarnyarn后面什么都不加等于yarninstall。但是我运行yarn出现:换成
- 【Java网络编程】IP网络协议与TCP、UDP网络传输层协议
xiaoli8748_软件开发
网络通信网络网络协议java
1.1、IP协议当应用层的数据被封装后,想要将数据在网络上传输,数据究竟要被发往何处,又该如何精准的在网络上定位目标机器,此时起到关键作用的就是“IP协议”。IP协议的作用在于把各种数据包准确无误的传递给目标方,其中两个重要的条件是IP地址和MAC地址。其中IP地址就是所有主机在网络通信中的唯一标识,但由于IP地址是稀有资源,不可能每个主机都拥有一个IP地址,因此路由器里面会记录我们主机的MAC地
- 全网最详细Gradio教程系列2——Gradio的安装与运行
龙焰智能
Gradio全解教程Gradio安装运行热重载
全网最详细Gradio教程系列2——Gradio的安装与运行前言实战导论:2.Gradio的安装与运行2.1安装2.1.1Windows安装Gradio2.1.2MacOS/Linux安装Gradio2.2运行2.2.1普通方式运行2.2.2热重载运行2.2.2.1命令行式热重载2.2.2.2Notebook热重载2.2.2.3控制热重载参考文献前言本系列文章主要介绍WEB界面工具Gradio。G
- 嵌入式专业英语(第二周)
佩佩(@ 。 @)
c语言linux
在第一周的基础上增加一、学预科准备、linux基础接触的专业英文、知识点Crack:破解,裂开virtualmachine:虚拟机terminal:终端,站台Permissiondenied:权限不允许password:密码remove:删除regular:普通的empty:空的directory:目录、路径、文件夹名cannot:不能necessary:必须的catch:抓取omitting:省
- 搭建k8s集群
zhen24
kubernetes容器云原生
一、准备工作(所有节点)在开始部署之前,我们需要对所有节点进行以下准备工作。1.1、关闭防火墙#关闭防火墙systemctlstopfirewalld#禁止防火墙开机自启systemctldisablefirewalld1.2、关闭SELinux#永久关闭SELinuxsed-i's/enforcing/disabled/'/etc/selinux/config#重启系统使更改生效reboot#临
- SwiftUI 2.0实现动态粘性页脚动画指南
一曲歌长安
本文还有配套的精品资源,点击获取简介:在SwiftUI2.0中创建类似Medium.com的动态粘性页脚,涉及视图构建、环境值跟踪、自定义组件设计、动画实现以及响应式布局,以增强用户体验并提升应用程序的互动性。开发者将学习到如何通过滚动位置的变化来控制页脚的透明度和尺寸,并通过动画使交互更为流畅自然。1.SwiftUI核心概念理解SwiftUI是苹果公司推出的一套声明式UI框架,它使得开发者可以使
- Syncthing在ubuntu下的安装使用
V丶Chao
Linux下命令使用ubuntulinux运维
以前安装这个软件的时候,是在windows和mac上,都是图形化的安装方式,但是ubuntu不太一样,需要增加源,然后执行命令。安装的系统版本是2004。参考链接1,主要命令包含下面几个部分:第一步:(这个在我机器上并没有执行)sudoaptinstallcurlapt-transport-https第二步:curl-shttps://syncthing.net/release-key.txt|s
- 在VSCode中更改专用终端的Conda环境
小白也有IT梦
pythonvscode
步骤打开VSCode:启动VSCode并打开你需要的工作目录。打开命令面板:使用快捷键Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)打开命令面板。选择Conda环境:在命令面板中输入Python:SelectInterpreter并选择该选项。在出现的列表中选择你需要的Conda环境。这个步骤会改变当前工作目录下Python解释器的环境。打开终端:使用
- 矩阵求逆(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到设计文档中,那将会是一件非常痛苦的事情。