首页 文章 精选 留言 我的

精选列表

搜索[专家模式],共10000篇文章
优秀的个人博客,低调大师

谷歌深度学习专家 Dustin Tran 跳槽至 xAI

Dustin Tran 宣布从 Google DeepMind 跳槽至马斯克的 xAI,成为公司研发新一代 Grok 模型的重要成员。此消息在他于社交媒体上正式官宣后不久,马斯克便迅速转发,确认了这一人事变动的真实性。 Dustin Tran 是 Gemini 项目的核心开发者,自项目诞生以来,他在多个关键阶段发挥了重要作用。 从 2014 年在加州大学伯克利毕业,取得数学与统计本科学位后,Tran 继续攻读哈佛大学的统计学博士,并最终在哥伦比亚大学获得计算机科学博士学位。他在学术界的贡献也颇为显著,其论文总引用量超过 2.4 万次,曾荣获包括 Google 博士奖学金在内的多个奖项。 在离开 Google DeepMind 的长文中,Tran 深情回顾了自己在该公司的 8 年旅程,他参与了多个重要项目的开发,尤其是 Gemini 的成长过程。 他提到,最初人们对 Google 在 AI 领域的未来持悲观态度,但随着 Gemini 在用户偏好上占据领先地位以及在科研突破上的不断进展,这种看法逐渐改变。 加入 xAI 的原因,他提到的是这里的巨大算力和数据优势。Tran 对 xAI 的信心满满,认为这是研发前沿级语言模型的必备条件。尤其是 Colossus 2 的强大算力,使他意识到 xAI 在行业中的竞争力。

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

为什么CV专家都建议学好C++?

不知大家有没有发现,很多大厂的算法岗,都会要求熟悉C++。既会Python,又有C++开发经验的求职者在面试中会更具优势。 这主要是因为一旦涉及到非常复杂的运算,就必须讲求执行效率。而在编程语言中,既有面向对象编程机制,又能调用底层的实现模块的,C++是最合适的选择。 众所周知,C++的学习门槛比较高,究其原因,往往离不开以下两点: 1、语法规则多 2、缺乏实操 了解了一定的语法基础后,却不知道如何使用,这是很多初学者难以突破的瓶颈。事实上,有很多语法规则看起来很简单,但只有自己动手开发,才会发现其中的难点。所以我建议大家在看书、看视频学习之余,一定要及时找一些项目来练手。 今天给大家找来了1个我体验过觉得非常不错的C++实战开发训练营,3天时间,带你设计一门自己的编程语言。 原价599元,本号粉丝 0元 报名 24H 后恢复原价! 长按3秒 即可扫码 现在报名,还赠送下面这个《printf函数精讲》视频: 10小节实操干货,带你实现自己的printf函数 这份由C语言与算法数据结构学科创始人——于方泽讲解的重量级视频学习资料,可以帮助你探索printf函数实现的奥秘,并让你学会如何使用二分查找算法和牛顿迭代算法实现自己的sqrt函数。 Q 这个训练营适合什么基础的人? 这个自制编程语言的项目,会带大家体验1个支持变量定义、IF语句和For语句的语言解释器实现全过程,要求我们转换思维,站在程序设计者的角度来把握学习,对0基础的人来说是个不小的挑战。如果有一定C语言基础,会更容易消化。 但3天里主要讲核心的搭建逻辑,所以也不会很复杂,如果你对这个项目、或者算法学习感兴趣,即使缺乏相应的基础,也可以跟着导师一步一步来把项目完成。 尤其是 最近有面试的人,第2天,来自前百度面试官求职辅导“专场”,一定不能错过! Q 这个训练营的导师是谁? 这期训练营的导师是 ACM亚洲区金牌得主、百度NLP引擎的开发者胡光。 计软专业的同学基本都知道ACM竞赛,它是公认最顶级的算法竞赛,被称为『算法竞赛的奥林匹克』。胡光老师早在10年前就拿过ACM亚洲区的金牌,并2次晋级全球总决赛。 Q 参加训练营有哪些收获? 这个训练营不仅让你从实际的项目开发中学习编程规范,还有专门的算法题专场,ACM金牌大牛手把手带你手撕Leetcode题。 Q 有没有课前预习和课后复习的资料?项目源码有吗? 每天课前可找助教领取学习资料: Day1:《C++编程思想》(第二版.附源码) Day2:《LeetCode刷题》 Day3:《百度内部编码规范》 每天课后可找助教领取在线课程: Day1:《C语言程序设计》 Day2:《算法与数据结构》 *注:以上为在线伴随式学习课程,对初学者练习写代码很有帮助! 3天课程源码可以在训练营结束后找助教领取,除此之外,直播间还有超多抽奖福利! 长按扫码,即可免费报名 本文分享自微信公众号 - 视学算法(visualAlgorithm)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

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

IO问题成顽疾,鹅厂专家来教你

| 作者 王文安,腾讯CSIG数据库专项的数据库工程师,主要负责腾讯云数据库 MySQL 的相关的工作,热爱技术,欢迎留言进行交流。 在日常工作中,有时候会发现 MySQL 的状态不太对劲,这时候就会看看监控指标,可能会发现:写入 QPS 开始出现毛刺,或者 IO 的指标很高。这时候该怎么办呢?本文会从 Linux 层面入手,根据不同的 IO 特点来分析 MySQL 数据库可能遇到的问题,并给出一些可参考的优化/缓解思路。 一、怎么看懂 IO 指标? 检查 IO 的问题会使用iostat这个命令,这里展示一下命令的效果(iostat -x 1 -m,debian 10.2): iostat avg-cpu 自然就是 CPU 相关的指标,判断 IO 问题时可以关注 %iowait,其他指标的意义如下: ·r/s 和 w/s:合并过后的读请求和写请求的每秒请求数,可以当做 IOPS 来理解。 ·rMB/s 和 wMB/s:磁盘的读写吞吐量。 ·rrqm/s 和 wrqm/s:每秒合并的读请求和写请求数量。 ·%rrqm 和 %wrqm:合并的读请求和写请求百分比。 ·r_await 和 w_await:读请求和写请求的平均响应时间,包含真正的处理时间和队列中的等待时间(ms)。 ·aqu-sz:平均队列深度。 ·rareq_sz 和 wareq_sz:一个读请求和写请求的平均物理大小(KB)。 ·scvtm:计算出来的平均 IO 响应时间,目前已经不准确,不用再关注。 ·%util:如果使用了 RAID 或者 SSD,则忽略这个指标,仅在单块机械盘上准确。 一般来说,评价一块 IO 设备(忽略机械盘的情况,没有评价的意义)是否达到了高负载情况,可以看这几个指标:r/s,w/s,rMB/s,wMB/s,r_await,w_await,aqu-sz。 二、MySQL 与 IO 由于 MySQL 涉及到 IO 相关的参数会比较多,因此这里仅一部分经常用到的参数以及在测试&模拟中使用默认设置: 参数 设置 备注 innodb_io_capacity 16000 定义了后台任务可用的 IOPS 量 innodb_io_capacity_max 32000 定义了后台任务可用的最大 IOPS 量 innodb_flush_log_at_trx_commit 1 控制事务的提交策略,具体信息请参考官方文档 sync_binlog 1 控制 binlog 落盘的频率,具体信息请参考官方文档 innodb_io_capacity 和 innodb_io_capacity_max 是最直接限制 IOPS 的指标,大多数时候,SSD 可以设置成 16000 或者更高的数值,如果是云主机或者其他的共享存储设备,则需要了解一下详细的 IOPS 上限再具体调整。trx_commit 和 sync_binlog 这两个参数也放进来的原因是不同的参数组合对 IO 的压力也会有区别。通常的用法是双 1 或者 20(二零),参考官方文档的描述,双 1 在每次提交事务的时候都会刷盘,对 IO 的压力要高不少;20 则是滞后刷盘,对 IO 的压力会较小,因此写入 QPS 会高一些。 另外,可以关注到一个细节,innodb_io_capacity 的描述对象是:后台任务。这代表着 MySQL 后台的 flush,purge 操作会受到这个参数设置的限制。 三、测试环境 本次测试使用腾讯云服务器的高 IO 型 IT3 实例,自带了 3TB 的本地 NVME。由于腾讯云平台限制了系统版本(debian 9),因此 iostat 在输出内容上稍有差异,但是不影响分析,简单用 fio 跑了一下 16k(innodb_page_size 的默认配置) 的 IO 性能: 类型 IOPS 吞吐量(MB) 随机读 121959 1905 随机写 98326 1536 随机读写(读部分) 47129 750 随机读写(写部分) 47152 754 那么,为什么测试环境要用一个完全不会有 IO 瓶颈的呢?这是为了方便展示调整 MySQL 之后的效果。如果整套系统的 IO 设备负载长期处于高水位的话,最佳优化策略是升级 IO 设备,而不是调整 MySQL。因此所有的分析和应对的场景都属于中、短时间内的高 IO 负载。 四、IO 分析 1. 纯写入 先看一种比较纯粹,但是较少出现的 IO 负载场景: iostat_wo 这种类型的指标有一个明显的特点:IO 负载中没有,或者几乎没有读取相关的压力。这种负载的特征一般是缓存足够放下所有的数据,因此不需要从磁盘上读数据,压力全部在写入上。 首先能想到的,显然是trx_commit 和 sync_binlog 这两个参数,把双 1 改成 20 的配置,产生 QPS 变化的原因也比较好理解:原本一个事务需要刷一次磁盘,变成多个事务刷盘操作合并到了一起,就像是提高了每个 IOPS 的“事务处理效率”,比如从 1 事务/IOPS 变成了 N 事务/IOPS。 除了提高“每个 IOPS 的事务处理效率”以外,其实还会有另外一种思路:适当限制后台任务的 IOPS。实际上 MySQL 的写入会涉及到非常多的 buffer,log,并产生后台任务相关的数据,出现中等时间的高写入场景时,后台任务一般会慢慢堆积需要 flush 和 purge 的数据,如果 innodb_io_capacity 和 innodb_io_capacity_max 的参数设置得比较高,可能会让后台任务消耗过多的 IO 资源,这时候适当调低一些可以在一段时间内稳住写入 QPS,等高写入的压力过去之后再回滚设置。 另外,如果有更加精细化的调整方式,应该会有更好的效果,目前只能靠这个参数一刀切,不过不要改得太低,因为当后台任务堆积的数据过多,触发强制刷脏/checkpoint 等机制时,会大幅度的侵占 IO 资源,导致非常剧烈的写入 QPS 波动,这一点需要注意。 这里给出“反向调整”的效果,日志数据取自于某一个 sysbench 客户端,在 2050s 左右的时候大幅度调高了 io_capacity: 2. 纯读取 另外一种比较纯粹的场景,自然就是纯读取了,例如: iostat_ro 纯读取的 IO 特征说明缓存不够大,需要从磁盘读取热数据。那么增加内存和调高 innodb_buffer_pool_size,把更多的数据放到内存中就是最好的解决方案。至于需要加多少内存,可以结合实际业务 SQL 的响应时间(做好索引优化之后)和 buffer_pool 的命中率,从经验值来看,命中率(show engine innodb status里面)高于 99.5% 是比较理想的,如果实际 SQL 的响应时间不满足业务的需求,那么就可以根据实际命中率来估算需要的内存大小。 由于从 5.7 开始,MySQL 支持动态调整 innodb_buffer_pool_size 这个参数了,因此变更带来的影响相对小了很多,不过调整还是有代价的,尽量在业务低峰期操作。 3. 读写混合 最常见的肯定是读写混合的场景,比如像这样子的: iostat_rw 分析起来会相对复杂一点,但是结合纯读取和纯写入的分析之后,可以比较容易想到如下的可能性: 场景一:读写混合的场景。 场景二:纯写入的场景,但是内存放不下所有的数据,需要从磁盘读取之后再修改。 先看比较简单的场景2,本质上还是类似于纯写入场景,但是由于内存不够大,因此在排查 MySQL 的读写 SQL 比例(global status 中的 com_xxx 系列数据)之后,可以参考纯写入这个章节的内容进行分析处理。 虽然场景 1 会复杂一些,但是结合纯写和纯读的内容,分析的思路就有了,比如依次思考如下问题: 业务读写比例大概是多少? IO 系统的读性能问题比较大还是写性能问题比较大? 如果说: 业务读的比例高(例如 >4:1),IO 系统读的性能问题比较大:那么参考纯读取的内容,调高 buffer_pool_size 。 业务读的比例高(例如 >4:1),IO 系统写的性能问题比较大:那么参考纯写入的内容,调整事务提交策略或者 io_capacity。另外,此类场景可能是因为在大批量变更数据,也可以考虑一下优化这种业务行为。 业务写的比例高(例如<4:1),IO 系统读的性能问题比较大:那么参考纯读取的内容。 业务写的比例高(例如<4:1),IO 系统写的性能问题比较大:那么参考纯写入的内容。 业务的读写比例没有什么明显的特点,IO 系统读写的性能问题都比较严重:考虑以上所有的方法,包括升级硬件。 4.一些tips: 吞吐量,IOPS 和一些分散读写压力的手段 吞吐量和 IOPS ,一般情况下衡量 IO 系统性能最直观的指标,并没有特别的提及,主要原因还是判断起来很简单:如果iostat的指标已经达到或者接近了实际硬件的指标(比如达到了 75%),那么根据业务量增长的情况及早规划硬件升级或者其他的手段来分散读写压力。 常规的手段,可以简单的遵循以下场景来酌情使用:读多写少读写分离,写多读少拆库拆表加缓存。 判断 MySQL IO 情况的指标 如果 MySQL 在 IO 方面出现了阻塞的现象,那么可以观察以下几个指标: 参数名 意义 备注 Innodb_data_pending_fsyncs 当前阻塞的 fsync 操作 一般为 0,比较高的话,看一下 innodb_flush_method 的设置 Innodb_data_pending_reads 当前阻塞的 read 操作 一般为 0,如果指标较高且影响业务的话,参考读压力的应对方式 Innodb_data_pending_writes 当前阻塞的 write 操作 一般为 0,如果指标较高且影响业务的话,参考写压力的应对方式 Innodb_os_log_pending_fsyncs 写 redo log 时,当前阻塞的 fsync 操作 一般为 0,如果大于 0 的话,通常就是 IO 设备的瓶颈,考虑把 redo log 迁移到 SSD 或者做 IO 隔离,独占 IO 设备的性能 Innodb_os_log_pending_writes 写 redo log 时,当前阻塞的 write 操作 一般为 0,如果指标较高且影响业务的话,参考写压力的应对方式 InnoDB 还有很多其他的 read 和 write 的指标,通过show global status like '%innodb%read%'之类的操作都可以看到,但是这类指标一般是累计值,需要对比上一个取值时间的差值才能有比较实际的作用,通常也是用来判断 MySQL 的读写比例用,结合上表的 pending 数据和其他的系统指标来综合判断 IO 系统的负载。这些指标也是建议监控起来的。 五、总结 解决 IO 问题的手段是多样化的:最省事的升级硬件;最快捷的调整 MySQL(本文主要内容);比较常用的架构调整手段(读写分离,拆库拆表);结合实际情况来优化业务的行为(合并单行操作的 DML,拆分单个大量更新数据的 DML 语句等)。 虽然不能对上述手段进行全面的介绍,但是iostat提供的信息在分析 MySQL 瓶颈时还是非常有用的,本文仅从硬件的负载特点出发,简述了调整 MySQL 的一些思路。实际上需要多种手段结合起来才能比较好的应对 IO 方面的问题。 本文由博客群发一文多发等运营工具平台 OpenWrite 发布

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Spring

Spring

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

Sublime Text

Sublime Text

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

用户登录
用户注册