java
髅哥
这个作者很懒,什么都没留下…
展开
-
IP:PORT failed to respond HttpClient 请求服务端报错
此问题排查方向为连接本身的问题比如:客户端使用连接池技术访问服务端,连接池默认情况下使用了长连接来避免每次建立连接消耗,从而提升性能,但是服务端设置了keepalive timeout ,服务端在规定时间内会进行连接清理,当超过了timeout的时间,连接不在了,但是客户端不知道,在去连接时就会报错;使用PoolingHttpClientConnectionManager – > CloseableHttpClient 技术的解决方案:CloseableHttpClient httpClie原创 2021-12-13 09:37:50 · 681 阅读 · 0 评论 -
OKhttpclient 使用代理访问服务
很简单,直接上代码public static void main(String[] args) throws Exception { String url = "http://www.baidu.com";//需要访问的地址 //("127.0.0.1",18081) 代理地址与端口 OkHttpClient client = new Builder().proxy(new Proxy(Type.HTTP,new InetSocketAddress("127.0.0.1",1808原创 2021-12-09 11:00:21 · 2999 阅读 · 0 评论 -
springboot 2.5.6使用mvn打包时候报错:MojoExecutionException: Input length = 1
原因是2.5.6的版本 application.properties 不是UTF-8的编码,所以调整一下配置即可原创 2021-11-20 19:37:39 · 833 阅读 · 0 评论 -
java中的四种引用
1 强引用java中用的最多的就是强引用,即讲一个变量赋给引用变量,例如:String str = new String("asdf);2 软引用需要使用SoftReference类来实现,当发生内存不足的时候,会将这些内存对象回收,例如: String str = new String("assfff");SoftReference<String> softReference = new SoftReference<String>(str);3 弱引用需要使用原创 2021-09-30 16:28:27 · 82 阅读 · 0 评论 -
解决:Unresolved compilation problem: result cannot be resolved to a variable
有变量未定义,比如:public class Test(){ public String abc(){ try{ String result = ""; }catch(Exception e){ } return result; }}这样编译都会报错的但是如果java工程有错,此时是无法编译代码的,可能你拿到的classes都是未修改正确之前的...原创 2021-09-28 16:01:14 · 3189 阅读 · 0 评论 -
OnPropertyCondition实现
如果使用的是spring框架,OnPropertyCondition自定义实现@Conditional({OnPropertyCondition.class})@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})@Documentedpublic @interface ConditionalOnProperties { String havingValue() default ""; String[] keys()原创 2021-08-25 22:03:10 · 403 阅读 · 0 评论 -
Java String类的Split以竖线作为分隔符
问题Java中String类的Split方法,当用“|”进行分割时,发现并不能达到预期的效果。比如:分割字符串“122|asd”,得到的String{}结果是{1,2,2,|,a,s,d}原因是|是正则表达式中的字符,不能直接使用如果要实现以“|”作为分割符,那么应该输入“|”,而不是“|”。public class TestSplit { public static void main(String[] args) { String str = "122|asd";原创 2021-02-02 17:04:32 · 22233 阅读 · 0 评论 -
java读取文件之BufferedReader
首先说下BufferedReaderBufferedReader类从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行可以通过构造函数指定缓冲区大小也可以使用默认大小。对于大多数用途,默认值足够大由Reader构成的每个读取请求都会导致相应的读取请求由基础字符或字节流构成,建议通过BufferedReader包装Reader的实例类以提高效率如BufferedReader bufferReader= new BufferedReader(new FileReader(file));ja原创 2021-01-24 20:23:11 · 3403 阅读 · 0 评论 -
每日一算法:还原平衡二叉搜索树
给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST).import java.util.*;public class SortedArrayToBST { public TreeNode sortedArrayToBST (int[] num) { // write code here if(num.length == 0 ){ return null; } return sortedArrayTo原创 2020-09-21 21:22:45 · 83 阅读 · 0 评论 -
设计模式与简单应用之模板模式
模板模式又叫模板方法模式(Template Method Pattern),指定义一个算法的骨架,并允许为一个或者多个步骤提供实现。模板模式使得子类可以在不改变算法结果的情况下,重新定义算法的某些步骤,属于行为型设计模式。模板模式适用于以下场景:一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。spring 在*Template中用到了模板模式,但是spring并没有单纯的使用模板模式,而是使用了模板+callbac原创 2020-09-10 17:03:28 · 67 阅读 · 0 评论 -
每日一算法:验证IP地址是否正确
编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (":")分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的原创 2020-09-10 15:01:38 · 333 阅读 · 0 评论 -
每日一算法:二叉树从根到叶子节点和为指定数值的路径
给定一个二叉树和一个值\ sum sum,请找出所有的根节点到叶子节点的节点值之和等于\ sum sum 的路径,例如:给出如下的二叉树, sum=22返回[[5,4,11,2],[5,8,9]]public class pathSum { int sum = -1; public ArrayList<ArrayList<Integer>> pathSum (TreeNode root, int sum) { if(root == n原创 2020-09-09 16:38:42 · 432 阅读 · 0 评论 -
设计模式与简单应用之适配器模式
定义:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。下面参照springmvc实现controller来实现一个适配器模式;处理器Controller(HttpRequestHandler,Servlet,等等)的类型不同,有多重实现方式,那么调用方式就不是确定的,如果需要直接调用Controller方法,需要调用的时候就得不断是使用if else来进行判断是哪一种子类然后执行。那么如果后面要扩展Control原创 2020-09-08 13:43:02 · 95 阅读 · 0 评论 -
每日一算法:搜索二叉树错误节点定位
一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)public class findError { Integer res1 = null; Integer res2 = null; public int[] findError (TreeNode root) { find(root); return new int[]{res1,res2};原创 2020-09-08 09:26:48 · 264 阅读 · 0 评论 -
设计模式与简单应用之代理模式
概念代理模式:客户端直接使用的都是代理对象,不知道目标对象是谁,此时代理对象可以在客户端和目标对象之间起到中介的作用。1、代理对象完全包含目标对象,客户端使用的都是代理对象的方法,和目标对象没有直接关系;2、代理模式的职责:把不是目标对象该做的事情从目标对象上撇开——职责清晰;静态代理在程序运行前就已经存在代理类的字节码文件,代理对象和目标对象的关系在运行前就确定了动态代理动态代理类是在程序运行期间由JVM通过反射等机制动态的生成的,所以不存在代理类的字节码文件。代理对象和真实对象..原创 2020-09-07 15:01:51 · 90 阅读 · 0 评论 -
每日一算法:子数组最大乘积
给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。public class maxProduct{ public double maxProduct(double[] arr) { if(arr == null || arr.length <= 0){ return 0.0; }原创 2020-09-07 09:22:16 · 165 阅读 · 0 评论 -
设计模式与简单应用之策略模式
策略模式定义:策略模式属于行为性模式,它定义一系列的算法对象,使用时候可以使它们相互替换。实际应用场景:spring中bean的实例化,使用的是策略模式;下面请看类图:参考spring bean的方式做一个策略模式1 先定义一个接口public interface InstantiationStrategy { /** * 实例化bean的类 * @param bean * @return */ Object instantiate(String bean);}原创 2020-09-04 15:15:06 · 124 阅读 · 0 评论 -
每日一算法:矩阵中最大正方形面积
假设有一个由0和1组成的2维矩阵求:该矩阵中最大的由1组成的正方形的面积import java.util.*;public class solve { public int solve (char[][] matrix) { int len = 0; int x = matrix.length; int y = matrix[0].length; char[][] c = matrix; for(int i =原创 2020-09-04 11:42:59 · 578 阅读 · 0 评论 -
springboot 简单的整合 swagger
下面是swagger的官网https://swagger.io/1 配置pomio.springfoxspringfox-swagger2springfox−version</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox−swagger−ui</artifactId><versio原创 2020-09-03 16:36:15 · 217 阅读 · 0 评论 -
每日一算法:LFU缓存结构设计
一个缓存结构需要实现如下功能。set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值但是缓存结构中最多放K条记录,如果新的第K+1条记录要加入,就需要根据策略删掉一条记录,然后才能把新记录加入。这个策略为:在缓存结构的K条记录中,哪一个key从进入缓存结构的时刻开始,被调用set或者get的次数最少,就删掉这个key的记录;如果调用次数最少的key有多个,上次调用发生最早的key被删除这就是LFU缓存替换算法。实现这个结构,K作为参数原创 2020-09-03 09:44:38 · 314 阅读 · 0 评论 -
每日一算法:斐波那契数列
斐波那契数列:0,1,1,2,3,5,8…public class Fibonacci{ public int Fibonacci(int n) { if(n == 0){ return 0; } if(n == 1){ return 1; } return Fibonacci(n-1)+Fibonacci(n-2); }}原创 2020-09-02 14:32:27 · 181 阅读 · 0 评论 -
每日一算法:重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。public class ReConstructBinaryTree { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if(pre.length == 0 || in.length == 0){ return null; } TreeNo原创 2020-09-01 10:20:07 · 90 阅读 · 0 评论 -
每天一算法:用java实现数组的排列
有一组数字,求该组数字的所有排列比如:[1,2,3]的所有排列如下[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2], [3,2,1].import java.util.*;public class Arrange{ ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); public ArrayList&l原创 2020-08-31 13:31:19 · 143 阅读 · 0 评论 -
linux 安装JDK步骤
下载需要的jdk版本(我这里下载的是1.8)https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html将下载的文件上传到服务器(步骤略)使用命令解压(-C 后面的路径为你想防止的目录,如果不给,则默认是当前目录)tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/local/java配置环境变量:vi /etc/profileexport JAVA_HOME=/us原创 2020-08-31 09:58:22 · 90 阅读 · 0 评论 -
解决pom文件第一行unknown错误
1 先对项目点击右键 --> mavne -->update project…2 如果第一步不好使,则在pom中增加一行数据<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>然后在执行第一步就可以了原创 2020-08-26 13:41:22 · 219 阅读 · 0 评论 -
ThreadPoolExecutor使用LinkedBlockingQueue的问题
上图中,线程不自动扩展,也不报错,原因如下:以上的是execute方法的源码,从源码中可以看到,能新建非core线程的直接原因是队列workQueue添加元素失败,因此选择不同的BlockingQueue实现类会对新建线程产生很大的影响,常用的BlockingQueue:LinkedBlockingQueue:队列已满时会添加失败;SynchronousQueue:如果没有其他线程在等待获取元素时会添加失败;...原创 2020-06-04 15:57:40 · 1162 阅读 · 0 评论 -
jstat 详解
解释如下:S0C 是指:Survivor0区的分配空间S0U 是指:Survivor1区的已经使用的空间EC是指:Eden区所使用的空间EU是指:Eden区当前使用的空间OC是指:老年代分配的空间OU是指:老年代当前使用的空间PC是指:持久待分配的空间PU是指:持久待当前使用的空间YGC是指:年轻代发生的次数,这里是354次YGCT是指:年轻代发送的总时长,这里是54.272秒,因此每次年轻代发生GC,即平均每次stop-the-world的时长为54.272/354=0.153秒。.原创 2020-05-27 15:02:51 · 155 阅读 · 0 评论 -
springboot logback 整合配置
先写个logutilpublic class LogUtil {private final static Logger businessLogger = LoggerFactory.getLogger(“businessLogger”);public static void debug(String format, String …param) {businessLogger.debug(format, (Object[]) param);}public static void debug(St原创 2020-05-19 15:46:00 · 160 阅读 · 0 评论