- 博客(29)
- 收藏
- 关注
原创 Json类型转换异常
大概率是因为 JSON.parseObject(a,A.class) 中 A 为泛型类,该代码执行一次,会导致JSON内部参数变化,导致其他地方调用 JSON.parseObject(a,B.class) 失败,其中B是非泛型类。,可以先获取 JSONObject 对象,再用key获取数据转换。JSON.parseObject 不能转换泛型类。
2024-05-14 16:09:58
556
1
原创 http请求调用RestTemplate和@FeignClient使用心得
一、RestTemplate请求方法使用public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) throws RestClientException {
2020-10-21 11:53:36
1109
原创 Java中只有值传递说明
参考:http://hollischuang.gitee.io/tobetopjavaer/#/basics/object-oriented/why-pass-by-referenceJava对象的传递,是通过复制的方式把引用关系传递了,如果我们没有改引用关系,而是找到引用的地址,把里面的内容改了,是会对调用方有影响的,因为大家指向的是同一个共享对象。Java中的对象传递,如果是修改引用,是不会对原来的对象有任何影响的,但是如果直接修改共享对象的属性的值,是会对原来的对象有影响的。public
2020-06-23 19:56:47
169
原创 IDEA添加实时模板
在添加新的实时模板之后,你需要在对话框底部指定合适的上下文。你需要选择Java → Other,然后定义缩写、描述和实际的模板代码。特殊的变量$END$指定在使用模板之后的光标位置,所以你可以直接在这个位置上打字。提示:你应该开启"Add unambiguous imports on the fly"(自动添加明确的导入)选项,便于让IDEA自动添加java.util.stream.Collectors的导入语句。选项在Editor → General → Auto Import中。...
2020-06-23 14:09:36
585
原创 RabbitMQ多数据源使用
<!-- rabbitMQ多集群包引用 --><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> <version>2.0.3</version> &...
2020-05-22 11:33:57
861
原创 spring.factories文件作用
1、在spring-boot项目中pom文件里面添加的依赖中的bean需要注册到spring-boot项目的spring容器中由于@ComponentScan注解只能扫描spring-boot项目包内的bean并注册到spring容器中,因此需要@EnableAutoConfiguration注解来注册项目包外的bean。而spring.factories文件,可用来记录项目包外需要注册的bean类名。参考链接:https://blog.youkuaiyun.com/SkyeBeFreeman/article/
2020-05-16 12:27:11
3381
1
原创 分布式事务介绍及解决方案
一、数据库事务四大特性: ACID1、Atomic原子性事务的整个操作是一个整体, 不可分割,要么全部成功,要么全部失败2、Consistency一致性 指系统从一个正确的状态,迁移到另一个正确的状态3、Isolation隔离性保证事务不受其他并发执行的事务的影响。隔离性又分为四个级别:隔离级别介绍 https://www.cnblogs.com/EasyLive2006/p/7623863.html读未提交(read uncommitted)、读已提交(re...
2020-05-10 22:07:07
280
原创 springboot集成swagger定义属性时注意
一般用jackson序列化请求和响应。jackson2对pojo类型序列化的处理:Jackson2在初始化序列器时,对pojo类型对象会收集其属性信息,属性包括成员变量及方法,然后属性名称和处理过后的方法名称做为key保存到一个LinkedHashMap中。收集过程中会调用com.fasterxml.jackson.databind.util.BeanUtil中的legacyManglePropertyName方法用来处理方法名称,它会将get/set方法前缀,即get或set去掉,并将其后面的连续
2020-05-10 16:00:35
411
原创 fastjson处理包含转义字符的JSON
处理如下public static void main(String[] args) { HashMap<String, String> stringStringHashMap = new HashMap<>(); stringStringHashMap.put("a","b"); stringStringHashMap.put("c","d")...
2020-05-07 16:19:20
5322
1
原创 关于数据库跨库查询的理解
原来项目中没有用到跨库查询,但在Navicat中使用过,当时没有在意。最近同事问是否可以跨库查询,就想项目中配置了连接池,也指定了库名,当时以为只能查询当前库的,后来又想工具中可以用,代码中应该也可以用。一、如果是同一个数据库下的不同库1、直接查询表名前加上库名,如:库名.表名2、数据库账号一定要有访问两个数据库的权限跨库查询的原因分析:项目启动时建立数据库连接池是指定了用户名、密...
2020-05-01 16:47:13
2101
原创 mysql的事务
1.事务的特性ACID1)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。2)一致性(Consistency)一个事务中,事务前后数据的完整性必须保持一致。指系统从一个正确的状态,迁移到另一个正确的状态3)隔离性(Isolation)多个事务,事务的隔离性是指多个用户并发访问数据库时, 一个用户的事务不能被其它用户的事务所干扰...
2020-04-19 18:59:20
89
原创 C#与.Net
1、C#与.Net的关系谈到C#,不得不提.Net,Microsoft .NET Framework是微软的一套框架。从XP的1.0版,到Win7的3.5版,到了Win8和Win8.1已经4.5和4.5.1版本了,win10是4.6版本的。.NET Framework引入了"基于证据的安全"的概念。.NET Framework 的目的就是要让建立Web Services 以及因特网应用程...
2020-04-19 12:12:21
155
原创 IDEA报错Unable to import maven project
如果maven的版本比IDEA支持的高,会导致无法下载包,报错如下IDEA Unable to import maven project: See logs for details解决;安装低版本的maven即可
2020-04-19 12:05:15
215
原创 IDEA中新打开工程时设置
新打开工程即IDEA已装好,JDK、Git、Maven、快捷键等已设置好,然后打开新的Java工程时新打开project设置(每个新工程需要单独设置的地方)1、maven2、编码3、IDEA自动生成序列化IDFile -> Settings -> Editor -> Inspections -> 搜索Serialization issues ,...
2020-04-19 12:00:46
687
原创 IDEA读取工程同级目录下的配置文件时报错找不到文件解决(在eclipse中可以正常运行)
工程目录结构如下:报错找不配置文件文件读取方式如下图:解决如下图:
2020-04-19 11:49:15
1616
原创 IDEA基本设置及常用插件
代码区字体及大小设置控制台字体大小菜单区域字体大小设置编辑器快捷键设置代码自动提示第一个字母大小写必须匹配的解决Editor=>Code Completion里把Case sensitive completion设置为None就可以了idea设置main()方法快捷键:https://blog.youkuaiyun.com/weixin_398001...
2020-04-19 11:48:00
207
原创 NIO的buffer使用
Buffer 有三个属性: capacity position limit capacity是分配时确定的,是一个常量;position和limit的含义与 Buffer 处于读模式或写模式有关,写模式时,position是当前已写到的位置,limit是最大可写到的位置读模式时,position是当前已读到的位置,limit是最大可读到的位置limi...
2020-04-06 18:52:31
133
原创 项目自定义RPC服务实现主要流程
服务提供方服务端启动服务及处理逻辑1、启动加载配置2、初始化服务端的提供服务的对象3、启动netty服务端(添加编解码及服务端处理handler)4、将服务注册到zookeeper中,会创建服务节点,临时子节点,子节点放提供服务的地址5、服务端收到请求后,根据请求找到提供服务的对象。6、通过cglib动态代理调用对应的方法7、给客户端响应,并在完成后关闭连接1、spring启...
2020-04-06 18:50:39
390
原创 Jetty嵌入式开发及参数设置
Jetty嵌入式开发嵌入Jetty服务,通常执行下面的步骤: 1)创建一个服务 2)添加和配置服务器线程池 3)添加和配置处理器 4)添加和配置Servlet、Webapp到处理器 5)添加和配置连接器 6)启动服务 7)等待(join服务防止主线程退出)Jetty参数设置线...
2020-04-06 18:48:40
665
原创 深入浅出Java多线程-第十章 CAS与原子操作-学习
CAS的全称是:比较并交换(Compare And Swap)。在CAS中,有这样三个值:V:要更新的变量(var)E:预期值(expected)N:新值(new)比较并交换的过程如下:判断V是否等于E,如果等于,将V的值设置为N;如果不等,说明已经有其它线程更新了V,则当前线程放弃更新,什么都不做。所以这里的预期值E本质上指的是“旧值”。CAS实现原子操作的三大问题ABA问题:...
2020-04-05 22:36:06
102
原创 ThreadpoolExecutor任务调度执行过程
ThreadpoolExecutor任务调度执行过程:1.当线程池小于corePoolSize时,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。2.当线程池达到corePoolSize时,新提交任务将被放入workQueue中,等待线程池中任务调度执行3.当workQueue已满,且maximumPoolSize>corePoolSize时,新提交任务会创建新线...
2020-04-05 21:31:15
552
原创 分布式锁的实现
分布式服务需要一个全局锁来实现同一个模块多个服务之间的同步。就需要用到分布式锁。实现方式:数据库主键、redis、zookeeper1、数据库利用数据库主键唯一规则,在争抢锁的时候向DB中写一条记录,这条记录主要包含锁的id、当前占用锁的线程名、重入的次数和创建时间等,如果插入成功表示当前线程获取到了锁,如果插入失败那么证明锁被其他人占用,等待一会儿继续争抢,直到争抢到或者超时为止。...
2020-04-05 21:30:24
89
原创 多线程使用注意
1、永远不要在循环之外调用wait方法原因:尽管不满足被唤醒条件,但是由于其他线程调用notifyAll()方法会导致被阻塞线程意外唤醒,此时执行条件并不满足,他将破坏被锁保护的约定关系,导致约束时效,引起意想不到的结果。一般用while循环2、唤醒线程是应该用 notify()还是notifyAll()当你不知道究竟该调用哪个方法时,保守的做法是调用notifyAll()唤醒所有等...
2020-04-05 21:29:19
190
原创 java内存模型
为了控制线程之间的通信,(完成底层封装) 用来屏蔽掉各种硬件和操作系统之间的内存访问差异,以实现让Java程序在各平台下都能达到一致的内存访问效果。JMM目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节(这里变量指代的是实例字段、静态字段和构成数组对象的元素,但是不包括局部变量与方法参数,后者是线程私有的,不会被共享) 学习J...
2020-04-05 21:27:20
79
原创 深入浅出Java多线程-第五章 Java线程间的通信-学习
等待/通知机制等待/通知机制使用的是使用同一个对象锁,如果你两个线程使用的是不同的对象锁,那它们之间是不能用等待/通知机制通信的。锁与同步信号量管道使用管道多半与I/O流相关。当我们一个线程需要先另一个线程发送一个信息(比如字符串)或者文件等等时,就需要使用管道通信了。...
2020-04-05 17:50:59
107
原创 深入浅出Java多线程-第三章 Java线程的状态-学习
线程的start()方法是否可以多次调用?不可以,调用一次后线程状态就改变了,再次调用会抛异常。线程状态转换图
2020-04-05 17:32:55
176
原创 深入浅出Java多线程-第三章 线程组和线程优先级-学习
参考来源:书籍 深入浅出Java多线程http://concurrent.redspider.group/RedSpider.htmlhttps://redspider.gitbook.io/concurrent/一、线程组线程组是一个树状的结构,每个线程组下面可以有多个线程或者线程组。线程组可以起到统一控制线程的优先级和检查线程的权限的作用。二、线程的优先级数字越大优先级越...
2020-04-05 17:20:37
172
原创 深入浅出Java多线程-第二章 Java多线程入门类和接口-学习
参考来源:书籍 深入浅出Java多线程http://concurrent.redspider.group/RedSpider.htmlhttps://redspider.gitbook.io/concurrent/一、Thread类和Runnable接口Thread类是Runnable接口的一个实现类,封装了一些常用方法。start()和run()方法的区别调用start()方...
2020-04-05 17:07:15
152
原创 深入浅出Java多线程-第一章 进程与线程的基本概念-学习
参考来源:书籍 深入浅出Java多线程http://concurrent.redspider.group/RedSpider.htmlhttps://redspider.gitbook.io/concurrent/一、进程与线程进程是一个独立的运行环境,它可以被看作一个程序或者一个应用。是操作系统进⾏资源分配的基本单位。线程是在进程中执行的一个任务。是操作系统进⾏调度的基本单位,即...
2020-04-05 13:15:57
208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人