- 博客(39)
- 收藏
- 关注
原创 反微服务架构
*反微服务架构(Anti-Microservices Architecture)**是一个与微服务架构理念相对的技术概念,指的是在一定场景下不适用微服务架构,而是选择更简单、更集中化的架构方案。这种方式并不是对微服务的全盘否定,而是基于实际需求,选择更适合的架构模式。
2025-01-22 16:43:40
563
原创 深入解析:Postgres 和 MySQL 的核心差异与选择建议
如果您重视可扩展性,PostgreSQL提供了广泛的扩展-用于地理空间用例的PostGIS、用于详细查询见解的pg_stat_statements以及定义自定义数据类型的能力-而MySQL的自定义选项则专注于存储过程和插件。它在处理更大的并发性或复杂的工作负载方面也表现出色,而且其宽松的许可证不会对您自己的代码施加太多限制。同时,如果您的应用程序读取量很大并且您希望快速部署,那么MySQL仍然是一个引人注目的选择,特别是如果您的团队已经熟悉MySQL或您的环境针对它进行了优化。
2025-01-20 11:04:00
1297
原创 软件设计哲学的教训
这可能会导致复杂性的快速积累。作为一名开发人员,你的工作不仅是编写可以轻松使用的代码,还要编写其他人也可以轻松使用的代码。你花在磨练设计技能上的时间也将得到回报:随着你的技能和经验的增长,你会发现你可以越来越快地制作出优秀的设计。“有了一套好的测试,开发人员在重构时可以更有信心,因为测试套件会发现大多数引入的错误。如果你提高你的设计技能,你不仅可以更快地生产出更高质量的软件,而且软件开发过程也会更令人愉快。我们对哪些更改会提高性能的直觉有时是错误的,要么没有任何有意义的影响,要么实际上使性能变得更糟。
2025-01-18 14:29:19
700
原创 为什么Java不是纯面向对象的语言?
Java 的设计目标是平衡面向对象的纯粹性与实际开发需求:为了性能和效率,引入了基本数据类型。为了简化语言设计和使用,保留了一些非对象的结构(如静态方法、null)。Java 强调了“几乎完全面向对象”的理念,但在严格意义上,不属于纯粹的面向对象语言。如果对比,类似 Smalltalk 和 Ruby 更接近“纯面向对象”的设计,因为它们将几乎所有内容都视为对象(包括数字、逻辑控制等)。
2025-01-17 08:41:37
256
原创 如何在深度学习中榨干GPU的性能
在深度学习中,榨干GPU的性能并非仅仅依赖硬件的强大,还需要针对任务优化数据加载、模型计算和内存管理。通过合理利用混合精度训练、多GPU协作以及硬件驱动优化,可以让GPU的每一个核心都“忙碌”起来,从而达到最高的计算效率。只有不断优化我们的深度学习任务,我们才能真正释放GPU的潜力,推动AI计算迈向新高度。GPU(图形处理单元)因其高效的并行计算能力,已经成为深度学习中的核心计算设备。然而,很多人在使用GPU时,并未充分挖掘其性能,导致计算资源的浪费。那么,如何在深度学习任务中真正榨干GPU的性能?
2025-01-04 09:19:47
837
原创 解锁Jetson开发:从入门到精通全攻略
Jetson 系列开发板作为 NVIDIA 推出的专为 AI 计算设计的平台,在机器学习、计算机视觉、机器人等前沿领域广泛应用,已然成为 AI 开发者手中的得力工具。其凭借强大的 GPU 性能,能够轻松应对复杂的深度学习任务,为各类智能应用提供高效的计算支持。在开启 Jetson 开发之旅前,需先了解不同型号的 Jetson 开发板,如 Jetson Nano、Jetson Xavier NX、Jetson Orin Nano 等。这些型号在性能、功耗、尺寸及价格上各有千秋,开发者应依据项目的具体需求,如
2025-01-03 13:55:41
1907
原创 是什么导致了 CNN 在建模长距离依赖关系方面的局限性?
卷积神经网络方法应用于各个领域,包括计算机视觉、自然语言处理以及科学和工程。CNN 对我们来说非常熟悉,它们能够非常有效地捕捉数据中的局部模式和特征,但它们确实存在局限性。CNN 在处理数据中的长距离连接时会遇到一些麻烦。这是因为 CNN 主要关注观察附近的事物,可能会错过相距很远的重要连接。当您需要知道数据中相距多远的部分时,这可能会带来问题。
2025-01-03 09:43:02
545
原创 Spring 中 @Component 与 @Bean 差异解析:2 分钟快速掌握
在 Spring 中,@Component和@Bean都可以用来定义 Spring 容器中的 Bean,但它们的使用场景和实现方式不同。
2025-01-02 15:53:17
447
原创 从视频中提取音频
在上述公式中,我假设您有一个包含H264视频和AAC音频轨道的文件。使用相同的命令,但更改相应的扩展名,您可以提取单声道、立体声或7.1杜比AC3格式的音频轨道。上述公式还将防止对源音频进行重新编码,除非您希望同时提取并转换音频。如果您希望提取音频并同时转换它,则需要指定音频编码器。这将生成一个标准的128 Kbit/s、48000 kHz的MP3文件,并且如果源视频有多个音频轨道(如杜比AC3格式),它将生成源视频的立体声混音。您可以根据需要修改-b:a(比特率)、-ar(音频采样率)和-ac。
2025-01-02 15:38:09
168
原创 批量将图片从RAW格式转换为JPEG格式
这只是一个警告,而不是错误,您的最终输出应该是正常的。RAW格式是数码相机专有的格式,包含相机传感器捕捉到的所有信息。哈苏使用.fff或.3fr文件扩展名,而许多索尼相机使用其专有的.arw格式。-delete 0:将丢弃额外的RAW数据,并仅输出一个文件。请注意,专有的RAW格式,如哈苏的.3fr和索尼的.arw,可能与某些ImageMagick安装不完全兼容。在Ubuntu中,SIPS的替代品可以是ImageMagick,如本书ImageMagick章节所述。在本章中,我们将讨论实现这一目的的方法。
2025-01-02 15:36:29
134
原创 批量处理 - 为不同尺寸的多张图像添加覆盖层
在下面的示例中,我将使用一个大尺寸的logo(1900 x 2319像素):这样,在处理大尺寸的输入图像时,logo不会出现像素化。为了批量处理一个包含各种未知尺寸图像的文件夹,我们需要再次利用ImageMagick的强大功能,但这次采用不同的方法:根据图像尺寸按比例调整logo的大小。如果使用之前的公式,并使用PNG、JPG或TIFF等常见扩展名的logo或图形,可能会导致大图像上显示一个小logo,或者小图像上被覆盖了一个大logo。您可能有一个包含数千张图像的文件夹,每张图像的宽度和高度都不同。
2025-01-02 15:34:25
44
原创 批量处理 - 对多张相同尺寸的图像进行叠加
它会在前一个命令中找到的所有PNG文件上叠加一个名为“yourlogo.png”的文件,并将其放在图像的右上角(东北方向)。然后,它将把处理后的文件放入名为“Processed”的目录或您在前几步中选择的任何名称的目录中。现在,如我之前提到的,我们需要创建一个简单的脚本。现在,您会找到一个名为“Processed”的新文件夹,其中包含脚本“myscript.sh”执行的操作的输出结果。如果您需要对多张图像执行相同的操作,但涉及不同的尺寸,则需要编写一个不同的脚本,该脚本将在下一个公式中描述。
2025-01-02 10:38:32
61
原创 Java 枚举类型解析:提升代码优雅与效率
通过使用枚举,你不仅可以定义固定的常量,还可以提高代码的安全性、可维护性 和 可读性。枚举在 Java 中是非常推荐的实践,特别是在需要表示有限状态或选项的场景。在 Java 中,枚举类型(enum)是用来定义一组固定常量的特殊数据类型。所有可能的值集中定义在一个地方(enum 内),不需要散落在代码中定义多个常量。扩展性差:如果需要新增状态,所有代码中使用常量的地方都可能需要修改。枚举是强类型的,编译器会确保只能使用合法的枚举值。可以为枚举定义额外的字段和方法。枚举类型的值是有限的、固定的。
2025-01-02 09:40:28
166
原创 像专业人士一样进行调试
调试可能具有挑战性,但使用正确的工具,您甚至可以在执行代码库之前轻松识别和修复错误、安全漏洞和编码违规。这可确保代码更简洁、组织良好,并从一开始就最大限度地减少错误。
2025-01-02 08:39:33
1286
原创 Docker:容器化初学者指南
这是一篇关于 Docker 的适合初学者的文章,介绍了其核心概念和实际应用。如果您从事 IT 或任何技术相关领域的工作,但尚不熟悉容器化,那么本文将帮助您了解该概念及其重要性。
2025-01-02 08:32:14
948
原创 改变我软件工程师职业生涯的 10 本书
随着我职业生涯的不断进步,设计强大的系统成为我工作中的一个重要部分。本书深入探讨了数据系统的基础知识,教你如何处理可扩展性和可靠性——对于任何从事后端系统或复杂架构的人来说,这都是必读之作。《代码整洁之道》让我意识到让代码易读、简洁的重要性 — 这项技能对我和我的队友以及我的初级工程师都有帮助。对于任何想要编写既实用又美观的代码的人来说,这都是必读之作。《凤凰项目》的这本配套书深入探讨了开发者的体验和创新的作用。它激励我创造一个环境,让我的团队能够蓬勃发展、发挥创造力并交付高质量的工作。
2025-01-01 11:02:27
988
原创 在视频上叠加图像
使用FFMPEG,公式很简单。根据你需要在视频上叠加的图像,通常使用透明的PNG图形会获得更好的效果。-codec:a copy:这条指令将保持完全相同的音频参数,不进行转换。当你需要更好的结果,并且仍然使用相同的MP4容器和h264编解码器时,你可能想要探索这种压缩方式可用的不同设置。FFMPEG提供了一份很棒的H264编码指南。
2024-12-31 10:56:42
183
原创 使用FFMPEG进行缩放
根据《韦氏词典》:宽高比:名词电视或电影图像的宽度与高度之比。如果你需要处理来自不同来源的视频,如相机原始素材、智能手机、旧电视磁带等,你可能会遇到不同的宽高比。如今常见的宽高比是16:9(电视)或9:16(智能手机),但在电影制作领域,尤其是,你可能会遇到不同宽高比的情况。
2024-12-31 10:52:25
159
原创 仅针对HLS的批处理
如果您的文件帧率不同,则需要在运行此脚本之前将它们转换,或者相应地更改脚本中的-r 25 -keyint_min 25 -g 50部分,以匹配您的输入文件的帧率。该公式还将在您的工作目录中创建两个新文件夹:一个以您的输入文件命名,包含主文件的各种分辨率版本;假设您需要将大量视频转换为多比特率版本,用于您自己的VOD(视频点播)平台,使用的是HLS技术。首先,使用您喜欢的文本编辑器创建一个文本文件,您可以随意命名,例如“hls.sh”。source hls.sh(翻译为:运行 hls.sh 脚本)
2024-12-31 10:51:17
34
原创 生成DASH流
为了自动化从主视频生成多比特率版本的过程,以及分割和创建符合DASH标准的MPD(媒体呈现描述播放列表)和Apple的HLS播放列表(M3U8格式),您可以使用您喜欢的文本编辑器(如下面示例公式中使用的Nano文本编辑器)创建一个脚本。在本章中,我们将经历与生成HLS相同的流程,但会进行一些细微的修改,以生成标准的DASH片段和播放列表。以下公式将生成您的主文件的多比特率版本,采用前文“不同的h264编码方法”一章中所述的h264受限编码。• 您的主视频的5个版本,以25帧每秒的速度并行处理;
2024-12-31 10:49:47
61
原创 使用FFMPEG和Bento4生成HLS
r 25 -keyint_min 25 -g 50:此指令用于生成25帧/秒的文件,并建议在每2秒插入一个关键帧,假设您的输入文件以25帧/秒运行,如前一章“关键帧:基本概念”所述。-maxrate 5000k -bufsize 10000k:与启用的-crf选项一起,这将指示FFMPEG以特定的约束模式编码您的视频,如本书前一章“不同的h264编码方法”所述。–output-single-file:这将为每个输入文件将片段数据存储在一个单独的输出文件中,从而大幅减少片段文件的数量,仅为1个。
2024-12-31 10:49:14
81
原创 使用 RTMP 在社交媒体上进行流媒体传输
RTMP 是“实时消息传输协议”(Real-Time Messaging Protocol)的缩写,而 RTMPS 则表示通过 TLS(传输层安全协议)或 SSL 连接进行的相同传输。32 33RTMP 最初由 Macromedia 创建,用于在 Flash 服务器之间实现音频和视频流传输。如今,收购了 Macromedia 的 Adobe 已将此专有协议开放给公众使用。
2024-12-31 10:48:27
102
原创 制作VP8视频
WebM项目致力于开发一种高质量的、开放的、可供所有人免费使用的网络视频格式。WebM的编解码器VP8通过libvpx库安装在FFMPEG中,libvpx是一种开放、免版税的媒体文件格式。虽然任何最新的FFMPEG存储库都应默认启用此选项,但可以借助编译指南,并通过使用–enable-libvpx选项编译FFmpeg,或者确保在Homebrew的安装公式中启用了libvpx选项,来安装libvpx库。注意:VP8的继任者VP9在更低的比特率下提供了更好的视频质量。
2024-12-31 10:46:32
200
原创 生成h264/AVC视频
2003年,国际电信联盟(ITU)指出:“随着处理能力和内存成本的降低,网络对编码视频数据的支持日益多样化,以及视频编码技术的进步,业界迫切需要一种压缩视频表示的行业标准,以大幅提高编码效率和增强网络环境的鲁棒性。在撰写本书时,根据Bitmovin19最近的一项调查(Bitmovin为Twitter的Periscope和BBC等提供视频流支持),h264编解码器(又称AVC - 高级视频编解码器)仍然是网络上最流行的编解码器。该编解码器于2003年5月向公众发布。
2024-12-31 10:44:15
92
原创 使用FFMPEG剪切视频
通过这种重新编码,您可以确保获得准确的部分,不会出现使用前一个公式中的-c copy选项时可能发生的黑屏或音频丢失问题,但如果您正在使用h264或其他有损格式,这可能会以牺牲质量为代价。请注意,如果您想在不重新编码的情况下剪切视频,使用-c copy选项时,没有通用的规则来正确设置-ss和-t选项的时间点,因为这些取决于输入编码时使用的关键帧间隔。在此示例中,持续时间为20秒。在这个示例中,FFMPEG将重新编码您的输入,并使用基本选项根据您的输出文件扩展名创建一个新的输出文件。提取20秒而不重新编码。
2024-12-31 10:42:31
159
原创 元数据与FFPROBE
在视频领域,元数据是一组描述并提供关于其他数据信息的数据,用于描述与视频资产相关的信息。元数据可以作为对最终用户可见的文本显示,如标签和描述,也可以对用户不可见,如用于保护资产免受盗版威胁的关键词或数字版权管理(DRM)信息。元数据还可以包含视频音频轨道的重要信息,包括作者、作曲家、表演者、音乐流派、所有版权信息、制作人员名单等。如前所述,FFMPEG附带了三个不同的程序。主要程序是FFMPEG本身,然后是FFPLAY,一个主要用于测试目的的简单播放器,最后是FFPROBE,用于从输入中收集信息。
2024-12-31 10:40:42
155
原创 FFMPEG的基本语法概念
一旦安装了 FFMPEG,您只需在终端中输入ffmpeg即可运行该程序。FFMPEG 的基本流程非常简单明了。程序会期待一个输入文件,可能会需要一些选项来对其进行转换,或者保持原样,然后它会创建一个输出文件。让我们来看一个非常基本的例子。我想将一个“.wav”格式的音频文件(例如:“mysong.wav”)转换为 Mp3 音频文件,从而创建一个名为“mysong.mp3”的新文件。这里的-i代表“输入”。这个输入可以是您计算机中的本地文件,也可以是来自远程 URL 的文件。
2024-12-31 10:38:14
464
原创 Spring Boot项目复制工具【一键替换 Maven 的 groupId、artifactId,项目中的 package】
快速构建项目,项目修改工具
2024-12-31 08:50:23
389
原创 进程和线程的关系
从实现来看,Linux下的线程目前是LWP实现,线程就是轻量级进程,所有的线程都当作进程来实现,因此线程和进程都是用task_struct来描述的。Linux内核认为根本没有所谓的进程和线程的概念,只有COE(Linux称之为任务),不同的COE可以相互共享一些状态,通过此类共享向上构建起进程和线程的概念。然而,这种区分法并不正确,这是一种愚蠢的自我设限。简言之,内核不要基于进程/线程的概念做设计,而应该围绕COE的思考方式去做设计,然后,通过暴露有限的接口给用户去满足pthreads库的要求。
2024-12-31 08:45:21
350
原创 基于Spring Boot领域驱动设计(DDD)的项目模板
访问接口:通过 REST 接口测试订单功能,例如通过 Postman 发送 POST 请求。运行项目:使用 mvn spring-boot:run 启动项目。
2024-12-31 08:11:20
728
原创 了解 Webhooks:面向开发人员的简明指南
想象一下:您下载沃尔玛应用程序,将一盒价值 24 美元的 Lindt 巧克力和一块价值 2.50 美元的 Feastables 巧克力棒添加到购物车,前往结账,却看到额外的 0.50 美元费用。Webhooks,也称为 Web 回调、HTTP 推送 API 或反向 API,是一种在特定事件发生时一个应用程序向另一个应用程序发送实时数据的方式。两者都有各自的用例,但是 webhook 对于实时更新特别有用,例如付款确认、发货状态更改或通知。现在,作为用户,您知道付款已完成,前端(应用程序)也知道。
2024-12-30 17:38:46
1018
原创 Nginx 常用8种负载平衡
缺点:如果大量用户共享相同的 IP 范围,则可能导致分布不均匀,并且不能很好地处理服务器故障。缺点:如果某些服务器速度较慢或容量较小,则可能导致分布不均匀,因为它们可能仍会有更多的连接。缺点:没有考虑服务器负载或容量差异,如果服务器的功率有差异,则可能导致性能不均匀。缺点:需要手动配置和调整权重,这可能很复杂并且需要随着服务器负载的变化而定期调整。缺点:需要额外的监控和第三方模块,这可能会增加复杂性和潜在的故障点。同样,您需要第三方模块,如。何时使用:当您的服务器都非常相似时,它非常适合均匀分布请求。
2024-12-30 17:19:18
1040
原创 优化 Nginx 配置
基于 IP 的负载均衡:Nginx 可以通过 ip_hash 实现客户端 IP 地址的粘性负载均衡,确保来自相同 IP 的请求始终分发到同一台后端服务器。配置文件缓存:Nginx 支持通过 expires 指令设置静态文件的缓存时间,减少静态资源的请求次数。禁用日志:对于某些静态文件请求或某些不重要的请求,可以禁用日志来提高性能。也可以使用 DENY 来完全阻止站点被嵌入在 iframe 中。限制连接数:限制每个 IP 地址的连接数,防止滥用。限制连接数:限制每个 IP 地址的连接数,防止滥用。
2024-12-30 17:04:13
1663
原创 正向代理、反向代理和负载均衡器
正向代理服务器充当您的专用网络和公共互联网之间的中间人,您的请求会通过公共互联网发出。高效的流量分配:就像楼层经理确保不会给单个服务员分配过多的工作一样,负载均衡器也可以通过将流量均匀地分配到多台服务器上来做类似的事情,从而确保平稳高效的运行。就流量方向而言,正向代理管理来自客户端的出站流量,另一方面,反向代理管理服务器的入站流量,负载均衡器在多个服务器之间分配传入流量。在这种情况下,您作为客户,代表传入的请求,服务员是处理这些请求的后端服务器,而楼层经理是负载均衡器,负责确保分布均匀且操作顺畅。
2024-12-30 16:57:21
810
2
宇视科技LAPI平台接入协议V1.53:雷达数据通信标准与应用
2024-12-31
《The Last Whole Earth Catalog: Access to Tools》是一本跨时代的工具指南,被誉为20世纪的文化现象之一
2024-12-31
宝贵的人生建议 (凯文·凯利) .pdf
2024-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人