<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[smstong的成长轨迹]]></title><description><![CDATA[关注Internet,专注OS。]]></description><link>https://blog.csdn.net/smstong</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; smstong]]></copyright><item><title><![CDATA[All data types in Python are “reference type“]]></title><link>https://blog.csdn.net/smstong/article/details/127643763</link><guid>https://blog.csdn.net/smstong/article/details/127643763</guid><author>smstong</author><pubDate>Tue, 01 Nov 2022 23:51:47 +0800</pubDate><description><![CDATA[Python只有一种数据类型，引用类型。]]></description><category></category></item><item><title><![CDATA[对于C++拷贝构造函数的思考]]></title><link>https://blog.csdn.net/smstong/article/details/126880808</link><guid>https://blog.csdn.net/smstong/article/details/126880808</guid><author>smstong</author><pubDate>Thu, 15 Sep 2022 22:13:10 +0800</pubDate><description><![CDATA[【代码】对于C++拷贝构造函数的思考。]]></description><category></category></item><item><title><![CDATA[实例分析Python3 MRO 和 super()]]></title><link>https://blog.csdn.net/smstong/article/details/105432285</link><guid>https://blog.csdn.net/smstong/article/details/105432285</guid><author>smstong</author><pubDate>Fri, 10 Apr 2020 14:02:59 +0800</pubDate><description><![CDATA[原文链接：https://www.linuxexam.net/2020/04/python3-mro-and-super.html

1 MRO vs DFLR

Attribute searching is the core concept for Python classes. The searching order is important as it determines which cl...]]></description><category></category></item><item><title><![CDATA[实例分析Python3 MRO 和 super()]]></title><link>https://blog.csdn.net/smstong/article/details/105432215</link><guid>https://blog.csdn.net/smstong/article/details/105432215</guid><author>smstong</author><pubDate>Fri, 10 Apr 2020 13:59:49 +0800</pubDate><description><![CDATA[原文链接：https://www.linuxexam.net/2020/04/python3-mro-and-super.html

1 MRO vs DFLR

Attribute searching is the core concept for Python classes. The searching order is important as it determines which cl...]]></description><category></category></item><item><title><![CDATA[命令行测试Gmail服务器发送邮件]]></title><link>https://blog.csdn.net/smstong/article/details/104123638</link><guid>https://blog.csdn.net/smstong/article/details/104123638</guid><author>smstong</author><pubDate>Fri, 31 Jan 2020 13:49:55 +0800</pubDate><description><![CDATA[我刚刚写了一篇博客，使用openssl来测试Gmail发送邮件。感兴趣的同学请点击下方链接。
https://www.linuxexam.net/2020/01/test-gmail-from-command-line.html
文章是用英文写的，如果感兴趣的人多，我可以考虑翻译成中文。

...]]></description><category></category></item><item><title><![CDATA[How to configure postfix to send email via Gmail]]></title><link>https://blog.csdn.net/smstong/article/details/90404712</link><guid>https://blog.csdn.net/smstong/article/details/90404712</guid><author>smstong</author><pubDate>Tue, 21 May 2019 12:43:36 +0800</pubDate><description><![CDATA[此博文为copy版本，可能不及时更新，要想查看最新版本，请访问：

https://it.smallstrong.org/2019/05/how-to-configure-postfix-to-relay-email.html?view=classic

1. Why relay via Gmail?

Today it's very hard to set up an email server ...]]></description><category></category></item><item><title><![CDATA[Build your own KMS server to activate MS Windows and MS Office]]></title><link>https://blog.csdn.net/smstong/article/details/90286040</link><guid>https://blog.csdn.net/smstong/article/details/90286040</guid><author>smstong</author><pubDate>Fri, 17 May 2019 08:11:59 +0800</pubDate><description><![CDATA[网速问题，不常来CSDN了，想要阅读更多博文，请访问我的个人博客站。http://linuxexam.net

Note: It's illegal to activate Windows/Office by a non-authorized KMS server. This article is for learning purpose only. Buy a license from Mic...]]></description><category></category></item><item><title><![CDATA[一个基于KVM虚拟机的PXE服务器的实现]]></title><link>https://blog.csdn.net/smstong/article/details/82826669</link><guid>https://blog.csdn.net/smstong/article/details/82826669</guid><author>smstong</author><pubDate>Mon, 24 Sep 2018 02:59:40 +0800</pubDate><description><![CDATA[各位博友你们好，由于本人自去年5月份开始移居海外，事情繁多，一直没有更新CSDN博客。现在基本稳定下来了，于是又有心情开始写写博客了：）
鉴于目前工作原因，博文内容会多与Linux服务器运维有关，偶有编程小技巧。另外，我搭建了自己的wordpress系统，将来其博文会和CSDN同步。由于网络速度问题，会先发到我的workpress上，随后再同步到CSDN。
由于工作繁忙，基本上是随手记录，各种错误...]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（10）--- 实现多任务处理，最简单OS模型]]></title><link>https://blog.csdn.net/smstong/article/details/54405220</link><guid>https://blog.csdn.net/smstong/article/details/54405220</guid><author>smstong</author><pubDate>Fri, 13 Jan 2017 11:16:53 +0800</pubDate><description><![CDATA[Keywords: Mutitasking，Context Switch，Thread

0 多任务（多线程，多进程）基本概念



0.1 CPU与多任务

对于“多任务(Multitasking)”，不同的应用领域有不同术语。在操作系统领域，一般称为“多任务”；在应用程序设计领域，一般称为“多线程”；而在Unix领域，更多的人喜欢用“多进程”来表示相同的意思。本文着眼于OS层，所以使用“多任务]]></description><category></category></item><item><title><![CDATA[C语言中通过全局变量引用汇编语言中的全局标签]]></title><link>https://blog.csdn.net/smstong/article/details/54405649</link><guid>https://blog.csdn.net/smstong/article/details/54405649</guid><author>smstong</author><pubDate>Fri, 13 Jan 2017 09:43:44 +0800</pubDate><description><![CDATA[汇编语言和C语言混合编程中，在C语言中通过全局变量来引用汇编中的数据定义非常普遍，然而却存在同名不同义的陷阱。1 测试代码在汇编语言中的定义整数变量studentID，并赋初值，如下：    .global studentID
    .data
studentID:
    .word 12345678    .text
    ldr r0, =studentID  /* studentID被当]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（9）--- 利用Undefined异常模拟BLX指令]]></title><link>https://blog.csdn.net/smstong/article/details/53944794</link><guid>https://blog.csdn.net/smstong/article/details/53944794</guid><author>smstong</author><pubDate>Tue, 03 Jan 2017 14:51:33 +0800</pubDate><description><![CDATA[在博文 《紧急求助！ARM-GCC对于函数指针调用的编译有错误？》中，我提到了GCC在编译函数指针调用的时候，会生成绝对地址跳转指令BLX。而S3C2440A这款CPU不支持BLX指令，从而导致陷入Undefined异常。本文就利用这个Undefined异常，来模拟BLX指令，从而让使用BLX指令的程序可以正常运行在S3C2440上。1 Undefined异常的处理流程ARM9在执行未定义指令时，会]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（8）--- 从NAND Flash读取数据，把代码搬运到SDRAM运行]]></title><link>https://blog.csdn.net/smstong/article/details/53907426</link><guid>https://blog.csdn.net/smstong/article/details/53907426</guid><author>smstong</author><pubDate>Fri, 30 Dec 2016 16:39:15 +0800</pubDate><description><![CDATA[因为依赖于S3C2440的开机自动从Nandflash复制数据到片内SRAM执行，目前我们的可执行程序体积仍然不能大于4KB的限制。而我们的程序目前已经非常接近这个限制大小了，为了能够继续开发，必须突破这个限制。为此需要实现代码搬运功能，把程序从Nandflash搬运到SDRAM中去，并跳转到SDRAM执行。本文为啥不实现NandFlash写？ 因为对于我们的实现目前尚未需求。更重要的是，写操作涉及]]></description><category></category></item><item><title><![CDATA[紧急求助！ARM-GCC对于函数指针调用的编译有错误？【已经找到原因】]]></title><link>https://blog.csdn.net/smstong/article/details/53897131</link><guid>https://blog.csdn.net/smstong/article/details/53897131</guid><author>smstong</author><pubDate>Tue, 27 Dec 2016 17:17:28 +0800</pubDate><description><![CDATA[函数指针是实现回调函数的基础，回调函数是C程序架构的基础。所以函数指针的重要性不言而喻。然而最近在ARM开发板上测试程序时，发现函数指针虽然能编译通过，但是运行时确总是报错。如下是一个最简单的测试程序源码。static void test()
{
    puts("test\n");
}static void(*f)() = test;
void Main(void)
{
    led_init]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（7）--- 基于中断的UART串口接收]]></title><link>https://blog.csdn.net/smstong/article/details/53894665</link><guid>https://blog.csdn.net/smstong/article/details/53894665</guid><author>smstong</author><pubDate>Tue, 27 Dec 2016 17:02:17 +0800</pubDate><description><![CDATA[UART0的发送、接收、错误分别产生不同的中断，可以分别控制。本文仅对UART0的接收采用中断方式，发送仍然采用轮训方式。这样有个很大的用处，那就是程序陷入死循环是，可以通过UART0发送给ARM一个信号，来终止程序的运行。关键代码片段：1 取消相关中断屏蔽位/* unmask interrupt for UART0 */
    rINTMSK &= ~(1<<28);
    rINTSUBMS]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（6）--- 启用IRQ中断，告别低效的轮询！]]></title><link>https://blog.csdn.net/smstong/article/details/53842691</link><guid>https://blog.csdn.net/smstong/article/details/53842691</guid><author>smstong</author><pubDate>Tue, 27 Dec 2016 10:56:38 +0800</pubDate><description><![CDATA[前面的实验中，无论是按键的状态，还是串口的发送接收状态，都是通过轮询的方式进行读取，不仅低效而且严重浪费CPU计算周期，在实际的生产环境下决不能使用！从本文开始，我们进进入一个新的时代，中断处理。0 中断、异常、软中断，傻傻分不清在CPU中断处理领域，术语比较混乱。而且有时候同一个术语在不同的语境含义也不相同。这里我们以S3C2440的数据手册为准解释相关概念。
异常，英文名Exception。是相]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（5）--- 设置UART串口，输出Hello World!]]></title><link>https://blog.csdn.net/smstong/article/details/53841369</link><guid>https://blog.csdn.net/smstong/article/details/53841369</guid><author>smstong</author><pubDate>Fri, 23 Dec 2016 18:13:23 +0800</pubDate><description><![CDATA[0 串口，UART，RS232，RS485傻傻分不清0.1 串行通信与并行通信串口名字表示采用的通信方式为串行而不是并行。那么串行与并行的区别是啥呢？很简单，串行就是同一时刻只能传输一个bit，而并行则可以同时传输多个bits。乍一看，仿佛并行通信速度更快，而且并行的信号线越多，传输数据快。CPU的总线就是使用并行通信的，总线带宽也从8一路飙升到了目前的64。然而这是在CPU的内部，对于设备间通信而]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（4）--- 初始化片外RAM，让程序有更大内存空间]]></title><link>https://blog.csdn.net/smstong/article/details/53784250</link><guid>https://blog.csdn.net/smstong/article/details/53784250</guid><author>smstong</author><pubDate>Thu, 22 Dec 2016 15:10:49 +0800</pubDate><description><![CDATA[到目前为止，我们的程序只能使用S3C2440的片内4KB的RAM。这么小的内存空间，显然不能应付实际的应用。是时候使用片外的RAM了，本文将详细介绍片外RAM的初始化过程。0 ROM,RAM,SRAM,DRAM,SDRAM傻傻分不清作为软件出身的软男，很难从根本上弄清楚ROM,RAM,SDRAM,SRAM等等的原理，这里我们只要了解基本的特性就可以了。
ROM，NorFlash: 只读内存，掉电不丢]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（3）--- 设置时钟频率，让CPU运行的更快]]></title><link>https://blog.csdn.net/smstong/article/details/53783452</link><guid>https://blog.csdn.net/smstong/article/details/53783452</guid><author>smstong</author><pubDate>Wed, 21 Dec 2016 14:03:36 +0800</pubDate><description><![CDATA[0 原理0.1 时钟源自哪里所谓的时钟，就是电压高低的变化，只有不断的0，1交替变化，CPU才能被驱动运行。S3C2440支持多种时钟源，这通过CPU针脚OM3和OM3来选择。对于QT2440板子来说，OM3和OM2均直接接地，这就意味着时钟源来自针脚XTIpll和XTOpll，这两个针脚在TQ2440的核心板上被连接上了一个12MHz的晶振。0.2 S3C2440的时钟原理与设置CPU、RAM、U]]></description><category></category></item><item><title><![CDATA[一个C语言运算符优先级导致的问题]]></title><link>https://blog.csdn.net/smstong/article/details/53780445</link><guid>https://blog.csdn.net/smstong/article/details/53780445</guid><author>smstong</author><pubDate>Wed, 21 Dec 2016 09:24:23 +0800</pubDate><description><![CDATA[检测某个数的某个二进制位是否为0，是常见的控制逻辑，如下代码所示：if (x & (1<<2) == 0) {
    printf("x的第2个二进制位为0\n");
}然而实际上，上述代码永远不会执行printf，也就是说 x & (1<<2) == 0这个表达式始终为0。原因在于在C语言里，==运算符的优先级高于&，导致上面的表达式相当于：if ( x & ((1<<2) == 0) )因为1]]></description><category></category></item><item><title><![CDATA[TQ2440开发板学习纪实（2）--- 设置堆栈并调用C函数]]></title><link>https://blog.csdn.net/smstong/article/details/53766412</link><guid>https://blog.csdn.net/smstong/article/details/53766412</guid><author>smstong</author><pubDate>Tue, 20 Dec 2016 18:39:46 +0800</pubDate><description><![CDATA[本文根据上一篇TQ2440开发板学习纪实（1）—最简单的独立运行汇编程序进化而来。0 ARM堆栈(Stack)基础知识ARM支持满减类型的堆栈，满的意思是说堆栈指针SP(即R13)总是指向刚刚入栈的数据单元。与满相对应的就是不满，这种类型的栈指针SP指向栈顶的下一个空白单元。减的意思是说，栈底的内存地址大，栈顶地址小，压入数据时，栈向地址小的方向扩展。目前我们只有4KB的内存可用，范围为：0x000]]></description><category></category></item></channel></rss>