<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[homework_tian的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/homework_tian</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; homework_tian]]></copyright><item><title><![CDATA[排序算法-快速排序]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/135598250</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/135598250</guid><author>homework_tian</author><pubDate>Mon, 15 Jan 2024 12:20:04 +0800</pubDate><description><![CDATA[1：查找基准点，假设基准点左侧的元素均小于基准元素，基准右侧的元素均大于基准元素2：使用两个指针一个指针从左向右移动，另外一个指针从右向左侧移动，如果右侧指针元素大于基准元素，则右侧指针左移，如果左侧指针元素小于基准元素，左侧指针右移3：当左侧指针和右侧指针相同的时候说明移动完成，交换基准元素和该位置的值即可，此时完成基准元素左侧的值均小于基准，右侧的值均大于基准。]]></description><category></category></item><item><title><![CDATA[MySQL 事务问题场景记录]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/135389781</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/135389781</guid><author>homework_tian</author><pubDate>Thu, 04 Jan 2024 16:25:30 +0800</pubDate><description><![CDATA[后面表示T 是事务1  , M 为事务2 ，数字标识操作的步骤；例如 T1 -> T2 -> M1 即为开启事务1 ,查询 id =1 的数据， 然后开启事务2.]]></description><category></category></item><item><title><![CDATA[链表内指定区间反转]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/135230380</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/135230380</guid><author>homework_tian</author><pubDate>Tue, 26 Dec 2023 20:13:04 +0800</pubDate><description><![CDATA[将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转;]]></description><category></category></item><item><title><![CDATA[链表反转-Java]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/135223956</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/135223956</guid><author>homework_tian</author><pubDate>Tue, 26 Dec 2023 16:07:18 +0800</pubDate><description><![CDATA[例如上面的链接，如果需要再head插入1，则首先需要获取原先的head.next 缓存temp，然后让head 指向 1 即 head.next = new Node();然后让新增节点的next指向temp 即 new Node().next = temp;所以所谓的头插法反转就是新增了一个新的链表，然后遍历原先的链表，每次使用头插法插入到新的链表即可；第一种方法： 借助栈的先进后入原则。虚拟一个头结点，尾结点；]]></description><category></category></item><item><title><![CDATA[LRU算法]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/135222668</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/135222668</guid><author>homework_tian</author><pubDate>Tue, 26 Dec 2023 15:09:33 +0800</pubDate><description><![CDATA[【代码】LRU算法。]]></description><category></category></item><item><title><![CDATA[12月25日GM金融面试汇总]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/135206469</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/135206469</guid><author>homework_tian</author><pubDate>Mon, 25 Dec 2023 18:39:42 +0800</pubDate><description><![CDATA[分布式架构：

Sentinel
	分布式事务
MySQL:

Mysql的存储引擎，以及区别?
	Mysql的索引分类，索引实现原理？
MQ

MQ的集群架构？
	MQ 的消费端消费消息的过程？
	MQ是如何确定哪个消费者消费哪些queue ？
	消费失败的信息在mq的位置发生变化吗？
	MQ消息消费失败的消息是如何进入私信队列的？
基础

线程池的创建过程和核心参数？
	创建核心线程数是什么时候创建的？是创建线程池的时候就创建的？还是使用的时候才创建？
	线程池中多余的线程如何销毁？（队列满了之后新增到]]></description><category></category></item><item><title><![CDATA[AOP 全局trim关键属性]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/111152446</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/111152446</guid><author>homework_tian</author><pubDate>Mon, 14 Dec 2020 11:13:22 +0800</pubDate><description><![CDATA[再业务开发中经常以为一些关键属性的前后空格问题，导致后端业务逻辑不能正常处理，如果每个接口单独trim，代码繁琐太容易遗漏，因此需求想要全局对关键属性trim， 比如在我们的对外接口中， providerId , 和 parkingId 是对用户身份的关键验证，所以需要对这两个属性做全局trim 。

1：申明切入点。


@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interfa]]></description><category></category></item><item><title><![CDATA[自定义线程池]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/109625308</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/109625308</guid><author>homework_tian</author><pubDate>Wed, 11 Nov 2020 16:12:35 +0800</pubDate><description><![CDATA[自定义线程池创建API

参数详解

自定义线程池创建demo


]]></description><category></category></item><item><title><![CDATA[GIT TAG 批量删除]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/108991558</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/108991558</guid><author>homework_tian</author><pubDate>Sat, 10 Oct 2020 10:06:07 +0800</pubDate><description><![CDATA[前言：

 在开发中我们经常使用tag保留历史版本，以防新开发功能快速回退到上一个版本。每次功能上线前均使用git flow 管理tag , 随着时间的推移，线上的tag数量可能达到七八十个。实际中其实并不会使用太早的tag，就算代码可以回溯，基本该版本的数据库等都需要配套，除非使用flyway等脚本维护，否则遗留并没有意义。删除的过程中，需要删除本地，再删除远程，对于大量的tag删除确实是一个很苦恼的事情。有没有批量删除某些tag呢。
...]]></description><category></category></item><item><title><![CDATA[钉钉群发送消息脚本]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/108626058</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/108626058</guid><author>homework_tian</author><pubDate>Wed, 16 Sep 2020 17:03:41 +0800</pubDate><description><![CDATA[curl -H "Content-Type: application/json" -X POST --data '{"msgtype": "text","at": {"atMobiles": ["13311229533"],"isAtAll": true} ,"text": {"content": "告警小能手 谁有bug@谁"}}' https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx


]]></description><category></category></item><item><title><![CDATA[微信v3图片上传版本2,完整版代码]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/107987184</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/107987184</guid><author>homework_tian</author><pubDate>Thu, 13 Aug 2020 18:32:53 +0800</pubDate><description><![CDATA[package com.dsx.wechat;

import com.alibaba.fastjson.JSONObject;
import com.dsx.HttpClientHelper;
import com.dsx.v3.SignatureUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.client.methods..]]></description><category></category></item><item><title><![CDATA[微信V3 版本图片上传部分代码]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/107986971</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/107986971</guid><author>homework_tian</author><pubDate>Thu, 13 Aug 2020 18:23:38 +0800</pubDate><description><![CDATA[public void updateImage(File file){
        try {
            // 换行符
            String LINE_END ="\r\n";
            String PREFIX ="--";
            // 定义数据分隔线
            String BOUNDARY ="boundary";
            String filename = file.getName();//文...]]></description><category></category></item><item><title><![CDATA[单机版RocketMQ搭建并测试]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/106506658</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/106506658</guid><author>homework_tian</author><pubDate>Tue, 02 Jun 2020 22:27:10 +0800</pubDate><description><![CDATA[单机安装启动步骤如下：

1：下载，并解压安装包，window截图如下：



2：配置JAVA ，ROCKETMQ 环境变量，因为很简单，我直接贴进来两个链接，按照步骤操作即可

JAVA环境变量配置（1.8）
	ROCKETMQ环境变量配置
3：启动NameServer

window : 切换到ROCKETMQ 的bin目录下执行命令： start start mqnamesrv.cmd

弹出如下图所示证明nameServer启动成功



也可以打开日志查看nameServer的启动日志，日志路径]]></description><category></category></item><item><title><![CDATA[正则校验]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/105583694</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/105583694</guid><author>homework_tian</author><pubDate>Fri, 17 Apr 2020 16:42:29 +0800</pubDate><description><![CDATA["^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"
]]></description><category></category></item><item><title><![CDATA[微信支付支付窗口回退页问题解决方案]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/103178115</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/103178115</guid><author>homework_tian</author><pubDate>Thu, 21 Nov 2019 10:47:45 +0800</pubDate><description><![CDATA[问题描述：我们的使用场景是微信的当面付，当用户扫码支付的流程概括如下：

用户扫码（前端地址)--&gt;前端请求后端获取跳转微信授权url--&gt;前端发起重定向跳转微信--&gt;微信授权下发auth_code--&gt; 重定向到后端接口--&gt;请求后端携带auth_code请求微信获取openId--&gt;微信返回openid给后端，后端携带openid重定向给前端(h5)--&...]]></description><category></category></item><item><title><![CDATA[@EnableAsync ，@Async 源码分析]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/101709441</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/101709441</guid><author>homework_tian</author><pubDate>Sun, 29 Sep 2019 20:06:43 +0800</pubDate><description><![CDATA[在Springboot 项目中，使用 @EnableAsync可以开启异步请求 ，使用@Async 可以标注需要异步执行的方法，那到底是如何实现的的呢？

首先：从入口@EnableAsync 源码查看


@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(AsyncCon...]]></description><category></category></item><item><title><![CDATA[在springboot中正确使用@Async完成异步执行]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/101468939</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/101468939</guid><author>homework_tian</author><pubDate>Thu, 26 Sep 2019 20:09:10 +0800</pubDate><description><![CDATA[在很多业务开发中，经常为了保证性能，保证主业务流程正常， 副流程需要异步。例如目前我负责的支付主流程中，只要支付主业务正常，这笔交易就算是正常，例如：日志记录，邮件发送等不关键业务异步处理，只要保证最终处理成功就可。



代码部分：

首先看下面一段代码


@RestController
@RequestMapping("/async")
@Slf4j
public class AsyncT...]]></description><category></category></item><item><title><![CDATA[记一次使用dubbo过程中版本冲突导致的坑]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/101382358</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/101382358</guid><author>homework_tian</author><pubDate>Wed, 25 Sep 2019 20:06:06 +0800</pubDate><description><![CDATA[前言：2019年09月23日临下班，产品的一个变更需求临近尾声阶段。本地测试OK，兴致冲冲的想着发布到测试环境，验证一下没有问题，五分钟结束战斗，明天就开始下个需求了。随在CE（公司的devOps系统）上切换到hotfix/xxx分支，部署上线。部署没有问题，跑了一通单测，呃呃呃呃呃。莫名的一堆错误。怎么可能，再deploy ,再重启，还是这个错误，难道是公司的CE有问题（以前会莫名其妙的出问题）...]]></description><category></category></item><item><title><![CDATA[Git 常用命令]]></title><link>https://blog.youkuaiyun.com/homework_tian/article/details/101382200</link><guid>https://blog.youkuaiyun.com/homework_tian/article/details/101382200</guid><author>homework_tian</author><pubDate>Wed, 25 Sep 2019 20:02:17 +0800</pubDate><description><![CDATA[git 常用命令


	查看分支

	git branch -a 查看所有本地和远程分支

	git branch 查看本地分支

	git branch -r 查看远程分支
	
	
	切换分支

	git checkout &lt;BranchName&gt; 切换本地分支
	
	
	删除分支

	git branch -d &lt;BranchName&gt; 删除本地分支

	git pus...]]></description><category></category></item></channel></rss>