<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lazyguy21的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lazyguy21</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lazyguy21]]></copyright><item><title><![CDATA[MYSQL间隙锁导致的死锁]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/143933487</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/143933487</guid><author>lazyguy21</author><pubDate>Thu, 21 Nov 2024 11:18:29 +0800</pubDate><description><![CDATA[等待获取space id 26 page no 4 n bits 80位置处的插入意向锁“lock_mode X locks gap before rec insert intention waiting”。代码写出这个情况，容易误判处在于“update语句表面上走的主键，看似只会锁对应的一条数据。但是在没有命中的情况下，其实去获取了那个对应区间段的整个间隙锁。这段逻辑常常出现在大批量同步数据的应用中。所以有的人会写这段逻辑：先尝试修改，修改没有命中。但是这段逻辑在并发执行的过程中很容易产生死锁。]]></description><category></category></item><item><title><![CDATA[JAVA批量操作MYSQL数据的细节]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/143903135</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/143903135</guid><author>lazyguy21</author><pubDate>Wed, 20 Nov 2024 11:17:57 +0800</pubDate><description><![CDATA[java通过jdbc批量add，update，delete数据其实是在使用jdbc的batch相关的API。但是底层怎么实现的？]]></description><category></category></item><item><title><![CDATA[Docker pull 拉不到镜像的简单解决方法]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/143775401</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/143775401</guid><author>lazyguy21</author><pubDate>Thu, 14 Nov 2024 17:09:13 +0800</pubDate><description><![CDATA[但是公司配置的仓库拉取不到，自己找一个能拉到的仓库：docker.1panel.live,在pull的时候加上这个仓库的地址，注意没有http前缀。因为镜像的唯一标识符其实是imageId，tag只是方便人阅读而已。我要拉取zendesk/maxwell镜像，本来image是：zendesk/maxwell:latest。注意下载到本地的镜像的名称是带了额外的仓库前缀的，因为镜像的名称就是（repository+tag)。此时再输入docker images查看，新的名称已经有了。就只剩下一个名字了。]]></description><category></category></item><item><title><![CDATA[Java线程的异常处理]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/143255747</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/143255747</guid><author>lazyguy21</author><pubDate>Sat, 26 Oct 2024 17:22:57 +0800</pubDate><description><![CDATA[所以一个线程就算是异常结束了，产生的异常也会被封装在Future里，只有在调用Future.get方法时才会抛出。如果此时我们的代码写的不好导致异常信息没有被正确的记录，那么整个异常信息就会直接被吞掉，无法知道发生了什么。当一个线程因为抛出异常，结束整个run方法时，结束整个thread生命周期时，JVM会在控制台打印异常信息。事实上在真实的java应用中，我们几乎很少会单独起一个线程做什么事儿，都是启动一个线程池。可以发现此时输出的就不再时JVM原本输出的异常栈信息，而是我们定制的信息。]]></description><category></category></item><item><title><![CDATA[kafka broker关键参数配置]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/142396035</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/142396035</guid><author>lazyguy21</author><pubDate>Tue, 22 Oct 2024 09:34:05 +0800</pubDate><description><![CDATA[如果要使用一套ZooKeeper环境管理多套Kafka集群，那么设置该参数的时候就必须指定ZooKeeper的chroot，比如zk1：2181，zk2：2181，zk3：2181/kafka_cluster1。结尾的/kafka_cluster1就是chroot，它是可选的配置，如果不指定则默认使用ZooKeeper的根路径。kafka里数据文件也交log，log.dirs是存放数据的目录。[[协议]]://[主机名]:[端口]] 逗号分隔可以多个。如果硬盘充足，可以多个磁盘的目录，增加写入速度。]]></description><category></category></item><item><title><![CDATA[kafka producer关键参数配置]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/142593187</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/142593187</guid><author>lazyguy21</author><pubDate>Sun, 29 Sep 2024 14:45:34 +0800</pubDate><description><![CDATA[前一批发送的消息broker响应之后，才能发送下一批。kafka 发送消息调用的send方法底层其实是将消息放入了缓冲区，然后是一个单独的线程负责从缓冲区将消息按topic&paritition纬度打包成批次消息，再发送到服务端broker。重试的最大间隔，如果retry.backoff.ms设置的比retry.backoff.max.ms还大，那么每次重试的间隔永远恒定用retry.backoff.max.ms。保证单个producer发送的消息到单个topic单个partition的消息是幂等的。]]></description><category></category></item><item><title><![CDATA[spring-kafka消费消息后的提交方式]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/142137983</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/142137983</guid><author>lazyguy21</author><pubDate>Wed, 11 Sep 2024 15:06:50 +0800</pubDate><description><![CDATA[其实这个检查提交的动作任然是用调用poll的线程去做的。如果是批量消费的listener：那么此时实际的效果就是spring一次性帮我们poll n条消息回来，我们处理完，listener方法返回时，spring触发commit。单条消费的listener：因为单条消费的逻辑在每次处理完每条消息后都有对应的尝试提交的动作，此时如果达到了时间阈值就会提交。单条消费的listener&批量消费的listener此时的逻辑都是一样的，spring帮我们缓存offset的信息，下次poll之前一起提交。]]></description><category></category></item><item><title><![CDATA[BufferedInputStream如何缓冲IO以及InputStream中的read(byte[] b) 是否具有缓冲功能？]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/18451015</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/18451015</guid><author>lazyguy21</author><pubDate>Sat, 18 Jan 2014 16:55:09 +0800</pubDate><description><![CDATA[今天做IO练习的时候，注意到了File]]></description><category></category></item><item><title><![CDATA[Hibernate知识要点复习(2)  一对一双向关联（注解）及 关联中各种注释的作用]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/17297439</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/17297439</guid><author>lazyguy21</author><pubDate>Fri, 13 Dec 2013 09:14:03 +0800</pubDate><description><![CDATA[建立实体域对象。丈夫和妻子

package org.yyf.hibernateexample.domain.onetoone.twoway;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persi]]></description><category></category></item><item><title><![CDATA[Hibernate知识要点复习(2)  一对一双向关联（注解）及 关联中各种注释的作用]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/17289779</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/17289779</guid><author>lazyguy21</author><pubDate>Thu, 12 Dec 2013 22:06:55 +0800</pubDate><description><![CDATA[建立实体域对象。丈夫和妻子

package org.yyf.hibernateexample.domain.onetoone.twoway;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persi]]></description><category></category></item><item><title><![CDATA[Hibernate知识要点复习(2)  一对一双向关联（注解）及 关联中各种注释的作用]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/17289563</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/17289563</guid><author>lazyguy21</author><pubDate>Thu, 12 Dec 2013 21:51:20 +0800</pubDate><description><![CDATA[建立实体域对象。丈夫和妻子
package org.yyf.hibernateexample.domain.onetoone.twoway;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persist]]></description><category></category></item><item><title><![CDATA[Hibernate知识要点复习-基本环境搭建（1）]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/17289169</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/17289169</guid><author>lazyguy21</author><pubDate>Thu, 12 Dec 2013 21:42:07 +0800</pubDate><description><![CDATA[决定系统的整理下HIbernate的各方面知识。先重新搭建一次纯Hibernate的架子。
      1.hibernate基本配置文件hibernate.cfg.xml，用于配置SessionFactory相关配置。
   

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configura]]></description><category></category></item><item><title><![CDATA[java String 笔试题]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/13507929</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/13507929</guid><author>lazyguy21</author><pubDate>Tue, 29 Oct 2013 14:41:26 +0800</pubDate><description><![CDATA[1.将一个给定的字符串如 “I am a GOOD People" 的每个单词首字母大写，其它小写，并去掉空格。

/**
 * @author donye
 *
 */
public class CapitalTester {
	public static String capitalEachWord(String source){
		if (source==null||source.eq]]></description><category></category></item><item><title><![CDATA[检查链表是否有环]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/12707103</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/12707103</guid><author>lazyguy21</author><pubDate>Mon, 14 Oct 2013 12:12:31 +0800</pubDate><description><![CDATA[public class LinkCircleChecker {
	public static class Node{
		//直观起见，设置为public
		public int value;
		public Node next;
		public Node(int value, Node next) {
			this.value = value;
			this.next = next;]]></description><category></category></item><item><title><![CDATA[java实现单链表反转，2种方式]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/12704961</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/12704961</guid><author>lazyguy21</author><pubDate>Mon, 14 Oct 2013 10:02:50 +0800</pubDate><description><![CDATA[/**
 * @author donye
 *  反转链表的关键就是反转一个节点之后不能丢失后面节点的指针。
 *  递归是从最后向前依次反转
 *  而用while循环则用临时变量来保存相关信息
 */
public class LinkReverseTester {
	public static class Node{
		//直观起见，设置为public
		public int value]]></description><category></category></item><item><title><![CDATA[Spring Annotation 备忘]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/8855621</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/8855621</guid><author>lazyguy21</author><pubDate>Fri, 26 Apr 2013 17:26:11 +0800</pubDate><description><![CDATA[(1) 、
 该配置隐式注册了多个对注解进行解析的处理器，如：
 AutowiredAnnotationBeanPostProcessor      
 CommonAnnotationBeanPostProcessor 
 PersistenceAnnotationBeanPostProcessor    
 RequiredAnnotationBeanPostProcessor]]></description><category></category></item><item><title><![CDATA[LOG配置备忘]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/8822256</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/8822256</guid><author>lazyguy21</author><pubDate>Fri, 19 Apr 2013 09:18:12 +0800</pubDate><description><![CDATA[一、Log4j简介

Log4j有三个主要的组件：Loggers(记录器)，Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别，日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别，并可以在运行时控制日志输出的样式和位置。

1、Loggers

Loggers组件在此系统中被分为五个级别：DEBUG、INFO、WARN、]]></description><category></category></item><item><title><![CDATA[JDBC连接备忘]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/8819999</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/8819999</guid><author>lazyguy21</author><pubDate>Thu, 18 Apr 2013 17:07:59 +0800</pubDate><description><![CDATA[oracle
    driverClass：oracle.jdbc.driver.OracleDriver
    url：jdbc:oracle:thin:@127.0.0.1:1521:dbname
mysql
    driverClass：com.mysql.jdbc.Driver
    PS：有的时候，mysql的驱动类也也会看到使用org.gjt.mm.mysql.Dri]]></description><category></category></item><item><title><![CDATA[hibernate配置备忘]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/8819580</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/8819580</guid><author>lazyguy21</author><pubDate>Thu, 18 Apr 2013 16:14:02 +0800</pubDate><description><![CDATA[<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">]]></description><category></category></item><item><title><![CDATA[spring配置备忘]]></title><link>https://blog.youkuaiyun.com/lazyguy21/article/details/8700459</link><guid>https://blog.youkuaiyun.com/lazyguy21/article/details/8700459</guid><author>lazyguy21</author><pubDate>Thu, 21 Mar 2013 11:45:38 +0800</pubDate><description><![CDATA[<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:cache="http://www.sprin]]></description><category></category></item></channel></rss>