<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[不忘初心]]></title><description><![CDATA[少壮不努力，老了还得做IT。]]></description><link>https://blog.youkuaiyun.com/kai_zone</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kai_zone]]></copyright><item><title><![CDATA[利用libusb接收数据存在丢帧问题]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/136633615</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/136633615</guid><author>kai_zone</author><pubDate>Mon, 11 Mar 2024 20:30:50 +0800</pubDate><description><![CDATA[利用lisusb开源库实现读取hid数据，并用libusb多缓存的方式解决了hid协议传输高频数据(例如 imu数据)时，会发生丢帧的问题。在实际项目中很常见。希望能帮到遇到相同问题的同学。]]></description><category></category></item><item><title><![CDATA[1.Android Native Sensor(C++)实例]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/128446396</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/128446396</guid><author>kai_zone</author><pubDate>Mon, 26 Dec 2022 18:47:43 +0800</pubDate><description><![CDATA[安卓Sensor数据的获取除了java上层开发外，还有native本地开发。比如基于Sensor数据的算法，为了保证效率，肯定是在native层运行。本文主要基于Android Native 获取不同的Sensor（陀螺仪/加速度/重力/角速度/磁力）数据及工程示例代码。]]></description><category></category></item><item><title><![CDATA[安卓RecyclerView+CardView使用总结]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/80204808</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/80204808</guid><author>kai_zone</author><pubDate>Mon, 20 Dec 2021 14:52:43 +0800</pubDate><description><![CDATA[转载于：https://blog.youkuaiyun.com/iwanttohitren/article/details/60963706前言： 使用RecyclerView和CardView已经好久了，写一个小程序来回顾和梳理一下知识点。RecyclerView和CardView的介绍和优势，我这里就不再赘述了，网上有很多好的文章，例如：我刚开始学习的时候，是看着鸿洋大神写的Android Recycle...]]></description><category></category></item><item><title><![CDATA[Android WatchDog]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/121949418</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/121949418</guid><author>kai_zone</author><pubDate>Wed, 15 Dec 2021 12:19:44 +0800</pubDate><description><![CDATA[android watchdog]]></description><category></category></item><item><title><![CDATA[c++基础(6) - string]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/121344236</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/121344236</guid><author>kai_zone</author><pubDate>Mon, 15 Nov 2021 21:53:29 +0800</pubDate><description><![CDATA[简介：

string 是 C++ 中常用的一个类，它非常重要，我们有必要在此单独讲解一下。

使用 string 类需要包含头文件&lt;string&gt;，下面的例子介绍了几种定义 string 变量（对象）的方法：


​
#include&lt;iostream&gt;
#include&lt;string&gt;
using namespace std;

int main(){
    string s1;
    string s2 ="c plus plus";
...]]></description><category></category></item><item><title><![CDATA[C++基础(5) - 内存管理]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/121279034</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/121279034</guid><author>kai_zone</author><pubDate>Thu, 11 Nov 2021 23:48:43 +0800</pubDate><description><![CDATA[内存管理是C++最令人切齿痛恨的问题，也是C++最有争议的问题，C++高手从中获得了更好的性能，更大的自由，C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨，但内存管理在C++中无处不在，

内存泄漏几乎在每个C++程序中都会发生，因此要想成为C++高手，内存管理一关是必须要过的，除非放弃C++，转到Java或者.NET，他们的内存管理基本是自动的，当然你也放弃了自由和对内存的支配权，

还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。
...]]></description><category></category></item><item><title><![CDATA[C++基础(4) - 数组]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/121237951</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/121237951</guid><author>kai_zone</author><pubDate>Tue, 09 Nov 2021 22:17:31 +0800</pubDate><description><![CDATA[1. Cpp中的数组

C++支持数组数据结构，它可以存储一个固定大小的相同类型的元素的顺序集合。数组是用来存储一系列数据，但它往往被认为是一系列相同类型的变量。

数组的声明并不是声明一个个单独的变量，如a0,a1,a2,a3,a4...,a99,而是声明一个数组变量，比如as,然后使用as[0],as[1],as[2],...,as[99]来

代表一个个单独的变量，数组的特定元素可以通过索引来访问。所数组都是由连续的内存位置组成，最低的地址对应第一个元素，最高的地址对应最后一...]]></description><category></category></item><item><title><![CDATA[Linux signal、sigaction的使用总结]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/121152946</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/121152946</guid><author>kai_zone</author><pubDate>Thu, 04 Nov 2021 22:38:26 +0800</pubDate><description><![CDATA[一、什么是信号

信号是UNIX和Linux系统响应某些条件而产生的一个事件，接收到该信号的进程会相应地采取一些行动。比如kill、程序异常crash、段错误等。

但它们还可以作为进程间通信或修改行为的一种方式，明确地由一个进程发送给另一个进程。一个信号的产生叫生成，接收到一个信号叫捕获。

二、信号的种类

信号的名称是在头文件signal.h中定义的，信号都以SIG开头，常用的信号并不多，常用的信号如下：



更多的信号类型可在kernel目录下搜...]]></description><category></category></item><item><title><![CDATA[Android studio:编译遇到的问题及常用技巧]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/109528570</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/109528570</guid><author>kai_zone</author><pubDate>Fri, 06 Nov 2020 11:35:08 +0800</pubDate><description><![CDATA[1. 编写本地代码（C/C++）自动补全：

  实际要做的就是将Gradle链接到外部CMake（CMakeLists.txt）或ndk-build(Android.mk)项目

从IDE左侧打开“项目”窗格，然后选择Android视图。
	右键单击要链接到本机库的模块，例如应用程序模块，然后从菜单中选择“Link c++ Project with Gradle”。您应该看到一个类似于图4所示的对话框。
	
	从下拉菜单中，选择CMake或ndk-build。
	如果选择CMake，请使用...]]></description><category></category></item><item><title><![CDATA[android NDK(四) ：JNI本地数组及对象的处理实例]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/109496327</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/109496327</guid><author>kai_zone</author><pubDate>Wed, 04 Nov 2020 19:18:33 +0800</pubDate><description><![CDATA[1. C++返回数组类型：


//返回float[],其他基本数据类型数组类似
JNIEXPORT
 jfloatArray JNICALL
 Java_com_miles_Test_RetFloatArray(JNIEnv *env, jclass)
 {
 	jfloatArray positionArray = env-&gt;NewFloatArray(2);
 	if (positionArray == NULL){
 		return NULL;
 	}
	jfloat tempArray[2]]></description><category></category></item><item><title><![CDATA[android NDK(三) ：C/C++代码调用java实例]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/109483860</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/109483860</guid><author>kai_zone</author><pubDate>Wed, 04 Nov 2020 09:33:15 +0800</pubDate><description><![CDATA[1. java代码：


package com.miles;

import android.content.Context;
import android.provider.Settings;
import android.util.Log;


public class Test {

    static {
        System.loadLibrary("native-lib");
    }

    public static String getString()
    {
 ...]]></description><category></category></item><item><title><![CDATA[android NDK(二) ：JNI的数据类型和类型签名]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/109480768</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/109480768</guid><author>kai_zone</author><pubDate>Tue, 03 Nov 2020 22:31:25 +0800</pubDate><description><![CDATA[基本类型

JNI类型
			Java类型
			描述
		jbyte
			byte
			有符号，8位，整型
		jshort
			short
			有符号，16位，整型
		jint
			int
			有符号，32位，整型
		jlong
			long
			有符号，64位，整型
		jfloat
			float
			32位，浮点型
		jdouble
			double
			64位，浮点型
		jboolean
			boolean
			无符号，8位，整型
		jchar
			...]]></description><category></category></item><item><title><![CDATA[项目Git tag格式规范]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/108757393</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/108757393</guid><author>kai_zone</author><pubDate>Wed, 23 Sep 2020 17:24:48 +0800</pubDate><description><![CDATA[Git tag format:

&lt;ProjectName&gt;_&lt;Version&gt;_&lt;comments(optional)&gt;

Where:

ProjectName- 采用UpperCamelStyle风格。第一个字母大写。

Version- version in a format v{major}.{minor}.{build}{patch} ; major is number, minor is number, build is number, patch i...]]></description><category></category></item><item><title><![CDATA[软件版本发布说明]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/108757200</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/108757200</guid><author>kai_zone</author><pubDate>Wed, 23 Sep 2020 17:18:51 +0800</pubDate><description><![CDATA[Requirements

Title of "Release Notes".
	Date with format of:Date:Month ##[st|nd|rd|th], 20##
	Version with format of:Version:Hello SDK#.#
	Bulletted/Numbered Lists
	Each list of items in the Release notes uses a bulletted/numbered list. Bulletted li...]]></description><category></category></item><item><title><![CDATA[软件版本格式]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/108754039</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/108754039</guid><author>kai_zone</author><pubDate>Wed, 23 Sep 2020 15:25:48 +0800</pubDate><description><![CDATA[为了在软件产品生命周期中更好的沟通和标记，我们应该对APP、软件的版本号命名的规范和原则有一定的了解。]]></description><category></category></item><item><title><![CDATA[C++代码风格规范]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/108747991</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/108747991</guid><author>kai_zone</author><pubDate>Wed, 23 Sep 2020 10:52:20 +0800</pubDate><description><![CDATA[Introduction

介绍

以下是此代码惯例的重点：C++ Coding Style Guide Highlights

但我们强烈建议大家阅读完整文档因为包含了很多有用的信息和例子。

头文件

通常，每个.c / .cpp文件都应该有一个关联的 .h文件。 有一些常见的例外，例如单元测试（unit tests）和只包含main（）函数的小型 .c / .cpp文件。

正确使用 header files 会对代码的可读性，大小和性能有所提升。

以下规则将会指示使用 header files 的]]></description><category></category></item><item><title><![CDATA[Android大厂面试题锦集(BAT TMD JD 小米)]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/108201213</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/108201213</guid><author>kai_zone</author><pubDate>Mon, 24 Aug 2020 16:02:02 +0800</pubDate><description><![CDATA[上次写这篇文章的时候也差不多是一年前了，这一年我兜兜转转从android到java又回到android，校招面了很多大厂，阿里、京东、小米、头条、知乎、腾讯、有赞，也收获了几个offer。这是集合了牛客网、百度、简书等网站的几十篇面经和我自己面试的经历的合集，希望大家喜欢。


1.android事件分发机制，请详细说下整个流程



事件分发（面试）.png

2.android view绘制机制和加载过程，请详细说下整个流程

1.ViewRootImpl会调用performTraversals(),.]]></description><category></category></item><item><title><![CDATA[Android中三种锁的基本实现]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/106910692</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/106910692</guid><author>kai_zone</author><pubDate>Mon, 22 Jun 2020 21:53:38 +0800</pubDate><description><![CDATA[一、synchronized
基本概念：对象锁synchronized（object）{….}用法
在以上的代码块中只能由一个线程执行！！！
wait()、notify()是用在这个代码块当中的。wait()可以使当前线程A马上失去对象锁并且沉睡，直到对象调用notify()唤醒该线程。此时持有对象锁的线程B会先行执行完毕，然后再将对象锁交给线程A继续执行。


public class Person {
private String name;
private int age;


public Pers]]></description><category></category></item><item><title><![CDATA[C++11多线程mutex]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/106793696</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/106793696</guid><author>kai_zone</author><pubDate>Tue, 16 Jun 2020 19:24:10 +0800</pubDate><description><![CDATA[mutex又称互斥量，用于提供对共享变量的互斥访问。C++11中mutex相关的类都在&lt;mutex&gt;头文件中。共四种互斥类:

序号
			名称
			用途
		1
			std::mutex
			最基本也是最常用的互斥类
		2
			std::recursive_mutex
			同一线程内可递归(重入)的互斥类
		3
			std::timed_mutex
			除具备mutex功能外，还提供了带时限请求锁定的能力
		4
			std::recursive_timed_mutex
	]]></description><category></category></item><item><title><![CDATA[C++ pthread 多线程]]></title><link>https://blog.youkuaiyun.com/kai_zone/article/details/106793363</link><guid>https://blog.youkuaiyun.com/kai_zone/article/details/106793363</guid><author>kai_zone</author><pubDate>Tue, 16 Jun 2020 19:00:52 +0800</pubDate><description><![CDATA[本节将详细介绍std::thread的用法。



std::thread在&lt;thread&gt;头文件中声明，因此使用std::thread需包含&lt;thread&gt;头文件。

&lt;thread&gt;头文件摘要

&lt;thread&gt;头文件声明了 std::thread 线程类及std::swap(交换两个线程对象)辅助函数。另外命名空间std::this_thread也声明在&lt;thread&gt;头文件中。下面是 C++11 标...]]></description><category></category></item></channel></rss>