# demo **Repository Path**: luo-wenjie12/demo ## Basic Information - **Project Name**: demo - **Description**: 用于JAVA基础及springboot相关 练习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-07 - **Last Updated**: 2024-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## DEMO - 负责人: - 邮箱: swagger地址:http://localhost:8089/doc.html ## 项目简介 用于JAVA基础及springboot相关 练习 ## 日记 ### 2021-07-18 #### ForkJoinPool - Demo:com.example.demo.java8.stream.parallel.CountTaskTest - 文章: 1. [JAVA多线程系列--ForkJoinPool详解](https://blog.csdn.net/niyuelin1990/article/details/78658251) #### java8 ParallelStreams 并行流 - Demo:com.example.demo.java8.stream.parallel.ParallelTest - 文章: 1. [Java8中的 Stream 那么强大,那你知道它的原理是什么吗?](https://mp.weixin.qq.com/s/wkybd8HVR6W_zl1lCb2HGg) ### 2021-07-24 #### 引用传递与值传递 - Demo:com.example.demo.demo.YingyongTest - 文章: 1. [其实java中无论是引用类型还是基本类型,在参数传递时都是值传递](https://blog.csdn.net/bjweimengshu/article/details/79799485?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param) #### 单精度与双精度 - Demo:com.example.demo.demo.datatype.DoubleTest - 文章: 1.[单精度和双精度问题](https://blog.csdn.net/qq_26948737/article/details/108194224) 2.[java 8大数据类型](https://app.yinxiang.com/Home.action?login=true#n=1d32d959-5540-49fc-bd51-f91d6bb8ccf8&s=s59&ses=4&sh=2&sds=5&) #### BigDecimal 使用 - Demo com.example.demo.demo.datatype.BigDecimalTest com.example.common.utils.ArithmeticUtils - 文章: 1.[Java 中的 BigDecimal,你真的会用吗?](https://mp.weixin.qq.com/s/UzotGiXe5yr9lP79SN0-bQ) #### 保留两位小数 - Demo com.example.demo.demo.datatype.KeepTwoDecimalTest - 文章: 1.[Java保留两位小数的几种写法总结](https://blog.csdn.net/zhangyaowxd/article/details/108453467) ### 2021-07-24 #### Java 8 Stream使用 - Demo com.example.demo.java8.stream.* - 文章: 1.[20 个实例玩转 Java 8 Stream](https://mp.weixin.qq.com/s/2WYpN1hcTgVChfcXtnvK5g) ### 2022-01-25 - Demo com.example.demo.thread.finals.* - 文章: [如何快速实现一个不可变类](https://app.yinxiang.com/shard/s59/nl/12469951/442cf7a3-d4d9-4d80-9e9d-730581850821) ### 2022-01-26 #### Java泛型声明的作用和区别 - Demo com.example.demo.java8.jicheng.* - 文章:[Java泛型声明的作用和区别](https://www.cnblogs.com/xiarongjin/p/8309755.html) ### 2022-02-10 #### hutool工具类中文转拼音 - Demo com.example.demo.utils.PinyinUtils -https://apidoc.gitee.com/loolly/hutool/cn/hutool/extra/pinyin/PinyinUtil.html ### 2024-04-09 #### RocketMQ 提交消费进度的逻辑 - Demo com.example.mq.rocketmq.consumer.ack.MQPushACKConsumer 1. RocketMq默认行为是消费者自动提交消费记录(ACK),当消费者成功消费消息后,RocketMQ会自动将消息标记为已消费,而无需消费者显式地回复ACK确认。 1. 如果你非常有必要手动提交 ack,可能需要考虑使用 RocketMQ 的底层 API 来实现。你可以使用 RocketMQ 的 DefaultMQPushConsumer 类来订阅消息,然后通过注册 MessageListenerConcurrently 或 MessageListenerOrderly 来处理消息,这些接口中提供了 ConsumeConcurrentlyContext 或 ConsumeOrderlyContext 对象,从而可以手动提交 ack 2. 如果业务的回调没有处理好而抛出异常,会认为是消费失败当ConsumeConcurrentlyStatus.RECONSUME_LATER处理。 2. 使用顺序消费的回调MessageListenerOrderly时,由于顺序消费是要前者消费成功才能继续消费,所以没有RECONSUME_LATER的这个状态,只有SUSPEND_CURRENT_QUEUE_A_MOMENT来暂停队列的其余消费,直到原消息不断重试成功为止才能继续消费。 #### Kafka 提交消费进度的逻辑 - Demo com.example.mq.kafka.consumer.ack.KafkaAckConsumer 1. Kafka 消费者默认情况下是启用自动提交消费位移(offset)的。消费者在消费消息时,会定期将当前消费的位移提交到 Kafka 服务器,以便记录消费的进度 2. 在这个示例中,我们添加了一个 Acknowledgment 类型的参数,用于手动提交 ACK。在消息处理完成后,我们调用 acknowledgment.acknowledge() 方法来提交 ACK。这样就完成了将 Kafka 消费者配置为手动提交 ACK 的操作。 ### Kafka 自定义partition分区 - com.example.mq.kafka.config.CustomPartitioner ### 2024-04-27 #### 函数式变成 - Demo com.example.demo.java8.functionalinterface.day240426.*