自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

码云

没事喜欢做点小研究

  • 博客(73)
  • 收藏
  • 关注

原创 百度ID生成器高性能原因

百度ID生成器可以达到百万TPS,为什么如此高性能?1、消费未来时间百度ID生成器也是基于雪花算法,雪花算法中最后12位用于自增序列,这决定了雪花算法只支持每秒生成最多4096个id,这在一些批量生产数据的场景会不够用,百度ID生成器可以每秒几百万甚至更多,是因为百度ID生成器可以消费未来时间。消费未来时间是什么意思呢?正常雪花算法是取当前时间,百度的ID生成器可以利用未来时间生成好id缓存起来。并发大时可以使用到未来时间。2、本地生成并缓存和常规雪花算法...

2021-07-11 18:36:27 572

原创 如何读好一本书?

背景有没有这样一种感觉,读的书也不少,但是感觉吸收的很少,甚至有些书读了跟没读一样,讲的啥全忘了,更别说应用于生活了。这可能就是我们常说的“读了这么多书,还是过不好这一生” 的原因,毕竟书里的东西只有在生活中得到应用,才能改变生活,才有可能改善生活。只是一味的读,理论上说效果是不会太好,这个跟记忆原理有关,要掌握一个东西,是需要输出的,而读只是一种输入,没有输出强化我们很快就忘了,大脑为了保持高效必须丢弃这些没啥输出的记忆,而强化那些经常输出的记忆。所以都说输入比输出更重要嘛!那读一..

2021-05-05 19:42:21 180 1

原创 基于百度ID生成器二次开发方案

背景百度开源的UidGenerator,比较适合我们交易的应用场景,但并不能直接拿来用,因为我们交易并不是使用spring体系,另外也还有其它需求,因此需要做一些二次开发目标1、提供框架无关的工具包,UidGenerator依赖Spring2、提供原数据获取接口,通过id查询id是由哪个机房,哪个国家生成的等架构主mysql:提供id元数据的管理,workId 通过mysql表自增生成,机房、地区等元数据存储到mysql表备mysql:采用半同步复制同步数据,提供主备自.

2021-05-04 18:53:35 225

原创 Java动态脚本选型

背景对账平台需要快速接入各种内部对账和渠道对账,提升接入效率是一个很有价值的点,通过引入动态脚本,将对账流程完全脚本化,能较大的提升接入效率,脚本化后,无需冗长乏味的开发部署周期,只要在管理后台做一些配置就能实现对账接入。备选方案 动态脚本 优点 缺点 原理 示例 参考资料 AviatorScript 1、轻量级 (...

2021-05-04 18:46:13 243

原创 如何评价做事能力,如何提升做事能力?

如何评价做事能力?认可极客时间上的一个大牛说的说法,主要从三个维度评价 看闭环思维 看做事方法论 看最终结果 如何提升做事能力?思路:针对评价的三个维度逐一去努力增强 闭环思维 做事只看到一个点不够,要搞清事情的前因后果,来龙去脉,有闭环思维(1)5W2H分析发做一件事之前,最重要的是搞清事情的来龙去脉(2)PDCA循环做事有始有终,有节奏,有持续性 方法论 不能只靠运气,更不能瞎搞用蛮力,做事需要寻找、运用正确...

2021-05-04 18:37:24 110

原创 ID生成器选型

背景支付服务准备在海外部署,这引入了新的需求,一个是需要保证id全局唯一,另外一个是需要通过id拿到机房等信息,而公司现有的id生成器并不能保证多中心生成的id唯一,这还不是主要问题,这个可以重构一下就好了,但是要通过id拿到机房等信息这个需求要在现有的id生成器上改则是代价太大,几乎是改不动,因此我们部门决定搞一套新的ID生成器。备选方案到了一定规模,市面上开源的方案,基本就两类,一类是基于“号段模式”做的增强,一类是基于“雪花算法”做的增强,大体整理出如下三个备选方案...

2021-03-31 17:35:24 172

原创 使用xxl的分片广播路由策略实现对账的分片计算

背景最近在做一个新的对账平台,旧的对账系统存在很多问题,其中一个问题就是性能问题,因此新的对账平台从设计之初就考虑了性能这一块,下面不会讲为什么选择做新的对账平台,也不会讲对账平台的其他设计,就说一下如何使用xxl的分片广播路由策略实现对账的分片计算。场景分析渠道对账,一天一个批次,我们对接了100个渠道,然后每个渠道一天有100W的订单数,这是假设,不过对账平台的对账数据量的确会不断增加,事实上我们的对账平台不仅仅只有渠道对账,还有内部业务对账,因此单机计算不行,很自然的想到分片计算,就是我们

2021-02-14 18:36:16 1419 1

原创 记一次大数据表危机处理

背景基础交易数据库trade_base使用的是mysql数据库,有两张大表trade_base_order 和trade_base_resource_change_record,数据量分别达到了187G和258G,达到了总磁盘的81%,由于磁盘告警阀值设置在85%,加上数据主要集中在两张大表,导致了发现问题的时候已经无法增加索引和字段还有整块磁盘快耗尽的问题,mysql普通的delete无法释放磁盘空间,执行optmize table来释放磁盘空间也不行,因为剩余空间不够这个命令执行的要求,因此事情变.

2021-02-14 15:57:45 235 3

原创 中台学习笔记

什么是中台中台是企业级业务能力复用平台,企业级说明涉及的问题不是一条业务线的而是集团层面多条业务线的,能力复用不只是面向过去做些消除重复的事情,更重要的是面向未来赋能业务,新业务能复用已有的能力,达到快速响应满足用户的需求,提升企业生存和竞争的能力。复用的能力基本上就是四类:业务数据、业务功能、业务流程以及通用的技术能力。常见的中台有业务中台、数据中台、技术中台、研发中台、移动中台...

2019-09-30 22:11:30 293 1

原创 spring cloud 微服务架构学习笔记

什么是微服务架构“微服务”一词源于Martin Fowler的名为Microservices的博文。简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成许多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过RPC/RESTFul API进行通信协作。微服务九大特征服务组件化 按业务组织团队 做“产品”的态度 智能端点与哑管道 去中心化治理...

2019-09-21 16:48:29 239

原创 Netty线程模型总结

netty是一个异步的,事件驱动的基于NIO的高性能的网络应用程序框架,下面主要看看netty的线程模型.Netty线程模型netty的线程模型是基于reactor模式的一种实现 如果服务只需要绑定一个端口(比如8888),那么boss线程只需要一个线程,如果有多个才需要多个线程,一个NioEventLoop负责一个端口 服务启动时会创建两个线程组 bossGroup 和 work...

2019-09-18 17:58:26 443

原创 记一次jmeter压测的坑

最近做了一个安全传输方案,因为怕对性能有较大影响,因此测试安排了针对性的压测压测的过程出现了一点小问题发现失败率特别高,测试怀疑是服务端出了错,但是我查看日志发现没有报错。后面我观察TCP链接数排除了服务端的嫌疑我发现跑着跑着,tcp链接数就突然就降低下来,也就是这个时候jmeter显示的错误率急剧升高。因此排除了服务端的嫌疑,然后让测试把日志输出打开,果然打开日志输出后,发现了大量的错误拿上面的...

2018-06-10 22:34:28 16319 1

原创 一个分布式事务解决方案

分布式系统中,只要涉及到跨服务调用并且服务各自用自己的数据源,就会存在数据不一致问题.通常来说要保证强一致性代价太大,绝大部分场景也不需要,根据BASE法则,我们保证最终一致性就好了,下面设计的方案就是一个保证最终一致性的方案.架构及原理 实现最终一致性本质上是通过重试确保的,因此业务一定要保证逻辑幂等性,之所以选择 redis 和 mq 是出于性能考虑。正常通知A1->A2->A3-...

2018-06-02 18:35:36 527

原创 关于Java泛型你应该知道的二三事

Java编程中无处不在的泛型!既然避不开,那最好多了解点。泛型是什么?“泛型” 这个术语的意思是 “使用许多许多的类型”使用泛型的好处?1、写出更通用的代码2、写出更安全的代码3、写出更简洁的代码泛型接口/类泛型方法使用边界实现具体方法调用协变与逆变协变逆变PECS原则java泛型的缺陷泛型代码内部无法获取获取泛型参数类型的实际类型想通过T来new出一个实例对象 、数组 和判断类型都是办不到的!擦...

2018-05-11 23:22:41 405

原创 java 多环境配置的两种实现

使用maven的filter<filters>    <filter>src/main/filters/filter-${env}.properties</filter>    </filters>    <resources>    <resource>    <directory>src/main/r

2018-03-29 09:39:20 3073

原创 特性开关之开关策略

特性开关有时只是简简单单的通过配置true or false来决定开或关,而有时要根据某种策略来决定开或关。对于开关策略,特性开关框架一般会提供不少默认的策略给我们用,但有时我们也会遇到框架没有提供而我们又想要的,这时则需要我们自定义。掌握特性开关框架默认提供的开关策略及如何自定义开关策略都很重要。下面我以FF4J这个框架为例,介绍它自带提供的策略及如何扩展实现自己的策略。FF4J默认提供的策略上...

2018-03-10 17:56:40 3162

原创 特性开关框架选型之FF4J vs Togglz

目前发现两个主要的开源的Java特性开关框架,togglz 和 ff4j。但是两个框架都优秀,都能达到开关切换等主要目的。选哪个?togglz vs ff4j比较项togglzff4j补充说明特性开关Togglz的开关需要定义在枚举中,ff4j不需要,通过一个字符串名就可以了特性分组togglz的分组是中看不中用,只是显示上的分组,而ff4j的分组可以以组的粒度进行开关Admin Consolet...

2018-03-10 17:50:03 5195 2

原创 特性开关应用场景调研

金丝雀发布XXX项目的金丝雀发布2017年下半年《XXX》项目新版本上线多次出现意料之外的问题,原因是测试环境环境和线上环境终究有差别,测试环境测试没问题,但并不能保证生产环境没问题。当时的解决方案是申请一台服务器,将其部署的跟生产环境一样,用相同的配置中心,相同的数据库…..,然后在路由层,针对内部一个特定的域名做映射,这样达到只有我们内部可以可以对其访问,这样测试先在这个环境的测试,无问题再发...

2018-03-10 17:35:26 1312

原创 特性开关之策略模式

响应领导号召,我开始研究特性开关。发现在实现特性开关的方式上大有文章。使用不当会引入一些问题,而使用得到则可大大减少问题。实现特性切换很简单,使用if…else方式实现特性切换很简单嘛!就if….else …嘛,比如下面这个真的就这么简单吗?if…else…方式存在的问题其实真的就这么简单,使用if..else就实现了特性切换。但是if..else…这种方式会带来两个问题。容易造成逻辑混淆,降低可...

2018-03-09 18:05:08 1141 1

原创 Mycat总结

mycat简介基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到MYCAT的基因中,使得MYCAT在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。MYCAT背后有一支强大的技术团队,其参与者都是5年以上资深软件工程

2017-09-29 23:02:15 1625

原创 IDEA屏蔽不合理的提示警告

IDEA的提示警告通常会有不错的建议,但也有几处坑爹的,一个是public 类和方法常警告要改成包级私有的,但你的确需要public。 还有一个是你对方法做了单元测试,调用时传入了一个常量,然后IDEA就会警告提示你干掉这个参数,直接用常量,这明显不对。解决的办法是修改IDEA的检查配置 ,如下提示public方法转成包私有方法提示参数总是某个常量 ...

2017-06-15 22:49:50 28548 3

原创 CPU 100% 问题定位

1.先用top定位最耗cpu的java进程 例如: 124302.然后用top -p 12430 -H 定位到最耗cpu的线程 的ID 例如:124833.把第二步定位的线程ID ,转成16进制,printf "%x\n" 12483  得到 :30c34.从jstack 输出的线程快照中找到线程的对堆栈信息  jstack 12430 |grep 30c3 -A

2017-04-12 11:57:40 1449

原创 python mysql CRUD

#coding:utf-8import MySQLdbimport json#连接conn= MySQLdb.connect( host='localhost', port = 3306, user='root', passwd='', db ='test' )cur=conn.cursor(

2017-02-17 14:52:38 612

原创 python自动将数据库表结构转换成markdown文档

背景需要一份数据库表的字典,方便查看,而表有100多张,手动写就太悲剧了,于是我写了一段脚本将所有表自动转换成一个mardown文档效果图#代码#coding:utf-8import osimport refor parent,dirs,files in os.walk("D:\Documents\dumps\Dump20170210") : for file in files :

2017-02-11 00:21:10 4815

原创 为知笔记MarkDown使用总结.md

[TOC]#####MarkDown用法######目录在文档第一行使用>[TOC]######标题1. 一级标题#2. 二级标题##3. 三级标题###4. 四级标题####5. 五级标题#####6. 六级标题############列表1. 有序列表1. 有序列表1. 有序列表

2017-02-09 15:13:15 6763

原创 Python 遍历目录 按类型大小过滤文件 删除空目录

#coding:utf-8import osConst_Image_Format = [".jpg",".jpeg",".bmp",".png"]for parent,dirs,files in os.walk("D:\grab") : for file in files : file=os.path.join(parent,file) size=os

2017-02-08 11:30:00 750

原创 关于Java中替换\的问题

title.replaceAll("\\\\", "")上面这句代码可以把反斜杠替换成空,问题在于为什么要写成 \\\\,为什么不是\  或  \\ 原理1:replaceAll的第一个参数是正则表达式,正则里\是一个转义符号,要表示\本身需要在加一个\,所以到了这步就需要两个斜杠原理2:java中\也是一个转义符要表示\ 也要多加一个反一些,所以 到了这步就需要4个反

2017-01-20 18:59:46 1807

原创 Java实现分段视频合并

原理很简单就是把多个视频文件的内容按顺序写到一个视频文件中代码如下:public static void union(String dirPath, String toFilePath) { File dir = new File(dirPath); if (!dir.exists()) return; File videoPartArr[]

2017-01-20 15:49:55 10357 2

原创 Java抓取网页上的unicode 数据 "\u5751\u7239\u7889\u5821" 怎么变成中文

背景冲突需要抓取视频的标题,发现接口返回的是unicode ,如 "\u5751\u7239\u7889\u5821",而我需要的是中文解决方法:String g1 = matcher.group(1);String title = URLDecoder.decode(StringEscapeUtils.unescapeJava(g1), "UTF-8")

2017-01-11 16:48:28 1229

原创 windows 下 mysql 乱码

背景冲突将项目和数据库从macos上迁移到windows 上,发现查询功能有问题,又发现插入的数据变成乱码,便知都是由于数据库编码问题导致的解决方法将数据库编码改成utf-8, 找到 my-default.ini 文件,如我电脑上的地址 D:\mysql-5.7.16-winx64\my-default.ini,在  [mysqld] 那行下方的某个为止加入character_

2017-01-07 13:30:17 209

原创 mybatis-config.xml

xml version="1.0" encoding="UTF-8" ?>configuration PUBLIC "-//mapper.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> name="mapUnderscoreToCamelCase" valu

2017-01-07 09:26:03 236

原创 logback.xml

xml version="1.0" encoding="UTF-8" ?> name="stdout" class="ch.qos.logback.core.ConsoleAppender"> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

2017-01-07 09:22:12 227

原创 正则特殊字符

\ 转义符^ 配置开始位置[^xyz]在这里^表示非的意思$匹配结尾的位置* 匹配0次或多次等同于{0,n}+匹配1次或多次等同于{1,n}?匹配0次或多次等同于{0,1}. 表示任意字符\.表示点号本身 java中\\.表示点号本身在字符组内部,[.]也只能匹配点号本身{n}匹配前面一个字

2016-12-30 16:20:41 341

原创 shell编程笔记

计算echo `expr 123 + 456`  变量a=1b=2echo `expr $a + $b`双引号,单引号,反引号的区别a=1echo "$a"  输出 1echo '$a'    输出$a单引号里面是什么就输出什么,双引号里面可以使用变量echo `expr

2016-12-23 15:41:56 308

原创 jvm 查看异常代码

1、top           //查看占用cpu最高的PID2、ps -mp $PID -o THREAD,tid,time | sort -rn    //获取排前面的线程TID3、printf "%x\n" $TID                 //转为16进制,得到$data4、jstack 11209 |grep 2d5c

2016-12-23 15:33:41 607

原创 mybatis生成动态sql的常用标签

用mybatis 一个很爽的地方就是可以实现动态sql,构建动态sql我们需要了解一些标签1. 判断2 添加 where,如果where 后面紧跟“AND”  或者 “OR” 则 剔除掉3. 添加set,如果有多余的逗号则剔除掉4. 更灵活的去除多余内容,可以实现 where 和 set的 效果5. 选择,类似于java的switch6. 遍历

2016-09-21 17:19:38 950

原创 iftop笔记

安装Debian/Ubuntu系统为“apt-get install iftop”CentOS系统为“yum install iftop -y”命令iftop :打开iftopq : 退出iftop 界面说明:"",表示的是流量的方向"TX":从网卡发出的流量 "RX":网卡接收流量 "cum":iftop开始运行到

2016-08-12 14:22:45 589

原创 nginx 笔记

检查配置/home/nginx/sbin/nginx -t -c /home/nginx/conf/nginx.conf启动/home/nginx/sbin/nginx重启/home/nginx/sbin/nginx -s reload关闭ps -ef | grep nginxkill -9 nginx设置相应头支持跨域和带c

2016-08-11 17:33:02 327

原创 UnsatisfiedLinkError问题

记录一个UnsatisfiedLinkError问题现象:java 调用一个so文件的native方法 出现UnsatisfiedLinkError错误原因:so里的文件头的命名空间和java里触发调用的那个类的命名空间不一样答案:将那个类的命名空间改成和so里文件头命名空间一样

2016-08-10 18:47:21 3063

原创 H5 FormData中文乱码问题

1.问题今天和前端H5联调,遇上了中文乱码问题。2.分析过程服务端已经用了过滤器统一转码为utf-8,于是怀疑是H5 用 ajax 提交 formdata有问题,网上查都是要 设置content-type 为utf-8,但是 H5那边 只要设置content-type就不能跨域,由于时间问题,最后用了一个很笨的方法解决3.解决办法(1).H5那边 将参数 e

2016-08-04 16:26:30 8255

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除