<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zhyulo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zhyulo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zhyulo]]></copyright><item><title><![CDATA[源码分享-golang的BMP文件读写库]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/135737064</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/135737064</guid><author>zhyulo</author><pubDate>Sun, 21 Jan 2024 22:47:53 +0800</pubDate><description><![CDATA[用于读写BMP文件的golang版源码]]></description><category></category></item><item><title><![CDATA[源码分享-HTML文档解析---GoLang实现]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/133589491</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/133589491</guid><author>zhyulo</author><pubDate>Thu, 05 Oct 2023 22:24:40 +0800</pubDate><description><![CDATA[HTML文档解析]]></description><category></category></item><item><title><![CDATA[源码分享-M3U8数据流ts的AES-128解密并合并---GoLang实现]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/133586794</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/133586794</guid><author>zhyulo</author><pubDate>Thu, 05 Oct 2023 20:40:44 +0800</pubDate><description><![CDATA[学习了Go语言后，又用Go重新实现了一遍。源码如下，无第三方库依赖。之前使用C语言实现了一次，见。]]></description><category></category></item><item><title><![CDATA[源码分享-go语言实现的祖冲之ZUC加密算法]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/131752671</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/131752671</guid><author>zhyulo</author><pubDate>Sun, 16 Jul 2023 17:29:49 +0800</pubDate><description><![CDATA[【代码】源码分享-go语言实现的祖冲之ZUC加密算法。]]></description><category></category></item><item><title><![CDATA[源码分享-go语言实现的snow3g加密算法]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/131752504</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/131752504</guid><author>zhyulo</author><pubDate>Sun, 16 Jul 2023 17:25:13 +0800</pubDate><description><![CDATA[【代码】源码分享-go语言实现的snow3g加密算法。]]></description><category></category></item><item><title><![CDATA[源码分享-go语言实现qsufsort后缀数组生成算法]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/130462963</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/130462963</guid><author>zhyulo</author><pubDate>Tue, 02 May 2023 13:22:57 +0800</pubDate><description><![CDATA[go语言实现的后缀数组生成算法]]></description><category></category></item><item><title><![CDATA[源码分享-golang的二进制文件读写库]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/128890546</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/128890546</guid><author>zhyulo</author><pubDate>Sun, 05 Feb 2023 15:04:36 +0800</pubDate><description><![CDATA[功能类似golang标准库`encoding/binary`，用于二进制码流/文件的读写。对比标准库，本库对以下方面做了功能增强：

1. 支持bit级别的结构体成员编解码
2. 支持`bit`、`sort`结构体标签，用于指定结构体成员的bit数、大小端属性
3. 支持`map`类型结构
4. 支持`string`字符串
5. 支持自定义方法编解码]]></description><category></category></item><item><title><![CDATA[源码分享-彩色/灰度保存二维数组值为BMP图片]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/121059509</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/121059509</guid><author>zhyulo</author><pubDate>Sun, 31 Oct 2021 01:47:11 +0800</pubDate><description><![CDATA[源码中实现了一个功能：能够把二维数组的值，保存在BMP图片中。从而形象的观察数据峰值等在数组中的分布情况。实现基于Java，不依赖任何第三方库。

默认生成灰度图，也可生成彩色图。数组的值取值范围0-255（彩色的图建议取值范围0-192，即红到紫的颜色部分）。

图片效果：（0-&gt;255）



调用示例：


import java.io.File;
import java.io.IOException;

public class Main {

    public static void m]]></description><category></category></item><item><title><![CDATA[Android上so库的函数加载顺序验证]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/119613693</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/119613693</guid><author>zhyulo</author><pubDate>Wed, 11 Aug 2021 18:18:50 +0800</pubDate><description><![CDATA[加载执行顺序: _init-&gt;xxx_init-&gt;JNI_OnLoad，记在这里，备忘。

验证代码：


#include &lt;jni.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;pthread.h&gt;
#define LOG_TAG "DexHelper"
#include "Log.h"

/*** 加载执行顺序: _init-&gt;xxx_init-&gt;JNI_OnLoad ***/

extern "C"
void _init]]></description><category></category></item><item><title><![CDATA[源码分享-Android上native的log头文件]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/119613558</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/119613558</guid><author>zhyulo</author><pubDate>Wed, 11 Aug 2021 18:12:30 +0800</pubDate><description><![CDATA[使用该log头文件，更方便的调试Android上native代码。


#ifndef _LOG_H_
#define _LOG_H_

#include &lt;android/log.h&gt;

/*
 * This is the local tag used for the following simplified
 * logging macros.  You can change this preprocessor definition
 * before using the other ma.]]></description><category></category></item><item><title><![CDATA[源码分享-基于Java，复制某目录（包括子目录）下的全部文件]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/119613330</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/119613330</guid><author>zhyulo</author><pubDate>Wed, 11 Aug 2021 18:01:44 +0800</pubDate><description><![CDATA[如题，复制某个目录下的全部文件，包括子目录下的，输出到同一目录级下。

返回复制成功的文件个数。



    public static boolean copyFile(String in, String out) {
        if (new File(out).isDirectory()) {
            out = new File(out, new File(in).getName()).getAbsolutePath();
        }
        try {
  ]]></description><category></category></item><item><title><![CDATA[源码分享-M3U8数据流ts的AES-128解密并合并]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/118033197</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/118033197</guid><author>zhyulo</author><pubDate>Fri, 18 Jun 2021 20:24:32 +0800</pubDate><description><![CDATA[源码依赖开源软件OpenSSL的crypto/aes/aes_core.c、crypto/aes/aes.h、crypto/aes/aes_locl.h共3个文件。


]]></description><category></category></item><item><title><![CDATA[使用CodeBlocks&MinGW编译7zip中的7za.exe]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/115495143</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/115495143</guid><author>zhyulo</author><pubDate>Wed, 07 Apr 2021 21:17:55 +0800</pubDate><description><![CDATA[一、下载源码

7-zip属于开源软件，可以直接从官网下载软件源码。官网地址：https://www.7-zip.org/



在官网主页的左栏，单击Download，下载最新版本的源码包，这里给出最新版19.00 (2019-02-21) 的下载地址：https://www.7-zip.org/a/7z1900-src.7z



将下载到的源码解压缩到一个文件夹下，这里包括Asm、C、CPP、DOC 4个文件夹。

二、导入项目

打开CodeBlocks，单击 打开存在的项目，文件类型选择 MS V]]></description><category></category></item><item><title><![CDATA[EBK2文件解析]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/114442197</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/114442197</guid><author>zhyulo</author><pubDate>Sun, 14 Mar 2021 15:48:20 +0800</pubDate><description><![CDATA[一、概述

之前反编译了iReader阅读的app，通过研读源码，获得了包括EBK2格式在内的文件格式。本文就EBK2的格式，将进行详细的分析。

感谢荒野无灯大神的《 逆向iReader解读ebk2电子书格式 》，为我EBK2格式分析提供了巨大的帮助。

二、文件头部分

文件头结构如下：


struct Ebk2Head
{
    DWORD bookid;
    WORD  headDataSize;// ebk2文件头部信息数据总大小
    WORD  ebkVersion; // ebk文]]></description><category></category></item><item><title><![CDATA[Andriod踩坑日记---Paint.getTextWidths踩坑]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/108818658</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/108818658</guid><author>zhyulo</author><pubDate>Sat, 26 Sep 2020 23:03:30 +0800</pubDate><description><![CDATA[使用Paint.getTextWidths时发现当小写'f'与小写'i'组成"fi"时，字符宽度输出错误。效果如下：



显示代码如下：


Bitmap bitmap = Bitmap.createBitmap(400, 300, Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(0xFF000000);
p.]]></description><category></category></item><item><title><![CDATA[源码分享-增量更新BSPatch算法的Java版实现]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/107350046</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/107350046</guid><author>zhyulo</author><pubDate>Tue, 14 Jul 2020 23:35:30 +0800</pubDate><description><![CDATA[BSDiff是一个增量更新算法，它在服务器端运行BSDiff算法产生patch包。在客户端运行BSPatch算法，将旧文件和patch包合成新文件。增量更新在很多大型应用中是比较常见的一种技术，通过文件对比的方式来生成差分包。

bsdiff这个开源库连接：http://www.daemonology.net/bsdiff/

遍历搜索引擎，只发现BSPatch算法实现只有C语言源码，使得在Android等Java语言环境中，只能通过NDK的方式运行，非常不方便。

自己阅读了下BSPatch算法源码，发现]]></description><category></category></item><item><title><![CDATA[源码分享-以队列方式运行任务]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/106881853</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/106881853</guid><author>zhyulo</author><pubDate>Sun, 21 Jun 2020 10:04:13 +0800</pubDate><description><![CDATA[有些时候，需要用队列的方式，及先进先出，依次执行线程任务。大概场景如下：
  1. 不是很急的任务（比如提前缓存），但不能在主进程中进行（比如网络传输）；
  2.需要有顺序的执行线程任务；
  3.任务调用比较集中（某时刻突然增加大量任务，但大部分时间没有任务）；
  4.希望进程数更少的执行大量重复性任务；
  5.。。。。。。

  下面是我实现的队列线程基类，分享给大家。


import java.util.LinkedList;
import java.util...]]></description><category></category></item><item><title><![CDATA[Andriod反编译-从iReader开始学习反编译]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/103113266</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/103113266</guid><author>zhyulo</author><pubDate>Sun, 17 Nov 2019 22:13:01 +0800</pubDate><description><![CDATA[一、声明

  本人反编译只用于学习交流，禁止使用本文章用于商业用途。其次，如果本文章侵害了您的权益，请及时联系我删除本文。

二、准备

  1. 该文章使用window10系统，使用其他系统可能会与本文章描述有所不同。

  2.安装好的 Android Studio 软件一套，并确保软件编译工作正常。

  3.java反编译工具 jadx与dex2jar，没有请网上自行下载...]]></description><category></category></item><item><title><![CDATA[STM32F4开发-TFT屏驱动（支持横屏、竖屏选择）]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/90376450</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/90376450</guid><author>zhyulo</author><pubDate>Mon, 20 May 2019 16:07:43 +0800</pubDate><description><![CDATA[一、总述

  以下的程序都是基于https://blog.youkuaiyun.com/zhyulo/article/details/89816439 方法建立的工程。

  代码已上传：https://download.youkuaiyun.com/download/zhyulo/11159855 。

 基于STM32F4的StdPeriph固件库TFT屏驱动程序，其中TFT屏控制芯片为ILI934...]]></description><category></category></item><item><title><![CDATA[STM32F4开发-新建工程]]></title><link>https://blog.youkuaiyun.com/zhyulo/article/details/89816439</link><guid>https://blog.youkuaiyun.com/zhyulo/article/details/89816439</guid><author>zhyulo</author><pubDate>Sat, 04 May 2019 20:30:24 +0800</pubDate><description><![CDATA[一、总述

  之前买了一块STM32F407ZG的核心板，以及和它配套的TFT显示屏，学了很久了吧。最近同学让我教他STM32开发，于是就想写点东西总结一下。

  我习惯用的开发环境是Keil，软件及开发环境的安装网上有很多例子，在这里就不再细说了。那么接下来，就是学习如何新建一个STM32工程。（为了减小开发负担，在这里使用了STM32F4的StdPeriph固件库）

二、第一步—...]]></description><category></category></item></channel></rss>