<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zphdgqs的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zphdgqs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zphdgqs]]></copyright><item><title><![CDATA[深入理解redis]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/120263922</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/120263922</guid><author>zphdgqs</author><pubDate>Mon, 13 Sep 2021 16:02:57 +0800</pubDate><description><![CDATA[一、什么是redis:

Redis是现在最受欢迎的NoSQL数据库之一，Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库，其具备如下特性：

基于内存运行，性能高效
	支持分布式，理论上可以无限扩展
	key-value存储系统
	开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库，并提供多种语言的API
相比于其他数据库类型，Redis具备的特点是：

C/S通讯模型
	单进程单线]]></description><category></category></item><item><title><![CDATA[手写orm]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/116758392</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/116758392</guid><author>zphdgqs</author><pubDate>Thu, 13 May 2021 17:32:28 +0800</pubDate><description><![CDATA[这边主要说下ORM框架主要的几个部分：

1、Dialect

这个是每个数据库都需要提供dialect对象，并将其在启动的时候进行注册，这个部分主要是为了数据库和GO语言数据类型等其它差异提供转换函数：


package dialect

import "reflect"

var dialectsMap = map[string]Dialect{}

type Dialect interface {
	DataTypeOf(typ reflect.Value) string
	TableExistSQ]]></description><category></category></item><item><title><![CDATA[图灵完备 状态机]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/115522122</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/115522122</guid><author>zphdgqs</author><pubDate>Thu, 08 Apr 2021 15:40:37 +0800</pubDate><description><![CDATA[状态机是有限状态自动机的简称，是现实事物运行规则抽象而成的一个数学模型。

下面来给出状态机的四大概念。

第一个是 State ，状态。一个状态机至少要包含两个状态。例如上面自动门的例子，有 open 和 closed 两个状态。

第二个是 Event ，事件。事件就是执行某个操作的触发条件或者口令。对于自动门，“按下开门按钮”就是一个事件。

第三个是 Action ，动作。事件发生以后要执行动作。例如事件是“按开门按钮”，动作是“开门”。编程的时候，一个 Action 一般就对应一个函数。

第四个]]></description><category></category></item><item><title><![CDATA[GO new make]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/115492261</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/115492261</guid><author>zphdgqs</author><pubDate>Wed, 07 Apr 2021 18:20:33 +0800</pubDate><description><![CDATA[new(T) 和 make(T,args) 是 Go 语言内建函数，用来分配内存，但适用的类型不同。

new(T) 会为 T 类型的新值分配已置零的内存空间，并返回地址（指针），即类型为*T的值。换句话说就是，返回一个指针，该指针指向新分配的、类型为 T 的零值。适用于值类型，如数组、结构体等。

make(T,args) 返回初始化之后的 T 类型的值，这个值并不是 T 类型的零值，也不是指针*T，是经过初始化之后的 T 的引用。make() 只适用于 slice、map 和 channel.

正..]]></description><category></category></item><item><title><![CDATA[unicode utf-8 str]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/115480614</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/115480614</guid><author>zphdgqs</author><pubDate>Wed, 07 Apr 2021 11:59:38 +0800</pubDate><description><![CDATA[Unicode与UTF-8

Unicode 是「字符集」
	UTF-8 是「编码规则」
字符集：为每一个「字符」分配一个唯一的 ID（学名为码位 / 码点 / Code Point）
	编码规则：将「码位」转换为字节序列的规则（编码/解码 可以理解为 加密/解密 的过程）
decode的作用是将二进制数据解码成unicode编码，如str1.decode('utf-8'),表示将utf-8的编码字符串解码成unicode编码。

encode的作用是将unicode编码的字符串编码成二进制数据，如str2]]></description><category></category></item><item><title><![CDATA[GO 依赖注入]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/115468544</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/115468544</guid><author>zphdgqs</author><pubDate>Tue, 06 Apr 2021 19:55:17 +0800</pubDate><description><![CDATA[依赖注入是软件工程中经常使用到的一种技术，它提供了一种控制反转的机制，把控制权利交给了调用方。调用方来决定使用哪些参数，哪些对象来进行具体的业务逻辑。

依赖注入的本质其实是为了将组件的创建与其依赖的创建分离

实现原理：

通过反射读取对象的依赖(golang是通过tag实现)
	在容器中查找有无该对象实例
	如果有该对象实例或者创建对象的工厂方法，则注入对象或使用工厂创建对象并注入
	如果无该对象实例，则报错
好处：
1 它让调用方更灵活。
2 大量减少定义类型的代码量
3 增加代码的可用性，因为调用方]]></description><category></category></item><item><title><![CDATA[Leetcode算法题总结]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/113418026</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/113418026</guid><author>zphdgqs</author><pubDate>Sat, 30 Jan 2021 11:02:00 +0800</pubDate><description><![CDATA[一、滑动窗口
二、双指针
三、快慢指针/ 链表题目
四、原地链表翻转
五、区间合并
六、无序限定范围的数组元素查找O(N）
七、BFS
八、树的DFS
九、DFS/递归/回溯法
十、双堆模式
十一、2分变种
十二、前K大的数模式HEAP
十三、K路归并
十四、DP 动态规划
十五、排序算法
十六、树和链表结合
十七、树的重新构建
十八、位运算
十九、字符串
二十、stack
二十一、math
二十二、array
二十三、二叉搜索树

...]]></description><category></category></item><item><title><![CDATA[GO语言-内存对齐]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/113351317</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/113351317</guid><author>zphdgqs</author><pubDate>Thu, 28 Jan 2021 17:10:16 +0800</pubDate><description><![CDATA[# 内存对齐

]]></description><category></category></item><item><title><![CDATA[GO语言的堆栈]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/113309612</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/113309612</guid><author>zphdgqs</author><pubDate>Thu, 28 Jan 2021 10:45:36 +0800</pubDate><description><![CDATA[堆栈
1.什么是堆栈：
在计算机中堆栈的概念分为：数据结构的堆栈和内存分配中堆栈。

a.数据结构的堆栈：

堆： 堆在数据结构中一般使用树（比如二叉树）实现，用于排序，称堆排序，最大堆、最小堆，比如最大堆是当插入或是删除一个数据时，永远要保证树的根节点的数据比自己叶节点的数据大，那么根节点的数据永远是最大的，这就保证了每次pop掉一个数据永远是最大的数据
栈：一种先进后出的数据结构。

b.内存分配中堆栈：

栈（操作系统）：由操作系统自动分配释放 ，存放函数的参数值，局部变量的值等。其操作方式类似于数据]]></description><category></category></item><item><title><![CDATA[Zookeeper]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/109405614</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/109405614</guid><author>zphdgqs</author><pubDate>Sun, 01 Nov 2020 11:30:07 +0800</pubDate><description><![CDATA[基本概念：

Zookeeper:它是一个分布式服务框架，是Apache Hadoop 的一个子项目，它主要是用来解决分布式应用中经常遇到的一些数据管理问题，如：统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

本质上就是zookeeper=文件系统+监听通知机制。

集群角色

1、leader：负责进行投票的发起和决议，更新系统状态。

2、follower：用于接收客户端请求并向客户端返回结果以及在选举过程中参与投票

3、observer：也可以接收客户端连接，将写请求转发给lea]]></description><category></category></item><item><title><![CDATA[ElasticSearch]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/108516607</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/108516607</guid><author>zphdgqs</author><pubDate>Thu, 10 Sep 2020 20:55:46 +0800</pubDate><description><![CDATA[首先什么是ES？

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎，基于RESTful web接口。Elasticsearch是用Java语言开发的，并作为Apache许可条款下的开放源码发布，是一种流行的企业级搜索引擎。

为什么使用ES？

elasticsearch不是什么全新的技术，它是将全文检索、数据分析以及分布式技术合并在了一起，其中全文检索指的是Apache lucene，数据分析指的是商用的数据分析软件，分布式技术主要指的就是分布式数]]></description><category></category></item><item><title><![CDATA[PV和PVC]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/108421241</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/108421241</guid><author>zphdgqs</author><pubDate>Wed, 09 Sep 2020 10:27:49 +0800</pubDate><description><![CDATA[PV的全称是: PersistentVolume (持久化卷)，是对底层的共享存储的一种抽象，PV由管理员进行创建和配置，它和具体的底层的共享存储技术的实现方式有关，比如Ceph、GlusterFS、NFS等，都是通过插件机制完成与共享存储的对接

PVC的全称是: PersistenVolumeClaim (持久化卷声明)，PVC是用户存储的一种声明，PVC和Pod比较类型，Pod是消耗节点，PVC消耗的是PV资源，Pod可以请求CPU的内存，而PVC可以请求特定的存储空间和访问模式。对于真正存储的用户不]]></description><category></category></item><item><title><![CDATA[MySql数据库探路]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/106789303</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/106789303</guid><author>zphdgqs</author><pubDate>Tue, 16 Jun 2020 16:03:01 +0800</pubDate><description><![CDATA[数据库

数据库的基本操作：
一）、库操作：

1、显示已有的数据库

句法：SHOW DATABASES [LIKE wild] 

如果使用LIKE wild部分，wild字符串可以是一个使用SQL的“%”和“_”通配符的字符串。 

举例：

显示所有：show databases

显示：show databasesLIKE 'test_db';



创建数据库：
句法：CREATE DATABASE db_name 



删除数据库：
句法：DROP DATABASE [IF EXIST...]]></description><category></category></item><item><title><![CDATA[Python装饰器详解]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/106545109</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/106545109</guid><author>zphdgqs</author><pubDate>Thu, 04 Jun 2020 14:16:59 +0800</pubDate><description><![CDATA[装饰器本质上就是个函数，这个函数接收其它函数作为参数，并将其以一个新的修改后的函数进行替换。

下面一个注册的装饰器作为例子：


_function = {}


def register(func):
    def wrapper(*args, **kwargs):
        print('func_name is %s,args=%s,kwargs=%s' % (func.__name__, args, kwargs))
        return func(*args, **kwargs)]]></description><category></category></item><item><title><![CDATA[Python中的call方法]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/106540301</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/106540301</guid><author>zphdgqs</author><pubDate>Thu, 04 Jun 2020 10:23:52 +0800</pubDate><description><![CDATA[在 Python 中提供了__call__ 方法，允许创建可调用的对象(实例)。如果类中实现了 __call__ 方法，则可以像使用函数一样使用类。




#!/usr/bin/env python
# -*- coding: utf-8 -*-


class Run(object):
    def __init__(self):
        pass

    def __call__(self, data):
        print('data=%s' % data)
        r.]]></description><category></category></item><item><title><![CDATA[Celery异步任务--Djcelery]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/94406552</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/94406552</guid><author>zphdgqs</author><pubDate>Tue, 02 Jul 2019 10:58:02 +0800</pubDate><description><![CDATA[一、首先看下Celery的工作框架：



二、介绍下配置文件：

1、首先安装一些组件库：


pip install celery
 
pip install celery-with-redis
 
pip install django-celery
 
sudo apt install redis-server


2、进行一些配置：

a、配置setting.py中的INSTALLED_A...]]></description><category></category></item><item><title><![CDATA[容器技术-Kubernetes学习总结]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/94399802</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/94399802</guid><author>zphdgqs</author><pubDate>Mon, 01 Jul 2019 19:41:03 +0800</pubDate><description><![CDATA[一、什么是K8S？

Kubernetes是用于自动部署，扩展，管理容器化应用程序的开源系统，他将组成应用程序的容器组合成逻辑单元，便于管理和服务发现



二、为什么要学习K8S？

其实K8S的概念也概括了为什么要学习K8S，在当今互联网流量爆发的时代，继续服务器业务量的扩展，纵向的扩展服务器节点的性能（cpu、mem和存储）显然不太现实，所以横向的通过多节点支持并发协作的方式来实现业务的扩...]]></description><category></category></item><item><title><![CDATA[容器技术-Kubernetes --架构]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/93618025</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/93618025</guid><author>zphdgqs</author><pubDate>Tue, 25 Jun 2019 14:45:19 +0800</pubDate><description><![CDATA[Kubernetes Cluster 由 Master 和 Node 组成，节点上运行着若干 Kubernetes 服务。

一、先来介绍下Master节点上的服务：

Master 是 Kubernetes Cluster 的大脑，运行着如下 Daemon 服务：kube-apiserver、kube-scheduler、kube-controller-manager、etcd 和 Pod 网络...]]></description><category></category></item><item><title><![CDATA[容器技术-Kubernetes]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/93488571</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/93488571</guid><author>zphdgqs</author><pubDate>Mon, 24 Jun 2019 17:14:23 +0800</pubDate><description><![CDATA[之前通过docker swarm的介绍，让大家对容器平台引擎有了一个基本的认识，下面来主要介绍和学习当前比较流行docker平台管理引擎Kubernetes,这也是当前云计算最火的基础技术架构。

一、通过一个实例来认识K8S

在正式的介绍K8S之前，先通过一个例子，让大家对K8S有一个浅显的认识，这里有一个网站，是kubernetes.io 开发的一个交互式教程，通过 Web 浏览器就能使用预...]]></description><category></category></item><item><title><![CDATA[容器技术-Docker swarm]]></title><link>https://blog.youkuaiyun.com/zphdgqs/article/details/93204114</link><guid>https://blog.youkuaiyun.com/zphdgqs/article/details/93204114</guid><author>zphdgqs</author><pubDate>Fri, 21 Jun 2019 18:00:15 +0800</pubDate><description><![CDATA[容器生态系统包含三个部分：


	容器核心知识，包括架构、镜像、容器、网络和存储。
	
	
	容器平台技术，包括容器编排引擎、容器管理平台和基于容器的 PaaS。
	
	
	容器支持技术，包括多主机管理、跨主机网络方案、监控和日志管理。
	
  之前介绍过docker一些相关知识，有关容器核心技术和容器支持技术，下面来介绍下容器平台技术，这也是这几年最火的云计算相关的知识，如果学习了会大...]]></description><category></category></item></channel></rss>