虹棠工作室博客 – 一个啥都分享的个人博客网站!
虹棠工作室博客，分享方方面面，打造自由的全集合型博客
软件介绍HT Cutter 是一个专业的视频帧提取工具，专为影视制作、视频分析和素材处理设计。它可以高效地从多种视频格式中批量提取每一帧画面，并自动整理到对应的文件夹中。 📌 使用它，你可以：使用快捷模式使用自定义模式指定视频格式自定义输出图片的质量自定义输出图片的质量核心功能亮点多格式支持：MP4/AVI/MOV/MKV/FLV等智能跳过：自动检测已处理的视频自定义输出：支持PNG/JPG格式和精细质量调节批量处理：递归处理所有子目录中的视频多线程加速：最高支持500线程并行处理使用说明快速使用将软件复制到视频所在目录，确保视频名称不含中文 -> 双击软件等待初始化 -> 显示内容后输入 y + Enter ，注意如果当前目录下包含其它文件夹，其它文件夹内的视频也会被扫描并处理 -> 处理完成后按提示退出即可。基本使用# 处理当前目录下的所有视频 HTCutter.exe # 处理指定目录的视频 HTCutter.exe D:\我的视频素材高级参数# 强制重新处理所有视频（覆盖现有文件） HTCutter.exe --force # 指定视频格式（多个扩展名用空格分隔） HTCutter.exe --ext .mp4 .mkv .flv # 自定义输出格式和质量 HTCutter.exe --fmt 90 .jpg # JPG格式90%质量 HTCutter.exe --fmt 5 .png # PNG格式压缩级别5 # 设置并行线程数（1-500） HTCutter.exe --max 16完整参数说明参数说明默认值示例folder视频文件夹路径当前目录D:\视频素材--force强制重新处理所有视频关闭--force--ext视频扩展名列表.mp4 .avi .mov--ext .mkv .flv--fmt图片质量+格式95 .jpg--fmt 100 .jpg--max最大线程数4--max 32图片质量指南格式质量范围速度质量说明PNG0-9快→慢0=无压缩(速度快)，9=最高压缩(速度慢)JPG0-100快→慢0=几乎全损(速度快)，100=几乎无损(速度慢)使用场景影视制作：提取关键帧制作分镜脚本AI训练：为机器学习准备视频帧数据集故障分析：逐帧检查视频质量问题素材管理：创建视频缩略图库动画制作：提取动画序列帧注意事项需要足够的磁盘空间（视频帧可能占用大量空间）处理过程中不要移动或删除原始视使用 --force 参数会覆盖现有帧图片PNG 压缩级别越高处理时间越长按 Ctrl+C 可随时终止程序技术特点智能进度显示：双进度条（帧提取+帧保存）错误恢复：自动跳过损坏视频文件路径优化：自动处理相对/绝对路径视觉反馈：彩色终端界面显示不同信息类型安全设计：只读操作（除非使用 --force ）下载和支持本软件支持Windows系统使用，建议使用Win10系统。出于成本考虑，我们只提供最新版下载链接。下载链接：{anote icon="fa-download" href="https://www.123865.com/s/aSnUVv-KXhRh?" type="secondary" content="点击下载"/}{anote icon="fa-download" href="https://www.123865.com/s/aSnUVv-KXhRh?" type="secondary" content="备用链接"/}提取码：{hide}c2s0{/hide}更新{tabs}{tabs-pane label="Beta"}{timeline}{timeline-item color="#19be6b"}2025.6.10（Beta0.2.0）新增并行处理功能新增自定义参数{/timeline-item}{timeline}{timeline-item color="#19be6b"}2025.6.10（Beta0.1.3）新增自定义参数完善软件界面显示优化完善使用提示优化{/timeline-item}{timeline-item color="#ed4014"}-> 2025.6.9（Beta0.1.0）推出首款视频帧批量提取工具，具有简单的视频帧功能及其它若干基础功能{/timeline-item}{/timeline}{/tabs-pane}{tabs-pane label="Version1"}{timeline}{timeline-item color="#ed4014"}?敬请期待{/timeline-item}{/timeline}{/tabs-pane}{/tabs}
Unexpected Journey: Three Parks in One Day
Good morning! Today I want to share an crazy adventure with my three friends. It proves that sometimes getting lost can be the best part of traveling. Last National Day holiday, we went to Jiaoshan Great Wall. The climbing was so hard! The stairs were almost vertical. By 11 AM, we finally reached the top, sweating and tired. Then Lily pointed west: "Look! There's another path!" Our map showed nothing there, but we decided to explore. This was our first spontaneous choice.Walking along the unknown trail, we found a magical view... mountains hugging a huge green lake. Birds were singing everywhere. Later we learned this was Yansai Lake. We kept going through a pine forest until sunset. Suddenly, an old iron gate appeared. Its sign was faded, but we could read "ChangShou Mountain Geo-Park". The gate was open, so... we entered.Inside was another world! Narrow canyons, strange rock shapes. The coolest was "Sky Crack"... a super narrow path between tall cliffs. We had to walk sideways! When we finally got out, it was completely dark. No taxis, no buses. Just corn fields and crickets.After 40 minutes waiting, a kind man in a Buick stopped. Mr. Zhang said: "You kids remind me of my daughter." He drove us back while sharing roasted chestnuts. That car smelled like safety and kindness.Total cost? 20 yuan! We accidentally visited three parks with one ticket. This taught me: Don't fear unplanned paths. Those rusty gates and hidden trails? They're life's surprise gifts. So next time you travel, dare to misread the map. Let curiosity override caution. Because sometimes, the most extraordinary views require breaking the rules... even if accidentally. Thank you.
罪名刑罚罚金范围其他规定伪造、出售伪造的增值税专用发票3年以下有期或拘役或管制2万-20万数量较大或其他严重情节：3-10年有期并处5万-50万罚金数量巨大或其他特别严重情节：10年以上有期或无期，并处5万-50万罚金或没收财产非法购买增值税专用发票或购买伪造的增值税专用发票5年以下有期或拘役2万-20万非法购买后虚开或出售的，依相关条款定罪处罚伪造、擅自制造或出售伪造、擅自制造的可以用于骗取出口退税、抵扣税款的其他发票3年以下有期或拘役或管制2万-20万数量巨大：3-7年有期，并处5万-50万罚金数量特别巨大：7年以上有期，并处5万-50万罚金或没收财产持有伪造的发票2年以下有期、拘役或管制数量较大：罚金数量巨大：2-7年有期，并处罚金{mtitle title="声明"/}内容整理自网络，不保证绝对准确性及时效性，有相关问题请寻求专业人员帮助。
NASA: Starship Test Flight Marked Progress toward Moon Landing Plans
By Bryan Lynn24 March 2024The American space agency NASA says the recent test flight of SpaceX's Starship rocket demonstrated progress in several important areas even though the rocket was lost.NASA is planning to use Starship to carry the first astronauts to the moon since the agency's Apollo 17 mission in 1972. But the spacecraft will have to pass additional testing before a moon mission.Such a mission would be part of NASA's Artemis program. The next planned trip in that program will be Artemis II, which is set for September 2025. NASA aims to send astronauts into orbit around the moon but will not attempt a landing on the lunar surface.Artemis III, planned for September 2026, will attempt to land astronauts on the surface of the moon. SpaceX's Starship rocket has been chosen for this mission.Both Artemis II and Artemis III have faced delays in planned launches.SpaceX's latest test flight of Starship took place on March 14. Starship was able to travel farther than ever before during the flight. But the rocket broke apart when attempting to re-enter Earth's atmosphere.At the time it broke apart, Starship was nearing a planned splashdown in the Indian Ocean, about one hour after launching from southern Texas.During a live broadcast of the test flight, SpaceX confirmed that the rocket had been "lost" upon its re-entry attempt. Starship is designed to be reused.Two Starship test flights last year both ended in explosions minutes after liftoff. By surviving for close to 50 minutes in its latest test, both SpaceX and NASA considered the effort a success.NASA chief Bill Nelson praised Starship's test after the launch on X. "Congrats to @SpaceX on a successful test flight! Starship has soared into the heavens. Together, we are making great strides through Artemis to return humanity to the Moon—then look onward to Mars."In a statement, NASA described the ways Starship's test brought the agency closer to being ready to fly astronauts to the moon.The space agency noted the rocket used its six Raptor engines to successfully separate from its first-stage Super Heavy booster. The Super Heavy itself was powered by 33 Raptor engines.During a Starship launch test last April, several of the booster's 33 methane-fueled engines failed and the booster did not separate from the spacecraft. This caused the whole vehicle to explode and crash into the sea four minutes after liftoff.SpaceX was able to double the length of the flight during another test in November. While all 33 engines fired and the booster fell away as planned, the flight ended in a pair of explosions, first the booster and then the spacecraft.The U.S. Federal Aviation Administration (FAA) examined all the corrections made to Starship before approving the March 14 flight. The FAA said it was also investigating results of the latest flight.The tests are important for NASA and SpaceX. They permit engineers "to test key systems and processes in flight scenarios" in an attempt to gather data to support the continued development of Starship, said Lisa Watson-Morgan. She is the Program Manager for the Starship program at NASA's Marshall Space Flight Center in Huntsville, Alabama.SpaceX officials have said they plan to carry out at least six more test flights of Starship this year, if the company receives all necessary government approvals.{callout color="#f0ad4e"}I'm Bryan Lynn.Bryan Lynn wrote this story for VOA Learning English, based on reports from The Associated Press, Reuters and NASA.{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}Words in This Storymi.....{callout color="#50BFFF"}查看Words in This Story的完整内容请前往原文网站51voa {/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{callout color="#50BFFF"}本文翻译及音频朗读或下载请前往原文翻译网站51voa{/callout}本文摘抄自www.51voa.com ，相应的，本文不适用本站的 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 及本站相关转载说明。本文旨在帮助学生更好的进行课件演示及朗读，如侵犯了您的权益，请在本站侧栏与我联系，我将会及时处理并删除。
引言板载天线是一种直接利用印刷电路板(PCB)作为介质的天线，通过PCB工艺实现，不需要单独组装天线，因此具有不易触碰损坏和组装方便的特点。这种天线广泛应用于工作在2.4GHz频段的无线模块，如WiFi模块、蓝牙模块、ZigBee模块等。板载天线的设计和种类板载天线的设计需要考虑天线的性能和成本，常见的设计形式有平面倒F型天线（PIFA）、曲流型天线和陶瓷天线等。其中，倒F型天线是一种常见的低成本设计方式，它通常放置在PCB顶层，并且需要保证天线周围的区域是净空区，以减少干扰。曲流型天线的长度一般比四分之一波长稍长，其长度由几何拓扑空间及敷地区决定。陶瓷天线则是利用陶瓷材料的高介电常数来实现天线的设计。板载天线的性能和优缺点板载天线的优点在于成本低、不需要单独组装天线、不易触碰损坏和组装方便。然而，与外接天线相比，板载天线容易受到主板上的干扰，效率相对较低，因此在某些应用场合可能会牺牲性能。对于近距离数据传输，板载天线和外接天线的效果可能相差不大，但在远距离传输时，外接天线会有明显的优势。板载天线在无线通信中的应用板载天线广泛应用于各种无线通信设备中，如无线路由器、WiFi模块、蓝牙模块等。在物联网应用中，板载天线也发挥着重要作用，如SKYLAB推出的UART接口WiFi模块和低功耗IoT UART串口透传WiFi模块等。这些模块内部集成了操作系统，支持串口透传和AT指令控制，可实现设备的联网功能。口语化描述板载天线就像是印刷电路板上的一种“隐形”天线，它不像我们平时看到的那种突出在设备外面的天线。因为它直接设计在电路板上，所以不需要额外的空间来安装，这样可以让设备更小巧，更方便携带。想象一下，你的手机或者无线路由器，如果没有那个长长的天线，而是把天线“藏”在了设备的内部，这样是不是感觉更简洁，更不容易被损坏呢？板载天线就是这样的一种设计。这种天线通常用在无线通信设备上，比如WiFi、蓝牙、ZigBee等无线技术。它的好处是成本低，不需要额外的组装步骤，而且因为天线是内置的，所以设备更耐用，不那么容易坏。但是，板载天线也有它的局限性。它的信号传输距离通常不如外置天线那么远，而且在一些复杂的环境中，比如有很多金属或者电子设备的地方，它的信号可能会受到干扰。总的来说，板载天线是一个让无线设备更小巧、更方便的设计，适合用在不需要太长传输距离的场合。具体作用及总结集成与简化：板载天线将天线结构与PCB板融为一体，省去了传统外部天线的装配步骤，简化了制造过程，降低了成本。空间节省：对于空间受限的应用场合，板载天线不占用额外空间，这对于便携设备和紧凑型产品尤为重要。防护与稳定：由于天线与PCB一体化，它可以得到PCB板的保护，减少外界环境对天线的损害，如碰撞、潮湿等。性能适中：虽然板载天线的性能可能不如外接天线，尤其是在信号方向性和效率方面，但对于许多应用场景来说，这种性能损失是可以接受的。易于调试：板载天线通常在设计和制造PCB时就已经考虑到天线性能，因此可以通过PCB设计软件进行仿真和调试，以确保天线性能满足要求。应用广泛：板载天线广泛应用于WiFi模块、蓝牙模块、ZigBee模块等，特别是在2.4GHz频段的无线通信模块中。在实际应用中，板载天线的设计和制造需要遵循一定的射频工程原则，确保天线的阻抗匹配、辐射特性、以及与其他电路的兼容性。通过精心设计的PCB布局和天线结构，可以实现在满足成本和空间要求的同时，获得尽可能好的无线通信性能。
{message type="info" content="本篇主要讲述的是TS的语法基础和TS在ArkTS中的应用（区别）如果您有足够的基础，可以跳过本篇"/}一、初识ArkTS语言ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript（简称TS）生态基础上做了进一步扩展，继承了TS的所有特性，是TS的超集。因此，在学习ArkTS语言之前，建议开发者具备TS语言开发能力。当前，ArkTS在TS的基础上主要扩展了如下能力：基本语法：ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力，再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了UI开发的主体。状态管理：ArkTS提供了多维度的状态管理机制。在UI开发框架中，与UI相关联的数据可以在组件内使用，也可以在不同组件层级间传递，比如父子组件之间、爷孙组件之间，还可以在应用全局范围内传递或跨设备传递。另外，从数据的传递形式来看，可分为只读的单向传递和可变更的双向传递。开发者可以灵活地利用这些能力来实现数据和UI的联动。渲染控制：ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态，渲染对应状态下的UI内容。循环渲染可从数据源中迭代获取数据，并在每次迭代过程中创建相应的组件。数据懒加载从数据源中按需迭代数据，并在每次迭代过程中创建相应的组件。未来，ArkTS会结合应用开发/运行的需求持续演进，逐步提供并行和并发能力增强、系统类型增强、分布式开发范式等更多特性。{card-describe title="tips"}TypeScript 的定位是静态类型语言，在写代码阶段就能检查错误，而非运行阶段。类型系统是最好的文档，增加了代码的可读性和可维护性。{/card-describe}二、基本语法（一）定义格式：关键字 变量名:类型 = 值关键字：var、let、constvar myname1:string = "hongtang"//不具备块限制（类似于全局变量） let myname2:string = "hongtang"//对应块级作用域（类似于局部变量） const myname3:string = "hongtang"//表示常量类型：string、boolean、number、anylet mystring:string = "hongtang"//仅能存储字符串 let mybool:boolean = false//仅能存储布尔值 let mynumber:number = 123//仅能存储数字 let myany:any = "hongtang"//可存储任意类型定义单一类型数组方式let mylist1:Array<string> = ["ht0","ht1","ht2"]//用 Array<类型> 表示数组 let mylist2:string[] = ["ht3","ht4","ht5"]//用 类型[] 表示数组定义联合类型let mystrandnum:string | number = "a"//用 | 隔开表示多种类型 let mylist5:any = "hongtang"//可存储任意类型 let mylist3:Array<string | number> = ["ht0",123,"ht1"]//用 | 隔开表示能多种类型的数组 let mylist4:(string | number)[] = ["ht2",456,"ht3"]//用 ()和| 表示能多种类型的数组（二）枚举定义//无值 enum ht1{ "A","B","C" } //有值 enum ht1{ "A" = 1, "B" = 2, "C" = 3 }访问ht1.A ht2["A"]打印console.log(ht1.A)//在ArkTS开发环境下，仅能打印字符串类型 console.log(ht1.A.toString())//或强制转换为字符串类型后打印（三）对象定义//固定类型 let myinf1 = { name:"hongtang", age:18 }//无法再添加属性 //指定类型和可选类型 let myinf2:{name:string,age:number,location?:string} = { name:"hongtang", age:18 }//location?标识location属性可选，无法再添加属性 //指定接口 interface IOht{ name:string, age:number, location?:string, [propName:string]:any//表示可添加任意类型属性属性 } //实例化 let myinf3:IOht = { name:"hongtang", age:"18" }扩展属性并赋值myinf3.country = "China"（四）判断===和==的区别"2" == 2//在TS中，表示只判断值不判断类型，结果为true "1" === 1//在TS中，表示判断类型和值，结果为falseif_else判断let order_type:number = 3 if(order_type===1){ console.log("已付款") }else if(order_type===2){ console.log("已发货") }else{ console.log("已完成") }switc判断let order_type:number = 3 switch (order_type){ case 1: console.log("已付款"); break; case 2: console.log("已发货"); break; case 3: console.log("已完成"); break; default : console.log('默认') }（五）for循环let datalist:string[]= ["华为mate60","华为mate60Pro","华为nova"] for(let i=0;i<datalist.length;i++){ console.log(datalist[i]); }//定义i并规定初始值，满足条件，递增 console.log("-------------------") for(let i in datalist){ console.log(datalist[i]); }//此处i是从0开始增加的 console.log("-------------------") for(let i of datalist){ console.log(i); }//此处i即表示确切的内容而不是键（六）函数定义//普通函数 function test1(){ console.log("test1-普通") } //箭头函数 const test2 = ()=>{ console.log("test2-箭头") } //指定参，返回值 const test3 = (state:number):string=>{ let text:string = "" switch (state){ case 1: text = "已付款" break; case 2: text = "已发货" break; case 3: text = "已完成" break; default : text="默认" } return text }//state:传入参数名称，number:传入参数类型，string:返回参数类型调用test1() test2() test3(2)（七）类//定义类 class person{ public name:string; protected age:number; private country:string;//三种不同修饰词 constructor(name:string,age:number,country:string){ this.name = name; this.age = age; this.country = country; }//构造函数，赋值 //类的成员方法 say():string{ return this.name; } } //实例化 let p = new person("hongtang",18,"China"); console.log(p.name); //继承并添加项，即为person的子类 class student extends person{ schollName :string; constructor(name:string,age:number,country:string,school:string){ super(name,age,country); this.schollName = school; } say():string{ return this.name+"----"+this.age+"--"+this.schollName; } } //实例化 let s = new student("hongtang",18,"China","学校名字"); console.log(s.say());（八）接口interface IContainer{ render() } class Tabbar implements IContainer{ render(){ console.log("选项卡渲染") } } class MySwiper implements IContainer{ render(){ console.log("轮播渲染") } } function init(container:IContainer){ container.render() } init(new MySwiper()) init(new Tabbar())（九）泛型class Cache<T> { // 此处T可用任意一个大写字母表示 // private map:Map<string,T> = new Map() private map = {} setCache(key:string,value:T){ this.map[key] = value } getCache(key:string):T{ return this.map[key] } } let obj = new Cache<string>() obj.setCache("name","kerwin") console.log(obj.getCache("name"))（十）引用{tabs}{tabs-pane label="Index.ets"}import Obj,{test1,test2 as TEST2} from '../01-ts/typescript.ts' //Obj是可以直接随便取的 //{test1}必须和子文档中导出的名称一样，如果要起别名，参考test2 console.log(Obj.name) test1() TEST2() //日志： //... app log: hongtang //... app log: test1 //... app log: test2{/tabs-pane}{tabs-pane label="../01-ts/typescript.ts"}const obj = { name:"hongtang", age:18 } function test1(){ console.log("test1") } function test2(){ console.log("test2") } export default obj//默认导出 export {test1, test2}//按需导出{/tabs-pane}{/tabs}
鸿蒙开发工具主要使用的是HUAWEI DevEco Studio（获取工具请单击链接下载，以下简称DevEco Studio），是基于IntelliJ IDEA Community开源版本打造，为运行在HarmonyOS和OpenHarmony系统上的应用和服务（以下简称应用/服务）提供一站式的开发平台。作为一款开发工具，除了具有基本的代码开发、编译构建及调测等功能外，DevEco Studio还具有如下特点：高效智能代码编辑：支持ArkTS、JS、C/C++等语言的代码高亮、代码智能补齐、代码错误检查、代码自动跳转、代码格式化、代码查找等功能，提升代码编写效率。更多详细信息，请参考编辑器使用技巧。低代码可视化开发：丰富的UI界面编辑能力，支持自由拖拽组件和可视化数据绑定，可快速预览效果，所见即所得；同时支持卡片的零代码开发，降低开发门槛和提升界面开发效率。更多详细信息，请参考使用低代码开发应用/服务。多端双向实时预览：支持UI界面代码的双向预览、实时预览、动态预览、组件预览以及多端设备预览，便于快速查看代码运行效果。更多详细信息，请参考使用预览器预览应用/服务界面效果。多端设备模拟仿真：提供HarmonyOS本地模拟器，支持手机等设备的模拟仿真，便捷获取调试环境。更多详细信息，请参考使用模拟器运行应用/服务。{card-describe title="tips"}具体的安装和环境搭建请参考官方开发文档。本系列将全程使用DevEco Studio工具。{/card-describe}
沉金工艺，又称化学镀金工艺，是一种在电子电路板（PCB）表面处理中常用的技术，旨在提高电路板的导电性、抗氧化性和耐腐蚀性。这种工艺在PCB的铜质表面上沉积一层金，这层金不仅能够提供良好的电气连接，还能保护铜表面不受氧化，从而延长电路板的使用寿命。沉金工艺的基本步骤包括：前处理：这个阶段包括除油、微蚀、活化和后浸。目的是去除铜表面的氧化物和油脂，糙化铜表面以增加金层的附着力。沉镍：在前处理之后，首先在铜表面上沉积一层镍，这层镍作为金层的底层，可以提高金层的附着力和均匀性。沉金：在镍层上沉积金层，这是通过将PCB板浸入含有金离子的化学溶液中实现的。金层的厚度通常比电镀金层要厚，可以达到0.025-0.1微米。后处理：包括废金水洗、DI水洗和烘干，以去除残留的化学物质，确保金层的纯净和干燥。沉金工艺的优点包括：金层厚度均匀，可以提高电路板的平整度和尺寸精度。金层光亮度高，可以提高电路板的外观质量。金层与焊接材料的相容性好，可以提高焊接质量。金层的导电性能好，可以提高电路板的传导性能。沉金工艺广泛应用于高端电子产品、计算机、通讯设备和精密仪器等领域，特别是在要求高可靠性和高精度焊接的场合。然而，沉金工艺的成本较高，工艺复杂性也较高，因此在成本敏感或质量要求较低的应用中，可能会选择其他类型的表面处理工艺。