首页 文章 精选 留言 我的

精选列表

搜索[财政票据应用],共10000篇文章
优秀的个人博客,低调大师

KiCad 6.0.0 发布,开源 CAD 应用

KiCad 已经发展了 30 年,近日 KiCad 正式推出 6.0.0 版本,这是自 2018 年 7 月发布 5.0.0 版本以来 KiCad 的第一个重要版本发布。 该版本有数以百计的新功能和改进,也有数以百计的错误被修复。下面是新版本的一些亮点: 现代、一致的外观 KiCad 6.0 的用户界面焕然一新,旨在降低新用户的入门门槛,减少在 KiCad 和其他设计软件之间切换时的摩擦。整个 KiCad 的视觉设计语言、快捷键、对话框布局和编辑工作流程已经统一,因此在 Schematic 编辑器和 PCB 编辑器之间切换时不再感觉是在使用两种不同的工具。 升级后的原理图编辑 KiCad 的原理图编辑器在 6.0 版本中进行了有史以来最大的改革。它现在使用与 PCB 编辑器相同的对象选择和操作范式,并获得了几十个新的功能来增强设计能力。 KiCad 6.0 还具有全新的原理图和符号库文件格式,该格式是基于 KiCad 板和 footprint 文件的格式。这种新的格式实现了长期以来所期望的功能,如将原理图中使用的符号直接嵌入原理图文件中,这样就不再需要缓存库了。 改进的 PCB 设计体验 KiCad 的 PCB 编辑器进行了全面的外观升级,具有许多新的选项来帮助你浏览复杂的设计。 通过 KiCad 更新的 3D 查看器,以更多的方式可视化你的电路板,其特点是光线追踪照明控制,突出显示在 PCB 编辑器中选择的对象,以及更容易访问经常使用的控件。 新的自定义设计规则系统允许定义复杂的设计规则,包括特定区域的规则、特定层的规则以及高级设计所需的其他约束。 由于 KiCad 5 和 KiCad 6 之间有成千上万的变化,因此更多详情可查看:https://www.kicad.org/blog/2021/12/KiCad-6.0.0-Release/

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

消息队列的应用场景

比如,微博中肯定是发微博的用户比看微博的人要少很多很多。这个时候,对于系统而言,整体流量就会不太大,而写流量很可能只占到总体的 1% 。这样的话,即使我们系统 QPS 达到了 10000次/s ,那写请求每秒也只有100 次,所以花大的精力去优化写请求是没有必要的,对于业务并没有什么影响。 但是,如果是对于突如其来的超大流量,可能就会出现高并发的写请求的场景,例如最经典的秒杀场景。如果我们的商城在双十二零点要搞一个秒杀活动,限制前 200 个用户,那么在秒杀活动即将开始之前,就会有很多的用户疯狂的去刷新APP或者浏览器,为了就是不错过这次秒杀。 在这个时候,我们系统面临着的依旧是大量的读请求,那我们应该怎么去应对呢? 因为这个秒杀场景中,用户查询的是少量的商品,属于查询热点数据,我们就可以采用缓存策略啊,将用户请求放在服务之外,或者是将静态资源放CDN等等,这些方案之前都教给大家了,自行查看哈,比如(分布式缓存的高可用方案,我们都是这么做的,CDN加速技术,开发人员也必须要搞清楚) 当秒杀活动在零点准时开始之后 ,就会有大量的用户瞬时向我们商城系统提交订单,扣减库存,这个时候用户的这一操作是不经过缓存的,而是直接落到数据库中的。1 秒内,会有 1 万个数据库连接产生,这个时候数据库就会很快崩溃,那我们该怎么办呢?一般这里我们会使用一个组件那就是消息队列。 消息队列是什么 消息队列的概念以及有什么作用,前面有讲到相关中间件的时候提到过(消息中间件能干什么?RabbitMQ、Kafka、RocketMQ正确选型姿势)。其实它就是一个暂时存放数据的容器,同时是一个平衡高速系统和低速系统处理任务时间差的工具,在系统设计中也是个比较常见的组件,比如,Java线程池会使用一个队列来存提交的任务,RPC 框架中,会将请求写到队列里,通过工作线程去处理。 那我们如何使用消息队列来解决现在的秒杀场景带来的问题呢?下面我们就一起来看看该怎么使用。 秒杀削峰写流量 看过我前面的文章的朋友可能会问,为什么不像以前那样的进行分库分表呢?当然是可以的,但是你应该知道不管是分库分表还是扩展数据库,势必会增加复杂性的,还要做数据迁移,虽然你通过前面的学习能具备解决这些数据复杂性的问题。 但是,这样的秒杀场景,高并发的写请求并不是持续的,也不是每天都有的,可能只有活动的几秒或者几十秒就结束了,就没那么大的并发写请求了。如果我们为了这几十秒的并发写请求折腾好几天来搞数据,不现实,没那么多时间也没那么多资源给我们去折腾。 所以,我们就可以将秒杀请求暂时存在消息队列中,然后我们的业务服务器高速用户“秒杀进行中”等,等释放系统资源后再去处理其他用户请求。 我们在后台可以开启 n 个队列处理程序,不断的消费消息队列中的任务,然后校验库存接着下单等操作,现在由于我们是有限的队列处理线程在执行,所以最终落到数据库上的并发请求也是有限的。用户请求是可以在消息队列中短暂堆积的,当库存为零了,消息队列堆积的请求也就可以全部释放了。 7f0c974ba0d0fa9e2e2177dfb991f44f.png 如上所述,就是消息队列在秒杀系统中最关键的运用:削峰填谷,即用来削平短暂的流量峰值。 注意,我们秒杀过程中不能长时间的不给用户响应,只能短暂的延迟通知结果,你想想看,如果你正在秒杀我们一个商品的时候,我个把小时都不告诉你,你还在傻傻等着结果,你心里肯定在怀疑我们秒杀的真实性,是不是套路了你。因此,我们在使用消息队列应对流量高峰时,需要对队列的处理时间,前段写入流量的大小以及数据库处理能力都要做好评估,最后根据不同量级来决定该部署多少台处理程序。 例如,我们现在有 1000 个商品参与秒杀,单次购买请求的时间大概在 500ms ,那么秒杀总共时间就是 500s ,此时,如果我们部署 10 台队列处理程序,则秒杀的处理请求时间也就在 50s ,也就是说,用户需要等待 50s 才可以看到此次的秒杀结果,对于常理来说,这个时间用户是完全可以接受的。而数据库端也只有 10 个并发打过去,也是没有压力的。 异步化简化秒杀业务 通过上面的学习我们知道了消息队列能够在大流量的写请求时,起到削峰填谷的作用。其实,我们还可以使用异步化机制来简化我们的秒杀请求业务流程,以提升我们整个系统性能。 如上我们秒杀场景下,在处理一个购买请求时,需要耗时 500ms ,其实,我们整个流程中是有主次之分的,也就是说有些次要的流程可以不和当前购买主流程同步在一起的。比如,我们当前购买主流程是创建订单和扣减库存,而非关键流程是下单成功之后的发放优惠券和增加用户积分等操作。 假如,发放优惠券耗时 50ms,增加用户积分耗时 50ms,现在如果我们将这两个操作放在另一个队列处理机中去执行,那么整个购买流程是不是就缩短到了 400ms了,性能提升了 20% 。 3c8223fbd435dd1492b20f58e1a1d32d.png 解耦实现秒杀系统模块间松耦合 消息队列除了上面表现出的削峰填谷和异步机制,同时,它在秒杀中还有另外一个作用那就是解耦。 假如,现在咱们公司的大数据团队对我们一个需求就是,他们想在我们在秒杀活动之后做相关数据统计,用来分析活动商品的受欢迎度、购买用户的行为特点以及对于秒杀互动的满意程度等相关指标。这个时候,我们就需要将大量的数据发送给大数据团队,该怎么做呢? 我们最容易想到的方案就是,使用 HTTP 或者 RPC 的方式来同步调用,即大数据团队提供一个接口给我们,然后我们将需要的数据推过去,但是,这样做会有两个问题: 整个系统耦合较高,如果他们的接口出问题就会直接影响到了我们秒杀系统的可用性。 如果大数据团队接口相关参数要变更的话,我们这边也得跟着变更。 这个时候,我们就可以使用消息队列来对其进行解耦。 秒杀系统产生一条购买数据之后,我们先将全部数据发送到消息队列中。 然后大数据团队自己订阅消息队列的topic。 最后他们自己做数据处理方面工作。 如此一来,大数据系统的故障就不会影响到我们秒杀系统了,同时,当他们需要更新相关字段的话,只需要解析消息队列中的数据,拿到自己需要的数据就行了。 776cdab5995413259647dc5b22de865f.png 削峰填谷、异步处理以及解耦是消息队列在秒杀系统设计中起到至关重要的作用。 削峰填谷可以削掉到达秒杀系统的峰值流量,让业务逻辑处理更加缓和自然; 异步处理可以简化整个业务流程的步骤从而提升系统性能; 解耦合可以将秒杀系统和大数据系统解耦开,这样彼此间的任何变更都不会影响到对方。 总结,今天我们结合秒杀的这种实际场景,一起学习到了消息队列在高并发系统设计中起到的作用。主要讲到这三大点: 削峰填谷是消息队列最主要的作用,但是会造成请求处理的延迟。 异步处理是提升系统性能的神器,但是你需要分清同步流程和异步流程的边界,同时消息存在着丢失的风险,我们需要考虑如何确保消息一定到达。 解耦合可以提升你的整体系统的鲁棒性。 当然,你要知道,在使用消息队列之后虽然可以解决现有的问题,但是系统的复杂度也会上升。比如上面提到的业务流程中,同步流程和异步流程的边界在哪里?消息是否会丢失,是否会重复?请求的延迟如何能够减少?消息接收的顺序是否会影响到业务流程的正常执行?如果消息处理流程失败了之后是否需要补发?这些问题都是我们需要考虑的。

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

HarmonyOS应用开发常见示例源码

Http封装库:https://gitee.com/weimin20171202/HiHttp Json库:https://gitee.com/weimin20171202/hijson 常见组件使用的示例:https://gitee.com/weimin20171202/HarmonyComponent 简单天气app:https://gitee.com/weimin20171202/WeatherApp 一个简单的图片选择:https://gitee.com/weimin20171202/PictureSelect 简单画板:https://gitee.com/weimin20171202/DrawBoard 简单的页面跳转:https://gitee.com/weimin20171202/page-jump http请求和html文本处理:https://gitee.com/weimin20171202/jsoup 在线电子词典:https://gitee.com/weimin20171202/HiEdict (存在问题已经解决: java.io.IOException:cleartext Http traffic to www.iciba.com not permitted 在config.json中增加: "deviceConfig": { "default": { "network": { "usesCleartext":true } } }, https://developer.huawei.com/consumer/cn/forum/topic/0204422289062850612?fid=0101303901040230869)

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

beego 1.12.1 发布,Go 应用框架

作者:邓明 frombeego-dev 不久前,我们发文说 Beego 重新组建了一个团队,再次开始维护了。 经过这一段时间的努力,我们终于完成了重启之后的第一个版本。这个版本,我们集中精力修复了很多陈年 issue,同时也尝试支持了一下promethues。欢迎大家使用。Release Note Prometheus 支持 一个没有观测性支持的框架是没有灵魂的。这一个版本,我们走出了解决metric问题的第一步,使用Prometheus开发了一个 WebMiddleware,用户可以在开启了admin服务之后尝个鲜了。 例子 Prepare Statement 缓存优化 在 v1.12.0 的时候,我们引入了Prepare Statement的缓存机制。Beego 内部所有的查询都会通过Prepare Statement来执行,以提高安全性和性能。 但是在缓存Prepare Statement的时候,存在两个问题: 未能设置缓存的Prepare Statement的数量限制,用户使用不当的时候,会导致 "Can't create more than max_prepared_stmt_count statements" 的错误; 任何一个Prepare Statement被创建出来以后,我们并没有主动关闭,而是依赖于会话结束之后自然释放; 这一次,我们也改进了这些缺点: 我们采用了 LRU 来缓存Prepare Statement,当一个Prepare Statement被 LRU 淘汰的时候,我们主动关闭Prepare Statement; 为了解决Prepare Statement被 LRU 淘汰之后,还存在用户使用继续使用该Prepare Statement的问题,我们引入了计数功能,会等到所有用户都释放了Prepare Statement之后再关闭。 这个优化应该算是走在了 ORM 框架的前列。我们看过一些开源框架的代码,它们要么没有缓存Prepare Statement,要么如优化之前那样,没有主动关闭;要么则是将关闭的决策交给了用户,依赖于用户主动找到未被使用的Prepare Statement而后自己关闭,而用户其实也很难判断出来Prepare Statement有没有被别的用户使用。 静态缓存文件优化 社区里面一直反馈的一个问题是,Beego 缓存的静态文件的功能,会消耗大量的内存,而 Beego 并没有限制内存的使用。 这个功能比较常用的是将 Beego 作为下载服务器。 这一次我们通过三个角度的优化来彻底解决这个问题: 采用 LRU 来做缓存,淘汰长期未使用的缓存下来的文件; 大文件不再缓存。我们通过参数的形式,允许用户设置一个阈值,超过这个阈值的文件将不会被缓存下来; 限制缓存的文件数量。结合前面的文件大小限制,用户可以准确预估,在当前配置下,Beego 静态文件缓存将会最多占用多少内存; 如果文件以小文件为主,那么这个缓存效果将会十分好。 手机全号码段校验支持 我们再一次更新了手机号码校验的正则表达式,现在已经可以支持全号码段的手机号码校验了。 性能优化 这一次,我们合并了多个跟优化相关的 PR。优化集中在锁优化,包括缩小锁的范围,尽量使用读锁等;Redis 采用Scan命令来取代Keys命令... 更多 我们还修复了其余的问题,比如说遗漏加锁导致的并发问题,还有热更新模块,在设置了某些选项下主线程依旧存活的问题…… 在经过这个版本以后,我们接下来的核心工作是 Beego v2,目前我们出了一个V2 RoadMap在征集社区意见。欢迎大家参与进来,出谋划策。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

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

用户登录
用户注册