<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HKF的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/acdHKF</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; acdHKF]]></copyright><item><title><![CDATA[上传图片流]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/136506798</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/136506798</guid><author>acdHKF</author><pubDate>Wed, 06 Mar 2024 15:05:48 +0800</pubDate><description><![CDATA[如果不设置请求头参数，直接设置headerParams=null，就可以进行普通参数的POST请求了。* 使用httpclint 发送文件，如果不传输文件，直接设置fileParams=null，//文件传输http请求头(multipart/form-data)//字节传输http请求头(application/json)* @param otherParams  其他字符串参数。* @param headerParams 请求头参数。* @param fileParams   文件参数。]]></description><category></category></item><item><title><![CDATA[数组简单练习]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/125022304</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/125022304</guid><author>acdHKF</author><pubDate>Sat, 28 May 2022 20:00:00 +0800</pubDate><description><![CDATA[1.把数组中的 0 移到末尾
 /**
     * 把数组中的 0 移到末尾 如 0 1 2 0 3 -&gt; 1 2 3 0 0
     * 思路：遍历数组找出不为0的元素放在数组中，其余位置补0即可。
     *
     * @param arr 指定数组
     * @author Huikf
     * @since 19:58 2022/5/28
     */
    private static void removeZero(int[] arr) {
        int i]]></description><category></category></item><item><title><![CDATA[算法练习（四）]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/124034307</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/124034307</guid><author>acdHKF</author><pubDate>Fri, 08 Apr 2022 10:02:17 +0800</pubDate><description><![CDATA[1.最长连续子数组
  /**
     * 最长连续子数组的长度
     * 定义一个计数器和最大长度
     * 遍历的时候，当当前元素比下一个元素小，则count++，不然count重置为1，同时更新最大长度
     *
     * @param nums arr
     * @return int
     * @author huikf
     * @since 2022/4/8 9:53
     */
    private static int longestArr(int[] ]]></description><category></category></item><item><title><![CDATA[剑指offer（算法题）]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/123617159</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/123617159</guid><author>acdHKF</author><pubDate>Sun, 20 Mar 2022 17:28:36 +0800</pubDate><description><![CDATA[03：1.数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

输入：
[2, 3, 1, 0, 2, 5, 3]
输出： 2 或 3

/**
     * 查找重复的数字
     *
     * @param arr 指定数组
     * @return int 未找到返回-1
     * @author Huikf
     * @since]]></description><category></category></item><item><title><![CDATA[Spring Bean的生命周期和循环依赖]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/123090935</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/123090935</guid><author>acdHKF</author><pubDate>Wed, 23 Feb 2022 16:43:12 +0800</pubDate><description><![CDATA[Spring循环依赖

@Service
class A{
    @Autowired
    B b;
}
@Service
class B{
    @Autowired
    A a;
}
public static void main(String[] args) {
    Object bean = new ClassPathXmlApplicationContext().getBean("a");
}

首先从main函数进入获取bean，进入到AbstractBeanFactory # ]]></description><category></category></item><item><title><![CDATA[算法练习(三)]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/121672706</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/121672706</guid><author>acdHKF</author><pubDate>Thu, 02 Dec 2021 11:02:02 +0800</pubDate><description><![CDATA[1.二分查找
  /**
     * 二分查找
     *
     * @param arr    数组
     * @param target 目标值
     * @return int 返回index
     * @author huikf
     * @since 2021/12/2 11:01
     */
    private static int binSearch(int[] arr, int target) {
        Arrays.sort(arr);
     ]]></description><category></category></item><item><title><![CDATA[Netty入门]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/121211014</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/121211014</guid><author>acdHKF</author><pubDate>Mon, 08 Nov 2021 16:43:10 +0800</pubDate><description><![CDATA[服务端：
public class NettyServer {

    public static void main(String[] args) throws InterruptedException {
        //1.创建一个线程组，接收客户端连接
        EventLoopGroup bossGroup = new NioEventLoopGroup();
        //2.创建一个线程组，处理网络IO操作
        EventLoopGroup workerGrou]]></description><category></category></item><item><title><![CDATA[NIO基础知识]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/121165489</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/121165489</guid><author>acdHKF</author><pubDate>Fri, 05 Nov 2021 16:20:36 +0800</pubDate><description><![CDATA[IO概念
BIO (Blocking I/O):
同步阻塞 I/O 模式，数据的读取写入必须阻塞在一个线程内等待其完成。在客户端连接数量不高的情况下，是没问题的。但是，当面对十万甚至百万级连接的时候，传统的 BIO 模型是无能为力的。因此，我们需要一种更高效的 I/O 处理模型来应对更高的并发量。
NIO (Non-blocking/New I/O):
NIO 是一种同步非阻塞的 I/O 模型，于 Java 1.4 中引入，对应 java.nio包，提供了 Channel , Selector，Buffer]]></description><category></category></item><item><title><![CDATA[计算机组成原理]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/121064715</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/121064715</guid><author>acdHKF</author><pubDate>Sun, 31 Oct 2021 16:14:12 +0800</pubDate><description><![CDATA[CPU
CPU : Central Processing Unit,通过在计算机芯片上放置数十亿的晶体管来构建cpu，这些晶体管使它能够执行在内存中的程序所需要的计算，等同于cpu决定了计算机的计算能力。
cpu的核心是从程序取得指令执行计算，分三个阶段：提取，解码和执行。cpu从系统的RAM（主存）中提取指令，然后解码指令的实际内容，由cpu相关部分执行该指令。
cpu的组成：控制单元和算数逻辑单元	（ALU），接受数据输入，执行指令并处理信息，与IO设备通信，这些设备向cpu发送数据并从cpu接收数据
]]></description><category></category></item><item><title><![CDATA[java代理]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/121040034</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/121040034</guid><author>acdHKF</author><pubDate>Fri, 29 Oct 2021 17:57:30 +0800</pubDate><description><![CDATA[静态代理：
简单代理模式，是动态代理的理论基础。常见使用在代理模式
class SysOut {
    public void sout() {
        System.out.println(111);
    }
}

class SysOutProxy {
    private final SysOut sysOut;

    SysOutProxy(SysOut sysOut) {
        this.sysOut = sysOut;
    }

    public void ]]></description><category></category></item><item><title><![CDATA[常见排序算法（Java实现）]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/120988238</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/120988238</guid><author>acdHKF</author><pubDate>Wed, 27 Oct 2021 10:42:35 +0800</pubDate><description><![CDATA[Sort
]]></description><category></category></item><item><title><![CDATA[链表算法题]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/120910617</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/120910617</guid><author>acdHKF</author><pubDate>Fri, 22 Oct 2021 17:45:17 +0800</pubDate><description><![CDATA[1.单链表反转
2.链表中环的检测
3.两个有序链表的合并
4.删除链表中倒数第n个数
5.求链表的中间节点

]]></description><category></category></item><item><title><![CDATA[Linux]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/120323871</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/120323871</guid><author>acdHKF</author><pubDate>Thu, 16 Sep 2021 11:42:29 +0800</pubDate><description><![CDATA[linux文件系统
文件
在linux操作系统中，所有被操作系统管理的资源，如网卡，IO设备，普通文件等等均为文件。
inode
硬盘的最小存储单位是扇区，块由多个扇区组成，文件存储在块中。一个块约为8个连续的扇区组成，大小为4kb，每个扇区存储512个字节。一个文件可能会占用多个块，但是每个块只能存储一个文件。文件存储在块中需要一个空间记录文件的元信息，如某个文件被分成几块，每一块的地址，创建人，权限，大小等信息，存储元信息的区域叫做inode。
总而言之，inode就是维护一个文件被分成几块，记录每块的]]></description><category></category></item><item><title><![CDATA[SpringCloud Alibaba]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/120263979</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/120263979</guid><author>acdHKF</author><pubDate>Mon, 13 Sep 2021 11:39:07 +0800</pubDate><description><![CDATA[111

]]></description><category></category></item><item><title><![CDATA[Zookeeper学习]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/120216426</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/120216426</guid><author>acdHKF</author><pubDate>Fri, 10 Sep 2021 11:24:53 +0800</pubDate><description><![CDATA[ZooKeeper
ZooKeeper简介
是一个基于观察者模式设计的分布式服务管理框架，它负责管理和存储大家都关心的数据，然后接收观察者的注册，一旦数据发生变化，就会通知在ZooKeeper注册的观察。 作出相应的反应。
ZooKeeper特点


一个Learder，多个follower组成的集群，主写从读。
集群中只要有半数以上的机器存活就可以工作，所以一般适合搭建奇数台服务器。（若此处搭建六台，挂断2或者3台，整个集群都不能工作。所以多搭建一台并没有保证高可用）
每个server的数据都保持一致，C]]></description><category></category></item><item><title><![CDATA[算法练习（二）]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/119829271</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/119829271</guid><author>acdHKF</author><pubDate>Fri, 20 Aug 2021 18:06:55 +0800</pubDate><description><![CDATA[1）两节点的最近公共祖先
/**
     * 两节点的最近公共祖先
     * 递归寻找左右节点，如果头节点等于两节点任意一个值，则说明头节点为最近公共祖先
     * 如果在左右递归中分别两节点找到则头结点，则头节点为最近公共最先
     * 否则说明两个节点存在左子树或者右子树中，然后遇到第一个节点等于p或q的即为最近公共祖先
     *
     * @param root 根节点
     * @param p    节点一
     * @param q    节点二
     * @r]]></description><category></category></item><item><title><![CDATA[Activiti 7流程跳转]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/119538314</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/119538314</guid><author>acdHKF</author><pubDate>Mon, 09 Aug 2021 15:01:39 +0800</pubDate><description><![CDATA[/**
     * 流程跳转
     *
     * @param taskId        taskId
     * @param targetTaskKey 目标节点id
     * @throws DCCException 跳转任务异常
     * @author huikf
     * @since 2021/3/13 12:46
     */
    public void jump(String taskId, String targetTaskKey) {
        .]]></description><category></category></item><item><title><![CDATA[Java反射]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/118408581</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/118408581</guid><author>acdHKF</author><pubDate>Fri, 02 Jul 2021 11:19:11 +0800</pubDate><description><![CDATA[Java 反射机制是在运行状态中，对于任意一个类，都能够知道这个类的所有属性和方法；这种动态获取信息以 及动态调整对象方法的功能称为 java 语言的反射机制。


package top.hkf.hblog;
 
import java.lang.reflect.Field;
import java.lang.reflect.Method;
 
public class ReflectDemo {
    public static void main(String[] args) thro...]]></description><category></category></item><item><title><![CDATA[Validator服务端数据校验]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/118398989</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/118398989</guid><author>acdHKF</author><pubDate>Thu, 01 Jul 2021 21:51:44 +0800</pubDate><description><![CDATA[Hibernat是Hibernate提供的一个开源框架，使用注解方式非常方便的实现服务端的数据校验。

Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint（约束） 的实现，除此之外还有一些附加的 constraint。

在日常开发中，Hibernate Validator经常用来验证bean的字段，基于注解，方便快捷高效。

常用注解如下：

 **Constraint**    ...]]></description><category></category></item><item><title><![CDATA[SSM整合Quartz及简单使用]]></title><link>https://blog.youkuaiyun.com/acdHKF/article/details/118398938</link><guid>https://blog.youkuaiyun.com/acdHKF/article/details/118398938</guid><author>acdHKF</author><pubDate>Thu, 01 Jul 2021 21:43:03 +0800</pubDate><description><![CDATA[1.依赖引入：


       &lt;dependency&gt;
			&lt;groupId&gt;org.quartz-scheduler&lt;/groupId&gt;
			&lt;artifactId&gt;quartz&lt;/artifactId&gt;
			&lt;version&gt;${quartz.version}&lt;/version&gt; //2.2.2
        &lt;/dependency&gt;

2.创建spring-task xml文件


&lt;?]]></description><category></category></item></channel></rss>