<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Qinus的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Qinus</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Qinus]]></copyright><item><title><![CDATA[逻辑运算符]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/123422867</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/123422867</guid><author>Qinus</author><pubDate>Fri, 11 Mar 2022 13:59:05 +0800</pubDate><description><![CDATA[&amp; |：逻辑运算符
&amp;&amp; ||：逻辑短路运算符

a &amp;&amp; b和 a &amp; b的区别是：当a为false时，&amp;&amp;不会计算b的结果，&amp;会计算b的结果

开发中优先使用短路逻辑运算符

其中&amp; | 既可以做逻辑运算符，也可以做位运算符，在实际的表达式中具体是哪个，要看对应的操作数类型
1、如果两边都是数值，那就是位运算符
2、如果两边都是boolean类型，那就是逻辑运算符

//位移运算符，每左移一位，相当于乘以2；每右移一位，相.]]></description><category></category></item><item><title><![CDATA[Java类型转换]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/123422247</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/123422247</guid><author>Qinus</author><pubDate>Fri, 11 Mar 2022 13:09:04 +0800</pubDate><description><![CDATA[一、自动类型提升
	byte、char、short --&gt; int --&gt; long --&gt; float --&gt; double
	byte、char、short三个类型任意组合运算结果类型为int类型
	
	float b1 = 3.14f;
	
	//整型常量默认为int，当整型常量超过int表示的范围后，就会报错，需要加上后缀L/l
	long a1 = 23423112345235234L;
	byte a2 = 54;
	
	//浮点型常量默认为double，因为float要]]></description><category></category></item><item><title><![CDATA[编码技巧]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/104320748</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/104320748</guid><author>Qinus</author><pubDate>Sat, 15 Feb 2020 16:56:30 +0800</pubDate><description><![CDATA[一、错误处理技术


返回中立值
比如，数值返回0，空指针返回NULL等


换用下一个正确数据
如果每秒100次读取体温计数据，那么某一次数据有误，只需再等上1/100秒即可


返回与前次相同的数据
温度在1/100秒内一般不会发生变化，可以简单返回上一次的数据


换用最近的合法值
温度计已经校准在0-100°C，如果某一次检测到小于0的结果，那么可以把它替换为0，即最接近的那个合法值；如果...]]></description><category></category></item><item><title><![CDATA[​人生格局]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/104039220</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/104039220</guid><author>Qinus</author><pubDate>Sun, 19 Jan 2020 12:58:22 +0800</pubDate><description><![CDATA[听过这样一句话：你对待他人的态度，决定了你的人生高度。
人生很复杂，其实也简单，说到底无非两件事：怎么看待别人和怎么对待自己。怎么对待别人，既有看人的角度问题，又有做人的层次问题。
层次高的人，因为能正确对待别人，所以看谁都顺眼，满眼都是春风，满心都是欢喜。
层次低的人，习惯以是否对自己有利来评价别人，不符合自己“标准”的，怎么看都不顺眼，生活中多的是怨气和冷漠。
一个人格局是否足够大，以下是其...]]></description><category></category></item><item><title><![CDATA[函数返回值与参数传递]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/103607915</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/103607915</guid><author>Qinus</author><pubDate>Thu, 19 Dec 2019 08:22:25 +0800</pubDate><description><![CDATA[1.函数返回值基本理解
函数返回的不管是指针还是数值，通常，函数将返回值复制到指定的CPU寄存器或内存单元中来将其返回。随后，调用程序将查看内存单元。返回函数与调用函数必须就该内存单元中存储的数据的类型达成一致。函数原型将返回值类型告知调用函数，而函数定义告知被调用函数应返回什么类型的数据。在原型中提供与定义中相同的信息似乎有些多余，但这样做确实有道理。要让信差从办公室的办公桌上取走一些物品，则向...]]></description><category></category></item><item><title><![CDATA[string类变量]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/103544198</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/103544198</guid><author>Qinus</author><pubDate>Sat, 14 Dec 2019 23:12:43 +0800</pubDate><description><![CDATA[一、string类简介
1.将字符串作为一种数据类型，即string类型，而c中是没有字符串类型的
2.string类定义移仓了字符串的数组性质，可以像处理普通变量那样处理字符串
二、string类型使用方法
1.可以像c风格字符串来初始化string对象
string str1 = “Hello”;
2.可以使用cin来将键盘输入存储到string对象中
cin &gt;&gt; str1;
3...]]></description><category></category></item><item><title><![CDATA[ctype函数库]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/103434737</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/103434737</guid><author>Qinus</author><pubDate>Sat, 07 Dec 2019 13:48:47 +0800</pubDate><description><![CDATA[1.isalnum()
如果参数是字母数字，即字母或数字，该函数返回true
2.isalpha()
如果参数是字母，该函数返回true
3.iscntrl()
如果参数是控制字符，该函数返回true
4.isdigit()
如果参数是数字（0-9），该函数返回true
5.isgraph()
如果参数是除空格之外的打印字符，该函数返回true
6.islower()
如果参数是小写字母，该函数t...]]></description><category></category></item><item><title><![CDATA[C++输入输出]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/103431012</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/103431012</guid><author>Qinus</author><pubDate>Fri, 06 Dec 2019 23:37:11 +0800</pubDate><description><![CDATA[一、cin概述

cin是C++中的一个对象，输入流对象
用户在命令行输入的内容最终会发送到cin输入流中
cin会忽略掉输入中所有的space，enter，tab按键
发送给cin的输入被缓冲，只有当用户按下enter键，输入的内容才会发送给程序
cin &gt;&gt; ch，ch只从cin中取第一个字符

二、文件结尾
1.文件结尾用EOF表示，在键盘中用Enter或者Ctrl+Z与Ente...]]></description><category></category></item><item><title><![CDATA[C++顺序点和副作用]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/103421173</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/103421173</guid><author>Qinus</author><pubDate>Fri, 06 Dec 2019 13:41:09 +0800</pubDate><description><![CDATA[一、概述
1.副作用（side effect）
在计算表达式时对某些东西（存储在变量中的值）进行了修改
2.顺序点（sequence point）
程序执行过程中的一个时间点
3.顺序点类型
分号（；），逗号（，）；冒号（：）;或运算符（||）
4.顺序点的作用
在这个点之后，将确保前面的副作用都已生效。这意味着程序处理下一条语句之前，赋值运算符、递增运算符和递减运算符执行的所有修改都必须完成。另...]]></description><category></category></item><item><title><![CDATA[android的m、mm、mmm编译命令的使用]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100944784</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100944784</guid><author>Qinus</author><pubDate>Wed, 18 Sep 2019 00:00:57 +0800</pubDate><description><![CDATA[&nbsp;




android源码目录下的build/envsetup.sh文件，描述编译的命令


- m:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Makes ...]]></description><category></category></item><item><title><![CDATA[进程的简单理解]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100855143</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100855143</guid><author>Qinus</author><pubDate>Sun, 15 Sep 2019 15:27:18 +0800</pubDate><description><![CDATA[1.Linux中，进程的产生是由用户空间程序进行系统调用fork()产生的，此函数会返回两次，一次回到父进程，一次回到新产生的进程。
2.程序本身并不是进程，进程是处于执行期的程序以及相关的资源的总称。
3.内核把进程的列表存放在叫做任务队列（task list）的双向循环链表中。链表中的每一项都是类型为task_struct，称为进程描述符的结构，进程描述符包含一个具体进程的所有信息：打开的文件...]]></description><category></category></item><item><title><![CDATA[内联函数与宏函数]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100853287</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100853287</guid><author>Qinus</author><pubDate>Sun, 15 Sep 2019 14:00:15 +0800</pubDate><description><![CDATA[一、函数与宏
#define TABLE_COMP(x) ((x)&gt;0?(x):0)
就定义了一个宏。
为什么要使用宏呢？因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址，将函数的程序内容执行完后，再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址，转回后要恢复现场，并按原来保存地址继续执行。因此，函数调用要有一定的时间和空间方面的开...]]></description><category></category></item><item><title><![CDATA[linux-----页、页表、页框(块)]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100827015</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100827015</guid><author>Qinus</author><pubDate>Sat, 14 Sep 2019 13:46:36 +0800</pubDate><description><![CDATA[基本介绍&nbsp;
我们知道，在linux操作系统中，CPU在执行一个进程的时候，都会访问内存。&nbsp;
但CPU...]]></description><category></category></item><item><title><![CDATA[I/O内存]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100805503</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100805503</guid><author>Qinus</author><pubDate>Sat, 14 Sep 2019 12:01:50 +0800</pubDate><description><![CDATA[一、I/O寄存器和常规内存

尽管硬件寄存器和内存才能非常相似，但程序员在访问I/O寄存器的时候必须注意避免由于CPU或编译器不恰当的优化而改变预期的I/O动作。I/O寄存器与RAM的最主要的区别就是IO操作具有边际效应，而内存没有：内存写操作的唯一结果就是在指定位置存储一个数值；内存读操作则仅仅返回指定位置最后一次写入的数值。由于内存访问速度对CPU的性能至关重要，而且也没有边际效应，所以可用多...]]></description><category></category></item><item><title><![CDATA[Linux内存管理之kmalloc 与 __get_free_page()]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100804262</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100804262</guid><author>Qinus</author><pubDate>Fri, 13 Sep 2019 15:30:04 +0800</pubDate><description><![CDATA[在设备驱动程序中动态开辟内存，不是用malloc，而是kmalloc，或者用get_free_pages直接申请页。释放内存用的是kfree，或free_pages.

　　对于提供了MMU（存储管理器，辅...]]></description><category></category></item><item><title><![CDATA[linux驱动 之 module_init解析 （上）]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100681730</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100681730</guid><author>Qinus</author><pubDate>Tue, 10 Sep 2019 01:14:29 +0800</pubDate><description><![CDATA[版权声明：本文为博主原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接和本声明。 
               
             ...]]></description><category></category></item><item><title><![CDATA[C语言宏定义中 ## 和#的作用]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/100627146</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/100627146</guid><author>Qinus</author><pubDate>Sun, 08 Sep 2019 14:21:11 +0800</pubDate><description><![CDATA[版权声明：本文为博主原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接和本声明。 
               
             ...]]></description><category></category></item><item><title><![CDATA[详解SPI中的极性CPOL和相位CPHA]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/99637254</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/99637254</guid><author>Qinus</author><pubDate>Thu, 15 Aug 2019 15:13:49 +0800</pubDate><description><![CDATA[详解SPI中的极性CPOL和相位CPHA

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPI由于接口相对简单（只需...]]></description><category></category></item><item><title><![CDATA[内存分配]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/97010315</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/97010315</guid><author>Qinus</author><pubDate>Tue, 23 Jul 2019 17:08:18 +0800</pubDate><description><![CDATA[一、概述

]]></description><category></category></item><item><title><![CDATA[内核定时器及延迟操作]]></title><link>https://blog.youkuaiyun.com/Qinus/article/details/96721061</link><guid>https://blog.youkuaiyun.com/Qinus/article/details/96721061</guid><author>Qinus</author><pubDate>Sun, 21 Jul 2019 16:21:56 +0800</pubDate><description><![CDATA[一、内核计数器
1.HZ

内核通过定时器中断来跟踪时间流，时钟中断由系统定时硬件以周期性的间隔产生，这个时间间隔由内核根据HZ的值设定。如果希望改变系统时钟中断发生的频率，可以修改HZ值，一般保持默认。所以HZ就是指一秒钟内产生多少次时钟中断(单位为次/ 秒)，而产生一次时钟中断需要的时间（也即周期性的间隔）T = 1 / HZ，单位为秒（S）。

2.jiffies

而每次当时钟中断发生时，...]]></description><category></category></item></channel></rss>