<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_23323321的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_23323321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_23323321]]></copyright><item><title><![CDATA[Spring Boot 项目的 API 接口防刷]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/102910459</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/102910459</guid><author>qq_23323321</author><pubDate>Tue, 05 Nov 2019 10:02:17 +0800</pubDate><description><![CDATA[首先是写一个注解类
	
	
	拦截器中实现
	
	
	注册到springboot中
	
	
	在Controller中加入注解
	
	
	首先是写一个注解类：
	
	importjava.lang.annotation.Retention;
	importjava.lang.annotation.Target;
	importstaticjava.lang.annotation.Ele...]]></description><category></category></item><item><title><![CDATA[Spring 中策略模式的 2 个经典应用，可以用来怼面试官了]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/100069069</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/100069069</guid><author>qq_23323321</author><pubDate>Sun, 25 Aug 2019 22:45:50 +0800</pubDate><description><![CDATA[一、背景

程序员在项目实战中，策略模式用的非常多。

二、学习目标

会在Spring项目中运用策略模式
三、代码例子

废话不多说，Java的软件开发们注意啦，开车啦！

下面是一个查询业务使用策略模式的案例



查询业务A的具体实现：



查询业务B的具体实现：



查询业务C的具体实现：



四、这是子查询业务的调用类分3部分

1.注入list的子查询业务对象
	2.入参的设置
...]]></description><category></category></item><item><title><![CDATA[设计模式之策略模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/100068744</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/100068744</guid><author>qq_23323321</author><pubDate>Sun, 25 Aug 2019 22:18:32 +0800</pubDate><description><![CDATA[首先我们需要知道策略模式与状态模式是如此的相似，就犹如一对双胞胎一样。只不过状态模式是通过改变对象内部的状态来帮助对象控制自己的行为，而策略模式则是围绕可以互换的算法来创建成功业务的。两者都可用于解决同一个问题：带有大量的if..else…等条件判断语句来进行选择的（小弟初学，不知这样理解是否有误??有误望指出…）。

​ 在我们的生活中我们可以通过很多种不同的方式来完成一件事情，这里的每一种方式...]]></description><category></category></item><item><title><![CDATA[【调侃】IOC前世今生]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/100068634</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/100068634</guid><author>qq_23323321</author><pubDate>Sun, 25 Aug 2019 22:09:24 +0800</pubDate><description><![CDATA[【调侃】IOC前世今生

 前些天，参与了公司内部小组的一次技术交流，主要是针对《IOC与AOP》，本着学而时习之的态度及积极分享的精神，我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”，以方便初学者能更直观的来学习与理解IOC！也作抛砖引玉之用。

（虽说故事中的需求有点小，但看客可在脑海中尽量把他放大，想象成一个很大的应用系统）



一、IOC雏形

1、程序V1.0

...]]></description><category></category></item><item><title><![CDATA[虚拟机运行时区域]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80950289</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80950289</guid><author>qq_23323321</author><pubDate>Sat, 07 Jul 2018 12:43:31 +0800</pubDate><description><![CDATA[栈是线程独有的，不需要gc,方法区和元数据空间堆是线程共享的，需要gc.内存溢出实战1.java堆内存溢出：package com.test1;import java.util.ArrayList;import java.util.List;/** * -Xms5M  -Xmx5M -XX:+PrintGCDetails -verbose:gc * @author Administrator * ...]]></description><category></category></item><item><title><![CDATA[导出一个数据库下所有的表的数据结构，然后生成一个包含多个表sheet的excel文档]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80901527</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80901527</guid><author>qq_23323321</author><pubDate>Tue, 03 Jul 2018 17:23:33 +0800</pubDate><description><![CDATA[查看一个表的数据结构：SELECT    IFNULL(COLUMN_NAME,'') AS columnmName,    IFNULL(COLUMN_TYPE,'') AS columnType,    IFNULL(DATA_TYPE ,'')AS dataType,    IFNULL(CHARACTER_MAXIMUM_LENGTH,'') AS length,    IFNULL(IS...]]></description><category></category></item><item><title><![CDATA[乐观锁版本机制+100个并发读取数据修改数据]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80841608</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80841608</guid><author>qq_23323321</author><pubDate>Thu, 28 Jun 2018 13:05:00 +0800</pubDate><description><![CDATA[package com.lock;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.concurrent.CountDown...]]></description><category></category></item><item><title><![CDATA[mysql 100个线程并发修改数据库某行记录，加锁不加锁结果分析]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80840900</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80840900</guid><author>qq_23323321</author><pubDate>Thu, 28 Jun 2018 11:43:05 +0800</pubDate><description><![CDATA[最近看到了mysql有行锁和表锁两个概念，越想越疑惑。为什么mysql要提供锁机制，而且这种机制不是一个摆设，还有很多人在用。在现代数据库里几乎有事务机制，acid的机制应该能解决并发调度的问题了，为什么还要主动加锁呢后来看到一篇文章，“防止更新丢失，并不能单靠数据库事务控制器来解决，需要应用程序对要更新的数据加必要的锁来解决”。瞬间，世界观都崩塌了。非常不敢相信，于是自己写了代码检验一下。数据库...]]></description><category></category></item><item><title><![CDATA[mysql 锁机制]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80839168</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80839168</guid><author>qq_23323321</author><pubDate>Thu, 28 Jun 2018 10:49:47 +0800</pubDate><description><![CDATA[行锁：只锁定表的一行记录，其他线程不能读这行记录已经被锁住。页锁:锁定表的一行或多行记录，其他线程不能读start TRANSACTION;select * from fangwifi_agent where agentPin in ('fwf085d2b0113','fwf6a1790422f' ) for UPDATE;表锁：锁定表的全部记录，其他线程不能读select * from fang...]]></description><category></category></item><item><title><![CDATA[图解java多线程设计模式学习第九章Future模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80740217</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80740217</guid><author>qq_23323321</author><pubDate>Tue, 19 Jun 2018 23:17:51 +0800</pubDate><description><![CDATA[假设我们去蛋糕店买蛋糕。下单后，店员一边递给我们提货单，一边说“请您傍晚再来取蛋糕”。到了傍晚，我们就拿着提货单取蛋糕。这时，店员会先和我们说“您的蛋糕已经做好了”。然后将蛋糕递给了我们。Future的意思是未来，期货。假设有一个方法需要花费很长时间才能获取运行结果，那么，与其一直等待结果，不如先拿一张“提货单”。获取提货单并不耗费时间。这里的“提货单”我们就称为Future角色。获取Future...]]></description><category></category></item><item><title><![CDATA[图解java多线程设计模式学习第七章Thread-Per-Message模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80722149</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80722149</guid><author>qq_23323321</author><pubDate>Tue, 19 Jun 2018 22:35:52 +0800</pubDate><description><![CDATA[上司把文件递给下属：“能帮我传真一下这个文件吗”？妻子告诉丈夫：“”老公，帮忙倒一下垃圾“”。像这样将工作委托给其他人的情况很常见。这个人把工作拜托给别人之后，就可以返回继续做自己的工作。Thread-Per-Message：每个消息一个线程的意思。所谓Per ,就是“每”的意思，Message在这里可以理解为“命令” 或“请求”。为每个命令或请求新分配一个线程，由这个线程来执行处理。在Threa...]]></description><category></category></item><item><title><![CDATA[图解java多线程设计模式学习第六章Read-Write Lock模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80722049</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80722049</guid><author>qq_23323321</author><pubDate>Mon, 18 Jun 2018 00:53:45 +0800</pubDate><description><![CDATA[学生们正在一起看老师在黑板上写的板书。这时，老师想插掉板书，再写新的内容。而学生们说道：“”老师，我们还没看完了，请先不要摖掉“”。于是，老师会等待大家都看完。当线程“”读取“”实例的状态时，实例的状态不会发生变化。实例的状态仅在线程执行“”写入“”操作时才会发生变化。从实例的状态变化这个观点来看，“”读取“”和“”写入“”有着本质的区别。在...]]></description><category></category></item><item><title><![CDATA[图解java多线程设计模式学习第五章Producer-Consumer模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80721356</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80721356</guid><author>qq_23323321</author><pubDate>Sun, 17 Jun 2018 22:23:25 +0800</pubDate><description><![CDATA[生产者消费者模式，生产者安全地将数据交给消费者。虽然仅是这样看似简单的操作，但当生产者和消费者以不同的线程运行时，两者之间的处理速度差异便会引起问题。例如，消费者想要获取数据，可数据还没有生成，或者生产者想要交付数据，而消费者的状态还无法接收数据等。一般来说，在该模式中，生产者和消费者都有多个，当然生产者和消费者有时也会只有一个。有3位糕点师制作蛋糕并将其放到桌子上，然后有三个人来吃这些蛋糕。糕点...]]></description><category></category></item><item><title><![CDATA[图解java多线程设计模式学习第四章Balking模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80718154</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80718154</guid><author>qq_23323321</author><pubDate>Sun, 17 Jun 2018 13:54:11 +0800</pubDate><description><![CDATA[所谓Balking，不适合执行这个操作，或者没必要执行这个操作，就停止处理，直接返回。示例程序：程序将定期将当前数据内容写入到文件中，当数据内容被写入时，会完全覆盖上次写入的内容，只有最新的内容才会被保存。另外，当写入的内容与上次写入的内容完全相同时，再向文件写入就显得多余了，所以就不再执行写入操作。也就是说，该程序以&quot;数据内容存在不同&quot;作为守护条件，如果数据内容相同，则不执行写入操作，直接返回（...]]></description><category></category></item><item><title><![CDATA[图解java多线程设计模式学习第三章Guarded Suspension]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80718068</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80718068</guid><author>qq_23323321</author><pubDate>Sun, 17 Jun 2018 13:23:25 +0800</pubDate><description><![CDATA[Guarded是被守护的意思，Suspension表示等待。如果执行现在的处理会造成问题，就让执行处理的线程进行等待，这就是Guarded Suspension模式。举一个例子：客户端不断的发送请求，服务端不停地接受请求，并且服务端处理请求的顺序是FIFO,先进来的先处理，没有请求则等待。package GuardeSuspension;public class Request {    priv...]]></description><category></category></item><item><title><![CDATA[mysql 主从同步搭建]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80664097</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80664097</guid><author>qq_23323321</author><pubDate>Tue, 12 Jun 2018 13:44:38 +0800</pubDate><description><![CDATA[配置master节点中的my.cnfvi /etc/my.cnfserver-id=1log-bin=mysqlbinbinlog-do-db=guoxiaopeng #同步的数据库binlog-ignore-db=mysql   #不同步的数据库binlog-ignore-db=information_schema   #不同步的数据库进入mysql命令控制台，    cd /usr/local...]]></description><category></category></item><item><title><![CDATA[大话设计模式之策略模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80649920</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80649920</guid><author>qq_23323321</author><pubDate>Mon, 11 Jun 2018 13:40:00 +0800</pubDate><description><![CDATA[需求：做一个商场收银软件，营业员根据客户所购买商品的单价和数量，向客户收费。public class Program {    /**     *      * @description : 根据运算规则计算出金额     * @author : guoxiaopeng     * @date : 2018年6月11日 上午11:56:52     * @param type 运算类型，包括打几折...]]></description><category></category></item><item><title><![CDATA[大话设计模式第一章     简单工厂模式]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80648153</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80648153</guid><author>qq_23323321</author><pubDate>Mon, 11 Jun 2018 11:21:46 +0800</pubDate><description><![CDATA[请用java面向对象语言实现一个计数器控制台程序，要求输入两个数和运算符号，得到结果。public class Program {程序1实现：    public BigDecimal getResult(String tempar,Double d1,Double d2){        BigDecimal number = null;        BigDecimal bdecmalA =...]]></description><category></category></item><item><title><![CDATA[git初学]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80612316</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80612316</guid><author>qq_23323321</author><pubDate>Fri, 08 Jun 2018 09:22:38 +0800</pubDate><description><![CDATA[git  add [file ]:把一个文件添加到暂存区git commit -m &quot;提交信息描述&quot; [file]   把一个文件提交到本地库git log   提交历史记录git log --onelinegit reflog 带索引的提交日志git reset --hard 索引名称  回复到指定索引的历史版本中git reset --hard^^^    一个^表示  后退一步 git re...]]></description><category></category></item><item><title><![CDATA[vmare workstation 安装centos7]]></title><link>https://blog.youkuaiyun.com/qq_23323321/article/details/80377796</link><guid>https://blog.youkuaiyun.com/qq_23323321/article/details/80377796</guid><author>qq_23323321</author><pubDate>Sat, 19 May 2018 21:32:49 +0800</pubDate><description><![CDATA[1  去网上下载一个vmare workstation，在这懒人就不提供地址了。2. 3.4.5.6.7.8.9.10.一路下一步，11.12.之后会出现这个界面12.13.14.15.16.17.设置root账户密码，为了好记默认123456，会提示密码设置太简单，没关系，再点一次完成就OK了18.到此，已经开始安装了，稍等一会，系统自动会重启，输入密码就可以登录了19.20.接着，我们在win...]]></description><category></category></item></channel></rss>