<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[恋曦℡的博客]]></title><description><![CDATA[昨天【今天】明天]]></description><link>https://blog.youkuaiyun.com/fqfa1226</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fqfa1226]]></copyright><item><title><![CDATA[H5聊天对话气泡的一种实现方式及原理]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/123788187</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/123788187</guid><author>fqfa1226</author><pubDate>Mon, 28 Mar 2022 11:08:30 +0800</pubDate><description><![CDATA[H5聊天对话气泡的一种实现方式及原理实现效果实现原理实现代码
聊天对话气泡实现特别需要处理的是气泡的小尖角。
实现效果

实现原理
基于HTML元素边框原理及CSS伪元素实现气泡小尖角。关键点如下：

元素边框实际是由梯形组成。
当元素宽高为0、边框不断加粗时，实际边框是成三角形。
保留元素的其中一个边框，透明化另外3个边框。
通过元素的层级关系用两个三角形遮盖形成带边框的小三角。
这里使用CSS伪元素实现两个小三角。


实现代码
&lt;html&gt;
&lt;head&gt;
&lt;meta ch]]></description><category></category></item><item><title><![CDATA[通用Result＜T＞公共响应结果对象设计]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/122671702</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/122671702</guid><author>fqfa1226</author><pubDate>Mon, 24 Jan 2022 18:23:37 +0800</pubDate><description><![CDATA[通用公共Result<T>响应结果对象设计]]></description><category></category></item><item><title><![CDATA[常用场景SQL合集]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/121523299</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/121523299</guid><author>fqfa1226</author><pubDate>Thu, 13 Jan 2022 10:51:23 +0800</pubDate><description><![CDATA[常用场景SQL合集
DELETE FROM res_supplier WHERE supplier_name IN (SELECT * FROM(SELECT supplier_name FROM res_supplier GROUP BY supplier_name HAVING COUNT(supplier_name) &gt; 1) a)
AND id NOT IN(SELECT * FROM(SELECT MIN(id) FROM res_supplier GROUP BY supplier_nam]]></description><category></category></item><item><title><![CDATA[BigDecimal使用方式实践]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/121592699</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/121592699</guid><author>fqfa1226</author><pubDate>Sun, 28 Nov 2021 17:14:45 +0800</pubDate><description><![CDATA[BigDecimal使用方式特性示例
1. 定义BigDecimal的正确方式
推荐使用BigDecimal的静态工厂方法。 其优先于构造函数方法，因为它允许重用常用的BigDecimal值。对于0,1,10推荐直接使用静态常量。其次使用字符串构造方法，double构造方法结果将不可预测。
BigDecimal zero = BigDecimal.ZERO, one = BigDecimal.ONE, ten = BigDecimal.TEN; // 0,1,10（推荐）
BigDecimal num1 =]]></description><category></category></item><item><title><![CDATA[对Mybatis-Plus的封装（更新中）]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/121321541</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/121321541</guid><author>fqfa1226</author><pubDate>Sun, 14 Nov 2021 19:30:23 +0800</pubDate><description><![CDATA[对Mybatis-Plus的封装（更新中）
在日常实际业务开发中常常对非必传参数组装查询条件，一大堆if判断充斥在我们的代码中，我们可以做一层封装简化业务代码：
protected &lt;C, R&gt; void eqNon(AbstractWrapper&lt;C, R, ?&gt; wrapper, R column, Object value) {
   if (Objects.isNull(value)) {
        return;
    }
    wrapper.eq(column]]></description><category></category></item><item><title><![CDATA[读取项目Resources资源目录下文件的方式]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/120890241</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/120890241</guid><author>fqfa1226</author><pubDate>Thu, 21 Oct 2021 19:55:26 +0800</pubDate><description><![CDATA[Spring下读取项目Resources资源目录下文件的方式
尝试了很多读取resource资源文件的方式，很多读取不到或者是读取配置文件的形式。
以下两种方式，方式一用于通过启动jar方式时读取，方式二是本地IDE启动时读取。
import org.springframework.core.io.ClassPathResource;
import org.springframework.util.ResourceUtils;

/**
 * 读取resources文件
 * @param xmlPath ]]></description><category></category></item><item><title><![CDATA[Git合并多个提交（包括远程仓库的提交）]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/120333442</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/120333442</guid><author>fqfa1226</author><pubDate>Thu, 16 Sep 2021 17:46:40 +0800</pubDate><description><![CDATA[Git合并多个提交（包括远程仓库的提交）1.查看提交历史，—oneline -20最近20次提交，每次提交显示一行摘要2.合并提交历史，可合并最近几个历史，也可指定合并某几个历史3.编辑合并规则，pick4.有冲突解决冲突，没有冲突编辑提交信息，*强制推送*
1.查看提交历史，—oneline -20最近20次提交，每次提交显示一行摘要
git log —oneline -20

2.合并提交历史，可合并最近几个历史，也可指定合并某几个历史
#合并前5个提交
git rebase -i HEAD~5

#或]]></description><category></category></item><item><title><![CDATA[IDEA中搜索项目jar包里的日志、代码等内容]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/117807055</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/117807055</guid><author>fqfa1226</author><pubDate>Fri, 11 Jun 2021 10:46:35 +0800</pubDate><description><![CDATA[IDEA中搜索项目jar包里的日志、代码等内容

启动项目时，有时候我们想通过启动日志来查看源码了解代码执行的流程，或者是项目启动失败了，想通过打印出的日志定位源码位置来了解失败的原因，但是Windows下在IDEA中直接Ctrl+Shift+F或双击Shift直接搜索是搜索不到jar包里面的内容的。

解决方式：通过Ctrl+Shift+F然后切换到Directory选项就能搜索到了。
网上有说通过下载jar包源码去搜索，试了下没有搜到，这种方式应该是可以搜到的，但是下载源码搜索感觉很不爽，那么多类也不知]]></description><category></category></item><item><title><![CDATA[你真的了解Java继承吗？]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/117296627</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/117296627</guid><author>fqfa1226</author><pubDate>Wed, 26 May 2021 17:09:59 +0800</pubDate><description><![CDATA[你真的了解Java继承吗？先给出结论代码说明
先给出结论
能 instance of就能转


子类拥有父类所有属性
父类不能访问子类属性
子类一定能转为父类，父声明类可以强转为子类，父类、父其他声明类、其他子类不能（强）转为子类
子类转父类本质还是子类，属性值不丢失，但是不能修改子类属性值；父声明类本质是子类，但是不能设置子类属性值，强转子类后可设置子类属性值


代码说明
/** 父类 */
@Data
@ToString(includeFieldNames = false)
public class ]]></description><category></category></item><item><title><![CDATA[XStream注解方式对象转xml场景使用]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/115838654</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/115838654</guid><author>fqfa1226</author><pubDate>Sun, 18 Apr 2021 19:58:31 +0800</pubDate><description><![CDATA[XStream注解方式对象转xml场景使用代码结果
代码
@Data
@XStreamAliasType("testXml")
public class XmlVo {

    /** XStreamAlias设置别名为 ID， XStreamAsAttribute设置字段作为xml属性*/
    @XStreamAlias("ID")
    @XStreamAsAttribute
    private String id;
    /** 默认使用属性名称 */
    private Integ]]></description><category></category></item><item><title><![CDATA[SpringBoot启动失败报错，spring.profiles.active:@env@中环境变量@无法识别报错]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/112684278</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/112684278</guid><author>fqfa1226</author><pubDate>Fri, 15 Jan 2021 18:52:59 +0800</pubDate><description><![CDATA[今天开发中碰到的问题，报错内容如下：
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '@' that cannot start any token. (Do not use @ for indentation)
 in 'reader', line 3, column 13:
        active: @env@
            ]]></description><category></category></item><item><title><![CDATA[Maven项目引用本地jar包依赖打包警告should not point at files within the project directory]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/112628884</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/112628884</guid><author>fqfa1226</author><pubDate>Thu, 14 Jan 2021 19:00:24 +0800</pubDate><description><![CDATA[Maven项目引用本地jar包依赖打包警告Some problems were encountered while building the effective model for com.xxx.xxx:xxx-xxx:jar should not point at files within the project directory
Some problems were encountered while building the effective model for com.xxx.xxx:xxx-]]></description><category></category></item><item><title><![CDATA[通俗学习Mockito结合Spring跨多层接口mock测试方法]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/86715417</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/86715417</guid><author>fqfa1226</author><pubDate>Thu, 31 Jan 2019 16:06:50 +0800</pubDate><description><![CDATA[A调B，B调C，测试A，mock掉C
场景： 想要测试ServiceA下的getUserVo()方法，getUserVo()方法调用了ServiceB的服务，ServiceB里又调用了ServiceC的getUser()方法，需要mock掉ServiceC的getUser()方法。
操作方法： 详细如代码，参照代码注释
①把需要mock注入的服务(ServiceA，ServiceB)加上 @Inj...]]></description><category></category></item><item><title><![CDATA[Java慎用toString()方法]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/82911955</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/82911955</guid><author>fqfa1226</author><pubDate>Sun, 30 Sep 2018 17:20:42 +0800</pubDate><description><![CDATA[Java慎用toString()方法
public static void main(String[] args) {
        Integer i = null;
        System.out.println(String.valueOf(i)); //null
        System.out.println(i + &amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;quot;); //null
        // NullPo.]]></description><category></category></item><item><title><![CDATA[Windows中JDK环境变量配置]]></title><link>https://blog.youkuaiyun.com/fqfa1226/article/details/68061264</link><guid>https://blog.youkuaiyun.com/fqfa1226/article/details/68061264</guid><author>fqfa1226</author><pubDate>Wed, 29 Mar 2017 10:48:41 +0800</pubDate><description><![CDATA[JDK环境变量配置]]></description><category></category></item></channel></rss>