<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liangruimi的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liangruimi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liangruimi]]></copyright><item><title><![CDATA[Zigbee协议按键触发流程]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/50477496</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/50477496</guid><author>liangruimi</author><pubDate>Thu, 07 Jan 2016 16:56:36 +0800</pubDate><description><![CDATA[呕血整理，zigbee按键触发流程。]]></description><category></category></item><item><title><![CDATA[函数指针数组]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/50389325</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/50389325</guid><author>liangruimi</author><pubDate>Wed, 23 Dec 2015 19:49:04 +0800</pubDate><description><![CDATA[// tas.cpp : Defines the entry point for the console application.
//#include "stdafx.h"typedef int (*Funs)(int, int);//利用typedef定义一个函数指针别名
int add(int a,int b){
    return a+b;
}int mul(int a,int b){]]></description><category></category></item><item><title><![CDATA[指针函数与函数指针的区别]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/50387189</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/50387189</guid><author>liangruimi</author><pubDate>Wed, 23 Dec 2015 15:11:10 +0800</pubDate><description><![CDATA[一、

在学习arm过程中发现这“指针函数”与“函数指针”容易搞错，所以今天，我自己想一次把它搞清楚，找了一些资料，首先它们之间的定义：

1、指针函数是指带指针的函数，即本质是一个函数。函数返回类型是某一类型的指针

     类型标识符   
 *函数名(参数表)

      int *f(x，y);

 

首先它是一个函数，只不过这个函数的返回值是一个地址值。函]]></description><category></category></item><item><title><![CDATA[Android利用SurfaceView画坐标轴上的波形]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/49767641</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/49767641</guid><author>liangruimi</author><pubDate>Tue, 10 Nov 2015 23:37:55 +0800</pubDate><description><![CDATA[最近的一个Android项目中，需要在特定坐标轴上绘制一个数据波形（虚拟仪器之类），并且需要在不同分辨率的设备上保持波形上数据点的个数以及与坐标轴的一致性。

　　思路如下：

　　1、首先采用SurfaceView进行绘图操作，SurfaceView是View的继承类，绘图的效率较高。具体的使用方法是自定义视图类继承SurfaceView并实现SurfaceHolder.Callback]]></description><category></category></item><item><title><![CDATA[关于STM32中NVIC的理解，带错误例子]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/48090757</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/48090757</guid><author>liangruimi</author><pubDate>Sat, 29 Aug 2015 20:06:41 +0800</pubDate><description><![CDATA[STM32有43个channel的settable的中断源；AIRC(Application
 Interruptand Reset Register)寄存器中有用于指定优先级的4 bits。这4个bits用于分配preemption优先级和sub优先级，在STM32的固件库中定义如下
/* Preemption Priority Group--------------------------]]></description><category></category></item><item><title><![CDATA[关于数组的误解]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/47446709</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/47446709</guid><author>liangruimi</author><pubDate>Wed, 12 Aug 2015 16:29:11 +0800</pubDate><description><![CDATA[如下所示：
Int[]  a={1,2,3};
Int[]  c;
 
如果想要将a数组的值赋给c数组，那么用下面的方法是不正确的
 
c=a;//这样做的结果是将a数组的地址赋值给了c，而不是将数据赋值给c。
 
按照上面的赋值方式，当改变c的任何一个值，都会引起a数组的变化
比如：
c[0]=9;
System.out.println(a[0]);
 
运行的结果如下]]></description><category></category></item><item><title><![CDATA[关于主动刷新Android系统图库方法总结]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/46879929</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/46879929</guid><author>liangruimi</author><pubDate>Tue, 14 Jul 2015 16:30:54 +0800</pubDate><description><![CDATA[在项目中经常会要求用户选择图片来进行操作，但是安卓系统的图库应用却不会自动更新图库，比如调用系统相机进行拍照后将照片保存在自定义目录下。虽然图片成功保存在SD卡上，但是当你再次打开图库的时候却无法看到新拍照片。这是由于自己编写的应用没有更新图库数据库导致的。这里解决的方法有以下几个：1、4.0以下的版本可用调用系统挂载SD卡广播来进行图库更新，这种方法会使得图库应用重新扫描SD卡所有文件，如果图片太]]></description><category></category></item><item><title><![CDATA[安卓开发SOCKET编程中几种线程阻塞产生的原因与解决办法]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/45767387</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/45767387</guid><author>liangruimi</author><pubDate>Sat, 16 May 2015 12:17:55 +0800</pubDate><description><![CDATA[在使用socket编程中，有几种情况会使线程产生阻塞。 
1、解析DNS阻塞 
当需要把一个域名解析为IP地址的时候，可用使用以下语句来获得。使用下面API的时候，如果当前环境没有网络，或者网络异常，将会使得解析失败，getByName方法会抛出异常，但是抛出异常的时间大约在三四分钟以后，时间太长。InetAddress add = InetAddress.getByName(hostname);]]></description><category></category></item><item><title><![CDATA[深入浅出JAVA多线程（1）-方法 JOIN]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/45766515</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/45766515</guid><author>liangruimi</author><pubDate>Sat, 16 May 2015 10:38:05 +0800</pubDate><description><![CDATA[对于Java开发人员，多线程应该是必须熟练应用的知识点，特别是开发基于Java语言的产品。本文将深入浅出的表述Java多线程的知识点，在后续的系列里将侧重于Java5由Doug Lea教授提供的Concurrent并行包的设计思想以及具体实现与应用。
    如何才能深入浅出呢，我的理解是带着问题，而不是泛泛的看。所以该系列基本以解决问题为主，当然我也非常希望读者能够提出更好的解决问题的方案以及]]></description><category></category></item><item><title><![CDATA[Java 超时线程控制实现]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/45670613</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/45670613</guid><author>liangruimi</author><pubDate>Tue, 12 May 2015 15:53:55 +0800</pubDate><description><![CDATA[在Java中，如果需要设定代码执行的最长时间，即超时，可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分，在java.util.concurrent包中。Future接口是Java线程Future模式的实现，可以来进行异步计算。

Future模式可以这样来描述：我有一个任务，提交给了Future，Future替我完成]]></description><category></category></item><item><title><![CDATA[java中synchronized用法]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/45167375</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/45167375</guid><author>liangruimi</author><pubDate>Tue, 21 Apr 2015 10:40:29 +0800</pubDate><description><![CDATA[java中synchronized用法

打个比方：一个object就像一个大房子，大门永远打开。房子里有 很多房间（也就是方法）。

这些房间有上锁的（synchronized方法）， 和不上锁之分（普通方法）。房门口放着一把钥匙（key），这把钥匙可以打开所有上锁的房间。

另外我把所有想调用该对象方法的线程比喻成想进入这房子某个 房间的人。所有的东西就这么多了，下面我们看看这些东]]></description><category></category></item><item><title><![CDATA[FileInputStream.read()方法为什么是顺序读取]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/44856843</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/44856843</guid><author>liangruimi</author><pubDate>Fri, 03 Apr 2015 16:29:54 +0800</pubDate><description><![CDATA[FileInputStream.read()方法为什么是顺序读取  


|举报|字号 订阅







import java.io.*;
public class TestFileInputStream {
  public static void main(String[] args) {
    int b = 0;
    FileInputStream ]]></description><category></category></item><item><title><![CDATA[Andriod Handler消息机制]]></title><link>https://blog.youkuaiyun.com/liangruimi/article/details/44828283</link><guid>https://blog.youkuaiyun.com/liangruimi/article/details/44828283</guid><author>liangruimi</author><pubDate>Thu, 02 Apr 2015 09:55:39 +0800</pubDate><description><![CDATA[]]></description><category></category></item></channel></rss>