Java
java
wusd1256
我的博客:https://wushidong125.github.io/archives/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HTTP压测工具Wrk 介绍和使用
介绍wrk是一款简单的HTTP压测工具,托管在Github上,https://github.com/wg/wrk.wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等. 其实它是复用了 redis 的 ae 异步事件驱动框架. 确切的说 ae 事件驱动框架并不是 redis 发明的, 它来至于 Tcl的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而更多的被大家所熟知.原创 2020-05-12 15:30:28 · 1259 阅读 · 0 评论 -
异步执行一组任务等待所有任务执行完成的2种方式
private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 60, TimeUnit.SECONDS, new ArrayBlockingQueue<>(1000), new ThreadFactoryBuilder().setNameFormat("metrix-pool...原创 2020-04-18 21:53:58 · 1075 阅读 · 0 评论 -
Spring 声明式事务中常见的坑点
背景我们在业务代码中经常使用数据库的事务,及spring 声明式事务@Transcational, 但也经常遇到事务不生效的情况,总结起来主要是踩到下面的几个坑去了。一、配置不正确导致方法上的事务没生效,需要确认@Transctional注解标记的方法必须是public的,并且是通过spring注入的Bean进行调用的,不能在本方法中直接调用。二、异常处理不正确导致事务虽然生效...原创 2020-03-23 10:47:57 · 2385 阅读 · 0 评论 -
springboot 中异步调用 使用@Async
一、背景对于一些的耗时的且与处理结果业务不是紧密关联的,我们采用异步调用的方式处理。一般我们会手动创建一个线程池,来执行这个耗时的异步任务。其实spring 已经提供了一个注解来帮我们干了这件事了二、使用方式使用方式就是很简单了1、在启动类中加入@EnableAsync 是异步调用 @Asyncz注解生效2、在需要异步执行的方法上加上@Async,也可以在类上面加,表示该类中的...原创 2020-03-14 22:07:40 · 288 阅读 · 0 评论 -
去if-else化 (二),利用充血枚举类型
充血枚举类型——Rich Enum Type 模式的优势: 不难发现,这其实就是 enum 枚举类型和 Strategy Pattern 策略模式的巧妙结合运用; 当需要增加新的通知方式时,只需在枚举类 NOTIFY_TYPE 增加一个值,同时在策略接口 NotifyMechanismInterface 中增加一个 by 方法返回对应的策略实现; ...原创 2020-02-19 15:32:37 · 1143 阅读 · 0 评论 -
重试工具库二:AOP 结合 guava retryer 实现接口自动重试
上一篇文章中介绍了Retryer 强大的工具库,以及创建方式。重试工具库一: Guava-Retrying。本篇文章我们通过面向切面结合guava的这个强大的工具类,来实现只需要添加一行注解即可的自动重试机制。注解:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface R...原创 2020-02-09 22:47:42 · 795 阅读 · 2 评论 -
重试工具库一: Guava-Retrying
在我们的开发中,api接口调用异常是经常会遇到的,任何接口都会有不同概率的异常情况,对于可以重入的接口,为了避免偶发性异常造成的服务的不可用,重试机制就非常有必要了.Guava-Retryiny 是一个非常灵活的重试组件,包含多种重试策略,扩展很方便。一、maven依赖<dependency> <groupId>com.github.rholder</g...原创 2020-02-09 22:39:14 · 1785 阅读 · 0 评论 -
HTTP 连接池的使用
一、HTTP 的长短连接问题HTTP1.0 当时用的还是短连接的方式,就是每次的请求都要建立一次TCP连接,创建TCP连接和关闭TCP的连接都是耗时的过程。HTTP1.1 则对HTTP1.0做了很大的改进,默认使用的是长连接的方式。减少了建立连接和关闭连接的消耗。二、httpClient 的使用后端发送HTTP请求,一般使用的是apache里面的这个jar包 <dep...原创 2020-02-01 11:35:56 · 1257 阅读 · 0 评论 -
Java7 ConcurrentHashMap 原理及源码分析
ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,所以要复杂一些。整个 ConcurrentHashMap 由一个个 Segment 组成,Segment 代表”部分“或”一段“的意思,所以很多地方都会将其描述为分段锁。注意,行文中,我很多地方用了“槽”来代表一个 segment。简单理解就是,ConcurrentHashMap 是一个 Segment...转载 2018-03-18 20:45:52 · 273 阅读 · 0 评论 -
HashMap实现原理及源码分析
最近在看HashMap源码,发现一篇讲hashMap原理的文章,讲的很透彻,记录下来。原文地址:https://www.cnblogs.com/chengxiao/p/6059914.html哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现转载 2018-03-11 13:31:50 · 227 阅读 · 0 评论 -
深入理解Java 泛型原理和使用场景
泛型是什么泛型即参数化类型,就是将原来的具体的类型参数化。就像方法变量参数,类型也定义成类型参数,在传入和调用的时候传入具体的类型。看看下面的例子,有没有什么问题? List arrayList = new ArrayList(); arrayList.add("hello"); arrayList.add(1); for (int i...原创 2019-12-21 23:03:06 · 691 阅读 · 0 评论 -
Java8 新特性LocalDate 线程安全的时间处理类
Java8 新特性中推出了日期处理类LocalDate,实在是太方便了,主要用到是下面的3个类。java.time.LocalDate ->只对年月日做出处理java.time.LocalTime ->只对时分秒纳秒做出处理java.time.LocalDateTime ->同时可以处理年月日和时分秒优点:除了使用起来更加简单和灵活,主要是传统的时期处理类Da...原创 2019-11-06 14:23:11 · 5001 阅读 · 0 评论 -
解决Maven 打包时的编译错误
一、背景最近有个项目需要提供一个HSF服务,服务接口写好,还要打一个客户端的依赖jar,这个通过aone 平台利用maven打的jar包,由于我自己的项目JDK版本和Java编译器版本都是1.8,所以没有问题,但是现在需要打一个jdk1.7版本的依赖包,报错如下:二、错误分析JAVA_HOME 的版本是1.7 ,但是编译器额版本是1.8,所以导致错误。三、解决方案升级JAV...原创 2019-05-27 21:54:36 · 2834 阅读 · 0 评论 -
jar 包依赖冲突排查和解决方案
1、何为依赖冲突Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也需要依赖C。但是A依赖的C的版本是1.0,B依赖的C的版本是2.0。这时候,Maven会将这1.0的C和2.0的C都下载到你的项目中,这样你的项目中就存在了不同版本的C,这时Mav...原创 2019-04-10 10:41:19 · 2703 阅读 · 0 评论 -
Java 8 流Stream 的基本使用
一、简介Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处...原创 2018-12-11 13:38:35 · 484 阅读 · 0 评论 -
java 常见面试题
1、HashMap的工作原理2、ConcurrentHashMap实现原理ConcurrentHashMap的同步是采用分段锁的形式,一个ConcurrentHashMap由多个segment组成,每一个segment都包含了一个HashEntry数组的hashtable, 每一个segment包含了对自己的hashtable的操作,比如get,put,replace等操作,这些操作发生的时候,对...原创 2017-11-19 19:31:52 · 578 阅读 · 0 评论 -
SSO 与 CAS 知识
不管是什么公司,只要产品数量大于一个,那么单点登录势必是绕不过去的一个问题。前置知识了解 SSO,最好具备以下知识。当然,如果不是特别熟,也不影响阅读。 cookie及session 浏览器同源策略及跨域 了解登录系统的构成 什么是 SSO 与 CAS?SSOSSO 是英文 Single Sign On 的缩写,翻译过来就是单点...原创 2017-12-07 13:09:36 · 2045 阅读 · 0 评论 -
字符串加密解密工具
在写代码中,经常会用到字符串的加密、解密,尤其是用户密码,不能直接出现在代码或者配置中,最好用加密方法进行加密,下面提供一个加密解密工具。package com.zheng.common.util;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.*;import javax原创 2017-09-27 13:10:22 · 3372 阅读 · 0 评论 -
java 中使用POST发起http请求
public static String sendPostPHP(String url,String jsonStr) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl =原创 2017-03-17 14:11:39 · 631 阅读 · 0 评论
分享