<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CodeFlight]]></title><description><![CDATA[让代码飞一会儿...]]></description><link>https://blog.youkuaiyun.com/chenfei3306</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenfei3306]]></copyright><item><title><![CDATA[Windows 环境下，使用 VirtualBox 安装 Ubuntu 虚拟机]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/149539292</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/149539292</guid><author>chenfei3306</author><pubDate>Tue, 22 Jul 2025 16:19:13 +0800</pubDate><description><![CDATA[本文详细介绍了在Windows环境下使用VirtualBox安装Ubuntu虚拟机的完整过程]]></description><category></category></item><item><title><![CDATA[Python 构建壳来启动加密的 SpringBoot Jar 包，增加反编译难度]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/148736637</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/148736637</guid><author>chenfei3306</author><pubDate>Wed, 18 Jun 2025 11:55:47 +0800</pubDate><description><![CDATA[本文介绍了使用Python构建启动器来运行加密SpringBoot Jar包的方法。]]></description><category></category></item><item><title><![CDATA[ElasticSearch 安装（单机版本）]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/134433274</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/134433274</guid><author>chenfei3306</author><pubDate>Thu, 16 Nov 2023 08:47:58 +0800</pubDate><description><![CDATA[此文档演示 ElasticSearch 的单机版本在 CentOS 7 环境下的安装方式以及相关的配置。]]></description><category></category></item><item><title><![CDATA[Yapi 容器化部署]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/131248197</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/131248197</guid><author>chenfei3306</author><pubDate>Fri, 16 Jun 2023 15:38:40 +0800</pubDate><description><![CDATA[浏览器打开 http://[your-ip-address]:3000，使用 username: admin@admin.comy 和 password: mfe.org 进行登陆。前提是你的环境已经安装了 Docker 服务。新建 Dockerfile。]]></description><category></category></item><item><title><![CDATA[Java 线程状态有哪些？]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130242905</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130242905</guid><author>chenfei3306</author><pubDate>Wed, 19 Apr 2023 14:16:47 +0800</pubDate><description><![CDATA[在线程的生命周期中，它需要经历初始状态、可运行状态、阻塞状态、等待状态、超时等待状态和终止状态]]></description><category></category></item><item><title><![CDATA[Java 线程池的拒绝策略]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130231259</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130231259</guid><author>chenfei3306</author><pubDate>Tue, 18 Apr 2023 21:04:04 +0800</pubDate><description><![CDATA[Java 线程池的拒绝策略一共有四种，分别为`AbortPolicy`，`CallerRunsPolicy`，`DiscardPolicy`，`DiscardOldestPolicy`。下面就来说明这四种策略的不同之处。]]></description><category></category></item><item><title><![CDATA[Java 对象四种引用类型]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130221160</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130221160</guid><author>chenfei3306</author><pubDate>Tue, 18 Apr 2023 14:29:41 +0800</pubDate><description><![CDATA[在 Java 的对象世界里面，对象的引用有 4 类之分，分别是：强引用（Strong Reference）、软引用（Soft Reference）、弱引用（Weak Reference）和虚引用（Phantom Reference）。]]></description><category></category></item><item><title><![CDATA[Java 堆外内存]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130158712</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130158712</guid><author>chenfei3306</author><pubDate>Fri, 14 Apr 2023 17:31:40 +0800</pubDate><description><![CDATA[在 Java 虚拟机中，分配对象基本上都是在堆上进行的，然而在有些情况下，缓存的数据量非常大时，使用磁盘或者分布式缓存就会比较合适，这时**堆外缓存**就是一个比较合适的选择。一般会认为 Java 进程启动后，除了分配的堆（heap）内存之外的内存都为堆外内存。堆外内存在没有引用时，也会被 Java 垃圾收集器进行回收。]]></description><category></category></item><item><title><![CDATA[Redis 如何使用 RedisCluster 构建高可用集群架构？]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130095638</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130095638</guid><author>chenfei3306</author><pubDate>Tue, 11 Apr 2023 22:57:19 +0800</pubDate><description><![CDATA[Redis Cluster 提供 Redis 的水平扩展的能力，采用去中心化的架构，集群中的每个节点保存独立的数据以及整个集群的相关状态。由于每个节点都和集群中的其他节点进行交互，客户端只要链接其中一个节点，就能感知整个集群节点。]]></description><category></category></item><item><title><![CDATA[Redis 如何使用 Twemproxy 和 Sentinel 构建高可用集群架构？]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130064002</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130064002</guid><author>chenfei3306</author><pubDate>Mon, 10 Apr 2023 16:55:18 +0800</pubDate><description><![CDATA[使用 Sentinel 构建的主从复制架构，能够实现高可用，但是不能解决单个 Redis 节点的数据量过大的问题，如果单个 Redis 节点的数据量过大，主机内存过载，那么就需要使用 Redis 的集群架构来将数据进行分片处理，使其分布在不同的物理机上面，使其能够做到容量的扩展。]]></description><category></category></item><item><title><![CDATA[Redis 如何使用 Sentinel 构建主从复制的高可用架构？]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130032526</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130032526</guid><author>chenfei3306</author><pubDate>Sat, 08 Apr 2023 18:14:02 +0800</pubDate><description><![CDATA[Sentinel 服务是 Redis 的高可用架构方案，用来解决主从复制场景下，从节点无法自动提升为主节点的问题。]]></description><category></category></item><item><title><![CDATA[Redis 如何配置读写分离架构（主从复制）？]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/130027955</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/130027955</guid><author>chenfei3306</author><pubDate>Sat, 08 Apr 2023 13:40:48 +0800</pubDate><description><![CDATA[实际上就是 Redis 对数据除持久化之外的一种数据冗余备份机制。（能够在主节点出现故障时，通过其他手段让从节点快速提升为主节点提供服务以实现故障的恢复。）在读多写少的场景下，主从复制能够做到读写分离，提高 Redis 的负载均衡能力。]]></description><category></category></item><item><title><![CDATA[如何使用 Python 搭建一个 NTP 服务器]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/129387908</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/129387908</guid><author>chenfei3306</author><pubDate>Tue, 07 Mar 2023 18:03:29 +0800</pubDate><description><![CDATA[使用 python 基础库构建一个简易的 ntp 服务器，用来对移动设备进行时间的校准。这里使用 android 移动设备作为 ntp 客户端来进行测试。在上述服务启动之后，可以通过如下命令来执行测试。库的使用，用来将整型数据进行包装。]]></description><category></category></item><item><title><![CDATA[PythonCookbook 笔记：简单实现优先级队列]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/125963357</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/125963357</guid><author>chenfei3306</author><pubDate>Sun, 24 Jul 2022 19:59:19 +0800</pubDate><description><![CDATA[代码】PythonCookbook笔记简单实现优先级队列。]]></description><category></category></item><item><title><![CDATA[SpringBoot 同时上传多文件和传输 JSON 数据]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/123128205</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/123128205</guid><author>chenfei3306</author><pubDate>Fri, 25 Feb 2022 10:53:58 +0800</pubDate><description><![CDATA[文章目录SpringBoot 同时上传多文件和传输 JSON 数据代码逻辑执行请求
SpringBoot 同时上传多文件和传输 JSON 数据

核心是要使用 @RequestPart 注解

代码逻辑
public class Material {
  
    private Long id;
    private String name;
    private Integer status;
    private Integer isDel;
    private String rejectR]]></description><category></category></item><item><title><![CDATA[AndroidStudio 调试 smali 代码]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/122894473</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/122894473</guid><author>chenfei3306</author><pubDate>Sat, 12 Feb 2022 12:00:10 +0800</pubDate><description><![CDATA[文章目录AndroidStudio 调试 smali 代码调试环境AndroidStudio 添加 smalidea 插件调整 smalidea 插件关联的文件类型反编译 app-release.apk回编 app-release.app重新签名 apk 和对齐重新安装 apk 到你的设备已调试的方式启动 app导入 smali 代码到 AndroidStudio在 smali 文件中设置断点并调试
AndroidStudio 调试 smali 代码
调试环境

macOS Monterey 12.2
An]]></description><category></category></item><item><title><![CDATA[反编译 APK 的基本步骤]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/122842097</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/122842097</guid><author>chenfei3306</author><pubDate>Wed, 09 Feb 2022 15:02:39 +0800</pubDate><description><![CDATA[文章目录反编译 APK 的基本步骤1.编写一个简单的安卓 app2.将 release-app.apk 解压缩3.将 classes.dex 文件反编译为 jar 文件4.使用 jd-gui 可视化阅读 classes-dex2jar.jar  文件内容5.使用 apktool 反汇编 release-app.apk6.回编 apk7.重新签名 apk 和对齐8.重新安装 apk 到你的设备
反编译 APK 的基本步骤

本文简要说明一个 apk（未加固） 的反编译步骤以及所使用到的工具，下列工具在网上均可]]></description><category></category></item><item><title><![CDATA[添加 frida-gadget 到安卓应用（无须 root）]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/122614878</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/122614878</guid><author>chenfei3306</author><pubDate>Fri, 21 Jan 2022 09:43:33 +0800</pubDate><description><![CDATA[文章目录添加 frida-gadget 到安卓应用（无须 root）1.使用 apktool 解开对应的 apk2.将 frida-gadget.so 添加到对应 cpu 架构下面3.注入 frida-gadget 字节码到 app 中4.添加网络权限5.回编 apk6.重新签名 apk 和对齐7.重新安装 apk 到你的设备8.和 frida-gadget 交互
添加 frida-gadget 到安卓应用（无须 root）
1.使用 apktool 解开对应的 apk
apktool d myapp.ap]]></description><category></category></item><item><title><![CDATA[系统架构之负载均衡]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/120687582</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/120687582</guid><author>chenfei3306</author><pubDate>Sun, 10 Oct 2021 16:03:38 +0800</pubDate><description><![CDATA[文章目录系统架构之负载均衡核心概念二层负载均衡三层负载均衡四层负载均衡七层负载均衡DNS + LVS + NGINX + REAL-SERVER  四层负载均衡负载均衡要素上游服务器配置负载均衡算法失败重试健康检查TCP检查HTTP 检查备份上游服务器不可用上游服务器长连接HTTP 反向代理HTTP 动态负载均衡Nginx 四层负载均衡
系统架构之负载均衡

7 层负载均衡，对应的是 http 的 7 层协议
4 层负载均衡对应的是 tcp 的 4 层协议
Nginx 现在也支持 4 层协议

核心概念
二]]></description><category></category></item><item><title><![CDATA[系统架构之模式]]></title><link>https://blog.youkuaiyun.com/chenfei3306/article/details/120632698</link><guid>https://blog.youkuaiyun.com/chenfei3306/article/details/120632698</guid><author>chenfei3306</author><pubDate>Thu, 07 Oct 2021 09:30:15 +0800</pubDate><description><![CDATA[文章目录系统架构之模式分层分割分布式分布式分类集群缓存缓存种类CDN反向代理本地缓存分布式缓存异步采用异步好处冗余自动化应对策略安全策略
系统架构之模式

分层

分层是企业应用系统中最常见的一种架构模式，将系统在横向维度上切分成几个部分，每个部分负责一部分相对比较单一的职责，然后通过上层对下层的依赖和调用组成一个完整的系统

分割

如果说分层是将软件在横向方面进行切分，那么分割就是在纵向方面对软件进行切分


系统越大，功能越复杂，服务和数据处理的种类也越多，将这些不同的功能和服务分割开来，包装成高内]]></description><category></category></item></channel></rss>