<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rg201612的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/rg201612</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; rg201612]]></copyright><item><title><![CDATA[（四）联想词和top热词的设计与开发]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/127638119</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/127638119</guid><author>rg201612</author><pubDate>Tue, 01 Nov 2022 18:17:23 +0800</pubDate><description><![CDATA[搜索联想词和top热词的设计与开发]]></description><category></category></item><item><title><![CDATA[（三）ES聚合、去重查询以及排序]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/126590082</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/126590082</guid><author>rg201612</author><pubDate>Mon, 29 Aug 2022 18:50:39 +0800</pubDate><description><![CDATA[聚合、去重、排序、比较完全的查询]]></description><category></category></item><item><title><![CDATA[（二）ES常用查询]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/125018515</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/125018515</guid><author>rg201612</author><pubDate>Mon, 30 May 2022 10:19:02 +0800</pubDate><description><![CDATA[1、接上一篇介绍索引实体类中相关注解
 正常指定索引类型可根据自己的业务设置  @Field(type=FieldType.Integer)，当前涉及中文分词设置 @Field(type=FieldType.Text,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")
 如果索引字段需要中文分词和拼音分词可以这样设置： @MultiField(mainField = @Field(type=FieldType.Text,analyzer = "i]]></description><category></category></item><item><title><![CDATA[（一）springboot集成ES]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/123839373</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/123839373</guid><author>rg201612</author><pubDate>Wed, 30 Mar 2022 11:26:46 +0800</pubDate><description><![CDATA[ES搜索应用，设计全文检索，分词，聚合，排序，搜索提示词，top热词等功能。]]></description><category></category></item><item><title><![CDATA[java集成easyexcel的使用（二）（导入，包含完整工具类）]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/109991312</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/109991312</guid><author>rg201612</author><pubDate>Mon, 23 Nov 2020 13:56:01 +0800</pubDate><description><![CDATA[1、easyexcel导入，会使用到上一篇的EasyExcelUtil的工具类
 List&lt;StockImeiChangeImport&gt; imeiImportList = EasyExcelUtil.readEasyExcelData(file.getInputStream(), StockImeiChangeImport.class,1000);

2、主要用的EasyExcelUtil中的这个方法：
    /**
     * 读取Excel中文件
     * @param  input]]></description><category></category></item><item><title><![CDATA[java集成easyexcel的使用（一）（导出，包含跨行合并，别名的功能，包含完整工具类）]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/109990015</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/109990015</guid><author>rg201612</author><pubDate>Mon, 23 Nov 2020 11:39:09 +0800</pubDate><description><![CDATA[1、前言
阿里的easyexcel性能比poi是要好很多，不会出现oom的问题。但是官方文档的说明太少，本人工作中遇到类似跨行合并导出的这种业务，花了一点时间研究出来，现整理在博客中。
2、导出
一、maven引用
 &lt;dependency&gt;
            &lt;groupId&gt;com.alibaba&lt;/groupId&gt;
            &lt;artifactId&gt;easyexcel&lt;/artifactId&gt;
            &l]]></description><category></category></item><item><title><![CDATA[循环中的事务处理]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/109909217</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/109909217</guid><author>rg201612</author><pubDate>Sat, 21 Nov 2020 22:10:28 +0800</pubDate><description><![CDATA[1、业务场景
通常业务开发中会遇到循环处理复杂业务数据的场景，此时需要事务支持，一般会遇到两种情况：
（1）整个循环业务功能处理需要同时成功或者同时失败回滚。
（2）循环中的每一次业务处理需要相互独立互斥，处理成功正常插入或修改数据库中的数据，失败的业务处理的数据正常回滚，单次循环处理的事务都是相互独立  互不干扰的。
2、处理方案
1、对于上面的第一种场景事务很好处理，在整个循环处理的业务方法上加上@Transactional(propagation = Propagation.REQUIRED,roll]]></description><category></category></item><item><title><![CDATA[java面试总结（九）分布式事务]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/105310940</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/105310940</guid><author>rg201612</author><pubDate>Wed, 22 Apr 2020 09:36:59 +0800</pubDate><description><![CDATA[一、原理
	 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

二、解决方案
  1、rabbitMq，例如微服务架构中，订单服务、账户服务，库存服务，当用户通过订单服务下单成功去调用账户服务扣减订单金额，当账户余额足够且扣减成功后通知库存服务发货并扣减库存。
     在这个业务流程中，当用户下单完成事务提交后，通过rabbitMq...]]></description><category></category></item><item><title><![CDATA[java面试总结（八）redis]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/105227996</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/105227996</guid><author>rg201612</author><pubDate>Fri, 03 Apr 2020 16:43:47 +0800</pubDate><description><![CDATA[一、Memcache与Redis
1、Memcache
    优点
		Memcache 处理请求时使用多线程异步 IO 的方式，可以合理利用 CPU 多核的优势，性能非常优秀。
		Memcache 功能简单，使用内存存储数据。
		Memcache 对缓存的数据可以设置失效期，过期后的数据会被清除。
		Memcache失效的策略采用延迟失效，就是当再次使用数据时检查是否失效。
		Memc...]]></description><category></category></item><item><title><![CDATA[java面试总结（七）常用设计模式]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/104927559</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/104927559</guid><author>rg201612</author><pubDate>Mon, 23 Mar 2020 17:36:23 +0800</pubDate><description><![CDATA[一、Spring 框架中用到了的设计模式
1、代理模式—在AOP和remoting中被用的比较多。
2、单例模式—在spring配置文件中定义的bean默认为单例模式。
3、模板方法—用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。
4、前端控制器—Spring提供了DispatcherServlet来对请求进行分发。
5、视图帮助(V...]]></description><category></category></item><item><title><![CDATA[java面试总结（六）sql性能优化]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/104795440</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/104795440</guid><author>rg201612</author><pubDate>Fri, 13 Mar 2020 17:02:19 +0800</pubDate><description><![CDATA[一、分类
sql性能优化从思路上讲可以分为三类：
   1、从数据库设计上优化：
      （1）例如，订单信息统计查询这个业务，一般这种统计查询业务会涉及到订单表，流水表，商品表等，如果每张表在数据量达到百万级的时候，在统计查询的时候多张表关联查询会影响性能。 对如这种业务情况，在数据库设计时，可以设计专门用于查询的统计表，将这些订单、流水、商品的信息在创建订单和订单状态变更的时候将对应的信息...]]></description><category></category></item><item><title><![CDATA[java面试总结（五）多线程]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/104769212</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/104769212</guid><author>rg201612</author><pubDate>Tue, 10 Mar 2020 16:08:49 +0800</pubDate><description><![CDATA[1、线程介绍：
   线程是操作系统能够进行运算调度的最小单位，它被包含在进程之中，是进程中的实际运作单位。程序员可以通过它进行多处理器编程，你可以使用多线程对 运算密集型任务提速。

2、线程与进程的区别：
  线程是进程的子集，一个进程可以有很多线程，每条线程并行执行不同的任务。不同的进程使用不同的内存空间，而所有的线程共享一片相同的内存空间，切每个线程都拥有单独的栈内存用来存储本地数据。

...]]></description><category></category></item><item><title><![CDATA[java面试总结（四）jvm内存模型]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/104700842</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/104700842</guid><author>rg201612</author><pubDate>Mon, 09 Mar 2020 17:20:55 +0800</pubDate><description><![CDATA[一、java内存模型

1、程序计数器(线程私有)：
是当前线程锁执行字节码的行号治时期，每条线程都有一个独立的程序计数器，这类内存也称为“线程私有”的内存。正在执行java方法的话，计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。如果是Natice方法，则为空。
2、java 虚拟机栈（线程私有）
每个方法在执行的时候也会创建一个栈帧，存储了局部变量，操作数，动态链接，方法返回地址。
每...]]></description><category></category></item><item><title><![CDATA[java面试总结（三）java锁的分类与基本原理]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/104690038</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/104690038</guid><author>rg201612</author><pubDate>Fri, 06 Mar 2020 11:11:35 +0800</pubDate><description><![CDATA[1、分类
（1）乐观锁/悲观锁
（2）独享锁/共享锁
（3）互斥锁/读写锁
（4）可重入锁
（5）公平锁/非公平锁
（6）分段锁
（7）偏向锁/轻量级锁/重量级锁
（8）自旋锁
总结：以上是一些锁的名词，这些分类并不是全是指锁的状态，有的指锁的特性，有的指锁的设计。
2、基本原理
2.1 ：乐观锁/悲观锁
（1）乐观锁与悲观锁是从设计理念上来分类的。
　　            乐观锁：顾名思义，...]]></description><category></category></item><item><title><![CDATA[java面试总结（二）spring事务的基本原理]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/104678041</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/104678041</guid><author>rg201612</author><pubDate>Thu, 05 Mar 2020 17:27:35 +0800</pubDate><description><![CDATA[一、基本要素
1、 原子性（Atomicity）：指一个事务要么全部执行,要么不执行，例如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成。
2、一致性（Consistency）：在事务执行前数据库的数据处于正常的状态，而事务执行完成后数据库的数据应该还处于正常的状态，即数据完整性约束没有被破坏。
3、隔离性（Isolation...]]></description><category></category></item><item><title><![CDATA[java面试总结（一）HashMap的原理]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/104655804</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/104655804</guid><author>rg201612</author><pubDate>Wed, 04 Mar 2020 16:32:21 +0800</pubDate><description><![CDATA[HashMap的原理
哈希表（又叫散列表），是一种非常重要的数据结构，在面试中会经常被问到其原理。
接下来将jdk1.7的哈希表和jdk1.8的哈希表进行比较。
一、结构
1、1.7中的的HashMap采用的是Entry数组+链表来实现的，HashMap的主干就是Entry数组，Entry是HashMap的基本组成单元，每一个Entry包含一个key-value键值对，而链表是用来解决哈希冲突的（...]]></description><category></category></item><item><title><![CDATA[java集成微信原路退款功能]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/95192833</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/95192833</guid><author>rg201612</author><pubDate>Tue, 09 Jul 2019 14:26:17 +0800</pubDate><description><![CDATA[java集成微信原路退款功能
 * 注意，微信原路退款需要操作证书，操作证书可以放在项目中，也可以放在远程服务器
     /****
	 * @param transactionID  微信订单号，就是微信支付的流水号
	 * @param outTradeNo     退款订单的订单号 ，也就是交易记录的主键
	 * @param totalFee       订单金额
	 * @param ...]]></description><category></category></item><item><title><![CDATA[java集成支付宝原路退款功能]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/95186953</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/95186953</guid><author>rg201612</author><pubDate>Tue, 09 Jul 2019 13:25:12 +0800</pubDate><description><![CDATA[java集成支付宝原路退款功能
      * 支付宝原路退款集成需要商户订单号，支付宝交易流水号，以及退款金额（退款金额不得大于订单金额）



  /****
	 * 支付宝订单原路退款
	 * @param out_trade_no   商户内部订单号
	 * @param trade_no       支付宝内部交易流水号
	 * @param refund_amount  退款金额，金额...]]></description><category></category></item><item><title><![CDATA[java集成支付宝（完整流程）]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/95172063</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/95172063</guid><author>rg201612</author><pubDate>Tue, 09 Jul 2019 10:51:15 +0800</pubDate><description><![CDATA[**
java集成支付宝（完成流程）
**
*申请支付能力
   1、准备好相关资料在支付宝官网申请你所需要的支付方式，例如app支付，或者h5支付。
   2、获取集成支付能力所需的参数：appid、支付宝公钥与私钥、（seller_id）卖家账号。
   
*开始集成（app支付）




    app支付集成
           DecimalFormat df = new Decima...]]></description><category></category></item><item><title><![CDATA[java集成微信支付（完整流程）]]></title><link>https://blog.youkuaiyun.com/rg201612/article/details/95058384</link><guid>https://blog.youkuaiyun.com/rg201612/article/details/95058384</guid><author>rg201612</author><pubDate>Mon, 08 Jul 2019 15:42:50 +0800</pubDate><description><![CDATA[java集成微信支付（完整流程）
1.申请微信支付能力
 * 要想使用微信支付能力，不管是app支付、公众号支付、h5支付等支付方式都需要先在微信商户平台申请开通支付能力。
 * 申请开通支付能力的资料有公司营业执照、负责人身份证正反面等图片，相关所需的所有资料在微信官方商户平台上有说明。
 * 申请完开通支付能力后，我们会得到商户号以及appId，然后设置32位官方密钥。

2.准备工作
  *...]]></description><category></category></item></channel></rss>