首页 文章 精选 留言 我的

精选列表

搜索[告别],共817篇文章
优秀的个人博客,低调大师

新一代国产 ORM 框架,sagacity-sqltoy-5.2.59 发版,告别 mybatis

开源地址: github:https://github.com/sagframe/sagacity-sqltoy gitee:https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):https://github.com/threefish/sqltoy-idea-plugins sqltoy 脚手架项目:https://gitee.com/momoljw/sss-rbac-admin sqltoy lambda 项目:https://gitee.com/gzghde/sqltoy-plus 更新内容 1、优化updateByQuery适配公共属性设置(updateSqlTimeFields)2、优化NumberUtil数字转英文金额格式3、为提供根据pojo自动创建表或修改表做好结构性准备4、针对公共属性赋值以数据库时间为准的字段(sqlTimeFields)且涉及强制修改(forceUpdateFields)在更新和创建记录时统一规则以数据库时间为准5、未匹配数据库方言(主要是适配hive)分页Long类型根据数据大小转Integer(hive jdbc setLong报错) sqltoy 的关键优势: //------------------了解 sqltoy的关键优势: -------------------------------------------------------------------------------------------*/ //1、最简最直观的sql编写方式(不仅仅是查询语句),采用条件参数前置处理规整法,让sql语句部分跟客户端保持高度一致 //2、sql中支持注释(规避了对hint特性的影响,知道hint吗?搜oracle hint),和动态更新加载,便于开发和后期维护整个过程的管理 //3、支持缓存翻译和反向缓存条件检索(通过缓存将名称匹配成精确的key),实现sql简化和性能大幅提升 //4、支持快速分页和分页优化功能,实现分页最高级别的优化,同时还考虑到了cte多个with as情况下的优化支持 //5、支持并行查询 //6、根本杜绝sql注入问题 //7、支持行列转换、分组汇总求平均、同比环比计算,在于用算法解决复杂sql,同时也解决了sql跨数据库问题 //8、支持保留字自动适配 //9、支持跨数据库函数自适配,从而非常有利于一套代码适应多种数据库便于产品化,比如oracle的nvl,当sql在mysql环境执行时自动替换为ifnull //10、支持分库分表 //11、提供了取top、取random记录、树形表结构构造和递归查询支持、updateFetch单次交互完成修改和查询等实用的功能 //12、sqltoy的update、save、saveAll、load 等crud操作规避了jpa的缺陷,参见update(entity,String...forceUpdateProps)和updateFetch //13、提供了极为人性化的条件处理:排它性条件、日期条件加减和提取月末月初处理等 //14、提供了查询结果日期、数字格式化、安全脱敏处理,让复杂的事情变得简单,大幅简化sql或结果的二次处理工作 //-----------------------------------------------------------------------------------*/ sqltoy 特点介绍: sqltoy 的核心构建思想 sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等 sqltoy 的缓存翻译,大幅减少表关联简化 sql,让你的查询性能成几何级提升 极致的分页,同样帮助你实现查询的性能大幅提升 快速分页:@fast () 实现先取单页数据然后再关联查询,极大提升速度 分页优化器:page-optimize 让分页查询由两次变成 1.3~1.5 次 (用缓存实现相同查询条件的总记录数量在一定周期内无需重复查询 sqltoy 的分页取总记录的过程不是简单的 select count (1) from (原始 sql);而是智能判断是否变成:select count (1) from 'from 后语句 ', 并自动剔除最外层的 order by sqltoy 支持并行查询:parallel="true",同时查询总记录数和单页数据,大幅提升性能 便利的跨数据库统计计算:数据旋转 便利的跨数据库统计计算:无限极分组统计 (含汇总求平均) 便利的跨数据库统计计算:同比环比 5、树形表排序汇总 6、扩展集成

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

让测试告别点点点:ZadigX 全流程自动化测试解决方案

01、测试行业现状分析 快速获得反馈以了解在软件交付生命周期内更改所产生的影响,是构建高质量软件的关键。以前,团队依靠人工测试和代码检查来验证系统的正确性。此类检查和测试工作通常在开发完成后的一个单独阶段进行。然而,这种方法存在一些缺点: 手动回归测试耗时且费用高昂,成为整个流程中的瓶颈,导致无法频繁发布软件,开发者无法快速获得反馈。 人工检查和测试不可靠,人们在手动回归测试等重复性任务中通常表现不佳,并且很难通过检查来预测复杂软件系统的更改会产生什么样的影响。 开发者必须等待很长时间才能获取其更改的相关反馈,并且需要大量工作来对缺陷进行分类和修复。性能、安全性和可靠性问题通常需要进行设计更改,如果在此阶段发现这些问题,费用更高。 较长的反馈周期让开发者难以了解如何构建质量代码,质量有时会被视为“其他人的问题”。 开发者不负责测试自己的代码,很难了解如何编写可测试的代码。 对于不断改进的系统,及时更新测试文档需要大量的努力。 相反,团队应该: 在软件交付生命周期内持续执行所有类型的测试。 创建并定制快速可靠的自动化测试套件,在持续交付流水线[1]中运行自动化测试。 ZadigX 具备管理软件开发全生命周期能力,几乎支持市面上所有测试工具和服务、以及平台系统,同时支持多种测试框架和不同的测试类型,通过强大的运行时环境治理和自定义工作流能力,为测试团队提供强有力的工程支撑 ZadigX 帮助测试团队,将测试服务和能力左移、右移到开发团队、运维团队等全生命周期中,尽早发现问题,让其他角色也参与到质量建设中来,规避因修复此类问题而造成额外成本。 02、持续测试实践思路 持续测试[2]是一种具体的工程实践,旨在确保系统在可靠性、安全性、操作性能和可用性方面的稳定性。它涵盖了多种测试类型,包括左移测试、右移测试、冒烟测试、单元测试、集成和消息传递测试、性能测试、功能测试、回归测试和用户验收测试等等。将持续测试[3]融入 ZadigX 的整个 DevOps 流程,能够实现高效的业务部署、快速发现和修复错误、改善用户体验,并最小化业务中断的成本。 03、用 ZadigX 落地持续测试 编排不同测试类型 静态代码扫描 支持主流的静态安全工具例如 SonarQube、Coverity,和任何自定义扫描工具。 如何配置:以 SonarQube 示例,新增代码扫描,指定扫描工具<SonarQube>,配置待扫描的代码库、扫描脚本,开启质量门禁检查并配置触发器,具体的配置步骤可参考文档:如何配置静态代码扫描[4]。 如何编排:编辑自定义工作流,在指定阶段(比如:构建之前)添加<代码扫描>任务即可。 单元测试 支持对 Java、Golang、Python、C++、JavaScript、C#、PHP、Ruby 等各种语言的技术栈执行单元测试 如何配置:新增测试,配置基本信息、代码信息和测试脚本,在<测试报告配置>中指定报告目录,添加触发器配置并增加 IM 通知,具体的配置步骤可参考文档:如何配置测试[5]。 如何编排:编辑自定义工作流,在指定阶段(比如:部署之后,执行自动化测试)添加<测试>任务即可。 集成测试 支持的测试类型包括但不限于:API 接口测试、UI 测试、端到端测试、压力测试、场景测试... 配置过程和单元测试类似,此处不再赘述。具体编排:编辑自定义工作流,添加<测试>任务并填写配置,以下图示例说明参数: 任务名称:根据实际语义配置,比如 apitest-for-service 任务类型:选择服务测试 服务组件:选择待测试的服务组件,配置服务组件和测试的关联,当部署服务后将会运行指定的测试 此外,为自定义工作流配置触发器和通知,实现基于代码变更自动运行测试、测试结果及时同步 IM。参考文档:触发器配置[6]、通知配置[7]。 系统测试 支持产品级别的测试,对产品进行全面的系统测试,从整体充分把握系统质量。测试配置中的任务类型选择<产品测试>,其他的配置和集成测试类似,此处不再赘述。 运行持续测试场景 开发阶段:静态扫描打基础 流程:代码实现 > 代码提交 > 自动触发静态代码扫描质量门禁 > 开发人员及时获得反馈 > 有的放矢改进 代码开发完毕提交 PR 后会自动触发代码扫描执行,可有效拦截未通过质量门禁的代码变更。扫描结果会自动 comment 在代码变更中,开发人员可点击快速获得扫描结果,针对反馈进一步优化代码。从代码源头来规避质量风险,做到 fail fast > feedback fast > fix fast。 测试阶段:组合策略赋能力 流程:静态扫描(开启质量门禁) > 构建 > 部署 > 自动化测试 > IM 通知 ZadigX 可一键拉起独立的开发、测试环境(参考文档:创建环境[8]),只需要将测试编排进自定义工作流中就可以实现在开发环境、测试环境分别建设自动化测试套件,将测试能力编排进团队日常合作的每一个环节中: 开发自测阶段,更新开发自测环境并执行自动化测试。 多名开发联调测试阶段,可以将多人的改动同时部署更新进行集成测试验证。 测试工程师验收阶段,可在 ZadigX 中分析测试报告,并根据覆盖情况持续补充自动化用例集,确保自动化测试套件与业务功能一同迭代,持续为团队提供价值,测试工程师的能力也在平台中得到充分展现。 此外,工作流运行结果可及时通知到 IM 群中,团队内每个人都能及时感知自动化执行情况,为质量负责。 发布阶段:多重保障保质量 流程:发布质量门禁 > 发布委员会人工审核 > 分批次灰度发布 > 系统测试 > IM 通知 测试验收通过后进行发布上线操作,建议几种配置策略: 建设发布门禁,通过自定义任务自动获取安全扫描、单元测试、集成测试等质量结果来判断是否允许上线,作为上线过程的卡点,确保版本验收通过并且符合质量要求后再做上线操作。 灵活编排蓝绿、金丝雀、分批次灰度、Istio 等发布策略,以确保发布可靠性,可参考:发布工作流[9]。 发布工作流适当增加测试团队人工审批,以确保业务流程上的发布合规性。 04、One More Thing:如何度量持续测试效果 任何实践都要讲求投入产出比,而持续测试的效果可以通过:测试的编写人员比例,发现的 Bug 数量,自动化测试的有效性,以及是否在 CI/CD 中运行自动化测试来衡量等方面来度量,具体如下: 05、小结 通过 ZadigX 支撑持续测试和自动化测试的实施,帮助测试团队更好地应对当前的测试行业挑战,确保软件交付的质量和稳定性,提高开发和交付过程的效率。 参考链接 阅读原文https://mp.weixin.qq.com/s/meO6yqzZdMQfBoEsAcr1Ig [1]持续交付流水线:https://continuousdelivery.com/implementing/patterns/#the-deployment-pipeline [2]持续测试:https://cloud.google.com/architecture/devops/devops-tech-test-automation [3]持续测试:https://www.ibm.com/cn-zh/topics/continuous-testing [4]如何配置静态代码扫描:https://docs.koderover.com/zadig/ZadigX%20v1.5.0/project/scan/ [5]如何配置测试:https://docs.koderover.com/zadig/ZadigX%20v1.5.0/project/test/ [6]触发器配置:https://docs.koderover.com/zadig/ZadigX%20v1.5.0/project/common-workflow/#触发器配置 [7]通知配置:https://docs.koderover.com/zadig/ZadigX%20v1.5.0/project/common-workflow/#通知配置 [8]创建环境:https://docs.koderover.com/zadig/ZadigX%20v1.5.0/project/env/k8s/ [9]发布工作流:https://docs.koderover.com/zadig/ZadigX%20v1.5.0/project/release-workflow/

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

告别纽交所!纽交所维持三大运营商退市决定

5月7日,三大运营商发布公告称纽交所称将对三家中国电信运营商启动退市程序。 公告显示纽约证交所委员会维持了纽约证交所监管部门重新启动本公司美国存托证券ADR下市程序的决定,预计纽约证交所将向美国证券交易委员会提交25表格以撤销本公司美国存托证券的上市及注册(退市)。 2020年11月12日,特朗普政府公布一项行政命令,禁止美国投资者对中国军方拥有或控制的企业进行投资。该规定可能会影响到包括中国电信、中国移动、海康威视等31家中国企业。此举旨在阻止美国投资公司、养老基金和其他机构买卖这些中国企业的股票,这些中国企业今年早些时候被美国国防部认定为受中国军方支持。行政命令将于明年1月11日生效。该命令将禁止美国投资者对上述中国企业的证券进行任何交易。同时,它还禁止美国人在被认定为“中国军事企业”的60天内买卖这些企业的证券。 有专家表示,三大运营商都是在香港上市,在美国市场ADR的退市对他们在香港的正常交易不会有很大影响,更多的是体现在预期和信心上。而影响投资者对运营商未来预期的更主要的因素其实还是他们在国内市场的表现。所以说对运营商来说,根本的还是做好自己在国内市场的工作。只要国内市场稳健发展,外界这些影响就都是可控的。 3月9日,中国电信在港交所发布公告指出,为把握数字化发展机遇,完善公司治理,拓宽融资渠道,加快改革发展,推动战略落地,实现高质量发展,中国电信拟申请本次A股发行并在上海证券交易所主板上市。公告显示,在符合上市地最低发行比例等监管规定的前提下,中国电信拟公开发行A 股数量不超过12,093,342,392股(即不超过本次A股发行后公司已发行总股本的13%,超额配售选择权行使前)。且在相关法律、行政法规、部门规章和相关规范性文件的规定下,制定本次发行方案。所募资金将用于5G产业互联网建设项目、云网融合新型信息基础设施项目及科技创新研发项目。

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

中国数据库告别卡脖子之忧:阿里OceanBase霸气卫冕全球第一

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。 中国自研OceanBase数据库,又刷新了世界纪录。 时隔七月,再次在TPC-C公开证明实力。 但这一次,不只是新晋霸主地位的巩固,也不止于打破业界尘封9年世界纪录后的新里程碑…… 更是技术性能benchmark、底层基础自主研发,以及全球标准话语权的关键事件。 很多年后回溯起来,这还可能是两个时代的分水岭。 数据库、操作系统和芯片,科技产业和数字化经济中三大当之无愧的底座技术,之前无一项主动权掌握在中国手中。 现在,阿里巴巴、支付宝,十年之功、20万亿行代码之力——在数据库领域,打破全球纪录的7个月后,再次创造了新的标准线。 究竟是怎样的成就? 去年十一,我们就报道过,阿里自主研发的金融级分布式关系数据库OceanBase,在国际事务处理性能委员会(TPC)的TPC-C基准测试中登上榜首。 这一成绩还打破了由美国公司甲骨文(Oracle)保持了9年之久的世界记录,成为首个登顶该榜单的中国数据库产品。 中国工程院院士、计算机专家李国杰都盛赞说:“这是中国基础软件取得的重大突破。” 如今,7个月后,纪录再度被刷新。 OceanBase不仅打破了去年自己保持的世界纪录,性能分数首次突破7.07亿,相比去年大幅提升近11倍。 而且这一次还是扩展能力的展现,在分布式架构下使用超过1500个节点的数据库集群,最终实现了整体性能的大幅提升——这在传统的集中式数据库是无法想象的。 更重要的是,在产业领域,分布式数据库解决了传统数据库几十年的难题,标志着数据库行业迎来了新一轮技术变革。 TPC-C,被誉为“数据库领域的世界杯”。 是全球主流计算机硬件厂商、数据库厂商公认的性能评价标准,其对数据库系统的软硬件协同能力要求极高。 也是全球目前最具公信力的联机交易处理(OLTP)数据库的功能与性能结合的测试标准,金融、电信、政府等关键领域的客户,一般参照 TPC-C 结果来衡量各个数据库厂商的事务处理能力。 更直接来说,TPC-C的测试就是数据库产品真实实力的最佳公开证明。 具体到测试本身,主要涵盖两大方向,分别是基本属性和压力性能。 在模拟真实交易环境并考察数据库基本性能的需求下,要求连续运行至少2小时,通过每分钟创建新订单数量来评价数据库的性能和性价比,规定测试任务需要在指定时间内完成,95%事务在1s内完成。 所以一款商业数据库想要向业界证明自身实力,TPC-C测试,绝对是一项硬指标。 然而,TPC-C排行榜长期被甲骨文、IBM和微软等传统数据库和硬件厂商占据…… 中国自研品牌的身影,从未出现过。 直到2019年9月,阿里一鸣惊人,打破甲骨文长达9年的霸榜垄断。 然而当是时,虽然成绩超第一名甲骨文纪录两倍有余,但外界依然有不少质疑的声音,且认为“蹭”了硬件红利。 于是这一次,时隔7个月再战——硬件基本无变化,要的就是技术架构和软件实力的证明。 所以也有外界评价说:「再无敌手,独孤求败」。 但参与此次“证明”的阿里工程师表示:这个评价听起来太狂了。 不过也认同,在数据库领域,技术架构的优越和领先,确实短时间内是很难超越的。 阿里凭什么? 这一次,OceanBase在测试压力性能时被要求连续运行至少八小时,1500多个数据库节点以及5000多万个仓库与对应数量的客户端参与其中,过程中上下抖动情况不超过1%。 以最苛刻的方式,无压力通过了该测试,而且短时间内,别人再以同样标准通过测试,几无可能。 OceanBase总经理杨冰,阿里连续两次刷榜的带头人。 他分享了OceanBase取胜的核心原因: 分布式整体系统可用性的技术创新。 即不用担心高额的软硬件投入来保障扩展性能所造成的杯水车薪,又可搞定节点故障无法使用主备镜像技术等问题。 以此为出发点,OceanBase大胆采用了Paxos分布式一致性协议,作为整个分布式数据库中最核心的技术之一。 OceanBase创始人阳振坤坦言,无论是主备库数据不一致还是分布式事务的技术缺陷,根本原因都在于关系型数据库自身软件高可用性的缺失,仅仅通过堆砌硬件红利来解决问题显然是治标不治本的做法;而OceanBase则是从数据库内部入手将问题解决。 当然,经过首次冲击TPC-C测试成功再到二次震撼TPC-C并满载而归,期间OceanBase技术团队也做了很多重要的优化升级工作。 例如提供兼容Oracle的租户模式并支持兼容PL/SQL的存储过程;实践分布式并行查询的新执行引擎帮助更好支持TPC-H这类场景测试,更快走向混合负载等。 关于兼容Oracle的工作难点,杨冰强调OceanBase团队的目标是打算用两年时间做到业务的平滑迁移,不需要修改一行代码,也不需要业务做任何调整,但过程中由于Oracle本身功能较多,先去突破哪些具体的内容确实是一种挑战。 另外甲骨文一直以来都是一家技术能力强大的企业,对自身专利权限十分看重,未来在兼容工作进行过程中技术团队认为务必要基于自研数据库的属性对类似功能的加持保持慎重。 更重要的是,分析甲骨文单机数据库强大的技术功能后,OceanBase团队发现其混合负载是其重要的技术杀手锏,“未来在OceanBase分布式技术架构中实现此项功能的确算是一种不小的技术挑战。” 此外,对于OceanBase来说,公开挑战里的成功,只是日常实力的证明方式之一。 与诸多中国技术公司一样,业务场景才是最好的练兵场,而且中国业务场景下的挑战,可能比基准测试还要复杂多变得多。 或许你多少有了解,支付宝投身OceanBase获得成功,除了强大的专业技术人才投入之外,更重要的是阿里经济体与支付宝业务为代表的的互联网规模、金融级场景的复杂度,以及每年双十一大促时期的大型历练机会…… 这些都为其提供了天然的练兵场,因为只有经过丰富的业务场景考验才能证明数据库系统的通用性,“用出来”才是硬道理。 举个例子,在高效解决银行业务从传统Oracle迁移到OceanBase的有关问题时,由于实操经验丰富,团队早已面向开发者、运维人员等不同技术层面人群提供了完成与大数据链路同步以及异构数据库、同构数据库同步与迁移的诸多工具,例如OCP、OMS等。 现如今随着OceanBase在金融场景的商用化程度越发深入,创始人阳振坤表示,未来团队更想该产品代表下一代分布式数据库的技术趋势前沿与发展方向,在除金融行业以外的多个领域。 例如交通、铁路与航天等也都陆续出现OceanBase的身影,夯实金融场景技术创新之余大力推进商用化进程,逐渐成长位至关重要的通用性技术。 包括如今面貌一新的国民应用,目前背后底座就是OceanBase。 所以可以想见,随着TPC-C的再次实力证明,会有更多公司、业务、场景和领域,用上全球领先且中国自研的OceanBase数据库。 在波诡云谲的大环境中,不必再担心任何形式的断供。 十年磨一剑 但即便如此,OceanBase一路走来,也并非轻而易举。 现在看到的是全球瞩目,之前却有十年的风雨兼程。 OceanBase创始人阳振坤回忆,当时完全是凭借技术灵感,认定传统集中式数据库,总会有尽头。 “我虽然不是做数据库的,但长期的分布式经验让我觉得像Oracle那种单机数据库总会有个尽头。毕竟业务数据量没几个月就要翻一翻,分布式绝对是个机会。” △OceanBase创始人阳振坤 于是当年6月25日,OceanBase正式立项。 又一年,OceanBase 0.1版本正式发布,在淘宝收藏夹上线,成功帮助淘宝收藏夹业务的数据库服务器数量大幅度减少。 2013年,支付宝开始启动“去 IOE”,即去掉了Oracle数据库、IBM小型机和EMC存储。 2014年支付宝交易库上线,OceanBase产品真正带到金融核心业务。 2017年第一个外部用户南京银行也正式上线OceanBase。 再到去年9月,一战成名,打破垄断。 但更重要的是今年3月,OceanBase宣布正式通过阿里云向全球开放,实现更广泛的高可用、高性能、低成本服务。 而筚路蓝缕的研发之路中,一度因为困难重重、中途因为找不到愿意使用的业务,OceanBase团队还曾经濒临解散。 如今春风化雨,一切尽付笑谈中。 更重要的是,曾经因为数据库技术垄断,甲骨文创始人拉里·埃里森,让中国合作方在零下二十多度的凛冽环境中苦等2小时的傲慢往事,或许再也不会有了。 现在,我们不仅有了国产自研OceanBase数据库可供选择,而且OceanBase,也是最好的选择。 接下来,就看操作系统和芯片的了。

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

关于5G的10个问答 让我们告别盲人摸象

第五代(5G)移动网络来临,但目前在科技界面临挑战以及让人感到深不可测。先锋概念公司总裁Will Strauss上周告诉记者,“从某些方面来说,5G有点像俗话里说的几个盲人在摸象。” 在不久前移动通信世界大会召开的前夕,我们向一些行业分析师和观察人士提了10个问题。 我们与之交谈过的行业观察人士之中有GSM协会(GSMA)技术总监David Hutton以及美国国家仪器公司(NI)射频通信和软件无线电(SDR)主管James Kimery。 GSMA是一个移动运营商和相关企业的协会,致力于支持推广各类标准。Hutton的解释是,协会的使命是引导产业聚焦“使用案例”和发展惠及消费者和企业的新标准。他表示,“5G发展不应该仅仅是由科技的发展推动的。” NI是个自动化测试设备和虚拟仪器软件公司。NI是蜂窝通信社区的新人。NI和4G或任何以前的旧标准的制定关系极少。据Kimery说,到2010年时这种情况有了彻底的改变。 5G本身和5G样机的开发颇为复杂,这使得NI的软件定义无线电平台成了涉及5G创新的学术研究人员和电信设备厂商手里不可或缺的工具。 NI现时在5G社区拥有独特的地位,它参加各种试验和有关制定标准的会议,是一个敏锐的观察者。NI公司以中立的态势见证5G的发展。 1、新兴的5G标准能提供什么? 据NI的Kimery介绍,5G可望提供的优势在于三个方面:为智能设备提供宽带数据、车用超可靠、超快、超低延迟通信以及为海量的连接设备提供机器类通信。 Jim McGregor是TIRIAS研究所的创始人和首席分析师,他表示,“5G有一些重要和关键的构成成分,包括:5G加强型载波的整合;与Wi-Fi和免授权频段和物联网解决方案的整合。” 2、5G将会和4G兼容吗? Kimery表示, “不兼容。目前讨论的5G技术不会走1G、2G和3G的路。” 而GSMA协会技术总监David Hutton就回答得更详细些。他表示,“由于5G技术并不是一种技术而是个含括各种标准的“生态系统”,我们会见到5G将会保持与4G一些后向兼容性。” Kimery的不兼容假设是基于3GPP(第三代合作伙伴计划)去年秋天在美国凤凰城的关于5G的讨论。当时,3GPP有下列的约定: 无线频段小于 6兆赫和大于6兆赫 向后兼容的无线接入技术(RAT)--- LTE演进 非向后兼容RAT---新的5G RAT 先锋概念的Straus的归纳是:“我觉得有一件事很明显,5G(约2020年)的基站控制逻辑将基于LTE,加入更多、更高的频率后,多个频率(载波整合)之间会更加黏合,随基站MIMO和定向广播而来的是天线数目变大。” 3、我们见过许多5G试验。我们连5G标准都没有,他们在试验什么呢? 其实,大部分这些试验都是“前期商业试验”,重点是技术可行性和可靠性。坊间对6GHz以上的毫米波频谱用于5G的兴趣越来越大。Kimmery表示,”对手机通信行业的每一个人来说这都是一个大飞跃。到目前为止,手机通信行业用的谱率都低于6GHz。” 而在蜂窝系统里启动毫米波的使用有其挑战性。挑战包括需要解决高频带信道带来的各种缺陷和应付这种信道的传播特性。 Kimmery表示,许多运营商和网络设备厂商在测试自己提出的系统的性能和收集结果。 4、这样说来,大家都盯着使用6GHz毫米波系统里不同频段的测试结果。各运营商/设备团队测试系统用的频率是什么样的情况? Kimmery表示,不幸的是,大多数运营商和设备厂商都对自己的试验内容和结果三缄其口。GSMA的Hutton表示同意,他表示,“是的,他们都是在私底下进行。” Kimery称,只有一个例外,NTT DoCoMo是个例外。 NTT DoCoMo公司在11月透露了公司截至目前为止的5G试验的一些细节。 DoCoMo和诺基亚网络去年十月在东京高楼林立的六本木进行了5G试验,用的是毫米波信号,甚高频70GHz。公司的报告提到,实现了“超高速数据传输,高于2Gbps”。 日本电信商DoCoMo称,该试验是在商业区内进行的第一次5G数据传输试验。 DoCoMo还进行了其他5G试验,包括11月与韩国三星一起做的那次,用的是28GHz高频信号,同时还用到多天线和波束跟踪的波束形成技术 。 5、他们什么时候会分享这些测试结果呢? Kimery 表示,5G技术工作委员会定于3月7-10号在瑞典哥德堡开会。他表示,“我们希望运营商和设备供应商将分享他们的数据,分享他们的样机测试结果。” 6、带我们走一轮5G标准化的时间表。 5G的研究阶段将于2017完成工作(最有可能是3月,届时14版出笼)。行业的目标是在2018年9月敲定5G修订版 1.0的第一期。第二期将于2019年12月完成。 7、5G的第一期和第二期段是前向兼容的吗? Kimery表示,委员会已经同意行业将保持2018年5G第一期和2020年加入的创新之间的兼容性。 8、5G的种种对各种人是各种东西。5G是不是被拉向不同的方向? Hutton承认,GSMA已经为新兴5G标准确定了70个不同的使用实例。他表示,这些实例从智能计表到触觉互联网、到虚拟现实等等无所不包。 增强型移动宽带通信的技术要求可能 不完全和关键可靠、无延迟通信或大规模的物联网设备的要求是一样的。 这里什么优先级别高什么优先级别低就变得至关重要。这会主导5G第一期发展的焦点所在。 9、那5G第一期最可能的焦点是什么呢? Kimmery提出,“对于电信商来说最紧迫的问题仍是移动数据的快速增长。”事态的发展很可能处决于数据的增加。 尽管其他诸如大规模MIMO、波束形成、新的波形和新的调制方案等一些技术也必须考虑,Kimery认为毫米波必定是敲定5G第一期标准的讨论的前沿和中心。 Hutton不那么确定,他觉得毫米波还是带点“学术”色彩。他指出,虽然有些应用实例会受惠于较高的频率,“我们需要看到不同的技术走到了一起”,最终使得 5G可以满足不同行业的广泛需求。 10、5G第一期标准化成功的关键是什么呢? Kimery强调指出,用上毫米波技术,“选定一个频率是很重要的”。他称,无论是28GHz、39Ghz或70GHz,“要选一个”。他补充说,“我们可以以一个频率为焦点,再扩展到其他频率就变得更容易些。” 原文发布时间为:2016年03月07日 本文作者:李超 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

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

魅族的野心与挑战:告别小而美 品牌形象成阻碍

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 “我喜欢魅族,是因为白永祥(魅族总裁)的实在,不像有些厂商的老板尽说些大话。”魅族PRO5发布会前,一位自费从内蒙古呼和浩特专程请假坐火车赶来北京参加发布会的魅友(魅族粉丝)告诉腾讯科技,自己作为魅族多年的用户,对过去的MX4和MX5两款手机却很不满意。他将希望寄托在了即将发布的PRO5。 某种程度上,白永祥的确很实在。在接受腾讯科技等媒体访谈时,白永祥不小心透露自己平时爱看《花千骨》。 “现在的年轻人不都爱看高颜值嘛。”专访结束后,白永祥匆匆走出房间,三步并作两步,边走边对腾讯科技解释,自己其实是在追赶潮流。 过去一年的魅族,又何尝不是在追赶潮流?学小米走高性价比模式,推出千元手机品牌魅蓝,引入阿里战略投资,再紧随华为小米之后进军高端手机市场。至此,魅族手机的子品牌定位已然明朗,魅蓝是定价千元机市场的青年良品,MX是超高性价比的中端,而PRO则是其定义的高端品牌。 那家追求***、特立独行的公司不见了,取而代之的是要走全产品线、冲销量、看业绩、追求利润,回归商业世界的魅族。 在过去的一年时间里,魅族一共发布了8款机型。这意味着,平均每隔一个半月,魅族就要请歌星或乐队在北京国家会议中心High一次。 这一次,魅族更是下血本请来了以“上头条”著称的《中国好声音》第四季导师汪峰。“全部都站起来!”一站上台,汪峰就立即调动起全场的气氛。声嘶力竭用力嘶吼的他,与快速求变疯狂追赶的魅族,确有几分相似。 回归高端的内因 魅族曾是一家带有浓厚黄章色彩的公司,从来只追求产品的***,而对产品之外的其他事,甚至包括销量,都毫不关心,原本在自己的世界里很是滋润。直到2011年小米手机的出现,才在魅族平静的湖面上惊起一阵波澜。不过,顽固的黄章任凭外界风吹浪打,我自岿然不动。 而另一家国产手机厂商华为彻底觉醒,也是2013年底的事了。从那时起,华为开始将“荣耀”作为独立手机品牌运作,与小米一样采用电商模式,预约销售、定时抢购。高举“高性能”和“低价格”的旗号。 而后知后觉的魅族,确如其创始人黄章所言“大彻大悟得有点迟了”。终于在2014年9月宣布新发布的MX4手机售价为1799起,比高冷的MX3起售价足足低了700元,并于去年12月发布全新子品牌“魅蓝”,搅局千元智能机市场。 然而,随着多家国产厂商集体涌入,千元手机市场的竞争日趋激烈,这一价位的手机市场不断被蚕食,已经逐渐趋于饱和。 这时候,为几百元争得头破血流的国产厂商开始发现,高端手机市场仍然被苹果、三星把控,并瓜分了手机市场利润的绝大多数,但这一领域有实力的玩家并不多。于是,华为、小米各自发布了Mate7和小米Note顶配版瞄准高端手机市场。 在高端手机市场长期被国外品牌霸占以及国内高端手机品牌不足的情况下,魅族自然也想分得一杯羹。 从另一个层面讲,无论是否真有对赌协议,在获得阿里5.9亿美元战略投资以后,魅族必须在手机出货量上保持高速增长,不能再由黄章一味地任性,仅仅只做“小而美”的公司。因此,走高性价比模式就成了为数不多的选择之一,而另一个选择则是拓宽产品线,往下进军千元机市场,往上回归高端阵营,保持高中低端不同定位的产品线同时运作。 面临的挑战 高端手机市场同台较量,魅族至少要证明其市场能力强于小米。 整个2015年上半年,小米几乎都在为同一款产品——小米Note大做文章,多次召开发布会,发布竹制后盖版、女神版、黑丝纪念版等多个版本。与此同时,一向很少投放线下广告的小米也在楼宇和公交站台等多处投放了小米Note的广告。 然而,小米方面迟迟不肯公布小米Note的出货量,始终未打消外界的疑虑。在3000元及以上手机市场,除了华为Mate7曾引起市场的追捧外,其他国产高端手机几乎都遭遇了滑铁卢。 小米的品牌定位偏向于中低端,对其高端手机小米Note顶配版的销量会有一定的阻碍。而对于魅族而言,也面临同样的问题。 魅族此前曾主打3000元左右的高端手机,但随着去年大幅降价与小米展开正面较量以来,其品牌形象已经发生改变,人们逐渐开始将“魅族”与“性价比”划等号,这将在某种程度上影响魅族PRO5的销售。 魅族去年全年手机销量500万台,今年仅上半年手机销量就已达到890万台,同比增长540%。 不过,低端手机有利于走量,魅族销量大幅上升很大程度上依赖于其定位千元机市场的魅蓝。相对而言,在高端手机市场要保持同样的势头要困难许多。 在国内,“抢购”已经成为手机行业的一种常态,但究其根源还在于供应链和产能上的不足。增加高端产品线后,魅族或面临一定的产能问题。 对此,李楠曾表示,魅族的产能依旧不够好。但他同时强调,需求一定是一夜之间爆发的,但是产能的提升不是一个工厂的事情,还有出货所面临的渠道,渠道所面临的用户以及售后支持等,魅族本可以在今年做到2500万或3000万销量,可是真不能做那么多。 此外,魅族已经开始进军国际市场,这或许在专利方面会对魅族提出更高的要求。 不过,魅族PRO5产品本身有诸多可圈可点之处,不再堆砌参数,而是将现有的功能做到精致,力求提升用户体验,这些都将在销量上有所体现。 “我相信这台手机在中国高端手机市场没有对标的品牌了。”李楠表示,魅族PRO5不计成本,不求销量,因为魅族上个月的手机销量达到289万台,已经足以让自己在手机市场中活下来。 在国内手机市场,此前3000元为一大分水岭,在此之上,是苹果三星的天下,二者以此赚得盆满钵满,在此之下,国产手机靠性价比“走量”,借此占领市场份额。如今,华为已经撕开了一条口子,而魅族才刚刚掀开一条缝。

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

告别数据库“膨胀”:Dify x SLS 构建高可用生产级 AI 架构

作者:无哲、言合 一、前言:Dify 的规模化挑战 Dify 是当前最受欢迎的低代码 LLM 应用开发平台之一,在 Github 上已斩获 120k+ 的星标数。国内外有众多企业基于 Dify 构建自己的智能体应用。阿里云可观测团队既是 Dify 的深度用户,也是社区的活跃贡献者。 在大规模生产实践中,我们发现 Dify 在高负载场景下面临显著的数据库性能瓶颈:其执行引擎高度依赖 PostgreSQL,单次 Chat 请求可能触发数百甚至上千次数据库访问;与此同时,Worker 进程在知识库索引构建、Trace 追踪等任务中也会持续写入大量数据。这频繁导致 DB 连接池打满、慢查询频发 等问题,已成为制约 Dify 集群横向扩展与并发能力的关键瓶颈。 二、现状与挑战:Dify 存储机制痛点分析 数据分布现状 Dify 的数据主要分为三类: Meta类 数据:租户、应用、工作流、工具等配置信息; 运行时日志:工作流执行明细、会话历史、消息记录等; 文件类数据:用户上传文件、知识库文档、多模态输出等(通常存于对象存储)。 其中Meta 与运行日志均存储在 PostgreSQL 中,运行时日志占据了数据库的绝大部分资源。以我们的生产环境为例,运行日志占 DB 存储空间的 95%以上。在访问频率最高和慢查询最多的 SQL 模式中,绝大多数都与运行日志的读写相关。 Dify 的运行日志包含工作流的执行明细记录和会话消息数据,执行记录中有工具输出、模型上下文等大量长文本信息,并且运行日志数量也会随着用户请求快速增长。 核心痛点 将这类海量、高吞吐的日志数据全量存储在 PostgreSQL 中,带来了多重挑战: 负载压力大: Workflow 节点的每次执行都会产生明细日志(节点执行明细数据,记录节点的输入输出和运行状态等数据),高并发下 workflow_node_executions 表的读写极易成为热点。 连接占用: 尽管 Dify 1.x 的几个版本对数据库长连接问题做了很多优化(如 issue #22307[1]),但日志密集访问仍加剧连接池压力,影响核心业务的连接获取。 扩展性不足: 运行日志随着业务量呈爆发式增长,而 PG 扩容依赖垂直升配,升级规格往往伴随主备切换导致的连接闪断或维护窗口,难以实现完全的无感扩容。社区已有多个反馈(如 issue #18800 [2]因会话数据堆积导致首 Token 延迟增加 3 秒; issue #22796 [3]呼吁将日志迁出 PG) 分析加工能力缺失: 控制台仅支持有限关键词检索,难以满足业务对历史会话进行多维分析、二次加工及精细化运营的需求。 社区的积极探索与演进 运行日志存储一直是影响 Dify 系统性能与稳定性的痛点。针对这一问题,社区一直在积极寻求解决方案,并已落地了多项优化措施: 内存数据库(issue #20147[4]):适用于无需持久化的轻量场景,同时新版执行引擎已完成日志存储抽象,为后续异构存储改造奠定了基础。 后台异步执行( issue #20050[5]):通过 Celery Worker 异步写入日志,有效降低了核心链路的延迟,减轻了 API 引擎对 DB 的同步依赖。 周期性清理( issue #23399[6]):引入自动清理机制,定期移除陈旧的会话与执行记录,有效缓解了数据库存储膨胀问题。 大字段分离存储: 针对 LLM 长上下文导致的大字段问题,支持将超长字段截断并转存至对象存储,减轻了 DB 的 I/O 压力。 根因分析:数据特征与存储引擎的错配 上述优化在特定阶段非常有效,缓解了 Dify 的燃眉之急,但在大规模生产场景下,应用层的逻辑优化(异步、清理等)已触及天花板。要彻底解决扩展性问题,必须消除数据特征与存储引擎的错配------即我们一直在试图用"关系型数据库"去承载本该由"日志系统"处理的数据。 Dify 工作流记录虽然并非完全是Append-Only写,但具有鲜明的日志特征,与典型的业务数据(如用户信息、应用配置)截然不同: 终态不可变: 记录仅在执行期短暂流转,结束后即成为"只读"档案。在 PG 中长期留存海量只读数据,不仅挤占昂贵的 SSD 资源,庞大的表数据更会显著降低索引效率与查询性能。 泛结构化与 Schema 易变: 核心负载为巨大的 JSON 对象(每个工作流节点的Inputs/Outputs),且结构随版本迭代。PG 难以高效处理深层 JSON 检索,且亿级大表的 DDL 变更会引发长时间锁表风险。 高吞吐时序写入: 日志随时间源源不断地产生,持续消耗 IOPS 与数据库连接。请求高峰期极易导致连接池耗尽,导致创建应用等核心业务因资源争抢而失败。 因此,我们需要一种支持存算分离、弹性伸缩、低成本且具备原生 OLAP 能力的存储架构。阿里云日志服务(SLS) 凭借其云原生特性,成为解决这一瓶颈的最佳选择。 三、方案选型:为什么 SLS 更适合 Dify 日志场景 SLS 并不是"另一个数据库替代",它是为日志场景量身定制的基础设施。在Dify工作流日志场景下,相比于 PG,SLS 在以下四个维度实现了架构上的优化升级: 极致弹性,应对流量波动 Dify 业务常有突发流量(如 AI 推理高峰)。PostgreSQL 需按峰值预置硬件资源,低谷期的资源浪费,一旦流量突增超过预设上限,数据库稳定性会有问题。 而SLS 作为 SaaS 化云服务,天然支持秒级弹性伸缩,无须关心分片或容量上限,且默认支持 3AZ 同城冗余。 高写入吞吐 + 架构解耦,保障核心稳定 高并发写入: SLS 针对日志场景优化,数据以追加方式顺序写入,避免了数据库中常见的随机 I/O 和锁竞争,能以极低成本支撑数万 TPS 的写入吞吐,轻松应对 AI 业务的写入洪峰。 资源隔离: 将日志负载剥离至 SLS 云端,实现日志数据流与 Dify 核心业务事务的物理隔离,有效保障主业务系统的稳定性与性能。 海量日志,低成本长期留存 SLS 数据采用高压缩比技术,支持自动化分层存储,可将历史数据自动沉降至低频和归档存储,无需维护清理脚本,成本远低于数据库 SSD。这使得 Dify 能以极低的成本满足长周期的分析和审计需求。 开箱即用的数据价值释放能力 Schema-on-Read: SLS 写入时不强制校验 Schema,完美适配 Dify 快速迭代带来的字段变更,无需对历史数据重新变更。 秒级分析: SLS 内置了针对日志优化的分析引擎(倒排索引+列存)。开发者可以使用关键词从海量日志中检索,也可以利用 SQL 对亿级日志进行实时聚合分析,将日志数据转化为业务洞察。 丰富数据生态: 日志在SLS中,可以进一步进行更完善的处理和分析,比如数据加工清洗、联合分析、可视化、告警、消费和投递等等。 四、技术实现:核心架构改造与插件化 为了将 SLS 引入 Dify,整个工程实施分为两个部分:一是对 Dify 核心的插件化改造,二是基于 SLS 读写日志的插件实现。 1.Dify 核心插件化改造 Dify 早期架构中,工作流记录的读写逻辑深度耦合了 SQLAlchemy(PG ORM),扩展性受限。从 v1.4.1 以后社区引入了 WorkflowExecution 的领域模型(#20067[7])并开始逐步对工作流执行核心流程进行重构,定义了一套标准的 Repository 接口,涵盖日志的写入、更新、读取以及统计等标准行为。在 v1.8.0 社区引入了 Repository 的异步实现,通过推迟日志记录保存提升了工作流执行速度。 虽然 Repository 接口为多存储驱动提供了可能,但早期的抽象并不彻底:它主要解决了"写"的抽象,但大量"读"操作仍绕过 Repository 直接依赖 SQLAlchemy,且复杂的跨表 Join 查询使得存储层难以真正剥离。 为此,我们和 Dify 研发团队多次交流,确定了 Repository 抽象层的完整实现方案。我们通过剥离跨表关联查询、标准化读取与统计接口,真正实现了存储层的完全解耦与插件化加载。 2.SLS 日志插件实现 在插件实现过程中,核心挑战在于抹平关系型数据库(PG)与日志系统(SLS)在数据模型上的差异。为此,我们采用了以下技术策略: 基于多版本的状态管理 SLS 的 LogStore 是 Append-Only 追加写入,而Dify 的工作流执行过程存在状态流转,从 RUNNING 变为 SUCCEEDED/FAIL。因此我们采用了多版本控制的思路: 写入策略:每次状态更新,不覆盖旧日志,而是新写入一条包含完整状态的日志记录。我们在日志模型中引入了一个纳秒级的时间戳字段 log_version来区分版本。 读取策略:在查询或统计时,插件内部会生成聚合 SQL,对于同一个 workflow_run_id,始终选取 log_version 最大的那条记录作为最终状态。 Schema 自动同步 Dify 的迭代速度非常快,数据库模型经常发生变更。如果每次升级 Dify 都需要用户手动维护索引配置,将极大地增加运维负担。SLS 插件启动时会自动扫描 SQLAlchemy 模型定义,并与 SLS 索引配置进行 Diff。一旦发现新字段,自动调用 API 更新索引。用户无需手动维护索引,开发者也无须为 SLS 单独编写升级脚本。 原生 PG 协议兼容 值得一提的是,SLS 新增原生支持 PostgreSQL 协议。绝大部分原有的统计与分析 SQL,均可通过 PG 兼容模式直接发送到 SLS 上执行,极大地降低了插件的开发适配成本。 五、实践指南:配置与平滑迁移 该功能已正式合并至 Dify 社区主分支。基于Dify最新代码,只需进行简单配置,就可以将工作流执行记录切换到SLS存储。 第一步:准备工作 (1)创建 Project:在阿里云日志服务控制台创建 Project(建议与业务同地域) 无需手动创建 Logstore 和索引,Dify 启动后插件会自动检测并创建。 (2)获取访问凭证:获取具备 SLS 读写权限的 AccessKey ID 和 Secret。 可以授予 AliyunLogFullAccess,或按需配置最小权限(创建/查看Project、创建/查看logstore、创建/更新/查看索引、写日志、查日志等) 第二步:配置Dify 在 .env 或 docker-compose.yaml 中修改以下配置项,将工作流存储驱动指向 SLS 插件,并补充连接信息: # 1. 修改 Repository 驱动指向 SLS 插件 CORE_WORKFLOW_EXECUTION_REPOSITORY=extensions.logstore.repositories.logstore_workflow_execution_repository.LogstoreWorkflowExecutionRepository CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY=extensions.logstore.repositories.logstore_workflow_node_execution_repository.LogstoreWorkflowNodeExecutionRepository API_WORKFLOW_NODE_EXECUTION_REPOSITORY=extensions.logstore.repositories.logstore_api_workflow_node_execution_repository.LogstoreAPIWorkflowNodeExecutionRepository API_WORKFLOW_RUN_REPOSITORY=extensions.logstore.repositories.logstore_api_workflow_run_repository.LogstoreAPIWorkflowRunRepository # 2. 新增 SLS 连接配置 ALIYUN_SLS_ACCESS_KEY_ID=your_access_key_id ALIYUN_SLS_ACCESS_KEY_SECRET=your_access_key_secret ALIYUN_SLS_ENDPOINT=cn-hangzhou.log.aliyuncs.com ALIYUN_SLS_REGION=cn-hangzhou ALIYUN_SLS_PROJECT_NAME=your_project_name ALIYUN_SLS_LOGSTORE_TTL=365 # 日志存储天数 # 3. 迁移开关配置 LOGSTORE_DUAL_WRITE_ENABLED=false LOGSTORE_DUAL_READ_ENABLED=true 为了保证存量 PG 用户能平滑升级到 SLS 版本,我们在插件中提供了两个开关: (1)双写机制:通过配置 LOGSTORE_DUAL_WRITE_ENABLED=True(默认关闭),系统会将日志同时写入 PG 和 SLS。这适用于存量用户迁移初期的灰度验证,确保在不改变原有数据流的情况下,验证 SLS 的配置正确性和 Dify 版本升级本身的兼容性。 (2)双读降级机制:通过配置 LOGSTORE_DUAL_READ_ENABLED=True(默认开启),系统优先从 SLS 读取日志。如果 SLS 中未找到该记录(例如迁移前的老历史数据),插件会自动降级回 PG 再次尝试读取。 六、成效对比:迁移到SLS的三大收益 收益一:DB压力显著下降 切换到SLS,相当于把现有PG中数据量最大的两张表的数据迁移走了。根据我们线上业务的数据,DB减少了95%以上的存储空间(运行时间越长,这个比例越高),并且读写过程中的DB的连接数、CPU等压力也有显著降低。 收益二:存储成本大幅降低 为了直观量化迁移后的成本收益,我们以一个典型的生产级场景进行估算:假设 Dify 应用日增日志 10GB,为了满足模型评估与回溯需求,需留存最近 300 天(约 3TB)的数据。 注:这里估算SLS成本的时候,已经将存多条状态记录会占用存储空间的因素考虑进去。 此外对于PG实际生产中还需额外考虑高可用多副本、预留存储空间、连接池扩容等隐性成本。 这里造成近 10 倍成本差距 的根本原因在于存储机制的不同。 Dify的工作流记录包含了用户提问、知识召回、工具调用和模型响应等数据,是评估和回归等任务需要的数据资产,长期留存价值高。 对于 PG: 存储时间越长,数据量越大,对昂贵的 SSD 存储空间占用就越多,成本会大幅增长。pg实例需要提前预估存储空间,存储空间不可能完全利用起来,必然闲置一部分空间。 对于 SLS: 专为日志设计的高压缩比与分层存储技术,使得存储数据量越大、时间越长,其边际成本优势越明显。 收益三:数据价值释放,从"运维监控"到"业务洞察" 这里我们以一个真实的 Dify 应用场景------"电商智能客服助手"为例,展示日志数据接入 SLS 后,如何挖掘其背后更大的业务价值。 (1)无缝集成,原生体验 接入 SLS 后,Dify 界面上的日志查询与回溯体验保持不变,但底层存储已完全切换。 日志回溯:Dify 控制台的日志详情页直接从 SLS 读取数据,响应更迅速。 监控图表:Dify 内置的监控统计图表,也是通过执行 SLS SQL 实时生成的。 (2)超越基础,SLS 进阶分析 虽然 Dify 内置了基础查询和统计功能,但面对复杂的业务分析需求,我们可以直接转至 SLS 控制台,解锁更强大的能力。 任意字段的高速检索 SLS 支持全文索引和任意键值对条件的组合查询,快速精准检索出符合某种特定特征的日志。 业务趋势分析(可视化)场景 比如这里我们分析"用户意图识别"这个工作流节点里,按识别出的用户意图的分类统计随时间变化的PV情,便于通过观察不同分类的趋势变化,做出相应的运营决策。 * and title: 用户意图识别 and intent | select json_extract(outputs, '$.intent') as "用户意图", date_trunc('minute', __time__) t, count(1) as pv group by "用户意图",t order by t limit all 异常诊断(漏斗分析)场景 可以通过漏斗图,分析观察工作流哪些中间节点出现异常失败的比率较高。 status:succeeded | select title, count(distinct workflow_run_id) cnt group by title order by cnt desc 成本与风险风控(实时告警)场景 配置告警规则,统计 LLM 节点的 Token 消耗,一旦超过预设阈值,立即触发钉钉/电话告警。 数据闭环(ETL 与加工)场景 利用数据加工和定时 SQL,对工作流的输入输出进行清洗、脱敏与标准化,构建持续更新的评估与训练数据集。 总之,将 Dify 工作流日志接入 SLS,不仅能高效查询日志,更能通过分析、可视化、告警和数据加工,将日志转化为业务洞察,真正实现从"看日志"到"懂业务"的跃升。 七、总结:迈向生产级 AI 架构 将 Dify 运行日志迁移至阿里云 SLS,并非一次简单的"存储替换",而是 Dify 向生产级高可用架构演进的关键一跃。 我们通过业务数据与日志数据解耦的架构改造,成功将高吞吐、泛结构化的日志流从事务型数据库中剥离。让 PostgreSQL 专注核心业务事务处理,让 SLS 充分发挥其在海量数据存储与分析上的原生优势。 这一特性带来的价值是全方位的: 解决DB性能瓶颈: 将日志与核心事务解耦,从根本上解决数据库瓶颈,保证核心业务稳定性。 大幅降低日志成本: 利用SLS的弹性伸缩、高压缩比、分层存储,低成本存储海量日志。 充分释放数据价值: 从简单的日志查看升级为强大的实时分析、监控告警、加工处理,将运维数据转换为业务洞察。 如果您正在构建大规模的 AI 应用,或者正被 Dify 数据库的性能瓶颈所困扰,现在就是升级的最佳时机。拥抱云原生日志架构,让您的 Dify 跑得更快、更稳、更智能。 参考链接: [1]https://github.com/langgenius/dify/issues/22307 [2]https://github.com/langgenius/dify/issues/18800#event-17534118862 [3]https://github.com/langgenius/dify/issues/22796 [4]https://github.com/langgenius/dify/issues/20147 [5]https://github.com/langgenius/dify/pull/20050 [6]https://github.com/langgenius/dify/issues/23399 [7]https://github.com/langgenius/dify/pull/20067

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

告别多源数据处理繁琐!SpreadJS 让筛选排序如 Excel 般顺手

在数据处理领域,Excel 以其直观易用的筛选与排序功能,成为众多用户日常办公的 "必备工具"。无论是从海量员工信息里精准定位特定部门成员,还是按多维度优先级梳理销售数据,筛选与排序都是提升数据可读性、分析效率的关键手段。即便是在电商平台,仍有大量从业者依赖 Excel 来快速筛选、分析数据。 然而,Excel 存在明显短板 ------ 无法对多平台数据进行整合。当企业面临多数据源、海量数据处理需求时,就需要一款既能兼容 Excel 操作习惯,又具备多数据源整合能力的电子表格工具。经过多方探寻,SpreadJS 脱颖而出。 选择 SpreadJS,核心在于它高度契合 Excel 的交互体验,能适配业务人员既有操作习惯,实现线下报表向线上的无缝迁移;其强大的自动化数据处理与报表生成能力,可大幅减少人工冗余操作;它还能兼容复杂报表与多数据源,支持主流前端框架集成。同时,SpreadJS 提供单元格级权限管控与协同编辑功能,满足了企业级数据安全与共享的需求。 接下来,结合一组旅游数据,先带大家认识 SpreadJS 筛选,排序功能。 这个面板与 Excel 高度一致,涵盖了排序、按颜色排序、按颜色筛选、文本筛选以及列表筛选等功能。 一、筛选功能 升序 / 降序 升序 / 降序:点击 "升序",该列数据按升序规则排列,是针对当前列的快速单例升序操作;点击 "降序",则按降序规则排列,为单例降序快速操作方式。 按颜色排序 / 筛选 按颜色排序 / 筛选:"按颜色排序" 可依据单元格背景颜色或字体颜色对数据排序,比如将背景为红色的单元格数据排前,便于从视觉层面整理数据;"按颜色筛选" 能筛选出具有特定背景颜色或字体颜色的单元格数据,快速定位符合颜色特征的数据行。 文本/数字/日期筛选 文本/数字/日期筛选:可对文本类型数据进行复杂筛选,如筛选出包含特定文字、以特定文字开头 / 结尾、等于 / 不等于某一文字的记录,精准定位文本数据。 文本筛选中的高级用法 1. 通配符筛选 使用场景:当你需要筛选出包含特定字符模式的数据时,通配符就非常有用。Excel 中有两个通配符:问号(?)代表单个字符,星号(*)代表任意多个字符。 操作示例: 在 "city" 列进行筛选,如果要筛选出城市名是两个字的城市,在自定义筛选的条件框中输入 "??"; 若要筛选出城市名中包含 "安" 字的城市,输入 "安"。 2. 多条件逻辑筛选 使用场景:当需要根据多个文本条件筛选数据时,可使用 "与" 和 "或" 逻辑。 操作示例:假设要筛选出城市名中包含 "西" 或者包含 "南" 的城市,在自定义筛选中,第一行条件选择 "包含",输入 "西",第二行条件选择 "包含",输入 "南",然后选择 "或" 关系;若要筛选出城市名中既包含 "北" 又包含 "京" 的城市(这种情况一般针对特定数据,如只有 "北京" 满足) ,则选择 "与" 关系。 3. 开头或结尾匹配筛选 使用场景:当你关注数据的开头或结尾字符时,可以使用此类筛选。 操作示例:在 "city" 列筛选城市名以 "宝" 开头的城市,在自定义筛选条件框中选择 "开头是",并输入 "宝";若要筛选城市名以 "州" 结尾的城市,则选择 "结尾是",输入 "州"。 数字筛选中的高级用法 1. 区间筛选 使用场景:在处理数值型数据(如销售额、年龄等)时,需要筛选出某个数值区间内的数据。 操作示例:假设有一列是游客的消费金额数据,要筛选出消费金额在 500 - 1000 元之间的数据。在自定义筛选中,第一行条件选择 "大于或等于",输入 "500",第二行条件选择 "小于或等于",输入 "1000",并选择 "与" 关系。 2. 基于平均值、最大值、最小值的筛选 使用场景:当你需要根据数据的统计特征进行筛选时,这种方法很有效。 操作示例:对于游客的年龄数据,先计算出平均年龄,然后在自定义筛选中选择 "大于" 或 "小于",并输入平均年龄值,筛选出年龄大于或小于平均值的游客数据;或者筛选出年龄大于最大年龄减 10 的数据,即选择 "大于",并通过公式计算出 "最大值 - 10" 的结果后输入(如果数据量较大,可借助函数如 MAX 计算最大值 )。 3. 前 N 项筛选 使用场景:在处理排名或关注 top 数据时使用。 操作示例:对于游客消费金额数据,要筛选出消费金额最高的前 10 位游客。在自定义筛选中,选择 "10 个最大的值",然后在弹出的对话框中,将 "10" 修改为你需要的数值,如 "5",即可筛选出消费金额最高的前 5 位游客数据。 三、日期筛选中的高级用法 1. 基于时间段的筛选 使用场景:当你需要筛选出特定时间段内的日期数据时,如筛选出某一年、某一季度或某几个月的数据。 操作示例:在 "date" 列筛选 2023 年的数据,在自定义筛选中,第一行条件选择 "大于或等于",输入 "2023 - 01 - 01",第二行条件选择 "小于或等于",输入 "2023 - 12 - 31",并选择 "与" 关系;若要筛选出 2023 年第二季度的数据,输入 "2023 - 04 - 01" 和 "2023 - 06 - 30"。 2. 相对日期筛选 使用场景:根据当前日期或某个固定日期的相对时间进行筛选,如筛选出过去 30 天内的数据、未来一周的数据等。 操作示例:假设当前日期是 2024 - 05 - 01,要筛选出过去 30 天内的旅游订单日期数据。在自定义筛选中,选择 "大于",输入 "=TODAY () - 30"(TODAY () 是 Excel 中的日期函数,返回当前日期),即可筛选出从 2024 - 04 - 01 到 2024 - 05 - 01 的数据。 列表搜索 在搜索框输入关键词,能快速筛选出该列中包含该关键词的数据项,方便在大量数据中查找特定内容。 全选 / 取消全选:"全选" 勾选后,该列所有数据项被选中,显示对应数据行;"取消全选" 取消勾选后,该列所有数据项不被选中,可重新选择需要的数据项。 数据项列表:列出该列所有不同数据项,通过勾选或取消勾选特定数据项,可筛选出包含这些数据项的行,精准控制显示的数据内容。 二、排序功能 在排序面板中,支持设置多条件排序规则: 添加 / 删除 / 复制条件:点击 "添加条件",可新增排序条件,实现多列数据的组合排序,比如先按 "tourist_attraction" 列排序,再添加 "city" 列作为次要排序条件,满足复杂排序需求;"删除条件" 可移除已添加的排序条件,方便调整规则;"复制条件" 能快速复制已有排序条件,减少重复操作。 排序规则设置区域:通过 "列(主要关键字)" 下拉菜单,可选择要排序的列,如图中选择 "tourist_attraction" 列,依据数据中的不同列确定排序字段;"排序依据" 选择 "数值",表示按列中数据的数值大小排序,此外还支持按 "单元格颜色""字体颜色""单元格图标" 等排序,满足对数据多种属性的排序需求;"次序" 选择 "升序",即按从小到大(数值)或从 A 到 Z(文本)的顺序排列数据,也可选择 "降序" 实现反向排列。 选项按钮:点击后进入更详细的排序设置界面,可设置排序时是否区分大小写(针对文本数据)、排序方向(按行或按列)等,进一步细化排序规则。 而除了上述提到的功能,SpreadJS还提供了一些扩展的能力。 三、扩展功能 中文拼音首字母排序。 function compareSize(value1, value2) { return value1.toString().localeCompare(value2.toString(), "zh"); } sheet.bind(GC.Spread.Sheets.Events.RangeSorting, function (e, info) { // 可以根据 info.range 判断是否是需要处理的范围 info.compareFunction = compareSize; }); 通过上述的代码,监听排序操作,使其按照中文拼音首字母排序。 自动扩展筛选区域 当创建一个筛选并且只选择一个单元格时,SpreadJS 将扩展筛选区域,直到区域周围的单元格都是空的。 创建筛选后,SpreadJS 将筛选区域扩展到原始值以下,直到出现空值。 四、示例 下面通过两个示例,看看如何运用这些筛选排序功能: 示例一:高学历游客线上支付偏好与景区关联分析 筛选操作: 对 "education" 列进行文本筛选,勾选 "本科""硕士及以上" 等学历选项,筛选出高学历游客相关数据。 对 "pay_meth" 列进行筛选,勾选 "线上团购""支付宝" 等线上支付方式选项。 排序操作: 以 "tourist_attraction" 为主要关键字,设置 "数值" 排序依据,选择 "升序",使景区按序排列。 添加 "pay_meth" 为次要关键字,同样 "数值" 升序,让同一景区内不同支付方式也有序呈现。 分析目的:通过筛选排序,能清晰呈现高学历游客在不同景区的线上支付偏好,助力景区针对高学历游客优化线上支付服务与营销,比如在高学历游客青睐的景区,加大线上支付优惠活动推广。 示例二:优质景区境外游客交通方式分析 筛选操作: 对 "level" 列进行筛选,勾选 "4A""5A" 等级选项,聚焦优质景区数据。 对 "visitor_ty" 列进行文本筛选,筛选出 "华侨""外国人" 等境外游客相关数据。 排序操作: 以 "level" 为主要关键字,"数值" 升序(或降序,依查看习惯),将景区按等级排序。 添加 "transport" 为次要关键字,"数值" 升序,让同一等级景区内的交通方式有序展示。 分析目的:操作后,可直观了解优质景区中境外游客的主要交通方式,景区可据此在交通枢纽处(如对应交通方式站点)设置景区专属服务点,或与交通运营方合作推出针对境外游客的交通 + 景区游览套餐。 示例三:景区淡旺季与游客消费及折扣关联的高级分析 筛选操作: 利用文本筛选功能,对 "date" 列设置 "自定义筛选",筛选出每年 1 - 3 月(淡季)和 7 - 8 月(旺季)的数据。 结合多列筛选,同时对 "pay_meth" 列筛选出 "线下团购""线上团购""现金" 等主要消费支付方式,对 "discount" 列筛选出折扣为 0、0.6、0.85、0.9 等不同折扣区间的数据。 排序操作: 采用多条件优先级排序,首先以 "date" 为主要关键字,"数值" 升序,将淡季和旺季数据依次排列。 添加 "discount" 为次要关键字,"数值" 降序,让同一时间段内高折扣数据优先显示。 再添加 "pay_meth" 为第三关键字,"数值" 升序,使相同折扣下不同支付方式有序呈现。 高级功能运用及分析目的: 借助 SpreadJS 的单元格级权限管控,可设置仅相关市场分析人员能查看和编辑此筛选排序后的数据,保障数据安全。同时利用协同编辑功能,团队成员能在线共同对数据进行标注、补充分析思路。通过这样的高级筛选排序,能深入剖析景区淡旺季不同折扣策略下游客的消费支付偏好,为景区在淡旺季制定更精准的营销与价格策略提供数据支撑,比如旺季可针对高折扣且热门的支付方式推出组合优惠,淡季则通过特定支付方式的折扣活动吸引游客。 无论是日常办公中对数据的基础处理,还是企业级多源海量数据的深度分析,SpreadJS 都以其类 Excel 的友好操作与强大拓展能力,为数据筛选排序工作带来高效与便捷,成为数据处理领域的得力助手。 体验地址 SpreadJS在线表格编辑器

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

告别App 中国移动5G消息上线数字人民币钱包

近日,中国移动宣布将于5G信息中添加“数字人民币”钱包功能,用户可以直接从5G信息界面中完成包括查询余额、交易记录向他人转账等等操作,省去了还要在应用商店下载App的繁琐操作。 所谓“5G信息”,可以说是无端的5G应用,它与现有的即时聊天软件有所不同,可以让手机号成为5G消息的用户ID,无需添加好友,无需注册,无需安装App,即可发送支持发送文本、图片、音视频、地理位置等丰富消息。 5G信息不需要下载App就能支持多款应用功能据悉,数字人民币与 5G 消息融合为用户提供了便捷易用的社交支付能力,为数字人民币的快速推广提供了有力支撑。另外,在风险防控方面,数字人民币钱包交互内容采取加密方式传输,能够更好地防范消息传输风险,有效守护客户的信息和资金安全,未来的交易方式甚至可能完全“去App化”。 9月29日,中国联通产品中心副总经理黄昌建表示,目前中国联通的5G消息全国运营平台已经完成,传统短信、数字短信和5G消息的能力已经集约化起来。5G消息可能会在10月中下旬全国试商用。

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

Tapdata 唐建法:是时候告别ESB和MQ了, 不妨这样“实时”打通数据孤岛

数据孤岛已成企业数字化转型“绊脚石”。 早期系统设计,不考虑数据互通,传统的 ERP、OA、CRM……每个系统都是独立的,不同架构之间具有天然的层级,数据库也多为单体式,在数据指数级增长的今天,陷入性能无法扩展的窘境,数据孤岛问题对企业而言将会“越来越痛”。 如何从根本上解决数据孤岛问题? 近年来行业有着各种各样的尝试,比如数仓、大数据平台、数据中台等几代数据工具和架构,但似乎一直没有找到最佳方案。 原因是,以 Teradata、Vertica 和 Greenplum 为代表的数仓基于 MPP 架构,拓展性较差,跨节点关联计算瓶颈明显,而且不支持半结构化和非结构化数据;基于 Hadoop 架构的数据湖、大数据平台由于是开放式架构,横向扩展性强,能以原始格式存储数据而无需对数据进行结构化处理,近期数据中台更是一片火热,但它们的技术底层仍然以大数据平台的技术为基础,更多只是一种企业管理理念的创新。 在唐建法(TJ)看来,当前大热的主流数据中台解决方案仍存在不少误区: 贪大求全:产品化体验不容易达到,需要大量人力堆砌; 数据业务化走的太远:各种地产中台、营销中台、金融中台...... 已经越来越脱离数据; 几乎都是基于 Hadoop 大数据底层,以离线数据为主:支持的核心业务场景更偏向 BI 报表、各种数据分析等 OLAP 场景,重在对历史数据做洞察和分析。 TJ 强调:回归数据本质。 “为新业务提供统一、完整、实时的数据,并且支持十万级并发和毫秒级响应,能够完美支撑 TP+AP 业务” 才是新时代打通数据孤岛方案的标配。这也正是 Tapdata 在做的事情——打造一个“务实”的实时数据服务平台。所谓“务实”,包括: 聚焦于数据,承担“采集,融合,治理,建模,质量,安全”等核心职责,将“洞察画像,推荐,AI引擎,营销引擎,大屏可视化”等非核心职责由下游业务系统完成。 能够提供离线和“真实时”数据处理能力,即全链路实时:实时获取数据 + 实时处理 + 实时服务,在支撑 AP 型业务基础之上,更能支持 TP 型业务或场景。 通过 Tapdata 实时数据服务平台“实时”打通数据孤岛,从而支撑全渠道业务(OLTP + OLAP): 实时采集融合——建立统一数据平台 实时处理——构建数据资产(模型) 实时服务——支持上层应用业务 无论企业现在有多少个业务系统,用了多少个不同的数据库,Tapdata 实时数据服务平台能以一种无痛接入的方式,使用基于日志同步的数据虚拟化技术,为企业构建一个虚拟、统一的数据访问层。如此一来,企业需要数据的时候只需要到一个中央化的地方,通过Tapdata 提供的标准化接口(tap),就可以简单方便地获取到想要的数据,就像打开自来水龙头取水一样简单。 要实现这一目标看似简单,实则困难重重。比如:实时数据同步的可靠性、反向更新问题,还要考虑各种异构库的同步问题等。 考虑到降低客户建设成本、长期运维成本和学习曲线,Tapdata 率先采用数据即服务(Data as a Service,简称 DaaS)架构理念,没有使用主流的类似 Flink 或者 Kafka 这样的大数据技术,而是自研数据虚拟化技术,相比传统的联邦查询方式,基于同步的虚拟化对技术要求更高,容错性更低,毕竟需要对各种底层实现完全不同的数据库进行事务级别的日志解析,忠实还原并在亚秒级延迟下重放到 DaaS 平台。这个架构没有捷径,Tapdata 经过大量的实战研发,并且在不断优化实现和算法的基础上,形成了技术壁垒,能够安全可靠的将源系统数据无需其他ETL工具,就可以实时镜像到 DaaS 平台,并提供准确的数据服务。 Tapdata 的异构数据源统一访问框架通过定义一个支持绝大部分数据库的标准,从统一的URL连接方式,到富结构的数据模型,到标准的DML和DDL,来为具有多源异构数据库的企业用户提供一个简单、一致的数据访问能力。只需要一种语法,就可以对企业所有数据进行浏览查看,甚至简单的更新管理。 从此,用户无需再做多种存储方案,解决元数据、搜索、缓存、队列等问题,只需使用 Tapdata 实时数据服务平台,就拥有了一个架构简单,部署轻量,低成本和上手快的 DaaS 平台,可为业务应用及大部分数仓、大数据平台和中台建设提供最完整、统一、准确的实时源数据。 Tapdata 秉承开源精神,为开发者服务。目前已通过云上开放的方式( http://cloud.tapdata.net ) ,将异构数据库实时同步能力免费提供给开发者使用,虽然,Tapdata Cloud 还只是 Tapdata 的一小部分功能,但已具备独立完成多达十几种数据库的异构数据同步能力,为新业务扩展,缓存加速, 全文检索,数据库备份容灾等很多新型业务场景提供生产级的支撑,后续会逐步将 Tapdata 的所有能力迁移上云。随着 Tapdata 完成数千万美元 Pre-A 轮融资,将进一步加大研发投入,并适时对核心能力进行开源。 申请试用 Tapdata 实时数据服务平台和了解更多信息 https://tapdata.net/

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

苹果iPadOS 15特性汇总:生产力表现提升 告别“买后爱奇艺”

6月8日凌晨,苹果WWDC21如期发布,其中iPadOS也迎来了自己的全新版本iPadOS15。 苹果在发布会中提到,依托iPdaOS构建的各项独特功能,才令iPad有了独一无二的移动能力和触控表现。 全新升级的iPadOS15也将会使iPad的功能更加丰富强大。 自由奔放的组件排列 今年的iPadOS15将在主屏幕交互上有重大升级,支持小组件和单个应用混合排列,使用者可以按照自己的喜好,随意组合屏幕上的顺序排列,做到极具个性化。 此外苹果还推出了一些适应iPad大屏的小组件,轻轻一扫,即可随意切换影音、游戏和照片等不同类型主页,做到高效流畅交互。 高效整理的应用资源库 为了方便使用者轻松找到不常用的应用,此前的iPadOS 15效仿iOS也推出了iPad的应用资源库。 所有应用都能在应用资源库中轻松找到,使用逻辑和iPhone的应用资源库使用基本一致,但iPadOS上的这个应用资源库可以做到随时从程序坞直接上拉使用,这一点上来说,比iOS的应用资源库更胜一筹。 简单快捷的多任务管理 多任务管理也是iPadOS15的升级亮点之一,相比之前复杂繁琐的分屏操作,此次的iPadOS15新增了分屏控件,在上方拉出即可使用,轻点分屏按钮,之前打开的应用便可向伸缩至屏幕边缘。 这时,我们可以随意的在主屏幕上进行操作,然后再次点按第二款应用时,两个应用就能自动分屏占据整个屏幕,如果想要更换分屏的应用,只需要将不需要的应用下即可。 同时,在分屏的情况下,还支持部分应用的小窗模式打开,比如发布会中演示的邮件应用就是如此。 应用架还支持部分应用的暂存管理,而且支持随意组合分屏,想要选择那款应用,上滑应用架选择即可,非常的方便。 更为强大的备忘录 备忘录作为iPad的核心应用,它的升级直接影响了iPad整体的生产力。 对此,苹果推出了QuickNote,意为全系统快捷备忘录,而启动它也十分方便,只需要拿着ApplePencil从iPad屏幕的角落边缘轻扫,即可打开QuickNote,当我们用完的时候,下拉回去即可。 不仅如此,QuickNote还支持应用识别,可以识别系统和部分第三方应用的链接,需要什么链接和笔记,在QuickNote上直接搞定。 覆盖全局的翻译系统 在iPhone中备受好评的翻译这次也随iPadOS15来到了iPad中,不仅支持实时语音自动翻译,而且全系统所有文本均可以翻译,连照片上的实体文字也照样可以翻译无误。 首次搭载的编译功能 SwiftPlaygrounds作为学习代码的绝佳方式,寓教于乐,深受代码初学者的喜好,在iPadOS15中,iPad的编译功能得以增强,开发者可以在iPad上轻松完成开发。 总结 整体来看,iPadOS15的升级亮点也不少,整体上的提升和生产力都有关,娱乐影音这块,今年好像是没有什么提升,这也表示了苹果对iPad这条产品线的重新定位,期待iPadOS15的后续更新。

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

程序员如何告别无聊?何不创建一些有趣的东西呢?

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 是时候摆脱那些让你厌烦的无聊项目啦。你一定也有很多天马行空的奇思妙想,想要创建一些刺激且有趣的业余项目,但却不确定如何进行。 没关系,本文带着你“找找刺激”! 提高技能的最好方法就是实践。这些有趣又有挑战性的项目是你的最佳选择。 1. 数独 数独游戏大家都不会陌生吧,这些有趣的谜题也是获得算法经验的好方法。本项目的需求是创建一种算法,可用于生成有效的数独游戏。 如果你觉得这太简单了,还可以构建一种算法来解决这些数独游戏。可以执行此操作的一种方法是创建回溯算法。 你可以从中可学到: 学习和实现数独算法 为数独游戏增加一些难度,获得更大成就感 2. 目录应用 如今,创建目录已不再稀奇。但是,这个项目却不同,它可以使用Flutter来运行。Flutter是Google最新的UI工具包,可仅使用一个代码库创建本机移动应用程序。它使用Dart编程语言。最近Flutter可是很火呢! 你可以从中可学到: Flutter Dart编程语言 应用开发 3. 渐进式Web应用 渐进式Web应用程序很热门。由于控制渐进式网络应用程序的范围非常容易,因此这也非常适合作为业余项目创建。 计划构建渐进式Web应用程序时,可以选择Angular、React、Vue等顶级JavaScript框架中的一个,将其结合起来。最好对这些框架进行一些研究,然后选择最喜欢的框架。这样你将获得最佳的学习体验。 你可以从中可学到: 使网络应用逐步发展所需的一切 选择的JavaScript框架 Web开发基础,例如HTML和CSS 4. 自动驾驶乐高车 几年前,我从事过类似的项目,被要求制造一辆由乐高拼成的汽车,该汽车可以在纸上写出某个特定的单词。 该项目旨在使用乐高或乐高技术制造一辆行驶中不会撞到任何物体的汽车。需要用到树莓派Raspberry Pi(或Arduino)、一些乐高玩具和超声波传感器,以避免出现任何障碍。 本项目最有趣的地方就是软件和硬件的结合。如果有人从未接触过树莓派Raspberry Pi(或Arduino),强烈推荐做下这类项目。 你可以从中可学到: Arduino(或Raspberry Pi)的基本用法。 读数传感器。 软件和硬件之间的交互。 5. 汽车分类 聚类和分类是机器学习的一部分。本项目旨在根据汽车有关数据将汽车分类为安全或不安全。这个项目是了解机器学习全部知识的好方法,所需要做的就是数据集。 你可以从中可学到: 掌握机器学习 分析数据 6. 2D游戏 如果一直有尝试游戏开发的想法,那么创建2D游戏绝对是个不错的开始,这将极大地提高编程技能。 你不必为游戏创新而冥思苦想,最好的入门项目就是重建Flappy Bird,无论是在移动设备上还是台式机上都可操作。也可以自己制作游戏,但要记住从小游戏做起。 你可以从中可学到: 实体的运动 横向滚动 碰撞检测 7. 大数据 如果对大数据项目感兴趣,那绝对应该尝试使用芝加哥犯罪数据集。这是一个多分类问题,对于经验丰富的数据科学家来说非常有用。这个问题很容易,但是由于该数据集有超过600万个观测值,所以数据管理异常困难。 你可以从中可学到: 大数据方面知识,例如数据建模 处理大数据集 从列表中选择最有趣的那个,然后开始上手。相信你一定能从中收获良多! 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/live 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-06-07本文作者:读芯术本文来自:“读芯术公众号”,了解相关信息可以关注“读芯术”

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

告别繁琐提升效率,Docker 帮您降低从开发到部署的复杂性

出品丨Docker公司(ID:docker-cn)编译丨小东每周一、三、五晚6点10分 与您不见不散! 在 Mobelux,开发项目永远不会停止。我们一直在研究新的和现有的代码库。无论何时,都有多个版本的 Python、Ruby、NodeJS、PostgreSQL、MongoDB 和 Elasticsearch 投入使用。 在这些不同的环境中运行我们的代码,同时确保每个开发和测试环境都配置了正确版本的软件和守护进程是一件非常痛苦的事情。所有这些可移动的部分都可能破坏生产环境部署的一致性。 为了简化开发和部署,我们开始使用 Docker 和 Docker Compose,它们让我们的工作变得更加轻松。 Docker 的基础介绍 如果这是你第一次听到 Docker,那么我会为您概述它是如何工作的。 Docker 让您以一种一致的、可重复的方式快速、轻松地设置复杂环境。它为您的软件提供了一个称为容器的小型隔离环境,该环境完全独立于运行在您的计算机或其他容器上的其他软件。 然后,您可以将这些容器配置为任何操作系统并安装任何必要的软件,从而可以轻松配置特定于应用程序的需求,而不会影响可能存在冲突需求的其他软件。它在很多方面类似于虚拟机(对于那些熟悉该技术的人而言),但运行的系统资源要少得多。 每个 Docker 容器都是 Docker 镜像的执行实例 —— 一个预构建的定义,内置所有软件和配置,因此它在任何地方运行都完全相同。镜像本身是由一个名为 Dockerfile 的文本文件所构建的,该文件包含一个简单的命令列表,并且可以在必要时不断重建。 这意味着一旦创建了 Dockerfile 文件,任何用户都可以通过它快速构建镜像并运行预先配置了正确软件的容器。您还可以预先构建和发布镜像,以节省更多时间。 您可能知道,大多数的 Web 应用程序和 API 不仅仅只包含一个应用程序。它们使用在其他服务器上运行的数据库、缓存和其他 Web 服务。Docker Compose 是一个与 Docker 一起发布的工具,预装了 Docker for Mac 和 Docker for Windows,它可以让您定义一组容器,这些容器可以一起启动并在专用网络上运行。这样,您就可以在一个本地的、隔离的、自动配置的环境中模拟整个应用栈了。 使用 Docker 进行开发 当您在传统的 Web 平台开发环境中工作时,开发人员必须配置许多内容,并随着平台的发展使它们保持同步。首先,必须安装正确的环境(例如特定的Python、Ruby 或 NodeJS 版本)。仅此一项可能非常耗时,容易出错,并且对于刚接触生态系统的人来说需要处理很多事情,特别是当您添加用于隔离环境的工具和多个项目的库存在于同一台机器上时。 接下来,开发人员需要确保他们拥有正确版本的外部服务,例如数据库和缓存。如果您正在处理多个项目,则可能需要多个版本,并且您必须将它们与您在生产中所使用的任何版本保持同步。每个项目还可能需要任意数量的开发库和系统工具来正确构建和运行。如果没有什么工具可以帮助您,那么整个事情就会变得极其困难和耗费时间。 Docker 就是那个可以拯救您的工具! 使用 Docker,我们只需配置一次,然后将其作为 Docker 镜像发布。当开发人员在同一个项目上工作时,他们会下载最新的镜像,或从项目的 Dockerfile 文件中重建它。它将自动安装所有软件依赖项的正确版本,这样我们就可以确保一切都是正确的和最新的。 通过使用 Docker Compose,我们可以更进一步为正确的数据库、缓存、搜索引擎甚至 Amazon S3 克隆配置镜像和容器。我们配置这些组合栈,以便在开始时启动所有服务,将当前代码的本地副本安装到开发容器中,以便开发人员可以使用其主操作系统的本机代码编辑器和工具,并为开发人员提供命令能够安装任何特定于发行版本的依赖项并运行开发代码。 这节省了我们配置系统和调试配置问题的工作时间。首次设置环境只需要几分钟(甚至几秒)而不是几小时。 作为额外的好处,在整个项目生命周期中的 Bug 数会减少,因为开发人员使用相同的库、基本操作系统和用于运行生产系统的外部服务。任何这些服务和依赖项的更新也可以在本地轻松测试,因此您可以确保它们按预期工作。 使用 Docker 进行测试 在开发测试之后,Docker 仍然是首选工具,它让整个流程变得更简单、更精确。 所有与开发相关的挑战仍然存在于测试中,甚至当不是所有的测试人员都来自于开发或高技术背景时,这种情况会变得更加复杂。Docker 为管理这种复杂性提供了几种不同的选择。 开发人员可以为 docker 镜像提供已经在镜像中的代码的正确版本。通过这种方式,测试人员不需要与版本控制或检查进行交互,以确保他们在本地拥有正确版本的代码。然后 Docker Compose 可用于使用该镜像运行容器以及外部服务的容器,因此他们只需简单地运行 Docker Compose 堆栈,一切都在那里。 如果我们确实需要从版本控制中测试特定代码,那么测试人员仍然可以通过克隆 git 镜像仓库并将其安装到正在运行的容器中,类似于开发过程。不同之处在于,具有需要测试的代码的容器不是转到命令行,而是自动安装当前的依赖项,用基本的测试数据为数据库提供种子,并自动运行该服务。 为了使它更简单,我们一直在使用一个名为 Lifeboat 的工具 —— 一个简单的用于 Docker Compose 的 GUI 和 GitHub Desktop。这使得测试人员可以轻松地启动和停止撰写堆栈,而无需在项目之间导航或在命令行上管理 Docker 和 git。 使用 Docker 进行部署 最后是部署时间,Docker 继续依旧让事情变得更容易。 在传统的服务器部署中,每个服务器必须在部署时手动更新依赖关系。对于使用 Python 或 Ruby 等语言构建的大多数现代 Web 平台,这意味着要联系外部服务器以下载这些依赖项,并且在某些情况下,每次都要编译它们。每次发生这种情况时,都会有存在失败的风险 —— 特别是考虑到服务器操作系统可能与开发或测试发生的地点不同。 在使用Docker时,这些风险会降低或消除。我们首先创建一个镜像并将其部署到 staging,以确保它按预期构建、部署和运行。然后将这个完全相同的镜像(已安装和配置了所有依赖项)部署到生产中,从而消除以前在部署期间出现故障的机会。 从开发到部署,Docker 使开发人员的工作变得更加轻松。我强烈建议大家尝试一下。

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

云计算正在告别DIY时代 阿里云专有云挑起企业级市场大梁

“云计算的DIY时代已经过去”,5月23日在2018云栖大会·武汉峰会上,阿里云专有云事业部总经理马劲表示,DIY式私有云正被时代抛弃,不仅部署费时费力,且难以解决企业云的顽疾。取而代之的是被验证过的公共云架构,这成为企业云平台新标准。 而针对困扰客户的“数据孤岛”、“烟囱式应用”、“割裂的跨部门协作”等问题。阿里云推出了基于专有公共云与“中台架构”的整体解决方案。以真正的云与真正解决客户困境的互联网架构开启企业以云来推进数字化转型的最佳实践。 云计算的DIY时代已经过去 此前,“自主可控的飞天云”与“拿来主义云”成为行业讨论焦点,而当日的武汉峰会上阿里云总裁胡晓明再次提出“拿来主义云盖不出高楼大厦,自主研发的云才能走得更远”。 在实践中,“拿来主义云”很快暴露出没有真正掌握核心技术所带来的种种问题。比如,没有经历大规模的实战检验,稳定性

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

人工智能让你告别打码时代

像人类一样,机器也能识别模糊的面部图像——而且更快 得克萨斯大学和康奈尔科技学院的研究人员称,打码(像素化图像)是模糊身份的狡猾方式,但计算机可被训练得能识别出这些“被保护”的人。 如果攻击者有一套清晰的照片可供练习,被像素化模糊的部分便昭然若揭。只要人工智能(AI)也能有相应的清晰照片集用以训练,面部马赛克作为匿名机制这种事还是让它飘散在风中吧。 听起来似乎没什么大用——人类也能做到同样的事情,但由于计算机化了,便可以自动执行,也就是说可以日夜不停,快速进行。 arXiv科学论文电子预印本库中的一篇论文( http://arxiv.org/pdf/1609.00408v1.pdf )称,像素化(拼接)、模糊(如YouTube上用的一样),甚至加密JPEG系数(被称为P3的机制:“隐私保护照片共享”),也挡不住恢复被保护的图像。 他们认为,人工神经网络可被训练来成功识别人脸、物体和手写签名,即使这些图像用上述模糊技术处理过。基于不同数据集合不同模糊类型,成功率在50%到95%之间。 他们的AI不需要人类来指出重要特征。不仅不需要预先指定相关特性,也不用知道部分加密或模糊化的图像泄露出来的究竟是什么。神经网络会自动发现相关特性,并学会利用隐藏和可见部分之间的联系。 处理照片中唯一的难点,在于攻击者需要巡游社交媒体,搜罗可能出现在给定照片中的可能人脸集合。但对于明星或公众人物来说,这都不是事。 同样的方法,适用于恢复被模糊化了的文本或手写文字,只要攻击者能找到训练数据集(就像图像识别模型的基准一样存在于网上)。该论文还描述了用于训练此模型的神经网络架构,可供意图更好地保护图像隐私的开发者当做参考基准。 本文转自d1net(转载)

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

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等操作系统。

用户登录
用户注册