首页 文章 精选 留言 我的

精选列表

搜索[web应用框架],共10000篇文章
优秀的个人博客,低调大师

ChatGPT 将应用户要求停止使用长破折号

OpenAI 首席执行官 Sam Altman 在社交媒体 X 上表示,用户在 ChatGPT 的自定义指令中可以选择不使用长破折号(em dash)。 ChatGPT 的自定义指令允许用户调整 AI 的响应方式,这一功能可以在设置菜单中的个性化选项中找到。 随着 ChatGPT 的流行,长破折号在网络写作中越来越常见,成为 AI 生成文本的显著特征。然而,许多用户发现,想要让 ChatGPT 避免使用长破折号并不容易。一位用户在博客中写道:“我试了各种方法,但就是无法让它停止使用。” 在社交媒体上,著名作者 Chip Huyen 曾表示:“任何能教我如何让 ChatGPT 不再使用长破折号的人,我愿意支付100美元。这让我快要疯了。” 分析显示,ChatGPT 频繁使用长破折号的原因之一是其训练数据中包含大量现代散文,这些散文往往利用长破折号进行节奏、强调和流畅的过渡。Syracuse University 的新闻教授 Aileen Gallagher 指出:“如果 AI 主要依赖于杂志或博客写作,这两种风格都很喜欢使用长破折号。” 此外,长破折号能有效地连接或打断思想,减少额外的结构,从生成令牌的角度来看也非常高效。长破折号的过度使用还在社交媒体上引发了不少笑话和段子。 一些用户认为这种现象并不公平,他们表示:“现在大家都认为我用 ChatGPT 生成文本,这真让人烦。” 一位用户提到:“我在邮件和写作中经常使用长破折号 —— 可能用得并不正确。现在每个人都在假设我将所有内容都输入了 ChatGPT。”

优秀的个人博客,低调大师

跨平台桌面应用开发工具 AtomUI OSS 5.0.1 版本发布

经过两周的紧张开发,我很高兴在这里宣布 AtomUI OSS 5.0.1 版本发布,本次更新给各位开发者朋友带来了新的 Select 控件,优化了主题系统和部分重要的控件。 新特性 新增 Select 控件 实现数据表格列拖动改变列宽 全新的 List 控件实现 优化 优化 MenuFlyout 的数据源绑定生成模板 优化弹出菜单滚动条 优化 Design Token 系统 优化 Tree 控件,需要支持数据源绑定生成节点 RadioButton 新增可以定制 label 内容 Spin 加载器背景新增是否模糊开关 优化AddOnDecoratedBox,大大降低使用难度 Bug 修复 TreeView多级树形结构中复选框父级状态异常 Combobox 点击 arrow icon 无法弹出 popup NavMenu 菜单级别的选中需要单独处理,目前的处理是错误的 默认类型的按钮背景颜色计算有问题 ThemeConfigProvider 修改全局 Token 的时候,组件没有正确计算 Drawer抽屉第二次点击弹出有问题 Multi-level drawer AtomLayer问题,layer无法监控target控件的(包含嵌套的)父控件的(IsVisible的Changed或者是Bounds的Changed) Pagination组件CurrentPage属性在页面导航时显示错误值 API 变更说明 为了保持命名跟 Ant Design 一致,我们进行了以下控件的重命名 ListBox -> List EmptyIndicator -> Empty LoadIndicator -> Spin 因为 API 变化给大家带来的不便,还请各位开发者朋友多多包涵。 AtomUI OSS 发展离不开开发者朋友的支持和帮助,如果您在使用过程中,发现任何问题欢迎在我们的开发者群和 Gitee 或者 Github 上给我们留下宝贵的意见,谢谢! 北京秦派软件科技有限公司 (Qinware TechnologiesCo., Ltd.)是一家致力于开发生产力工具软件的技术公司,成立之初立志要在工具软件领域深耕,践行精益求精的研发精神,努力推出优质的生产力工具软件服务国内外的开发者,提升开发者的工作效率,同时创造出商业价值和社会价值。

优秀的个人博客,低调大师

Socket.D 网络应用层协议,v2.5.20 发布

有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http” 主要特性 基于事件,每个消息都可事件路由 所谓语义,通过元信息进行语义描述 流关联性,来回相关的消息会串成一个流 语言无关,使用二进制输传数据(支持 tcp, ws, udp)。支持多语言、多平台 断线重连,自动连接恢复 多路复用,一个连接便可允许多个请求和响应消息同时运行 双向通讯,单链接双向互听互发 自动分片,数据超出 16Mb(大小可配置),会自动分片、自动重组(udp 除外) 接口简单,是响应式但用回调接口 与其它协议的简单对比 对比项目 socket.d http websocket rsocket socket.io 发消息(Qos0) 有 无 有 有 有 发送并请求(Qos1) 有 有 无 有 无 发送并订阅 有 无 无 有 无 答复或响应 有 有 无 有 无 单连接双向通讯 有 无 有(不便) 有 有(不便) 数据分片 有 / 无 有 有 断线自动重连 有 / 无 有 有 有元信息 有 有 无 有 无 有事件(或路径) 有 有 无 无 有 有流(或消息关联性) 有 无 无 有 无 Broker 模式集群 有 无 无 有 无 异步 异步 同步 异步 异步 异步 接口体验 经典 经典 经典 响应式(复杂) 经典 基础传输协议 tcp, udp, ws tcp http tcp, udp, ws ws 本次 java 适配更新: 添加 ssl 双向认证支持 添加 Config:isSslNeedClientAuth,isSslWantClientAuth 配置 本次 javascript 适配更新: 添加 ssl 双向认证支持(只适合 node.js) 添加 Config:getSslContext(), sslContext() 方法 代码仓库 https://gitee.com/noear/socketd https://github.com/noear/socketd 官网 https://socketd.noear.org

优秀的个人博客,低调大师

HarmonyOS 5.0应用开发——V2装饰器@once的使用

【高心星出品】 V2装饰器@once的使用 概念 在鸿蒙ArkTS开发中,@Once装饰器用于实现子组件仅接受父组件传递的初始值,后续父组件数据变化不再同步至子组件。以下是其核心要点: 一、核心作用与规则 初始化同步一次 @Once与@Param结合使用,子组件仅在初始化时接收父组件传递的值,后续父组件数据更新时不会触发同步。 强制依赖关系 @Once必须与@Param搭配使用,单独使用或与其他装饰器(如@Local)结合会编译失败。 装饰顺序不影响功能,@Param @Once或@Once @Param均有效。 本地修改支持 结合@Once后,子组件可以修改@Param变量值并触发UI刷新,此时行为类似@Local,但仍保留初始值传递能力。 二、适用场景 固定初始值:父组件传递配置参数(如主题色、默认尺寸),子组件仅需初始化时使用。 独立维护状态:子组件基于父组件初始值构建自身状态后,不再依赖外部更新。 案例 父组件(oncepage): 点击按钮时,@Local修饰的count自增,并通过child3({ count: this.count })传递最新值给子组件。但子组件仅在首次渲染时接收初始值(如10),后续父组件的count变化不会更新子组件。 子组件(child3): 点击按钮时,子组件内部count自增并更新UI,但父组件的count始终保持独立状态(例如父组件count为15时,子组件可能显示为12)。 @ComponentV2 struct child3 { // 强制父组件传参 并且只会初始化一次 @Require @Once @Param count:number build() { Column() { Button('child count: ' + this.count) .width('60%') .onClick(() => { //@once装饰的变量 这里可以更新count值 this.count+=1 }) } .width('100%') .padding(20) } } @Entry @ComponentV2 struct oncepage { @Local count: number = 10; build() { Column({ space: 20 }) { Button('page count: ' + this.count) .width('60%') .onClick(() => { this.count += 1 }) // child count与 父组件count单向绑定 child3({ count: this.count }) } .height('100%') .width('100%') } } 父子组件同步的数据为数组的时候,使用@once和@param修改数组中元素不会造成单向同步而是会形成双向同步效果,例如下面案例,父子组件数据会同时改变。 @ComponentV2 struct child4 { // 强制父组件传参 并且只会初始化一次 @Require @Once @Param arr:number[] build() { Column() { Button('child count: ' + this.arr[0]) .width('60%') .onClick(() => { //@once装饰的变量 这里可以更新count值 this.arr[0]+=1 }) } .width('100%') .padding(20) } } @Entry @ComponentV2 struct oncepage1 { @Local arr: number[] = [1,2,3]; build() { Column({ space: 20 }) { Button('page count: ' + this.arr[0]) .width('60%') .onClick(() => { this.arr[0] += 1 }) // child count与 父组件count单向绑定 child4({ arr: this.arr }) // 使用深度拷贝 就会造成隔离不会双向同步 // child4({arr:[...this.arr]}) } .height('100%') .width('100%') } } | 装饰器组合 | 同步方式 | 内存关系 | 适用场景 | | ----------------- | -------------- | --------- | ---------------------------------- | | @Param | 双向同步 | 共享引用 | 需要实时联动的组件(如协同编辑器) | | @Once @Param | 单次初始化同步 | 共享引用* | 基于初始值的独立运作组件 | | @Param + 深拷贝 | 完全隔离 | 独立内存 | 需要数据隔离的安全场景 |

优秀的个人博客,低调大师

HarmonyOS 5.0应用开发——V2装饰器@param的使用

【高心星出品】 V2装饰器@param的使用 概念 在鸿蒙ArkTS开发中,@Param装饰器是组件间状态管理的重要工具,主要用于父子组件间的单向数据传递,这一点与V1中的@prop类似。 @Param装饰的变量支持本地初始化,但不允许在组件内部直接修改。 被@Param装饰的变量能够在初始化自定义组件时从外部传入,当数据源也是状态变量时,数据源的修改会同步给@Param。 @Param可以接受任意类型的数据源,包括普通变量、状态变量、常量、函数返回值等。 @Param装饰的变量变化时,会刷新该变量关联的组件。 @Param支持对基本类型(如number、boolean、string、Object、class)、内嵌类型(如Array、Set、Map、Date),以及null、undefined和联合类型进行观测。 对于复杂类型如类对象,@Param会接受数据源的引用。在组件内可以修改类对象中的属性,该修改会同步到数据源。 @Param的观测能力仅限于被装饰的变量本身。详见观察变化。 使用方法 数据流向 单向同步(父组件 → 子组件),仅支持父组件数据源变化触发子组件更新。 适用条件 1 仅限@ComponentV2装饰的组件(API version 12+)。 子组件禁止直接修改@Param装饰的变量(需通过@Once或事件触发父组件修改)。 支持类型 基本类型(number/boolean/string等)、对象、数组、Date/Map/Set等内嵌类型,以及null/undefined和联合类型。 @Param变量装饰器 说明 装饰器参数 无。 能否本地修改 否。若需要修改值,可使用@Param搭配@Once修改子组件的本地值。或通过@Event装饰器,修改@Param数据源的值。 同步类型 由父到子单向同步。 允许装饰的变量类型 Object、class、string、number、boolean、enum等基本类型以及Array、Date、Map、Set等内嵌类型。支持null、undefined以及联合类型。 被装饰变量的初始值 允许本地初始化,若不在本地初始化,则需要和@Require装饰器一起使用,要求必须从外部传入初始化。 传递规则 说明 从父组件初始化 @Param装饰的变量允许本地初始化,若无本地初始化则必须从外部传入初始化。当同时存在本地初始值与外部传入值时,优先使用外部传入值进行初始化。 初始化子组件 @Param装饰的变量可以初始化子组件中@Param装饰的变量。 同步 @Param可以和父组件传入的状态变量数据源(即@Local或@Param装饰的变量)进行同步,当数据源发生变化时,会将修改同步给子组件的@Param。 案例 子组件中有一个按钮展示@param装饰的count,但是不能更新本地的count,父组件中有一个按钮展示@local装饰的count,并且与子组件的count绑定,形成单向通信效果。点击父组件按钮会更新父子两者的组件显示数据。@require配合@param会强制要求父组件初始化子组件数据。 @ComponentV2 struct child { // 强制父组件传参 @Require @Param count:number // 父组件可以传参也可以不传参 // @Param count: number = 10 build() { Column() { Button('child count: ' + this.count) .width('60%') .onClick(() => { // 这里会报错,因为@param装饰的数据不能自己更新,需要让父组件更新 同步进来 // this.count+=1 }) } .width('100%') .padding(20) } } @Entry @ComponentV2 struct Parampage { @Local count: number = 10; build() { Column({ space: 20 }) { Button('page count: ' + this.count) .width('60%') .onClick(() => { this.count += 1 }) // child count与 父组件count单向绑定 child({ count: this.count }) } .height('100%') .width('100%') } } 同步数据为数组的时候,子组件中可以修改数组元素,不能初始化整个数组,这里的修改会形成双向同步关系,下面案例里面点击两个按钮数据会同时变化。 @ComponentV2 struct child2 { @Require @Param arr:number[] build() { Column() { Button('child count: ' + this.arr[0]) .width('60%') .onClick(() => { // 不可以修改整个数组,但是可以修改数组元素 形成双向同步 this.arr[0]+=1 }) } .width('100%') .padding(20) } } @Entry @ComponentV2 struct Parampage1 { @Local arr:number[]=[1,2,3] build() { Column({ space: 20 }) { Button('page count: ' + this.arr[0]) .width('60%') .onClick(() => { this.arr[0]+=1 }) // child arr与 父组件arr单向绑定 child2({arr:this.arr }) } .height('100%') .width('100%') } } 如果单向同步的数据是复杂的结构info类,在子组件中@param装饰的数据可以进行修改其属性并且会同步给父组件形成局部双向通信, 在下面案例中点击子组件按钮的时候in的count值已经发生了修改,父组件中的count也会修改,只不过@param和@local没有观察到,当先点击子组件按钮再点击父组件按钮的时候就会观察到两者显示10--12--14 . class info{ count:number constructor(count:number) { this.count=count } } @ComponentV2 struct child2 { @Require @Param in:info=new info(10) build() { Column() { Button('child count: ' + this.in.count) .width('60%') .onClick(() => { // param不允许本地修改 // this.in=new info(11) // 允许修改对象的属性 并且会同步到父组件 形成有限制的双向同步 this.in.count+=1 }) } .width('100%') .padding(20) } } @Entry @ComponentV2 struct Parampage1 { @Local in:info=new info(10) build() { Column({ space: 20 }) { Button('page count: ' + this.in.count) .width('60%') .onClick(() => { this.in=new info(this.in.count+1) }) // child count与 父组件count单向绑定 child2({ in: this.in }) } .height('100%') .width('100%') } }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册