- 博客(113)
- 收藏
- 关注
原创 C++ 多线程笔记2 线程同步
如果两个及多个线程访问同一个资源,根据CPU的调度,可能会出现不同的结果,为了让同一个时刻只有一个线程能访问资源,我们首先看看C++中的mutex。举个例子:比如说经典的生产者消费者问题,在同一个资源中 ,如果该资源为空,生产者模块就会生成新的,当资源>0,消费者模块就会消费掉一个资源。面已经讲过了),任务处理完成,如果动态增长的线程空闲了60s还没有处理其它任务,那么关闭线程,保持池中最初数量的线程即可。,根据任务的数量动态的增加线程的数量,但是会设置一个线程数量的阈值(线程过多的坏处上。
2024-05-10 10:21:35
899
1
翻译 一种新的基于机器学习的示波法血压估计方法,开源、低功耗、低成本的人工智能软硬件提供者
在数据集中,收缩压点对应的拍的属性标记为1,舒张压点对应的拍的属性标记为2。在发现的标签系列中,将前1至2个标签标记为收缩压点,最后2至3个标签标记为舒张压点,并估计相应的袖带压力为收缩压和舒张压值。通过对这些时间段进行分类,收缩压(SBP)和舒张压(DBP)值使用三种分类算法进行估计,包括k近邻(kNN)、加权k近邻(WkNN)和Bagged Trees算法。在该算法中,测量新数据和训练数据之间的距离,并将新数据标记为K最近类别的值。然而,由于没有根据确定 DBP 点的标准,对检测到的点进行目视检查。
2024-05-10 10:13:48
101
原创 Python嵌套绘图并为条形图添加自定义标注
可以看到,右上角的条形图显得很拥挤,x轴标注相互重叠比较严重,因此,考虑将条形图由纵向变为横向,在 Seaborn 绘图时交换 x 轴和 y 轴就能实现。此外,bar上方的空间也比较大,考虑将x轴的标注标注到bar上方,以进一步节约空间。bar的标注可以通过。函数实现,该函数不仅可以直接标注每个bar的数值,也可以自定义要标注的内容和格式。论文绘图时经常需要多图嵌套,正好最近绘图用到了,记录一下使用Python实现多图嵌套的过程。函数创建一个新的轴,然后再绘制第二个图时指定绘图的轴为刚才新建的轴。
2024-05-09 09:37:04
356
原创 MindSponge分子动力学模拟——计算单点能
本文主要衔接前面的文章,继“MindSponge的安装与使用”、“MindSponge软件架构”以及“MindSponge中定义一个分子系统”系列文章之后,再讲解一下如何根据一个定义好的分子系统进行力场建模,使用力场来计算单点能,就是一个比较简单的案例。
2024-05-09 09:33:06
654
翻译 单体到微服务架构的涅槃重生之路?
单体架构(Monolithic Architecture)是一种将所有功能打包在一个容器中一起运行的一种架构,一个实例中集成了一个系统的所有功能。通过负载均衡软件/设备实现多实例调用。1、优点由于是完整的结构体,可以直接部署在一个服务器上;组建密集集成,源码通用,代码组织一致;单一服务和业务聚合,减少人力成本;只需要知道简单的技术栈,即可研发。2、缺点随着业务量的增加,服务逐步复杂,由于组件高度耦合,开发人员实现业务功能的同时大概率会影响到其它功能;业务多、代码模块多,启动周期漫长;
2024-05-09 09:18:20
36
原创 MindSponge分子动力学模拟——定义一个分子系统
关于MindSponge的安装和使用,在这里我们就不重复赘述了,假设大家已经完成了MindSponge的安装。import os这里因为是一个预置的模板,类似的还有。这种预置的模板我们可以直接当做template来创建,但如果是用户自行定义的模板文件,最好在这里写清楚yaml文件的绝对路径,否则会导致报错。
2024-05-08 20:10:19
589
原创 MindSponge分子动力学模拟——软件架构
分子模拟具有众多的应用场景,比如制药领域和材料领域,做好分子模拟的工作,可以极大程度上缩减新药物新材料的研发成本和研发周期。近几年随着GPT-4和Diffusion Model的大火,让大家意识到了AI已经具备了相当的解决问题的能力。因此基于AI的框架和模型,对比AI训练与分子模拟之间的共性,可以实现一个面向AI时代的分子模拟框架。本文主要介绍基于MindSpore框架实现的,MindSponge分子动力学模拟框架的软件架构。
2024-05-08 19:59:53
751
翻译 各类算力芯片,如何繁荣生长?
智能自动驾驶涉及人机交互、视觉处理、智能决策等众多方面,车载传感器(激光雷达、摄像头、毫米波雷达等)的不断增加,数据处理的实时性、复杂性和准确性要求不断提高,都对车载算力提出了更高的要求。在智能驾驶中,安全至关重要,因此该场景对算力芯片的可靠性有着极高的要求,对于芯片通用性的要求也较高,对于功耗和成本的要求就相对没有那么苛刻。相比于GPU,FPGA具有更高的处理速度和更低的能耗,但相比相同工艺条件下的ASIC,FPGA仍有不及,不过FPGA可以进行编程,相比ASIC也更加灵活。
2024-05-08 19:43:57
33
原创 MindSponge分子动力学模拟——安装与使用
本文主要介绍MindSponge框架的免安装使用和编译构建使用这两种使用方法,MindSponge是一款可以在MindSpore上进行分子动力学模拟的,模块化、高通量、端到端可微的下一代智能分子模拟程序库。通过MindSponge,我们可以在GPU上更加便捷的开发分子动力学模拟算法和应用,并且原生的支持神经网络力场和增强采样,使得我们可以用一个框架就完成绝大部分的分子模拟工作。
2024-05-07 10:24:34
1001
1
原创 Python报错symbol lookup error: xxx.so: undefined symbol: cufftxxx解决办法
中介绍过如何实现本地MindSpore的CUDA算子,那么在算子编译和使用的过程中可能会出现一些小问题,这里介绍的是编译成功为so动态链接库之后,在python中调用,提示找不到xxx函数/字符的报错。函数,但是在编译阶段未使用相关fft的编译配置,导致了编译后的so动态链接库无法识别到cufft库中的函数。我们在这个cu文件中调用了cufft的。
2024-05-07 10:01:12
163
翻译 如何搞定一个可以支持多芯混合训练的AI集群
百度百舸的 AI 加速套件 AIAK–LLM 实现了针对单一任务多种芯片的自适应并行策略搜索功能,通过计算各种并行策略所需要的计算量、存储量、通信量以及不同芯片的计算和 I/O 效率等(这里的所有数值均源自百度基于数十年 AI 技术积累产生的手册:AI 芯片效能矩阵图谱),从而快速计算出最优的任务切分策略,保证在各种芯片配比下的单一集群,在运行大模型多芯混合训练任务时整体效能最大化。如果您的智算中心已经或者计划多种算力部署的打算,欢迎使用百度百舸的这项全新能力,打破单一算力的局限,实现算力的统一融合。
2024-05-07 09:54:50
53
原创 MindSpore导入CUDA算子
为了自动微分,我们需要定义一个Cell类来封装我们的自定义算子:# 反向传播函数# 计算函数# 把Cell类加载为custom_add函数# 计算求和结果# 计算自动微分结果print(res)在这个代码中,主要就是增加了一个Cell类和两个新的函数bprop和construct[4. 4. 4.][3. 2. 1.]当然,这里我们没有再额外写一个用于返回反向传播值的CUDA算子,但是原则上对于较为复杂的函数,是需要自己手动写一个用于求微分数值的CUDA算子的。
2024-05-06 15:57:20
685
4
原创 Python3中的“指针”
假如你在Python中初始化了一个变量a的值,然后用a来初始化另一个变量b,此时你希望得到的b的数值是跟a同步变化的,还是独立变化的呢?Python这个编程语言虽然没有指针类型,但是Python中的可变参量也可以像指针一样,改变一个数值之后,所有指向该数值的可变参量都会随之而改变。就比如说改变a的值,会同步的去改变b的值。那么我们应该对这种类型的赋值有所了解,才能够避免在实际的编程中犯错。
2024-05-06 15:51:14
338
翻译 如何设计更好的数据市场|数据交易所
设计数据市场是一个复杂的过程。它是关于创建一个平台,不仅可以存储和组织数据,还可以确保数据对于用户来说是可发现的、可用的和有价值的。受“数据产品和数据网格”中阐述的原则的启发,探讨设计有效且高效的数据市场的关键考虑因素和实际步骤。在数据市场的背景下,数据产品作为交换的基本单位,为用户提供独特的见解和价值。我们预计未来的数据市场将提供更多支持人工智能和机器学习的数据产品,以及用于人工智能和机器学习开发的集成工具和服务。数据市场的重要性在于它能够释放数据的真正潜力,实现数据的民主化、货币化和在各个领域的应用。
2024-05-06 15:39:24
30
原创 Python系列六之多进程
在 Python 里,我们使用 multiprocessing 这个模块来进行多进程的操作。multiprocessing 模块通过创建子进程的方式来运行多进程,因此绕过了 Python 里 GIL 的限制,可以充分利用机器上的多个处理器。
2024-05-05 20:04:16
897
2
原创 Python系列五之正则表达式
正则表达式,Regular Expression,可用于在一个目标字符串里对于指定模式的字符进行查找、替换、分割等操作。比如,判断某个字符串里是否都是数字,或者是否包含指定字符串,又或者更直接的例子是判断电话号码或者邮箱是否合法等。这一篇笔记里,我们将先介绍一个正则表达式的函数,并以此来引入正则表达式的各种模式,并辅以各个例子进行介绍。u1s1,正则表达式,我学了三四遍,学一遍忘一遍,忘一遍学一遍,只要隔一阵子不用就会忘,所以这一篇笔记力求将正则表达式的所有模式和用法都记录下来,用作之后的查找笔记。
2024-05-05 19:57:50
1119
1
翻译 企业真的有必要对Kubernetes做大量投入吗?
所以,最终的结论是,Kubernetes环境的复杂性和居高不下的成本支持,让传统开发和部署方式,仍有发展空间。还有一个问题是,很多企业提出的现代化的应用开发方式,比如:分布式特性引入了新的风险和故障点。基于以Kubernetes为代表的容器的部署方式,提供了高可伸缩性和容错级别,这是很多企业使用Kubernetes的原因,但容器技术确实存在我们在传统开发中看不到的问题。可以想象,随着Kubernetes的持续投入,数百万美元的资金投入被浪费了,如何进一步优化我们的IT投入,这已是很多企业达成的共识!
2024-05-05 19:40:26
24
原创 Python系列四之协程
协程是一种运行在单线程下的并发编程模型,它的特点是能够在一个线程内实现多个任务的并发操作,通过在执行任务时主动让出执行权,让其他任务继续执行,从而实现并发。以下所有的代码都是在 Python 3.8 版本中运行。
2024-05-04 09:40:11
678
2
原创 Python系列三之闭包与装饰器合集
想要统计add而如果我们想要统计很多个函数的执行时间,然后打印出来,应该如何操作呢?这里就可以用上 Python 里装饰器的操作。
2024-05-04 09:36:40
794
翻译 系统整容纪:责任链设计模式的应用实战(爆灯了,研发工期由45天降为1天)
在下所负责的系统中有这么一个模块,分区模块,直接看这个词的话相信很多人都会疑惑甚至是误解,其实其真正的含义就是“路由”,接下来我简单描述一下何谓“路由”。相信大家都有过网上购物的经验,每当我们下完订单后,我们都能随时随地的查看订单的物流跟踪状态,而上述的“路由”概念就是指:订单从A地到B地的运输路由线路,例如订单order1要从A运输到目的地F,其可以从A->B->D->F,也可以从A->D->F,至于具体应该走哪条线路,是靠系统中配置的路由以及对应的匹配规则进行筛选出来的。
2024-05-04 09:31:42
27
原创 Python系列一之excel的读取
这里我常用的 python 对于 excel 的读取库有两个,一个是 xlsxwriter 用于操作 excel 的写入,一个是 xlrd 用于 excel 文件的读取。
2024-05-03 09:27:23
801
翻译 助力企业部署国产云原生数据库 XSKY星辰天合与云猿生完成产品互兼容认证
近日,北京星辰天合科技股份有限公司(简称:XSKY 星辰天合)与杭州云猿生数据有限公司(简称“云猿生”)完成了产品互兼容认证,星辰天合企业级分布式统一数据平台 XEDP 与云猿生的开源数据库管控平台 KubeBlocks 产品可以互相完全兼容,可以帮助企业更好地应用 OceanBase 等国产云原生数据库,提升数据备份整体效率和数据安全性,助力企业的数字化转型。不过,企业如果需要在云原生环境中部署 OceanBase、opengauss 等多种数据库,还面临着运维复杂、安全性等多重问题的挑战。
2024-05-03 09:14:57
22
原创 React 之 Suspense
进行异步网络请求,然后再拿到请求后的数据进行渲染是很常见的需求,但这不可避免的需要先渲染一次没有数据的页面,数据返回后再去重新渲染。组件来渲染子组件,这个组件的特性是能根据传入 mode 来控制子组件样式的显隐,这有一个好处,就是能保存组件的状态,有些许类似于 Vue 的。至此,Suspense 的一生我们粗略的过完了,在源码中对 Suspense 的处理非常多,涉及到优先级相关的本篇都略过。通过其需要的 mode 参数值,我们可以大胆的猜测,应该是一个能控制是否显示子组件的组件,如果。
2024-05-02 08:57:26
1734
1
原创 使用 cmux/smux 对 TCP 进行复用
cmux 的实现上是对 payload 进行匹配,是一个匹配函数,为内置的集中匹配函数中的一种,这类匹配函数可以同时设置多个。内部将 net.Conn 的数据读入至 buffer 内,依次调用各个匹配函数对这个 buffer 进行分析,如果匹配成功则httpL被返回,httpS 服务收到请求。所以我们可以自定义一些 Matcher,比如一些携带 Magic/字符串 头的数据const (if err!= nil {使用上和。
2024-05-02 08:38:32
736
翻译 遇到重大运维问题时的保命原则
如果存在风险,先通过杀会话把系统稳定住。在承担的责任中,要选择责任小的责任来承担,比如说系统运行性能虽然大幅下降,但是还在业务能忍受范围内,并无恶化迹象的时候,我们可以选择承担这次性能故障的责任。他回顾完这个事件后说,当时我们的最大错误决策是按照厂家的建议去停了那个第三方复制设备,其实在这种业务高峰叠加设备性能故障的场景中,很多因素是不确定的,对于第三方设备的特性我们也是知之甚少,当时不应该做这种操作,而是应该先通过业务限流的方式让系统能维持运行,等营业厅下班后,非业务高峰期再去做高风险的动作。
2024-05-02 08:30:38
29
原创 JavaScript 的新数组分组方法
将项目分组显然是我们开发人员的一项重要工作。目前,每周从 npm 下载的次数在 150 万到 200 万之间。很高兴看到 JavaScript 填补了这些空白,让我们的工作变得更加轻松。
2024-05-01 13:39:07
685
4
原创 如何在C#中使用 Excel 动态函数生成依赖列表
在Excel 中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化。依赖列表通常用于Excel的业务报告,例如学术记分卡中的【班级-学生】列表、区域销售报告中的【区域-国家/地区】列表、人口仪表板中的【年份-区域】列表以及生产摘要报告中的【单位-行-产品】列表等等。为此,请添加类型列表的数据验证(与为主下拉列表添加的数据验证相同),并将其源值设置为包含上一步中公式的单元格值(即 =$V$2)前缀为 #。获得客户名称列表后,将其用作使用“列表上的数据验证”创建的主下拉列表的源。
2024-05-01 13:37:16
760
翻译 4月数据库圈值得关注的事
同时,Redis Inc. 也关闭了自2020年7月买断Redis社区后形成的以Core Member(一共5人,Redis Inc. 3 人, 阿里云 1 人,AWS 1 人)为核心的社区管理方式,后续开发由Redis Inc. 全权管理。本次签约代表着双方将建立全面合作伙伴关系,依托各自在自主创新基础软硬件领域、服务用户数字化转型上的优势,在基于鲲鹏的达梦数据库一体机解决方案、企业ICT等方面进行全面合作,共同打造行业有竞争力的整体解决方案,携手推进政企用户和行业用户的数字化转型、智能化升级。
2024-05-01 13:30:31
24
原创 SpringBoot使用git-commit-id-maven-plugin打包
git-commit-id-maven-plugin 是一个maven 插件,用来在打包的时候将git-commit 信息打进jar中。这样做的好处是可以将发布的某版本和对应的代码关联起来,方便查阅和线上项目的维护。至于它的作用,用官方说法,这个功能对于大型分布式项目来说是无价的。
2024-04-30 10:11:59
628
4
原创 C语言:深入理解输入输出函数的奥秘
这时就要运用缓冲区的知识,在我们输入abc回车(\n)时,缓冲区中的数据为abc\n,而scanf只会读取abc,scanf() 处理用户输⼊的原理是,用户的输⼊先放⼊一个区域,等到按下回⻋键后,按照占位符对缓存进⾏解读。而这个区域就是我们的。作用:把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中,也就是输出单个字符。最⼩宽度和⼩数位数这两个限定值,都可以⽤ ***** 代替,通过 printf() 的参数传⼊。scanf在处理占位符时候,如果占位符不是%c,会忽略起始的。
2024-04-30 10:06:19
647
翻译 AI电商未来已来!数字人加速破圈,成为全网讨论焦点!
传统短视频需要的团队、时间、成本都比较高,而数字人只通过一个人就可以实现视频素材的制作,无论是人工成本,还是效率,都有很大的改善。通过上述一线专家分享以及现场嘉宾的讨论来看,大家不约而同地达成了一个共识,虽然现实世界还未创建出像影视大片里的同款科幻宇宙,但以数字人为代表的AI电商的快速出圈,对于想要找到行业突破口的企业来说,无疑是一门好生意,可落地、可复制,操作性强。所以,AI电商的崛起,不仅是技术的胜利,更是对消费者需求的深度洞察和满足,而数字人的加入,将让电商行业迎来更加智能化、个性化的新时代。
2024-04-30 09:49:34
42
原创 C++——数据类型笔记
在C++中,可以使用class和struct 关键字来创建自定义类型,这些类型可以包含自定义的数据成员和成员函数。自定义数据类型的理解可以简单地归纳为以下几点:抽象数据类型:自定义数据类型可以将多个数据组合在一起,形成一个新的抽象数据类型,用于描述某种概念或实体。模块化:自定义数据类型可以帮助我们将程序模块化,将相关的数据和操作封装在一起,提高代码的可读性和可维护性。代码复用:通过定义自定义数据类型,可以在程序中多次使用相同的数据结构,从而提高代码的复用性。
2024-04-29 09:20:11
557
原创 Java集合篇之深入解析LinkedList
我们看过RandomAccess 接口的底层的同学知道,这个接口也是个标识性接口,只要实现了这个接口就意味着支持通过索引访问元素。由于 LinkedList 底层数据结构是链表,内存地址不连续,只能通过指针来定位,不支持随机快速访问,所以不能实现 RandomAccess 接口。该方法中通过传入的index参数和size的1/2进行比较,小于则从链表头向后查找,否则从链表尾向前遍历查找,这与ArrayList中的get(index)方法还是有本质上的区别!
2024-04-29 09:13:56
307
翻译 以智算网络驱动行业创新,新华三构建开放生态体系
未来,新华三将持续加强与各生态伙伴的合作关系,共同探索异构网络的前沿技术,推动产业生态的繁荣与发展。在标准制定方面,新华三作为牵头组织,积极参与诸如GSE标准和全球EUC标准等关键规范的制定工作,而且注重将理论研究转化为实际应用场景,努力践行这些标准在云计算及网络融合技术创新上的落地实践。因此,新华三在提供硬件设备的过程中,并不仅局限于简单的带宽转发服务,而是充分考虑了多方面的因素。因此,新华三将“开放性”视为核心价值之一,致力于打破技术和市场的壁垒,构筑开放共赢的生态环境。
2024-04-29 09:05:19
26
原创 加速博客体验:静态资源优化技巧大揭秘!
在博客写作中,静态资源加速方式是解决图片加载速度的关键。通过图片压缩、Nginx静态资源缓存和EdgeOne等CDN产品的应用,我们提高了网站性能和用户体验,减轻了服务器带宽压力。EdgeOne的功能包括静态加速、网站证书和HTTP重定向至HTTPS,简化了网站管理流程,提升了安全性。合理利用这些静态资源加速方式,博客创作者可以享受更优秀的写作环境和展示平台。
2024-04-28 10:25:33
866
2
原创 理解前端工程化
最初对前端的观感:眼花缭乱,各种各样的工具链以及其对应的配置文件、VS Code 插件,各种技术百家争鸣,选择众多。后来才理解前端不同于后端,后端代码的运行环境相对可控,而前端代码运行在用户设备上,所以需要兼容不同的环境,而很大一部分的工具、配置都是解决兼容性的问题。
2024-04-28 10:22:17
679
翻译 B站基于Iceberg的湖仓一体架构实践
在B站,基于我们之前的技术栈和实际的业务场景,我们选择了第二个方向,从数据湖架构向湖仓一体演进。在我们实际的数据处理场景中,除了AI和数据探索等场景,探索未知数据的未知问题,比较依赖数据湖架构的灵活性,其实大部分的场景是基于已知数据的,即我们的数据开发同学,实际上是基于Hive表的强Schema数据,进行从ODS,DWD,DWB到ADS等各个业务数仓的分层建设,本质上我们是主要是基于数据湖的架构进行业务数仓的建设,如何提升这部分场景的查询效率,使用成本和用户体验是我们在这方面工作的核心内容。
2024-04-28 10:17:28
63
原创 Python 内置界面开发框架 Tkinter入门篇
作为一个产品的开发来看的话,我们需要清楚地知道自己到底想要的产品是长什么样子,然后才是实现的过程。我们打算做一个基本的记事本,它可以点击按键打开 TXT 格式的文本文件,把文件内容读取出来显示在编辑区,然后在编辑区修改了文件内容后,又可以点击其它按键把编辑区的内容另存为其它文本文件。按照上面的功能需求定义,就可以给记事本定个草图啦,长这样可以看到,它需要先有个主窗口然后,应该有个标题栏,上面显示有软件名称 「记事本」window.title("记事本")
2024-04-27 15:49:29
919
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人