<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hvkCoder的博客]]></title><description><![CDATA[爱编程，爱生活，技术改变生活，指间改变世界~~]]></description><link>https://blog.youkuaiyun.com/hvkCoder</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hvkCoder]]></copyright><item><title><![CDATA[【JAVA 多线程与高并发（一）】线程]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/103167440</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/103167440</guid><author>hvkCoder</author><pubDate>Wed, 20 Nov 2019 17:29:34 +0800</pubDate><description><![CDATA[在 JVM 中允许一个程序有多个线程并发执行，并且每个线程都有优先级，优先级高的线程要优先于优先级低的线程执行。每个线程可能被标记为守护线程，也可能不被标记。当 JVM 运行时，通常就会有一个非守护线程。

进程与线程
进程：就是受操作系统管理的基本运行单元。进程之间的内存是不共享的，进程之间使用 socket 通信。
线程：可以理解成是在进程中独立运行的子任务；而多线程则可以理解为是多个线程...]]></description><category></category></item><item><title><![CDATA[【设计模式-创建型】简单工厂模式]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/92564562</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/92564562</guid><author>hvkCoder</author><pubDate>Mon, 17 Jun 2019 09:31:08 +0800</pubDate><description><![CDATA[定义: 由一个工厂对象决定创建出哪一种产品类实例。
类型：创建型，不属于 COF 23 种设计模式。
适用场景：

工厂类负责创建的对象比较少；
客户端（应用层）只知道传入工程类的参数，对于如何创建对象（逻辑）不关心；

优点：
只需要创建一个正确的参数，就可以获取所需的对象，而无需知道其创建细节。

缺点：
工厂类的职责相对过重，增加新的产品需要修改工厂类的判断逻辑，违背开闭原则。

UML 图...]]></description><category></category></item><item><title><![CDATA[【设计模式-设计原则】七大软件设计原则]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/92399464</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/92399464</guid><author>hvkCoder</author><pubDate>Sun, 16 Jun 2019 15:16:20 +0800</pubDate><description><![CDATA[单一职责原则（Single Responsibility）
定义: 就一个类而言，应该仅有一个引起它变化的原因。
规定：一个类/接口/方法只负责一项职责。
优点：
降低类的复杂度、提高类的可读性，提高系统的可维护性、降低变更引起的风险。

开闭原则（The Open-Close Principle）
定义: 一个软件实体如类、模块和函数应该对扩展开放，对修改关闭。
规定：用抽象构建框架，用实现扩展...]]></description><category></category></item><item><title><![CDATA[【HTML + CSS】CSS 响应式布局（一）]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/89957658</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/89957658</guid><author>hvkCoder</author><pubDate>Wed, 08 May 2019 15:56:35 +0800</pubDate><description><![CDATA[  响应式开发的本质是针对多种屏幕做适配，首先需要掌握几个基本概念：

物理像素：设备的屏幕实际像素点，如常说的 iPhone 6 Plus的分辨率是 1920 * 1080 像素。
设备独立像素：逻辑像素，用于定义应用的UI。
屏幕像素比（devicePixeRatio）：物理像素与设备独立像素的比值。

使用 rem 实现响应式布局
  rem（font size of the root el...]]></description><category></category></item><item><title><![CDATA[【Docker】容器自启动]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/89176281</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/89176281</guid><author>hvkCoder</author><pubDate>Wed, 10 Apr 2019 10:41:43 +0800</pubDate><description><![CDATA[restart policy （重启策略）
  Docker 提供了 restart policy 机制（重启策略），可以在容器或者 Docker 重启时控制器能够自启动。这种重启策略可以保证相关容器按照正确顺序启动。Docker 建议使用重启策略，并避免使用流程管理器启动容器。
  重启策略跟 dockerd 命令的 --live-restore 标志不同。使用 --live-restore 标...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言 面向对象]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/83536980</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/83536980</guid><author>hvkCoder</author><pubDate>Tue, 30 Oct 2018 09:41:01 +0800</pubDate><description><![CDATA[Go 语言的面向对象
  Go 语言的面向对象非常简单，仅支持封装，不支持继承和多态。继承和多态是在接口中实现的。
  因此 Go 语言中没有 class，而是通过 struct（结构体）对相同类型或不同类型的数据进行封装。

通过 type &amp;lt;structName&amp;gt; struct {}格式定义结构体；

type User struct {
	Name     string
	Age...]]></description><category></category></item><item><title><![CDATA[【开发中遇到的问题】npm 安装 sass-loader 出现 gyp verb which failed Error:not found: python2 错误]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/83422043</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/83422043</guid><author>hvkCoder</author><pubDate>Fri, 26 Oct 2018 23:18:11 +0800</pubDate><description><![CDATA[  在使用 npm 安装 sass-loader 出现 gyp verb which failed Error:not found: python2错误，通过 stackoverflow 解决方法，设置 npm 环境变量
   $ npm set SKIP_SASS_BINARY_DOWNLOAD_FOR_CI = true
   $ npm set SKIP_NODE_SASS_TESTS = ...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】 Go 语言 函数式编程]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/83269355</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/83269355</guid><author>hvkCoder</author><pubDate>Mon, 22 Oct 2018 10:30:48 +0800</pubDate><description><![CDATA[Go 语言函数式编程
  在 Go 语言中函数是一等公民，它作为一个变量、类型、参数、返回值，甚至可以去实现一个接口,但是 Go 语言中函数不支持重载、嵌套和默认参数。

通过使用 func关键字来定义函数

package main

func main(){
	
}

函数支持的特性

作为变量;

func test(){
    // 函数体
}

funcTest := test

fm...]]></description><category></category></item><item><title><![CDATA[【Docker】搭建 Docker 私有仓库 harbor]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/83211918</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/83211918</guid><author>hvkCoder</author><pubDate>Sat, 20 Oct 2018 11:32:37 +0800</pubDate><description><![CDATA[
安装 docker-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` &amp;amp;gt; /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-comp...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言的 Map]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/83007501</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/83007501</guid><author>hvkCoder</author><pubDate>Thu, 11 Oct 2018 09:54:56 +0800</pubDate><description><![CDATA[Go 语言中的Map （示例代码）
  Map是一个无序的键值对数据集合，通过 key快速检索数据。

通过 map[keyType]valueType格式声明 Map；

package basic

import &quot;fmt&quot;

func DeclaratMap(){
    // 声明一个空的 map
    m1 := map[int]string{}
    fmt.Println(m1)...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言的切片（Slice）]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82992452</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82992452</guid><author>hvkCoder</author><pubDate>Wed, 10 Oct 2018 09:58:35 +0800</pubDate><description><![CDATA[Go 语言的切片（示例代码）
Slice是一个通过指向数组底层，来进行变长数组的实现。

定义切片的格式：var &amp;lt;sliceName&amp;gt; []&amp;lt;type&amp;gt;；

package basic

import &quot;fmt&quot;

func DeclaratSlice(){
    
    // 定义一个空 slice
    var slice1 []int
    fmt.Prin...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言的数组]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82966626</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82966626</guid><author>hvkCoder</author><pubDate>Mon, 08 Oct 2018 13:22:46 +0800</pubDate><description><![CDATA[Go 语言中的数组 （示例代码）

定义数组的格式：var &amp;lt;arrayName&amp;gt; [n]&amp;lt;type&amp;gt;, 其中 n &amp;gt;= 0；

package basic

import &quot;fmt&quot;

func DeclaratArray(){
	
	// 定义指定长度的数组
	var arr1 [5]int
	fmt.Println(arr1) // [0 0 0 0 0]
	
...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言的指针]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82950274</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82950274</guid><author>hvkCoder</author><pubDate>Sat, 06 Oct 2018 12:39:03 +0800</pubDate><description><![CDATA[Go 语言的指针
  变量是一种使用方便的占位符，用于引用计算机地址，而在 Go 语言中可以通过 &amp;amp;符号获取一个变量在计算机中对应的内存地址。
package basic

import &quot;fmt&quot;

func main(){
	a := 1
	fmt.Println(&amp;amp;a) // 0xc4200180a0
}

  一个指针变量指向了一个值的内存地址。Go 语言中的指针语法与 C...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言的操作符]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82950270</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82950270</guid><author>hvkCoder</author><pubDate>Sat, 06 Oct 2018 12:38:22 +0800</pubDate><description><![CDATA[Go 语言的运算符 （示例代码）
算术运算符

+：相加；
-：相减；
*：相乘；
/：相除；
%：求余；
++：自增；
--：自减；

其中，++与 --不能用于赋值表达式, 如: count2 := count++；并且在 Go 语言中，不存在如：++count表达式。
关系运算符

==：检查两个值是否相等，如果相等返回 true，否则返回 false；
!=：检查两个值是否不相等，如果不相...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言的变量与常量]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82907695</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82907695</guid><author>hvkCoder</author><pubDate>Sun, 30 Sep 2018 11:50:03 +0800</pubDate><description><![CDATA[Go 语言的变量与常量
变量声明，初始化与赋值 （示例代码）

变量的声明格式：var &amp;lt;变量名称&amp;gt; [变量类型]；
变量的赋值格式：&amp;lt;变量名称&amp;gt; = &amp;lt;值，表达式，函数等&amp;gt;；
声明和赋值同时进行：var &amp;lt;变量名称&amp;gt; [变量类型] = &amp;lt;值，表达式，函数等&amp;gt;；
分组声明的格式

package basic

import &quot;fmt&quot;

...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言中的基本类型]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82907664</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82907664</guid><author>hvkCoder</author><pubDate>Sun, 30 Sep 2018 11:48:02 +0800</pubDate><description><![CDATA[Go 语言中的基础类型
  在 Go 编程语言中，数据类型用于声明函数和属性。数据类型的出现时为了把数据分成所需要用大数据的时候才需要申请大内存，这样可以充分的列用内存。
数值类型


布尔型
bool布尔型的值只可以是常量 true或者 false，默认值为 false。


字符串类型
string编码统一为 UTF-8编码标识 Unicode文本，默认值为空字符串。


整型（默认值为 0）...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言的程序结构]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82907622</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82907622</guid><author>hvkCoder</author><pubDate>Sun, 30 Sep 2018 11:45:00 +0800</pubDate><description><![CDATA[Go 语言的项目结构
   一般,一个 Go 项目在 GOPATH 下，会有如下三个目录
.        
├── bin   // 存放编译后的可执行文件
├── pkg   // 存放编译后的包文件
└── src   // 存放项目源文件

一般情况下，bin 和 pkg 目录可以不创建，go 命令会自动构建（如 go install），只需要创建 src 目录即可。
Go 程序的一般结构...]]></description><category></category></item><item><title><![CDATA[【Golang 基础】Go 语言简介]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/82907592</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/82907592</guid><author>hvkCoder</author><pubDate>Sun, 30 Sep 2018 11:43:08 +0800</pubDate><description><![CDATA[Go 语言简介
  Go 是一门开源、支持并发、垃圾回收的编译型系统编程语言，从 2007 年末由 Robert Griesemer，Rob Pike，Ken Thompson 主持开发，后来还加入了 lan Lance Taylor，Russ Cox 等人，并最终在 2009 年 11 月 开源，在 2012 年早些时候发布了 Go 1 稳定版本。
Go 语言的主要特点

类型安全 和 内存安全...]]></description><category></category></item><item><title><![CDATA[【面试】JavaScript 面试题（未完待续）]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/80654793</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/80654793</guid><author>hvkCoder</author><pubDate>Mon, 11 Jun 2018 17:02:06 +0800</pubDate><description><![CDATA[1. ECMAScrit 中数组的大小

   如题:



    var array = new Array();
    array[0] = 0;
    array[1] = 1;
    array[2] = 2;
    array[5] = 5;
    console.log(array.length); // 6



解析：

    ECMAScript 中数组的大小是可以...]]></description><category></category></item><item><title><![CDATA[【ECMAScript 学习笔记】5.关于 Class]]></title><link>https://blog.youkuaiyun.com/hvkCoder/article/details/80014095</link><guid>https://blog.youkuaiyun.com/hvkCoder/article/details/80014095</guid><author>hvkCoder</author><pubDate>Fri, 20 Apr 2018 09:34:14 +0800</pubDate><description><![CDATA[Class基本语法

  ES6 提供了更接近传统语言的写法，引入了 Class（类）这个概念，作为对象的模板。通过 class 关键字，可以定义类：



    // 定义 Point 类
    class Point {
        // 定义 Ponit 类的构造函数
        constructor(x, y) {
            this.x = x;
      ...]]></description><category></category></item></channel></rss>