<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lazyboy2的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lazyboy2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lazyboy2]]></copyright><item><title><![CDATA[设计模式:原型模式]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/126918819</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/126918819</guid><author>lazyboy2</author><pubDate>Sun, 18 Sep 2022 16:04:01 +0800</pubDate><description><![CDATA[原型模式（Prototype），在制造业中通常是指大批量生产开始之前研发出的概念模型，并基于各种参数指标对其进行检验，如果达到了质量要求，即可参照这个原型进行批量生产。原型模式达到以原型实例创建副本实例的目的即可，并不需要知道其原始类，也就是说，原型模式可以用对象创建对象，而不是用类创建对象，以此达到效率的提升]]></description><category></category></item><item><title><![CDATA[单例模式(Go&Java)]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/126912279</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/126912279</guid><author>lazyboy2</author><pubDate>Sat, 17 Sep 2022 23:13:49 +0800</pubDate><description><![CDATA[而“static”关键字确保太阳的静态性，将太阳放入内存里的静态区，在类加载的时候就初始化了，它与类同在，也就是说它是与类同时期且早于内存堆中的对象实例化的，该实例在内存中永生，内存垃圾收集器（Garbage Collector，GC）也不会对其进行回收；相比“懒汉模式”，其实在大多数情况下我们通常会更多地使用“饿汉模式”，原因在于这个单例迟早是要被实例化占用内存的，延迟懒加载的意义并不大，加锁解锁反而是一种资源浪费，同步更是会降低CPU的利用率，使用不当的话反而会带来不必要的风险。]]></description><category></category></item><item><title><![CDATA[Go学习笔记]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/126910402</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/126910402</guid><author>lazyboy2</author><pubDate>Sat, 17 Sep 2022 20:32:33 +0800</pubDate><description><![CDATA[go学习笔记是本人学习总结的Go学习指南，帮助我个人和大家成为一名优秀的Gopher，本笔记不会局限于Go的基础语法和使用，可能会涉及到计算机的方方面面。]]></description><category></category></item><item><title><![CDATA[消息队列杂谈]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/125123079</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/125123079</guid><author>lazyboy2</author><pubDate>Sat, 04 Jun 2022 16:44:47 +0800</pubDate><description><![CDATA[原文见：https://mikechen.cc/7319.html消息队列（Message Queue），指保存消息的一个容器，本质是一个队列。消息说指在应用之间传送的数据，消息可以非常简单，比如只包含文本字符串，也可以更加复杂，可能包含嵌入对象。
如下图：消息队列的主要特点是异步处理，主要目的是减少请求响应时间，实现非核心流程异步化，提高系统响应性能。举一个用户注册的例子，用户成功注册后，系统需要发送短信注册成功通知，以及赠送注册成功的积分
1）同步
同步耗时：10ms+100ms+100ms=210ms]]></description><category></category></item><item><title><![CDATA[MySQL 索引机制]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/125123064</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/125123064</guid><author>lazyboy2</author><pubDate>Sat, 04 Jun 2022 16:43:05 +0800</pubDate><description><![CDATA[谈到 InnoDB 引擎的时候聊过在 InnoDB 引擎是面向行存储的，数据都是存储在磁盘的数据页中，数据页里面按照固定的行格式存储着每一行数据。InnoDB存储引擎是 B+ 树索引组织的，所以数据即索引，索引即数据。B+ 树的叶子节点存储的都是数据段的数据。InnoDB 引擎对数据的存储必须依赖于主键，主键对应的索引叫做聚集索引。如果不幸的是你建表没有建主键，InnoDB 会从表字段中寻找第一个非空的唯一索引作为聚集索引，如果还是不幸找不到，InnoDB 会生成一个不可见的名为 ROW_ID 的列，该列是]]></description><category></category></item><item><title><![CDATA[Binlog 必知]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/125123048</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/125123048</guid><author>lazyboy2</author><pubDate>Sat, 04 Jun 2022 16:41:45 +0800</pubDate><description><![CDATA[Binlog 的主要作用有两个：Binlog 包括两类文件：Binlog 日志功能默认是开启的，线上情况下 Binlog 日志的增长速度是很快的，在 MySQL 的配置文件  中提供一些参数来对 Binlog 进行设置。
需要注意的是：max_binlog_size ：Binlog 最大和默认值是 1G，该设置并不能严格控制 Binlog 的大小，尤其是 Binlog 比较靠近最大值而又遇到一个比较大事务时，为了保证事务的完整性不可能做切换日志的动作，只能将该事务的所有 SQL 都记录进当前日志直到事务结束]]></description><category></category></item><item><title><![CDATA[MySQL架构浅析]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/125123032</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/125123032</guid><author>lazyboy2</author><pubDate>Sat, 04 Jun 2022 16:40:54 +0800</pubDate><description><![CDATA[我们可以先看看下图MySQL的整体架构图MySQL的逻辑架构大致可以分为三层应用层是MySQL体系架构的最上层，它可其他client-server架构一样，主要包含如下内容:1. 连接处理当一个客户端向服务端发送连接请求后，MySQL server会从线程池中分配一个线程来和客户端进行连接，以后该客户端的请求都会被分配到该线程上。MySQL Server为了提高性能，提供了线程池，减少了创建线程和释放线程所花费的时间。2. 用户鉴权 当客户端向MySQL服务端发起连接请求后，MySQL server会对发起]]></description><category></category></item><item><title><![CDATA[ES 查询用法]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/125122833</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/125122833</guid><author>lazyboy2</author><pubDate>Sat, 04 Jun 2022 16:26:19 +0800</pubDate><description><![CDATA[通过ES查询表达式(Query DSL)，可以实现复杂的查询功能，ES查询表达式主要由JSON格式编写，可以灵活的组合各种查询语句。
还支持一次搜索多个索引
按前缀匹配索引名
查询结果格式
2.query子句
query子句主要用来编写类似SQL的Where语句，支持布尔查询（and/or）、IN、全文搜索、模糊匹配、范围查询（大于小于）。aggs子句，主要用来编写统计分析语句，类似SQL的group by语句sort子句，用来设置排序条件，类似SQL的order by语句ES查询的分页主要通过from和s]]></description><category></category></item><item><title><![CDATA[ES聚合用法]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/125122815</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/125122815</guid><author>lazyboy2</author><pubDate>Sat, 04 Jun 2022 16:24:39 +0800</pubDate><description><![CDATA[ES中的聚合查询，类似SQL的SUM/AVG/COUNT/GROUP BY分组查询，主要用于统计分析场景。下面先介绍ES聚合查询的核心流程和核心概念。ES聚合查询类似SQL的GROUP by，一般统计分析主要分为两个步骤：对查询的数据首先进行一轮分组，可以设置分组条件，例如：新生入学，把所有的学生按专业分班，这个分班的过程就是对学生进行了分组。组内聚合，就是对组内的数据进行统计，例如：计算总数、求平均值等等，接上面的例子，学生都按专业分班了，那么就可以统计每个班的学生总数， 这个统计每个班学生总数的计算，就]]></description><category></category></item><item><title><![CDATA[ES底层读写工作原理]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/125122788</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/125122788</guid><author>lazyboy2</author><pubDate>Sat, 04 Jun 2022 16:22:56 +0800</pubDate><description><![CDATA[面试题es 写入数据的工作原理是什么啊？es 查询数据的工作原理是什么啊？底层的 lucene 介绍一下呗？倒排索引了解吗？问这个，其实面试官就是要看看你了解不了解 es 的一些基本原理，因为用 es 无非就是写入数据，搜索数据。你要是不明白你发起一个写入和搜索请求的时候，es 在干什么，那你真的是…对 es 基本就是个黑盒，你还能干啥？你唯一能干的就是用 es 的 api 读写数据了。要是出点什么问题，你啥都不知道，那还能指望你什么呢？es 最强大的是做全文检索，就是比如你有三条数据：
复制你根据 jav]]></description><category></category></item><item><title><![CDATA[SpringMVC基础2]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121657282</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121657282</guid><author>lazyboy2</author><pubDate>Wed, 01 Dec 2021 15:53:56 +0800</pubDate><description><![CDATA[一，响应数据和结果视图
1.1返回值为String
controller 方法返回字符串可以指定逻辑视图名，通过视图解析器解析为物理视图地址。
//指定逻辑视图名，经过视图解析器解析为 jsp 物理路径：/WEB-INF/pages/success.jsp
@RequestMapping("/testReturnString")
public String testReturnString() {
	System.out.println("AccountController 的 testReturnStri]]></description><category></category></item><item><title><![CDATA[Java线程]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121636944</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121636944</guid><author>lazyboy2</author><pubDate>Tue, 30 Nov 2021 16:55:27 +0800</pubDate><description><![CDATA[一，创建和运行线程
1.1 直接使用Thread创建
//        创建线程对象，构造方法的参数是给线程指定名字
        Thread t = new Thread("t1"){
            @Override
//            run方法内实现了要执行的任务
            public void run() {
                System.out.println("hello");
            }
        };
//   ]]></description><category></category></item><item><title><![CDATA[进程与线程]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121620851</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121620851</guid><author>lazyboy2</author><pubDate>Mon, 29 Nov 2021 22:01:26 +0800</pubDate><description><![CDATA[一，进程与线程
进程
1.程序由指令和数据组成，但这些指令要运行，数据要读写，就必须将指令加载至 CPU，数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的
2.当一个程序被运行，从磁盘加载这个程序的代码至内存，这时就开启了一个进程。
3.进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程（例如记事本、画图、浏览器 等），也有的程序只能启动一个实例进程（例如网易云音乐、360 安全卫士等）
线程
1.一个进程之内可以分为一到多个线程。
]]></description><category></category></item><item><title><![CDATA[SpringMVC基础]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121614730</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121614730</guid><author>lazyboy2</author><pubDate>Mon, 29 Nov 2021 17:14:54 +0800</pubDate><description><![CDATA[1.三层架构与MVC

我们的开发架构一般都是基于两种形式，一种是 C/S 架构，也就是客户端/服务器，另一种是 B/S 架构，也就 是浏览器服务器。在 JavaEE 开发中，几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中，系统标准的三层架构 包括：表现层、业务层、持久层。

1.1  表现层

也就是我们常说的web层。它负责接收客户端请求，向客户端响应结果，通常客户端使用http协议请求 web 层，web 需要接收 http 请求，完成 http 响应。
表现层包括展示层和控制层：控制层负]]></description><category></category></item><item><title><![CDATA[MySQL锁机制和加锁原理]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121600424</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121600424</guid><author>lazyboy2</author><pubDate>Sun, 28 Nov 2021 23:47:25 +0800</pubDate><description><![CDATA[原文章请参考：https://blog.youkuaiyun.com/qq_38238296/article/details/88362999

首先对MySQL锁进行划分：
**1，按照锁的粒度划分：**行锁、表锁、页锁
**2，按照锁的使用方式划分：**共享锁、排它锁（悲观锁的一种实现）
**3，还有两种思想上的锁：**悲观锁、乐观锁
4，InnoDB中有几种行级锁类型：Record Lock、Gap Lock、Next-key Lock
Record Lock:在索引记录上加锁
**Gap Lock：**间隙锁
]]></description><category></category></item><item><title><![CDATA[数据库事务控制]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121567103</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121567103</guid><author>lazyboy2</author><pubDate>Fri, 26 Nov 2021 19:30:58 +0800</pubDate><description><![CDATA[1.事务的基本介绍
	1. 概念：
		*  如果一个包含多个步骤的业务操作，被事务管理，那么这些操作要么同时成功，要么同时失败。
		
	2. 操作：
		1. 开启事务： start transaction;
		2. 回滚：rollback;
		3. 提交：commit;
	

2.事务的四大特征

原子性：
是不可分割的最小操作单位，要么同时成功，要么同时失败。


持久性：
当事务提交或回滚后，数据库会持久化的保存数据。


隔离性:
多个事务之间。相互独立


一致性：
事务操作前后，数据总量]]></description><category></category></item><item><title><![CDATA[数据库设计与范式]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121550391</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121550391</guid><author>lazyboy2</author><pubDate>Thu, 25 Nov 2021 23:43:21 +0800</pubDate><description><![CDATA[1.数据库范式
1.1 知识准备
1.1.1 函数依赖

完全函数依赖


设X,Y是关系R的两个属性集合，X’是X的真子集，存在X→Y，但对每一个X’都有X’!→Y，则称Y完全函数依赖于X。
例子：学生基本信息表R（学号，班级，姓名）假设不同的班级学号有相同的，班级内学号不能相同，在R关系中，（学号，班级）-&gt;（姓名），但是（学号）-&gt;(姓名)不成立，（班级）-&gt;(姓名)不成立，所以姓名完全函数依赖与（学号，班级）；


部分函数依赖


设X,Y是关系R的两个属性集合，存在X→Y，若X]]></description><category></category></item><item><title><![CDATA[Spring框架]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121524406</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121524406</guid><author>lazyboy2</author><pubDate>Wed, 24 Nov 2021 20:38:20 +0800</pubDate><description><![CDATA[1.Spring简介
Spring优点

1.非侵入式
2.容器

在应用加载时，创建一个 Map，用于存放三层对象。 我们把这个 map 称之为容器。

3.Ioc：控制反转

即将对象创建的权利交给了框架，包括依赖注入和依赖查找
原来： 我们在获取对象时，都是采用 new 的方式。是主动的。
现在： 我们获取对象时，同时跟工厂要，有工厂为我们查找或者创建对象。是被动的。

作用：削减计算机程序的耦合(解除我们代码中的依赖关系)


4.依赖注入
5.AOP：面向方面的编程

面向方面编程，将日志、安全、]]></description><category></category></item><item><title><![CDATA[Spring Data JPA框架（更新中）]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121498050</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121498050</guid><author>lazyboy2</author><pubDate>Tue, 23 Nov 2021 17:16:40 +0800</pubDate><description><![CDATA[1.了解ORM（Object-Relational Mapping）

简介
ORM（Object-Relational Mapping） 表示对象关系映射。在面向对象的软件开发中，通过ORM，就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联，操作对象就可以直接操作数据库数据，就可以说这套程序实现了ORM对象关系映射
简单的说：ORM就是建立实体类和数据库表之间的关系，从而达到操作实体类就相当于操作数据库表的目的。


为什么使用ORM
当实现一个应用程序时（不使用O/R Ma]]></description><category></category></item><item><title><![CDATA[MySQL多表查询]]></title><link>https://blog.youkuaiyun.com/lazyboy2/article/details/121493748</link><guid>https://blog.youkuaiyun.com/lazyboy2/article/details/121493748</guid><author>lazyboy2</author><pubDate>Tue, 23 Nov 2021 15:09:28 +0800</pubDate><description><![CDATA[1.准备工作

查询语法

select
		列名列表
	from
		表名列表
	where....


数据准备

# 创建部门表
	CREATE TABLE dept(
		id INT PRIMARY KEY AUTO_INCREMENT,
		NAME VARCHAR(20)
	);
	INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部');
	# 创建员工表
	CREATE TABLE emp (
		id INT PRIMARY KEY A]]></description><category></category></item></channel></rss>