<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小z的博客]]></title><description><![CDATA[小z要发光]]></description><link>https://blog.youkuaiyun.com/devilac</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; devilac]]></copyright><item><title><![CDATA[2021-10-25]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/120959194</link><guid>https://blog.youkuaiyun.com/devilac/article/details/120959194</guid><author>devilac</author><pubDate>Mon, 25 Oct 2021 20:31:05 +0800</pubDate><description><![CDATA[根据excel生成sql
=CONCATENATE(“insert into FI.COUNTRY_CURRENCY(COUNTRY_NUMBER, CURRENCY, CURRENCY_NUMBER) VALUES (’”&amp;A2&amp;"’, ‘"&amp;B2&amp;"’, ‘"&amp;C2&amp;"’);")

]]></description><category></category></item><item><title><![CDATA[创建型模式之建造者模式]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110958420</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110958420</guid><author>devilac</author><pubDate>Thu, 10 Dec 2020 18:01:06 +0800</pubDate><description><![CDATA[一、什么是建造者模式
使用多个简单的对象一步一步构建成一个复杂的对象。将一个复杂对象的构建与其表示分离，使得同样的构建过程可以创建不同的表示

建造者（Builder）模式的主要角色如下。

产品角色（Product）：它是包含多个组成部件的复杂对象，由具体建造者来创建其各个零部件。
抽象建造者（Builder）：它是一个包含创建产品各个子部件的抽象方法的接口/抽象类，通常还包含一个返回复杂产品的 getResult() 或 build() 方法。
具体建造者(Concrete Builder）：实现 Bu]]></description><category></category></item><item><title><![CDATA[创建型模式之原型模式]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110954569</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110954569</guid><author>devilac</author><pubDate>Thu, 10 Dec 2020 15:41:47 +0800</pubDate><description><![CDATA[1、什么是原型模式
用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。

实现了在运行期建立和删除原型。

2、原型模式的代码实现
1、构建抽象原型类
​	这一步也可以省略，在具体原型类中直接实现 java 提供的 Conleable 接口，实现 clone 方法
public abstract class Prototype {
    abstract Prototype myClone();
}

2、构建具体原型类
/**
 * 或者直接实现 Conleable 接口，重写 clone]]></description><category></category></item><item><title><![CDATA[创建型模式之单例模式]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110928339</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110928339</guid><author>devilac</author><pubDate>Wed, 09 Dec 2020 16:01:47 +0800</pubDate><description><![CDATA[1、什么是单例模式
确保一个类只有一个实例，并提供该实例的全局访问点。

使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。

私有构造函数保证了不能通过构造函数来创建对象实例，只能通过公有静态函数返回唯一的私有静态变量。

2、单例模式的代码实现
1、饿汉式 - 线程安全（不推荐）
线程不安全问题主要是由于 uniqueInstance 被实例化多次，采取直接实例化 uniqueInstance 的方式就不会产生线程不安全问题。
但是直接实例化的方式也丢失了延迟实例化带来的节约资源的好处。]]></description><category></category></item><item><title><![CDATA[Git 切换关联的远程仓库]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110795981</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110795981</guid><author>devilac</author><pubDate>Mon, 07 Dec 2020 10:45:07 +0800</pubDate><description><![CDATA[1、直接修改关联远程仓库的地址
git remote set-url origin url

2、先删除本地关联的仓库地址，然后关联新的仓库地址
git remote rm origin
git remote add origin url

3、直接修改配置文件
在已经关联远程仓库的项目中的 .git 文件夹下会有一个 config 文件，直接修改 config 文件中的 url 地址即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jqPB665-160730907]]></description><category></category></item><item><title><![CDATA[SpringBoot 整合 Redis]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110480814</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110480814</guid><author>devilac</author><pubDate>Wed, 02 Dec 2020 14:29:24 +0800</pubDate><description><![CDATA[SpringBoot  整合 Redis 的过程，以短信验证码的存储验证为例。
1、下载Redis,下载地址：https://github.com/MicrosoftArchive/redis/releases

下载后解压即可
进入解压后的目录在地址栏输入 cmd 后，执行 redis 的启动命令：redis-server.exe redis.windows.conf

2、在 pom.xml 中新增 Redis 相关依赖
&lt;!--redis依赖配置--&gt;
&lt;dependency&gt;]]></description><category></category></item><item><title><![CDATA[SpringBoot 整合 Swagger2]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110480023</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110480023</guid><author>devilac</author><pubDate>Wed, 02 Dec 2020 14:07:19 +0800</pubDate><description><![CDATA[一、简介：
Swagger 是一个规范和完整的框架，用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法，参数和模型紧密集成到服务器端的代码，允许API来始终保持同步。
二、作用：

接口的文档在线自动生成
功能测试

三、使用：


导入Maven坐标
&lt;!-- swagger2 和 swagger-ui --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;io.springfo]]></description><category></category></item><item><title><![CDATA[SpringBoot 整合 Mybatis generator]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110479587</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110479587</guid><author>devilac</author><pubDate>Wed, 02 Dec 2020 13:55:00 +0800</pubDate><description><![CDATA[一、简介：
​	Mybatis generator 是 MyBatis 官方提供的代码生成器，可以根据数据库生成 model、mapper.xml、mapper 接口和 Example，通常情况下的单表查询不用再手写 mapper。
二、使用步骤：


创建 SpringBoot 项目，导入 Maven 坐标
&lt;dependencies&gt;
    &lt;!--SpringBoot通用依赖模块--&gt;
    &lt;dependency&gt;
        &lt;groupId&gt]]></description><category></category></item><item><title><![CDATA[Elasticsearch 下载 和 安装]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110437528</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110437528</guid><author>devilac</author><pubDate>Tue, 01 Dec 2020 16:02:48 +0800</pubDate><description><![CDATA[一、简介：
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式的全文搜索引擎，基于restful web接口。Elasticsearch是用Java语言开发的，基于Apache协议的开源项目，是目前最受欢迎的企业搜索引擎。Elasticsearch广泛运用于云计算中，能够达到实时搜索，具有稳定，可靠，快速的特点。
二、安装：


在 Windows 下安装：


下载 Elasticsearch 的zip包，并解压到指定目录，下载地址：https://www.elastic.c]]></description><category></category></item><item><title><![CDATA[SpringData Jpa 之 Specification 构建子查询]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110395553</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110395553</guid><author>devilac</author><pubDate>Mon, 30 Nov 2020 19:04:16 +0800</pubDate><description><![CDATA[一些简单的查询条件使用 SpringData Jpa 提供的查询方法和按命名规则匹配的方法就能完成，当面对复杂查询时，需要使用 Specification 来动态构建查询条件。
使用 Specification 构建子查询 ：
private Specification&lt;Post&gt; buildSpec(@NonNull ParentParam parentParam) {
    
    return (parentRoot, criteriaQuery, criteriaBuilder) -]]></description><category></category></item><item><title><![CDATA[SpringData Jpa 之 修改、删除数据]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110389372</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110389372</guid><author>devilac</author><pubDate>Mon, 30 Nov 2020 15:25:57 +0800</pubDate><description><![CDATA[Tips：

如果修改或删除的方法没有被事务管理，需要在方法上加上 @Transactional
修改和删除的方法返回值可以是 void 或者是 int，当是 int 时，返回 1 代表成功，0 代表失败
删除方法可以不使用 @modify 和 @Query 注解，直接通过命名规则的方法删除

1、修改数据，使用 @Modify 和 @Query 注解
@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
]]></description><category></category></item><item><title><![CDATA[HashMap源码 之 put() 相关方法]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110117619</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110117619</guid><author>devilac</author><pubDate>Wed, 25 Nov 2020 10:26:54 +0800</pubDate><description><![CDATA[HashMap 源码 之 put() 相关方法
一、HashMap 的 put() 方法流程：

put(key, value) 中直接调用了内部的 putVal() 方法，并且先对 key 进行了 hash 操作；
putVal() 方法中，先检查 HashMap 数据结构中的索引数组表是否位空，如果是的话则进行一次 resize 操作；
以 HashMap 索引数组表的长度减一与key的hash值进行与运算，得出在数组中的索引，如果索引指定的位置值为空，则新建一个 k-v 的新节点；
如果不满足的3的条]]></description><category></category></item><item><title><![CDATA[HashMap源码 之 get() 相关方法]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110111171</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110111171</guid><author>devilac</author><pubDate>Wed, 25 Nov 2020 09:48:54 +0800</pubDate><description><![CDATA[1、get() 方法
    public V get(Object key) {
            Node&lt;K,V&gt; e;
            return (e = getNode(hash(key), key)) == null ? null : e.value;   //实际调用的是 getNode(int hash, Object key) 方法
        }

2、getNode() 方法
	/**
     * Implements Map.get and rel]]></description><category></category></item><item><title><![CDATA[SpringData Jpa 之 Example 查询]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110078952</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110078952</guid><author>devilac</author><pubDate>Tue, 24 Nov 2020 14:49:55 +0800</pubDate><description><![CDATA[一、简介
​		按例查询（Query By Example）是一种用户界面友好的查询技术。 它允许 动态创建 查询，并且不需要编写包含字段名称的查询。 实际上，按示例查询 不需要 使用特定的数据库的查询语言来编写查询语句。
1、按例查询(QBE)由三部分组成：

Probe：带有填充字段的域对象的实际示例
ExampleMatcher：ExampleMatcher 提供关于如何匹配特定字段的详细信息，它可以跨多个示例重用
Example：示例包括 Probe 和 ExampleMatcher ，它用于创建查]]></description><category></category></item><item><title><![CDATA[Spring Data JPA 中 getOne、findById、findOne 的区别]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/110002118</link><guid>https://blog.youkuaiyun.com/devilac/article/details/110002118</guid><author>devilac</author><pubDate>Mon, 23 Nov 2020 17:28:36 +0800</pubDate><description><![CDATA[1、getOne  方法（为null时会报错慎用）
​	getOne 是一个延迟加载方法，它并不立即访问数据库，而是返回一个代理（proxy）对象，这个代理对象是对实体对象的引用，仅在 使用代理对象访问对象属性时才会去真正访问数据库 ，如果找不到，则抛出 EntityNotFoundException。
源码：
public interface JpaRepository&lt;T, ID&gt; extends PagingAndSortingRepository&lt;T, ID&gt;, QueryB]]></description><category></category></item><item><title><![CDATA[IDEA的常用快捷键]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/109994949</link><guid>https://blog.youkuaiyun.com/devilac/article/details/109994949</guid><author>devilac</author><pubDate>Mon, 23 Nov 2020 14:19:14 +0800</pubDate><description><![CDATA[【1】创建内容：alt+insert
【2】main方法：psvm
【3】输出语句：sout
【4】复制行：ctrl+d
【5】删除行：ctrl+y
【6】代码向上/下移动：Ctrl + Shift + Up / Down
【7】搜索类：  ctrl+n
【8】生成代码  ：alt + Insert（如构造函数等，getter,setter,hashCode,equals,toString）
【9】百能快捷键 : alt + Enter （导包，生成变量等）
【10】单行注释或多行注释 ：  Ctrl + ]]></description><category></category></item><item><title><![CDATA[IDEA的常用设置]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/109994432</link><guid>https://blog.youkuaiyun.com/devilac/article/details/109994432</guid><author>devilac</author><pubDate>Mon, 23 Nov 2020 14:13:35 +0800</pubDate><description><![CDATA[1、工具栏显示设置：

2、设置主题：

3、编辑区的字体变大或变小：

4、鼠标悬浮代码有提示：

5、自动导包和优化多余的导包：

6、同一个包下的类，超过指定个数的时候，导包合并为 * ：

7、显示行号和方法间的分隔符：

8、忽略大小写：

9、多个类不隐藏：

10、设置默认的字体，字体大小，字体行间距：(编辑区和控制台都会变化)：

11、修改类头的文档注释信息：注意：对新建的类才有效
/**

@Auther: zhaoss
@Date: ${DATE} - ${MONTH} - ${DAY]]></description><category></category></item><item><title><![CDATA[SpringJPA使用时 LazyInitializationException: could not initialize proxy - no Session]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/109801942</link><guid>https://blog.youkuaiyun.com/devilac/article/details/109801942</guid><author>devilac</author><pubDate>Thu, 19 Nov 2020 09:53:15 +0800</pubDate><description><![CDATA[解决方法:


在配置文件中添加 enable_lazy_load_no_trans: true
spring
  jpa:
    properties:
      hibernate:
        # 把懒加载变为立即加载，即使没有 Session 也能查询到数据。（查询所有数据都会立即加载数据，会影响性能）
        enable_lazy_load_no_trans: true



在实体上使用注解 @Proxy(lazy = false)
把某个实体的懒加载变为立即加载，即使没有 S]]></description><category></category></item><item><title><![CDATA[PDF格式文件的读取]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/109532353</link><guid>https://blog.youkuaiyun.com/devilac/article/details/109532353</guid><author>devilac</author><pubDate>Fri, 06 Nov 2020 15:16:03 +0800</pubDate><description><![CDATA[1、导入坐标
 &lt;!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.apache.pdfbox&lt;/groupId&gt;
    &lt;artifactId&gt;pdfbox&lt;/artifactId&gt;
    &lt;version&gt;2.0.21&lt;/version&gt;
&lt;/depend]]></description><category></category></item><item><title><![CDATA[DBF格式文件的读取]]></title><link>https://blog.youkuaiyun.com/devilac/article/details/109532297</link><guid>https://blog.youkuaiyun.com/devilac/article/details/109532297</guid><author>devilac</author><pubDate>Fri, 06 Nov 2020 15:14:03 +0800</pubDate><description><![CDATA[1、导入坐标
 &lt;!-- https://mvnrepository.com/artifact/com.linuxense/javadbf --&gt;
 &lt;dependency&gt;
     &lt;groupId&gt;com.linuxense&lt;/groupId&gt;
     &lt;artifactId&gt;javadbf&lt;/artifactId&gt;
     &lt;version&gt;0.4.0&lt;/version&gt;
 &lt;/dependen]]></description><category></category></item></channel></rss>