<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hjdudu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/github_36551736</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; github_36551736]]></copyright><item><title><![CDATA[Java设计模式-代理模式]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/113399866</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/113399866</guid><author>github_36551736</author><pubDate>Fri, 29 Jan 2021 17:47:11 +0800</pubDate><description><![CDATA[Java设计模式-代理模式简介目的静态代理缺点动态代理
简介

代理模式给某一个对象提供一个代理对象，并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。

目的

通过引入代理对象的方式来间接访问目标对象，防止直接访问目标对象给系统带来的不必要复杂性
通过代理对象对访问进行控制

代理模式一般会有三个角色

抽象角色：指代理角色和真实角色对外提供的公共方法，一般为一个接口
真实角色：需要实现抽象角色接口，定义了真实角色所要实现的业务逻辑，以便供代理角色调用。也就是真正的业务逻辑在此]]></description><category></category></item><item><title><![CDATA[Java语言高级特性——注解与反射]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/113177077</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/113177077</guid><author>github_36551736</author><pubDate>Tue, 26 Jan 2021 14:43:09 +0800</pubDate><description><![CDATA[Java语言高级特性——注解与反射注解注解声明声明一个注解类型元注解注解类型元素注解应用场景SOURCECLASSRUNTIME反射Class获取Class对象判断是否是某个类的实例创建实例获取构造器信息获取类的成员变量（字段）信息调用方法利用反射创建数组反射获取泛型真实类型TypeVariableParameterizedTypeGenericArrayTypeWildcardTypeGson反序列化
注解

Java 注解（Annotation）又称 Java 标注，是 JDK5.0 引入的一种注释机制]]></description><category></category></item><item><title><![CDATA[Android学习笔记链接]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/113174795</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/113174795</guid><author>github_36551736</author><pubDate>Tue, 26 Jan 2021 10:30:40 +0800</pubDate><description><![CDATA[Android 学习笔记链接汇总
java泛型
Android优化之数据结构优化

]]></description><category></category></item><item><title><![CDATA[Java基础-泛形]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/113148805</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/113148805</guid><author>github_36551736</author><pubDate>Tue, 26 Jan 2021 10:21:48 +0800</pubDate><description><![CDATA[Java基础-泛型Java中的泛型为什么需要泛型```使用泛型的好处```泛型类和泛型接口的定义泛型方法的定义
Java中的泛型
为什么需要泛型

通过以下两段代码就可知我们为什么需要泛型：

public int  add(int a, int b){
	return a+b;
}
public float  add(float a, float b){
	return a+b;
}


实际开发中，经常有数值类型求和的需求，例如实现int类型的加法, 有时候还需要实现long类型的求和, 如果还需要do]]></description><category></category></item><item><title><![CDATA[Android优化之数据结构优化]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/112671597</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/112671597</guid><author>github_36551736</author><pubDate>Mon, 18 Jan 2021 10:03:21 +0800</pubDate><description><![CDATA[数据结构优化HashMap简介源码分析关键元素putgetSparseArray简介源码分析关键元素binarySearchputgetArrayMap简介源码分析关键元素putindexOfget
HashMap
简介

java中的常用集合，底层使用数组+链表的数据格式存储键值对。数组为主干,元素为键值对组成的Entry


源码分析
关键元素

// 默认初始容量-必须为2的幂
static final int DEFAULT_INITIAL_CAPACITY = 1 &lt;&lt; 4; // a]]></description><category></category></item><item><title><![CDATA[常用密码技术-对称加密]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106746610</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106746610</guid><author>github_36551736</author><pubDate>Sun, 14 Jun 2020 17:39:32 +0800</pubDate><description><![CDATA[先上一张图，后续讲解

对称加密

"对称加密: 也称为对称密码, 是指在加密和解码时使用同一秘钥的加密方式


DES

DES是一种将64比特的明文加密成64比特的密文的对称密码算法， 它的密钥长度是56比特 。尽管从规格上来说，DES的密钥长度是64比特，但由于每隔7比特会设置一个用于错误检查的比特，因此实质上其密钥长度是56比特。
DES是以64比特的明文（比特序列）为一个单位来进行加密的，这个64比特的单位称为分组。一般来说，以分组为单位进行处理的密码算法称为分组密码（blockcipher），D]]></description><category></category></item><item><title><![CDATA[常见排序算法之快速排序简谈]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106739417</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106739417</guid><author>github_36551736</author><pubDate>Sat, 13 Jun 2020 22:41:25 +0800</pubDate><description><![CDATA[算法描述

从第一个元素开始，该元素可以认为已经被排序；
取出下一个元素，在已经排序的元素序列中从后向前扫描；
如果该元素（已排序）大于新元素，将该元素移到下一位置；
重复步骤3，直到找到已排序的元素小于或者等于新元素的位置；
将新元素插入到该位置后；
重复步骤2~5。

代码实现
public static int[] insertionSort(int[] array) {
        if (array.length == 0)
            return array;
        ]]></description><category></category></item><item><title><![CDATA[常见排序算法之选择排序简谈]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106739327</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106739327</guid><author>github_36551736</author><pubDate>Sat, 13 Jun 2020 22:34:49 +0800</pubDate><description><![CDATA[选择排序(Selection-sort) 是一种简单直观的排序算法。它的工作原理：首先在未排序序列中找到最小（大）元素，存放到排序序列的起始位置，然后，再从剩余未排序元素中继续寻找最小（大）元素，然后放到已排序序列的末尾。以此类推，直到所有元素均排序完毕。

算法描述

n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下：
1. 初始状态：无序区为R[1…n]，有序区为空；
2. 第i趟排序(i=1,2,3…n-1)开始时，当前有序区和无序区分别为R[1…i-1]和R(i…n）。]]></description><category></category></item><item><title><![CDATA[常见排序算法之冒泡排序简谈]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106718909</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106718909</guid><author>github_36551736</author><pubDate>Fri, 12 Jun 2020 16:59:35 +0800</pubDate><description><![CDATA[冒泡排序 是一种简单的排序算法。它重复地走访过要排序的数列，一次比较两个元素，如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换，也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
代码实现
算法描述

比较相邻的元素，如果第一个比第二个大，就交换他们两个
对每一对相邻的元素作相同的工作，从开始第一对到结尾的最后一堆，这样保证最后的一个元素时最大的数
针对所有元素重复以上的步骤，直至排序完成


java 普通版代码

public]]></description><category></category></item><item><title><![CDATA[Mysql进阶之索引]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106647699</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106647699</guid><author>github_36551736</author><pubDate>Fri, 12 Jun 2020 11:40:40 +0800</pubDate><description><![CDATA[索引概述
MySQL官方对索引的定义为：索引（index）是帮助MySQL高效获取数据的数据结构（有序）。在数据之外，数据库系统还维护者满足特定查找算法的数据结构，这些数据结构以某种方式引用（指向）数据， 这样就可以在这些数据结构上实现高级查找算法，这种数据结构就是索引。如下面的 示意图 所示 :

左边是数据表，一共有两列七条记录，最左边的是数据记录的物理地址（注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的）。为了加快Col2的查找，可以维护一个右边所示的二叉查找树，每个节点分别包含索引键值和一个指向]]></description><category></category></item><item><title><![CDATA[Linux安装gitlab+gitlab-runner+docker 实现自动化打包记录（二）]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106687713</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106687713</guid><author>github_36551736</author><pubDate>Thu, 11 Jun 2020 14:28:46 +0800</pubDate><description><![CDATA[上一章介绍了 如何安装gitlab、gitlab-runner、Docker
Linux安装gitlab+gitlab-runner+docker 实现自动化打包记录（一）
本章以之前完成的golang项目介绍如何实现自动化打包
主要用到两个文件
.gitlab-ci.yml
variables:
  DOCKER_DRIVER: overlay2
  DOCKER_IMAGE_TAG: $DOCKER_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_]]></description><category></category></item><item><title><![CDATA[Linux安装gitlab+gitlab-runner+docker 实现自动化打包记录（一）]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106680638</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106680638</guid><author>github_36551736</author><pubDate>Thu, 11 Jun 2020 09:58:07 +0800</pubDate><description><![CDATA[建议 gitlab 与gitlab-runner、docker安装在不同的机器上
Linux安装gitlib
可以根据自己操作系统类型，根据以下链接进行对应的操作，gitlab不同服务器安装步骤
以Centos为例，安装如下：
在CentOS系统上安装所需的依赖：ssh，防火墙,postfix(用于邮件通知) ，wget，以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问。

安装ssh

$ sudo yum install -y curl policycoreutils-pythonopenss]]></description><category></category></item><item><title><![CDATA[Docker高级实践-Dockerfile]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106645500</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106645500</guid><author>github_36551736</author><pubDate>Tue, 09 Jun 2020 16:48:09 +0800</pubDate><description><![CDATA[Dockerfile
基础指令详解
FROM
FROM
#格式：
FROM &lt;image&gt;
FROM &lt;image&gt;:&lt;tag&gt;
#解释：
#FROM 是 Dockerfile 里的第一条而且只能是除了首行注释之外的第一条指令
#可以有多个FROM语句，来创建多个image
#FROM 后面是有效的镜像名称，如果该镜像没有在你的本地仓库，那么就会从远程仓库Pull取，如果远程也
没有，就报错失败
#下面所有的 系统可执行指令 在 FROM 的镜像中执行。

MAINTAI]]></description><category></category></item><item><title><![CDATA[docker学习笔记——docker核心技术（网络）]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106644737</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106644737</guid><author>github_36551736</author><pubDate>Tue, 09 Jun 2020 16:24:09 +0800</pubDate><description><![CDATA[端口映射详解
默认情况下，容器和宿主机之间网络是隔离的，我们可以通过端口映射的方式，将容器中的端口，映射到宿主机的某个端口上。这样我们就可以通过宿主机的ip+port的方式来访问容器里的内容
Docker的端口映射

随机映射 -P(大写)
指定映射 -p 宿主机ip:宿主机端口:容器端口
注意 生产场景一般不使用随机映射，但是随机映射的好处就是由docker分配，端口不会冲突, 不管哪种映射都会有所消耗，影响性能，因为涉及到映射的操作

随机映射实践
默认随即映射
#命令格式：
docker run -d]]></description><category></category></item><item><title><![CDATA[docker学习笔记——docker核心技术（数据）]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106612674</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106612674</guid><author>github_36551736</author><pubDate>Mon, 08 Jun 2020 10:21:36 +0800</pubDate><description><![CDATA[生产环境使用Docker的过程中，往往需要对数据进行持久化保存，或者需要更多容器之间进行数据共享，那我们需要怎么要的操作呢？
答案就是：数据卷（Data Volumes）和数据卷容器（Data Volume Containers）

数据卷简介


什么是数据卷

就是将宿主机的某个目录，映射到容器中，作为数据存储的目录，我们就可以在宿主机对数据进行存储数据卷（Data Volumes）：容器内数据直接映射到本地主机环境

数据卷特性

数据卷可以在容器之间共享和重用，本地与容器间传递数据更高效；
对数据.]]></description><category></category></item><item><title><![CDATA[docker学习笔记——docker核心技术（容器）]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106566219</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106566219</guid><author>github_36551736</author><pubDate>Fri, 05 Jun 2020 11:40:33 +0800</pubDate><description><![CDATA[容器管理
docker容器技术指Docker是一个由GO语言写的程序运行的“容器”（Linux containers， LXCs）
containers的中文解释是集装箱。
Docker则实现了一种应用程序级别的隔离，它改变我们基本的开发、操作单元，由直接操作虚拟主机（VM）,转换
到操作程序运行的“容器”上来。
容器简介

容器是什么
容器（Container）：容器是一种轻量级、可移植、并将应用程序进行的打包的技术，使应用程序可以在几乎任何
地方以相同的方式运行

Docker将镜像文件运行起来后，产生]]></description><category></category></item><item><title><![CDATA[docker学习笔记——docker核心技术（镜像）]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106550930</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106550930</guid><author>github_36551736</author><pubDate>Thu, 04 Jun 2020 17:23:35 +0800</pubDate><description><![CDATA[Docker的核心技术内容很多，我们学习则从以下四个方面来介绍Docker的核心技术 镜像、容器、数据、网络
镜像
镜像简介
Docker镜像是什么？ 镜像是一个Docker的可执行文件，其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。 通过镜像可以创建一个或多个容器。
搜索、查看、获取

搜索镜像

#作用搜索Docker Hub(镜像仓库)上的镜像 
#命令格式： docker search [镜像名称] 
#命令演示： 
$ docker search ubuntu 
#NAME]]></description><category></category></item><item><title><![CDATA[Decoker学习笔记——docker基本介绍]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106550334</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106550334</guid><author>github_36551736</author><pubDate>Thu, 04 Jun 2020 16:48:52 +0800</pubDate><description><![CDATA[docker简介

官方解释：
Docker是一个开源的容器引擎，它基于LCX容器技术，使用Go语言开发。
源代码托管在Github上，并遵从Apache2.0协议。
Docker采用C/S架构，其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker就是一种快速解决生产问题的一种技术手段,开发，运行和部署应用程序的开放管理平台。
Docker的生活场景对比：

什么是容器
Docker提供了在一个完全隔离的环境中打包和运行应用程序的能力，这个隔离的环境被称为容器。
由于容器的隔离性]]></description><category></category></item><item><title><![CDATA[记录使用Dockerfile构建在 Linux(Centos7)中搭建seetaface2运行环境的镜像]]></title><link>https://blog.youkuaiyun.com/github_36551736/article/details/106520667</link><guid>https://blog.youkuaiyun.com/github_36551736/article/details/106520667</guid><author>github_36551736</author><pubDate>Wed, 03 Jun 2020 11:54:17 +0800</pubDate><description><![CDATA[FROM hjdudu/jdk18:v2.1


ARG PORT=9222
ARG MANAGEMENT_PORT=9333

EXPOSE $PORT
EXPOSE $MANAGEMENT_PORT


WORKDIR /jgoop

ADD gcc-5.5.0.tar.gz /jgoop/
ADD openssl-1.0.0.tar.gz /jgoop/
ADD protobuf-2.6.0.tar.bz2 /jgoop/
ADD v0.2.20.tar.gz /jgoop/

RUN yum -y]]></description><category></category></item></channel></rss>