<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[codfishXY的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/codfishXY</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; codfishXY]]></copyright><item><title><![CDATA[Linux-常用命令]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/120986344</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/120986344</guid><author>codfishXY</author><pubDate>Wed, 27 Oct 2021 09:35:42 +0800</pubDate><description><![CDATA[基本命令
查看文件
ls #列出当前目录文件和文件夹名称
	-F #输出可以区分文件和文件夹
	-a #输出包括隐藏文件
	-R #递归输出当前文件夹里所有的文件和文件夹
	-l #输出包括文件详细信息
		*_script #使用*或？进行文件模糊匹配过滤输出
cat test_file #查看文本文件里的内容
	-n #给显示结果加上行号

创建文件
touch test_file #在当前目录创建空文件,如果文件已存在，则仅更新修改时间
mkdir new_dir #创建文件夹
	-p new_dir]]></description><category></category></item><item><title><![CDATA[高并发核心知识——ZooKeeper]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/119322058</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/119322058</guid><author>codfishXY</author><pubDate>Mon, 02 Aug 2021 11:41:51 +0800</pubDate><description><![CDATA[ZooKeeper

简介


ZooKeeper是一个开源的分布式协调服务，重视高性能、高可用、严格有序的访问


Zookeeper中利用被称为znode的节点保存数据，数据将保存在内存(ram)中，最多存储1MB


由于旨在协调数据，因此znode存储的数据很小，通常为状态信息、位置信息、配置信息等


znodes的组织结构类似于标准文件目录系统结构



特点


zk集群中的每个服务都是可复制的，所以每个服务都了解彼此，并维护单一状态
zk服务用数字标记每次数据更新来反映zk事务的顺序
zk集]]></description><category></category></item><item><title><![CDATA[通用组件—SvgIcon引入和使用]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/119170583</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/119170583</guid><author>codfishXY</author><pubDate>Wed, 28 Jul 2021 09:48:41 +0800</pubDate><description><![CDATA[Icon

Svg-Icon


创建一个专门放置图标 icon 的文件夹：
src/icons


添加SvgIcon组件到公共components目录下
src/components/SvgIcon/index.vue


&lt;template&gt;
  &lt;div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" /&gt;
  &lt;svg v]]></description><category></category></item><item><title><![CDATA[Vue源码—Virtual DOM和Diffing算法]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/118940358</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/118940358</guid><author>codfishXY</author><pubDate>Tue, 20 Jul 2021 17:22:29 +0800</pubDate><description><![CDATA[Virtual DOM 是一种编程概念，在更新state或props时，render 返回一颗虚拟dom树，而非直接修改真实dom

Diffing算法 用与对比两棵虚拟dom树，将旧dom更新为新dom，如果用传统的dfs算法转换需要O(n3)，而diff只需要O(n)
目前 Virtual DOM 的主流 diff算法 基本一致，Vue整合了snabbdom库，React使用了reconcilation

snabbdom中是如何实现的？
1.  h函数 =&gt; 创建 VNode
snabbdom中]]></description><category></category></item><item><title><![CDATA[Vue源码—Mustache语法的基本实现]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/118702086</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/118702086</guid><author>codfishXY</author><pubDate>Tue, 13 Jul 2021 15:51:42 +0800</pubDate><description><![CDATA[Mustache模版语法的实现
mustache.js源码解析
&lt;script src="https://cdn.bootcdn.net/ajax/libs/mustache.js/4.2.0/mustache.js"&gt;&lt;/script&gt;


给定模版字符串和要插入的数据
    const templateString = `
      &lt;div&gt;
        &lt;ol&gt;
          {{#students}}
          &lt;li&]]></description><category></category></item><item><title><![CDATA[Redux中间件的使用]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/117224761</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/117224761</guid><author>codfishXY</author><pubDate>Mon, 24 May 2021 15:35:36 +0800</pubDate><description><![CDATA[Redux Middleware
Redux中间件是一种增强 store.dipatch 方法的函数，常见的中间件如：

redux-thunk
redux-promise

什么是thunk？
thunk用来描述一种函数，它被另一个函数return
function wrapper_function() {
  // 下面的函数就是thunk，它会被延迟调用
  return function thunk() {   // thunk函数可以任意命名或直接使用匿名
    console.log('do ]]></description><category></category></item><item><title><![CDATA[关于es6扩展运算符的对象浅拷贝]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/116246049</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/116246049</guid><author>codfishXY</author><pubDate>Wed, 28 Apr 2021 23:55:43 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[关于前端的一些小问题收集]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/115391098</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/115391098</guid><author>codfishXY</author><pubDate>Fri, 02 Apr 2021 09:48:43 +0800</pubDate><description><![CDATA[1.关于 package.json 里区分的开发环境和生成环境
https://segmentfault.com/q/1010000021487381
总结：devDependencies有两个含义，一个含义是放在 package.json 中与模块的依赖 dependencies 做区分，表示是开发环境所需，实际上所有的开发依赖完全可以放在 dependencies 中；另一个含义则可能涉及到加载的优先级问题。webpack打包时会自动忽略掉开发需要的包，package.json 中区分 devDepen]]></description><category></category></item><item><title><![CDATA[npm和yarn的使用]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/115306092</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/115306092</guid><author>codfishXY</author><pubDate>Mon, 29 Mar 2021 17:08:09 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[前端框架-React基础]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/114643014</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/114643014</guid><author>codfishXY</author><pubDate>Wed, 10 Mar 2021 18:47:44 +0800</pubDate><description><![CDATA[1.虚拟DOM
虚拟DOM本质是一个Object类型的对象
//1.创建虚拟DOM，使用JSX语法，babel会翻译为原生js
const VDOM = (
	&lt;h1 id="title"&gt;
    	&lt;span&gt;Hello, React&lt;/span&gt;
    &lt;/h1&gt;
)
//2.渲染虚拟DOM到页面
ReactDOM.render(VDOM, document.getElementById("test"))

jsx语法
1.定义虚拟DOM时，文本字符串]]></description><category></category></item><item><title><![CDATA[VMware改静态IP]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/113740926</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/113740926</guid><author>codfishXY</author><pubDate>Sun, 07 Feb 2021 14:48:34 +0800</pubDate><description><![CDATA[vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #dhcp改static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stabl]]></description><category></category></item><item><title><![CDATA[Javaweb-ES6基础]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/112872420</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/112872420</guid><author>codfishXY</author><pubDate>Wed, 20 Jan 2021 15:01:13 +0800</pubDate><description><![CDATA[1. 声明变量
// var 声明的变量 没有 局部作用域
// let 声明的变量 有 局部作用域
{
var a = 0
let b = 1
}
console.log(a)  // 0
console.log(b)  // ReferenceError: b is not defined

// var 可以声明多次
// let 只能声明一次
var m = 1
var m = 2
let n = 3
let n = 4
console.log(m)  // 2
console.log(n)  //]]></description><category></category></item><item><title><![CDATA[Java-SpringCloud-基础]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/112327535</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/112327535</guid><author>codfishXY</author><pubDate>Fri, 08 Jan 2021 13:53:36 +0800</pubDate><description><![CDATA[一. 服务注册与发现

服务注册：服务提供者将服务的信息（IP、端口、协议等）登记到注册中心
服务发现：服务消费者根据一定策略从注册中心的服务列表选取一个服务


1.eureka
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt;
    &lt;artifactId&gt;spring-cloud-starter-netflix-eureka-server&lt;/artifactId&gt;
.]]></description><category></category></item><item><title><![CDATA[Javaweb-Vue-Springboot-前后端分离交互]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/108813785</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/108813785</guid><author>codfishXY</author><pubDate>Mon, 07 Dec 2020 20:00:38 +0800</pubDate><description><![CDATA[1. JSON（JavaScript Object Notation）
JSON 是一种轻量级的数据交换格式，用来方便的表示对象
//JSON的属性名必须有双引号，如果值是字符串，也必须带双引号
var jsonObj = {
	"key1":10,  				//数字
	"key2":"name",				//字符串
	"key3":true,				//布尔类型
	"key4":[10,"name",true],	//数组
	"key5":{					//另一个json
		"key5_1":20,
	]]></description><category></category></item><item><title><![CDATA[算法基础复习-BFS、DFS]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/110232360</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/110232360</guid><author>codfishXY</author><pubDate>Sun, 29 Nov 2020 15:10:36 +0800</pubDate><description><![CDATA[1. BFS（Breadth First Search）
原理：从一个节点开始向其邻节点扩散，遇到目标节点停止
应用

树的层序遍历（leetcode 102）

	public List&lt;List&lt;Integer&gt;&gt; levelOrder(TreeNode root) {
		List&lt;List&lt;Integer&gt;&gt; ret = new ArrayList&lt;List&lt;Integer&gt;&gt;();
		if (root == null) re]]></description><category></category></item><item><title><![CDATA[计算机网络基础复习-传输层]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/109673736</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/109673736</guid><author>codfishXY</author><pubDate>Sat, 14 Nov 2020 14:33:27 +0800</pubDate><description><![CDATA[1. 端口
运输层使用 UDP 或 TCP 协议，实现源端口到目的端口的数据传输，为应用进程之间提供端到端的逻辑通信
发起通信请求，必须知道对方的服务器 IP 和 端口号
常用服务的默认端口号

2. UDP 和 TCP
用户数据报协议 UDP（User Datagram Protocol）

发送数据不需要建立连接
尽最大努力交付，不保证一定交付
对应用层传下来的报文添加首部后就交付给网络层
没有拥塞控制，允许网络阻塞时丢失一些数据（比如看直播时画面卡一下）
支持一对一、一对多、多对一、多对多
首部占用小]]></description><category></category></item><item><title><![CDATA[数据结构基础复习-数组、链表、二叉树]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/109447203</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/109447203</guid><author>codfishXY</author><pubDate>Wed, 04 Nov 2020 23:20:55 +0800</pubDate><description><![CDATA[1. 数据存储方式


数组（顺序存储）：需要考虑扩容问题
链表（链式存储）：需要分配空间存储节点指针

2. 数据结构的实现

3. 数据结构的操作
基本操作：遍历 -&gt; 访问 -&gt; CRUD
数组遍历访问
void traverse(int[] arr) {
	for (int i = 0; i &lt; arr.length; i++) {
		//迭代访问 arr[i]
	}
}

单链表遍历访问
class ListNode {
	int val;
	ListNode next;
}
]]></description><category></category></item><item><title><![CDATA[算法基础复习-动态规划]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/109244914</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/109244914</guid><author>codfishXY</author><pubDate>Sun, 25 Oct 2020 21:22:57 +0800</pubDate><description><![CDATA[1. 动态规划
动态规划通常用来求解复杂问题的某个最优解，与分治法相似，区别在于

分治法应用于子问题互不相交的情况，即递归的每一步都生成全新的子问题
动态规划应用于重叠子问题的情况，即递归反复求解相同的子问题

使用条件

最优子结构：问题的最优解由子问题的最优解组合而成，子问题可以独立求解
重叠子问题：不同的子问题可能有公共的子子问题，导致反复求解相同的问题

实现方法

带备忘的自顶向下法（top-down with memoization）
用数组或哈希表保存每个子问题的解，求解子问题时先看是否已经]]></description><category></category></item><item><title><![CDATA[算法基础复习-排序]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/109165441</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/109165441</guid><author>codfishXY</author><pubDate>Tue, 20 Oct 2020 17:18:22 +0800</pubDate><description><![CDATA[1. 冒泡排序
2. 快速排序

随机选择一个元素作为基准，建立分离函数使左边元素都小于基准，右边元素都大于基准，在没有优化的情况下，一般直接选第一个元素作为基准即可
分别对基准左边和基准右边两个序列递归调用快速排序
分离函数从最低端开始依次与基准元素对比，遇到大于基准的元素则交换位置；再从最高端开始依次与基准元素对比，小于基准元素则交换位置
经过重复多次3过程，最低端和最高端下标最终相等，此时的下标即基准位置

C（伪代码）
void QuiceSort(int r[])
{
	QSort(L, 1, L]]></description><category></category></item><item><title><![CDATA[Java-JVM复习03-GC]]></title><link>https://blog.youkuaiyun.com/codfishXY/article/details/109095306</link><guid>https://blog.youkuaiyun.com/codfishXY/article/details/109095306</guid><author>codfishXY</author><pubDate>Thu, 15 Oct 2020 16:47:23 +0800</pubDate><description><![CDATA[1. 判断对象是否可回收的算法

引用计数算法（Reference Counting） java不适用


在对象中添加一个引用计数器
对象被引用，计数器 +1
引用失效，计数器 -1
计数器 =0 时，可回收

优点：简单，回收效率高
缺陷：两个对象互相引用或者多个对象循环引用都会导致计数器永 ≠0

可达性分析算法（Reachability Analysis）


GC Roots引用链能达到的对象不可回收
GC Roots不能达到的对象可回收


GC Roots 包括以下

局部变量表里的变量引用
]]></description><category></category></item></channel></rss>