<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shida_hu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/shida_hu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shida_hu]]></copyright><item><title><![CDATA[matlab常见错误和解决办法]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/103312020</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/103312020</guid><author>shida_hu</author><pubDate>Fri, 29 Nov 2019 15:42:16 +0800</pubDate><description><![CDATA[1、matlab报错：总是报cl.exe找不到。
解决方法：安装和matlab版本匹配的。
比如matlab2016b 可以安装VS2013。亲测可以解决问题。
2）matlab报错：索引超出矩阵维度
出错原因：在引用矩阵元素的时候，索引值超出矩阵应有的范围
解决办法：检查所定义数组的维数，和引用的范围。

...]]></description><category></category></item><item><title><![CDATA[RPC框架GPRC入门浅析]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/103254013</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/103254013</guid><author>shida_hu</author><pubDate>Tue, 26 Nov 2019 12:30:13 +0800</pubDate><description><![CDATA[RPC框架中数据的传输通常有两种：二进制传输，和文本类传输  。
二进制传输的优点是：传输性能好，因为要写协议文件，所以更严谨。
缺点是：二进制难以跨语言，
文本类传输的优点是：可以跨语言，而且由于不用写协议文件，使用更灵活   。
缺点是：传输性能稍微要差一些。
GRPC的特点是不仅采用了二进制传输，保证了传输性能，还满足跨语言，保证了灵活性。
序列化
GPRC的二进制序列化协议是Protoco...]]></description><category></category></item><item><title><![CDATA[java中的Docker]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/103061173</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/103061173</guid><author>shida_hu</author><pubDate>Thu, 14 Nov 2019 09:08:59 +0800</pubDate><description><![CDATA[Docker和虚拟机的区别
看起来Docker和虚拟机有很多相似的地方。他有自己的shell，能独立安装软件包，运行起来和其他容器互不干扰。不过Docker并不是完全的虚拟化技术，而是一种轻量级的隔离技术。
Docker仅仅在Linux内核上面，进行了有限的隔离和虚拟化，没有像传统虚拟化软件一样，独立运行一个新的操作系统。
Docker基于namespace，给每个容器提供了单独的命名空间，对网络...]]></description><category></category></item><item><title><![CDATA[Performance Evaluation Methodology for Long-Term Visual Object Tracking阅读笔记]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/103008793</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/103008793</guid><author>shida_hu</author><pubDate>Mon, 11 Nov 2019 13:49:52 +0800</pubDate><description><![CDATA[跟踪架构评估
A整体架构分析
我们通过以下四个方面来分析架构选择对成功的长期跟踪的重要性:
(i)探测器设计，
(ii)短期组件设计，
(iii)使用的特征和
(iv)视觉模型适应策略。
探测器设计:
结果表明，基于cnn的测速仪具有良好的性能。相关滤波器广泛用于短期跟踪器，但通常不用于图像范围内的检测，除了在FCLT中。从图中可以看出，在FCLT中使用的基于dcf的检测器可能是长期跟踪器设计中一...]]></description><category></category></item><item><title><![CDATA[超级搜索术，提升解决问题的能力]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/102790790</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/102790790</guid><author>shida_hu</author><pubDate>Mon, 28 Oct 2019 23:13:02 +0800</pubDate><description><![CDATA[现实世界中遇到的所有问题，几乎都有别人遇到相同或者类似的问题，也有类似的解决办法。
我们要做的就是找到类似的问题，和解决方法。
那么问题来了，怎么找到。这就需要提升搜索能力。
第一步：准确描述问题。
尝试用问题描述问题，初步搜索，找到合适的关键词，能命中跟多相关的内容。
我们想问的问题，也许不是面临的的最核心的问题。如何找到最核心的问题，思考这个问题是不是不解决也没多大影响，
如果不解决问题很大，...]]></description><category></category></item><item><title><![CDATA[策略模式]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/101458624</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/101458624</guid><author>shida_hu</author><pubDate>Thu, 26 Sep 2019 18:53:00 +0800</pubDate><description><![CDATA[解决什么问题
如果有多种策略，可能使用多种策略，为了保证使用多种策略的灵活性，采用策略模式解决这个问题。
主要结构
策略模式主要包括三个角色：
一：Context角色
屏蔽高层模块对策略，模块的直接访问 ，封装可能存在的对象
二：Strategy角色
通常是借口，定义一些策略的方法和属性
三：ConcreteStrategy具体策略角色　
实现具体的策略操作
策略模式实际使用
实际中，单独使用的地...]]></description><category></category></item><item><title><![CDATA[责任链模式解析]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/101381519</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/101381519</guid><author>shida_hu</author><pubDate>Wed, 25 Sep 2019 21:43:51 +0800</pubDate><description><![CDATA[为什么有责任链模式
传统的软件模式，用户发起请求，需要知道这个请求具体是有谁来处理，如果整个请求处理流程实际多个处理者，那么用户发起请求就需要知道所有的请求者。
这样的缺点就是向用户暴露了太多的内部细节，不安全，而且也造成了系统的复杂性。
责任链模式就是解决这个问题。
责任链的核心就是作为请求者不需要知道请求是由谁来处理的，只需要把请求发给第一个处理者，最终会返回一个处理后的结果。
责任链模式屏蔽...]]></description><category></category></item><item><title><![CDATA[技术让零售更方便]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/101196284</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/101196284</guid><author>shida_hu</author><pubDate>Mon, 23 Sep 2019 10:42:13 +0800</pubDate><description><![CDATA[传统的零售，顾客可能需要从家里跑到亲自到店面里，到货架上挨个找商品，这个选择的过程少说也有几个小时，最后可能也没找到想要的商品。
采用互联网技术，把店铺信息，商品信息放到网络上，顾客在家里，只需要在在手机上打开软件，就能看到很多家店铺，每一家店铺里面的各种商品一目了然，在手机上分分钟把超市商品逛一遍，很容易找到想要的商品，然后下单完成购买。
相比于传统的零售模式，用互联网技术和传统零售结合的新模式...]]></description><category></category></item><item><title><![CDATA[SpringBoot原理解析第一篇]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/101128516</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/101128516</guid><author>shida_hu</author><pubDate>Sun, 22 Sep 2019 00:33:19 +0800</pubDate><description><![CDATA[前言
现在公司里做项目基本都是用SpringBoot来做，但是仅仅停留在会使用的阶段是远远不够的。
作为一个有技术好奇心的程序员，肯定不满足于仅仅会用，自然会想要了解这么好用的框架，底层是怎么设计出来的，有哪些好的设计思路。
学习大牛当初设计框架的优秀思想，自己在以后的软件设计当中，也尝试使用这些好的设计思路。
这样坚持几年，自己也就成了别人眼中的大牛了，哈哈。
既然学习原理这件事如此重要，那么怎...]]></description><category></category></item><item><title><![CDATA[翻转单链表java实现]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/96483720</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/96483720</guid><author>shida_hu</author><pubDate>Fri, 19 Jul 2019 16:34:49 +0800</pubDate><description><![CDATA[在网上找了一些代码，很多没有写测试用例跑结果，有的代码本身有错误，博主在本地写了一份有测试用例的代码，实际测试可以正确运行。代码如下
package com.company;

import java.util.LinkedList;
public class ReverseLinkedList {

    //翻转单链表
    static class Node{
        Node ...]]></description><category></category></item><item><title><![CDATA[八大排序总结和java实现]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/96432216</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/96432216</guid><author>shida_hu</author><pubDate>Fri, 19 Jul 2019 10:06:13 +0800</pubDate><description><![CDATA[八大排序分类
按照稳定性分类：
稳定性指的是，在等待排序的一堆数当中，有几个值相同的元素，排序之后，如果相等元素之间的先后顺序不会发生改变，排序就是稳定的。 如果先后顺序发生改变，排序就是不稳定的。
稳定的排序算法有：冒泡排序，插入排序，归并排序，基数排序。
不稳定的排序算法有：希尔排序，选择排序，堆排序和快速排序。
按照时间复杂度分类：
O(n^2)级别：插入排序，选择排序，冒泡排序 ，希尔排序...]]></description><category></category></item><item><title><![CDATA[如何把文章的结构变得清晰]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/96474990</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/96474990</guid><author>shida_hu</author><pubDate>Fri, 19 Jul 2019 10:03:59 +0800</pubDate><description><![CDATA[先看结构不清晰的文章长什么样。
比如写是不是要逃离北上广。第一段写北上广工作胜过压力有多大，然后写想要离开这里，去小城市享受悠闲的生活。接着写自己了解的小城市人际关系复杂，办事需要找各种关系，找熟人，收入低，怀念大城市的好，又说大城市太累，自己的能力优先也难以做出成绩。
看完这样的文章，一脸茫然，完全不知道作者想说啥，逻辑混乱。
写文章，首先要确立主要思想是什么。比如想表达：大城市发展机会多，但是...]]></description><category></category></item><item><title><![CDATA[Redis持久化机制 RDB和AOF]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/96424266</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/96424266</guid><author>shida_hu</author><pubDate>Thu, 18 Jul 2019 14:55:45 +0800</pubDate><description><![CDATA[为什么需要持久化
Redis是基于内存的数据库，它把数据存储在内存当中，如果不想办法把数据存放在磁盘当中，一旦Redis进程退出，内存中的数据也就消失了。
为了解决这个问题，Redis提供了两种持久化方式，分别是RDB（Redis Database）和AOF（Append Only File）。
RDB持久化
RDB持久化是通过保存key-value对来保存Redis数据库状态。
RDB文件的创建...]]></description><category></category></item><item><title><![CDATA[Linux进程调度浅析]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/94963490</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/94963490</guid><author>shida_hu</author><pubDate>Sun, 07 Jul 2019 10:40:48 +0800</pubDate><description><![CDATA[前言
Linux调度器把进程分为两大类：普通进程和实时进程
普通进程可以细分为：

I/O密集型：I/O密集型的进程大部分时间用来提交I/O请求或者等待I/O请求。比如等待鼠标和键盘操作的程序就是IO密集型的。
CPU密集型 ：CPU密集型的进程大部分时间用在执行代码上，比如视频编码和解码的程序是CPU密集型的。

Linux系统的调度程序更倾向于调用I/O密集型的进程，这样可以提供更好的程序响应...]]></description><category></category></item><item><title><![CDATA[Linux进程管理分析]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/94839168</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/94839168</guid><author>shida_hu</author><pubDate>Sat, 06 Jul 2019 23:28:20 +0800</pubDate><description><![CDATA[前言
本文分析的内容包括：
进程的概念和一般特性，为什么重要
进程和线程之间的关系
LInux如何存放和表示进程（用task_struct和thread_info）
如何创建进程（通过fork(),最终是clone()）
怎么把新的执行映像装到地址空间（通过exec（）系统调用）
怎么表示进程的层次关系
父进程怎么收集后代的信息（通过wait（）系统调用）
进程如何消失（强制调用或者主动调用exi...]]></description><category></category></item><item><title><![CDATA[换钱的最小货币数 java]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/90905386</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/90905386</guid><author>shida_hu</author><pubDate>Wed, 05 Jun 2019 17:00:47 +0800</pubDate><description><![CDATA[前言
网上有不少关于这个题目的文章，但是有很多写的稍显学究，有点绕，代码的具体讲解和注释也不够详细，本文中对代码做了详细注释，还有思路解释，更容易理解。
题目
给定数组arr, arr中所有的值都为正数且不重复。每个值代表一中面值的货币，每种面值的货币可以使用任意张，再给定一个整数aim代表要找的钱数，求组成aim的最少货币数。
思路
举例子arr=[5,2,3], aim=20
不使用当前货币a...]]></description><category></category></item><item><title><![CDATA[ajax技术浅析]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/89576604</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/89576604</guid><author>shida_hu</author><pubDate>Fri, 26 Apr 2019 20:56:50 +0800</pubDate><description><![CDATA[普通的表单提交，会发生页面跳转，用户体验不要。使用ajax是异步方式，不需要发生页面跳转。
ajax的全程是Asynchronous JavaScript and XML，也就是异步的JavaScript和xml。
Ajax原理简单来说既是通过XMLHTTPRequest对象来向服务器发起异步请求，从服务器获得数据，然后JavaScript来操作DOM而更新页面。
可以把服务端看成一个数据接口，他...]]></description><category></category></item><item><title><![CDATA[Executor框架]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/89504408</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/89504408</guid><author>shida_hu</author><pubDate>Wed, 24 Apr 2019 22:29:16 +0800</pubDate><description><![CDATA[Executor框架是负责java线程的执行的，是一个执行机制。
在上层，java多线程程序会把应用分解为若干个任务，然后由Executor框架把任务映射到线程池里面的线程。
在底层，操作系统的内核负责把这些线程映射到硬件处理器上。
也就是应用程序通过Executor控制线程的调度，而底层的调度是通过操作系统的内核来完成的。
Executor框架的结构
主要包括三大部分：

任务： 包括执行任务需...]]></description><category></category></item><item><title><![CDATA[jvm内存划分]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/89473641</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/89473641</guid><author>shida_hu</author><pubDate>Tue, 23 Apr 2019 15:27:51 +0800</pubDate><description><![CDATA[为什么要关注jvm内存划分
因为线上系统写好代码，部署之后，工程师就需要开始关注OOM，GC这些jvm的东西了，这就需要对jvm内存有一定了解才能做好这些工作。
区域划分
可以划分成两类：

一类是线程私有的：程序计数器，虚拟机栈，本地方法栈。
另一类是线程共享的：堆，方法

通过代码来理解更直观 ,比如简单的HelloWorld程序
public  class HelloWorld {
    ...]]></description><category></category></item><item><title><![CDATA[直接内存（堆外内存）]]></title><link>https://blog.youkuaiyun.com/shida_hu/article/details/89466160</link><guid>https://blog.youkuaiyun.com/shida_hu/article/details/89466160</guid><author>shida_hu</author><pubDate>Tue, 23 Apr 2019 13:24:56 +0800</pubDate><description><![CDATA[Java中的内存分为两个部分，一部分是不需要jvm管理的直接内存，也被称为堆外内存。堆外内存就是把内存对象分配在JVM堆意外的内存区域，这部分内存不是虚拟机管理，而是由操作系统来管理，这样可以减少垃圾回收对应用程序的影响。
使用
通过NIO中的allocateDirect这样的API可以Java堆外分配内存空间。然后通过Java虚拟机里面的DirectByteBuffer可以引用和操作这些堆外内存...]]></description><category></category></item></channel></rss>