<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rensichao的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rensichao</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rensichao]]></copyright><item><title><![CDATA[C++实现俄罗斯方块--补充]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/157511112</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/157511112</guid><author>rensichao</author><pubDate>Thu, 29 Jan 2026 15:57:20 +0800</pubDate><description><![CDATA[sleepfor函数在visual studio 2022（我使用）需要新增头文件。源码中选择宽字符是我觉得因为使用win32 API 绘制图形；]]></description><category></category></item><item><title><![CDATA[Aidl 学习小结]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140610926</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140610926</guid><author>rensichao</author><pubDate>Mon, 22 Jul 2024 16:10:11 +0800</pubDate><description><![CDATA[由于使用aidl主要用于进程间通信，不同进程间的文件描述符关联信息是不同的，所以我在aidl中添加了传递文件描述符的接口，来验证进程间的通信。注2：ParcelFileDescriptor.open中第二个参数，如果直接填 MODE_WORLD_READABLE会报安全问题。到ren.txt，然后push到设备中；一、在android11上的差异（环境androidstudio2022）注3：AndroidManifest.xml 中添加读写文件的权限。本小结是基于博主教程在android11上的实现。]]></description><category></category></item><item><title><![CDATA[简单 JNI实现java与C++集成]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140498861</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140498861</guid><author>rensichao</author><pubDate>Wed, 17 Jul 2024 16:53:08 +0800</pubDate><description><![CDATA[替换distributionUrl：https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip。6.2）构造数组需要选用byte[]而不是Byte[]，后者是类不是java的基础类型；6.3）C++接口实现有输入参数，处理时需要调用env->Getxxx，不能直接处理；注1：可以看到java调用c++的接口，是通过jni实现的。3.1 java端是MainActivity.java 需要调用接口；注2：传递的参数都是jni中的类型。]]></description><category></category></item><item><title><![CDATA[VScode 远程连接服务器]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140471910</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140471910</guid><author>rensichao</author><pubDate>Tue, 16 Jul 2024 17:41:13 +0800</pubDate><description><![CDATA[注：以上只是我的操作流程，仅供参考。安装扩展借鉴 https://zhuanlan.zhihu.com/p/655276102。相关配置会保存到C:usersxxx.ssh\config。点击SSH中“+”选项卡，会要求输入用户,ip,及端口。右下角会有remote 连接，点击连接，输入密码。vscode 安装 remote-SSH 扩展。密码确认后，进入远程服务器，可以访问服务器代码。重启VScode后，相关连接保存在选项卡中。退出远程，只需要在输入密码时按 Esc。]]></description><category></category></item><item><title><![CDATA[MTK 不同安卓版本的刷写]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140470356</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140470356</guid><author>rensichao</author><pubDate>Tue, 16 Jul 2024 16:41:25 +0800</pubDate><description><![CDATA[由于不同的安卓版本，镜像的分区会有不同，所以下载前需要格式化选择Format All+Download。注：具体刷写教程可以搜索网上其他博主的分析；刷写工具上welcome选项卡也有相关说明。https://spflashtools.com/ ， 我下载的是v5.2228版本。]]></description><category></category></item><item><title><![CDATA[ubuntu 22.04 编译mtk 安卓9代码]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140467951</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140467951</guid><author>rensichao</author><pubDate>Tue, 16 Jul 2024 16:24:56 +0800</pubDate><description><![CDATA[方法1：降低gcc版本，ubuntu22.04是gcc-11 需要降低到gcc-9。搜索博主文章有两个解决方法：https://blog.youkuaiyun.com/xiandang8023/article/details/124750391。下面是修改后文件状态。具体参考博主：https://blog.youkuaiyun.com/qq_32607609/article/details/128318438。参考：https://blog.youkuaiyun.com/CrazyZik/article/details/117163973。]]></description><category></category></item><item><title><![CDATA[linux 非阻塞式读串口小计]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140384374</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140384374</guid><author>rensichao</author><pubDate>Fri, 12 Jul 2024 17:21:26 +0800</pubDate><description><![CDATA[之前调试串口使用阻塞读，并加延时。发现读写效率不高，因为串口每次读出来的数据，并不全需要增加很长的延时，否则需要循环读。但是循环读当数据读完后，会造成程序阻塞。所以想提高效率，我采用非阻塞式读写，并使用循环读+select监听fd的方式。当文件描述符提示可读在读，当校验通过时退出循环。注：只是改善方案，非最优方案，在此记录一下。]]></description><category></category></item><item><title><![CDATA[ubuntu tab键无法自动补全]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140384006</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140384006</guid><author>rensichao</author><pubDate>Fri, 12 Jul 2024 17:04:48 +0800</pubDate><description><![CDATA[参考：https://huaweicloud.youkuaiyun.com/63566689d3efff3090b5d530.html。简单方法：修改/etc/passwd,在对应用户名的用户主目录后面，添加:/bin/bash。原因：新建的用户，shell是dash，改为bash，问题就解决了。]]></description><category></category></item><item><title><![CDATA[使用openssl 实现base64编解码]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140378883</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140378883</guid><author>rensichao</author><pubDate>Fri, 12 Jul 2024 14:58:35 +0800</pubDate><description><![CDATA[注：BIO_write()后一定需要调用BIO_flush()，将BIO_mem 内部缓冲区的数据都写出去。借助BIO对象是OpenSSL中的一种抽象，用于处理各种类型的输入/输出，如文件、套接字、内存等。– BIO_write()，使字符串经过B64编码，写入BIO_mem, 再从memory读出。BIO链，通过BIO_push()接口，可以实现b64对象和需要编解码的字符串的链接。– BIO_read()，使字符串经过B64解码，读出；]]></description><category></category></item><item><title><![CDATA[动态库的路径]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140372969</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140372969</guid><author>rensichao</author><pubDate>Fri, 12 Jul 2024 10:56:55 +0800</pubDate><description><![CDATA[链接器选项 -L: 编译的时候去找的目录.也就是所有的 -lxxx选项里的库都会先从 -L 指定的目录去找,然后是默认的地方(/lib and /usr/lib).可以通过-L指定连接时库的路径，通过-R（或-rpath）指定程序运行时库的路径,大大提高了库应用的灵活性.(ld默认搜索/lib和/usr/lib这两个目录)我在写makefile时，一直以为动态库的路径，是指定-L后面的路径。注：由于不习惯使用-R，所以我才把需要的动态库路径写入/etc/ld.so.confg 并更新运行路径。]]></description><category></category></item><item><title><![CDATA[centos7.9 系统 openssl源码编译]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140370885</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140370885</guid><author>rensichao</author><pubDate>Fri, 12 Jul 2024 10:29:36 +0800</pubDate><description><![CDATA[如果原来系统中有openssl，请事先做好备份。头文件和库可以在源码编译时设置路径，bin文件需要创建软链接。注2：创建软链接后可以直接使用openssl命令，记得把原来软链接备份或者移除；源码下载：https://www.openssl.org/source/注3：如果使用动态库，记得把运行时库路径放置到环境路径中；注1：头文件和库文件在makefile中设置；注1：prefix 表示之后的安装路径。注2：./config 遇到的环境问题。至此openssl 源码升级完成。]]></description><category></category></item><item><title><![CDATA[g++ -O2编译结果异常]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140268753</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140268753</guid><author>rensichao</author><pubDate>Mon, 08 Jul 2024 15:09:13 +0800</pubDate><description><![CDATA[分析：添加-O2会调用uart_close()，不添加-O2则不会调用uart_close()；-O2优化参数：编译器可能会优化代码的执行顺序。尝试：多种逻辑判断无果（]]></description><category></category></item><item><title><![CDATA[主机 usb插拔失效]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140266788</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140266788</guid><author>rensichao</author><pubDate>Mon, 08 Jul 2024 13:59:01 +0800</pubDate><description><![CDATA[可能是VMUSBArbSevice中出现了问题，所以停用后相当于重启。正常情况下，打开虚拟机接入usb设备时，才会识别为vmware usb device。2.2 参考博主 https://blog.youkuaiyun.com/kevin_lcc/article/details/43911209。2.1 查看设备管理器，发现在主机插拔的usb设备都识别为vmware usb device；方法任务管理器中 停用 VMUSBArbSevice服务后，usb设备识别正常。现象：关闭虚拟机后，主机插拔usb 不识别。]]></description><category></category></item><item><title><![CDATA[makefile 静态链接库有顺序]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140215177</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140215177</guid><author>rensichao</author><pubDate>Fri, 05 Jul 2024 17:47:01 +0800</pubDate><description><![CDATA[注：第一种编译时会报错，因为cppserver调用了cppcommon的函数。调试了很久，果然每件事的细节都需要研究。]]></description><category></category></item><item><title><![CDATA[linux 串口读数据阻塞]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/140105550</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/140105550</guid><author>rensichao</author><pubDate>Mon, 01 Jul 2024 17:23:19 +0800</pubDate><description><![CDATA[现象： 在虚拟机上调试linux串口时，当写入数据后，读数据时遇到阻塞。下面这篇博文对串口各个属性，都要详细介绍，mark一下为以后学习。]]></description><category></category></item><item><title><![CDATA[Android Studio 加载第三方库]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/139965926</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/139965926</guid><author>rensichao</author><pubDate>Tue, 25 Jun 2024 18:17:38 +0800</pubDate><description><![CDATA[3.3 如果路径中使用${CMAKE_ANDROID_ARCH_ABI}，则ndk需要含有四种架构，且libs目录下也要有四种对应的库。总结：以上只是会为了调试结果而写的记录，没有仔细分析原理。我是按照上面博主的分享尝试的，现记录一下自己遇到的问题。]]></description><category></category></item><item><title><![CDATA[南瑞芯片SM1 加密现象]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/139751649</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/139751649</guid><author>rensichao</author><pubDate>Mon, 17 Jun 2024 18:36:08 +0800</pubDate><description><![CDATA[但是实际情况，会出现加解密异常。（打印EK 和IV与解密端一致，怀疑执行若干次SM1加密后，DK发生变化）。根据规格书说明 SM1 EK和IV在第一次导入不变后，后续不需要导入。具体原因未知，现每次加解密前都导入 EK 和 IV后，基本正常。]]></description><category></category></item><item><title><![CDATA[南瑞SM1加密（测试规律）]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/139655723</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/139655723</guid><author>rensichao</author><pubDate>Thu, 13 Jun 2024 15:35:25 +0800</pubDate><description><![CDATA[结论：对于SM1加密，再加密数据后添加16个0后，用填充后数据解密。解密后的数据等于源数据+16个非0数据（与芯片SM1算法有关）我做了10次测试，分别用随机数产生512数据（5次）和随机数产生1024数据（5次）对于SM1 加密，如果源数据加密，后再用加密数据解密，可以得到源数据。注：结论只是针对南瑞芯片SM1算法，进行了10次测试的结果。如果改变了了加密数据，是否能够找出解密后的源数据呢？]]></description><category></category></item><item><title><![CDATA[南瑞加密芯片加密指定长度(0xe0)失败]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/139651911</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/139651911</guid><author>rensichao</author><pubDate>Thu, 13 Jun 2024 13:43:58 +0800</pubDate><description><![CDATA[解决方案：当遇到长度低字节位为0xe0时，在原数据后填充16个0，再加密。当长度p2，p3中的低字节位 p3=0xe0时，加密大概率失败。下面log可以看出对比非0xe0，0xe0长度的加密过程。注：由于加解密数据需要16的整数倍，经验上来讲填充16的倍数，保证长度低字节位非0xe0即可。分析原因：可能长度0xe0与ins值相同，导致芯片内部逻辑存在bug（个人感觉）；当长度位0xe0时，大概率第二次接收INS命令读不到0xe0，导致加密失败。]]></description><category></category></item><item><title><![CDATA[安卓app增加创建文件权限]]></title><link>https://blog.youkuaiyun.com/rensichao/article/details/139493373</link><guid>https://blog.youkuaiyun.com/rensichao/article/details/139493373</guid><author>rensichao</author><pubDate>Thu, 06 Jun 2024 10:32:15 +0800</pubDate><description><![CDATA[AndroidManifest.xml中添加权限。注：只添加下面两项没有效果。]]></description><category></category></item></channel></rss>