- Spring 在多线程环境下如何确保事务一致性
「已注销」
SpringBootspringmysqljava
目录问题在现如何解决异步执行多线程环境下如何确保事务一致性事务王国回顾事务实现方式回顾编程式事务利用编程式事务解决问题问题分析完了,那么如何解决问题呢?小结问题在现我先把问题抛出来,大家就明白本文目的在于解决什么样的业务痛点了:public void removeAuthorityModuleSeq(Integer authorityModuleId, IAuthorityService iAut
- debian10安装配置_如何在Debian 10上设置和配置证书颁发机构(CA)
cukw6666
linuxjavapythonubuntu大数据
debian10安装配置介绍(Introduction)ACertificateAuthority(CA)isanentityresponsibleforissuingdigitalcertificatestoverifyidentitiesontheinternet.AlthoughpublicCAsareapopularchoiceforverifyingtheidentityofwebsit
- 信息安全(密码学)---数字证书、kpi体系结构、密钥管理、安全协议、密码学安全应用
魔同
信息安全sslwebssh密码学网络安全
数字证书数字证书(DigitalCertificate,类似身份证的作用)----防伪标志CA(CertificateAuthority,电子商务认证授权机构)----ca用自己私钥进行数字签名数字证书姓名,地址,组织所有者公钥证书有效期认证机构数字签名■公钥证书的种类与用途■证书示例·序列号04·签名算法md5RSA·颁发者·有效起始日期·有效终止日期·公钥■数字证书按类别可分为个人证书、机构证
- 对称密钥的分配、公钥的分配
山间未相见
计算机网络运维网络安全
目录密钥分配1对称密钥的分配KDC对会话密钥KAB的分配对称密钥分配协议:Kerberos2公钥的分配认证中心CA(CertificationAuthority)数字证书(digitalcertificate)已签名的B的数字证书的产生过程X.509数字证书认证系统证书链证书撤销与更新密钥分配·安全性:完全基于密钥的安全保护上。·密钥管理包括:密钥的产生、分配、注入、验证和使用。·密钥分配是密钥管
- 新概念英语第二册(62)
哆啦是个程序员
新概念英语考研
【Newwordsandexpressions】生词和短语(15)controln.控制smoken.烟desolateadj.荒凉的threatenv.威胁surroundingadj.周围的destructionn.破坏,毁灭floodn.洪水,水灾authorityn.(常用复数)当局grass-seedn.草籽sprayv.喷撒quantityn.量rootn.根centuryn.世纪pa
- 新项目,从0到1,SpringBoot+Vue.js权限管理系统,拿去做毕设
jonssonyan
开源项目springbootvue.js课程设计
大家好,我是jonssonyan最近把以前做的权限管理系统重新整理了一下(将一些不规范的地方规范了一下,并且在关键地方写了注释),代码全部开源,这个项目是以现在主流的前后端分离模式开发的,包含前端(authority-ui)和后端(authority)两个工程,项目的开源地址在文章的最后。适宜人群你可以借助本项目,学习Java、SpringBoot、MybatisPlus、Shiro、JWT…一个
- WordPress外贸网站安装 SiteGround 免费SSL证书操作教程
歪猫笔记
SiteGround免费SSL是向所有的用户提供的,无论你使用的是哪个付费版本的SiteGround主机,都可以为你的网站添加SSL证书保证Wordpress外贸网站数据传输安全,提高客户对我们网站的信任,以及网站在谷歌,必应等等搜索引擎中的相关关键词排名表现。SSL证书,是由受信任的证书颁发机构CA(CertificateAuthority)颁发的一种遵守SSL协议的数字证书,它有两个重要的作用
- 牛津通识读本| Film 02
Rita2219
WhatIsReal?Ofcourse,filmisphotography,oraformofit.Thecommontechnologicaloriginisimportant,andisthesourceofmuchoftheauthorityandallureoffilmasamedium.Ortobetrulyprecise,thesetofideaswehavebuiltaroundth
- CA认证过程及apache和nginx实现https的方法
菜鸟、上路
第三阶段-集群类第三阶段-安全类apache使用https访问nginx实现https访问CA认证中心的搭建https证书文件的申请和前面
一、CA认证过程1、CA概述CA概述:CertificateAuthority的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。CA认证的流程和公安局派出所颁发身份证的流程一样认证中心(CA)的功能有:证书发放、证书更新、证书撤销和证书验证。CA证书作用:身份认证,实现数据的不可否认性。我们先回顾一下身份证的办理过程:带上户口本(证明你合法)-》当地派出所(认证机构)-》签发证
- 使用 postcss-cva 来生成 cva 方法吧
使用postcss-cva来生成cva方法吧使用postcss-cva来生成cva方法吧什么是cva封装示例组成参数postcss-cva的功能Css示例原子化设计注释参考生成cva函数Refers什么是cvacva全称为class-variance-authority,它是一个非常适合制作那种,创建控制Css变体方法的类库,它非常的契合像tailwindcss这类的原子化思想。在很多时候我们自己
- (十三)springboot实战——springboot前后端分离方式项目集成spring securtity安全框架
厉害哥哥吖
springspringboot安全
前言SpringSecurity是一款强大且高度可定制的认证和访问控制框架,它是为了保护基于Spring的应用程序提供安全性支持。SpringSecurity提供了全面的安全服务,主要针对企业级应用程序的需求。其核心组件主要包含:Authentication(认证)、Authorization(授权)、Principal(主体)、GrantedAuthority(授予的权限)、SecurityCo
- 2018-06-20
虫虫2018
2018年6月19日叙周二铁打的营盘流水的账,补记昨日事。上午,偷得浮生半日闲。倒不是闲来无事,偶尔像今天这样,什么都可以想,什么都可以不想。便感觉思想的世界广阔无垠,任我驰骋;想到雪莱的诗“Idon'twanttodotheking,Love,isalsohardenough,Theroadtoauthorityisnotgood,Ahighdragonismoreadangeroussitua
- 漫游记—纽约的地铁
Gracexiewuxi
每到一个陌生的城市,我习惯体验一下当地公共交通,这样会极快地拉近我和这个城市的距离。来到纽约之前几天,新闻说PortAuthorityBusTerminal(纽约时代广场附近的巴士总站)发生了爆炸,加之又是圣诞期间,纽约人流如潮,犹豫再三最终还是依然坚持公交出行。Greyhound我们从波士顿乘坐灰狗巴士五个半小时后抵达纽约,灰狗(Greyhound)是美国著名城际长途运营巴士,客运于美国和加拿大
- 开发实践12_DataMiningSys.
even_123
数据库sql
朔宁夫基于Pycharm的网页开发课程笔记。Tips1实际的分析系统构建可能涉及不同开发工具,无法基于模型关系关联,需要明确item的id。role_id=models.IntegerField(primary_key=True,verbose_name="Authority")id=models.BigAutoField(primary_key=True,verbose_name="UserID
- 《这样教学生才肯学》读书笔记1
冉冉升起的sun
第一章导论关于教育,有三件事要牢记——一是动机,二是动机,三还是动机。外在的奖励和惩罚会削弱很多活动的内在动力。寻找和战胜挑战的欲望是课堂学习内在动力的核心。它以学生的学业心理需求为动力:控制自己做决定(自主);做事情使他们有成就感(胜任);感觉比自己本身更强大(归属感和联系感);自我感觉良好(自尊);在做的事情中找到快乐(参与和刺激)。TARGET:任务(task)、权力(authority)、
- curl命令忽略不受信任的https安全限制
IChen.
https安全iphone
用curl命令没有得到返回,还报了个提示:curl:(60)Issuercertificateisinvalid.Moredetailshere:http://curl.haxx.se/docs/sslcerts.htmlcurlperformsSSLcertificateverificationbydefault,usinga“bundle”ofCertificateAuthority(CA)p
- SpringSecurity Web 权限方案
zoeil
springsecurity前端javaspringspringsecurity后端
目录一、设置登录系统的账号、密码二、数据库查询用户名密码三、自定义登录页面四、基于角色或权限进行访问控制(一)hasAuthority方法(二)hasAnyAuthority方法(三)hasRole方法(四)hasAnyRole五、自定义403页面六、注解使用(一)@Secured(二)@PreAuthorize(三)@PostAuthorize(四)@PreFilter(五)@PostFilte
- 优雅的实现SpringBoot动态权限校验,可以这样做!
程序员蜗牛g
springbootspringboot后端java
1、背景简单先说一下需求吧,这样也好让看的人知道到底适不适合自己。实现自定义的登录认证。登录成功,生成token并将token交由redis管理。登录后对用户访问的接口进行接口级别权限认证。springSecurity提供的注解权限校验适合的场景是系统中仅有固定的几个角色,且角色的凭证不可修改(如果修改需要改动代码)。@PreAuthorize("hasAuthority('ROLE_TELLER
- 打卡第117天
神级佐料小米椒
eliminateLiberalTolerancedespatchScornEvaporateCommeceConceptAuthority
- Sentinel解密之SlotChain中的各大SLot
一只牛博
#sentinelsentinel
欢迎来到我的博客,代码的世界里,每一行都是一个故事Sentinel解密之SlotChain中的各大SLot前言NodeSelectorSlotClusterBuilderSlotStatisticSlotFlowSlotDegradeSlotParamFlowSlotAuthoritySlot前言在数字世界里,想象一下Sentinel就像是一座充满机关陷阱的城堡,而SlotChain则是这座城堡中
- html页面中引入自签名证书的js web资源出现net::ERR_CERT_AUTHORITY_INVALID
weixin_30859423
javascriptphpViewUI
其实是浏览器客户端对自签名的内容认为不安全引起的,临时方法可以再浏览器中先直接访问下那个自签名的https地址,然后再访问有引用的那个页面就可以了。以下内容引用自https://www.morong.me/?p=114HTTPS的常见错误及解决方案Chrome篇作者:boris分类:技术文章发布时间:2017-11-2411:12Chrome浏览器错误代码问题原因解决方法NET::ERR_CERT
- SSL加密证书免费申请
涂样丶
sslSSL证书免费SSL证书https
首先,让我们来了解一下SSL证书的基本作用。SSL证书通过公钥和私钥的非对称加密技术,使得服务器与浏览器之间的通信内容得到高强度加密,同时验证网站的真实身份,从而提升用户的信任度,也是搜索引擎排名优化的一个重要因素。现在,许多权威的CA(CertificateAuthority,证书颁发机构)为了推广网络安全意识,提供了免费的SSL证书服务。以下是一份简单的免费SSL证书申请步骤:选择证书颁发机构
- 浏览器常见证书错误 lNET::ERR_CERT_AUTHORITY_INVALID、NET::ERR_CERT_COMMON_NAME_INVALID
OceanWaves1993
密码证书
浏览器常见证书错误lNET::ERR_CERT_AUTHORITY_INVALID、NET::ERR_CERT_COMMON_NAME_INVALID1、lNET::ERR_CERT_AUTHORITY_INVALID1.1、问题描述1.2、问题分析1.3、解决方法2、NET::ERR_CERT_COMMON_NAME_INVALID2.1、问题描述2.2、问题分析2.3、解决方法1、lNET::
- MobaXterm报错:MobaXterm X11 proxy: Unsupported authorisation protocol
思途积跬
常见工具和命令
可以使用mobaXterm图形化界面打开某些程序,这个功能很好用,但是有可能因为配置文件不存在导致开启失败,如下所示,打开gedit报错。解决方法有两个:方法一:使用root账户登录一次。mobaXterm就会自动在用户目录下创建.Xauthority文件方法二:cp/xxx/.Xauthority/home/root/.XauthorityXXX为你当前的用户名。
- python爬虫设置代理(UA, IP)
shitou987
爬虫IP代理
避免请求频率过高,被访问网站禁止,顾设置代理池1.设置用户代理User-Agentimportrequestsfromlxmlimportetree'''#1.查看浏览器内核版本检测https://ie.icoa.cn/#访问网站时,浏览器会自动发送User-Agent#浏览器内核检测headers={"X-Requested-With":"XMLHttpRequest","authority":
- kubernetes集群证书延期
张折耳
kubernetesdocker容器
查看集群当前证书到期时间:[root@k8s001~]#kubeadmalphacertscheck-expiration#部分老版本可能需要用此命令查看[root@k8s001~]#kubeadmcertscheck-expirationCERTIFICATEEXPIRESRESIDUALTIMECERTIFICATEAUTHORITYEXTERNALLYMANAGEDadmin.confOct
- x509: certificate signed by unknown authority (golang http请求报错)
二楼后座。
gohttphttpsgolang
原因:访问了没有证书的域名或ip地址解决方法funcNewHttpClient()*http.Client{t:=http.DefaultTransport.(*http.Transport).Clone()//不对证书进行校验t.TLSClientConfig=&tls.Config{InsecureSkipVerify:true}t.MaxConnsPerHost=200t.MaxIdleCo
- 安装net-framework4.8弹出“已处理证书链,但是在不受信任提供程序信任的根证书中终止”错误的解决方法
ywops
windows.netframework
windows7系统SP1安装完成后,在安装某软件时,提示需要先安装4.6.2以上的版本net-framework包,正好电脑里有个net-framework4.8软件包,于是打算用上,可是在安装时,弹出“安装未成功,已处理证书链,但是在不受信任提供程序信任的根证书中终止”。网上找了一圈答案,获得一个解决方法,就是导入一个证书MicrosoftRootCertificateAuthority201
- _安装net-framework4.8弹出“已处理证书链,但是在不受信任提供程序信任的根证书中终止”错误的解决方法
ziix
net-framework.net.netframework证书链不受信任
windows7系统SP1安装完成后,在安装某软件时,提示需要先安装4.6.2以上的版本net-framework包,正好电脑里有个net-framework4.8软件包,于是打算用上,可是在安装时,弹出“安装未成功,已处理证书链,但是在不受信任提供程序信任的根证书中终止”。网上找了一圈答案,获得一个解决方法,就是导入一个证书MicrosoftRootCertificateAuthority201
- 物联网安全导论
codefan※
期末专栏安全物联网加密攻击
整理不易,不要忘了点赞关注收藏!!!复习资料简写解释精简版CA电子签证机关CertificateAuthority⭐PKI公钥基础设施PublicKeyInfrastructure⭐RBAC基于角色的访问控制Role-BasedAccessControlABAC基于属性的访问控制Attribute-BasedAccessControlDES数据加密标准DataEncryptionStandardA
- 矩阵求逆(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到设计文档中,那将会是一件非常痛苦的事情。