- Ubuntu 安装 Dotnet Core
happy_today513
linux
步骤1.首先,通过apt在终端中运行以下命令来确保所有系统软件包都是最新的。sudoaptupdatesudoaptupgrade步骤2.在Ubuntu20.04上安装DotnetCore。.NETCore在Ubuntu20.04LTS的官方软件包存储库中不可用。但是,您可以轻松地在Ubuntu20.04LTS上添加官方Microsoft软件包存储库并安装:wgethttps://packages
- DotNetCore.CAP 基础应用
wang_peng
NetCore3.1.netcore
目录1.准备工作2.创建第一个项目3.创建第二个项目4.运行1.准备工作1.1rabbitmqusername:adminpassword:adminport:56721.2mssql2.创建第一个项目2.1创建webapi项目,起名为Cap.Step1.Service如图:2.2选择项目位置2.3选择框架,由于是windows上,所以不要docker2.4添加引用,如图DotNetCore.CA
- 手动安装dotnetCore SDK
EuGQkRll7
下载官方提供的linux安装脚本下载地址是:https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script安装需要的依赖pacinlttng-ustpaxpax-utilshaskell-zlib运行脚本./dotnet-install.sh默认安装的位置当前用户的家目录下:~/.dotnet/
- 微信支付平台C#SDK_微信支付.net SDK
天马3798
微信小程序微信.netC#SDK微信支付平台微信支付.netSDK
一、微信支付平台C#SDKV3https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat/blob/main/docs/WechatTenpayV3接口对应整理:https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat/blob/main/docs/We
- asp.net core 3.0中Grpc.AspNetCore.Server带来了什么
CeleryLiu
Grpc.AspNetCore.Server带来了什么dotnetcore3.0在公布的时候有一个重要的feature,那就是支持gRPC.gRPC作为一个nuget包早就能工作在NetCore下面.那dotnetcore3.0中对gRPC的支持到底实现了哪些功能呢?在.netcore2.2中HostGrpc服务器参考上一篇文章,使用protoc或者VisualStudio编辑生成了C#的服务器端
- 写个.net开发者的Linux迁移指南
weixin_30617695
操作系统git游戏
前言为什么要迁移到Linux首先我个人还是有点软件洁癖,以前是穷酸学生的时候也是用盗版的用户,后来在知乎被洗脑终于有了点版权意识.然后便有了能用开源软件的就用开源,实在不能就选社区版或者免费版。于是开始接触了Linux逐步摆脱盗版的Windows,以及所有的破解类软件相信国内很多用户也是用着盗版的而且并没意识到有什么不妥...讲真这不是装逼而是一个很严肃的问题自从微软开放dotnetcore,终于
- 迁移 WinForm 应用从 dotnet framework 到 dotnetcore3.0
天天向上卡索
迁移WinForm应用从dotnetframework到dotnetcore3.0Intro微软从dotnetcore3.0开始已经开始支持wpf以及winform的开发,dotnetcore3.0preview7已经发布,官方称已经可以准备上生产了ProductionReadyProductionReady迁移这篇WPF的迁移还是比较不错的,如果第一次迁移,强烈推荐看一下https://www.
- dotnetCore微服务API网关-Ocelot学习笔记(一、API网关介绍及Ocelot介绍和配置)
多拉多拉曼
dotnetCore微服务API网关-Ocelot学习笔记(一、API网关介绍及Ocelot介绍和配置)零、为啥写这个 说实话工作用了两年多的微服务了,自己却连工作所用的微服务API网关都没有深入的了解和学习过,只存在于会改会写的阶段,一直觉得特别惭愧,所以自己一直想深入的了解和学习一下,然后近期不是工作不是很忙,就想着研究一下,结果去找网上的文档和博客,这里容我骂句脏话(此处并不针对谁,不
- 【国内访问github不稳定】可以尝试fastgithub解决这个问题
sky_geek2008
githubfastgithub
1、下载https://github.com/dotnetcore/FastGithubhttps://github.com/dotnetcore/FastGithub/releases官网下载即可,比如,我用的是这个:fastgithub_osx-x64.zip(点这里下载)2、安装如下图双击启动即可3、证书安装与代理配置(1)证书安装参考https://github.com/dotnetcor
- Asp.Net Core 基础知识--StartUp类
多拉多拉曼
NetCorec#asp.net
StartUp类简介:1)、什么是Startup类?StartUp类是DotNetCore环境下,用于配置应用所需要的服务和应用请求通道的一个基础服务的类,它一般在应用程序启动过程中,给应用程序配置主机时(Program类下的CreateWebHostBulider方法)调用.UseStartup()进行指定。2)、StartUp类的作用:Startup类具有两个方法。ConfigureServi
- DotNetCore系列:在ASP.NET Core 3.1中获取xml格式的接口入参并转化为json
Hugo_Hoo
DotNetCoreC#xmlc#.net
今天接到一个公司新的开发任务,要对接微信第三方平台的开发接口,肥猫表示极其难受啊。可能有些大大会吐槽,有什么好难受的,不就是微信吗,赶紧去GitHub找代码或者是使用盛派的SDK啊,可是肥猫不服,我要自己写,虽然肯定写的不好~~~~废话不多说了,在看完开发文档之后,我开始进行第一个接口的开发(获取验证票据)。这时候问题来了,因为微信的postData是xml格式的数据,在ASP.NETCore中要
- fastGitHub工具推荐(如果打不开github或者使用很慢可以使用该工具)
yiduoyun_demo
其他maven
目录一,针对问题二,下载1,github里面下载FastGitHub2,博客上传了下载资源三,安装使用点击执行文件即可一,针对问题当使用github很慢,或者根本打不开的时候,就可以使用该工具二,下载1,github里面下载FastGitHubhttps://github.com/dotnetcore/FastGithub/2,博客上传了下载资源https://download.csdn.net/
- HTTP Error 500.21 - Internal Server ErrorHandler “aspNetCore“ has a bad module “AspNetCoreModuleV2“
一颗大樱桃
C#锦集c#.netcorewindows运维
最近开发一个新项目,用的是dotnet6.0去做webapi,公司之前的的框架比较老,windows服务器上装的都是dotnetcore2.1的runtime,所以我需要装一个6.0的runtime,但是安装完毕后确实起不来确认版本和所支持的功能是没问题的最后发现需要安装这个HostingBundle(托管捆绑包)HostingBundle是指托管捆绑包,是用于部署和运行ASP.NETCore应用
- C# DotNetCore AOP简单实现
氷凌公子
C#AOPc#开发语言
背景实际开发中业务和日志尽量不要相互干扰嵌套,否则很难维护和调试。示例usingSystem.Reflection;namespaceCSharpLearn{internalclassProgram{staticvoidMain(){intage=25;stringname="bingling";Personperson=new(age,name);Console.WriteLine("=====
- asp.net core 2.1程序部署到IIS报错502.5解决方案
rztyfx
C#
百度了好多方案都不行,突然设置了一下这个,解决了,这个症状是在服务器上用localhost加端口可以访问,但是外网不行,显示502.5错误原文:https://www.cnblogs.com/cglandy/p/cglandy_dotnetcore_1.html.netcore2.1.4的程序部署到IIS后报以下错误:========================================
- net core mysql快捷开发框架_WTM 基于Netcore的快速开发框架
喵思 Muse88
netcoremysql快捷开发框架
WTM框架,全称WalkingTecMVVM(不是“我特么”的拼音首字母),WTM是一个快速开发框架,有多快?至少目前dotnetcore的开源项目中,我还没有见到更接地气,开发速度更快的框架。WTM的设计理念就是最大程度的加快开发速度,降低开发成本。国内Java一家独大原因很多,有BAT的示范效应,也有微软自己战略的失误。好在微软这两年终于想明白了,dotnetcore的横空出世和收购githu
- ASP.NET Core 中间件详解及项目实战
Phil Arist
.NETCORE&.NET&C#mvcasp.netASP.NETCORE
前言在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的HelloWorld,如果你觉得本篇文章对你有用的话,不妨点个【推荐】。目录中间件(Middleware)的作用中间件的运行方式中间件(Middleware)和过滤器(Filter)的区别什么情况我们需要中间件怎么样自定义自己的中间件中间件(M
- 如何正确使用DTM的Saga模式
不安分的小女孩
java开发语言
DTM简介前面章节提及的MassTransit、dotnetcore/CAP都提供了分布式事务的处理能力,但也仅局限于Saga和本地消息表模式的实现。那有没有一个独立的分布式事务解决方案,涵盖多种分布式事务处理模式,如Saga、TCC、XA模式等。有,目前业界主要有两种开源方案,其一是阿里开源的Seata,另一个就是DTM。其中Seata仅支持Java、Go和Python语言,因此不在.NET的选
- dotnet core程序部署到ubuntu
奔走的小龙虾
ubuntulinux.net
visualstudio2022编译好的dotnetcore程序,打开“程序包管理器控制台”,打包发布dotnetcore,使用命令dotnetpublish-cRelease-rubuntu.22.04-x64打包会生成ubuntu22.04-x64文件夹,将这个文件夹传到ubuntu服务器,切换到ubuntu服务器,进入到上传的ubuntu.22.04-64的dotnet文件夹,执行命令运行d
- nginx配置客户端保存cookie
大洪
网站配置nginx
问题昨晚在部署一个前人留下的dotnetcore后台服务,在服务器上小心翼翼的修改前端代码,把ajax请求地址换成了localhost,登录、请求数据正常。但是把localhost换成ip地址,发现登录正常,cookie也返回了,但验证登录状态(向后台发送请求,验证携带的cookie)时报错了,一直401这个程序的前端、后端都不是我写的,问了前端开发:这说的没错,cookie确实返回来了,但再次请
- DotNetCore 部署到IIS 上
tzweilai
.netcorec#
将DotNetCoreMVC项目成功部署到IIS上,记录下配置要点:1.在ASP.NETCore应用中使用KestrelMicrosoft.AspNetCore.App元包中包括Microsoft.AspNetCore.Server.Kestrel包(ASP.NETCore2.1或更高版本)。TheMicrosoft.AspNetCore.Server.Kestrelpackageisinclud
- .Net WebAPI知识汇总
Heschel
.netmicrosoftasp.netwebc#
文章目录一.WebAPI历史1.形成原因:2.REST架构详解:3.与WebService对比:3.1WebService实际使用4.ASP.NETWebAPI发展历史二.搭建ASP.NETCoreWebAPI项目1.ASP.NETCoreWebAPI基础知识掌握:1.1dotNETCore平台的基本知识1.1.1用exe程序启动web服务是属于Docker容器部署吗?1.1.2Docker容器部
- 牛腩学ASP.NET CORE做博客(视频)
niunan
C#
牛腩学习ASP.NETCORE做的项目,边学边做。目录:01-dotnetcore网站部署到centos7系统上(时长2:03:16)优酷观看地址:http://list.youku.com/albumlist/show?id=49039302&ascending=1&page=1
- .net core 部署到 Linux 的步骤
飞天猪Pony
1、安装dotnetcore运行时cd/www/netcore/yuminstalldnfsudorpm-Uvhhttps://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm//安装密钥sudodnfinstalldotnet-runtime-3.1//安装运行时dotnetITGB.Apprentice.Web
- Windows Server 2008 R2 安装DotNet Core运行时库失败
神仙别闹
Windows教程windowsServer.netcore
在正式环境中安装DotNetCore运行时库时失败1、检查系统是否安装Windows6.1-KB2533623-x64.msu补丁https://blog.csdn.net/s1t16/article/details/1337651802、检查系统是否安装vc_redist.x64.exehttps://www.microsoft.com/zh-CN/download/details.aspx?i
- 可能是全网最完整的 C# 版微信 SDK
时光追逐者
.NETC#.NETCorec#微信开发语言
前言对接和开发过微信相关API(如:微信公众号开发、微信小程序、微信支付)的同学都知道,微信提供了非常多的接口供开发者使用和对接。其实对接接口谁都知道没啥难度,但是看文档费劲且费时间。因此找到一款封装完善且全面的SDK这能够大大的简化我们的开发难度和提高工作效率,今天给大家推荐一款由C#开源的完整且全面的微信SDK:DotNetCore.SKIT.FlurlHttpClient.Wechat。项目
- 解决github太慢,或443错误
slsph523
github
除了手动查询IP和修改host外,附上最简单的方法:1.下载下面的FastGithubReleases·dotnetcore/FastGithub2.解压打开,双击FastGithub.UI即可,稍等一会儿再打开github.com3.使用事项在访问GitHub前需要打开并保证FastGitHub在运行状态(需要先运行一会)在安装完成之后可以直接点开FastGithub的执行文件就可以运行程序,就
- 源码编译dotnetcore的runtime
小乌鱼
c#
为了dotnetcore运行时的安可目标,特意在国庆假期研究了怎么编译dotnetcore的runtime。由于我们用的是.net6,最新的是8,所以从github下载的.net6的分支代码进行的编译。查遍了国内外资料,估计微软服务太体贴了,竟然没什么编译runtime的资料参照,而开始我也没翻源码doc的文档就自己猜着试了。整体试了4-5天总算自己给完全编译ok了,分享给需要安可的小伙伴,麻烦的
- 博客程序开发日记之000重新开坑
V刀刃
没错,大概在一年前,我开了这个坑。今天是来填坑的。后来因为一直忙其他事情就没有再更新了,当初是选择tp框架做的,因为觉得简单。但是今天我更想使用dotnetcore来做。这个坑,这次我要填补完。随之我也会录制一些视频出来和大家一起交流学习。
- DataExcel控件读取和保存excel xlsx 格式文件
足球中国
.netCBScript脚本语言dataexcelexcelserver
需要引用NPOI库https://github.com/dotnetcore/NPOI调用Read函数将excel读取到dataexcel控件调用Save函数将dataexcel控件文件保存为excel文件usingNPOI.HSSF.UserModel;usingNPOI.HSSF.Util;usingNPOI.SS.UserModel;usingNPOI.SS.Util;usingSystem
- 矩阵求逆(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到设计文档中,那将会是一件非常痛苦的事情。