
java
文章平均质量分 54
杰杰椒
教是学的最好方法
展开
-
message:Failed to read body.
apache http请求报错:Failed to read body解决办法原创 2021-12-28 09:34:28 · 411 阅读 · 0 评论 -
代码逆向生成表
逆向工程自动生成表-ACTable1.引入组件2. 配置组件2.1 配置mybatis2.2 配置启动属性启动类型追加包扫描3.模型加表注解4.启动完成在一些小型项目中或者新项目中,例如一些外包项目,可以通过代码注解配置,在项目启动时自动生成或更新表结构。现已经已有开源组件实现了这个目标。ACTable:官网地址。下面介绍如何引入到SpringBoot+MybatisPlus项目中。1.引入组件maven配置: <!--自动生成表--> <depend原创 2021-10-08 14:51:12 · 809 阅读 · 0 评论 -
类加载的双亲委派机制笔记
程序启动时,JVM需要将.class文件加载到内存中,形成class对象。根据需要加载的类的类型划分为三个加载器去实现加载,分别是:根类加载器(加载基础类,此类不可覆盖)扩展类加载器(加载基础类的扩展类,此类需要控制覆盖)系统类加载器(加载自己编写的类,爱怎么写怎么写)类文件加载到内存形成class对象是由findClass()方法实现的。而loadClass方法采用的所谓双亲委派模式,说白了是向上传递加载任务。...原创 2021-03-05 14:02:29 · 104 阅读 · 0 评论 -
ReenterLock源码解析
ReenterLock源码解析锁的基本思想锁的目的锁的实现思路ReentreLock实现1.state作为锁;2.当state=1时表示获得锁,=0表示锁空闲尝试获取锁的方式有两种:CAS,排队。3.双向链表的队列存储需要唤醒的线程ReenterLock的内存分配1.初始化2.队列维护空间3.队列初始化4.入队来看源码lock()tryAcquire/尝试获得锁addWaiter/添加队列成员acquireQueued/入队后再尝试获取锁unlock()锁的基本思想锁的目的要让同一时间只能有一个线程占原创 2021-03-03 16:55:59 · 876 阅读 · 0 评论 -
简谈Synchronized重量级锁底层原理
每个对象都有一个monitor,monitor相当于一把锁,保证同一时间只有一个线程能够进入临界区,即线程同步。上锁步骤大致如下:代码层javasynchronized void test(){}synchronized(o){ … }字节码ACC_SYNCHRONIZEDmonitorenter … monitorexit当有多个线程抢用monitor时,会进入_EnterList队列;_EnterList队列中的线程获得monitor时,owner指向原创 2021-03-02 12:44:04 · 295 阅读 · 0 评论 -
java的join方法
join方法作用:将指定线程加入到当前线程中。示例:将thread线程加入到main线程中:运行结果是:先等thread执行完,main再执行。但有一个问题,跟踪进入thread的join方法时发现,join方法内部是wait实现,按照语义应该是thread去wait,为何实际运行起来是main被阻塞了?public class TestThreadMethod { public static void main(String[] args) throws InterruptedExcept原创 2021-03-01 22:32:38 · 559 阅读 · 1 评论 -
Spring cloud ribbon配置负载均衡
本章先介绍ribbon实现概览,ribbon均衡策略,之后再介绍如何在配置文件里指定某个负载均衡。一、ribbon实现概览通过restTemplete请求一个服务service-A,在没使用ribbon之前,需要uri指定服务器地址,如http://localhost:8801/getUser。使用ribbon之后,服务器名代替地址进行访问,如http://service-A/getUser。...原创 2019-03-31 23:14:58 · 495 阅读 · 0 评论 -
SpringBoot外部配置优先级
外部文件的配置:a=123b=567application.yml中有:a=000c=888整合之后的配置信息是:a=123b=567c=888理念:为了在外部能控制配置内容Spring 官方指南原创 2019-04-01 17:17:19 · 418 阅读 · 0 评论 -
Load balancer does not have available server for client在Zuul中报错的解决办法
问题:Spring Cloud 的路由Zuul,在访问对应的路由时,uri返回500错误,并且检查服务器报错:解决办法:pom文件中的引用"spring-cloud-netflix-eureka-client"改为starter的 “spring-cloud-starter-netflix-eureka-client”解决思路:看提示错误堆栈发生在netfix client进行loa...原创 2019-03-28 17:03:50 · 12739 阅读 · 8 评论 -
多线程之读写锁
之前没真正使用读写锁,看到别人对读写锁的解释总感觉一头雾水。今天亲自敲代码实验之后,才明了,原来如此。网上没有一篇文章是能描述出自己理解的样子,所以将自己的思路记下来。先提出疑问,边自答边找思路,有了思路,再回头去运行一下代码,就清晰明了了。如果你急着想要一句话概括读写锁,那我会告诉你:读锁是加在读方法里的,是为了方便线程在运行写方法的时候阻止其他线程执行这个读方法,而没有写操作时读锁被忽略。...原创 2019-05-09 19:09:50 · 1301 阅读 · 0 评论 -
多线程同步异步-复习
一个线程对象,被启动一次就创建了一个新线程。每个线程的共有资源是此线程对象持有的对象,如下图的thread-a/thread-b/thread-c调用single对象的方法,即持有single对象资源,这是共有的。每个线程有自己的方法栈,各自执行,就是异步,需要协同执行就是同步。对对象加锁在被持有对象(共享对象)中定义同步语句,如single对象,而不是在线程对象中定义。除非线程对象中有...原创 2019-06-05 14:05:03 · 797 阅读 · 0 评论 -
多线程协作-复习
多线程的协作,只会出现在同步过程中。1.wait/notify线程靠对象监视器来同步协作,所以是这样实现的:监视对象obj作为锁,有wait和notify的监视方法。线程使用obj.wait() / obj.notify()来互相通知协作。wait()可以设置等待时间,不设置的话只有等待通知才会进入运行状态。notifyAll()notify()notify通知了之后,要等...原创 2019-06-05 14:49:45 · 248 阅读 · 0 评论 -
Spring Cloud笔记-Eureka
1.Eureka解决的问题:实现服务高可用2.Eureka实现原理:(1)服务注册发现服务实例向注册中心注册(推送元数据),并主动定时发送心跳(lease-renuwal-interval-in-seconds=30)(2)消费者获取服务消费者实例向注册中心获取服务实例清单,并主动定时获取清单(registry-fetch-interval-seconds=30)3.服务...原创 2019-06-08 22:32:08 · 154 阅读 · 0 评论 -
查看Zuul的路由映射信息
背景:在使用zuul进行路由配置时,经常会添加或修改路由。通过zuul的两个智能端点routes、filters可以对路由和过滤信息进行查看,还可以更新路由。下面我们一起来看一下如何使用。分析:实现智能端点,需要使用Spring boot 下的actuator,zuul已默认集成starter-actuator,可查看依赖包,如下图所示。实现:actuator默认只暴露health,i...原创 2019-03-29 18:23:01 · 2759 阅读 · 0 评论 -
添加module后,父级pom被覆盖,结构目录异常
奇怪了,为什么添加模块,是这个样子的然后父级的pom文件被替换掉了。观察了一下,发现正常的添加弹窗应该有如下的提示:猜测应该是子级模块的pom对父级模块没有写正确。...原创 2019-03-25 16:18:40 · 648 阅读 · 0 评论 -
Spring-boot-Mybatis-Starter
简介spring boot mybatis starter是mybatis在spring boot的嵌入。 入门spring boot mybatis starter原创 2017-12-05 16:36:03 · 1726 阅读 · 0 评论 -
入门java必备技巧-Maven
1.想要执行你的java程序,必须打包成jar/war包,一般使用Maven完成。Maven生命周期,基本过程:clean(删除生成文件)、compile(编译成.class文件)、install(生成jar包)、deploy(部署)mvn clean install -Dmaven.test.skip=true仓库镜像配置:将Maven安装路径下的setting.xml文件拷贝到....原创 2018-10-24 15:24:22 · 177 阅读 · 0 评论 -
动态规划-线性模型
动态规划可以用一句话概括:动态规划是在解决多阶决策的过程中动态地选择最优决策的方法最终目的:找出最优解问题特征:1.问题范围可以缩小到多个问题单元,对应多种决策2.这多个决策动态选择组合可以充分解决整个问题解决问题三要素:1最优子决策2边界值3状态抉择公式线性模型例子:小朋友过桥步骤:1.找出边界:最后剩下两个小朋友、最后剩下1个小朋友2.找出边界对应最优子决策:...原创 2018-11-19 12:02:39 · 1702 阅读 · 0 评论 -
图示ArrayList、LinkList、Map、Vector的区别
arraylist优点:可自动增长,添加删除数据不需要考虑数组长度。new arraylist() capacity=0add() capacity=10 (10为默认容器长度,每次容器满时会递增5(10/2))arraylist常用方法:size,add,remove,get,indexOf,contains...原创 2018-11-28 10:46:25 · 259 阅读 · 0 评论 -
自定义Exception
自定义的Exception,只需要继承Exception或者Throwable。然后在构造函数中定义报错内容就可以了。以下是具体的例子:1.定义Exception类:public class TestException extends Exception { public TestException(String errMsg){ super("要报错了:"+errMs...原创 2019-01-15 11:58:17 · 313 阅读 · 0 评论 -
Proxy代理模式
Proxy代理模式分为静态代理和动态代理。代理顾名思义就是替代,类替代另一类去做一件事。那么一件事就是两个类都会做的,所以这一件事即被定义成接口,而另一个类需要在做这件事时有额外的作为,不然这个类就没有存在意义了。一般Proxy静态类是用来扩展现有系统的,比如售票系统原代码中已经有了一个火车票售票员类TicketSaler,这个售票员只能在卖火车站窗口卖票。现在增加售票代理点,代售售票员Pro...原创 2019-03-04 22:26:10 · 308 阅读 · 0 评论 -
一表看清JavaEE与Java SE的区别
Java生态框架如下表所示:JavaJava LanguageJava PlatformJVMJDKJava EE Java MEJavaFXJava SEJava技术=Java语言+java平台Java平台=JVM+JDKJava SE=Java平台根基Java EE,JavaSE,JavaFX 是Java SE的扩展官网原文:oricle...原创 2019-03-01 16:29:10 · 1687 阅读 · 0 评论 -
公交车里看GC机制
GC机制非常有意思,它让我联想到生活中的一些空间占用自动分配的现象。比如公交车乘客乘坐的分布现象。原创 2019-02-21 09:47:11 · 1881 阅读 · 1 评论 -
MapStruct解绑DTO与DO的映射赋值
MapStruct是一个类型安全的映射处理工具,能把已定义的类,映射到另一个类。解耦了对象之间的依赖关系。一、问题场景再现一般我们写业务时,都要处理DTO与DO的转换。假设要添加一个Man数据,将客户端传入的DTO转成DO,笨拙的做法是new一个DO将Man所有的属性赋值一遍,然后再用MyBatis的DAO插入到数据库。如下代码所示:public class InsertRequst{//M...原创 2019-03-04 15:46:17 · 824 阅读 · 0 评论 -
java循环和递归干货
一、问题描述循环和递归算法之间可以替换实现,但是他们之间有什么差别呢,时间复杂度,空间复杂度是多少?我将通过java的栈追踪来进行探究。二、实验算出1到5的二次方的累计值,分别写一个循环体和一个test递归方法。代码如下:输出结果分别如下图2,图3所示。通过分析栈的出栈入栈过程,循环的的调用的栈只压入第10行(也就是for语句所在的行号)代码的指令;而递归则总共开辟了5个栈存放test...原创 2019-03-07 15:59:20 · 596 阅读 · 0 评论 -
Spring Cloud Eureka注册不上?
我遇到的注册不上分2种情况:1.注册报错:Request execution error: java.net.ConnectException: Connection refused: connectThere was a problem with the instance info replicator:Cannot execute request on any known ser...原创 2019-03-15 18:01:29 · 7692 阅读 · 1 评论 -
单元测试报错Unable to find a @SpringBootConfiguration
单元测试时报错:java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=…) with your test原因:单元测试项目的包路径和Springboot项目路径不匹配...原创 2019-03-20 17:37:16 · 646 阅读 · 0 评论 -
SpringCloud报错或者出现奇奇怪怪的问题-新手必会
Springcloud搭建时,如果maven找不到组件的版本,或者运行时没跟预期的一样,很有可能是版本问题由于spring cloud兴起不久,还在持续更新使用,有很多版本是不稳定的。不明真相的小白随便就会踩空。那建议大家还是要去官网上看准版本号。1.带GA(generally avalible)的是稳定版。2.SpringCloud依赖Spring Boot,也有对应的版本,版本不对应就...原创 2019-03-12 14:44:36 · 580 阅读 · 0 评论 -
Springboot中的test
spring-boot-starter-test整合了spring-test和junit,简化了test,好用极了。直接贴代码讲解吧 1.maven配置:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <!--原创 2017-12-06 11:12:54 · 6069 阅读 · 0 评论