- B02 迭代器模式 JDK源码分析
乌鲁木齐001号程序员
java.util.ArrayListItr作为具体的Iterator以内部类的方式实现在ArrayList中,使其可以访问ArrayList中维护的数组elementData;ArrayList又是java.util.Collection的具体实现,迭代器模式中的角色都体现到了;publicclassArrayListextendsAbstractListimplementsList,Rando
- 【设计模式】责任链模式
浩泽学编程
软件设计模式设计模式责任链模式java后端软件工程
文章目录前言一、概述结构二、案例三、优缺点五、JDK源码分析总结前言【设计模式】责任链模式——行为型模式,包含JDK源码分析。一、概述在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导
- 【设计模式】策略模式
浩泽学编程
软件设计模式设计模式策略模式软件工程java后端
文章目录前言一、概述结构二、实现案例三、优缺点使用场景四、JDK源码分析总结前言【设计模式】策略模式——行为型设计模式。一、概述先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。定义:该
- jdk源码分析之ArrayList
shoulda
ArrayList关键字段分析/***ThearraybufferintowhichtheelementsoftheArrayListarestored.*ThecapacityoftheArrayLististhelengthofthisarraybuffer.*/transientObject[]elementData;//non-privatetosimplifynestedclassacc
- jdk源码分析(一)Object类
Zal哥哥
一.概述Object类是java中所有类的父类,所有类默认(而非显式)继承Object。这也就意味着,Object类中的所有公有方法也将被任何类所继承。如果,整个java类体系是一颗树,那么Object类毫无疑问就是整棵树的根,因此值得我们仔细研读(以下代码基于jdk1.6)。Object类中的方法如下:image下面我们逐一介绍。二.核心方法1.equals方法默认的实现是:image可以看出默
- 【设计模式从入门到精通】03-原型模式
VectorUx
设计模式从入门到精通原型模式深拷贝浅拷贝clone
笔记来源:尚硅谷Java设计模式(图解+框架源码剖析)文章目录原型模式1、克隆羊问题2、基本介绍3、原理结构图(UML类图)4、原型模式解决克隆羊问题5、JDK源码分析6、浅拷贝和深拷贝浅拷贝基本介绍深拷贝基本介绍7、注意事项和细节原型模式1、克隆羊问题现在有一只羊,姓名为Tom,年龄为1,颜色为白色,请编写程序创建和Tom羊属性完全相同的10只羊传统方法publicclassSheep{priv
- JDK源码分析--String的一些解析
wolfshadow.cn
JDK源码JDK源码StringString源码
注:以下解析基于JDK1.8.0_74。一、实现的3个接口1、java.io.SerializableSerializable接口是启用其序列化功能的接口。实现java.io.Serializable接口的类是可序列化的。序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。序列化的作用总结:(1)数据持久化,保存对象的字节序列到本地磁盘或数据
- JDK源码分析(4)HashSet
Tu9oh0st
JDK版本186.pngHashSet简介HashSet特点非线程安全允许null值添加值得时候会先获取对象的hashCode方法,如果hashCode方法返回的值一致,则再调用equals方法判断是否一致,如果不一致才add元素。注意:对于HashSet中保存的对象,请注意正确重写其equals和hashCode方法,以保证放入的对象的唯一性。HashSet源码publicclassHashSe
- 2018-04-24常用类
MVP帅炸天
常用类_包装类_Integer_Number_JDK源码分析把一个数zuoweiobject处理一共有八种,其中六种是数字类,属于number类
- OpenJDK源码分析(二)—— OpenJDK Clion断点调试环境
81e2cd2747f1
image.pngimage.pngimage.pngimage.png/Users/ericfei/Code/opensource/openjdk-jdk12u/src/hotspot/share/runtime/thread.cppimage.png
- JDK源码分析(3)HashMap
Tu9oh0st
JDK版本186.pngHashMap简介HashMap基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。(除了不同步和允许使用null之外,HashMap类与Hashtable大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态
- Java设计模式(八)— 单例模式3
柚子猫屿
#Java设计模式单例模式java设计模式
系列文章目录单例模式之静态内部类单例模式之枚举方式单例模式之JDK源码分析文章目录系列文章目录前言一、单例—静态内部类1.静态内部类案例2.静态内部类优缺点二、单例—枚举方式1.枚举方式案例2.枚举方式优缺点三、单例—JDK源码分析1.JDK源码分析四、单例模式注意事项和细节说明总结前言Hello,小伙伴们,欢迎来到柚子的博客~让我们一起成长吧o( ̄▽ ̄)ブ提示:以下是本篇文章正文内容,下面案例可
- JDK源码分析—— ArrayBlockingQueue 和 LinkedBlockingQueue
数据探险家
JavaConcurrent
目的:本文通过分析JDK源码来对比ArrayBlockingQueue和LinkedBlockingQueue,以便日后灵活使用。1.在Java的Concurrent包中,添加了阻塞队列BlockingQueue,用于多线程编程。BlockingQueue的核心方法有:booleanadd(Ee),把e添加到BlockingQueue里。如果BlockingQueue可以容纳,则返回true,否则
- java核心基础--jdk源码分析学习--HashMap
qianggetaba
javajava源码HashMap
java.util.HashMap1.内部由内部类Node存储单节点数据,Node单向链表(hash冲突时往后放)。table为Node数组,hash后决定Node存在table[?]staticclassNodeimplementsMap.Entry{Nodenext;//单链表2.Node的构造函数Node(inthash,Kkey,Vvalue,Nodenext)3.新建无参HashMap的
- 【设计模式从入门到精通】06-桥接模式
VectorUx
设计模式从入门到精通桥接模式
笔记来源:尚硅谷Java设计模式(图解+框架源码剖析)文章目录桥接模式1、传统方式解决手机操作问题2、桥接模式基本介绍3、桥接模式解决手机操作问题4、JDK源码分析5、注意事项和细节6、桥接模式其他应用场景桥接模式1、传统方式解决手机操作问题现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:UML类图问题分析扩展性问题(类爆炸):如果我们再增加手机的样式(旋转式)
- JDK源码分析(6)ConcurrentHashMap
Tu9oh0st
ConcurrentHashMap源码分析table:默认为null,初始化发生在第一次插入操作,默认大小为16的数组,用来存储Node节点数据,扩容时大小总是2的幂次方。nextTable:默认为null,扩容时新生成的数组,其大小为原数组的两倍。sizeCtl:默认为0,用来控制table的初始化和扩容操作,具体应用在后续会体现出来。**-1**代表table正在初始化**-N**表示有N-1
- 【2021年】小哪吒入门学习Java的第一天
魔王哪吒
前言希望可以通过这篇文章,能够给你得到帮助。(感谢一键三连)image内存分析,底层算法,JDK源码分析(idea版本和jdk13)初级学习方向:Java入门,idea开发环境使用(idea,eclipse),面向对象基础和面向对象设计,Java虚拟机内存机制,内存分析全面理解面向对象,内存分析全面理解编程语言,面向对象深入,数组和数据存储,异常机制和可视化bug追踪,常用类和jdk底层源码分析,
- JDK源码分析(5)Vector
Tu9oh0st
JDK版本186.pngVector简介/***The{@codeVector}classimplementsagrowablearrayof*objects.Likeanarray,itcontainscomponentsthatcanbe*accessedusinganintegerindex.However,thesizeofa*{@codeVector}cangroworshrinkasn
- OpenJDK源码分析(三)—— OpenJDK VSCode断点调试环境
81e2cd2747f1
VSCodeC++插件Name:C/C++Id:ms-vscode.cpptoolsDescription:C/C++IntelliSense,debugging,andcodebrowsing.Version:0.26.0-insiders3Publisher:MicrosoftVSMarketplaceLink:https://marketplace.visualstudio.com/item
- 【JDK】JDK源码分析-TreeMap(2)
weixin_30388677
java数据结构与算法
前文「JDK源码分析-TreeMap(1)」分析了TreeMap的一些方法,本文分析其中的增删方法。这也是红黑树插入和删除节点的操作,由于相对复杂,因此单独进行分析。插入操作该操作其实就是红黑树的插入节点操作。前面分析过,红黑树是一种平衡二叉树,新增节点后可能导致其失去平衡,因此需要对其进行修复操作以维持其平衡性。插入操作的代码如下:publicVput(Kkey,Vvalue){Entryt=r
- JDK源码分析-TreeMap(2)
WriteOnRead
JDK源码分析
前文「JDK源码分析-TreeMap(1)」分析了TreeMap的一些方法,本文分析其中的增删方法。这也是红黑树插入和删除节点的操作,由于相对复杂,因此单独进行分析。插入操作该操作其实就是红黑树的插入节点操作。前面分析过,红黑树是一种平衡二叉树,新增节点后可能导致其失去平衡,因此需要对其进行修复操作以维持其平衡性。插入操作的代码如下:publicVput(Kkey,Vvalue){Entryt=r
- <Java设计模式>(三)单例模式
爱编程的大李子
图解设计模式单例模式java设计模式
笔记来源:尚硅谷Java设计模式(图解+框架源码剖析)文章目录单例模式介绍八种方式1、饿汉式(静态常量)2、饿汉式(静态代码块)3、懒汉式(线程不安全)4、懒汉式(线程安全,同步方法)5、懒汉式(线程安全,同步代码块)6、双重检查7、静态内部类8、枚举JDK源码分析注意事项和细节说明小结单例模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该
- HashMap源码分析(一):JDK源码分析系列
乱敲代码
正文开始注:JDK版本为1.8HashMap1.8和1.8之前的源码差别很大目录简介数据结构类结构属性构造方法增加删除修改总结1.HashMap简介HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。(除了不同步和允许使用null之外,HashMap类与Hashtable大致相同。)HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为n
- JDK源码分析 多线程
被称为L的男人
说明对于JDK源码分析的文章,仅仅记录我认为重要的地方。源码的细节实在太多,不可能面面俱到地写清每个逻辑。所以我的JDK源码分析,着重在JDK的体系架构层面,具体源码可以参考:http://www.cnblogs.com/skywang12345/category/455711.html。实现多线程的两种方式ThreadRunnable优先使用Runnable因为Thread是类,一个类只能有一个
- JDK源码分析(1)ArrayList
Tu9oh0st
JDK版本186.pngArrayList简介ArrayList是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List,RandomAccess,Cloneable,java.io.Serializable这些接口。ArrayList继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、
- JDK源码分析-Semaphore
java后端
本文首发于微信公众号【WriteOnRead】,欢迎关注。1.概述Semaphore是并发包中的一个工具类,可理解为信号量。通常可以作为限流器使用,即限制访问某个资源的线程个数,比如用于限制连接池的连接数。打个通俗的比方,可以把Semaphore理解为一辆公交车:车上的座位数(初始的“许可”permits数量)是固定的,行驶期间如果有人上车(获取许可),座位数(许可数量)就会减少,当人满的时候不能
- JDK源码分析-CyclicBarrier
java后端
本文首发于微信公众号【WriteOnRead】,欢迎关注。1.概述CyclicBarrier是并发包中的一个工具类,它的典型应用场景为:几个线程执行完任务后,执行另一个线程(回调函数,可选),然后继续下一轮,如此往复。打个通俗的比方,可以把CyclicBarrier的执行流程比作:几个人(类比线程)围着操场跑圈,所有人都到达终点后(终点可理解为“屏障(barrier)”,到达次序可能有先后,对应线
- JDK源码分析-Semaphore
java后端
本文首发于微信公众号【WriteOnRead】,欢迎关注。1.概述Semaphore是并发包中的一个工具类,可理解为信号量。通常可以作为限流器使用,即限制访问某个资源的线程个数,比如用于限制连接池的连接数。打个通俗的比方,可以把Semaphore理解为一辆公交车:车上的座位数(初始的“许可”permits数量)是固定的,行驶期间如果有人上车(获取许可),座位数(许可数量)就会减少,当人满的时候不能
- JDK源码分析-CyclicBarrier
java后端
本文首发于微信公众号【WriteOnRead】,欢迎关注。1.概述CyclicBarrier是并发包中的一个工具类,它的典型应用场景为:几个线程执行完任务后,执行另一个线程(回调函数,可选),然后继续下一轮,如此往复。打个通俗的比方,可以把CyclicBarrier的执行流程比作:几个人(类比线程)围着操场跑圈,所有人都到达终点后(终点可理解为“屏障(barrier)”,到达次序可能有先后,对应线
- JDK源码分析-CountDownLatch
java后端
本文首发于微信公众号【WriteOnRead】,欢迎关注。1.概述CountDownLatch是并发包中的一个工具类,它的典型应用场景为:一个线程等待几个线程执行,待这几个线程结束后,该线程再继续执行。简单起见,可以把它理解为一个倒数的计数器:初始值为线程数,每个线程结束时执行减1操作,当计数器减到0时等待的线程再继续执行。2.代码分析CountDownLatch的类签名和主要方法如下:publi
- 矩阵求逆(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到设计文档中,那将会是一件非常痛苦的事情。