java
铠甲蘑菇
这个作者很懒,什么都没留下…
展开
-
使用xxl的分片广播路由策略实现对账的分片计算
背景最近在做一个新的对账平台,旧的对账系统存在很多问题,其中一个问题就是性能问题,因此新的对账平台从设计之初就考虑了性能这一块,下面不会讲为什么选择做新的对账平台,也不会讲对账平台的其他设计,就说一下如何使用xxl的分片广播路由策略实现对账的分片计算。场景分析渠道对账,一天一个批次,我们对接了100个渠道,然后每个渠道一天有100W的订单数,这是假设,不过对账平台的对账数据量的确会不断增加,事实上我们的对账平台不仅仅只有渠道对账,还有内部业务对账,因此单机计算不行,很自然的想到分片计算,就是我们原创 2021-02-14 18:36:16 · 1431 阅读 · 1 评论 -
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 · 10406 阅读 · 2 评论 -
关于Java中替换\的问题
title.replaceAll("\\\\", "")上面这句代码可以把反斜杠替换成空,问题在于为什么要写成 \\\\,为什么不是\ 或 \\ 原理1:replaceAll的第一个参数是正则表达式,正则里\是一个转义符号,要表示\本身需要在加一个\,所以到了这步就需要两个斜杠原理2:java中\也是一个转义符要表示\ 也要多加一个反一些,所以 到了这步就需要4个反原创 2017-01-20 18:59:46 · 1816 阅读 · 0 评论 -
IDEA屏蔽不合理的提示警告
IDEA的提示警告通常会有不错的建议,但也有几处坑爹的,一个是public 类和方法常警告要改成包级私有的,但你的确需要public。 还有一个是你对方法做了单元测试,调用时传入了一个常量,然后IDEA就会警告提示你干掉这个参数,直接用常量,这明显不对。解决的办法是修改IDEA的检查配置 ,如下提示public方法转成包私有方法提示参数总是某个常量 ...原创 2017-06-15 22:49:50 · 28590 阅读 · 3 评论 -
特性开关之策略模式
响应领导号召,我开始研究特性开关。发现在实现特性开关的方式上大有文章。使用不当会引入一些问题,而使用得到则可大大减少问题。实现特性切换很简单,使用if…else方式实现特性切换很简单嘛!就if….else …嘛,比如下面这个真的就这么简单吗?if…else…方式存在的问题其实真的就这么简单,使用if..else就实现了特性切换。但是if..else…这种方式会带来两个问题。容易造成逻辑混淆,降低可...原创 2018-03-09 18:05:08 · 1152 阅读 · 1 评论 -
特性开关应用场景调研
金丝雀发布XXX项目的金丝雀发布2017年下半年《XXX》项目新版本上线多次出现意料之外的问题,原因是测试环境环境和线上环境终究有差别,测试环境测试没问题,但并不能保证生产环境没问题。当时的解决方案是申请一台服务器,将其部署的跟生产环境一样,用相同的配置中心,相同的数据库…..,然后在路由层,针对内部一个特定的域名做映射,这样达到只有我们内部可以可以对其访问,这样测试先在这个环境的测试,无问题再发...原创 2018-03-10 17:35:26 · 1318 阅读 · 0 评论 -
特性开关框架选型之FF4J vs Togglz
目前发现两个主要的开源的Java特性开关框架,togglz 和 ff4j。但是两个框架都优秀,都能达到开关切换等主要目的。选哪个?togglz vs ff4j比较项togglzff4j补充说明特性开关Togglz的开关需要定义在枚举中,ff4j不需要,通过一个字符串名就可以了特性分组togglz的分组是中看不中用,只是显示上的分组,而ff4j的分组可以以组的粒度进行开关Admin Consolet...原创 2018-03-10 17:50:03 · 5227 阅读 · 2 评论 -
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 · 3086 阅读 · 0 评论 -
关于Java泛型你应该知道的二三事
Java编程中无处不在的泛型!既然避不开,那最好多了解点。泛型是什么?“泛型” 这个术语的意思是 “使用许多许多的类型”使用泛型的好处?1、写出更通用的代码2、写出更安全的代码3、写出更简洁的代码泛型接口/类泛型方法使用边界实现具体方法调用协变与逆变协变逆变PECS原则java泛型的缺陷泛型代码内部无法获取获取泛型参数类型的实际类型想通过T来new出一个实例对象 、数组 和判断类型都是办不到的!擦...原创 2018-05-11 23:22:41 · 412 阅读 · 0 评论 -
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 · 1322 阅读 · 0 评论 -
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 · 610 阅读 · 0 评论 -
类加载机制
类的生命周期加载——验证——准备——解析——初始化——使用——卸载加载,验证,准备,初始化和卸载这5个阶段的顺序是确定的,类的加载过程按照这种顺序按部就班地开始,而解析阶段则不一定;有时候它可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定.类加载的五个阶段加载——验证——准备——解析——初始化加载阶段就是找到类的静态存储结构并加载到虚拟机原创 2016-02-26 23:28:31 · 355 阅读 · 0 评论 -
java如何避免死锁
Java程序无法从死锁中恢复过来如果一个程序中只有一把锁就不会死锁如果多把锁只会被一个线程获取那也会死锁死锁发生在多把锁被多条线程获取,形成等待环路,譬如说线程1 锁住A锁,等待线程2锁住的B锁,而线程2锁住了B锁等待线程1锁住的A锁,这种形成了锁获取等待环路的就会死锁.常见的死锁是锁顺序死锁,譬如A,B两把锁,线程1线获取A锁,再获取B锁,而线程2 线获取B锁原创 2016-02-19 11:19:09 · 1067 阅读 · 2 评论 -
Java多线程编程
为什么要用多线程编程现在很多机器动不动就是8核以上,未来朝着更多核的方向发展,单线程程序同一时间只能利用一个核,如果机器有10核的话,就浪费了90%!为了提高程序的可伸缩性,提高cpu的吞吐量我们需要多线程编程!多线程编程问题1.竞态条件2.可见性3.指令重排序4.死锁5.线程太多导致大量cpu时间浪费在线程切换上6.原创 2016-02-02 00:00:24 · 331 阅读 · 0 评论 -
JMM
JMM(Java Memory Model)是Java内存模型,JMM定义了程序中各个共享变量的访问规则,即在虚拟机中将变量存储到内存和从内存读取变量这样的底层细节.为什么要设计JMM屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果.为什么原创 2016-02-10 16:10:38 · 803 阅读 · 0 评论 -
Java并发编程之可见性问题
什么是可见性问题一个共享变量,A线程修改了,B线程随后读取到的还是旧值,这就是可见性问题.可见性问题导致线程读取到脏数据,是多线程编程的一个重要问题.后果可以很严重.例如: private static boolean myThreadStop; private static boolean mainStop; public static void main(Stri原创 2016-02-10 21:44:09 · 1625 阅读 · 1 评论 -
Java的四种引用
和C++不同,Java没有用指针,用的是引用,Java有4种引用分别是 强引用,软引用,弱引用,虚引用强引用强引用是代码中常用的引用,new出来的这类,只要强引用在,GC永远不会回收它例: Object obj =new Object();软引用用来描述一些还有用但并非必须的对象。软引用在系统原创 2016-02-13 23:35:09 · 418 阅读 · 0 评论 -
Java游戏服务端编程心得
1.共享数据的可见性问题可以不管,两个原因,一是可见性问题虽然虚拟机规范容许出现,但现实中极少出现;二是要保证不发生可见性问题,所有共享数据都要正确同步,这是一项艰巨的工作,另外还会带来 性能,伸缩性等问题。虽说不管,但是重要的数据还是要考虑下,还是要看具体业务,整体讲不用管,特别的地方注意下.2.尽量少用锁,除非那个地方一旦发生并发问题后果很严重 ,或者那个地方容易发生并发问原创 2016-02-25 22:47:22 · 2957 阅读 · 0 评论 -
jave获取视频时长
JAVE(Java音频视频编码器)是ffmpeg项目的Java包装程序。下载地址http://www.sauronsoftware.it/projects/jave/index.php下载完后将jar导入项目例:MultipartHttpServletRequest mhs = (MultipartHttpServletRequest) request;原创 2016-03-25 10:31:43 · 1510 阅读 · 0 评论 -
模版引擎之Velocity
Velocity是一种Java模版引擎技术一.使用场景1.mvc中用来做 view层,实现html代码与java逻辑代码分离2.用来开发各种生成工具,例如,根据数据库表,生成java实体类。二.语法所有关键字以 #号开头,所有变量以$开头1.变量定义:#set($name=原创 2016-07-14 15:23:32 · 435 阅读 · 0 评论 -
UnsatisfiedLinkError问题
记录一个UnsatisfiedLinkError问题现象:java 调用一个so文件的native方法 出现UnsatisfiedLinkError错误原因:so里的文件头的命名空间和java里触发调用的那个类的命名空间不一样答案:将那个类的命名空间改成和so里文件头命名空间一样原创 2016-08-10 18:47:21 · 3069 阅读 · 0 评论 -
Java类加载器
类加载器最初是为了满足Java Applet的需求而开发出来的即使两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。对虚拟机而言只有两种类加载器,一种是启动类加载器,使用C++实现,是虚拟机一部分;另一种是所有其他类加载器,由Java实现,独立于虚拟机外部,并且全部继承自抽象类ClassLoader.绝大部分Java程序都会使用3原创 2016-02-28 21:25:55 · 367 阅读 · 0 评论