<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[找不到的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Android_Michael</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Android_Michael]]></copyright><item><title><![CDATA[AOP切面以及@Valid注解执行顺序]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/128833296</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/128833296</guid><author>Android_Michael</author><pubDate>Wed, 01 Feb 2023 14:32:25 +0800</pubDate><description><![CDATA[结论:SpringBoot是先执行@Valid注解再执行切面, 所以无法将AOP的触发位置移动到@Valid之前.自定义注解如果想要在@Valid校验之前触发,要么通过拦截器, 但拦截器对参数的获取较为麻烦, 建议使用ControllerAdvice,Controller增强,然后在SpringBoot的数据绑定后的时候,去进行触发.这样可以从WebDataBinder对象中轻松获取已经被SpringBoot绑定到实体的对象]]></description><category></category></item><item><title><![CDATA[实体类序列化为json时,对属性进行修改]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/123815450</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/123815450</guid><author>Android_Michael</author><pubDate>Tue, 29 Mar 2022 10:45:40 +0800</pubDate><description><![CDATA[自定义注解 , 实体类序列化为json时,对属性进行修改]]></description><category></category></item><item><title><![CDATA[MyBatis返回结果数量 SQL直接查询对不上的一种可能原因]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/115537094</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/115537094</guid><author>Android_Michael</author><pubDate>Fri, 09 Apr 2021 09:32:52 +0800</pubDate><description><![CDATA[使用了嵌套查询,两个resultMap 其中使用&lt;association/&gt;注解关联子resultMap



如果查询的数据的主键在这个子map中, (SQL可能是最左边被left join的一个,所以数据库查询没有问题),

其实Mybatis在执行时,更像是把主Map放在Left join最左边, 而被association关联的子Map放在右边, 所以这里会出现数量不对的情况



解决办法:

       最简单的就是给 子ResultMap的主键 设置...]]></description><category></category></item><item><title><![CDATA[仿朋友圈功能 后台关系型数据库设计构想]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/108622337</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/108622337</guid><author>Android_Michael</author><pubDate>Wed, 16 Sep 2020 15:29:38 +0800</pubDate><description><![CDATA[仿朋友圈功能 后台关系型数据库设计构想

我不知道微信后台咋设计的，纯粹为了解决自己的实际问题想的，做个记录给自己看。

数据存储分为三个部分：

   分享记录存储 Share表
	   分享用户对应权限Share_user_mapping表
	   评论Share_comment表
表1：

  主键：自生成Share_id

  标签 | 分类 | 点赞/点踩数 | 内容一（文字）| 内容二（图片地址数组或者视频连接）| 创建时间。。。。。

表2：

  主键: 自生成...]]></description><category></category></item><item><title><![CDATA[Maven手动创建.m2文件夹 IDEA]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/106746503</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/106746503</guid><author>Android_Michael</author><pubDate>Sun, 14 Jun 2020 15:43:08 +0800</pubDate><description><![CDATA[误删了系统盘用户文件夹下的 .m2文件夹或者想给.m2文件夹搬家的可以参考下。



1. 随便找个目录新建 .m2文件夹，

C盘空间不够可以随便换个盘符，不影响使用

新建文件夹的时候，windows是不支持文件命以小数点开头的，这里需要用命令行创建文件夹

在想要创建.m2文件夹的文件夹下按住shift加鼠标右键打开右键菜单，进入powerShell或者命令行



输入命令 mkdir .m2



这样文件夹就创建好了。



2.在 .m2 文件夹下创建必要的文件结构

找到你的maven程..]]></description><category></category></item><item><title><![CDATA[idea配置老tomcat项目classes文件夹下面循环嵌套输出文件的问题]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/106623294</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/106623294</guid><author>Android_Michael</author><pubDate>Mon, 08 Jun 2020 16:41:07 +0800</pubDate><description><![CDATA[之前配置一个老项目，所有的静态文件都循环在WEB-INF/classes/WEB-INF/classes。。。下面循环生成，

不耽误程序运行，后来发现是在idea的projectStruct菜单中，webRoot文件夹我给标记了个Resource资源文件夹，这里去掉之后就可以正常运行并且不会生成那些多余的文件了。

权当做个记录吧。
...]]></description><category></category></item><item><title><![CDATA[如何在静态方法中使用自动注入的对象(SpringBoot--@PostConstruct)]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/102953846</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/102953846</guid><author>Android_Michael</author><pubDate>Sat, 06 Jun 2020 15:20:15 +0800</pubDate><description><![CDATA[转自:https://www.bbsmax.com/A/l1dyQZD6de/
记录：在实体类中加入@Component注解和@Autowired注解时Service不能注入成功。
    @Component //把普通pojo实例化到spring容器中 0
         public class MyUtil{
            // 这里是需要注入的Service ①
      ...]]></description><category></category></item><item><title><![CDATA[java中的NIO是什么?]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/106587005</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/106587005</guid><author>Android_Michael</author><pubDate>Sat, 06 Jun 2020 15:02:53 +0800</pubDate><description><![CDATA[通常的NIO是指的NON Blocking IO, 非阻塞IO的缩写.

  java中的NIO, 官方释义是 New IO. 也有人说就是NON Blocking IO. 此处感觉无所谓.

  在java中的NIO编程与传统IO相比的区别是:

    传统IO是面向流的,而NIO是面向块的.

  这块我得理解是, 都是渴了去接水, 传统IO是到水龙头那地儿张着嘴喝饱再走. 而NewIO是把水杯(Buffer缓冲区)放在水龙头下面,然后找个人(Selector)帮自己看...]]></description><category></category></item><item><title><![CDATA[关于String对象的值存在哪了]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/106580714</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/106580714</guid><author>Android_Michael</author><pubDate>Sat, 06 Jun 2020 00:37:41 +0800</pubDate><description><![CDATA[String是一个Final类, 一旦赋值之后,就不能再修改了, 但平时编码时经常会遇到对String对象修改的情况, 那就只有一种解释:

         平时对String的值的每次修改都是创建了一个新的String对象 ,并将引用指向了这个新的对象 .

   因为String的值永远不会变,那么多处引用如果存储同一个字符串就没有必要为这一个不会变的字符串分配多份存储空间,可以推测出, 所有同一个值的引用最终指向的都是一块存储空间. 查询JVM规范之后,证实了...]]></description><category></category></item><item><title><![CDATA[idea配置tomcat，Loader delegate、Libraries、以及Dependencies]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/105743340</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/105743340</guid><author>Android_Michael</author><pubDate>Sat, 25 Apr 2020 01:03:37 +0800</pubDate><description><![CDATA[本次遇到的问题是在一个非常古老的项目上，用idea配置一个Eclipse项目时无法正常读取Context .xml中配置的数据源信息。原因其实是jar包的配置问题。

开始一直认为是jar包冲突，没有考虑到配置上的原因所以一直没有找到正确的解决办法。



尝试一、修改jar包版本，更换tomcat小版本、检查重复jar包

   然并卵。

尝试二、修改&lt;Loader delega...]]></description><category></category></item><item><title><![CDATA[SpringBoot 自动注入与多线程]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/105125374</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/105125374</guid><author>Android_Michael</author><pubDate>Thu, 26 Mar 2020 18:47:03 +0800</pubDate><description><![CDATA[一搜类似标题网上都是说多线程下不能自动注入，需要一个实现ApplicationContextAware的工具类来从spring容器中获取bean，然后在线程的构造方法中完成赋值。我就有些纳闷，你不用spring注入的线程对象当然不能自动注入线程内的对象了。

   所以我觉得正确的操作应该是，用


@Component
@Scope(ConfigurableBeanFactor...]]></description><category></category></item><item><title><![CDATA[反射实现自动封装javaBean]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/104836414</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/104836414</guid><author>Android_Michael</author><pubDate>Fri, 13 Mar 2020 11:20:00 +0800</pubDate><description><![CDATA[通常业务中经常会遇到需要将一些键值对封装到javaBean中的情况，就在昨天抽空利用反射实现了map键值对为输入，封装指定bean的方法，因为之前在网上看到过相关的设计代码，所以算是对记忆的实现吧，记录一下以后也许用的到。

  大致设计思路就是说传入bean的class对象以及键值对的map对象，通过反射map中的key去找相应的bean中的set值的方法，最后完成封装。

...]]></description><category></category></item><item><title><![CDATA[java List对象遍历删除的陷阱]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/100535198</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/100535198</guid><author>Android_Michael</author><pubDate>Wed, 04 Sep 2019 14:23:07 +0800</pubDate><description><![CDATA[先上错误代码：
for(int i=0;i&lt;listCTable.size();i++){
   Map mapc=listCTable.get(i);
   if(mapc.get("accountid").equals(pid)){
      listB.add(mapc.get("lookupid").toString());
   }else{
      listCTable....]]></description><category></category></item><item><title><![CDATA[关于堆排序的整理]]></title><link>https://blog.youkuaiyun.com/Android_Michael/article/details/72905594</link><guid>https://blog.youkuaiyun.com/Android_Michael/article/details/72905594</guid><author>Android_Michael</author><pubDate>Wed, 07 Jun 2017 23:48:32 +0800</pubDate><description><![CDATA[每生成一次大（小）顶堆，
将数组首位（顶）与最后一位交换，
使数组减小一位，继续生成大（小）顶堆，
这样就依次将剩余数列中的最大最小元素取出，生成有序列表。


/*
 *代码实现
 *
*/
1.想要实现堆排序，首先要保证是完全二叉树
     只要让任何一个节点 i 的左节点= 2*i+1
                                        ]]></description><category></category></item></channel></rss>