当前位置: 首页 > news >正文

2412d,d的7月会议

原文

总结

卡斯滕
Carsten说,Decard一直在大量试验WebAssembly.他们一直在把d运行时挖出来,直到它工作.他们在浏览器中运行了一些库函数,并试了不同虚机.

他们在移动方面遇见了很多问题,因为不同芯片按不同方式工作.他们想让他们的整个SDKWASM上运行,但可能需要一年时间才能完成,因为WASM中有很多东西在到处移动.

Robert问他们是否让GC正常工作.卡斯滕说,他们没有关注它.他们只是在调用函数.他们不知道如何编写GC,因此想最终使用WASMGC.
他说,一直烦人一件事是WASM接口基本上是POSIX,但编译器并没有按POSIX版本对待控制.他必须实现大量版本化的虚代码才能使它正常工作.
他想看到编译器按POSIX识别WASM.

Robert说他看到标准化机构已接受了GC的提案.Carsten说他们也接受了多线程.WASM正在进入虚机等领域,因此它最终会变成来进出浏览器的VM.
Robert说这是一个非常好的接口.

巴斯蒂安

巴斯蒂安说,他仍在为SARC搞D翻译.他时不时地遇见难以解决或难以理解的问题.那是他的生活,但这里无大事可提.

马蒂斯啤酒

Mathis说,Funkwerk有史以来第一次使用编译器的修补版本,因为可重绑定区间析构错误太可怕了.不过,他说这很常见,因为这主要是他的错.
应该弃用破坏函数.它造成了很大的伤害,但他觉得这不值得辩论.

Dennis问他是否指的是一般的核心析构器.马蒂斯澄清说,他指的是对象版本.他说它有个问题,当它处理一个值类型时,它会处理值,但是当处理一个类时,它实际上会很难注意到的析构类值,不是引用,而是实际的对象自身.

然后,注意虚表指针已变为零,因此你必须知道意思并找出发生的位置.

一般,它几乎从来都不是你想要调用的函数.他觉得这很困惑.

Walter认为析构的目的是,不必等待GC收集对象.你可以说你已完成了它.马蒂斯说不,甚至没有释放它.

Walter问,如果不再用虚表,则设置虚表为零,又有什么关系呢.Mathis说,问题是他在通用环境中使用它,并想为调用语义上适当的析构操作.

,即调用析构器,因为值的生命期结束了.但是当结束类引用的生命期时,因为可能还有其他该类实例引用,不应这样.

但实际是,无论剩余多少引用,都会析构类实例.

沃尔特说这就是破坏的要点.马蒂斯说,它并没有对其他类型这样做.如果他在某个地方一个结构,并传递了要破坏一个副本,则不应影响原版本.

Dennis说这是真的,但是如果有该结构的指针,则就会挂起该指针.Mathis说,他实际上并不知道破坏是如何处理指针的.
它认为它啥也没干.

沃尔特说,如果你要破坏某样东西,则就不应再引用它了.即,由你确保不再引用它.Mathis说,此时,他必须负责生命期,他用它来补偿可重绑定数据对象生命期管理.

他想他会调用破坏结束它的生命期.

Walter说,不,当你知道这是目标值的结尾时,你根据指定的类型,调用了破坏.因此,如果你在通用函数中使用它,如果它是一个结构,则它是一个复制的值,所以说你想结束该值的生命期是对的.

但是,如果它是一个类,复制构造器实际上只是复制引用.如果在那时调用破坏,即没有更多引用它了.

马蒂斯说这就是他的要点.在语义上行为是不同.他不是专门在上调用的.他在一个T任意模板参数上调用它.

Walter说,这样做是说不再有该T实例的引用.但在会议中,他说有更多的引用,它们会变坏,但这不是破坏的重点.
关键是没有更多的引用了.

Mathis说,该行为对类和结构有意义,但对类和结构一起没有意义.这是不同.Walter说,这就是类对象工作方式.调用破坏不安全的.

马蒂斯说,基本上,不必重载.应该有一个破坏和一个destroyClass.Walter再次重复说这就是该函数的意义所在:调用它表明你说没有更多的引用.

Martin说,类的问题是,不能确定你正在析构的引用实际上是最终的引用.他建议应该为设置一个单独的终结器.

破坏性更改,但可为对象添加终结器,然后在版本中,可更改破坏的语义.

Walter认为这很好,但表示分开终止器破坏的问题是,人们会搞混,不理解区别,会用错,然后会不高兴.无法避免.

他说Mathis可以用"这是类"包装调用破坏.马蒂斯说他一直在这样做.他都不记得不包装它就调用破坏.

Walter说,好,它正在按它设计的方式工作,不应改变该行为.

Lu认为这里的问题之一类的特例.不仅破坏,而且很多东西都是特例,因为它们只是隐藏对象虚表指针.

另一件事暗示了有GC,但也可在没有GC分配它们.因为有特例,Weka不使用类.大多数情况都可用结构来解决.

WalterLu说得对,类和结构彼此不同.忽视这些差异算法导致麻烦.Lu理解它,但认为设计可更类似结构,而不是模板编程中总是需要特例的差异.

Walter说,在C++中,对引用必须有特例.当你有值类型和引用类型时,它们会有所不同.没办法.

马蒂斯同意.他说他真很喜欢D中的类设计.当简单编写时,标准区间算法可很好地处理类和结构.唯一觉得有问题的函数是析构.

他觉得,如果他有一个需要使用静如调用一个函数模板函数,则实际上是恰好相同名字的两个函数.

Walter说很好观点,但如果你使用的是值类型,你应该依赖RAII析构,而不是实际破坏函数.而对没有RAII.

马蒂斯说明,他的例子是个特例.他有这样神奇可重绑定的东西,他必须手动控制生命期.这是不经常出现的事情.
Walter说,当你按特例手动管理生命期时,它是一个特例,你必须在其中放一个.

我注意到Java中,因为很容易误用它,而已弃用的Object.finalize.我记得Sun过去总是告诉人们在final中不要这样或那样,因为它不是一个析构器,但人们仍会这样或那样.

在D中遇见了相反的问题,因为析构器也是终结器.

沃尔特说不要把火和水插件在一起.引用类型和值类型彼此间难以理解地不同.

Mathis说,之所以这样,是因为他必须在std.algorithm中添加可重绑定,来支持不变,这一切都可跟踪到他的DConf'22演讲.

然后,他报告说Funkwerk到处都在使用DMD2.108LDC1.38,并且他们运行良好.他们在内部管理代码,没有主要的外部依赖.

他们很高兴离开vibe.d,不再处理编译器更新中的问题.他们对2.108满意.

路易斯

Lu说他无新东西,但他想了解AST重构项目的状态.Weka仍有因模板和属性推导错误而导致的链接问题.

这主要是因为问AST的方式有点混乱.如果可让他更好,则它就会让其他事情更好.

我说Razvan知道这一切.我知道现在主要是Razvan在做这件事,尽管包括Bastiaan在内的别人也做出了贡献.

Lu最后说,他最近看到语言中出现了一些他等待了很久的好函数,比如串插值和命名参数.他觉得这真的很酷.

更新:SAOC2024的一位参与者,当前正在重构AST这里,
这是个影响很大的项目.如果想了解如何贡献,请读D博客上Razvan的战争号召.

马里奥

Mario没有编程问题要报告,但表示今年有三名Funkwerk员工参加DConf.

Mathis说,Lu提到命名参数,只是提醒他Funkwerk想使用它们,但当前因为在dfmt不支持它们,不能使用它们.

他们曾经允许一名员工dfmt上花一些时间,但该员工不再为他们工作,他们现在有问题.他不知道该怎么做.也许可花几天时间来研究一下,他们在所有项目中都使用了dfmt,所以使得对他们来说命名参数是不可能的.

Dennis说他最近开始在自己的代码中使用dfmt,并注意到了一些错误.他打开了一些问题,但似乎没人积极关注它.他说他可能会花时间来弄清楚它工作原理,这样就可解决这些问题.

格式化程序压缩属性中的内容,命名参数中的冒号混淆,并完全析构参数列表时,这真的很烦人.

马里奥说他没有指派马蒂斯修复dfmt,因为他不确定这是否会浪费时间和金钱.他知道SDC也有sdfmt,他还知道dfmt在按库对待DMD上已做了一些工作,但他不知道进度如何.

他不想让Mathis修复dfmt,因为在被其他东西替换时,这些修复不重要.

Dennis说,Razvan的一名学生曾参与过该项目,按DMD按库替换dfmt的使用libdparse的,但默认没有启用它.

他上次听说只有一个开关启用它,而且现在还太早.该改变不会影响格式逻辑,但必须看看.

我注意到,过去曾讨论过与编译器一起提供格式化程序.同意它是dfmt,因为它会使用按库DMD,如果用DMD发布它,这是有意义的.

因此,修复格式化逻辑不会浪费时间.

Lu说,Weka还没测试dfmt的更改,因为它们落后了几个编译器版本,但应该能很快完成.他会报告他们发现的问题.

Johan

JohanWeka可能有一些问题要谈,但他在会议前没有收集它们,所以他下次会带来几个.

他确实有一些消息要告诉.他说,Weka一直对用musllibc链接可执行文件感兴趣.他已修复了实现它期望的最后部分.

他几乎把所有的东西都移动到了d运行时上游.他说,很好的成功故事.现在可创建不依赖libc实现的静态链接可执行文件,这就是目标.

接着,他请求在编译器仓库包含语言规范,以避免那种并行拉请,即如果必须恢复另一个,你最终必须恢复一个.他确信前面已讨论了,但他想看看.

Robert说,如果规范单元测试,即实际上是可测试的文档,那就更棒了.那可能会有更多的工作,但真的很酷.即使编译器仓库中有规范,你仍必须记住更新它.

但是,如果是不可编译的规范,且文档由此生成的,那将是一个更大的胜利.
沃尔特说这很好.

Dennis说明,如果规范中的示例正确的宏,则当前会运行这些示例.他说Nick一直在努力按可运行的示例转换原来的未经测试的代码.

Robert说这太棒了,并问它是否包括该语言的其他测试用例.有时,当他读规范时,发现有些事情不清楚,他会去测试,来查看最后的实际结果.

如果包括它们,则会大大收紧规范.

Dennis问他是否打算用规范关联DMD测试包,Robert.

Walter说,该测试包不适合公众使用.它不是那样设计的.它为了易于调试编译器.

WalterRobert是对的,但他说明,每次读计算机软件规范(包括语言规范)时,在调用函数ABI如何工作的规范,总是让他感到困惑.

所以会编写一些小的测试用例,编译它们,看看会怎样.

Walter说,一旦他编写了代码,编译了它,并看到了结果,然后他就会回去再次读规范,这样就会理解了.他希望可以在规范和理解规范有更好的方法.

路易斯说,他与沃尔特的经历恰恰相反.如,读D规范,假设ABI按描述工作,然后试验DMD并找到ABI未按规范工作.

如,逆转了参数.在调用约定中,参数应该是一个方式,但在编译器中,它们是另一个方式.

他说对编译器,有两个不同类型的测试.对特定的编译器错误,有各种奇怪的测试.Robert描述的测试只是示例,但这也证实该规范符合想表达的.

Walter说,如果编译器和规范不匹配,那就是个应该报告错误.他们确实报告了,就可以一个一个打倒他们.

Lu说他曾试修复调用约定错误,但这是个很难的问题,因为它在DMD后端无处不在.

Walter同意调用约定复杂性一个重要源,尤其是在后端,因为它支持多个调用约定.这是一大堆代码.

Lu说,他看到的问题之一DMD数学内部函数.它们是基于调用约定实现的,但是因为参数顺序实际上是相反的,现在需要更改所有这些内部函数.

他提交了一些PR试修复它们,但测试失败了.从Iain对话得知,GDC是最符合ABID编译器.

Johan让回到了他的原点:如果编译器和规范放在同一个仓库中,则更容易知道哪种语言规范与你的编译器版本匹配.

至于测试规范,他说有一些公司为C语言制作了测试包.这很难.这与在同一个仓库中放置规范和编译器完全不同问题.

编写单行规范后的所有测试代码行的工作是巨大的.这很好,但肯定是个巨大的项目.

至于ABI,他觉得这超出了语言规范.对他来说,规范应在更高的位置.实现CABI是因为必须,但除此外,ABI相当开放的.

那是在较低的层面上.对程序员来说,更有趣的是更高的规范级,这与你的特定编译器版本有关.当它们在不同仓库中时,你必须弄清楚哪些日期与哪个匹配,这很快就会变得非常麻烦.

Walter同意语言规范ABI规范是两个截然不同东西.他说明,在标准化C语言后,一家公司测试C规范中的每一段代码制作了一个包,然后发布它.

每个C编译器都失败了.所有C编译器都花了数年时间才成功运行从规范取的测试.这就是整个问题.

Mathis建议,当你在查看语言规范时,发现某些内容对你没有意义,但随后查看测试发现它的意义,则这就是应该进入规范的测试.

你不必在那一刻把它放进去,但你可为它提交一个问题.沃尔特同意.

Lu举了一例,Weka遇见过它,在同一仓库中放置规范和编译器有用的.
沃尔特说他对此没有异议.整合它们没问题.

最后,Johan报告说,Weka仍在使用LDC1.30,但他们已接近升级1.38,即D2.108.他已看到了2.109中的一些变化,他们花了时间来适应,因此分发先升级2.108,然后再从那里继续.

Lu说,他很高兴能使用一些DIP1000特征.DIP1000的变化是因为析构而使它们一直用旧版本,但现在已修复了.

马蒂亚斯.朗

Mathias想重申工具的重要性,他提前感谢Dennis可愿意查看一下dfmt.Symmetry也使用了格式化程序,尽管他们使用的是sdfmt,因为Amaury维护了它.

但是,使用工具可做更多事情,它会很好地整合他们的项目.按库DMD可以实现很多好东西,而AST重构项目可以允许它.

如果必须在DMDARM后端,和不变AST间做出选择,他会投给不变的AST.

丹尼斯

Dennis最近一直在与COM打交道.它有个带命名参数特殊调用约定,而D命名参数,所以他想试组合它们在一起会很好.

但是opDispatchopCall不支持命名参数,且DIP没有为它提供机器.

他有个想法,可添加按串数组按模板参数压命名参数的,类似opNamedDispatch的东西.这样就可以了.沃尔特觉得这似乎很有趣.

沃尔特

Walter说他一直在向X发布他在AAarch64代码生成器上的每日进度更新.他当前正在处理调用函数返回序列.

花了一些时间后,他慢慢开始理解ARM指令集.它的某些部分仍很怪.对一个本应简单的指令集,它非常复杂.他必须编写一些代码片,并在godbolt上试用它们,看看它们到底做了什么.

他已到了它会管用的地步,但完成细节需要一点时间.他期望的很快就会运行基本的.

JohanWalter是否有机器可运行它.沃尔特说他只是在用godbolt.他会编写个两行左右的函数,并想看看它发出了哪些指令.

他们是怎么处理pushspops?他们是如何调用函数的?Godbolt非常适合这些.

他说他还有一个RaspberryPi.他期望RaspberryPi用户可变成简单AArch64DMD后端的潜在用户组.这就是他分发的目标机器.

编译器当前发出的代码没有处理elf目标文件中的修复,因此不能试运行生成的代码.

可惜,elf生成器代码是个老鼠窝.他一直在重构它以使其更易于处理.重构,与x86修复完全不同,应该更容易修复AArch64.

他已为它编写了个目标文件转储程序一个反汇编器,因此正在慢慢地组合这些部分.一旦他在RaspberryPi上工作,他就会得到一台带ARM芯片的最新Mac,并让它在那里工作.

Johan说他以为Walter窗口用户.他了解到现在有些不错的窗口版的ARM笔记本电脑.但有时,如果Walter有一台机器来运行它就好了.

Walter窗口后端可能是最后一步,主要是因为他发现窗口ABI文档很差,而且要使它正常工作需要付出更多努力.

他也不喜欢使用微软SDK.它太大太复杂了,很难在里面找到东西.它有太多的目录和文件,他就是不喜欢到处找它.

这也是窗口支持,只是实现ImportC最后原因.

他说Linux开发工具要好得多.它们更易于理解,且面向命令行,而不是GUI.他发现它们更容易开发代码,也更容易理解正在发生的事情.
因此,他打算把微软问题延迟到最后.

Martin说明,d运行时很可能需要为窗口的AArch64工作.Johan说,事实上,LDC可能无法在窗口ARM笔记本电脑上运行.

如果有一些开发者从事这项工作,那就太好了.不一定是沃尔特.也许是核心贡献者之一,或是参与游戏并有动力修复最后点点滴滴的人.

DennisWalter打算用PR做什么.他打算继续添加并在测试包通过后整合整个事情,还是要合并一个最小的工作版本并在此基础上构建?

沃尔特知道它越来越大,而且看不到尽头.他不断地重定基,这样它就不会无可救药地分歧.它现在是如此之大,坦率地说,不可能审查它.

他问Dennis即使它还不是一个全功能的后端,简单把它主线化是否是合理的?这样更容易管理并避免无法合并它,同时更容易审查未来添加.

Dennis认为,如果有依赖的标志框架来构建实际的生成代码,那就太好了.Walter说,此时,如果它通过了测试包,他会很高兴合并它.

Dennis测试包中是否有实际运行生成代码ARM测试.沃尔特说没有.

Dennis问这是否只是根据期望汇编测试,Walter说就是.他正在目视检查汇编.表明,-vasm开关对此非常有用.
他使用-vasm编译,查看反汇编的代码,并用godbolt发布的代码比较它.他甚至会取godbolt发出的代码,按测试包的一部分放进反汇编器中.

丹尼斯说他可花点时间看看.他想看看代码,但这不是他一个晚上可以完成的事情.Walter说这正是问题所在,所以他完全支持合并它并从那里继续.

相关文章:

2412d,d的7月会议

原文 总结 卡斯滕 Carsten说,Decard一直在大量试验WebAssembly.他们一直在把d运行时挖出来,直到它工作.他们在浏览器中运行了一些库函数,并试了不同虚机. 他们在移动方面遇见了很多问题,因为不同芯片按不同方式工作.他们想让他们的整个SDK在WASM上运行,但可能需要一年时间才…...

ANOMALY BERT 解读

出处: ICLR workshop 2023 代码:Jhryu30/AnomalyBERT 可视化效果: 一 提出动机 动机:无监督 TSAD 领域内,“训练集” 也缺失:真值标签(GT);换句话说,一个…...

定时/延时任务-Netty时间轮源码分析

文章目录 1. 概要2. 参数3. 构造器4. 回收5. 启动时间轮 - start6. 停止时间轮 - stop7. 添加任务8. 工作线程 - Worker8.1 线程参数8.2 核心逻辑-run8.3 指针跳动到下一个tick8.4 处理要取消的任务8.5 把新增的任务加入时间轮8.6 执行过期任务 9. HashedWheelTimeout9.1 属性9…...

React的一些主要优点是?

React 一些主要的优点: 组件化架构: React 通过组件化的方式构建 UI,允许开发者将复杂的应用拆分成可重用的小部分。这使得代码更加模块化和可维护。 虚拟 DOM: React 使用虚拟 DOM 来提高性能。它通过在内存中维护一个与应用状态…...

RabbitMQ 基本使用方法详解

RabbitMQ 基本使用方法 在你的代码中,涉及到了 RabbitMQ 的基本使用,包括队列定义、交换机的配置、消息的发送与接收等内容。下面我将详细总结 RabbitMQ 的基本使用方法,重点解释如何在 Spring Boot 项目中与 RabbitMQ 集成。 1. 引入依赖 …...

[leetcode100] 101. 对称二叉树

https://leetcode.cn/problems/symmetric-tree/description/?envTypestudy-plan-v2&envIdtop-100-liked 心血来潮,突然感觉很久没做leetcode,刷一题。 看到“简单”,哦吼,应该很快吧。 结果真是《简单》 题目描述 给你一个…...

Vue.createApp的对象参数

目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的,该函数需要接收一个对象作为参数,该对象可添加 template、data、methods 等属性。 template …...

短信验证码burp姿势

首先声明,本文仅仅作为学习使用,因个人原因导致的后果,皆有个人承担,本人没有任何责任。 在之前的burp学习中,我们学习了图片验证码的突破,但是现实中还有很多短信验证码,在此我介绍几种短信验…...

ubuntu WPS安装

需要进入国外官网下载 [OFFICIAL] WPS Office-Free Office Download for PC & Mobile, AI-Powered Office Suite 安装 sudo dpkg -i wps-office_11.1.0.11723.XA_amd64.deb 提示缺失字体操作 下载字体包 链接: https://pan.baidu.com/s/1EVzb3F8Ry_dJ_hj0A4MksQ 提取…...

中粮凤凰里共有产权看房记

中粮凤凰里看房是希望而来,失望而归。主要是对如下失望,下述仅个人看房感受: 1. 户型不喜欢:三房的厨房和餐厅位置很奇葩 2. 样板间在25楼:湖景一言难尽和有工厂噪声 3. 精装修的交房质量:阳台的推拉门用料很草率 …...

学习笔记068——Hibernate框架介绍以及使用方法

文章目录 一、如何使用二、具体操作1、创建 Maven 工程,pom.xml2、hibernate.cfg.xml3、创建实体类4、创建实体关系映射文件5、实体关系映射文件注册到 Hibernate 的配置文件中。6、使用 Hibernate API 完成数据操作。7、pom.xml 中需要配置 resource 三、Hibernate…...

Maven 安装配置(详细教程)

文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型(POM)的项目管理和自动化构建工具。它主要服务于 Java 平台,但也支持其他编程语言…...

虚幻开发中的MYPROJECTFORPLUG_API

百度网盘-免费云盘丨文件共享软件丨超大容量丨存储安全 在虚幻引擎5(Unreal Engine 5)中,以及许多其他使用C的项目中,__declspec(dllexport) 和 __declspec(dllimport) 是用来处理动态链接库(DLL)的宏定义…...

顺序栈及其实现过程

目录 一、概念 二、顺序栈 2.1顺序栈的结构模型 2.2顺序栈的实现 2.2.1创建 2.2.2判断栈是否为空 2.2.3判断栈是否为空 2.2.4入栈 2.2.5出栈 2.2.6查看栈顶 2.2.7清空栈 2.2.8释放栈 一、概念 栈是限制在某一端进行插入、删除操作的线性表,俗称堆栈&…...

内圆弧转子泵绘制工具开发

接着上期的Gerotor 泵的话题继续。最近有小伙伴找我开发一个内圆弧摆线泵的计算绘制工具,也就是把上次计算绘制的过程做成一个桌面应用工具,这样用起来会更方便、效率更高。那究竟是什么样的工具呢?一起来看看: 前面不是已经有了上…...

linux网络编程 | c | 多进程并发服务器实现

多进程并发服务器 基于该视频完成 11-多进程并发服务器思路分析_哔哩哔哩_bilibili 通过的是非阻塞忙轮询的方式实现的 和阻塞等待的区别就是,阻塞是真的阻塞了,而这个方式是一直在问有没有请求有没有请求 文章目录 多进程并发服务器1.核心思路&…...

Vins_Fusion_gpu中source setup.bash

文章目录 source setup.bashsetup.bashsetup.sh脚本的主要功能脚本的详细解释1. **初始化和检查**2. **检测操作系统**3. **设置环境变量**4. **记住 shell 类型**5. **调用 Python 脚本生成环境变量**6. **加载环境钩子**7. **清理** 总结 _setup_util.py_setup_util.py 的完整…...

怎么理解大模型推理时的Top_P参数?

本篇博客介绍一下大模型推理时的Top_P参数,Top_P与Top_K,Beamsearch,temperature 都是什么关系以及该如何选择Top_P参数。 文章目录 一、什么是Top_P参数?二、工作原理三、top_p和top_k是什么关系?四、Top_P和BeamSea…...

hive+hadoop架构数仓使用问题记录

使用问题记录 问题1:5条数据的表执行count(*)函数,很慢,43s才出结果? 该数仓的分析计算是基于hadoop的mapreduce分布式计算框架运行的,适用于大量/海量数据,少量数据,还是使用单体数据库快。也…...

前端的 Python 入门指南(三):数据类型对比 - 彻底的一切皆对象实现和包装对象异同

《前端的 Python 入门指南》系列文章: (一):常用语法和关键字对比(二):函数的定义、参数、作用域对比(三):数据类型对比 - 彻底的一切皆对象实现和包装对象异…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...