暂时未有相关云产品技术能力~
暂无个人介绍
刘谦春晚纸牌魔术背后的数学—海明码原理简介
MGLRU是一种新型内存管理算法,它的出现是为了弥补传统LRU(Least Recently Used)和LFU(Least Frequently Used)算法在缓存替换选择上的不足,LRU和LFU的共同缺点就是在做内存页面替换时,只考虑内存页面在最近一段时间内被访问的次数和最后一次的访问时间,但是一个页面的最近访问次数少或者最近一次的访问时间较早,可能仅仅是因为这个内存页面新近才被创建,属于刚刚完成初始化的年代代页面,它的频繁访问往往会出现在初始化之后的一段时间里,那么这时候就把这种年轻代的页面迁移出去
在过去的几十年中,Linux内核为了有效地管理进程,采用了位图(bitmap)数据结构来记录和跟踪进程的PID。我们知道Linux支持的最大进程数量为65535个,那么用位图来表示的话只需要16位bit就够了,这大大节约了内存空间,随着系统规模的扩大和复杂性增加,尤其是云计算、容器等新兴虚拟化技术大爆发的时代中,操作系统经常会在短时间内快速创建或者销毁大量进程,在这种场景下位图的全面查找时性能问题就逐渐暴露出来了。为了解决这些问题,Linux内核逐渐采用radix树(radix-tree)来替代位图,对进程PID进行管理,这个替换的思路就是用空间换时间。
Java21中新引入虚拟线程是一种线程抽象,它提供了一种轻量级的线程实现方式,可以在用户级别进行线程调度和管理。它本身是基于操作系统级别的线程的,但是由JVM调度的,因此不需要系统内核的介入,减少了线程调度的开销。虚拟线程的思想是在操作系统线程的基础上增加一个轻量级并发调度对象,原有操作系统线程发生阻塞时往往需要进行开销非常大的上下文切换才能完成调度,但是在虚拟线程发生阻塞时将同属一个操作系统线程的另外一个虚拟线程进行调度运行是一个开销比较低的方式,这将大幅提升Java的并发能力,可以说在这个并发为王的时代对于并发能力的大幅提升也是虚拟线程在Java21中被称作史诗级更新的原因。
今天和几位单位大佬聊天时,讨论到一个非常有趣的问题-当程序执行MOV [0001H], 01H计算机实际上都做了哪些工作?乍一看这个问题平平无奇,CPU只是把立即数01H放在了地址为0001的内存里,但仔细想想这个问题远没有那么简单,由于现代计算机体系中CPU速度比内存要快2到3个个数量级,因此从CPU执行MOV指令,到实际把01H写入内存之间,还有非常漫长而复杂的过程。
相信很多网友感觉今年的日子不好过,各方面都在缩减支出,尤其是部分IT设备还在不断涨价,像今年的英伟达的40系桌面级显卡和A/H系列的商用显卡,动辙价格跳涨30%,让广大开发者苦不堪言。所幸在省钱方面,笔者有些经验和渠道,写成此文分享给大家,希望大家能在这个波动的周期中,控制好成本,少花甚至不花冤枉钱。
笔者的老友之前是搞游戏开发的对于云产品不太了解,而这时阿里云在国内技术生态完善的优势再次凸显出来了,通过云栖社区,我们认识了阿里云前技术大拿毕玄老师,并在由毕率老师创建的由联珠贯公司的支持和帮助下完成了对于云服务的整体规划,这里也必须要承认阿里云的产品线是真的全,只要是我们想要的服务基本都可以买到,这也让通过规划要效益成为可能。阿里云的视频处理(MPS)和亚马逊的Rekognition都是不错的选择。
天道好轮回,苍天饶过谁。近日英伟达称,他们被要求停止向中国出口两种用于数据中心的GPU A100和H100,AMD也表示,已经收到新的要求,MI250出口到中国将会受限。A100,MI250等高端型号的GPU最主要特点就是可以提供双精度FP64类型的算力,而国产GPU一般在FP16也就是半精度数据处理方面不差,在FP32类型的处理能力上表现就一般了,FP64几乎是缺失的状态。
在这个社会全面数字化转型的时代,人们对于计算机算力的需求越来越大,对于日常使用的主力办公笔记本也是要求越来越全面,尤其像笔者这样的编程一族,今年一季度酷睿12代系列处理器的推出,堪称是我们程序员+游戏党的福音。
遥想笔者读大学时在技术讨论时多是储如i+=(++i)+(i++)之类的孔乙己式的问题,而最近我们关注的热点要不是删库跑路坐牢的程序员,要不是员工离职倾向分析系统;而反观国外大神的博客,要不就是这种切入点非常简单,但是最终能够升华至编程之道层面的举轻若重的文章,要不就是秀出那些智商碾压的神仙代码,从这个角度上看我们国内的IT技术氛围还有极大的提升空间。
当我们在谈SWIFT时,到底在谈什么?
笔者上次用C#写.Net代码差不多还是10多年以前,由于当时Java已经颇具王者风范,Net几乎被打得溃不成军。因此当时笔者对于这个.Net的项目态度比较敷衍了事,没有对其中一些优秀机制有很深的了解,在去年写《C和Java没那么香了,高并发时代谁能称王》时都没给.Net以一席之地,不过最近恰好机缘巧合,我又接手了一个Windows方面的项目,这也让我有机会重新审视一下自己关于.Net框架的相关知识。 项目原型要实现的功能并不复杂,主要就是记录移动存储设备中文件拷出的记录,而且需要尽可能少的占用系统资源,而在开发过程中的一个现象令我颇我惊异,在使用Invoke方法记录文件拷出情况时,程序执行效率
最近著名的编程竞赛网站Codeforces发布了一篇名为《AlphaCode(DeepMind) Solves Programming Problems on CodeForce》的文章,将阿尔法扣(AlphaCode)带入人们的视野,更让DeepMind再次霸榜各大媒体的头条,而近期CHATGPT更是阿尔法扣的集大成者,本文根据阿尔法扣的建设思路,来推理CHATGPT的相关情况
1月18日,阿里云发布“核心转型路书” ,并推出“金融级云原生工场”,更是以颇为干货的内容,详细阐述了阿里云在参与支持我国金融机构实现核心分布式智能化转型中的成功实践。在详细阅读了全书之后,笔者认为金融机构的核心系统升级的时代大戏已经开启,并将在阿里云的引领下逐渐走向高潮。
近来来计算理论的发展极其缓慢,而与之对应的是计算机领域的应用侧发展可谓日新月异,像GPT-3及其衍生的AI模型,各类大数据模型、超大规模云平台等等方面的进展不胜枚举,相关成果也都举世瞩目,但这些计算机应用大发展本质,都是硬件价格不断快速下降所带来的衍生红利,而这种现象早在50年前就被摩尔定律所明确预言了,凡是能靠算力解决的问题目前看都不再是问题。
在今年江苏卫视的跨年晚会上,周深与和与邓丽君合作了《大鱼海棠》、《小城故事》等三首曲目,虽然仔细看邓丽君的形象还是略有破绽,但整体的自然度已经过关了。本次重现邓丽君的形象,使用的类似于vtuber虚拟合成技术,而声音其实是有真人在背后发声的,而非由AI合成。
1999年美国召开的移动计算和网络国际会议上麻省理工大学的阿什顿教授提出了基于互联网、RFID技术、EPC标准,在计算机互联网的基础上,利用射频识别技术、无线数据通信技术等,构造实现全球物品信息实时共享的实物互联网“Internet of things”(物联网)的方案,这也是物联网的由来。随着这二十年来技术的不断进步,物联网已经完成了由早期的传感网到感知网,再到智能网、认知网的三阶段跨越式升级,目前的物联网已经形成了一个信息具有可靠传递和智能处理能力的连接物体与物体的信息网络,具有全面感知、可靠传递和智能处理三大特征。
Zellij是一款非常优秀的终端工作区和多路复用器(类似于tmux和screen),由于使用Rust语言开发,因此与Zellij与WebAssembly原生兼容。作为一款功能强大,同时又容易上手的终端复用工具,将会话(session)和窗口解耦,使得用户可以在单个窗口内运行多个虚拟终端,真正做到保持界面清爽还提高了工作效率。
这几天看到一个大厂的面试题,感觉比较有意思,是学习递归的好题目,下面和大家分享一下这道题的解法。
最近笔者在量化交易的大神沟通中,收到这样一个需求,需要快速把股票代码转换成整形变量,也就是需要把新收到的股票交易信息,迅速与历史的股票信息结合起来,从而通过交易策略快速决策。 由于量化交易速度就是生命线,因此直接通过股票代码去在数据库中查询到同一股票的历史数据对于这个场景来说就太慢了。目前来说比较通行的做法就是把股票代码直接映射成整 形,而映射之后的这个整形又是历史数据的内存地址,这样才是效果比较高的做法。
在日前的ICCAD 2021(计算机辅助设计国际会议)上,华中科技大学的学生团队首次参赛,就拿到了EDA布局布线算法的第一。可以说我们在EDA方面后备力量上已经开始有了一些可喜的进展。 但是芯片领域需要物理学、材料学的基础研究和精密制造,突破制约创新的瓶颈。包括EDA的设计,材料、生产制造、工艺、设计能力、制造、封装封测等关键流程,全部被华为设定进今后的目标领域之中。 “忘记历史就意味着背叛”,在我们重启芯片制造领域基础研究的时点上,我们尤其有必要回顾一下历史,看一下我们在芯片领域到底是怎么落后的,为了写好本文我找到了我国光刻领域的开创之作《光刻掩膜版的制造》,带大家共同回顾一下我们光刻的发展
由于我工作中用NLP功能比较多,因此我试用的方向是通过NLP来梳理报纸中的内容,我首先分析了一下权威报刊的链接构成,
笔者并不关心以上这些和技术无关的科技新闻,这里笔者想探讨的话题是不久之前FaceBook发生的那次由于BGP路由协议配置错误造成的史诗级中断事故,在当时故障期间FaceBook所有旗下APP全面对外服务中断,而且故障的时间长达7个小时之久。针对这个话题我也写过一篇博客《一行小错为何产生巨大破坏-Facebook史诗级故障大反思》进行过总结,而如果这次Facebook真的要All In元宇宙,那么有关网络路由协议的问题还需要进一步的优化,不彻底解决网络方面的问题,只是创造一个时常宕机的元宇宙的话,没有任何意义。
落花有意随流水,流水无情恋落花。英特尔和苹果的良好关系,可以一直追溯到 2005 年,彼时这两家巨头在 Mac、一体机等桌面产品线合作较为融洽,但 2010 年以后,英特尔“挤牙膏”似的产品升级策略以及 2020 年苹果 M1 的全新登场,让他们逐渐形同陌路,甚至最终分道扬飙。
目前手机SOC的性能越来越少,很多程序员在终端程序的开发过程中也不太注意性能方面的优化,尤其是不注意对齐和分支优化,但是这两种问题一旦出现所引发的问题,是非常非常隐蔽难查的,不过好在项目中用到了移动端的性能排查神器友盟U-APM工具的支持下,最终几个问题得到了圆满解决。 我们先来看对齐的问题,对齐在没有并发竞争的情况下不会有什么问题,编译器一般都会帮助程序员按照CPU字长进行对齐,但这在终端多线程同时工作的情况下可能会隐藏着巨大的性能问题,在多线程并发的情况下,即使没有共享变量,也可能会造成伪共享,由于具体的代码涉密,因此我们来看以下抽象后的代码。
最近Rust For Linux的项目,随着Rust的火爆也开始逐渐升温,但是谷歌的强烈支持以及rCore OS、Redox等各种Rust操作系统项目的经验积累,Rust想进入到Linux的真正核心,也还是有很长的路要走,之前笔者已经撰文对于Rust在汇编支持、panic和alloc等系统操作等方面的问题进行过简要说明了。这里再对于Rust进入到Linux内核的最大拦路虎-也就是内存模型方面的问题,做一下介绍。
弱小从来不是生存的障碍,傲慢才是。10月4日FaceBook发生了一次史诗级中断事故,故障期间FaceBook所有旗下APP全面对外服务中断,而且故障的时间长达7个小时之久。根据Facebook最新的声明来看,故障的原因是由于工程师错误地发出了一条指令,切断了Facebook的数据中心“在全球范围内的所有网络连接”。
我们在上文《Rust网络编程框架-Tokio进阶》介绍了async/await和锁的基本用法,并完成了一个Server端的DEMO代码。本文继续来探讨这个话题。
我们在上文《小朋友也能听懂的Rust网络编程框架知识-Tokio基础篇》对于Tokio的基础知识进行了一下初步的介绍,本文就对于Tokio的用法及原理进行进一步的介绍与说明。 目前市面上绝大多数编程语言所编写的程序,执行程序与代码编写顺序完全相同,当然有的读者可能会提到CPU的乱序执行机制,但乱序执行从本质上讲还是顺序提交的,程序在第一行执行完成之后再去执行下一行,并以此类推,是通用的编程模式。
今天我们继续高并发的话题,传统的云计算技术,本质上都是基于虚拟机的,云平台可以将一些性能强劲的物理服务器,拆分成若干个虚拟机,提供给用户使用,但在互联网发展到今天,虚拟机还是太重了。即使是飞天集群,新增部署虚拟机的时间也是以分钟来计的。但是对于互联网用户来讲20秒的等等就是就会千万50%以上的用户流失,不能忍受的煎熬,因此Docker秒级启动的速度也不是个完美的解决方案,最终还是要Serverless极速的伸缩才能满足客户需求。
最近IT行业有三个事件特别值得观察,首先是8月中旬正式发布的《北京市外来新生代农民工监测报告》,在这个报告中官方首次将从事软件和信息技术服务行业的人员列入农民工范畴,这种说法虽然得到广大程序员们的广泛认同,不过为什么软件开发与传统的农业生产越来越像,也值得深思。
目前半导体行业的发展可以用冰火两重天来形容,传统的桌面及移动SOC市场已经基本停止增长了,而云计算成了各大巨头的兵家必争之地,这点笔者在前文《英特尔火线换帅、苹果搅动乾坤,国芯路在何方》已经有过详细论述了。 在行业整体突飞猛进的基础上,技术之魂帕特.基辛格从Vmware回归以后,英特尔便开始了史无前例的颠覆式革新,最近他们拿出了一款从头到脚本全面升级的重磅产品Alder Lake,可以说Alder Lake的发布不但告慰了葛洛夫、欧德宁等前任CEO的在天之灵,同时也宣告英特尔戏彻底摘掉了“牙膏厂”的帽子。
从传统意义上讲,对齐是指将变量的存储按照计算机的字长进行边界对章,这里字长一般是指一个WORD的位数,也就是现代计算机中一次IO的数据处理长度,通过计算机的字长与CPU的寄存器长度相等。现代的CPU一般都不是按位进行内存访问,而是按照字长来访问内存,当CPU从内存或者磁盘中将读变量载入到寄存器时,每次操作的最小单位一般是取决于CPU的字长。比如8位字是1字节,那么至少由内存载入1字节也就是8位长的数据,再比如32位CPU每次就至少载入4字节数据, 64位系统8字节以此类推。
今天我们还是继续来聊高并发的话题,我们知道Swich分支是一个非常有用的语法,这是一个可以回溯到上世纪的Pascal、C等经典语言的分支结构,主要的作用就是判断变量的取值并将程序代码送入不同的分支,这种设计在当时的环境下非常的精妙,但是在当前最新的CPU环境下,却会带来很多意想不到的坑。
今天我们继续高并发的话题,在上次的博客中我们有提到,Rust的Future机制非常有助于程序员按照更为自然、简洁的逻辑去设计系统,我们必须要知道高并发系统的关键在于立交桥的分流与导流构造而非信号灯的限流。因此把精力放在设计锁、互斥系这些信号系统上是非常事倍功半的。
今天我想再来讨论一下高并发的问题,我们看到最近以Rust、Go为代表的云原生、Serverless时代的语言,在设计高并发编程模式时往往都会首推管道机制,传统意义上并发控制的利器如互斥体或者信号量都不是太推荐。
Go有GC因此很多程序员也不关注对象的释放问题,不过一旦与闭包结合就容易出现问题,本文对此进行排坑,并介绍Rust的做法
哈希表(HashMap、字典)是日常编程当中所经常用到的一种数据结构,程序员经常接解到的大数据Hadoop技术栈、Redis缓存数据库等等最近热度很高的技术,其实都是对键值(key-value)数据的高效存储与提取,而key-value恰恰就是哈希表中存储的元素结构,可以说Redis、HDFS这些都是哈希表的经典应用,不过笔者之前也只知道哈希表比较快,但对于具体什么场景下快,怎么用才快等等知识却一知半解,因此这里把目前的一些研究成果分享给大家。
最近不少读者都留言说博客中的代码越来越反哺归真,但讨论的问题反倒越来越高大上了,从并发到乱序执行再到内存布局各种放飞自我。 其实这倒不是什么放飞,只是Rust对我来说学习门槛太高了,学习过程中的挫败感也很强,在写完了之前的《Rust胖指针胖到底在哪》之后笔者一度决定脱坑Rust了,但截至本周这个目标还是没有实现,因为我所在的Rust学习群,有一个灵魂拷问,Rust的技术本质什么?不回答好这个问题,我简真是没法得到安宁。
最近阿里云最新的云原生技术Serverless发展也是如火如荼,我在前辈巨师的带领下,也进入到学习Rust的大军中,与其它语言一样,Rust最初的爬坡难点也在于字符串方面的处理。本文针对胖指针进行了相关详细介绍。
笔者在上周参加阿里云开发者大会时,特别注意到一个现象就是Serverless这个概念被反复提及,其受关注程度提升明显,笔者仔细看了一下,Serverless的核心理念就是函数式计算,开发者不需要再关注具体的模块,云上部署的粒度变成了程序函数,自动伸缩、扩容等工作完全由云服务负责,能够想象Serverless必将在未来引领时代潮流。
PolarDB要开源,相关技术情况简介
“韩信点兵,多多益善”,目前云平台能管理的节点已经越来越多了,但是跨CPU架构的不同节点进行统一管理还是一个业界的难题,这几天笔者现在参加了阿里云峰会,个人认为阿里云智能总裁张建峰发布了“一云多芯”是今年以来云计算发展史上最具有革命性的技术之一,在“一云多芯”的模式下,飞天云操作系统可以将服务器芯片、专用芯片等硬件封装成标准算力,无论底层是X86、ARM还是RISC-V,给客户提供的都是标准的、高质量的云计算服务。但一云多芯解决了这个痛点
工欲善其事,必先得其器,一款得心应手的编程工具,对于程序员来说无疑是效率神器,可以令开发工作事半功倍,在笔者亲身试用了云原生开发工具之后,可以说目前以云开发平台为代表的最新开发平台,其带来的效率提升加成,令人吧为观止了。
今年是云栖大会自2009年开办以来走过的第十一个年头,也是张勇接任阿里董事会主席以后,连续第三年在云栖大会上发声,来探讨新技术的带来的能量与价值了。笔者认为这些明星产品的背后,“云原生”才是真正的“新技术”C位。