<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LH806732的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LH806732</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LH806732]]></copyright><item><title><![CDATA[Linux内核的list_head民用改造]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/53946839</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/53946839</guid><author>LH806732</author><pubDate>Fri, 30 Dec 2016 22:39:07 +0800</pubDate><description><![CDATA[list_head.h
/***************************************************************************************************
* 
*								Linux的list_head链表民用改造
*
**************************************************]]></description><category></category></item><item><title><![CDATA[Linux i2c->sound]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/52861819</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/52861819</guid><author>LH806732</author><pubDate>Wed, 19 Oct 2016 17:55:55 +0800</pubDate><description><![CDATA[// i2c总线
struct bus_type i2c_bus_type = {
 .name  = "i2c",
 .match  = i2c_device_match,
 .probe  = i2c_device_probe,
 .remove  = i2c_device_remove,
 .shutdown = i2c_device_shutdown,
};
/*]]></description><category></category></item><item><title><![CDATA[Linux驱动之设备模型]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/52815762</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/52815762</guid><author>LH806732</author><pubDate>Fri, 14 Oct 2016 14:38:58 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/cjok376240497/article/category/941999
﻿﻿]]></description><category></category></item><item><title><![CDATA[Linux串口大致过程]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/52798737</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/52798737</guid><author>LH806732</author><pubDate>Wed, 12 Oct 2016 17:19:55 +0800</pubDate><description><![CDATA[基于i.mx6ul


drivers\tty\serial\imx.c
#define SERIAL_IMX_MAJOR 207
#define MINOR_START  16
#define DEV_NAME  "ttymxc"
/*
 * This determines how often we check the modem status signals
 * for a]]></description><category></category></item><item><title><![CDATA[linux设备树interrupt GIC_SPI及GIC_PPI]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/52679495</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/52679495</guid><author>LH806732</author><pubDate>Tue, 27 Sep 2016 11:54:34 +0800</pubDate><description><![CDATA[例: interrupts = ;

1. GIC type // include\dt-bindings\Interrupt-controller\arm-gic.h
#define GIC_SPI 0 // 共享中断
#define GIC_PPI 1 // 每个处理器拥有独立中断
ARM SMP cores are often associated with a GIC, prov]]></description><category></category></item><item><title><![CDATA[i.mx6ul引脚复用]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/52678124</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/52678124</guid><author>LH806732</author><pubDate>Tue, 27 Sep 2016 10:10:07 +0800</pubDate><description><![CDATA[使用CAN引脚作为例子
arch\arm\boot\dts\imx6ul-14x14-evk.dts:
pinctrl_flexcan1: flexcan1grp{
	fsl,pins = <
		MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX	0x1b020
		MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX	0x1b020
	>;
};]]></description><category></category></item><item><title><![CDATA[高并发的epoll+线程池，epoll在线程池内]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/52584946</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/52584946</guid><author>LH806732</author><pubDate>Mon, 19 Sep 2016 13:22:23 +0800</pubDate><description><![CDATA[转载自：http://blog.chinaunix.net/uid-311680-id-2439723.html



epoll是linux下高并发服务器的完美方案，因为是基于事件触发的，所以比select快的不只是一个数量级。
单线程epoll，触发量可达到15000，但是加上业务后，因为大多数业务都与数据库打交道，所以就会存在阻塞的情况，这个时候就必须用多线程来提速。
 
ep]]></description><category></category></item><item><title><![CDATA[module_platform_driver(), module_i2c_driver]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/52440697</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/52440697</guid><author>LH806732</author><pubDate>Mon, 05 Sep 2016 15:41:48 +0800</pubDate><description><![CDATA[将近六年没看linux，发现多了个module_platform_driver()，记录一下。


#include static struct platform_driver flexcan_driver = {
	.driver = {
		.name = DRV_NAME,
		.pm = &flexcan_pm_ops,
		.of_match_table = flexcan_of_]]></description><category></category></item><item><title><![CDATA[UWP 依赖动画及独立动画(Dependent and independent animations)]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/51695124</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/51695124</guid><author>LH806732</author><pubDate>Thu, 16 Jun 2016 22:50:17 +0800</pubDate><description><![CDATA[拥有如下任意特性的动画是一个独立动画:
1. 动画的Duration设置为0秒
2. 动画目标为UIElement.Opacity属性
3. 动画目标是UIElement属性的子属性，如：RenderTransform,

Projection, 
Clip
4. 动画目标为Canvas.Left或Canvas.Top
5. 动画目标为Brush，并且使用了SolidColorBr]]></description><category></category></item><item><title><![CDATA[温习C/C++宏定义]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/51606526</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/51606526</guid><author>LH806732</author><pubDate>Tue, 07 Jun 2016 21:08:23 +0800</pubDate><description><![CDATA[很早以前写过一篇C宏定义相关文章。
今天用VS2015建了一个windows驱动的工程，上一次工作写了一个WDF USB驱动还是2010年，准确说是KMDF的驱动。看了一下驱动结构，结构基本没怎么变，但发现多了相当多的宏定义，如果你是高手就绕道行吧，这里在温习一下宏定义相关的东西 :-(


一. 初级用法
#define to_string(a)					#a// 把参数a转换成字符串]]></description><category></category></item><item><title><![CDATA[环形缓存(C#版)]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/51598375</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/51598375</guid><author>LH806732</author><pubDate>Mon, 06 Jun 2016 21:28:52 +0800</pubDate><description><![CDATA[想了一想，既然连厌恶的android平台都测试了环形缓存，不能冷落了windows。


C#源码：
/// 
/// 环形缓冲区
/// 一. 写数据:
///     1. push: 当数据已写满时返回false，否则可以正常写入返回true
///     2. pushNoCaseFull: 不管缓冲区是否已写满或当前位置数据是否已读取过，都会写入，不关心读/写指针位置
/// ]]></description><category></category></item><item><title><![CDATA[环形缓存(java版)]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/51597649</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/51597649</guid><author>LH806732</author><pubDate>Mon, 06 Jun 2016 19:15:39 +0800</pubDate><description><![CDATA[mRingBuffer = new RingBuffer(10);

      

       new Thread(new Runnable() {

           int write = 0;

           String s;

          

           @Override

           public void run() {]]></description><category></category></item><item><title><![CDATA[样条关键帧动画(SplineDoubleKeyFrame)]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/51559829</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/51559829</guid><author>LH806732</author><pubDate>Wed, 01 Jun 2016 22:52:39 +0800</pubDate><description><![CDATA[转载: http://www.cnblogs.com/KevinYang/archive/2008/11/10/1330789.html]]></description><category></category></item><item><title><![CDATA[RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/51559608</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/51559608</guid><author>LH806732</author><pubDate>Wed, 01 Jun 2016 22:21:05 +0800</pubDate><description><![CDATA[转载自：http://www.cnblogs.com/crazypig/archive/2012/02/20/2359599.html






CompositeTransform]]></description><category></category></item><item><title><![CDATA[C语言的2016]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/51052313</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/51052313</guid><author>LH806732</author><pubDate>Sun, 03 Apr 2016 22:00:20 +0800</pubDate><description><![CDATA[转载自：http://www.techug.com/c-language-2

这是我在2015年初写的草稿，且从未考虑过发布。这是一个未经雕琢的版本，因为没有任何人对这个草稿提供改进。最简单的变化只是将发布时间从2015年改成2016年。如果有缺陷、改进和抱怨，请随时联系。-Matt
自70年代初，C语言已经存在。人们在C不同的发展时间点上“学会了C语言”，但是知识一般在学习后就停滞了，因]]></description><category></category></item><item><title><![CDATA[OpenGL ES 3.0 顶点缓冲区VBO使用]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/50890533</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/50890533</guid><author>LH806732</author><pubDate>Mon, 14 Mar 2016 22:28:34 +0800</pubDate><description><![CDATA[转载自：http://www.cnblogs.com/gaofengworking/p/4943204.html


OpenGL ES 3.0 顶点缓冲区VBO使用



一般情况下数据都是有CPU从RAM取数据 然后传给GPU去处理，相对于GPU速度要慢一些。
使用VBO技术 可以把数据存储到GPU的内存空间中，这样GPU可以直接从GPU的内存中取得数据进行处理 速度会提升很多]]></description><category></category></item><item><title><![CDATA[OpenGL ES 3.0 点，线，三角形绘制形式总结]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/50890498</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/50890498</guid><author>LH806732</author><pubDate>Mon, 14 Mar 2016 22:24:32 +0800</pubDate><description><![CDATA[转载自：http://www.cnblogs.com/gaofengworking/p/4941937.html



OpenGL ES 3.0
顶点
    -1,  1, 0,
-0.5f,  0, 0,
     0, -1, 0,
    -1,  0, 0,
 0.5f,   0, 0,
     1, -1,  0


顶点设置成了大小20
public]]></description><category></category></item><item><title><![CDATA[Android OpenGL ES 3.0 纹理应用]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/50890458</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/50890458</guid><author>LH806732</author><pubDate>Mon, 14 Mar 2016 22:20:29 +0800</pubDate><description><![CDATA[转载自：http://www.cnblogs.com/gaofengworking/p/4941774.html


文主要演示OpenGL ES 3.0 纹理演示。接口大部分和2.0没什么区别，脚本稍微有了点变化而已。
扩展GLSurfaceView
package com.example.gles300;

 

import android.app.ActivityManager;]]></description><category></category></item><item><title><![CDATA[C# delegate多种变体]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/50831919</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/50831919</guid><author>LH806732</author><pubDate>Wed, 09 Mar 2016 00:08:41 +0800</pubDate><description><![CDATA[C#代理比较啰嗦，整理一下。
public delegate int AddDelegate(int a, int b);
public delegate int DoWork();
int x = 1;
int y = 2;
int result = 0;

AddDelegate add_0 = add;
AddDelegate add_1 = delegate (int a, int b]]></description><category></category></item><item><title><![CDATA[.NET Task的新认识]]></title><link>https://blog.youkuaiyun.com/LH806732/article/details/50706775</link><guid>https://blog.youkuaiyun.com/LH806732/article/details/50706775</guid><author>LH806732</author><pubDate>Sun, 21 Feb 2016 00:07:47 +0800</pubDate><description><![CDATA[当使用Task时，如果Task的实现（即代理）本身也是异步的，则Wait()会失效。


1. Wait()有效，Task的实现（即代理）本身非异步
private async void btn_task1_Click(object sender, RoutedEventArgs e)
{
    this.WriteLine("btn_task1_Click+++++++++++++++]]></description><category></category></item></channel></rss>