java进阶
酷鱼影子
我不是代码的生产者,我只是代码的搬运工
展开
-
接口重试和返回值处理通用编程模型
利用java8的Function函数实现接口重试和返回值处理场景:实际项目中,我们会经常调用第三方接口,而第三方接口一般会QPS限制,也就是每秒钟的请求次数限制。这样很容易导致服务因为请求过快而报错,为了避免这个问题,我们通常需要休眠一定时间,再进行重试。下面代码将演示用一行代码实现接口的重试和返回值处理。import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.shengye原创 2021-02-09 16:52:44 · 240 阅读 · 0 评论 -
Java编程GOTO语句妙用
GOTO语句的使用小语法,大妙用场景:当参数1执行失败,报出特定异常的时候,需要调整相应参数,再重新执行public class MainTest { public static void main(String[] args) throws Exception { int param = 1; boolean isFinish = false; looper: while (!isFinish) {原创 2021-02-09 15:08:25 · 216 阅读 · 0 评论 -
Java反射之注解的使用
Annotation(注解) 概述Annotation 其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。三个基本的 Annotation:@Override: 限定重写父类方法, 该注解只能用于方法@Deprecated: 用于表示某个程序元素(类, 方法等)已过时@Suppr原创 2015-05-12 22:33:17 · 722 阅读 · 0 评论 -
如何安全地存储密码?
使用 bcrypt用 bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt (重要的话就是要多多地重复几次)……为什么不用 {MD5、 SHA1、 SHA256、 SHA512、 SHA-3 等加密算法}?这些都是通用的hash函数,设计的初衷是为了尽可能快的计算大量数据的摘要。这意味着它们在保证数据完整性方面非转载 2015-06-27 17:51:55 · 625 阅读 · 0 评论 -
JVM性能参数调优实践,不会执行Full GC,网站无停滞
原文链接:http://bbs.csdn.net/topics/310110257JVM参数调优是个很头痛的问题,设置的不好,JVM不断执行Full GC,导致整个系统变得很慢,网站停滞时间能达10秒以上,这种情况如果没隔几分钟就来一次,自己都受不了。这种停滞在测试的时候看不出来,只有网站pv达到数十万/天的时候问题就暴露出来了。要想配置好JVM参数,需要对年轻代、年老代、救助空间和永转载 2016-02-20 16:45:19 · 1761 阅读 · 0 评论 -
Guava Collections使用介绍[超级强大]
功能列举可以说 Java Collections Framework 满足了我们大多数情况下使用集合的要求,但是当遇到一些特殊的情况我们的代码会比较冗长,比较容易出错。Guava Collections 可以帮助你的代码更简短精炼,更重要是它增强了代码的可读性。看看 Guava Collections 为我们做了哪些很酷的事情。Immutable Collections: 还在转载 2014-06-13 21:12:34 · 24546 阅读 · 1 评论 -
Java继承机制在实际中的应用
系统开发过程,最初只是实现基础功能,后面随着业务拓展,会增加了一些新功能,新功能和原来的功能有着一定相似的地方,但又有不同的逻辑,如果直接在原来的代码上修改,可能会影响原来的功能,重复写一套,代码的复用性和可维护性又很低。这个时候用java的继承机制来实现可以恰到好处,使得业务的升级和拓展非常方便,代码的复用性和可维护性也有很大的提高。如下面的示例1、BService继承了AService所有方法...原创 2018-04-12 12:22:56 · 1698 阅读 · 0 评论 -
too many open files(打开的文件过多)解决方法
一、产生原因too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。 引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通...转载 2018-04-23 14:25:06 · 12296 阅读 · 0 评论 -
Java多态机制在实际中的应用
在实际开发工作中,常常遇到一个功能有多种实现方式,比如支付方式,有分微信支付、京东支付、支付宝、银联等支付方式,不同支付方式的大概流程大抵相似,实现细节有所区别。这个时候就可以用到java的多态机制,先定义一个公共接口,接口定义支付流程的各个方法,具体的支付方式实现该接口的方法。在控制层,利用spring的注入获取支付类型和支付方式实现类的引用映射,根据请求需要的支付类型就可以调用对应支付方式的方...原创 2018-04-23 14:35:14 · 7184 阅读 · 7 评论 -
大型网站的灵魂——性能
前言 在前一篇随笔《大型网站系统架构的演化》中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我打算写一个系列,从理论到实践讲述大型网站的点滴,这也是一个共同学习的过程,希望自己能坚持下去。系列大概会分为两部分,理论和实践,理论部分尽量通俗易懂,也要讲一些细节。实践部分会抽取一转载 2015-03-03 10:13:07 · 609 阅读 · 0 评论 -
Jmock学习文档
JMock是帮助创建mock对象的工具,它基于Java开发,在Java测试与开发环境中有不可比拟的优势,更重要的是,它大大简化了虚拟对象的使用。本文中,通过一个简单的测试用例来说明JMock如何帮助我们实现这种孤立测试。 我们在测试某类时,由于它要与其他类发生联系,因此往往在测试此类的代码中也将与之联系的类也一起测试了。这种测试,将使被测试的类直接依赖于其他类,一旦其他类发生改变,被测试转载 2015-02-26 10:20:38 · 956 阅读 · 0 评论 -
2013-Quartz定时器使用
在项目中很多地方会用到定时器,列如:每天完善0点关闭服务或收集今天的运行数据进行统计。 Quartz定时器是一个简单、功能比较完善的定时器,它的强大之处它可以配置定时表达式,使定时时间点非常灵活,下面是我个人的使用案例:package cn.test;import static org.quartz.CronScheduleBuilder.cronSchedule;import原创 2014-01-21 16:12:28 · 1858 阅读 · 0 评论 -
HttpClient 学习整理
HttpClient 是我最近想研究的东西,以前想过的一些应用没能有很好的实现,发现这个开源项目之后就有点眉目了,令人头痛的cookie问题还是有办法解决滴。在网上整理了一些东西,写得很好,寄放在这里。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中转载 2013-12-04 17:10:45 · 717 阅读 · 0 评论 -
内存溢出之Tomcat内存配置
设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置三、实例,以下给出1G内存环境下java jvm 的参数设置参考:JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewS转载 2014-01-02 11:32:33 · 739 阅读 · 0 评论 -
jvm性能调优,垃圾回收器详细说明。
1:新生代串行收集器:(默认收集器) 算法:复制算法 -XX:+UseSerialGC 指定使用新生代串行收集器和老年代串行收集器 优点:效率高,久经考验 缺点:串行,如果回收对象过多,或者堆过大,停顿时间会过长。2:老年代串行收集器(cms收集器的备选) 算法:标记-压缩算法 -XX:+UseSerialGC:指转载 2014-02-28 17:31:22 · 913 阅读 · 0 评论 -
java快速序列化库FST
FST fast-serialization 是重新实现的 Java 快速对象序列化的开发包。序列化速度更快(2-10倍)、体积更小,而且兼容 JDK 原生的序列化。要求 JDK 1.7 支持。Maven:1 2 de.ruedigermoeller3 fst4 1.365 示例代码:01 // ! reuse this Object,原创 2014-02-18 17:28:49 · 7796 阅读 · 0 评论 -
ConvertUtils.register注册转换器
当用到BeanUtils的populate、copyProperties方法或者getProperty,setProperty方法其实都会调用convert进行转换但Converter只支持一些基本的类型,甚至连java.util.Date类型也不支持。而且它比较笨的一个地方是当遇到不认识的类型时,居然会抛出异常来。这个时候就需要给类型注册转换器。比如:意思是所以需要转成Date类型的数据原创 2014-03-25 17:28:21 · 14293 阅读 · 1 评论 -
Java回调函数实例
以JDBC的回调函数操作为例:1、定义一个回调函数接口:zuo原创 2014-06-24 00:08:46 · 1084 阅读 · 0 评论 -
重构改善既有代码的设计--重构第一个案例
1、将长的代码变短,将每个功能抽出来2、将变量名规范化,取个容易看懂的名字3、面向对象的原则,函数使用了来自哪类的信息,就应该放到那个类中。4、查询函数方法:将涉及到该变量的代码抽出成一个函数,在需要调用改变量的地方调用该函数即可。函数取代临时变量,减少了冗长复杂的函数。5、运用多态取代相关的条件逻辑。/** * * @author Administrator */原创 2014-03-25 22:27:23 · 954 阅读 · 0 评论 -
Jodd 3.3
download url:http://jodd.org/download/index.htmlJodd 3.3发布了,该版本新增了一个Lagarto HTML解析器和Decora页面修饰器以及Jerry和一些小的改进Jodd是一个普通开源Java包。你可以把Jodd想象成Java的“瑞士军刀”,不仅小,锋利而且包含许多便利的功能。Jodd提供的功能有:1. 提供操作Java be转载 2013-11-15 09:48:37 · 874 阅读 · 0 评论