<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u011376563的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u011376563</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011376563]]></copyright><item><title><![CDATA[uint8_t与16进制std::string的相互转换]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/126749328</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/126749328</guid><author>u011376563</author><pubDate>Wed, 07 Sep 2022 16:48:06 +0800</pubDate><description><![CDATA[记录C++实现uint8_t与16进制std::string的相互转换]]></description><category></category></item><item><title><![CDATA[linux epoll+eventfd实现线程间通信]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/125758181</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/125758181</guid><author>u011376563</author><pubDate>Wed, 13 Jul 2022 10:15:55 +0800</pubDate><description><![CDATA[使用linux的epoll和eventfd机制实现的线程间通信示例]]></description><category></category></item><item><title><![CDATA[Ndk使用android log库的方法]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/125371234</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/125371234</guid><author>u011376563</author><pubDate>Mon, 20 Jun 2022 13:43:29 +0800</pubDate><description><![CDATA[android native/ndk使用log库及封装。]]></description><category></category></item><item><title><![CDATA[Wifi知识点整理]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/125272742</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/125272742</guid><author>u011376563</author><pubDate>Tue, 14 Jun 2022 10:02:04 +0800</pubDate><description><![CDATA[wifi知识点整理总结，可快速查询]]></description><category></category></item><item><title><![CDATA[rust实现向handler post函数，在handler的独立线程中按照顺序执行函数对象]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/124412837</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/124412837</guid><author>u011376563</author><pubDate>Mon, 25 Apr 2022 19:54:14 +0800</pubDate><description><![CDATA[use std::sync::{Arc, Mutex};
use std::{thread, time::Duration};

type Callback = Box&lt;dyn FnOnce() + Send + 'static&gt;;

enum MessageType {
    CallbackFunction,
    PureMessage,
}

struct LiteMessage&lt;T&gt; {
    what: i32,
    data: Option&lt;T&gt;.]]></description><category></category></item><item><title><![CDATA[rust使用trait实现回调函数对象注册、反注册、回调函数调用]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/124398288</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/124398288</guid><author>u011376563</author><pubDate>Mon, 25 Apr 2022 10:02:02 +0800</pubDate><description><![CDATA[use std::rc::{Rc, Weak};
use std::sync::{Arc};

// 监听事件类型
enum EventType {
    Click,
    DoubleClick,
    Touch,
    None,
}

// 监听事件
struct Event {
    e_type: EventType,
}

// 处理事件
trait HandleEvent {
    fn on_event(&amp;self, event: &amp;Event);
}

/.]]></description><category></category></item><item><title><![CDATA[Ndk交叉编译libfuse3.10.0源码]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/123229520</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/123229520</guid><author>u011376563</author><pubDate>Wed, 02 Mar 2022 15:03:34 +0800</pubDate><description><![CDATA[一. ndk生成交叉编译工具链

请参考：Cargo+Ndk实现Android平台的rust源码交叉编译_u011376563的博客-优快云博客

的3.1～3.2部分内容

二. 下载libfuse3.10.0源码


youthful@youthful-VirtualBox-Ubuntu:~/test$ git clone https://github.com/libfuse/libfuse.git

注意：本文编译的是3.10.0源码，libfuse源码可能已经更新版本，请下载之后切换到releas]]></description><category></category></item><item><title><![CDATA[Cargo+Ndk实现Android平台的rust源码交叉编译]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/123200461</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/123200461</guid><author>u011376563</author><pubDate>Tue, 01 Mar 2022 11:16:07 +0800</pubDate><description><![CDATA[一.目标

使用cargo和ndk交叉编译工具链，编译rust源码，能够在android设备上运行。

二.开发环境

VM Box + Ubuntu 20.04.1

三.方法

3.1 下载ndk

最方便的方法是安装Android Studio，再使用其Sdk Manager下载指定的ndk版本，本人使用的ndk版本是：21.4.7075529

下载之后，ndk所在路径：~/Android/Sdk/ndk/21.4.7075529/

3.2 基于ndk生成独立的交叉编译工具链

本文需要生成sdk]]></description><category></category></item><item><title><![CDATA[git tips]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/122359478</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/122359478</guid><author>u011376563</author><pubDate>Fri, 07 Jan 2022 10:40:53 +0800</pubDate><description><![CDATA[1、已经提交到remote的某commit，再未merged之前，修改提交内容：


# git pull --rebase
# git checkout --track [commit对应的remote分支]
# git fetch [commit对应的remote分支链接] [refs/change/56/1243254/1(remote分支的commit记录)] &amp;&amp; git checkout FETCH_HEAD
# //修改内容
# git push origin HEAD:ref]]></description><category></category></item><item><title><![CDATA[NAT学习记录]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/121638808</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/121638808</guid><author>u011376563</author><pubDate>Tue, 30 Nov 2021 17:48:29 +0800</pubDate><description><![CDATA[NAT：网络地址转换，一种网络地址翻译技术，功能是将内部的私有IP地址转换成可以在公网使用的公网IP地址，本质就是让一群局域网内部机器公用一个公网IP。

静态NAT：一个公网IP对应一个私有IP，一对一转换，不进行端口转换。
内网IP     公网IP
192.168.1.55  219.152.168.222:9200
192.168.1.58  219.152.168.223:9200

2NAT：端口多路复用技术，同时转换IP和端口
内网IP     公网IP
192.1...]]></description><category></category></item><item><title><![CDATA[Android 屏幕适配tips]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/121396020</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/121396020</guid><author>u011376563</author><pubDate>Thu, 18 Nov 2021 10:59:02 +0800</pubDate><description><![CDATA[1、兼容性有两种类型：设备兼容性和应用兼容性。
2、manifest.xml添加uses-feature：声明应用需要设备支持该特色功能，如果设备不支持该功能，则应用无法在设备上安装
如果应用在设备上运行的主体功能不需要支持该feature，应该将uses-feature设置为false，并在代码中动态判断：packageManager.hasSystemFeature(PackageManager.FEATURE_xxx)，判断到设备不支持该功能，则调用接口disableXXX()让应用不使用该功能即可。]]></description><category></category></item><item><title><![CDATA[Android Service tips]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/121143565</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/121143565</guid><author>u011376563</author><pubDate>Thu, 04 Nov 2021 15:26:13 +0800</pubDate><description><![CDATA[1）多个组件可同时绑定服务，全部取消绑定后，服务即会被销毁
2）startForegroundService之后5秒没有调用startForeground，系统会人会服务anr
3）应用被系统认定为前台应用需要满足的条件（至少一种）：
3.1）具有可见activity
3.2）具有前台service
3.3）另一个前台应用已关联到该应用（绑定service或者使用content provider）
4）android:exported = false：只有同一...]]></description><category></category></item><item><title><![CDATA[windows下git diff忽略^M]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/121137845</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/121137845</guid><author>u011376563</author><pubDate>Thu, 04 Nov 2021 10:51:05 +0800</pubDate><description><![CDATA[git config --global core.whitespace cr-at-eol
]]></description><category></category></item><item><title><![CDATA[android studio编译带符号的so]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/119755503</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/119755503</guid><author>u011376563</author><pubDate>Tue, 17 Aug 2021 14:13:15 +0800</pubDate><description><![CDATA[在native源码所在模块的build.gradle中新增如下字段：


packagingOptions{
    doNotStrip "*/armeabi/*.so"
    doNotStrip "*/armeabi-v7a/*.so"
    doNotStrip "*/x86/*.so"
}
]]></description><category></category></item><item><title><![CDATA[github新建分支并提交内容]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/119037594</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/119037594</guid><author>u011376563</author><pubDate>Fri, 23 Jul 2021 15:53:42 +0800</pubDate><description><![CDATA[1、在github的project主页创建一个新分支：dev_xxx

2、将新分支clone到本地：gitclonexxx -b dev_xxx

3、本地修改文件并commit

4、推送修改到dev_xxx分支：gitpushorigindev_xxx
]]></description><category></category></item><item><title><![CDATA[android studio配置apk签名]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/118226396</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/118226396</guid><author>u011376563</author><pubDate>Fri, 25 Jun 2021 18:29:28 +0800</pubDate><description><![CDATA[一、准备好平台提供的签名文件

签名文件有两种类型，一般是由设备厂商提供：

1）xxx.jks，如debug.jks

2）xxx.keystore，如debug.keystore

二、配置应用的build.gradle文件

注意：是应用要签名的apk的build.gradle，不是project的build.gradle！

配置文件添加方式如下：


android {
    //新增签名配置
    signingConfigs {
        //debug要签名就按照增加如下内容
  ]]></description><category></category></item><item><title><![CDATA[Preferences DataStore使用实例]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/117778207</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/117778207</guid><author>u011376563</author><pubDate>Thu, 10 Jun 2021 14:10:36 +0800</pubDate><description><![CDATA[build.gradle（模块）添加依赖：

dependencies {
  implementation "androidx.datastore:datastore-preferences:1.0.0-beta01"
  implementation "androidx.datastore:datastore-preferences-rxjava2:1.0.0-beta01"
}
]]></description><category></category></item><item><title><![CDATA[Java与Native相互调用示例及讲解]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/117734752</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/117734752</guid><author>u011376563</author><pubDate>Wed, 09 Jun 2021 11:01:24 +0800</pubDate><description><![CDATA[今天介绍ru'hjava通过jni调用native方法，同时native层能够回调java方法的示例
TestNative.java：
public class TestNative {
  static
  {
  //加载native层源码编译得到的libtest_native.so
    System.loadLibrary("test_native");
  }

 public TestNative() {
 
 }
 
 //该方法...]]></description><category></category></item><item><title><![CDATA[android bitmap、drawable、byte[]转换实现]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/110826079</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/110826079</guid><author>u011376563</author><pubDate>Mon, 07 Dec 2020 19:54:39 +0800</pubDate><description><![CDATA[实用的android bitmap、drawable、byte[]、grpc ByteString之间的相互转换]]></description><category></category></item><item><title><![CDATA[理解linux fork()执行多次]]></title><link>https://blog.youkuaiyun.com/u011376563/article/details/88891876</link><guid>https://blog.youkuaiyun.com/u011376563/article/details/88891876</guid><author>u011376563</author><pubDate>Fri, 29 Mar 2019 14:40:57 +0800</pubDate><description><![CDATA[上代码：


#include&lt;stdio.h&gt;
#include&lt;stdlib.h&gt;

int main()
{
    pid_t p1 = fork();
    pid_t p2 = fork();
    if ( p2 == 0 )
        printf("p1 = %d, p2 = %d\n", p1, p2);
    else
        pr...]]></description><category></category></item></channel></rss>