- Flutter学习之九 ListView
MQ_Twist
极端很容易,平衡才是最难的。Flutter学习之八Container前言Flutter中的ListView的地位,就好比于iOS中的UITableView,算是最常用的可滚动组件之一,它可以沿一个方向线性排布所有子组件,并且它也支持列表项懒加载(在需要时才会创建)。默认构造函数我们看看ListView的默认构造函数定义:ListView({...//可滚动widget公共参数AxisscrollD
- Flutter学习记录-基础控件
薰舞空
statelesswidget没有内部状态.Icon、IconButton,和Text都是无状态widget,他们都是StatelessWidget的子类。statefulwidget是动态的.用户可以和其交互(例如输入一个表单、或者移动一个slider滑块),或者可以随时间改变(也许是数据改变导致的UI更新).Checkbox,Radio,Slider,InkWell,Form,andTextF
- Flutter学习2 - Dart
KillerNoBlood
FlutterLearningflutter学习Dart
Dart语言特点:1、强类型语言,静态类型Dart2.0开始便是强类型语言,而且是静态类型的(可以类比Java,C#等)强类型语言的优点:所有类型的检查必须在编译的时候完成前端开发的js语言是弱类型的语言强类型的语言需要在定义的时候指定类型,如果不指定,编译器也可以在赋值的时候推断出变量类型2、面向对象的语言,OOP面向对象的语言有:Java、Kotlin、Objective-C、Swift、Py
- Flutter学习-dart(6):dart类和对象
NSC丶warrior
原生app开发flutterdartflutter
1.面向对象编程(OOP)的三个基本特征Dart所有的东西都是对象,所有的对象都继承自Object类Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类1.1封装封装是对象和类概念的主要特性。封装,把客观事物封装成抽象的类,并且把自己的部分属性和方法提供给其他对象调用,而一部分属性和方法则隐藏1.2继承面向对象编程(OOP)语言的一个主要功能就是“
- Flutter学习第十三天,2021最新版超详细Flutter2.0实现百度语音转文字功能,Android和Flutter混合开发?
android 小白星
Flutterandroiddart语音识别百度flutter
Flutter实现百度语音转文字功能1.新建一个flutter项目,来实现View端。2.新建android端的module1.打开flutter里面的Android文件1.新建一个module3.配置百度语音转文字sdk1.下载SDK2.在asr_plugin里面配置SDK1.找到core文件夹2.把下图文件放到asr_plugin文件的lib文件中3.把jniLibs粘贴到你的src文件中4.
- Flutter学习——组件篇
张豆豆94
【Android学习笔记】androidflutter
《Flutter实战·第二版》-Preview1.基础组件的部分属性1.1.shape属性ShapeBordershape,对应子类如下:BoxBorder1.1.BorderDirectional--通过【top】【bottom】【start】【end】shape:BorderDirectional(top:BorderSide(color:Colors.white),start:BorderS
- Flutter学习——杂记篇
张豆豆94
【Android学习笔记】flutterandroid
《Flutter实战·第二版》-Preview1.State生命周期initState()当widget第一次插入到widget树时会被调用,对于每一个State对象,Flutter框架只会调用一次该回调。一次性的操作,如状态初始化、订阅子树的事件通知等。didChangeDependencies()当State对象的依赖发生变化时会被调用。系统语言Locale或应用主题改变时。组件第一次被创建后
- Flutter学习指南(1):Mac 搭建flutter环境核心总结
super_chao
本套教程的优点,提供一种思路,本人iOS开发者。按照自己的思路走下去,遇到问题解决问题,不会什么学习什么。从基本的网络入手(上传,下载)-常用控件--上刷拉新。复杂项目--混合项目本地调用。flutter不能替代原生,目前为止,大多数的底层框架很不完善。包括音视频,直播等。注意:flutter是写界面,动画,手势,交互。并且没有使用原生的api,直接走的是硬件支持。不能接受的绕行。中文官网文档--
- Flutter学习(八)Flutter_Boost接入
motosheep
flutter学习
背景基于安卓的原生项目,进行Flutter的接入,进行混合开发。参考链接官方地址:linkfullter_boost配置:linkgit代理配置:linkkotlin语法集成:link混合开发的坑:link开发环境as4+jdk1.8gradle5.1.1思路与实现备注:从上面的开发环境可以看到,其实项目的gradle比较老旧,所以,要注意flutter的三方库是否兼容。首先,Flutter_Bo
- Flutter学习--MaterialApp与Scaffold
文小猿666
一.MaterialAppMaterialApp是我们app开发中常用的符合MaterialAppDesign设计理念的入口Widget,从源码可以看出该widget的构造方法中有多个参数,但是基本上大多数参数是可以省略的。(iOS开发者可以近似看成是rootViewController)MaterialApp({Keykey,this.title='',//设备用于为用户识别应用程序的单行描述t
- Flutter学习第六天:Flutter如何实现顶部导航,底部导航菜单,侧拉栏菜单等功能?
android小白星
1.顶部导航代码如下:import'package:flutter/material.dart';voidmain(){runApp(MaterialApp(home:TabbedAppBarSample(),));}classTabbedAppBarSampleextendsStatefulWidget{@override_TabbedAppBarSampleStatecreateState()
- 2024三掌柜赠书活动第五期:从零基础到精通Flutter开发
三掌柜666
flutter
目录前言Flutter简介Flutter学习路径关于《从零基础到精通Flutter开发》编辑推荐内容简介作者简介图书目录书中前言/序言书摘插画《从零基础到精通Flutter开发》全书速览结束语摘要:本文将带读者逐步学习和掌握Flutter开发,这是一个流行且强大的跨平台应用开发框架。我们将从零基础开始,介绍Flutter的核心概念和基本知识,并逐渐深入到高级主题和最佳实践,帮助您大家成为一名精通F
- FLUTTER学习笔记--第三方组件
VaIOReTto1
flutter学习笔记flutter学习android
文章目录一、dio1.[dio](https://pub.dev/packages/dio)是一个强大的DartHttp请求库2.[使用步骤](https://pub.dev/documentation/dio/latest/)3.代码4.效果二、flutter_swiper1.[flutter_swiper](https://pub.dev/packages/flutter_swiper)是Fl
- flutter学习
邱泽贤
flutter学习
Flutter安装开发打包学习(MAC)路线:=》安装=》运行helloworld=》框架,组件,路由,事件,状态管理=》多demo学习写法=》打包和部署MAC安装安装三个软件androidStudio,Xcode,androidStudio具体参照如下博客https://blog.csdn.net/weixin_44587801/article/details/121548270?spm=100
- Flutter学习
sindorina
1.Container容器如果要添加填充,边距,边框或背景色,请使用Container来设置(译者语:只有容器有这些属性)2.Center容器居中容器3.Row列表横向列表4.Column列表竖向列表5.ListView列表竖向下拉列表6.Stack层叠布局(帧布局)7.Scaffold它是MaterialComponents库中的一个widget,它提供了一个默认banner,背景颜色,并且具有
- Flutter学习笔记18-变换(Transform)
zombie
Transform可以在其子组件绘制时对其实现一些特效。1.平移Transform.translate接收一个offset参数,可以在绘制时沿x、y轴对子组件平移指定的距离。代码示例:classTranslateDemoextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){returnDecoratedBox(decora
- flutter学习之Dart基础
骑车的码农
androidflutter
flutter学习之Dart基础看完了dart基础,发现里面既有java基础的影子,也有kotlin的影子,面向对象思想,会java基础的,学习dart基础就当复习了。目录flutter学习之Dart基础前言一、Dart变量常量命名规则1.变量2.常量3.Dart的命名规则二、数据类型1.字符串String2.整数型3.布尔型bool4.List(数组/集合)5.Maps(字典)6.Dart判断数
- Flutter学习(二)Dart变量与内建类型
太叔涵梅
学习Flutter,必然要学习Dart语言。官方提供DartPad直接在线上体验dart语言功能。Dart是以main方法作为官方入口的,这点和java很像。Dart简单示例://定义一个函数printInteger(intaNumber){print('Thenumberis$aNumber.');//打印到控制台。}//应用从这里开始执行。main(){varnumber=42;//声明并初始
- Flutter学习指南(7):常用的控件
super_chao
Flutter又提供了一套Material风格(Android默认的视觉风格)和一套Cupertino风格(iOS视觉风格)的widget库。要使用基础widget库,需要先导入下面三者之一。我们绝大多数情况下使用material。注意:不懂的属性设置一下代码跑一下就知道了。import'package:flutter/widgets.dart';##基础控件风格import'package:fl
- flutter学习笔记-连接第三方模拟器
小伙有点菜
AndroidStudio连接第三方模拟器的简易方法mumu模拟器:adbconnect127.0.0.1:7555海马玩模拟器:adbconnect127.0.0.1:26944逍遥安卓模拟器:adbconnect127.0.0.1:21503夜神玩模拟器:adbconnect127.0.0.1:62001天天模拟器:adbconnect127.0.0.1:6555逍遥模拟器:adbconnec
- flutter学习-事件监听
GY-93
Flutterflutter
事件监听1.指针事件Point2手势识别Gesture3.跨组件事件在大前端的开发中,必然存在着各种各样和用户交互的情况:比如手指点击,手指滑动、双击、长按等在Flutter中,手势有两个不同的层次:第一层:原始指针事件(PointerEvents)描述了屏幕上由触摸板、鼠标、指示笔触发的指针的位置和滚动第二层:手势识别(GestureDetector)这个是在原始事件上的一种封装。比如我们要监听
- flutter学习-day23-使用extended_image处理图片的加载和操作
鹏多多.
Flutterflutter学习androidios
文章目录1.介绍2.属性介绍3.使用1.介绍在Flutter的开发过程中,经常会遇到图片的显示和加载处理,通常显示一个图片,都有很多细节需要处理,比如图片的加载、缓存、错误处理、图片的压缩、图片的格式转换等,如果每个地方都手动处理,就太麻烦了,这时候就可以使用糖果大佬的插件extended_image,它是官方Image的扩展三方库,不但支持图片加载以及失败显示,缓存网络图片,缩放拖拽图片,图片浏
- flutter学习-day22-使用GestureDetector识别手势事件
鹏多多.
Flutterflutter学习前端框架androidios
文章目录1.介绍2.使用2-1.单击双击和长按2-2.拖动和滑动2-3.缩放3.注意点1.介绍在flutter中,GestureDetector是手势识别的组件,可以识别点击、双击、长按、拖动、缩放等手势事件,并且可以与子组件进行交互,构造函数属性如下:(new)GestureDetectorGestureDetector({//可选的Key属性,用于标识该组件Key?key,//可选的子组件,将
- Android Flutter学习专题,让你在未来的技术浪潮中保留优势
datian1234
Androidflutter进阶学习flutterandroid学习
随着移动互联网的高速发展,应用动态化的需求增大,变化更多,传统的原生开发已无法平衡开发成本,跨平台框架应运而生。IT界的跨平台框架主要分为三类:1.H5+原生(Cordova、Ionic、微信小程序);2.JavaScript开发+原生渲染(ReactNative、Weex、快应用);3.自绘UI+原生(Flutter)。其中,Flutter开发效率高、性能优化、可快速分配内存、且类型安全,它能够
- flutter学习-day21-使用permission_handler进行系统权限的申请和操作
鹏多多.
Flutterflutter前端框架学习androidios
文章目录1.介绍2.环境准备2-1.Android2-2.iOS3.使用1.介绍在大多数操作系统上,权限不是在安装时才授予应用程序的。相反,开发人员必须在应用程序运行时请求用户的许可。在flutter开发中,则需要一个跨平台(iOS,Android)的API来请求权限和检查他们的状态,这时候就需要使用flutter插件permission_handler来帮忙了。它允许您请求和检查权限。你还可以打
- flutter学习笔记四(在android项目中集成flutter)
AJI大侠
前言最近在使用flutter仿写公司的客户端,在一段的时间的使用后发现flutter在一些常见的控件中,很多无法满足,往往在轮子上需要耗费大量的时间,目前就我们的项目来看,相同的时间,如果改用Native去写,我觉得两者进度并没有多大的差异,可能原生端反而会更快一些。在现有项目中集成Flutter,可以在flutter还没有成熟的时期,去使用,追求共通点,同时对于已有客户端进行混编现有项目中集成F
- flutter学习-day20-使用SafeArea组件处理各机型的安全距离
鹏多多.
Flutterflutter前端框架
目录介绍分析示例和效果图特殊情况1.介绍安全区域,指的是移动端设备的可视窗口范围。处于安全区域的内容不受圆角、刘海屏、iPhone小黑条、状态栏等的影响,也就是说,我们要做好适配,必须保证页面可视、可操作区域是在安全区域内,而SafeArea组件会自动进行屏幕适配,帮你空出所占高度。如下图所示:2.解析实际上SafeArea也是一个StatelessWidget,它本身不用主动去更新ui,它仅仅是
- flutter学习-day19-国际化支持
鹏多多.
Flutterflutter学习
目录介绍使用获取当前区域Locale监听语言切换实现国际化添加依赖创建arb文件添加provider状态管理完成切换本文学习和引用自《Flutter实战·第二版》:作者:杜文1.介绍默认情况下,FlutterSDK中的组件仅提供美国英语本地化资源(主要是文本)。要添加对其他语言的支持,应用程序须添加一个名为“flutter_localizations”的包依赖,然后还需要在MaterialApp中
- flutter学习-day6-路由和传参和守卫
鹏多多.
Flutterflutter学习
目录简单示例MaterialPageRouteNavigator路由传值命名路由路由守卫onGenerateRoute本文学习和引用自《Flutter实战·第二版》:作者:杜文1.简单示例//定义abuot组件classAboutPageextendsStatefulWidget{constAboutPage({super.key});@overrideStatecreateState()=>_A
- Flutter学习系列——环境搭建(windows开发环境)
xk_一步一步来
Flutter环境搭建
如果想了解flutter是什么和为什么使用flutter,可以参考这一篇文章:Flutter是什么官方文档:https://flutter.io/小提示:可以尝试看下英文的官方文档,上面的解释可以看懂,并不难,而且更新的比中文文档要快,有的中文文档翻译的不恰当,会影响理解。windows系统要求:1、Windows7SP1及以上(64位)2、磁盘空间:400M+(不包含开发环境和工具的空间)3、其
- 矩阵求逆(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到设计文档中,那将会是一件非常痛苦的事情。