- 博客(101)
- 收藏
- 关注
原创 Spring事件机制使用
一、定义好事件。这里的Map 应该改为事件要传递的对象。public class InquiryRefundEvent extends ApplicationEvent { private Map<String,String> data; public InquiryRefundEvent(Object source) { super(source); } public InquiryRefundEvent(Object source, M
2021-07-08 15:05:47
504
原创 按K元素分组反转链表算法实现思路及代码
1、问题:给定链表,对链表中的元素,每K个一组,组内元素反转,不足K个不动2、思路1)先实现链表(使用头插法)2)对链表迭代元素,一旦找到第K个元素,则可知本组内第一个和最后一个元素3)组内元素反转,返回本组首位元素4)迭代计数器重置,记录反转的组的原最后一个元素的下一个元素,所谓下一组的第一个元素,记录反转后的首位元素5)如果上个组的首位元素记录值不为空,则拼接两个反转后的组3、代码public class ReverseDemo { @Getter
2021-07-06 18:06:50
243
原创 任务调度中心实现(一) Quartz集群方式
一、Quartz集群实现任务调度1、测试版本Quartz2.3.22、Quartz初始化数据库。https://github.com/quartz-scheduler/quartz/tree/quartz-2.1.x/docs/dbTables3、quartz.properties集群持久化配置。此时具备了调度故障转移及负载均衡、quartz任务持久化能力。# Default P...
2021-06-15 19:34:57
881
原创 任务调度中心实现(二)节点竞争拉取任务的方式
1、任务计划表和任务记录表设计。任务计划表展开原码任务执行记录表展开原码2、参数介绍。1)、task_type.任务类型。对于开发好的不同后端逻辑的任务。比如:任务归档的任务类型为DATAFILER.task_type要与对应job的实现对应。TaskType示例展开原码上面的TaskType中用到了自定义Job。Job初步设计如下:AbstractJob中统一完...
2021-06-15 19:34:03
350
原创 任务调度中心实现方式(三) 事件驱动异步任务分发
1、初步设计的应用任务结构。jobkey设计为前缀“app_job-”+id. jobkey=triggerkey任务管理表折叠原码 DROP TABLE IF EXISTS `APPLICATION_TASK`; CREATE TABLE `APPLICATION_TASK` ( `id` bigint(10) NOT NULL AUTO_INCREME...
2021-06-15 19:33:15
528
1
原创 RocketMq tag动态设置失效问题
问题:Springboot整合RocketMQ后动态tag设置失效!依赖:<!-- rocketMQ --> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <
2021-04-26 13:26:48
2471
3
原创 一个数是否为2的次方的更好求解方式
问题:判断一个数是否为2的次方?解决代码:尽量使用位运算 会比一直除2 取模的方式快一些/** * 2的n次方的正整数代表:某个位是1,其他位是0 * 负整数代表:连续为0 (取反 + 1 为真实表示的值) * 1...10 * 1...00 * 1..000 */public class BackDemo { public static boolean valid(int num){ boolean isPositive = (num & (1 &
2021-03-27 19:16:35
141
原创 多线程工具--CyclicBarrier
写两个CyclicBarrier、Phaser的例子。一、CyclicBarrier。线程达到一定数量再一起执行public class Test_Cyclic { public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(3, () -> System.out.println("执行")); for (int i = 0;
2021-03-19 01:30:23
159
原创 SpringBoot启动源码梳理
源码梳理Springboot入口。SpringApplication.runpublic ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; Collection<Sp...
2021-02-03 20:05:36
161
原创 加密算法benchmark对比
https://github.com/benalexau/hash-bench/blob/master/results/5/README.md#city64-zah-latencycityhash算法:https://gist.github.com/andriimartynov/bae6b8b2e8a3ecaace61
2021-02-02 11:35:06
394
原创 接口响应时间长问题排查流程
当一个接口响应时间非常长时,如何定位问题并解决?1、先拿到curl。浏览器netWork --> copy as curl 如果是app则抓包下,copy出来.如下:curl -H 'Host: saasremote.api.test.ybm100.com' -H 'Cookie: uid=CgoUFF/J3UVXIkMEB0//Ag==' -H 'apptype: 3' -H 'user-agent: ling zhi wen zhen ce shi/2.1.2 (iPhone; iOS
2020-12-24 13:45:39
8163
2
原创 Disruptor替代queue并解决queue的一些问题
一,遇到的问题。在工作项目中,数据处理完成后合并数据放入一个LinkedTransferQueue中,会有一些长线程来不断地从队列中拿写到数据库。由此产生以下问题:1)因为LinkedTransferQueue是无界的,同时使用了transfer + take解决了一部分问题,但是程内部运行的数据处理线程数量多的时候,只有没有限制,会产生完整的GC。2)LinkedTransferQueue是无锁的,但是内部数据结构使用LinkedList,不断添加,删除元素会导致重复gc基于以上.
2020-08-25 16:58:01
931
原创 关于Dubbo
前言:1、本文内容阅读Dubbo官方文档获得2、本文是Java API的角度使用Dubbo,不使用Spring.一、快速体验Dubbo API版本:2.7.71、服务提供者。nacos直接将zookeeper换为nacos即可 ApplicationConfig application =newApplicationConfig(); application.setName("dubbo-server"); // 连接注册中心配置 Reg...
2020-07-22 02:29:21
423
原创 对于重构的思考
最近接到一个任务,大致就是在一段代码里多加一个else if 来做些事情。考虑到后面有可能还会加条件,想重构部分代码弄成策略的。做了大半后发现业务逻辑比我想象的要复杂,按这个思路重构完可能会出现意外的bug,或者重构失败。于是我打算还是加else if来解决。这件事情的教训就是:在非常了解一段逻辑之后再考虑重构。贸然重构可能会产生错误估计及更多意外效果。先做完任务,多阅读下这块逻辑,更了解些后看看那有没有机会重新重构下吧。这里记录下此时的想法...
2020-06-26 12:26:13
249
原创 Spark复习(一)电光火石间体验Spark2.x开发
直接上数据格式、问题、代码。先按照Java来复习下。复习完再复习Scala一、数据准备、格式介绍.1、评分数据。数据为 UserId::MovieId::Rating::timestamp. 文件名rating.bat1::1193::5::9783007601::661::3::9783021091::914::3::9783019681::3408::4::9783002752、电影数据。数据为 MovieID::Title::Gengres1::Toy Story (1.
2020-06-22 00:04:49
282
原创 行为模式之解释器模式 示例
今天复习设计模式看到解释器模式。想到之前我碰到过的一个问题。问题:前后端多条件的解析。例:某字符串token开始于“a” 且包含“b” 或长度等于10之前是通过三方的组件解决的。如果要自己实现一个可扩展、易交互的方案。之前没想到什么好办法。其实可以用解释器模式封装两层来解决。但我的解释器示例以另一个更简单的例子做一个举例。上面的仅是一个思考。问题:波兰表示法。运算符末尾添加操作数的方式例:1 2 + 代表1+2的运算。 3 4 + 5 - 6 + 代表3+4-5+6的运算解释
2020-06-21 16:55:54
236
原创 从零RPC(六) 诸多框架整和Spring的秘密
本章内容:1、Spring FactoryBean、InitializingBean的作用。2、自定义xsd文件。用来自定义Spring xml文件的标签。3、扩展BeanDefinitionParser建立自定义标签解析成为我们自定义bean的过程。4、自定义bean的后置操作完成Netty服务开启(后面会介绍)、注册中心注册等动作。一、Spring FactoryBe...
2020-03-29 07:50:39
272
原创 从零RPC(五) 使用zookeeper做注册中心,并完成服务发现等功能
一、首先添加依赖<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.5</version> <exclus...
2020-03-29 07:02:51
439
原创 Win10使用命令创建无线局域网
1、管理员运行cmd2、netsh wlan set hostednetwork mode=allow ssid=局域网的名字 key=密码.提示可以承载网络即可3、再在令提示符中输入:system32>netsh wlan start hostednetwork 回车4、此时报错则查看无线网卡驱动信息。执行命令Netsh WLAN show drivers.如果是否承载为否 则更改网卡驱动...
2020-03-20 22:38:47
2349
原创 初试响应式异步工具:RxJava
工作中并没有使用到,而且我觉得像vertx等优秀的框架已经提供了非常完善的异步事件驱动的功能,Spring也有ApplicationExentPublisher来做类似的事。今天就是写个入门例子,看看。emmmm当然这里只是简单例子,实际使用中应该进一步封装,Spring中的ApplicationExentPublisher就是很好的运行方式(封装思路)的参照物。public class...
2020-03-13 23:46:10
212
原创 并发编程实战读书笔记(二)对象的共享
并发编程实战读书笔记(二)对象的共享本章内容:1、内存可见性2、线程封闭3、不变性4、安全发布一、内存可见性1、线程可见性引入下面代码 中number值可能打印42,也有可能是0 重排序时!public class Novisibility { private static boolean ready; private static int number;...
2020-03-12 06:13:06
330
原创 并发编程实战读书笔记(一)线程安全性
本章内容:1、什么是线程安全?2、解决线程安全的几种方式?3、加锁的机制1、什么是线程安全?多个线程访问某个类时,不管运行环境以何种调度方式或者这些线程如何交替执行,并且在主代码中不需要额外的同步或者协同,这个类都能表现出正确的行为,那么这个类就是线程安全的。如http请求,处理类内部只使用局部变量就是线程安全的。比如做一个调用计数,每个线程都加一这种就是不安全的。但对于http请求来...
2020-03-04 05:57:39
139
原创 干掉if else
代码中太多if else。干掉多重if else的两种方式。虽然知道怎样去除,但是实际开发中衡量使用哪种异或还是使用if else本身最近有种武器很多但是不知道跟不同对手打该用啥感觉!!! emmmm一、枚举Integer level = 1; if(level == 1){ System.out.println("1 do something..."); }else ...
2020-03-03 03:41:07
319
原创 小工具:解析Cron表达式的工具
根据Quartz中搞出来的工具。避免依赖Quartz。package com.back.scheduler;import java.io.Serializable;import java.text.ParseException;import java.util.Calendar;import java.util.Date;import java.util.HashMap;imp...
2020-03-01 01:10:00
2318
原创 windows下载东西提高速度的方式。
一、限速他人1、P2P限速软件。限制其他局域网用户网速。不建议。本身也耗网速2、硬件层面限速。比如通过路由器二、释放电脑保留的20%宽带资源1、单击“开始-运行”,输入gpedit.msc回车后即可打开“组策略对象编辑器”。2、展开“计算机配置-管理模板-网络-QoS数据包计划程序”,双击右面设置栏中的“限制可保留带宽”,在打开的属性对话框中的“设置”选项卡中将“限制可保留带宽”...
2020-02-27 22:05:43
489
原创 Kafka(二) kafka详细配置
一、kafka server.properties 详细配置 根据需要自己选择############################# System ##############################唯一标识在集群中的ID,要求是正数。broker.id=0#服务端口,默认9092port=9092#监听地址,不设为所有地址host.name=debugo01 #...
2020-02-25 22:34:28
265
原创 Ck(三) 灵活批量写入大量数据至多张集群表
一、前言今天有一个批量写入多张集群表数据的任务。要求集群每个节点都要写入一定数据。于是我多花了几个小时,写了一个灵活的批量写入代码。以后再有类似任务可以直接拿来用。经测试是没问题的,但是细节可能写的不好。有空再改。主要解决问题:Clickhouse批量写入多个节点数据。二、开始1、首先是Clickhouse的数据源初始化。本来是考虑使用BalancedClickhouseDataS...
2020-02-25 02:53:53
3166
6
原创 关于自我认知
最近越来越觉得自己很菜,想问题不全面!以前总觉得是自己见的少了,时间长了自然就好。忽然发觉,这是一种能力,不有意识的锻炼真的没有提高。 对于学习能力,这一段时间有一定进步。但是都是别人给出大致思路或者要看的技术,我再去学的。对于方案解决能力,现阶段基本为0.对于知识的深度,还是要持续学习。对于已有知识,持续更新。总之,加油吧!...
2020-02-14 17:18:38
198
1
原创 Elastic-Job 使用调研
一、Elastic-job 集群方式、任务分片、简单示例。1、简单示例。 public class MySimpleJob implements SimpleJob { @Override public void execute(ShardingContext context) { String jobName = context.getJobName(); Stri...
2020-02-12 11:53:49
592
原创 记录一个使用的内容
最近在思考Quartz时,想到Spring使用Quartz的话,使用改的类不被IOC容器管理但是内部还想使用service或者dao这种情况。1、想到的第一个方案时把当前类交给ioc容器管理。但是Spring整合的代码有个类时反射的,那就需要重新写该类的实现将类放入ioc容器中,经实验可行。2、如果我就不想要放入ioc容器中。那可以考虑用哪个被IOC管理的类就直接从ioc从其中拿。比如在构...
2020-01-20 15:03:32
290
原创 ck(二) ck集群注意及常规操作
一、当设置了副本无效时记得检查以下三个方面。1、xml中的设置和system.clusters中的是否一致。2、<listen_host>0.0.0.0</listen_host> 这个配置要配置成0.0.0.0不然节点之间通讯可能有问题3、<interserver_http_host>ck1</interserver_http_host&g...
2020-01-20 14:54:26
2105
原创 Ignite相关异常解决及原因
以后遇到的问题整理下来:1、异常信息为:class org.apache.ignite.binary.BinaryObjectException: Binary type has different field types产生错误前做的操作。修改了一个类中的属性的类型,这个类在Mybatis二级缓存时会被放入ignite.产生问题的思路:1、删除ignite产生数据的目录。2、...
2020-01-17 13:55:32
4104
原创 quartz 集群化任务。 web增删改查任务 并且暂停继续任务。
一、Quartz集群化使用二、web增删改查任务 并且暂停启动任务。这里写一个增删改查任务、任务启停的简单的类,实际应用中1、记得持久化任务。2、持久化jobParam类。这里只是展示怎样增删改查和启停package com.back.scheduler;import com.back.scheduler.job.BackJob;import com.back.schedul...
2020-01-12 23:52:45
825
原创 quartz 持久化
上一篇写了quartz2.3.2的简单使用。但是Job的相关信息都是存在内存中的。对于一个持续定时任务比如执行100次一段逻辑,我们有时希望重新启动程序后应该将剩下的次数执行完,而不是重新执行100次。这时就需要持久化。当然还有另一个原因,job持久化就意味着可以web管理job!一、job持久化配置。resourses下新建quartz.properties内容如下# Defaul...
2020-01-12 23:50:44
1459
2
原创 quartz 使用例子
示例版本:quartz2.3.2原因:试下新版本api。复习下这块知识,以前写过一篇,太烂了1、简单定时。Scheduler defaultScheduler = null; try { defaultScheduler = StdSchedulerFactory.getDefaultScheduler(); logger.info(""); defaultS...
2020-01-12 19:31:32
298
原创 Ck(一)安装
一、本次下载安装ck版本19.16.2.21、ck下载地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/2、注意:此版本需要这三个包,其他版本可能还需要其他包。clickhouse-client-19.16.2.2-2.noarch.rpmclickhouse-common-static-19.16.2.2-2.x8...
2020-01-08 03:08:01
2140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人