<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Promise_J_Z]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Promise_J_Z</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Promise_J_Z]]></copyright><item><title><![CDATA[引用本地仓库私有jar包爆红问题]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/141531514</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/141531514</guid><author>Promise_J_Z</author><pubDate>Sun, 25 Aug 2024 17:09:34 +0800</pubDate><description><![CDATA[repositores里包含仓库地址，每次更新的适合都想要取拉去最新的代码，但是又因为网络不通，所以一直拉取不到，所以把这个文件删除之后，他就不会去拉去最新的，直接去本地仓库的。前言：各个公司都有自己的私有核心jar包，只能在公司maven仓库中拉取，如果当前环境无法链接到公司maven仓库，可以将jar包放到本地仓库，但是idea会出现无法识别的情况。本地仓库jar包目录下的 .lastUpdated 和 .repositories 文件，即可解决。]]></description><category></category></item><item><title><![CDATA[docker部署容器，当修改错配置文件导致容器无法启动，无法进入容器后的处理方案]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/141396352</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/141396352</guid><author>Promise_J_Z</author><pubDate>Wed, 21 Aug 2024 16:13:54 +0800</pubDate><description><![CDATA[首要目的就是将修改错误的配置文件进行还原。现在假设我们要修改的。]]></description><category></category></item><item><title><![CDATA[两个相同的对象，当对象A的属性为空，从对象B从拿到不为空的属性并赋值]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/141168629</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/141168629</guid><author>Promise_J_Z</author><pubDate>Tue, 13 Aug 2024 17:06:56 +0800</pubDate><description><![CDATA[【代码】两个相同的对象，当对象A的属性为空，从对象B从拿到不为空的属性并赋值。]]></description><category></category></item><item><title><![CDATA[spring源码阅读-推断构造方法]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/139842505</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/139842505</guid><author>Promise_J_Z</author><pubDate>Tue, 06 Aug 2024 00:00:03 +0800</pubDate><description><![CDATA[1、默认情况下，或者只有一个构造方法的情况下，就会使用默认构造方法或者唯一的一个构造方法2、由程序员指定构造方法入参值，通过getBean()的方式获取，可以指定参数类型以及个数，但是该bean需要为LazyBean或者原型bean，否则在spring启动的时候就已经创建好存入单例池中，getBean()也只会取到单例池种的bean。3、由程序员自己注册Bean然后指定参数个数以及类型4、由程序员自己指定第N+1个参数的类型或bean名字类型名字5、通过指定spring自己选择构造方法。]]></description><category></category></item><item><title><![CDATA[Spring-bean销毁]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140886028</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140886028</guid><author>Promise_J_Z</author><pubDate>Sat, 03 Aug 2024 09:55:06 +0800</pubDate><description><![CDATA[在bean的声明周期中，存在一个记录bean销毁方法的阶段，以备于spring关闭的时候可以执行bean的销毁方法（单例bean）]]></description><category></category></item><item><title><![CDATA[Spring-依赖注入]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140885992</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140885992</guid><author>Promise_J_Z</author><pubDate>Sat, 03 Aug 2024 09:52:49 +0800</pubDate><description><![CDATA[inject方法中if (this.cached) 调用缓存的地方，针对于方法注入点和对象注入点使用的是不同的类，所以在方法注入点中即便cached变为true，但是在字段注入点中还是false，还是要重新找对应的bean，cached主要用于原型bean创建的时候第一次走流程查找bean，后面则可以从缓存中获取。]]></description><category></category></item><item><title><![CDATA[Spring-创建bean]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140885939</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140885939</guid><author>Promise_J_Z</author><pubDate>Sat, 03 Aug 2024 09:50:21 +0800</pubDate><description><![CDATA[根据传入的名字获取bean真正的名字（有可能传入的是别名或者工厂类别名，以&开头的），特别需要说明的是，spring针对于别名专门使用一个map（aliasMap）进行存储，key为别名，而value则是bean真正的名字。所以在创建bena第一步就需要先根据名字获取到bean真正的名字。tips：最终调用getBean使用的是RootBeanDefinition进行构建的。什么是抽象BeanDefinition？合并BeanDefinition。]]></description><category></category></item><item><title><![CDATA[Spring-包扫描]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140885659</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/140885659</guid><author>Promise_J_Z</author><pubDate>Sat, 03 Aug 2024 09:34:55 +0800</pubDate><description><![CDATA[二次判断类是否可独立实例化对象，内部类或者接口，抽象类都会对应生成一个.class文件，但是这些文件部分是不能够实例化的，不可以生成bean，所以在生成BeanDefinition之前需要进行过滤判断。对扫描到的BeanDefinition进行赋值，但是此时只是将className赋值到BeanDefinition中，因为还没有创建该类。spring在启动的时候就会往includeFilters中加入component注解。判断当前类是否需要当作bean进行处理。]]></description><category></category></item><item><title><![CDATA[rabbitMQ]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/135395604</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/135395604</guid><author>Promise_J_Z</author><pubDate>Tue, 30 Jul 2024 16:10:05 +0800</pubDate><description><![CDATA[5 如果web管理页面使用过程中出现RabbitMQ Management API returned status code 500报错。4 访问rabbitMQweb可视化管理页面。访问：http://ip:15672/#/用户名、密码均是：guest。3 重启rabbitMQ。4 重启rabbitmq。]]></description><category></category></item><item><title><![CDATA[Spring-循环依赖]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/139812578</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/139812578</guid><author>Promise_J_Z</author><pubDate>Thu, 20 Jun 2024 00:24:50 +0800</pubDate><description><![CDATA[简单了说，就是互相依赖，例如A对象含有B对象作为成员变量，而B对象含有A对象作为成员变量，两个对象互相依赖。]]></description><category></category></item><item><title><![CDATA[Spring]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134700199</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134700199</guid><author>Promise_J_Z</author><pubDate>Thu, 30 Nov 2023 01:00:19 +0800</pubDate><description><![CDATA[二次判断类是否可独立实例化对象，内部类或者接口，抽象类都会对应生成一个.class文件，但是这些文件部分是不能够实例化的，不可以生成bean，所以在生成BeanDefinition之前需要进行过滤判断。对扫描到的BeanDefinition进行赋值，但是此时只是将className赋值到BeanDefinition中，因为还没有创建该类。spring在启动的时候就会往includeFilters中加入component注解。判断当前类是否需要当作bean进行处理。]]></description><category></category></item><item><title><![CDATA[Redis高并发缓存架构]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134589038</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134589038</guid><author>Promise_J_Z</author><pubDate>Sat, 25 Nov 2023 00:38:15 +0800</pubDate><description><![CDATA[bigkey也就意味着每次获取要产生的网络流量较大，假[[设一个bigkey为1MB，客户端每秒访问量为1000，那么每秒产生1000MB的流量，对于普通的千兆网卡(按照字节算是128MB/s)的服务器来说简直是灭顶之灾，而且一般服务器会采用单机多实例的方式来部署，也就是说一个bigkey可能会对其他实例也造成影响，其后果不堪设想。当命中缓存的时候，设置key的过期时间为默认时间，相当于时间设满，设置过期时间所需要的时间是非常非常少的，对性能的影响也是微乎其微。对于热数据的获取可以实现无线续期的效果。]]></description><category></category></item><item><title><![CDATA[ORACLE查询死锁以及杀死死锁]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134571275</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134571275</guid><author>Promise_J_Z</author><pubDate>Thu, 23 Nov 2023 10:36:27 +0800</pubDate><description><![CDATA[2、执行下面语句杀死对应的会话，其中sid，serial为上述语句查询的值。1、执行预计查询死锁,这条语句直接复制执行即可。]]></description><category></category></item><item><title><![CDATA[Redisson分布式锁源码解析、集群环境存在的问题]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134563745</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134563745</guid><author>Promise_J_Z</author><pubDate>Wed, 22 Nov 2023 23:32:00 +0800</pubDate><description><![CDATA[然后在正常运行的时候，会启用定时任务调用重置时间的方法（间隔为开门看配置的默认过期时间的三分之一，也就是10秒）* 带参方法：手动设置解锁时间，到期后自动解锁，或者业务完成后手动解锁，不会自动续期。调用lockInterruptibly()方法会默认传入lease 为-1，该值再后面起作用。* 空参方法：会默认调用看门狗的过期时间30*1000（30秒）* 当出现错误的时候就会停止续期，直到到期释放锁或手动释放锁。lock有两种方法 一种是空参  另一种是带参。]]></description><category></category></item><item><title><![CDATA[redis-持久化]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134520403</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134520403</guid><author>Promise_J_Z</author><pubDate>Tue, 21 Nov 2023 00:40:32 +0800</pubDate><description><![CDATA[优势适合大规模数据恢复对数据完整性和一致性要求不高更适合使用节省磁盘空间（rdb文件一般来说都会比aof文件要小很多）数据恢复快劣势数据不完整性在fork子进程的时候需要消耗两倍的内存。优势备份机制更加稳健，丢失数据概率更低可读的日志文本，通过操作AOF稳健，可以处理错误操作劣势比起rdb更占用磁盘（除了要记录数据，还记录了指令）恢复备份速度更慢每次读写都同步的话，有一定的性能压力。]]></description><category></category></item><item><title><![CDATA[java深拷贝]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134516009</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134516009</guid><author>Promise_J_Z</author><pubDate>Mon, 20 Nov 2023 18:39:38 +0800</pubDate><description><![CDATA[【代码】java深拷贝。]]></description><category></category></item><item><title><![CDATA[java后端返回给前端不为空的属性]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134048425</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/134048425</guid><author>Promise_J_Z</author><pubDate>Thu, 26 Oct 2023 09:29:58 +0800</pubDate><description><![CDATA[目前遇到的一个问题。一个对象里面定义了数组、集合、和字符串属性等，但是返回给前端的时候数组和集合都是空的，前端接收到的是“” 一个空字符。然后保存的时候又把空字符传给后端，出现了数据结构不匹配导致报错。当返回前段的时候，如果对应的字段为空或为null，则不会返回给前端该属性。只需要注解写在属性字段上面即可。]]></description><category></category></item><item><title><![CDATA[JUC并发编程--------AQS以及各类锁]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/133052601</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/133052601</guid><author>Promise_J_Z</author><pubDate>Wed, 11 Oct 2023 23:44:27 +0800</pubDate><description><![CDATA[从源码上可以看到，当线程调用lock的时候，进来这个方法，前驱节点都是0，然后设置完前驱节点的状态为-1之后，会返回一个false，在外层又会进行一次自旋，如果前驱节点是头节点，则可以尝试通过cas尝试获取锁，当获取锁失败再次进来的时候，通过 if (ws == Node.SIGNAL)判断成功，直接返回ture，表示需要中断。首先进来会先判断前驱节点的状态，默认都是0，而该方法的目的就是要即将前驱节点状态设置成-1，在-1状态下，如果前驱节点释放锁，就会激活该节点，然后重新尝试获取锁。]]></description><category></category></item><item><title><![CDATA[FastJSON将对象转JSON字符串引发的血案]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/132892364</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/132892364</guid><author>Promise_J_Z</author><pubDate>Thu, 14 Sep 2023 23:15:25 +0800</pubDate><description><![CDATA[最近工作中需要将一个将近两百页的pdf的base64作为value转成JSON字符串，而代码中使用的方案就是JSONObject.toJSONString(obj);看网上资料有介绍JSON的最大支持处理对象可以到达1G，通过配置可以实现。不过我这里目前没有找到设置方案，先草草结束了。也就是说FastJSON内部设置了一个阈值，只要处理的对象大于67M，就会直接抛出OOM异常。而结果就是引发了OOM内存溢出。使用其他工具例如jackSon。]]></description><category></category></item><item><title><![CDATA[JUC并发编程--------线程安全篇]]></title><link>https://blog.youkuaiyun.com/Promise_J_Z/article/details/132819091</link><guid>https://blog.youkuaiyun.com/Promise_J_Z/article/details/132819091</guid><author>Promise_J_Z</author><pubDate>Mon, 11 Sep 2023 23:49:13 +0800</pubDate><description><![CDATA[简单的说就是局部变量。因为多线程下的使用，固然user这个对象的实例会不正常，但是对于StatelessClass这个类的对象实例来说，它并不持有UserVo的对象实例，它自己并不会有问题，有问题的是UserVo这个类，而非StatelessClass本身。让状态不可变，加final关键字，对于一个类，所有的成员变量应该是私有的，同样的只要有可能，所有的成员变量应该加上final关键字，但是加上final，要注意如果成员变量又是一个对象时，这个对象所对应的类也要是不可变，才能保证整个类是不可变的。]]></description><category></category></item></channel></rss>