首页 文章 精选 留言 我的

精选列表

搜索[开源向量数据库],共10000篇文章
优秀的个人博客,低调大师

Zadig V1.1.0 发布,开源分布式持续交付产品

Zadig V1.1.0 已发布,Zadig 是一款面向开发者设计的云原生持续交付 (Continuous Delivery) 产品,具备高可用 CI/CD 能力,提供云原生运行环境,支持开发者本地联调、微服务并行构建和部署、集成测试等。Zadig 不改变现有流程,无缝集成 GitHub/GitLab、Jenkins、多家云厂商等,运维成本极低。 Zadig V1.1.0 新增功能 跨项目级别的测试管理模块,不仅支持独立运行测试、并行执行测试、测试分析,同时工作流也支持挂接测试功能,让构建、部署和测试进行联动,方便用户定义更强大的工作流。 与此同时,系统设置中新增了自定义构建镜像功能,在构建和测试过程中,除了可以选择系统默认提供的构建镜像之外,也支持使用自定义镜像。 优化了 GitHub 的集成方式,在原有支持 Organization 账户代码库的基础上,新增了对个人账户的支持,方便开发者集成个人账户到系统中。 此外,根据开发团队的介绍,通过严格的兼容性测试,相比于之前的版本,新版本提升了安装成功率。目前支持 3 种安装方式(All In One、Kubernetes 、Helm)。 下一版功能规划 开发团队将陆续推出 Helm、云主机等持续交付场景的支持,详情请见Zadig Roadmap:https://docs.koderover.com/zadig/pages/d6e5b1

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

开源项目的 5 年长跑,runc v1.0 终于正式发布!

“ 本文我来分享下与我们(搞容器化/K8S 从业者)息息相关的一个基础项目 runc[1] 是如何自 2016 年发布了 v1.0.0-rc1 到现在历经 5 年长跑,从 rc1 一直到 rc95 ,如今终于正式发布 v1.0 版本的过程,及这中间的故事。 ” 大家好,我是张晋涛。 在 2018 年 11 月底时,我写了一篇文章 《runc 1.0-rc6 发布之际》[2] , 那应该是我第一次公开介绍 runc。如果你还不了解 runc 是什么,以及如何使用它,请参考我那篇文章。本文中不再对其概念和用法等进行说明。 在 2019 年 3 月底时,我写了另一篇文章 《runc 1.0-rc7 发布之际》[3],介绍 runc 1.0-rc7 发布的原因,及那个版本中最主要的修复 CVE-2019-5736 。其中也介绍了关于 runc/Docker 等对于 Linux 内核兼容性的问题,感兴趣的小伙伴可以看看。 关注我的朋友们,应该也在 K8S 生态周报[4] 中多次看到过我对 runc 的介绍,包括其特性及安全漏洞等方面。 在 2015 年 6 月, Docker ,CoreOS 和其他一些公司共同成立了 OCI (开放容器计划) 组织,其最主要的内容有两个: 容器运行时规范 容器镜像规范 Docker 将其运行时捐赠给了 OCI ,作为容器运行时规范的基础实现,托管在了 https://github.com/opencontainers/runc 也就是现在大家看到的 runc 了。 发布历程 我们来看看 runc 版本发布的历程,以便了解它为何长跑 5 年。 runc version release time runtime-spec version 备注 runc v1.0-rc1 2016.06.04 v1.0.0-rc1 runc v1.0-rc2 2016.10.01 v1.0.0-rc2-38-g1c7c27d runc v1.0-rc3 2017.03.22 v1.0.0-rc5 runc v1.0-rc4 2017.08.09 v1.0.0 runtime-spec 首次发布 v1.0 runc v1.0-rc5 2018.02.27 v1.0.0 首次计划作为最后一个 rc 版本 runc v1.0-rc6 2018.11.21 v1.0.1-49-g5684b8a 计划是 1.0 之前的最后一个功能版本,包含了一些规范合规性的修正 runc v1.0-rc7 2019.03.28 v1.0.1-59-g29686db 修复 CVE-2019-5736 runc v1.0-rc8 2019.04.26 v1.0.1-59-g29686db 修复 v1.0.0-rc7 runc v1.0-rc9 2019.10.05 v1.0.1-59-g29686db 修复 CVE-2019-16884 runc v1.0-rc10 2020.01.23 v1.0.1-59-g29686db 修复 CVE-2019-19921 runc v1.0-rc90 2020.05.12 v1.0.1-59-g29686db 与 runc v1.0-rc10 相同,是为了修正 version scheme runc v1.0-rc91 2020.07.02 v1.0.2-8-g237cc4f 开始支持 cgroup v2 ;一些规范性的问题得到解决 runc v1.0-rc92 2020.08.06 v1.0.2-23-g4d89ac9 修复我在 runc v1.0-rc91 中发现的 bug runc v1.0-rc93 2021.02.04 v1.0.2-35-ge6143ca cgroup v2 得到稳定支持, runc v1.0-rc94 2021.05.10 v1.0.2-57-g1c3f411 修复 runc v1.0-rc93 中的 regressions runc v1.0-rc95 2021.05.19 v1.0.2-57-g1c3f411 修复 CVE-2021-30465 runc v1.0 2021.06.22 v1.0.2-57-g1c3f411 我在上面的表格中,专门增加了一列 runtime-spec version ,表示 OCI 组织中的容器运行时规范的版本。我们来总结下这个发布进程: 在 runc v1.0-rc5 之前,runc 其实也没打算发布正式版,毕竟标准还没正式完成呢,实现也不可能先出稳定版; runc v1.0-rc7 , rc 9 ~ rc 10 均是为了修正严重的安全问题; runc v1.0-rc90 纯粹是解决 version scheme 的问题; runc v1.0-rc91~rc93 主要功能点是在 cgroup v2 的支持,以及一些跟规范集成的问题; runc v1.0-93 之后,其实就基本控制代码冻结了,直到 runc v1.0-rc95 修复了一个安全漏洞; 目前主要的几个仓库也都已经测试了跟 runc 代码仓库中最新代码的集成,相关的问题也已经修复。 从这里看到的三个主要耗时的点如下: runtime-spec 尚未正式发布 v1.0 版本; 修复安全漏洞和自身的 bug ; 完成新特性的耗时; 规范未发布 v1.0 耗时的部分这里就不多说了,这也是个依赖项,对于大多数的项目/软件开发都会有类似的情况,只能去推动规范的发布了; 至于特性,bug 和安全漏洞等的耗时,这其实跟 runc 项目的功能和其定位有关。runc 偏底层了一些,这就需要有更多相关领域的知识来支撑。就拿我在 runc v1.0-rc 91 中发现的那个bug 来说,对 Linux 内核源码不太了解的人,确实会花费比较多时间的。 -switch{-casemode&unix.S_IFBLK==unix.S_IFBLK:+switchmode&unix.S_IFMT{+caseunix.S_IFBLK:devType=configs.BlockDevice-casemode&unix.S_IFCHR==unix.S_IFCHR:+caseunix.S_IFCHR:devType=configs.CharDevice-casemode&unix.S_IFIFO==unix.S_IFIFO:+caseunix.S_IFIFO:devType=configs.FifoDevicedefault:returnnil,ErrNotADevice 有趣的是 runc v1.0 版本 Release 的标题是 "A wizard is never late, nor is he early, he arrives precisely when he means to." 这大概也很符合 runc 的发布历程了吧 :) 但无论如何,runc 经过 5 年长跑,终于发布了 v1.0 版本!感谢每一个为之付出过的小伙伴! 欢迎大家下载更新!https://github.com/opencontainers/runc/releases/tag/v1.0.0 欢迎订阅我的文章公众号【MoeLove】 TheMoeLove 参考资料 [1]runc: https://github.com/opencontainers/runc [2]runc-1.0-rc6-发布之际: https://zhuanlan.zhihu.com/p/50923312 [3]runc 1.0-rc7 发布之际: https://zhuanlan.zhihu.com/p/60981504 [4]K8S 生态: https://zhuanlan.zhihu.com/container 本文分享自微信公众号 - MoeLove(TheMoeLove)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

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

roncoo-education 9.0.0 发布,分布式在线教育开源系统

领课教育系统(roncoo-education)是基于领课网络多年的在线教育平台开发和运营经验打造出来的产品,致力于打造一个各行业都适用的分布式在线教育系统。系统采用前后端分离模式,前台采用vue.js为核心框架,后台采用Spring Cloud为核心框架。系统目前主要功能有课程点播功能,支持多家视频云的接入,课程附件管理功能,支持多家存储云的接入,讲师管理功能,支持讲师入驻功能,可以帮助个人或者企业快速搭建一个轻量级的在线教育平台。 版本其他升级说明: app-job的启动bug修复 主分支切换为alibaba分支 修复升级后的freemark页面不显示的bug 修复docker-compose在alibaba分支下的bug 修复nacos_config.zip的配置名称错误问题 移除多余的配置,上传配置调整 升级swaager的UI,更换为knife4j-spring-ui 优化docker-compose.yml

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

GreaterWMS V2.0.20 已经发布,完全开源仓库管理软件

愿景:如果你从事着非IT行业的工作,而你又热爱你的行业,那就用科技去改变他。 官网:GreaterWMS 视频教程:B站 更新日志:V 2.0.20 重构files.py调用机制,为后端全球化语言做准备 新增运费下载接口,现在上传的运费供应商信息已经可以下载成excel 新增运费上传接口,现在可以上传运费信息 新增商品上传接口,现在可以上传商品信息 新增供应商上传接口,现在可以上传供应商信息 新增客户上传接口,现在可以上传客户信息 重构到货通知书状态显示,现在以语言状态来显示,后台还是状态数字 修复一些提示信息重复 修复部分Bug

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

开源大数据流水线系统 PiFlow V1.0 发布

PiFlow是一个基于分布式计算框架Spark开发的大数据流水线系统。该系统将数据的采集、清洗、计算、存储等各个环节封装成组件,以所见即所得方式进行流水线配置。简单易用,功能强大。本次版本更新如下特性: 增加了运行单个数据处理组件、当前及以下数据处理组件功能; 增加了测试数据管理功能; 增加了数据处理组件显隐功能; 增加了表格组件,支持数据下载; 增加了Sql编辑器; 针对页面友好性进行了优化; GitHub地址:https://github.com/cas-bigdatalab/piflow 1)运行单个数据处理组件 2)测试数据管理 3)数据处理组件显隐 4)表格组件 5)Sql编辑器 联系方式:18612673095(微信号)

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

Qt 开源作品 | 小伙子,给你的 Linux 系统写个 Launcher 吧

今天给大家分享一下:如何用 Qt 实现一个 launcher (程序启动器)。 运行效果: github 链接: https://github.com/alamminsalo/qml-launcher 代码很少,C++ 部分大约 100行代码。 下面是实现过程。 1. 创建 QML 应用 在 Qt Creator 依次点击: -> File -> New File or Project -> Applications -> Qt Quick Application 然后一路点击 next 直到 finish 。 2. 解析配置文件 Linux 系统里安装过的应用, 都会在 /usr/share/applications 目录下有相应的配置文件, 用于说明如何启动该应用,如下: #ls-1X/usr/share/applications/ apport-gtk.desktop apturl.desktop arduino.desktop audacity.desktop bcompare.desktop ... 以 bcompare.desktop 为例: [DesktopEntry] Name=BeyondCompare Exec=bcompare Icon=bcompare ... 字段含义: Name 字段是应用的名称, Exec 字段是应用的启动命令, Icon 字段是应用的图标名称, 解析配置文件: //文件:main.cpp QVariantListapps() { QVariantListret; QDirIteratorit(DESKTOP_FILE_SYSTEM_DIR,...); while(it.hasNext()){ constautofilename=it.next(); QSettingsdesktopFile(filename,QSettings::IniFormat); //定位到[DesktopEntry] desktopFile.beginGroup(DESKTOP_ENTRY_STRING); //提取app信息 AppInfoapp; app.exec=desktopFile.value("Exec").toString().remove("\"").remove(QRegExp("%.")); app.icon=desktopFile.value("Icon").toString(); app.name=desktopFile.value("Name").toString(); //保存app信息 ret.append(QStringList{app.name,app.icon,app.exec}); } returnret; } intmain(intargc,char*argv[]) { [...] //将解析到的app信息传递给QML前端 engine.rootContext()->setContextProperty("apps",apps()); [...] } 核心就是遍历某个目录下的所有文件,解析配置文件的工作则由 QSettings 负责。 运行效果: //打印出所有的app启动信息 exec:"xpad" icon:"xpad" name:"Xpad" [...] 3. 实现整体布局 我们通过 SwipeView 来实现滑动翻页的功能,参考我之前的文章: 《Qt 官方示例 | 这几个 QML 版的 HelloWorld 你学会了吗?》 至于单独一页的布局,我们可以使用 Repeater 这个控件。 Repeater 可以帮我们生成重复的内容,这里我们规定一页最多显示 24 个 app。 通过 SwipeView + Repeater 实现布局: //文件:main.qml SwipeView{ [...] propertyintselectedIndex:0 Repeater{ id:pageRepeater model:appPages.length Item{ propertyvarpage:appPages[index] Grid{ columns:6 Repeater{ model:page.length Image{ source:"qrc:/images/qtlogo.png" } } } } } } 第一个 Repeater 用于实现生成所有的页面, 第二个 Repeater 用于生成页面里的所有 APP 的图标,这里我们先用 Qt 的 logo 来代替真实的 APP 图标。 运行效果: 这时候已经支持左右滑动了,但是还没填入 APP 信息。 4. 支持显示应用图标 在 main() 里,我们设置了一个名为 apps 的属性,它包含了所有 APP 的信息: engine.rootContext()->setContextProperty("apps",apps()); 我们需要在前端界面中使用 APP 的图标替换掉 Qt logo。 显示 APP 图标: //文件:main.qml Grid{ [...] Repeater{ model:page!==undefined?page.length:0 Column{ Image{ propertyvarapp:page[index] //APP图标 source:"image://icons/"+app[1] [...] } Label{ propertyvarapp:page[index] id:label //APP的名称 text:app[0] [...] } } } } 改动非常少。 运行效果: 这时仅支持显示图标,但是仍不支持鼠标选中。 5. 支持选中应用 选中应用需要添加对鼠标 hover 事件的处理。 当鼠标移动到某个图标上时,Qt 会捕获到鼠标 hover 事件,并传递给当前焦点所在的控件上。 我们将 APP 的界面代码抽取出来,单独放在 AppEntry.qml,使其成为一个独立的控件, 然后再在其中添加对鼠标 hover 事件的处理。 图标控件:AppEntry.qml ///文件:AppEntry.qml Pane{ id:root propertyvarapp [...] //当鼠标移动到该图标时,发送信号hovered() signalhovered() MouseArea{ [...] onHoveredChanged:{ if(hovered){ root.hovered() } } } Column{ anchors.fill:parent Image{ source:"image://icons/"+app[1] [...] } Label{ [...] } } } 在 main.qml 中接受到 AppEntry 控件的 hovered 信号时, 需改变其背景色以提示用户已选中图标。 //文件:main.qml Repeater{ model:page.length AppEntry{ app:page[index] [...] //selected改变时,背景色会变化 selected:swipeView.selectedIndex===index onHovered:{ swipeView.select(index) } [...] } } 运行效果: 这是已经能显示选中状态了,但是仍无法启动应用。 6. 支持启动应用 在 Qt 里,可以使用 QProcess 来创建进程。 这里我们创建一个 QProcess 的子类用于运行 APP。 QProcess 的子类: //文件:process.cpp voidProcess::start(constQString&program,constQVariantList&arguments) { [...] QProcess::startDetached(program); } //文件:process.h classProcess:publicQProcess { Q_OBJECT public: Process(QObject*parent=nullptr); Q_INVOKABLEvoidstart(constQString&program,constQVariantList&arguments={}); }; //文件:main.cpp intmain(intargc,char*argv[]) { //将Process的实例传递给前端 engine.rootContext()->setContextProperty("proc",newProcess(&engine)); } 前端处理点击事件: //文件:AppEntry.qml signalclicked() MouseArea{ [...] onClicked:{ root.clicked() } } 当用户点击图标时,AppEntry 控件会发出 clicked() 信号。 //文件:main.qml AppEntry{ app:page[index] [...] //主窗口启动APP onClicked:{ exec(app[2]) } [...] } functionexec(program){ console.debug("Exec:"+program) proc.start(program) Qt.quit(); } 最后调用到 Process::start(),启动 APP。 运行效果: 怎么样,你们学会了吗? —— The End —— 推荐阅读: 专辑 | Linux 驱动开发 专辑 | Linux 系统编程 专辑 | 每天一点 C 专辑 | Qt 入门 想进交流群? 后台回复【加群】,我拉你进群。

资源下载

更多资源
Mario

Mario

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

Spring

Spring

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

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

用户登录
用户注册