在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。
  • 一个基于Web的PDF 操作工具
  • Windows 11系统使用SCP上传文件到Linux服务器
  • Adobe Speech to Text v2.1.6 for Premiere Pro 2024
  • HOST头攻击问题IIS服务解决方案
首页轮播缩略图第1篇文章-一个基于Web的PDF 操作工具首页轮播缩略图第2篇文章-Windows 11系统使用SCP上传文件到Linux服务器首页轮播缩略图第3篇文章-Adobe Speech to Text v2.1.6 for Premiere Pro 2024首页轮播缩略图第4篇文章-HOST头攻击问题IIS服务解决方案
开源项目记录

一个基于Web的PDF 操作工具 24小时内最新

Stirling-PDF 这是一个使用Docker的强大的、本地托管的基于web的PDF操作工具。它使您能够对PDF文件执行各种操作,包括拆分、合并、转换、重新组织、添加图像、旋转、压缩等。这个本地托管的web应用程序已经发展到包含一套全面的功能,可以满足您的所有PDF要求。Stirling PDF不会出于记录保存或跟踪目的发起任何出站请求。所有文件和PDF要么仅存在于客户端,要么仅在任务执行期间驻留在服务器内存中,要么临时驻留在仅用于执行任务的文件中。到那时,用户下载的任何文件都将从服务器上删除。 特征 深色模式支持。 自定义下载选项 并行文件处理和下载 自定义 ‘Pipelines’ 以在队列中运行多个功能 用于与外部脚本集成的 API 可选的登录和身份验证支持(请参阅此处的文档) 数据库备份和导...

10小时前 14℃ 0评论 0喜欢

IT相关

Windows 11系统使用SCP上传文件到Linux服务器

SCP命令 SCP(Secure Copy)是一种基于SSH(Secure Shell)的安全文件传输协议,可以在Windows和Linux之间安全地传输文件。在最新系统Windows 11中无需安装其他第三方应用即可实现。 Windows上传文件到Linux服务器 scp 需要上传的文件路径 远程服务器用户@远程服务器IP:远程服务器对应的目录 例如: scp server.csr root@192.168.1.10:/data/web/ssl/ Windows上传文件夹到Linux服务器 scp -r 需要上传的目录 远程服务器用户@远程服务器IP:远程服务器对应的目录 例如: scp -r ssl root@192.168.1.10:/data/web/ Linux服务器下载文件到本地Windows sc...

1个月前 (09-20) 499℃ 0评论 0喜欢

软件资源

Adobe Speech to Text v2.1.6 for Premiere Pro 2024

背景 朋友在网上下载了Premiere Pro 2024发现没有语音转文本的功能,不能方便的完成字幕。他个人也下载了几个版本安装后并没有效果,所以让我帮他找一下。经过确认语音转文本的版本要与Premiere Pro所需要的版本一致才行。所以就找到了Adobe Speech to Text v2.1.6这个版本。 描述 使用 Premiere Pro 中的语音到文本功能,您可以自动生成转录文本并为视频添加字幕,从而提高视频的可观看性。 为所有视频添加字幕 使您的视频的可观看性更高,并能轻松有效地提高观众的投入度。 自动化、集成 该功能包含在您的订阅中,无需额外费用,可以帮助您自动制作字幕,同时让您完全掌控创意工作。 能够以出色的准确性处理多种语言 可在全球范围使用,为您和受众架起桥梁,无论他们身在何处。 支持的语言 英语 ...

2个月前 (08-31) 631℃ 0评论 0喜欢

IIS Server

HOST头攻击问题IIS服务解决方案

背景 客户反馈站点存在Host头攻击的问题,并给了测试结果,这是以前的老项目,出现这个问题也不算奇怪,如下图所示: 如果修改应用程序的话需要的时间可能更长,为了尽快的解决就是用了一个非常成熟并简单的方案,不需要修改程序。使用微软官方提供的URL重写组件,安装后进行相关配置即可。 解决方案 安装IIS组件URL重写 官网进行下载: IIS官网下载URL重写组件 URL重写规则设置 选中需要配置的站点,可以看到[URL重写],如下图所示: 双击[URL重写],右侧点击【添加规则】,并选择【请求阻止】,如下图所示 添加规则如下(模式中填写对应的网站ip和端口号),如下图所示: 确定后可见如下规则内容,双击规则项目。如下图所示: 修改如下配置后选择应用即可 通过以上...

3个月前 (07-23) 336℃ 0评论 0喜欢

Docker

Docker设置新的镜像仓库地址

背景 使用Docker拉取镜像,发现有异常提示,经过排查发现是镜像站点关闭了。在互联网上找了很多公共的镜像都基本关闭了,163、百度云、腾讯云等云镜像站点基本关闭了,经过查找各种大学的Docker镜像站点也都下线了。只能继续查找可用的镜像站点,找到后更改Docker镜像站点。 Docker镜像设置 Ubuntu/CentOS 安装/升级Docker客户端 推荐安装1.10.0以上版本的Docker客户端,参考文档docker-ce 配置镜像加速器 针对Docker客户端版本大于 1.10.0 的用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF'...

5个月前 (06-08) 715℃ 0评论 0喜欢

MySql

MYSQL InnoDB引擎日志表损坏修复

背景 客户发消息说系统突然登录不上,验证码都出不来。当看到这个消息的时候觉得应该挺简单的,觉得大概率是应用程序挂了,决定临时使用重《重启》大法。登录应用服务进行查看发现服务在重启中,尝试重启也无效,就查看了相关日志发现是MySQL服务连接不上了。接下来就只能看下MySQL 服务出现什么问题并想办法尝试解决。 问题 登录MySQL服务器发现服务在启动中并且一直处于这个状态。停止服务MYSQL服务并尝试重启,问题依然存在。MYSQL的状态一直就是这个Server startup in progress,如下所示: mysqld.service – MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Act...

5个月前 (05-31) 618℃ 0评论 0喜欢

JavaScript

JavaScript录音错误浏览器不支持getUserMedia

背景 新项目有一个新的需求,需要用到浏览器录音。在本地进行测试的时候并没有发现问题,部署以后访问就出现了如下错误: 浏览器不支持 getUserMedia 经过了解得知getUserMedia 是默认不支持 http 访问的,必须要用 https 协议且需要合法的域名。 解决方法 使用https协议访问 申请域名并配置SSL证书,实现HTTPS协议请求访问即可避免此问题 配置浏览器临时解决方案 打开谷歌浏览器,在地址栏中输入chrome://flags/#unsafely-treat-insecure-origin-as-secure后并回车可见如下内容: 将目标网站输入到Insecure origins treated as secure中,然后将Disabled下拉改为Enabled。使用此方法即可临时解决无法...

6个月前 (04-30) 703℃ 0评论 0喜欢

其他分享

SQL Server 2008至2022版本的激活码/密钥

背景 因为学习以及开发测试需要,所以需要用到某些版本的SQL Server,为了方便就在互联网上收集了一些SQL Server的激活码,以便以后学习用。 SQL Server 2008 开发版/Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYB企业版/Enterprise: JD8Y6-HQG69-P9H84-XDTPG-34MBB SQL Server 2008 R2 开发版/Developer32位:MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版/Developer64位:FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版:XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版:FP4P7-YKG22-WGRVK-MKGMX-V9MTM数据中心版32位:PTTFM-X467...

8个月前 (03-10) 1747℃ 0评论 1喜欢

开源项目记录

Wavesurfer.js一个开源的音频可视化库

Wavesurfer.js Wavesurfer.js是一个基于JavaScript的开源音频波形可视化库。它利用Web Audio API和HTML5 Canvas技术,为音频数据提供了丰富的可视化展示方式。Wavesurfer.js的主要目标是提供一种灵活且易于集成的工具,使开发者能够在网页上创建交互式音频波形可视化。 特点 跨平台兼容性:由于Wavesurfer.js是基于Web标准构建的,因此它可以在任何支持Web Audio API和Canvas的浏览器上运行,包括桌面和移动设备。 多格式支持:Wavesurfer.js支持多种音频格式,如WAV、MP3、OGG等,使开发者能够方便地加载和显示不同类型的音频文件。 高度可定制:Wavesurfer.js提供了丰富的配置选项和API,允许开发者根据自己的需求定制波形的外观、行为以及交互方式。...

8个月前 (02-21) 1149℃ 0评论 1喜欢

Nodejs

Docker使用NPM安装CNPM失败

背景 项目使用jenkins自动构建应用,原本构建没有没有什么问题,一天突然就发生了异常且多次重试结果并没有改变。为了更快的构建完成项目,所以就找到简单的处理方法来解决问题。 异常信息 RUN npm install -g cnpm@7.1.0 –registry=https://registry.npm.taobao.org—> Running in 47877716e592[91mnpm ERR! [0m[91mcode CERT_HAS_EXPIRED[0m[91mnpm ERR![0m[91m errno CERT_HAS_EXPIRED[0m[91mnpm ERR![0m[91m request to https://registry.npm.taobao.org/cnpm failed, reason: certifica...

9个月前 (01-22) 1468℃ 0评论 0喜欢

开源项目记录

开源在线文档预览解决方案kkFileView

背景 因需要进行文档在线预览,所以才有以下内容。因付费方案不在选择范围,所以只能寻求免费开源的解决方案。经过查找发现除了LibreOffice 、OnlyOffice、kkFileView以外并没有发现其他可用的方案,也许是自己原因没有找到其他开源解决方案吧!由于没有在线编辑的需求,经过对比kkFileView部署以及使用极其简单,所以就选择了kkFileView。 kkFileView kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等 项目特性 使用spring boot开发,预览服务搭建部署非常简便 rest接口提供服务,跨平台...

10个月前 (01-17) 1046℃ 0评论 0喜欢

影音资源

想你的话告诉月亮

背景 自从抖音火起来之后,可以看到或者听到各种各样的事情。当然,也会有一些好听的歌曲出现。是的。这次又听到一首好听的歌曲,歌曲名称是《想你的话告诉月亮》,很喜欢这首歌曲。 它通过月亮这个象征,将歌者内心的情感传达给听众,让人感受到亲情、爱情的美好和珍贵。这首歌不仅是一首歌曲,更是一份情感的传递和表达。 歌曲信息 想你的话告诉月亮-刘晓超作词:花开花落/冯光作曲:冯光演唱:刘晓超编曲:福洲混音:宋马超制作人:杨学涛 歌词 天边的云朵总那么匆忙久久凝望你身处的方向苦苦压抑这思念的疯狂情不自禁让我热泪盈眶牵挂的心呀飞向了远方顺便托风儿轻轻对你讲不知远方的你是否无恙今夜梦中会不会不一样想你的话呀 悄悄的 悄悄的 告诉月亮相思的话呀 相思的话现在无人可讲真的难忘记那些旧时光牵挂的心呀在风中彷徨想你的话呀 悄悄的 悄悄的 告诉月亮心上的人啊心上的人 多想陪在你身旁...

10个月前 (12-23) 867℃ 0评论 0喜欢

Web前端

JS录音获取麦克风权限被拒绝访问

背景 因业务需求原因,需要在网页上进行录音,使用Javascript来进行操作,完成录音并保存上传到指定服务器。实现相关代码后进行测试,发现访问音频设备最后被拒绝。 原因 网页上反馈的异常信息如下图所示 经过再次的查看,确认未经处理的异常信息如下: DOMException: Permission denied by system 查下浏览器的设置,浏览器是否禁用麦克风,经过确认浏览器并没有发现什么问题。 浏览器各项检查都非常的正常,尝试录音错误依然再次出现,按道理来讲,应该是没有什么问题的。就目前情况而言,的确可能存在不讲道理的情况呀。随后更换一台电脑进行了一下测试,经过测试发现没有任何问题,正常录音。这就诡异了!也许是音频硬件原因?将这音频设备在其他电脑上进行再次确认,测试结果还是没有问题。这就让人郁闷了. ...

12个月前 (11-09) 1365℃ 0评论 0喜欢

生活随笔

初级救护员培训课

背景 2023年10月23日,社区群发布了关于深圳福田健康局举办的一个公众急救技能的培训报名的通知。如果希望学习相关内容的鼓励报名参与。正式的培训时间定在了2023年11月3日星期五,培训时间一整天,让人感到遗憾的就是培训时间不是周末。看了一下培训前的课程相关信息,感觉可以参与一下。学习一点急救知识,以便不时之需。按照指引进行了信息录入,完成报名流程。 培训 时间过得飞快,像流水一样。感觉转眼间就到了约定的时间。2023年11月3日按照约定的地点、时间提前半小时前去,原本以为参与的人应该不多,毕竟在群里看到报名列表只有十多个人,万万没有想到参与的人数竟然达到60多。哎!终归是自己想当然了,本来就是面向的整个区,而不是仅面向所在的小区。 人来的这么多,突然有点退意,假都请了,来都来了,学一下吧!如若不然真的对不起自己那个积极性,本来就是要学的,人多人少又有什么关系!...

12个月前 (11-08) 919℃ 0评论 0喜欢

影音资源

天际

背景 打开抖音进行短时间消遣的时候,听到一首非常伤感的歌曲,非常的优美。歌曲名称《天际》,由戴春磊作词、作曲,姜玉阳演唱的一首歌曲。它充满情感的歌曲,旋律优美,歌词深情。歌曲通过主人公的内心独白,表达了对爱情的无奈和悲伤,让人感受到了爱情中的痛苦和失落。同时,歌曲也让人思考生命和时间的流逝,让人更加珍惜当下。 虽然它很伤感,但是很喜欢。 歌词 不知道为什么 让我遇见了你 在那个阳光明媚的春天里 不知道为什么 让我爱上了你 在这个错误的时间世界里 我其实有很多话要对你讲 但原谅我不能说的太明了 你是否也会感受 我这心碎的感受 你是否也曾在梦里梦到我 在冷冷的黑夜里哭泣 分不清眼泪和雨滴 慢慢的淋湿了我 为你写的每一首诗句 在心里面默默的想你 掩饰不住的委屈 只为了那一声我爱你 在无尽的夜空看星星 猜一猜哪一个是你 猜到了 ...

1年前 (2023-11-04) 2437℃ 0评论 0喜欢

生活随笔

黑色十月

感概 正如标题所言,这个十月对于我来说是黑色的。为什么会这么说呢?因为生病了,并且病程还是比较长,过程非常难受。黄金假期别人都欢乐的过节,我却是渡劫呀。月末做一下记录。 十月三号 早上找了个药店测试了一下血糖,结果也在正常范围内,随后就吃个早饭。假期并没有游玩的计划,所以就去商场随便逛一逛,半个小时也就回了。感觉头有点痛,怀疑可能发热了,测量体温确认低烧且表现不太稳定,为了确认这个情况就重新买了一个体温计进行测量并确认了结果。低烧!除了这个低烧以外到没有 经过1个小时发现体温有升高趋势,还是得用药啊! 疫情期间准备的药物还有不少,所以就尝试吃点退烧药。退烧药有点作用,体温没有继续上升,但是一直保持低烧。此时症状已经包含发热、头痛、咽痛、咳嗽(不频繁、不剧烈)。出现这种情况,个人感觉应该是二阳(新冠感染)了。经过几个小时候体温继续上升,二次服药后继续保持低烧。这个时...

1年前 (2023-10-31) 924℃ 0评论 0喜欢

Docker

在Docker容器下使用.net 5统计图中文乱码的问题

背景 客户新提需求,需要增加一张报表,报表需要增加统计图表。因为客户需要将数据以及统计图表一并导出到word中,所以没有使用前端统计相关的类库,比如:echarts、highcharts等库。虽然可以使用前端相关类库导出word,但是并不能满足现有需求。后台服务使用的是.net 5,统计图完成后发现中文出现乱码。如下图: 问题 出现以上乱码问题,其一可能是统计类库不支持中文导致的,也有可能是docker镜像中缺少相应的中文字体。因为在本地开发环境测试并没有问题,更新到测试环境后才发现以上乱码情况,所以应该是镜像中缺少相关中文字体而导致的。 解决 既然是缺少中文字体,那就安装字体就行了。在Windows系统中复制需要的字体到新建名称为chinese文件夹下,将此文件夹放到与dockerfile同一目录下即可。dockerfile文件中新增内容如...

1年前 (2023-09-24) 1063℃ 0评论 1喜欢

IT相关

迁移网站更改域名后一个可以使用的301跳转方案

背景 最初,由于购买cc域名不支持备案,所以就使用了阿里云香港云空间。自从2016年网站应用由.net应用BlogEngine.NET改为WordPress至今都使用的阿里云香港云空间。稳定倒是挺稳定的,就是一直感觉访问速度比较慢,本以为是阿里云香港云空间本是这样,就没有研究其慢的真实原因,当然这已经是后话了。 今年云空间快要到期的时候,突然想将网站迁移到国内,为了不在备案期间停止域名访问,就更换了域名。当域名更换完成,空间迁移完毕,貌似一切准备就绪,发现原来空间即将到期,留给301跳转的时间非常不足。本想使用阿里云DNS解析进行301跳转,这个也是最优的解决方案,无奈的是域名必须进行备案且是两个域名都必须备案。如果原来的域名也参与备案的话,网站就需要停止访问了,为了避免这种情况,只能放弃使用此方法。 发现 续费原来空间或者购买腾讯云和百度云等在价格上是不划算的。...

1年前 (2023-08-30) 933℃ 0评论 0喜欢

Nginx

Nginx禁止指定UA、IP或者IP段访问

背景 在管理后台修改一些内容的时候,想到很久之前安装的重定向插件Redirections,随便就看一下。这不看不知道,看到了就差点大声尖叫。没有想到这么多对站点无意义的请求命中之前设置的重定向规则,一眼就可以发现请求UA不正常。例如:Apache-HttpClient、python-requests等 这种是一些非法采集的应用,觉得还是要对这类UA进行一些限制,例如:禁止指定UA访问、拒绝IP或者IP段的访问等。 现在服务已经由原来的Apache迁移到了Nginx服务上运行,所以现在的处置方案针对Nginx的。 Nginx禁止特定UA访问 在Nginx中有一个内置变量$http_user_agent,表示HTTP请求头中的User-Agent字段。使用正则表达式匹配User-Agent字段中是否包含特定的字符串,符合规则的则禁止访问。具体实现如下: ...

1年前 (2023-07-21) 2600℃ 0评论 1喜欢

Web前端

HTML5音频资源加载失败的处理方法

背景 页面加载很多音频标签,音频资源一些加载不成功,音频标签不可用,并且排除以下几种情况: 检查音频的链接是否有效 检查音频格式是否支持 检查网络连接是否通畅 如果确认以上内容没有任何问题,则是页面加载过多的音频资源而导致部分音频资源加载失败。可以使用JavaScript进行资源加载重试,当然重试的策略需要进行限制,避免无限制尝试。 实现方式 以下是使用JavaScript代码实现自动重新加载资源的一个简单的示例,当音频标签加载失败时,它会自动尝试重新加载音频: const audio = document.querySelector('audio'); audio.addEventListener('error', () => { audio.load(); }); 在上面示例中,首先选择了音频标签,并添加了一个...

1年前 (2023-07-16) 1274℃ 0评论 1喜欢

Nginx

WordPress由Apache迁移到Nginx出现404问题的解决方法

背景 虚拟主机即将到期且位置在香港,为了网站更好的访问速度索性就迁回大陆。在好多年前购买的时候只有Apache可选,这次迁回有Nginx可以选择,官方有说这个性能更加的强劲,所以这次就选了Nginx服务。数据以及文件很容易就完成了迁移,本想万事大吉,随便点击了几下测试全是404,其中包括文章、分类、标签、搜索、分页、站点地图、日期等全部404。WordPress后台固定链接设置的是日期和名称,应该就是URL重写的问题了。在使用Apache的虚拟主机的时候是默认的有相关配置的,但是新购的Nginx虚拟主机就没有这种配置了。所以,只有自己来进行URL的重写配置。 Nginx解决方法 Nginx重写URL配置内容如下: location / { if (!-e $request_filename) { rewrite ^/(&#...

1年前 (2023-06-15) 1140℃ 0评论 1喜欢

DotNet

Syncfusion.DocIO.Net.Core操作Word的第三方组件无限制版

背景 一些朋友推荐处理Word可以使用Syncfusion.DocIO,说是API比较好用而且还支持doc格式的文件,因此就了解一下。经过测试确认是比一些开源的处理库好用一点,支持相对来说比较完善,就因为这些所以才会有这篇介绍的内容。 Syncfusion.DocIO.Net.Core Syncfusion.DocIO.Net.Core是Syncfusion的一组.NET组件,用于创建、编辑和转换Microsoft Word文档。它支持多种文件格式,包括.docx、.rtf、.txt等。它提供了一组易于使用的 API,可以帮助开发人员轻松地创建、读取和修改 Word 文档。 主要功能 创建Word文档并添加内容、表格、图片等元素。 编辑Word文档中的文本、表格、图片等内容。 将Word文档转换为其他格式,如PDF、HTML等。 支持批量...

1年前 (2023-05-16) 1370℃ 0评论 3喜欢

软件资源

Guetzli高质量压缩图片算法工具

介绍 Guetzli是一款JPEG编码器,其目标是在高视觉质量下实现卓越的压缩密度。Guetzli生成的图像通常比libjpeg生成的同等质量的图像小20-30%。Guetzli只生成顺序的(非渐进的)JPEG,因为它们提供了更快的解压缩速度。 JPEG 图像的视觉质量与它的多阶段压缩过程有关:色彩空间变换,离散余弦变换,以及量化等等。Guetzli 具体针对量化阶段,图像视觉质量损失越多,输出图像尺寸越小。Guetzli 努力通过一个搜索算法,来克服 JPEG 格式的精神视觉模型与 Guetzli 的精神视觉模型之间的差别,以一种更全面更详细的方式来结合色彩感知和视觉掩蔽,从而在最小化损失和最小化图像尺寸中达到平衡。不过,尽管 Guetzli 可以使图像尺寸更小,但创建压缩图像所花费的时间要与目前的方法更长。 项目地址 guetzli 使用 Gu...

2年前 (2023-04-06) 2371℃ 2评论 0喜欢

IT相关

安全架构设计基本原则

安全原则 在应用系统软件开发设计的过程中,对应用系统的总体设计应当满足如下安全原则 原则说明最小权限原则Least Privilege 应用软件的每个模块如进程、用户只能访问当下所必需的信息或者资源。赋予每一个合法动作最小的权限,以保护数据以及功能避免受到错误或者恶意行为的破坏。权限分离原则Separation of Duties对业务的操作、管理和审计权限应该由软件中的不同角色的用户分别承担;普通用户和管理员用户信息应该存放在不同的数据表中。深度防御原则Defense in Depth在应用程序对业务数据进行处理的每个阶段都要考虑安全性问题,不能仅在某个阶段做安全防御,这样单点防御一旦被突破将造成安全风险。容错保护原则Fail Secure当程序出现故障时或系统异常当系统失败时,可以进入到一个失败保护的状态。如果用户请求失败,系统仍可保...

2年前 (2023-03-29) 1741℃ 0评论 1喜欢

IT相关

使用Fiddler进行移动端(手机)抓包

背景 客户一个定制企业微信相关内容,其中自动登录成功某些功能不正常,手动登录的又未复现问题,程序都是相同的且问题确实存在。准备使用抓包看一下企业微信自动登录与非自动登录的行为区别,抓包工具选用了大名鼎鼎的Fiddler。 Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。 Fiddler 是用C#写出来的,它包含一个简单却功能强大的基于JScript.NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用.net框架语言进行扩展。 操作设置 设置允许远程...

2年前 (2023-03-14) 1636℃ 0评论 1喜欢