<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[w8u的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/w8u</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; w8u]]></copyright><item><title><![CDATA[SQL:同表前后记录计算]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/71078664</link><guid>https://blog.youkuaiyun.com/w8u/article/details/71078664</guid><author>w8u</author><pubDate>Tue, 02 May 2017 10:49:46 +0800</pubDate><description><![CDATA[问题提出一个表tb，主要字段如下： 
id，自增长 
dt，时间 
status，状态。需求：需要得到当状态=90的记录与该记录前记录中时间的差值。解法select datadiff( a.dt, b.dt ) from tb as a,tb as b  
  where a.status=90 and a.id-1 = b.id]]></description><category></category></item><item><title><![CDATA[让Android运行在SD卡上]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/70174626</link><guid>https://blog.youkuaiyun.com/w8u/article/details/70174626</guid><author>w8u</author><pubDate>Fri, 14 Apr 2017 17:37:29 +0800</pubDate><description><![CDATA[首先介绍原理，最后介绍具体怎么实现。
 
1.  Android启动流程
eloader，uboot存储在SPI Flash上面。SPI FLash在开机时会被SoC映射到某地址，然后依次启动eloader，uboot。
uboot启动后，将会启动kernel。
1.1.kernel在哪里呢？
1.1.1.    kernel可以在boot.img中
boot.img是Android]]></description><category></category></item><item><title><![CDATA[can bus test cmd on linux]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/68946188</link><guid>https://blog.youkuaiyun.com/w8u/article/details/68946188</guid><author>w8u</author><pubDate>Sat, 01 Apr 2017 16:59:48 +0800</pubDate><description><![CDATA[Testing command: cansend and candumpReference website: 
http://www.imxdev.org/wiki/index.php?title=All_Boards_FlexCANcmd lineType command in terminal: # ip link set can0 type can bitrate 500000
# ip li]]></description><category></category></item><item><title><![CDATA[CAN网络学习总结]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/61914994</link><guid>https://blog.youkuaiyun.com/w8u/article/details/61914994</guid><author>w8u</author><pubDate>Mon, 13 Mar 2017 12:58:50 +0800</pubDate><description><![CDATA[什么是CAN控制器局域网(CAN-Controller Area Network)是 BOSCH公司为现代汽车应用领先推出的一种多主机局部网，由于其卓越性能现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。组网方式总线型组网。类似一根葫芦藤上长了7个小葫芦一样。当然通过网关、转换器等方式，可以组成树形网络。 
CAN的直接通信距离最远可达10km(速率5kbps]]></description><category></category></item><item><title><![CDATA[[Android][Build]LOCAL_MODULE_TAGS和PRODUCT_PACKAGES--指定编译进Image的模块]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/60574255</link><guid>https://blog.youkuaiyun.com/w8u/article/details/60574255</guid><author>w8u</author><pubDate>Mon, 06 Mar 2017 12:57:28 +0800</pubDate><description><![CDATA[LOCAL_MODULE_TAGS位于模块Android.mk文件中，大约可以取值：user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional: 指该模块在所有版本下都编译可参考： 
http://www.cnblogs.com/eustoma/archive/2012/05/25/2518418.htm]]></description><category></category></item><item><title><![CDATA[[Android][OTA][Kernel]OTA升级后某内核模块版本与内核版本不一致导致工作不正常]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/56673839</link><guid>https://blog.youkuaiyun.com/w8u/article/details/56673839</guid><author>w8u</author><pubDate>Thu, 23 Feb 2017 15:49:47 +0800</pubDate><description><![CDATA[现象OTA升级Android之后，WIFI模块工作不正常。 
wifi运行失败时，提示：[   12.886920] ath9k_htc: version magic '3.18.0-94.30.01 SMP preempt mod_unload ARMv7 p2v8 ' should be '3.18.0-93.00.03 SMP preempt mod_unload ARMv7 p2v8 '
L]]></description><category></category></item><item><title><![CDATA[【linux】【kernel】【gpio】imx-m6-vab820与ZX2000上的GPIO sysfs]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/55270965</link><guid>https://blog.youkuaiyun.com/w8u/article/details/55270965</guid><author>w8u</author><pubDate>Thu, 16 Feb 2017 19:08:40 +0800</pubDate><description><![CDATA[root@vab820_6dq:/sys/class/gpio # ls -l
--w------- root     root         4096 2017-02-16 11:05 export
lrwxrwxrwx root     root              2017-02-16 11:05 gpiochip0 -> ../../devices/soc0/soc.0/200000]]></description><category></category></item><item><title><![CDATA[【Linux】【cmdline】uboot传递给内核的root设备序号动态变化导致启动失败]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/55195258</link><guid>https://blog.youkuaiyun.com/w8u/article/details/55195258</guid><author>w8u</author><pubDate>Thu, 16 Feb 2017 14:47:09 +0800</pubDate><description><![CDATA[现象

板子上插入SD卡启动Linux系统后，emmc的设备名称是/dev/mmcblck1;板子上没有插入SD卡，Linux启动后，emmc的设备名称是/dev/mmcblck0.

uboot传递给内核的cmdline参数bootargs 中root=/dev/mmcblck0p14，这个配置在没有插SD卡的时候工作正常，但是插入SD卡后，就无法正常启动Linux系统，因为无法找到root设备]]></description><category></category></item><item><title><![CDATA[【repo】创建新branch]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/55197951</link><guid>https://blog.youkuaiyun.com/w8u/article/details/55197951</guid><author>w8u</author><pubDate>Thu, 16 Feb 2017 14:43:32 +0800</pubDate><description><![CDATA[背景Android BSP，使用repo管理源代码。 
共有多个不同平台，如imx6，imx5，zx2000等等。每个平台又分为不同板子。因此有多个分支。 
需要基于imx6_m6_vab820创建新的branch。 
当前我的工作目录中，代码处于zx2000_l5_vt6091 branch。过程在已有其他分支基础上操作使工作目录干净，就是删除未跟踪的和已跟踪但是内容改变了的文件。repo ini]]></description><category></category></item><item><title><![CDATA[多线程下std::list的遍历与push]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/6454902</link><guid>https://blog.youkuaiyun.com/w8u/article/details/6454902</guid><author>w8u</author><pubDate>Mon, 30 May 2011 15:49:00 +0800</pubDate><description><![CDATA[<br />一个线程往list中push数据，一个线程遍历该list然后进行操作。没有试验，我猜测可能会有多线程安全问题。<br />解决办法，如果对遍历的数据进行加锁，可能性能有损失。我使用了如下这种方法，记录在案。<br /> <br />使用一个临时的list，比如，<br />std::list<int> readables; //遍历时使用的<br />std::list<int> readables_tmp; //push数据的时候使用的。在遍历之前，再将此list中的数据移到readables]]></description><category></category></item><item><title><![CDATA[介绍一款免费开源功能强大的源代码格式化工具——UniversalIndentGUI]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5810392</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5810392</guid><author>w8u</author><pubDate>Fri, 13 Aug 2010 17:38:00 +0800</pubDate><description><![CDATA[项目地址：http://universalindent.sourceforge.net/ 先看看样子长的如何：    实际上这只是一个前端GUI而已，后台用的也是一批开源的源代码格式化工具而已，这些工具，都是命令行运行的。 看看程序所在目录下的文件就知道了， 如图：  可以看到背后有一批的可执行文件，实际进行格式化动作的，就是这些幕后功臣了。 这玩意儿可以所见即所得的进行实时观看格式化效果。最最重要的是，它可以帮助我们编写一个批处理文件来对一批的文件进行格式化。 在重整工具/建立批处理菜单项就能创建一个批处]]></description><category></category></item><item><title><![CDATA[软件代码设计零碎杂想-6]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5806675</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5806675</guid><author>w8u</author><pubDate>Thu, 12 Aug 2010 13:24:00 +0800</pubDate><description><![CDATA[上节简单讨论了下数据的流转方式，从最基本的方面进行讨论，然而，这最基础的知识点，往往被视而不见，不加细致的分析，反而去够摸比较飘的东西。关于数据及数据流转方式，还有很多方面要去考察，以后再慢慢谈。我写的每篇博客，漏洞很多，问题也很多，可惜看的人很少，没人关注，也没有人指出错误或者不对的地方来。 今天谈谈对象的依赖关系。同样从最基础的知识点谈起。先谈谈两个对象间的关系。任何一个对象，不是被其他对象所依赖，就是依赖其他对象。有一个实际情况要注意，对象的实例的使用方式，都是在一个函数里，都是在某函数中调用对象的方]]></description><category></category></item><item><title><![CDATA[软件代码设计零碎杂想-5]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5788944</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5788944</guid><author>w8u</author><pubDate>Wed, 04 Aug 2010 20:43:00 +0800</pubDate><description><![CDATA[本节讨论下数据流转方式。 一般情况下，所谓对象，都有状态信息的，这些状态，其实就是对象的数据。如果一个对象完全不与其他对象发生关系，基本上是很少见的，一般的函数都需要参数。今天这里不讨论关于状态如何变化的问题。 那么两个对象之间如何发送关系，对象A需要对象B的数据，有哪些方法可以完成？这些都是在进行设计的时候，需要了解的。先看例子： class BTDownloader {     double rate,speed,downloaded;     .... };   一个BT下载者，内部保存了下载速率，下]]></description><category></category></item><item><title><![CDATA[软件代码设计零碎杂想-4]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5788730</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5788730</guid><author>w8u</author><pubDate>Wed, 04 Aug 2010 18:10:00 +0800</pubDate><description><![CDATA[多年以前，当我还对面向对象的软件设计思想热火朝天的时候，我手里捧着一本带着软件复用字样的书，刚巧被公司搞UI设计的同事看见了，他当时已经考取了PMP，问我，“软件复用，你们能开发出这样的被复用的代码来吗？” 我当时思考了半天，回答是，我现在还没有能力把现在做的这个项目里的代码，复用到另一个项目里去，当然，函数库，算法库，这库那库除外。 以面向对象的思想，用面向接口编程，至少有3个参与方，接口类，具体类，使用接口的客户，一般来说，只要暴露给客户接口类接可以了，再用一个创建工厂来创建接口类的实例，客户拿着这个实]]></description><category></category></item><item><title><![CDATA[软件代码设计零碎杂想-3]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5776135</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5776135</guid><author>w8u</author><pubDate>Fri, 30 Jul 2010 12:08:00 +0800</pubDate><description><![CDATA[基于现在的计算机架构设计，也基于这个世界的时空规律，现阶段，就我所知，对于一个线程的执行，在cpu中，是一个指令一个指令执行的，也就是说，cpu是按照顺序来读取机器指令，在某时刻，只有一条指令被执行。我还没有发现过在同一个时刻，同一个线程里的多条指令被多个地方同时执行，也没有发现cpu在执行指令的时候，不按照指令顺序，东一条西一条的去乱七八糟的执行。为什么扯这些闲淡？我只想引出高级语言中的3类流程控制结构，无论哪一种流程控制结构，最终在cpu上，都是乖乖的一条指令一条指令的执行，并没有什么面向对象，面向过程]]></description><category></category></item><item><title><![CDATA[不同codepage文件转换操作实录]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5773449</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5773449</guid><author>w8u</author><pubDate>Thu, 29 Jul 2010 11:36:00 +0800</pubDate><description><![CDATA[因有一芬兰语项目，文件以ANSI方式保存，内有注释，有芬兰语。在中文环境下打开，与GBK编码冲突，出现乱码。使用doxygen进行文档化，如果输入的编码采用GBK，则提示错误。因我想用中文对文件进行注释后用doxygen进行文档化，所以需要将芬兰语变化成GBK编码。 在csdn求助，得到不少回复。最终的解决方法记录在案，以备后查。 我尝试了方案如下： cattycat的方案，因为输出还是有不识别的文字：// Index 0 = Marginaalit pll?pois，其中的？即为不识别的。当然，这是我的经]]></description><category></category></item><item><title><![CDATA[子窗口与父窗口的消息关系网-2]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5769783</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5769783</guid><author>w8u</author><pubDate>Tue, 27 Jul 2010 20:10:00 +0800</pubDate><description><![CDATA[下面是得自MSDN中关于Common Controls的说明，具体路径为：ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WIN32COM.v10.en/shellcc/platform/commctls/common/common.htm#Using_Common_Control 可以发消息给通用控件来通知控件做某事或者向控件要某事。 当控件发生某事件，比如用户输入，会向父窗口发WM_NOTIFY消息。请自行查阅WM_NOTIFY和NMHDR。 只是可惜的是，EDIT]]></description><category></category></item><item><title><![CDATA[子窗口与父窗口的消息关系网-1]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5769702</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5769702</guid><author>w8u</author><pubDate>Tue, 27 Jul 2010 19:08:00 +0800</pubDate><description><![CDATA[windows系统下面，每一个窗口都是一个WNDCLASS的实例。而一个WNDCLASS都有一个窗口过程（WndProc）与之对应。这不管是我们自己创建的WNDCLASS窗口还是windows标准窗口，比如button，edit等。Edit控件功能强大，能够处理字符输入删除编辑等，显然是windows系统实现的。对于Edit控件的窗口过程函数，我们是无法得到的（当然排除类似hook等方法）。由此，得到一个结论： 结论1：Edit，Button等windows标准窗口控件（The standard Micro]]></description><category></category></item><item><title><![CDATA[软件代码设计零碎杂想-2]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5758733</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5758733</guid><author>w8u</author><pubDate>Fri, 23 Jul 2010 19:49:00 +0800</pubDate><description><![CDATA[想到一个极端的例子，主要是想说如何提取变化的东西和设计的取舍。 先看一个题目：考试分数为百分制，请将给定的分数进行分类，分类规则是 [0,60)    不及格 [60,70)    合格 [70,80)    良好 [80,90)    优秀 [90,100]   杰出 嗯，题目简单，做法也很简单，如下,简便起见，假设分数为整形： char* get_result(int x) {     if ( x result();    } 有的人说，有的时候，用if只是简单判断下参数是否正确而已，可以像上面进行抽]]></description><category></category></item><item><title><![CDATA[Step by step——WinX开发入门教程-6]]></title><link>https://blog.youkuaiyun.com/w8u/article/details/5758436</link><guid>https://blog.youkuaiyun.com/w8u/article/details/5758436</guid><author>w8u</author><pubDate>Fri, 23 Jul 2010 17:11:00 +0800</pubDate><description><![CDATA[自定义窗口类(WNDCLASS)程序 对于对话框模板资源的程序比较简单，因为windows系统帮我们做了很多事情，真的是很多事情，想想我们自己手工用代码动态生成对话框上的一些控件试试看，对话框程序基本工作都交给了windows窗口系统了。我们只需要调用一个函数DialogBox，指定对话框资源ID，窗口过程，OK了。Windows窗口系统自动帮我们从可执行文件的资源节读取数据，帮我们创建窗口上的控件，排列位置。更重要的是，对于模态对话框，我们不需要写消息循环的处理代码。所以前面的例子里，代码都非常简单。对于]]></description><category></category></item></channel></rss>