格友

其他

在调试器下看微信[如何耗电]

在今天这样干什么都离不开手机的时代里,手机的待机时间太重要了。特别是对于我这个不喜欢带充电宝出门的人来说,一旦看到手机电量低于20%,立刻就精神紧张了,因为一切信息都在手机里,如果手机没电,那么就失联了。我一直保存着一个小的诺基亚手机,我使用它多年,如今想来,它的最大好处是“一周只需充一次电”。对于今天我用的手机,必须每个晚上给它充电。即使这样,如果第二天用的比较多,还可能陷入缺电危机。是什么让手机变得如此耗电呢?我和计算机打交道20多年了,当然很清楚这个问题的答案。硬件角度看,屏幕和处理器(CPU、GPU等)最费电。而处理器到底费电多少,就要看软件了。手机厂商当然也知道这些道理,所以他们也一直在想办法。比如,打开我手机里的设置程序,切换到电池功能,它就会显示出一个很不错的耗电排行榜。在上面这个耗电排行榜上,硬件消耗25%的电量,展开后看到都是屏幕消耗的。硬件的列表里没有处理器,因为处理器耗的电就是软件消耗的,这样分类很合理。上图中的“软件(75%)”,
2023年10月17日
其他

LINUX平台高级调试和优化(庐山海会站)

2023LINUX庐山海会站软件调试高级研习班2023庐山海会站LINUX平台高级调试与优化关于LINUX的资料浩如烟海,学习LINUX的途径也有很多,如何才能在比较短的时间里获得一个比较大的提升呢?《软件调试高级研习班》将与各位LINUX爱好者共同探索这个问题的最佳答案。本着生动有趣、理论与实践密切结合的原则,本研习班独辟蹊径,选择具有深厚人文底蕴的庐山打造独有的沉浸式学习体验;使用调试之剑披荆斩棘,带你畅游纷繁复杂的LINUX世界;以格物精神,钻研代码,深挖LINUX系统的核心机制,这一讲求得一理,下一讲再求得一理,步步推进。整个研习班,旨在实现三大目标:深入理解LINUX操作系统的基础设施和核心机制;学习开发LINUX程序(内核模块和应用程序)的工具和方法;学习LINUX平台上的调试工具和调试典型问题的方法。本研习班由《软件调试》和《格蠹汇编》的作者张银奎主讲。THIS
2023年10月16日
其他

当GDB遇到STL

模板展开后的类型名和函数名往往很长,冗长晦涩,令人生畏-
2023年10月15日
其他

应用至上

Store,类似苹果上的应用程序商店模式。https://ubuntu.com/core/docs/store-overview因此,在幽兰使用Ubuntu
2023年10月11日
其他

粘在断点为哪般?

延迟落实这个断点,为其设置defer标志,也就是延缓设置这个断点。B.
2023年10月6日
其他

观察神秘的RQ

Q(AQ)。在Linux内核中,有个名字很短的结构体,叫rq,发音和阿Q很类似。rq结构体的名字只有两个字符,使用时,实例名也常常叫相同的名字。比如下面两个内核函数的参数都是struct
2023年9月28日
其他

拍案惊奇——GDB调试器以战说法

要点64位指针到底长什么样?汇编级别单步跟踪、看返回值、神奇的类型转换指令、符号扩展、地址空间。工具和主要技能:GDB、ni、si、disp、disassemble。知识点段错误、调用规约。
2023年9月22日
其他

穿越两大空间的调用栈

CPU的系统调用指令。比如下面的这段shmget函数的反汇编指令中,+16的位置便是SVC指令,它的前一条指令将0xC2赋值给x8,0xC2是shmget这个系统调用的唯一编号。=>
2023年9月21日
其他

幽兰代码本——开源软件实践家

概览幽兰代码本是格蠹科技专门为程序员和开源软件爱好者打造的移动计算平台,基于ARM架构的硬件设计,预装GNU/LINUX操作系统和大量开源软件,旨在彻底改变长期以来的交叉编译模式,为程序员提供本地化的开发和调试环境,让他们可以在本机编写代码、在本机进行构建,并且在本机进行调试。第一代幽兰代码本使用瑞芯微公司新推出的RK3588
2023年9月19日
其他

戒慎乎不睹,大模型体验记

今年最热的一个词,或许就是大模型。不管是严肃的技术会议,还是宽松的饭桌闲聊,大模型总是一个热门的话题。简单来说,所谓的大模型是大语言模型之简称,英文一般称为Large
2023年9月14日
其他

太乙峰下格纳秒

在盛格塾小程序里,曾经有一门独特的课,题目叫《低延迟设计与优化》,它的最初价格是3600。这门课上线本来是给一家企业客户的,他们年底预算剩余,预购课程。但是课程上线后,一些个人用户也下了单。因为内容还未上线,为了避免更多人下单,后来就把价格调整到了9万8(^_^)。今年春季杭州研习班上,几位老朋友又谈起这门课,促使我下定决心在今年开这门课。DAY
2023年9月12日
其他

LINUX平台高级调试和优化(庐山太乙站)

2023LINUX国庆加长版软件调试高级研习班2023庐山太乙站LINUX平台高级调试与优化关于LINUX的资料浩如烟海,学习LINUX的途径也有很多,如何才能在比较短的时间里获得一个比较大的提升呢?《软件调试高级研习班2023庐山太乙站》将与各位LINUX爱好者共同探索这个问题的最佳答案。本着生动有趣、理论与实践密切结合的原则,本研习班独辟蹊径,选择具有深厚人文底蕴的庐山太乙峰打造独有的沉浸式学习体验;使用调试之剑披荆斩棘,带你畅游纷繁复杂的LINUX世界;以格物精神,钻研代码,深挖LINUX系统的核心机制,这一讲求得一理,下一讲再求得一理,步步推进。整个研习班,旨在实现三大目标:深入理解LINUX操作系统的基础设施和核心机制;学习开发LINUX程序(内核模块和应用程序)的工具和方法;学习LINUX平台上的调试工具和调试典型问题的方法。本研习班由《软件调试》和《格蠹汇编》的作者张银奎主讲。THIS
2023年9月11日
其他

英特尔APX,终于等到你

大约10年前,我以英特尔员工的身份到腾讯公司做技术分享,在提问环节里,第一个抢到话筒的同行以急切的语调提出了一个非常急切地问题:“Intel的硬件断点寄存器数量太少了,什么时候能增加啊?”听到这个问题,我立刻知道这位同行的技术水平很深,他不仅知道很多软件工程师不知道的硬件断点,而且还知道这个功能的原理是依赖CPU硬件的,而且他知道X86
2023年8月29日
其他

玄而又玄——我亲历的三大总线

总线是计算机系统中的桥梁和公路。对于要学习计算机系统的人来说,如果不理解总线,那么很多认知就没办法落到实处,想不清两样东西是如何连接起来,数据是如何从一点到另一点的。最近两三年,做了比较多的底层开发,更加感觉到总线技术的重要性,同时也对总线的理解有了一些新的感悟。最近一段时间,又接触了几个总线有关的问题,触发我把以前的认知和理解都掏出来,”翻炒“数轮。在这样翻来覆去的思考中,有时也会冒出一些新奇的想法,产生一些新的”连接“。这些新连接把一个领域和另一个领域连通起来。跳线之苦我读大学时买的486电脑用的是ISA(Industry
2023年8月20日
其他

揭开WIFI技术栈的神秘面纱

Driver,代表ARM中外围设备与主机端的一种连接方式,如同X86中的PCIE,博通则称这种连接方式为DHD,张老师把这种连接方式类比为“一人牵一犬”。//
2023年8月15日
其他

有一种程序员文化叫串口

在个人电脑(PC)的黄金时代里,串口是PC的标配,梯形的白色金属外缘,包围着9根金黄色的插针。它的大名叫Serial
2023年8月13日
其他

老码农眼里的学编程秘诀

《小白学编程》系列总结老码农眼里的学编程秘诀自7月6日始,至8月8日止,盛格塾公益课程《小白学编程》系列经历了小暑、大暑、立秋三个节气,持续了一个月之余,从Shell脚本到C语言编程,完成了九讲内容的授课。张老师带大家走进了C语言的世界,体会了C语言的魅力,也与小白同学们一起去探索了编程世界中的各种奥秘。蒙以养正,圣功也事实上,由于课程价值较高,张老师的课程大都是付费课程,那这一次,为什么做了免费的公益课程《小白学编程》系列呢?在昨晚进行的《软件物语》第4期直播中,张老师坦言:“我的父亲从教多年,我无形中受他的影响,虽未做过专职教师,但做了很多教师的工作。父亲在我当年择业时劝我不要从教,但也许是遗传基因作祟,我的思想深处仍受父辈影响极深,认为做教育是极具意义的事情。”除此之外,张老师聊到他对《易经》的喜欢,给大家科普到《易经》前八卦中的第四卦是蒙卦。“
2023年8月10日
其他

山南之美属秀峰——幽兰新镜像纪要

幽兰代码本的第一代镜像叫鹤鸣(heming),源自庐山山南的山峰之名。在山南做软件研习班时,多次与格友们一起爬山,常常是沿着鹤鸣峰的脊背下山。鹤鸣也是诗经里的一首诗的题目,摘录如下:诗经·小雅·鸿雁之什《鹤鸣》鹤鸣于九皋,声闻于野。鱼潜在渊,或在于渚。乐彼之园,爰有树檀,其下维萚(音拓,意落叶)。它山之石,可以为错。鹤鸣于九皋,声闻于天。鱼在于渚,或潜在渊。乐彼之园,爰有树檀,其下维榖(音谷,树木名)。它山之石,可以攻玉。鹤鸣回顾鹤鸣镜像是在今年4月份发布的,第一批发货的幽兰代码本上使用的便是鹤鸣镜像的第一个版本。之后的大约2个多月时间里,格蠹发布了鹤鸣镜像的两个更新版本,分别称为鹤鸣2和鹤鸣3。鹤鸣2镜像的最大变化是把ROOTFS(根文件系统)从UBUNTU
2023年8月8日
其他

是谁调用的init函数?

今年春季的庐山研习班是在庐山桃花源景区的大山深处举办的,上课的地点是一栋二层小楼,一楼大厅用作教室,我被安排住在二楼。第一天的课程排的比较满,吃过晚饭又讲了2个多小时。下课后,大部分同学离开教室回自己的住处了。大家的住处分散在几个地方,在小河的两岸,相聚不是很远。下课时虽然已经是晚上9点多,山村里已经一片宁静。但仍有两三位同学意犹未尽,留下来和我聊天。聊着聊着,来自北京的一位格友提出一个问题:“怎么知道Linux驱动的init函数是谁调用的?”他是做安全的。从软件安全的角度来讲,这个问题当然很有意义。这次调用代表着重要的执行转移,从LINUX内核代码到可加装驱动(LKM)的代码。不管是我非常看重的调试研习班,还是一般的分享,我都非常鼓励大家提问。对于这个多角度都很有意义的问题,我竖起大拇指赞扬,并且忘记了一天的疲惫,立刻动手修改代码,拿刘姥姥驱动做为实例,在init函数里加了一个udelay调用。然后编译加载,使用Nano
2023年8月5日
其他

光速角逐——纳秒级优化训练营

Power)、电流和热量、pause指令、频率切换、锁频。3CPI——CPU工厂的硬指标要点:CPI或者IPC、理论值、使用perf
2023年7月31日
其他

大代码时代里的一个大陷阱

大代码时代里的一个大陷阱七月初,格蠹办公室里来了一批实习生。他们从不同的地方聚集到上海,最南的来自广东,最北的来自秦皇岛,最西的来自古都西安。他们有一个共同的特点——年轻,都是00后。1陆君首战告捷对于来格蠹实习的每一位实习生,我都尽可能为他们量身定制最适合他们的任务,不能太难,避免挫伤了他们尚未丰满的羽翼,也不能太浅,以免他们觉得没有学到东西,虚度了时光。但是,这个难度并不太好掌握,特别是刚开始的一两周,双方还都不太了解。以来自江西上饶的陆君(实名隐去)为例,上周的一个难题差点把他打倒,准备放弃。6月15日下午,我和陆君在一个直聘平台上相遇,看到他的学校在江西上饶,让我不禁想起了著名的鹅湖书院。和他初步聊了几句后,我在五点半的时候发给他一份编程题目,两个小时后,他发来了答案。今天的大学生,大多都缺少编码实践。陆君能快速完成编程题目,技术方面就算过了关。当晚,我和他语音聊了几分钟,双方都觉得合适,当即便约定好了实习计划。7月3日一早,有人敲门,我大声说请进。门被慢慢推开后,一位白面书生走进了格蠹的办公室,他就是陆君。在欢迎实习生的短会上,我问陆君是否去过鹅湖书院。他说不知道。鹅湖书院位于上饶的铅山县鹅湖镇鹅湖山麓,可能距离陆君的校园比较远。我给陆君安排的第一个任务是改进“刘姥姥”驱动。先编译老的代码,再增加新的功能。陆君很少说话,但是遇到问题时,会两手抱着笔记本电脑走到我的座位提问。他的笔记本并不是很重,但是他每次都是伸长双臂,像是抱着千斤重物一样。用了大约一周时间,他顺利完成了第一个任务,不仅完成了代码,还写了两篇文章。一篇是《整理刘姥姥驱动的基本用法》,另一篇是《比较处理硬件差异的两种不同做法:条件编译和动态检测》。在后一篇文章的末尾,他引用苏轼的名句——“横看成岭侧成峰,远近高低各不同”表达感慨之情,意思是同一件事情,可以有多种做法,效果不同,风景不同。开源项目2陆君的第二个任务是关于debuginfod的,是个开源项目,用来搭建调试符号服务器,分成服务端和客户端两个部分。整个设施的功能与微软的调试符号服务器很类似。下载了开源代码后,陆君有点茫然,感觉文件很多,代码量很大,不知道应该从哪里下手进行编译。我浏览了他下载的代码后,果断指出了方向,只需要关注和编译debuginfod一个目录,其它目录的都是基础库,可以使用动态链接方法,不需要自己编译。我建议他自己写个小的Makefile,单独编译debuginfod目录里的文件。目录里的文件不算多,只有几个头文件,一个C++源文件,2个c文件(下图中test.c是后来新增的)。按照我的建议,陆君写了个Makefile,处理了一些编译错误后,遇到了一大堆链接错误。对于这些链接错误,他不知道哪个函数应该链接哪个库了。我当时比较忙,便嘱咐格蠹的一位老员工帮助他,在Makefile中增加-l选项,指定动态库,解决链接问题。在老员工的帮助下,陆君成功编译出两个可执行文件,debuginfod和debuginfod-find。前者是服务端,后者是客户端。接下来是搭建一个模拟的服务器,测试整套符号设施,包括增加符号文件,下载文件等。debuginfod支持如下三类调试文件:可执行文件交给CPU执行的程序,通常用在分析转储文件时。符号文件一般是只供调试的符号信息,也就是所谓的分立的符号文件(separate
2023年7月28日
其他

《学活Linux》第一讲——系统调用和VFS

//该二维码8月3日前有效直播间链接:http://live.bilibili.com/24576892直播时间:2023年7月22日至9月2日每周六
2023年7月27日
其他

【小白学编程5】我的房子在哪儿?理解类型和变量

直播时间更加契合大家的空闲时间后,直播间的同学也多了起来。很多同学也提出了极妙的问题。例如:为什么是const
2023年7月26日
其他

软件工程师的“硬功夫”

GEDU软件工程师的“硬功夫”不是操作系统不是编程语言MASTERLY
2023年7月21日
其他

LINUX平台高级调试和优化(上海站)

2023LINUXSHANGHAI软件调试高级研习班2023上海站LINUX平台高级调试与优化关于LINUX的资料浩如烟海,学习LINUX的途径也有很多,如何才能在比较短的时间里获得一个比较大的提升呢?《软件调试高级研习班2023上海站》将与各位LINUX爱好者共同探索这个问题的最佳答案。本着生动有趣、理论与实践密切结合的原则,本研习班独辟蹊径,采用封闭训练方式打造独有的沉浸式学习体验;使用调试之剑披荆斩棘,带你畅游纷繁复杂的LINUX世界;以格物精神,钻研代码,深挖LINUX系统的核心机制,这一讲求得一理,下一讲再求得一理,步步推进。整个研习班,旨在实现三大目标:深入理解LINUX操作系统的基础设施和核心机制;学习开发LINUX程序(内核模块和应用程序)的工具和方法;学习LINUX平台上的调试工具和调试典型问题的方法。本研习班由《软件调试》和《格蠹汇编》的作者张银奎主讲。THIS
2023年7月20日
其他

【小白学编程4】与软件对话,标准输入输出

age:^C此外,张老师诙谐风趣的授课风格也让课堂更加有趣,让同学们轻松快乐地学到知识,掌握到技能。
2023年7月19日
其他

有一个驱动叫刘姥姥

命令,就可以显示系统的温度。上图中的34000和33000分别代表34和33摄氏度。日积月累,今天,刘姥姥驱动已经支持很多个命令,下面是格蠹小伙伴总结的列表:echo
2023年7月18日
其他

盛格塾暑期公益课程《学活LINUX》

学习LINUX有很多种方法,本系列课程以动手试验为主,取一个活的LINUX系统(GDK8)作为目标,使用内核调试器(挥码枪)将其中断到调试器,在调试器的帮助下,观察调用过程、执行现场,然后再由点扩展到面,从个案泛化到一般原理。1系统调用和VFS要点:两大空间、系统调用、文件抽象、VFS、真文件、假文件、文件缓存。”2内核模块和驱动模型要点:内核模块基础、文件回调、刘姥姥(llaolao)、LED硬件和驱动、设备对象、驱动模型、probe机制。”3段错误和页机制要点:段错误举例、观察页表、理解页错误、栈的自动增长、probe机制。”4WIFI设备和网络栈要点:WIFI模块、环形队列、设置断点、从调用栈理解LINUX的TCP/IP协议栈。”53D加速和GPU管理要点:GUI和图形编程、3D
2023年7月10日
其他

【小白学编程】与外壳对话,上手Shell脚本

Plus》纸质书。最后,感谢大家的认可和支持,也期待下周二与大家再会!第二讲预告直播时间:2023/07/11
2023年7月7日
其他

盛格塾公益课程《小白学编程》

第五讲:C语言编程(三)我的房子在哪?理解类型和变量要点:空间、变量、类型、声明基本类型、全局变量、局部变量、静态变量、自定义类型。
2023年7月6日
其他

软件夏令营线下课程安排

茶歇11:15-12:00线下课1:闯入编程世界12:00-14:00午餐+午休14:00-15:30动手实操115:30-16:00健身操
2023年7月3日
其他

格蠹科技软件夏令营(2023)

7APPLICATION报名1报名原则所有对计算机科学(特别是软件和编程)感兴趣、有志于计算机软件的同学均可报名参加,不限专业。2报名时间2023.6.30
2023年6月30日
其他

独上高楼,学习Linux的六种境界

调试器是一个比较好的提高效率的方法。回想起这么多年我在技术方面的坚持探索,给我最大帮助的其实就是调试器,所以我们每学一门新技术,都是想办法上调试器。最近几年,我转向ARM
2023年6月21日
其他

幽兰代码本——开源软件实践家

概览幽兰代码本是格蠹科技专门为程序员和开源软件爱好者打造的移动计算平台,基于ARM架构的硬件设计,预装GNU/LINUX操作系统和大量开源软件,旨在彻底改变长期以来的交叉编译模式,为程序员提供本地化的开发和调试环境,让他们可以在本机编写代码、在本机进行构建,并且在本机进行调试。第一代幽兰代码本使用瑞芯微公司新推出的RK3588
2023年6月16日
科技

梦遇恶件

DREAMABOUT
2023年6月10日
其他

1954年的今天——纪念图灵逝世69周年

Observer)。《观察家报》创办于1791年,是英国很流行的新闻周报,每周的周日发行。6月7日是周一,这一天是公共假日—惠特森银行假日(Whitsun
2023年6月7日
其他

鹤鸣2镜像发布说明

mesa-utils)3调试方面:本版镜像自动启用了符号服务器(debuginfod)支持,当使用gdb调试时,gdb会询问Enable
2023年6月2日
其他

纯真最美

”。可能是作者太喜欢这两个字了,除了正式的印文外,在印章的侧面还有不同字体把这两个字雕刻了四遍。为什么要守真呢?因为纯真太容易失去,而它又那么美好。所以值得我们努力去保持它,去守护它。Part.02
2023年6月1日
其他

这个修改居然是二掌门的主意

或许是后者,因为对于如何写代码这件事,大家的观点确实常常有很大的分歧。不知各位格友如何看待这个问题?我心中隐约有个预兆,说一定哪一天,那个count参数又被加回来了,那时很多代码又要跟着改一遍。-
2023年5月30日
其他

有一种错叫持有锁

有一种错叫持有锁记得有一次在M国出差时,偶遇N君,周末一起到O州之国家公园爬山。山中漫步时,大家天南海北地闲聊,聊的内容大多都不记得了。今天任然记得的是,N君偶发感慨:“M国是很讲规则的地方,在这里没有钱不会被人瞧不起,但是不懂规则就会被人瞧不起……”其实,不仅M国如此,软件世界也是很讲规则的地方。“oops和panic”以Linux为例,当内核空间的代码违反规则时,轻则有oops警告,如果严重了,则有系统Panic。而一旦进入Panic流程,则只能玉石俱焚,系统重启。内核有一个名为panic_on_oops的变量,当这个变量为1时,所有oops都会升级为Panic。对于可靠性要求高的系统,这个变量一般是设为1的。panic_on_oops=============Controls
2023年5月29日
其他

RK3588主板探秘

RK3588主板探秘2023年5月20日20:00,《在调试器下理解计算机系统》的第一讲通过腾讯会议准时开始。尽管是在520这样的特殊的日子里,很多格友还是准时上线了。第一讲的主题是:板上乾坤,以幽兰为例。从这个标题中也能看出格物的思想,以幽兰代码本上对RK3588的实现作为一个具体的实例来学习。Overview概览当我们把幽兰的后盖打开,拆下它的散热片,就能看到幽兰的主板。“板上乾坤”其实就是把板子上的各个部件作为例子来讲一下幽兰这个系统,用这种看得见、摸得着的方式,来阐述如何用典型的ARM
2023年5月23日
其他

在RK3588上体验UEFI

Kildall当初发明BIOS技术的初衷。这个技术的价值也被比尔·盖茨所心领神会,凭借这个技术,微软的Windows操作系统在PC时代畅通无阻,只要是有BIOS的盒子,就可以安装Windows。#
2023年5月19日
其他

比内存被踩还难调试的问题

DEBUG比内存被踩还难调试的问题软件领域的难题很多。在很多同行看来,内存数据被踩是很难调试的问题,因为内存空间很大,内存中的数据很多,重要的数据和不重要的数据杂居交错,鱼龙混杂,一个数据被踩了后,它又不会说话,等发现时,已经不知道过了多久,这时再还原真相,就很不容易了。在我看来,内存被踩的问题的确有难度,但并不是最难的。还有一些问题比它的难度大,比如声音的问题。Part
2023年5月18日
其他

在调试器下理解RK3588和LINUX5.10

声音子系统课程要点:声音设备、回放和输入、I2S、软件栈、pulseaudio、诊断工具、pactl、aplay、PipeWire、pw-cli,pw-top、图、典型问题。08电荷囚笼:
2023年5月16日
其他

编译器,你在说啥?

argc);交代一下背景,ntp模块的大多数代码都来自著名的开源项目OpenOCD。上面这行代码也是如此。查看相关代码,在helper/log.h可以看到一个用于打印调试信息的宏:#define
2023年5月10日
其他

2023杭州研习班回顾

固定布局工具条上设置固定宽高,背景可以设置被包含,可以完美对齐背景图和文字,以及用于模板制作。2023杭州研习班回顾■杭州行HangzhouFRIDAY04
2023年5月6日
其他

软件工程师就职训练营

2023暑假上海松江站软件工程师就职训练营软件开发被称为金领职业,一旦成功入职,就走上了人生的康庄大道。但由于大学扩招和疫情等因素影响,当前大学生供大于求,就业竞争激烈,一职难求。本训练营为即将走上工作岗位的大学生设计,旨在为他们提供“沉浸式”的学习和训练环境,明显提升他们的就业竞争力。针对软件行业的特点,量身定制训练内容,使用具体案例,阐释软件编写和调试的核心挑战,引领学员成功进入软件行业。为了保证学习效果,训练营的所有教学课件都由《软件调试》和《格蠹汇编》的作者张银奎亲自编写,所有理论讲解都由张银奎亲自讲授。实验课程由具有丰富开发经验的软件工程师引领和答疑。课程形式线上5天+面对面线下训练营5天:讲解演示、动手试验和问答开课时间2023年暑假(具体时间请联系课程助理)课程大纲《Linux平台开发实战》《Windows平台开发实战》《在调试器下理解计算机系统》《软件工程师的命令行必修课》《PYTHON编程实战》《C/C++语言和面向对象设计》01课程设置Linux平台开发实战要点:Linux内核架构、内核源代码结构、Arch子目录和平台架构、内核模块、libc、GCC和G++、编写Linux应用程序、GTK和图形程序、GDB、GDB的高级用法、内存管理、文件系统、编写内核模块、printk、KGDB。Windows平台开发实战要点:Windows平台背景、窗口程序、窗口消息、消息循环、Windows
2023年5月4日
其他

腾讯会议为何不闪即退

腾讯会议为何不闪即退2023/05/02◐最近一段时间里,我的背包里总是装着一新一旧两台笔记本,它们都是灰色的,屏幕都是14英寸,外壳的长度是一样的。论差异,新的比旧的明显薄很多,也轻很多。YOURLAND除了外表的差别外,它们更大的差别是“内心”:旧的是Wintel(Windows
2023年5月2日
其他

两只老鼠的罪与罚

Code社区版客户端https://nanocode.cn/#/download格友公众号盛格塾小程序往期
2023年3月29日
其他

何处觅得活水来?

何处觅得活水来如果说人生是用90%的平淡时间等待那10%的精彩,那么上周末在桃花源度过的50多个小时便是我今年一直期待着的那份精彩。从桃花源返回有几天了,但是我的心似乎还留在那里,思绪还常常转移到那里。有时是回想起几天前看到的真实景象,有时是设想离开那里后它变得如何,连日的春雨过后,山谷中的溪水是不是又大了一些?那里的桃花是否还在盛开?(一)这次的桃花源之行,是从今年春节就开始准备的(有一种爱叫桃花源)。上周日我带着一大箱《软件简史》预览本从上海出发,开始了这次朝圣之旅。在南京停留几日后,周四(2023年3月16日)19:25,我乘坐的D3197从南京南站准时发车,桃花源之行真正开始。我去过庐山多次,但以前大多是从上海出发(也有一次从珠海出发),唯有这次从南京出发,走的路线明显不同,路上经过芜湖、潜山、安庆这些我向往很久但还未曾去过的一些小城。安庆曾经是安徽的省会,说小城可能不合适。车过安庆时,我透着车窗瞭望了一下夜幕下的城市,的确有一些“大”城市的特征。周四22:20,D3197准时到达庐山站。2013年第一次游庐山就是到的庐山站,说起来刚好10年了。那次同行的主要是Intel的同事。下了车后,我才意识到,虽然名字没有变,现在的庐山站和10年前的庐山站已经完全不同。更准确的说,新的庐山站还没有完全建好,东西两个出口只投入使用一个,而且使用的是与我希望相反的西出口。考虑到桃花源的山路比较窄,晚上上山不方便,我事先便在山下订了个酒店。根据地图订在了庐山站附近。但没有想到的是,可以选的酒店都是在高铁站的东出口附近。酒店标的距离也是按东出口算的。而事实上,东出口还没有建好。所以当我走出高铁大厅,打开高德,确认了一下位置后,本来可以步行到酒店的想法成为泡影。有黑车司机上来搭话,被我拒绝。在高德里下单后,有司机很快接单,2分钟后上车。车子开了大约10分钟,从高铁的西出口绕道了东出口附近的酒店。这个小波折证明了那句经典的话:“纸上得来终觉浅,绝知此事要躬行。”换到这个时代,这句话便是:“网上得来终觉浅,绝知此事要躬行。”到了酒店后,我听到窗外的雨声,雨比之前大了。周五一早六点多,我便自然醒了,看窗外,仍有些阴天,但是雨已经停了,地面被雨水洗的干干净净。早上七点多,我出宾馆买水果,准备带上山,课间休息时给大家吃。此时,与我相同目的地的格友们也开始忙碌,特别是选在在九江站乘坐接站车的。九江站的计划接站时间是8:00。上午8:21,九江站的格友集齐,接站中巴出发。上午9:11左右,小巴到达庐山站附近接这里的格友们,但是却没想到发生了两个维也纳酒店的“乌龙”事件。在一个维也纳酒店门口始终少一人的情况下,才发现少的人在另一个维也纳酒店。上午9:40,终于接到了最后一位格友,中巴开始沿着庐山西面的环山公路向桃花源景区前进。上午10:30,中巴到了桃花源景区大门。与我2017年夏季来时相比,景区大门有了比较大的变化,建设的更好了。因为桃花源景区内部道路狭窄,不允许7座以上车辆进入,所以我们不得不下车,改换景区里的车辆。开车的司机很健谈,一边开车,一边给大家介绍庐山和桃花源的历史。车子缘溪而上,路两边春花盛开,一派早春的景色。大约20多分钟后,车子已经开到了桃花源深处,经过我上次曾写代码的大樟树时,我和大家说,我曾在这里写代码,大家都笑了。大约11:00,车子停在了我们即将上课的谦竹居下面。沿着一段斜坡,走进一个小院,里面便是我们本次研习班的大本营,前两批到的小伙伴已经等在里面了。谦竹居至此,本次研习班的所有现场参会者(19人)全部到齐,出发地如下:东莞:1;珠海:2;成都:4;长沙:2;武汉:3;上海:2;南京:1;北京:1;福建:1;合肥:1;杭州:1。(二)这次研习班的主题是LINUX内核,第一讲的题目是《LINUX内核大局观》。这个内容我每年都讲很多次。但是每一次都讲的不一样。改变的目标是追求新颖,把代码讲活,不要陈词滥调。这一次,在桃花源深处,我又换了一种讲法,几句简单的开场后,便让大家直接打开课前准备好的6.1.16源代码。6.1.16是版本6的第一个长期支持版本(LTS),刚好在研习班的前几天发布。可以想见,这个版本将是未来10年中的一个重要版本,所以在庐山讲这个版本,至少可以让大家对这个版本有个深刻的印象。每次讲arch目录时,我都会结合着CPU厂商的历史和发展潮流来讲,在IT巨头们“群雄逐鹿”的故事中,让大家感受到CPU领域的激烈竞争,认识到在Linux的arch目录中有一套代码意味着什么。提高学习效果的另一个关键是互动。在这个内容时,有人问了一个非常好的问题,为什么arm架构的32位和64位分两个目录,而x86是一个目录。这个看似简单的问题,其实非常耐人寻味。里面也有着安腾64和x64的故事。简单说,AMD当年推出x64就是打着“兼容”这张牌而把安腾64搬下马的,既然无缝兼容,也就不需要分为两个目录,一个x86目录就够了。而arm64是著名的armv8引入的,arm借此机会丢掉了以前的很多包袱,硬件方面大修大改,软件方面也另起炉灶,开了一个新的目录,迎接新的时代。如果从这个意义上看,arm的两个目录代表着锐意进取,而x86的单一目录代表着固步自封……(三)把大局观部分讲的差不多就到了午饭时间。午饭过后略作休息后,13:30下午的课开始。我没有按讲义的顺序讲,跳过很多内容,直接跳到挥码枪一讲,带着大家上手内核调试。与以前使用虚拟机做内核调试不同,这次研习班为每一位参加者准备了一套GDK8和一个挥码枪(基于CoreSight技术的硬件调试器)。我做了简单示范后,很多格友都在两分钟内成功将内核中断到调试器。成功的满脸喜悦,没成功的则非常投入地操作着。NT内核之父大卫·卡特勒在分享他的人生经验时曾说他是个喜欢“hands
2023年3月23日