java
文章平均质量分 56
xinqing5130
发现问题,记录一下
展开
-
application/x-www-form-urlencoded not support
今天在对接支付宝支付时,支付宝回调报错,显示org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported一、分析:这个问题的意思其实是,支付宝请求头和我们系统接口定义的请求头不一致导致的支付宝的请求头是application/x-www-form-urlencoded;char原创 2021-09-02 10:12:31 · 2928 阅读 · 0 评论 -
JAVA8 Optional教程
Optional的构造器是私有的1、无参构造器和带参的构造器都是私有,所有这个创建Optional对象类似单例模式 private Optional() { this.value = null; } /** * Constructs an instance with the value present. * * @param value the non-null value to be present * @thro原创 2021-07-22 16:12:36 · 2868 阅读 · 0 评论 -
用hutool将数字转简体中文和繁体中文,支持金额模式
最近项目中用到金额转大写的地方,正好项目引用了hutool包,发现里面正好有这个功能工具类:cn.hutool.core.convert.Convert#digitToChinese /** * 金额转为中文形式 * * @param n 数字 * @return 中文大写数字 * @since 3.2.3 */ public static String digitToChinese(Number n) { if(null == n) { return原创 2021-03-30 13:17:29 · 13346 阅读 · 5 评论 -
springboot事务没有回滚处理
最近在公司做下单和支付功能,需要写一个轮询第三方支付公司来查询订单支付状态。如果第三方返回支付成功,更新订单和支付数据,并做业务处理,然后将支付结果存redis。除了轮询支付,同时也提供回调接口。两个地方需要做幂等和并发控制。如果多个请求同时过来,需要控制同一时间只能处理一次支付,这个采用redis分布式锁实现。然后具体的接口里先查询状态,如果订单已经支付成功,则直接返回,不做任何处理。如何返回第三方返回支付失败或者未支付,也不做任何处理;只处理支付成功的结果。为保证事务一致性,将支付成功的原创 2021-02-07 18:04:38 · 3209 阅读 · 1 评论 -
java从html中提取图片地址链接
使用正则表达式:1、先提取src到最近一个双引号(也可以是单引号)2、提取http到最近一个图片格式注意,提取的时候会包括末尾匹配!方法: private List<String> getIMG(String detail) { String regex = "src=\"(.*?)\"";; List<String&...原创 2019-11-05 09:47:38 · 994 阅读 · 0 评论 -
多线程和信号量Semaphore
信号量Semaphore是一个并发工具类,用来控制可同时并发的线程数,其内部维护了一组虚拟许可,通过构造器指定许可的数量,每次线程执行操作时先通过acquire方法获得许可,执行完毕再通过release方法释放许可。如果无可用许可,那么acquire方法将一直阻塞,直到其它线程释放许可。比如说我们现在要处理一批订单,(如下单,取消,或者对账),订单量比较多,才用多线程处理先创...原创 2019-08-28 15:41:30 · 191 阅读 · 0 评论 -
ThreadLocal原理
ThreadLocal用于保存线程的共享变量变量的类型可以多样,通过泛型来指定ThreadLocal<Object>ThreadLocal有get、set、remove等函数,还有一个ThreadLocalMap内部类,这个是类是核心代码结构:看ThreadLocal源码,以set为例 public void set(T value) { ...原创 2019-04-22 16:50:09 · 136 阅读 · 0 评论 -
白话设计模式--构造者模式和原型模式
设计模式是什么?设计模式,顾名思义,就是软件设计过程中常见问题的解决方案,是经验的总结。设计模式类型:一、Builder,构造者模式。它是构造复杂对象的一种方式,尤其是在用相同的方式构造不同对象时,显得尤为有效。例如,一般在封装实体类时我们通常会用构造方法等形式往实体类传递参数,有可能对不同个数的参数进行初始化,你会定义出不同的构造方法,当然这都没问题,如果是当前实体类中的参数过于...原创 2018-10-17 16:16:16 · 301 阅读 · 0 评论 -
StringBuilder和StringBuffer源码解析
String对象是immutable不可变对象StringBuffer和StringBuilder是可变的,为什么,他们又是如何实现的?这里以StringBuilder为例,因为StringBuffer和StringBuilder大体是相同的,只是线程安全的差别以及由此产生的效率差别。StringBuilder继承了AbstractStringBuilder,并实现了Serializa...原创 2018-10-17 13:57:21 · 139 阅读 · 0 评论 -
java内存结构和垃圾回收机制
java和c语言不同开发c语言项目,需要程序员手动清理垃圾,而java有垃圾自动回收机制。它可以减少内存异常发生的几率。一、java的内存结构,可以分为五个区域:1、程序计数器,它保存的是程序当前执行的指令的地址,也就是说是用来指示 执行哪条指令的。在多线程的环境下,每个线程都要有自己的程序计数器,这样在线程切换的时候,每个线程能恢复到线程之前的执行位置。2、java栈,Java栈...原创 2018-10-15 20:23:54 · 165 阅读 · 0 评论 -
单例模式的几种实现方式
几种单例模式的实现方式:一、饿汉式public class Singleton{ private static final Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance()原创 2017-03-18 16:27:05 · 439 阅读 · 0 评论 -
java中按位运算
一、位与&:对应的二进制位进行与操作,两个都为1才为1,其他情况均为0测试: System.out.println(5&6); 打印:4 过程: 5表示成:0000 0000 0000 0000 0000 0000 0000 0101 6表示成:0000 0000 0000 0000 0000 0000 0000 0110 进行 & :0000 0000 0000原创 2017-03-18 17:54:41 · 700 阅读 · 0 评论 -
java 泛型Generics
为什么要使用Java 泛型,看下列代码:public class GenericTst { /** * @param args */ public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi"); list.add("corn"); list.add原创 2017-05-04 10:04:47 · 163 阅读 · 0 评论 -
Redis Windows 基础
windows:在redis录下下:1.启动服务 redis-server.exe redis.conf2.重新开辟窗口 redis-cli.exe -h 127.0.0.1 -p 6379 最基本命令: set key value get key基本数据类型: String SET name 'penn' GET name 'penn'原创 2017-05-09 16:01:40 · 178 阅读 · 0 评论 -
Java 枚举Enum
可以把枚举理解为静态变量的集合: public enum EnumTest { MON, TUE, WED, THU, FRI, SAT, SUN; }枚举可以迭代: public static void main(String[] args) { for(EnumTest et :EnumTest.values()){ System.out.println(et.toSt原创 2017-05-04 10:44:53 · 190 阅读 · 0 评论 -
既有接口,为何还要抽象类
接口是implements,一个类可以实现多个接口,并且要实现接口里的所有抽象方法。这样,接口就有了一个天生的短板,那就是当多个类实现同一个接口时,如果有共同的操作,那么怎么封装,接口里面是不能有实例方法的。比如说,有接口A ,类B1、类B2和类B3实现A,但是B1、B2和B3里面都有一个共同的操作,就比如是查询所有用户保存到一个map中,然后判断当前新增的用户是否存在map中,我们是不能把这个方原创 2017-06-02 14:47:13 · 3950 阅读 · 3 评论 -
java多线程之Executor
程序进程:运行的程序线程:进程中负责程序执行的执行单元,一个进程至少包括一个线程。单线程:一个进程一个线程多线程:一个进程多个线程 多线程是为了更好的利用CPU,提高程序运行的速度。实现方式:继承Thread类、实现Runnable接口public class Test { public static void main(String[] args) {...原创 2018-05-28 11:26:18 · 157 阅读 · 0 评论 -
java反射机制和Class类
面向对象思想一切皆对象类也是对象,Class类的对象,java.lang.ClassClass类的构造器是私有的,只有虚拟机可以直接创建它的对象,有三种创建方式:类.class、类对象.getClass、Class.forName静态加载:new,发生在编译的时候动态加载:Class.forName,发生在运行的时候通过Class的对象可以反过来得到类的对象...原创 2018-05-28 13:40:55 · 223 阅读 · 0 评论 -
test
1111原创 2015-12-24 17:36:45 · 140 阅读 · 0 评论