7 芋智波佐助

尚未进行身份认证

我要认证

菜鸟一只

等级
TA的排名 2k+

git reset

回退到某个版本例子写文件agit add a.txtgit commit -m 'a'写文件bgit add b.txtgit commit -m 'b'这时候git reset --mixed HEAD^ ps : mixed是默认会回退一个版本版本库会被撤销暂存区会被撤销工作空间不会被撤销相当于只执行了4步写文件a

2020-02-15 20:01:23

Quartz工具类

官方的学习文档http://www.quartz-scheduler.org/generated/2.2.1/html/qs-all/package com.xh.market.business.time.service;import static org.quartz.CronScheduleBuilder.cronSchedule;import static org.q

2020-02-15 19:32:46

在线数据迁移的一点想法

方案:上线代码中启动的时候获取表中最大的id,记为maxId,然后如果insert 插入新的库,查询删除修改判断id是否大于maxId,如果是走新库。对于小于等于maxId的数据走老库,同时监听binlog ,发到消息队列堆积,暂不消费,因为可能老数据还没有迁移,做数据纠正。然后注意一下如果插入数据要唯一,注意去老库校验一下唯一性,因为新库没数据。问题1 如何保证一上线之后的对老数据的修改...

2019-01-16 17:36:19

xxl-job研究心得

最近2天 花了点时间研究xxl-job 项目还是比较小的 分布式调度中心调度中心基于quartz的,job的信息还是持久化到mysql中的,调度的时候也是用数据库锁的方式避免重复获取统一任务,然后分发调执行器端,分发使用rpc 方式,本质使用了jetty 执行器作为客户端,执行器启动的时候回向调度中心注册。任务可以在执行器端,使用@JobHandler注解,需要在admin控制台配置一个对...

2018-10-31 19:47:26

org.eclipse.swt.SWTException: Invalid thread access

***WARNING: Display must be created on main thread due to Cocoa restrictions.Exception in thread "main" org.eclipse.swt.SWTException: Invalid thread access    at org.eclipse.swt.SWT.error(SWT.java:4...

2018-10-18 11:01:12

MessageBodyWriter not found for media type=application/x-www-form-urlencoded

MessageBodyWriter not found for media type=application/x-www-form-urlencodedpost的时候不要自定义类型,使用Form 不然要写对应的provider。否则就报找不到对应的MessageBodyWriter Form form = new Form();form.param("key", key).para...

2018-10-17 18:01:48

定时任务做etl清洗小记

etl清洗数据 2次定时任务取数据有重叠,做不到不漏也不多,做幂等性太繁琐,可考虑做一个统一的支持所有业务的封装的幂等中间件。取数据也有问题,怎么取,取多了oom。数据一致性,一个表依赖另外2个表,怎么保证下一次用到的时候没有其他表对其修改导致数据不一致。可能是当前定时任务,这种情况可以业务删规避,也可能是其他定时任务忘同一个表插入数据。单点问题,任务挂了咋办。elastic-job?...

2018-07-30 18:54:00

disruptor学习

ringbuffer优点数组,比链表快,因为是连续的,所以相邻的会被一起加载,缓存行元素不删除,被覆改,没有垃圾回收,内存使用率低指向队尾元素的指针是volatile变量,无锁相对于阻塞队列,消费者每次加锁只能获取一次插入数据,而consumer开始移动时,会调用barrier的waitFor方法,得到一段。生产者也是,可以获得一批插入的位置,然后多个生产者分别插入自己获得的位...

2018-07-30 18:48:49

消息发送一致性

1 2 3步 先扔消息队列 4 如果发送成功 进行业务处理 否则退出业务 5 6 发送确认消息存在的问题2 第二步消息中间件存储成功或失败之后,消息中间件挂了 应用不知道消息入库的结果3 返回应用结果超时,应用不知道消息入库的结果,如果成功,但是结果没有给应用,导致不一致,或者应用挂了,没来得及处理5,6 业务操作之后 发送处理结果失败涉及数据的一致性有3个地方 业务处理数据,业务之前的消息 业务...

2018-06-19 14:19:53

kafka延时队列相关操作

TimingWheel是kafka时间轮的实现,内部包含了一个TimerTaskList数组,每个数组包含了一些链表组成的TimerTaskEntry事件,每个TimerTaskList表示时间轮的某一格,这一格的时间跨度为tickMs,同一个TimerTaskList中的事件都是相差在一个tickMs跨度内的,整个时间轮的时间跨度为interval = tickMs * wheelSize,改时...

2018-05-29 11:25:07

mybatis流程分析

从SqlSessionTemplate说起SqlSessionTemplate内部有一个sqlSessionProxy,当调用insert,update,getConnection等方法的时候,实际上是调用了代理类,sqlSessionProxy是由动态代理生成的,对应的InvocationHandler是SqlSessionInterceptor,他会从threadlocal(Transacti...

2018-05-24 20:56:10

Apollo配置中心

创建一个app(项目)的时候,portal模块默认创建一个appnamespace,config模块创建一个默认集群,一个appnamespace和一个namespace(是根据appnamespace创建的,即取出所有的appnamespace,然后创建对应的namespace)创建集群的时候,会根据app下所有的appnamespace创建对应的namespace。创建私有或公有的非关联的na...

2018-05-22 19:27:35

kafka 生产者流程总结

ProducerInterceptor.onSend()方法对消息进行拦截处理调用waitOnMetadata方法获取集群元数据将topic添加到metadata的topics集合中,获取集群中分区数cluster.partitionCountForTopic(topic);,如果不满足则会调用metadata.requestUpdate();将needUpdate设置为true,唤醒sender...

2018-05-17 20:47:55

dubbo 服务暴露过程

先发图镇楼serviceconfig#doExportUrlsFor1Protocol方法会先做一个代理,ref就是业务实现类,Invoker<?> invoker = proxyFactory.getInvoker(ref, (Class) interfaceClass, registryURL.addParameterAndEncoded(Constants.EXPORT_KEY,...

2018-05-06 13:20:54

zigzag数字压缩算法

大致逻辑是将符号位挪到最后,剩下的31位往前挪一位,然后负数的话剩下的取反然后每七位为一组,如果(v & 0xffffff80) != 0L,0xffffff80 = (1111111111111111111111111111111111111111111111111111111110000000)2 表示后7位不为0则取后7位补上加上前导1(0x80 = 10000000),然后重复此操...

2018-04-25 17:43:53

分布式事务中间件tcc-tranction研究总结

查看源码的分支是master-1.2.x 时间2018.04.12也是通过aop拦截业务方法,业务方法上带有Compensable注解1 刚开始是trying阶段,先创建事务日志,状态为trying,然后进入业务方法发起rpc操作,链式的调用提供者的带有Compensable注解的业务方法,当某一个发起者不是root类型,则会使用rpc操作传过来的TransactionContext中的事务id创...

2018-04-12 10:27:48

分布式事务中间件myth研究总结

查看的源码是master分支 时间2018.04.10这一款分布式事务中间件是基于mq进行补偿不支持回滚 所以发起rpc操作就意味着成功,注意调用的顺序比如现在有一个发起者和两个提供者,发起者需要调用2个提供者暴露的服务先看发起者发起者在调用带有@myth注解的事务方法的时候,会先执行aop拦截,创建事务MythTransaction和MythTransactionContext,前者只用于某个服...

2018-04-10 10:38:45

jdk动态代理

本质还是反射,动态的生成一个代理类,这个代理类名一般是$Proxy109这种形式,这个类实现你设置的一些接口,并且继承了proxy,proxy有一个InvocationHandler,当调用$Proxy109的某个方法时,他会调用InvocationHandler,传入method,再由InvocationHandler反射调用对应的被代理类那个方法(传入的method),method的获取是在一...

2018-04-04 17:41:42

leetcode刷题总结 101-200

101. Symmetric Tree二叉树是否对称102. Binary Tree Level Order Traversal获取二叉树的每一层103. Binary Tree Zigzag Level Order Traversal获取二叉树的每一层,先是从左到右,然后从右到左,然后从左到右。。。104. Maximum Depth of Binary Tree二叉树的最大深度105. Con...

2018-03-28 10:29:38

分布式全局序列号

1 本地文件方式 磁盘io 读写慢2 数据库mysql 设置当前num和步长,单点问题 注意并发修改当挂掉的时候 有缺失的一段,但不会重复3 snowflake4 本地时间戳??mycat看到的 snowflake的变种?ID= 64 位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加)换算成十进制为 18 位数的 long 类型,每毫秒可以并发 12 位二进制的累加。 5...

2018-03-27 15:26:12

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。