<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lichengyu的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lichengyu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lichengyu]]></copyright><item><title><![CDATA[《人月神话》重温]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/170457918</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/170457918</guid><author>lichengyu</author><pubDate>Tue, 10 Nov 2026 22:26:15 +0800</pubDate><description><![CDATA[缺乏合理的进度安排是造成软件项目滞后的最主要原因。]]></description><category></category></item><item><title><![CDATA[接口设计原则]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/170371329</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/170371329</guid><author>lichengyu</author><pubDate>Mon, 09 Nov 2026 23:04:23 +0800</pubDate><description><![CDATA[抽象是一种以简化的形式来看待复杂操作的能力。如果必须要看到底层实现才能理解发生的事情，那还算不上抽象。类的接口应该展现一致的抽象层次一定要理解类所实现的抽象是什么提供成对的服务把不相关的信息转移到其他类中尽可能让接口可编程，而不是表达语义谨防在修改时破坏接口的抽象不要添加与接口抽象不一致的公用成员同时考虑抽象性和内聚性。]]></description><category></category></item><item><title><![CDATA[MIT 6.1810 开发环境搭建(Xv6)]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/161532873</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/161532873</guid><author>lichengyu</author><pubDate>Sat, 30 May 2026 07:04:08 +0800</pubDate><description><![CDATA[按 https://pdos.csail.mit.edu/6.828/2025/tools.html 来操作见其中的这一节。]]></description><category></category></item><item><title><![CDATA[wsl安装高版本ubuntu(24.04)]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/161369193</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/161369193</guid><author>lichengyu</author><pubDate>Sun, 24 May 2026 21:05:38 +0800</pubDate><description><![CDATA[本人的win10系统上，安装wsl，默认安装的ubuntu系统是20.04版本，这个版本比较老，很多软件和工具都比较老(qemu, python3)， 所以决定在wsl上安装更高版本ubuntu(如24.04)。]]></description><category></category></item><item><title><![CDATA[【Rust】Shared-State Concurrency]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/136976400</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/136976400</guid><author>lichengyu</author><pubDate>Sat, 23 Mar 2024 22:02:51 +0800</pubDate><description><![CDATA[rust并发]]></description><category></category></item><item><title><![CDATA[敏捷软件开发价值观和原则重温]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/136120432</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/136120432</guid><author>lichengyu</author><pubDate>Thu, 15 Feb 2024 14:45:06 +0800</pubDate><description><![CDATA[软件开发是人的活动，而且是团队的活动，团队成员之间的有效交互对软件开发的成败至关重要。软件开发是人的活动，人是软件开发中最重要的因素。需要注意：软件设计和项目设计是息息相关的，不要简单割裂，而应同时关注，自始至终的关注。经常性的交付可以工作的软件，交付的间隔可以从几周到几个月，交付的时间间隔越短越好。在团队内部，最具有效果并且富有效率的传递信息的方法，就是面对面的交谈。我们最优先要做的是通过尽早的，持续的交付有价值的软件来使客户满意；简单------使未完成的工作最大化的艺术------是根本的。]]></description><category></category></item><item><title><![CDATA[计算机系统的能耗和功耗]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/127331723</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/127331723</guid><author>lichengyu</author><pubDate>Sat, 15 Oct 2022 10:06:03 +0800</pubDate><description><![CDATA[计算机系统中，能耗和功耗是两个相关的概念，用来衡量系统的能量消耗。]]></description><category></category></item><item><title><![CDATA[YUV格式]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/125590454</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/125590454</guid><author>lichengyu</author><pubDate>Sun, 03 Jul 2022 22:15:46 +0800</pubDate><description><![CDATA[YUV是一种常见的颜色编码方法。“Y”表示**明亮度（Luminance、Luma），“U”和“V”则是色度、浓度**（Chrominance、Chroma）。人眼对明亮度的感觉具有较高的敏感度，对颜色的感觉敏感度较低。YUV格式对颜色通道(U和V通道)进行了降采样，节省传输带宽，同时又不损失人的视觉感受质量。...]]></description><category></category></item><item><title><![CDATA[在cygwin下执行shell脚本遇到“ $‘\r‘: 未找到命令”错误]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/123244509</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/123244509</guid><author>lichengyu</author><pubDate>Thu, 03 Mar 2022 07:00:29 +0800</pubDate><description><![CDATA[在cygwin下执行shell脚本遇到“ $’\r’: 未找到命令”错误
从github上克隆一个工程到本地，在cygwin下执行工程目录中的sh脚本，遇到以下报错：
$'\r': 未找到命令

推测时换行符问题。
参考Git 多平台换行符问题(LF or CRLF)，重新设置git的换行符配置：
# 提交检出均不转换 (保持为LF)
git config --global core.autocrlf false

重新克隆工程，在cygwin中执行sh脚本成功。
参考

...]]></description><category></category></item><item><title><![CDATA[ESP32-IDF环境下载和安装]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/123244498</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/123244498</guid><author>lichengyu</author><pubDate>Thu, 03 Mar 2022 06:27:40 +0800</pubDate><description><![CDATA[下载和安装
ESP-IDF有两种安装方式：

IDE
手动安装

IDE方式：失败
IDE可以采用Vscode Extension。在Vscode的Extensions搜索esp-idf即可找到并下载。但按这个Installation的说明操作时，操作的第8步骤时不会显示预期的画面，可能是第5步骤安装依赖软件没有做的缘故。
手动方式：成功
于是采用手动安装方式。参考[esp32s3 Get Started](Get Started - ESP32-S3 - — ESP-IDF Programming Gui]]></description><category></category></item><item><title><![CDATA[[转载]linux的poll的工作机制]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/122445562</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/122445562</guid><author>lichengyu</author><pubDate>Wed, 12 Jan 2022 07:33:49 +0800</pubDate><description><![CDATA[linux的poll的工作机制

]]></description><category></category></item><item><title><![CDATA[【转载】Linux字符驱动-验证globalmem驱动程序]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/122285247</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/122285247</guid><author>lichengyu</author><pubDate>Mon, 03 Jan 2022 11:20:00 +0800</pubDate><description><![CDATA[今天在验证宋宝华老师的字符驱动中的globalmem驱动程序。
在源代码目录下编译驱动globalmem.ko模块，然后通过sudo insmod globalmem.ko加载模块
通过cat /proc/devices 查看模块是否加载成功，我这显示是加载成功了，然后再mknod /dev/globalmem c 230 0 创建设备节点。
然后使用
#echo “hello world” &gt; /dev/globalmem  出现错误bash:  /dev/globalmem: Permission]]></description><category></category></item><item><title><![CDATA[Linux kernel code with cscope and ctags]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/122159587</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/122159587</guid><author>lichengyu</author><pubDate>Sun, 26 Dec 2021 19:45:14 +0800</pubDate><description><![CDATA[https://elinux.org/Editor_Tips
http://cscope.sourceforge.net/cscope_vim_tutorial.html
Using cscope and ctags with VIM
You can do symbol navigation with scope and ctags in VIM. This is handy to explore the kernel and to get information about function calls ]]></description><category></category></item><item><title><![CDATA[通过SSH从Host连接virtalbox的guest os]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/122158632</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/122158632</guid><author>lichengyu</author><pubDate>Sun, 26 Dec 2021 18:38:04 +0800</pubDate><description><![CDATA[How To Ssh Into Ubuntu VM Virtualbox From Host Machine原文How to install openSSH server on UbuntuSSH to a VM VirtualBox
原文
https://dev.to/yassineselllami/how-to-ssh-into-ubuntu-vm-virtualbox-from-host-machine-1kii
How to install openSSH server on Ubuntu
Firs]]></description><category></category></item><item><title><![CDATA[头文件和Include: Why and How]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/119963251</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/119963251</guid><author>lichengyu</author><pubDate>Sat, 28 Aug 2021 07:13:14 +0800</pubDate><description><![CDATA[头文件和Include: Why and How
简介
这篇文件介绍了一个常见的新手问题：如何理解#include, 头文件和源文件的关系。
为什么需要头文件
如果你刚写C++, 你可能会问为什么需要#include文件，为什么需要多个.cpp文件？原因很简单：


可以提升编译速度。当你的程序和代码越来越大，如果所有的东西都放到一个源文件中，即使你只做了一个小小的修改，所有的东西都要重新编译。对规模比较小的程序这可能不是个问题，但是对规模较大的程序，编译一次可能会耗费好几分钟。你能想象到每次小的修改都要等]]></description><category></category></item><item><title><![CDATA[PRE30-C. 不要通过拼接来构造通用字符名]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/119834676</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/119834676</guid><author>lichengyu</author><pubDate>Sat, 21 Aug 2021 07:36:02 +0800</pubDate><description><![CDATA[PRE30-C. 不要通过拼接来构造通用字符名
C语言标准支持将不在基本字符集中的字符作为通用字符名，用于标识符、字符常量和字符串字面值。通用字符名 \Unnnnnnnn 指定了8位数字的短标识符 nnnnnnnn。类似的，通用字符名\unnnn 指定了一个4位数字构成的短标识符 nnnn 。
C语言标准，5.1.1.2，第4段 [ISO/IEC 9899:2011], 描述如下：

如果一个满足通用字符名的字符序列是通过符合拼接构建的(6.10.3.3), 行为是未定义的。

参见未定义行为3.
总之，除]]></description><category></category></item><item><title><![CDATA[[zz]OpenGL Installation on Linux]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/72593801</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/72593801</guid><author>lichengyu</author><pubDate>Sat, 21 Aug 2021 07:32:03 +0800</pubDate><description><![CDATA[https://en.wikibooks.org/wiki/OpenGL_Programming/Installation/Linux

OpenGL Installation on Linux
Most Linux distributions rely on the 
Mesa3D project to provide their OpenGL implementation. This ]]></description><category></category></item><item><title><![CDATA[[转载]Declarations, Prototypes, Definitions, and Implementations]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/119630015</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/119630015</guid><author>lichengyu</author><pubDate>Thu, 12 Aug 2021 07:33:40 +0800</pubDate><description><![CDATA[Declarations, Prototypes, Definitions, and Implementations

Published by Esslercuffi

Oct 26, 2014 (last update: Oct 28, 2014)



Many people, when learning C++, seem to have some confusion about the distinction between and purpose of declarations and defi]]></description><category></category></item><item><title><![CDATA[大小端大小端]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/119440330</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/119440330</guid><author>lichengyu</author><pubDate>Fri, 06 Aug 2021 07:14:01 +0800</pubDate><description><![CDATA[小端的LSB(Least Significant Bit)在低地址；比如0x12345678, 它的最低有效位是0x78, 在低地址；所以它的内存排布是: 0x78 0x56 0x34 0x12


]]></description><category></category></item><item><title><![CDATA[【转载】什么是计算机图形学?]]></title><link>https://blog.youkuaiyun.com/lichengyu/article/details/116379041</link><guid>https://blog.youkuaiyun.com/lichengyu/article/details/116379041</guid><author>lichengyu</author><pubDate>Mon, 03 May 2021 18:08:08 +0800</pubDate><description><![CDATA[【转载】什么是计算机图形学?

http://staff.ustc.edu.cn/~lgliu/Resources/CG/What_is_CG.htm

偶然在网络上刷到中国科学技术大学刘利刚老师写的“什么是计算机图形学?”，其中除了介绍计算机图形学的基本概念，还介绍了学习计算机图形学需要的基础知识和学习方法，感觉这一部分很有启发，摘录如下：


三、学习计算机图形学需要哪些基础？



计算机图形学是一门与很多学科都交叉的学科方向。因此，要学好计算机图形学和做好计算机图形学方面的研究，除了计算机图形学..]]></description><category></category></item></channel></rss>