首页 文章 精选 留言 我的

精选列表

搜索[1 X 认证],共10000篇文章
优秀的个人博客,低调大师

OpenSSL 3.2 Alpha 1 发布

OpenSSL 3.2 首个 Alpha 已发布。 此版本增加了许多新功能,值得关注的变化包括: 支持客户端 QUIC,包括对多流 (multiple streams) 的支持 (RFC 9000) 支持在 TLS 中进行证书压缩 (RFC 8879),包括对 zlib、zstd 和 Brotli 的支持 Deterministic ECDSA (RFC 6979) 除了对 Ed25519 的现有支持之外,还支持 Ed25519ctx、Ed25519ph、Ed448 和 Ed448ph (RFC 8032) AES-GCM-SIV (RFC 8452) Argon2 (RFC 9106) 和支持线程池功能 HPKE (RFC 9180) 在 TLS 中使用原始公钥的能力 (RFC 7250) 支持 TCP Fast Open (RFC 7413),前提是操作系统也支持 支持 TLS 中基于 provider 的可插拔签名方案,使第三方 post-quantum 算法 provider 能够将这些算法与 TLS 结合使用 支持 TLS 1.3 中的 Brainpool 曲线 SM4-XTSSM4-XTS 支持使用 Windows 系统证书存储作为可信根证书的来源。默认情况下尚未启用此功能,必须使用环境变量激活。该特性可能会在未来的功能版本中默认启用。 详情查看发布公告。

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

PHP 8.3 RC1

PHP 8.3 发布了首个 RC。按照发布计划,RC 阶段会有 6 个版本更新,然后在 11 月 23 日发布最终正式 GA。 PHP 8.3 引入了许多新特性,同时也弃用了不少功能,以及其他变更。 8.3 主要新特性 类型化的类常量 (Typed Class Constants) 支持获取动态的类常量 (dynamic class constant) 和枚举成员 (Enum member) 新增json_validate()函数,用于验证 JSON 添加 Random 扩展 添加mb_str_pad() 添加#[\Override]属性 新增更多 PHP Sockets 选项 增加对 cURL 7.87 及以下版本的新 cURL 选项和常量的支持 支持匿名只读类 (anonymous read-only classes) 支持在数组中使用负数索引 (negative indices) 点此查看 PHP 8.3 具体变化。

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

Xcode 14.1 Beta 1 发布

Xcode 14.1 发布了首个 Beta 版本。 Xcode 14.1 Beta 包括适用于 iOS 16、iPadOS 16、tvOS 16、watchOS 9 和 macOS Ventura 13 的 Swift 5.7 和 SDK。Xcode 14 版本支持在 iOS 11、tvOS 11、watchOS 4 及更高版本上联机调试 (On-Device Debugging),运行环境要求 macOS Monterey 12.5 或更高版本。 苹果向开发者表示,如果需要利用最新 SDK 中的改进功能,务必使用 Xcode14.1 Beta 版进行构建和测试。同时,全新 ActivityKit 框架已在 iOS16.1 Beta 版和 Xcode14.1 Beta 版中推出,开发者可通过这一框架为App 构建实时活动。据介绍,通过实时更新,实时活动能帮助用户跟踪 App 内容。App 的实时活动会显示在锁定屏幕和灵动岛中。 “灵动岛” (Dynamic Island) 是苹果针对新款 iPhone 推出的一项全新交互 UI。 详情查看 Release Note。

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

Go 1.19 Beta 1 发布

Go 1.19 预计将于 2022 年 8 月发布,目前 Go 1.19 的 beta 版本发布了,下面介绍一下 GO 1.19 版本的主要变更: 语言的变化 语言只有一个很小的变化,对方法声明中类型参数的范围进行了很小的修正。现有程序不受影响。 记忆模型 Go 内存模型已经过修改,以使 Go 与 C、C++、Java、JavaScript、Rust 和 Swift 使用的内存模型保持一致 。 端口 Go 1.19 支持 Linux 上的龙芯 64 位架构 LoongArch 。(GOOS=linux, GOARCH=loong64). 工具 文档评论 Go 1.19 在文档注释中添加了对链接、列表和更清晰的标题的支持。作为此更改的一部分,gofmt 现在可用于重新格式化文档注释,以使其呈现的含义更清晰。 新的unix构建约束 现在可以在 //go:build 行中识别构建约束 unix。 如果目标操作系统(也称为 GOOS)是 Unix 或类 Unix 系统,则满足约束。 运行 运行时现在包括对软内存限制的支持。此内存限制包括 Go 堆和运行时管理的所有其他内存,不包括外部内存源,例如二进制文件本身的映射、以其他语言管理的内存以及操作系统代表 Go 程序持有的内存。 编译器 编译器现在使用跳转表来实现大整数和字符串 switch 语句。switch 语句的性能改进各不相同,可以快 20% 左右。 riscv64 端口现在支持使用寄存器传递函数参数和结果,基准测试显示有 10% 或更多的性能改进。 Go 编译器现在需要该 -p=importpath 标志来构建可链接的目标文件。 汇编器 与编译器一样,汇编器现在需要该 -p=importpath标志来构建可链接的目标文件。 链接器 在 ELF 平台上,链接器现在以标准 gABI 格式而不是传统的 .zdebug 格 发出压缩的 DWARF 部分。 其他内容可以在 go1.19 文档中查看,其中一部分更改还未实现,或许在正式版本有所删减。

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

MASA Framework - DDD设计(1)

DDD 领域驱动设计是一个有关软件开发的方法论,它提出基于领域开发的开发模式,基于DDD理论,我们可以设计出高质量的软件模型。 它围绕业务概念构建领域模型来控制业务的复杂度,解决软件难以理解和演化的问题。 微服务 微服务是一种架构风格,通过进程间通讯、容错和故障隔离等方式,实现去中心化的服务治理。 DDD与微服务 它们都是高内聚、低耦合,从业务视角分离复杂度,提高响应能力。 高内聚:把相关的业务聚集在一起 低耦合:把关联性较低的拆分为独立的服务 使用DDD搭建微服务我们将获得以下优势: 设计清晰,规范 基于领域模型,有利于领域知识的传递和传承 帮助团队建立良好的沟通 协助系统架构的演进 提高团队的设计能力(面向对象,架构) 设计 领域设计涉及技术与业务,如何让它们协作起来呢? 战略设计(业务) 领域、子域、限界上下文 将领域拆分成子域,并划分核心子域、支撑子域和通用子域 以子域展开事件风暴,根据上下文语义划分限界上下文,建立通用语言,完成领域建模 领域建模将作为能力中心规划的重要依据 完成能力中心地图和优先级后,作为微服务设计的输入完成战术设计 战术设计(技术) 聚合、聚合根、实体、值对象、领域服务等 按照领域模型完成微服务设计和落地 建立聚合、聚合根、实体、值对象、领域服务等对象之间的依赖关系,以代码对象的形式映射到服务中,采用分层架构完成微服务设计和落地 分层架构可以采用Clean Architecture DDD实践过程 我们将通过DDD + Clean Architecture完成业务与技术的完整落地 统一语言(战略设计) 统一: 领域模型术语 DDD模式名称 技术: 技术设计术语 技术术语 技术设计模式 业务: 领域模型术语 DDD模式名称 业务术语 设计无关的业务术语 事件风暴(战略设计) Event Storming是一种领域建模的实践,可以让领域相关人员快速理解业务模型 完整流程包括如统一语言、提出领域事件、规则、命令、读模型、角色、划分子域、票选、补充商机与价值等, 接下来我们先精简一点步骤 活动准备 人:业务人员,领域专家,技术人员,架构师,测试等 看板:可以将事件流可视化的白板或者画图工具等 彩色贴纸:填写事件,命令等 业务场景 规定业务场景,下面我以一个电商项目为例 事件风暴结果 命令风暴结果 寻找聚合 聚合:一组相关领域模型的集合,尽量保证封装业务的不变性,确保关联关系紧密的领域模型内聚 按事件顺序依次分析三个问题 事件改变的领域模型是什么 领域模型是否可以独立访问,是就是聚合 不能独立访问,需要通过哪个领域模型(聚合)来访问,将其放到对应聚合内 命令贴在聚合左边代表输入,事件贴到聚合右边代表输出 检验是否符合聚合规则,不匹配的重新调整聚合 聚合结果 寻找聚合过程中可能会因为业务衔接产生新的输入命令,以虚线表示 划分限界上下文 限界上下文:某个场景或环境下的业务边界 基于聚合和领域模型,判断它们要解决的业务问题,如果是同一个问题则放到一个限界上下文中,否则就拆分 如果一个聚合同时解决多个问题,则需要对聚合进行拆分,将拆分后的聚合划分到不同的限界上下文 解决的业务问题大小(变化原因,内在逻辑等)需与领域专家共同完成 限界上下文结果 界限上下文映射 当上下文很多的时候,不同的团队负责不同的上下文,为了保证有效的工作可以定义不同的上下文之间的关系来创建一个所有模型上下文的全局视图。两个上下文之间是有方向的,上游(U或Upstream),下游(D或Downstream) 界限上下文映射结果 子域 一个业务领域或子域是一个业务范围。一个业务领域或子域可以包括多个业务能力,一个业务能力对应一个服务。 核心子域指业务成功的主要促成因素,是企业的核心竞争力。 通用子域被整个业务系统使用。 支撑子域是完成业务的必要能力,但不是成功的因素。 除了上面限界上下文结果中标注的子域外,还可以扩展出财务,市场,采购等子域 领域对象关系(战术设计) 分解聚合,提取该聚合包含的领域对象 领域对象的业务不变性 领域对象具有一致的生命周期 定义实体与值对象(战术设计) 实体:存在唯一性标识,实体间是否相等的判断依据也是唯一标识 值对象:表示属性的不变值 以订单聚合为例: 订单聚合包含订单实体,订单行实体 订单实体包含收货地址值对象 架构设计 我们简单的把架构设计看作是三个层面: 业务架构:根据业务需求设计业务模块及其关系 DDD的领域建模其实就已经协助我们做了业务架构和系统架构 系统架构:设计系统与子系统的模块及其关系 在DDD中业务架构是可以直接映射到系统架构上的 业务变化会演变为系统架构变化,影响到技术架构变化 技术架构:设计技术和框架细节 技术架构(微服务)则解决子系统之间的解耦,去中心化的服务治理和数据治理 Clean Architecture 寻找聚合时我们提到过输入和输出。而Clean Architecture与DDD集合后就非常适合作为采用DDD方法论的架构落地指导 为了更好的落地读模型设计(查询业务比较往往占八成以上),搭配CQRS可能是个不错的选择。 CQRS优势在于职责分离,提高系统性能、可扩展性、安全性等。也可以从数据驱动转为事件驱动。 要了解CQRS可以看第二篇 MASA Framework - EventBus设计 示例可以参考MASA EShop源码:https://github.com/masalabs/MASA.EShop 除了DDD以外,我们还提供了EventBus、Dapr、CQRS等多种实现方式 老系统演进 绞杀者模式 在现有系统外围将新功能用新的方式构建为新的服务的策略,通过将新功能做成微服务方式,而不是直接修改原有系统,逐步的实现对老系统替换。采用这种策略,随着时间的推移,新的服务就会逐渐“绞杀”老的系统。对于那些规模很大而又难以对现有架构进行修改的遗留系统,推荐采用绞杀者模式。 缺点:可能需要一段时间同时维护两个或以上的项目 修缮模式 修缮者模式就如修房或修路一样,将老旧待修缮的部分进行隔离,用新的方式对其进行单独修复。修复的同时,需保证与其他部分仍能协同功能。从这种思路出发,修缮者模式更多表现为一种重构技术。 DDD实践流程 总结 DDD虽然需要一定的学习成本,但掌握后既可以设计复杂的工程,也可以适当的缩减流程,在小型项目中直接以领域和聚合快速抽象领域模型,配合自己习惯的技术手段(如论是DB First还是Code First)来加强对系统设计的掌控力。 第一篇主要讲解DDD在团队中如何落地,而第二篇则是站在开发的角度如何落地。 学以致用,学无止境。 参考: AWS领域驱动设计最佳实践 领域驱动设计在互联网业务开发中的实践:https://tech.meituan.com/2017/12/22/ddd-in-practice.html 开源地址 MASA.BuildingBlocks:https://github.com/masastack/MASA.BuildingBlocks MASA.Contrib:https://github.com/masastack/MASA.Contrib MASA.Utils:https://github.com/masastack/MASA.Utils MASA.EShop:https://github.com/masalabs/MASA.EShop MASA.Blazor:https://github.com/BlazorComponent/MASA.Blazor 如果你对我们的 MASA Framework 感兴趣,无论是代码贡献、使用、提 Issue,欢迎联系我们

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

Django 4.0 alpha 1 发布

Django 4.0 发布了首个 alpha 版本,标志着已进入功能冻结阶段。开发团队称计划在未来一个月内发布 beta 测试版,然后在测试版发布一个月后推出 RC 候选版。 下载地址:https://www.djangoproject.com/download/ Django 4.0 主要变化 使用zoneinfo作为默认时区实现 Python 标准库zoneinfo现在是 Django 的默认时区实现。其中对pytz的支持已弃用,并将在 Django 5.0 中删除。 根据开发团队的介绍,转向zoneinfo后,当前时区的选择、将日期时间实例转换为表单和模板中的当前时区以及对 UTC 中的aware datetimes的操作不受影响。 函数式的唯一约束 UniqueConstraint()的新*expressionspositional 参数可以在表达式和数据库函数上创建函数式唯一约束。例如: from django.db import models from django.db.models import UniqueConstraint from django.db.models.functions import Lower class MyModel(models.Model): first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) class Meta: indexes = [ UniqueConstraint( Lower('first_name'), Lower('last_name').desc(), name='first_last_name_unique', ), ] 增加scrypt密码哈希器 新的scrypt密码哈希器比 PBKDF2 更安全,建议使用。但它不是默认选项,因为它需要 OpenSSL 1.1 以上版本和更多的内存。 Redis 缓存后端 新的django.core.cache.backends.redis.RedisCache缓存后端为使用 Redis 缓存提供了内置支持。此功能需要 redis-py3.0.0 或更高版本。有关更多详细信息,请查看有关在 Django 中使用 Redis 进行缓存的文档。 基于模板的表单渲染 为了提高定制Forms、Formsets和ErrorList,开发者现在正在使用的模板引擎进行渲染。 详细更新说明查看 release notes。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册