- 博客(75)
- 问答 (1)
- 收藏
- 关注
原创 feign 请求调用线程之间的信息丢失的问题
最近在工作中遇到了一个这样的问题,情景如下: 在微服务两个实例直接调用的时候会打印出一些日志但是发现这些日志的log_id变了,正常来说应该是保持一致的,实例A调用B的时候发现log_id是一致的,但是实例B调用A就不一致了,后来调试了一下发现问题出在断路器-Hystrix 的隔离策略上,原来A的隔离策略是信号量隔离(SEMAPHORE),B的隔离策略是线程池隔离(THREAD),并且默...
2019-11-15 15:49:49
1390
1
原创 关于mysql事务更新可读性问题
最近在工作中遇到了一个事务之间可读性的问题,业务场景是这样的: 用户创建了订单之后会在后台创建一个延时15分钟的任务,当15分钟到的时候会检测这个订单是否支付了,如果支付了那么就会取消这个延时任务,如果没有支付那么就取消这个订单,但是现在有用户反馈已经支付了但是订单还是取消了,于是就这个问题我到代码里找了一下,发现了这个可读性的问题。代码逻辑是这样的@Transactional(v...
2019-11-15 14:46:34
576
原创 深入理解Java虚拟机之垃圾收集器及相关参数整理
截止JDK1.8,主要的垃圾收集器如下所示:注1:浮动垃圾,当次回收无法清除的垃圾,产生于用户线程与GC线程并发执行名称 使用区域 缺点 优点 版本 算法 Serial 新生代 单线程收集,导致Stop the World 简单、高效,无线程交互开销 1.3.1前 复制 ParNew 新生代 导致Stop th...
2019-10-30 20:35:55
266
原创 spring boot 报错 disconnected from the target VM, address: '127.0.0.1:57071', transport: 'socket'
今天帮公司新来的同事启动项目的时候一直启动不起来,一直报错都是disconnected from the target VM, address: '127.0.0.1:57071', transport: 'socket',到网上查询了一些资料,发现基本说的都是这个包没有导入的问题但是因为大家用的都是一个项目,所以配置是一样的,并不存在配置上的问题,后续还查询到有可能是其他java线程的干扰,...
2019-10-08 14:48:34
27523
原创 关于'Content-Type': 'application/x-www-form-urlencoded'类型的POST url获取不到参数的问题
最近在项目中遇到了一个这样的问题,前端发送的请求是post类型的,content-type是'application/x-www-form-urlencoded'类型,在后端我加入了一个过滤器,但是在我已经对request封装完,可以对inputstream多次进行读取的情况下,后端Controller层的参数还是获取不到,获取参数的标签是@RequestParam,后来经过反复查询资料和调试,发...
2018-06-07 10:25:55
7585
2
原创 JSch远程执行脚本启动tomcat报错
之前项目当中有一个远程执行脚本的功能,突然这几天测试说不好用了,用远程脚本启动tomcat启动不起来但是直接在环境上跑是可以的,我看了一下发现是脚本有问题,在远程执行脚本的时候报了一个这样的错:/usr/local/tomcat/apache-tomcat-8.5.15/bin:/usr/local/tomcat/apache-tomcat-8.5.15/bin:+/usr/local/s...
2018-03-15 11:19:39
838
原创 使用JSch进行脚本上传操作需要注意的地方
之前做的项目中有一个远程执行脚本的需求,我之前使用的是直接用JSch远程执行命令来echo脚本内容,果然这几天出现了问题,问题是啥就不赘述了,最后决定使用jsch的sftp方式来进行脚本上传的操作,一开始遇到各种问题,先是session is down我去网上查了一会资料,发现这篇文章写得不错,有遇到同样问题的可以看一下CentOS下 配置 sftp,解决问题后又遇到了一个新的问题就...
2018-03-13 14:40:51
1384
2
原创 LintCode之56 两数之和
题目来源:两数之和题目描述:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。样例:给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].Java代码:public class Solution { /...
2018-02-26 23:08:24
247
原创 LintCode之53 翻转字符串
题目来源:翻转字符串题目描述: 给定一个字符串,逐个翻转字符串中的每个单词。样例:Java代码:public class Solution { /** * @param s : A string * @return : A string */ public String reverseWords(String s) { // write...
2018-02-26 23:05:12
326
原创 Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2) 解决办法
前几天因为测试需要,所以在CentOS7、7.2、7.3上分别安装了mysql数据库,但是7.0安装完之后顺利进入了数据库,而7.2和7.3则报出了 Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)的错误,一开始我以为是权限的问题,就把/var/lib/mysql/这个文件夹的权限改
2018-02-06 16:58:52
771
原创 Java源码阅读之HashMap(1)
表结构的第一部分,HashMap。/** * HashMap是基于Map接口的实现类,允许克隆和序列化操作。 * HashMap是非线程安全的,键和值都允许为null,但是键为null的键值对会被放在最前面。 * HashMap不能保证存储的键值对的顺序是一直保持不变的。 * HashMap的操作性能与两个因素有关,桶的大小和负载因子的大小,为了保证性能,请不要负载因子设置的过
2018-02-02 15:53:54
930
原创 Java源码阅读之ArrayList(终)
/** * 加强版for循环遍历列表 */ @Override public void forEach(Consumer action) { Objects.requireNonNull(action); final int expectedModCount = modCount; @SuppressWarning
2018-01-26 10:35:28
914
原创 Java源码阅读之ArrayList(4)
/** * AbstractList.ListItr的优化版本 */ private class ListItr extends Itr implements ListIterator { /** * 构造函数,必须指定初始句柄位置 */ ListItr(int index) {
2018-01-24 11:04:33
896
原创 docker启动容器端口映射错误
今天用docker的swarm搭建了一个集群,在启动主节点的swarm的时候出错了,报的错误是:/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint goofy_bose (317173685c23c029fd5f28b88
2018-01-23 11:50:37
8107
2
原创 Java源码阅读之ArrayList(3)
/** * 将列表中的对象全部置为null,但是列表的容量不会改变 */ public void clear() { modCount++; for (int i = 0; i < size; i++) elementData[i] = null; size = 0; } /*
2018-01-18 16:19:56
988
原创 Java源码阅读之ArrayList(2)
/** * 修改这个实例的容量,修改这个列表的最大容量为size */ public void trimToSize() { modCount++; if (size < elementData.length) { elementData = (size == 0) ? E
2018-01-09 17:32:41
908
原创 Java源码阅读之ArrayList(1)
/***ArrayList类是Java的动态数组类,该类实现了 List, RandomAccess, Cloneable, java.io.Serializable*四个接口,List接口是集合类的总接口,声明了诸多与集合操作相关的方法*RandomAccess是一个标志接口,实现了这个接口意味着这个类的实例对象支持随机访问*Cloneable是一个标志接口,实现了这个接口意味着这个类的
2018-01-08 15:43:55
1001
原创 Java源码阅读之String(终)
Java源码阅读之String(终) 最后一篇介绍String 源码的博客。 /** *根据所传递的regex字符串分割当前对象,limit控制匹配分割次数 *如果limit为正值则最多匹配limit-1次,形成limit个子字符串 *如果limit为非正值则尽可能多次匹配 */ public String[] split(String reg
2018-01-05 16:39:03
1122
原创 深入理解Java虚拟机之对象存活算法的实现(2)
深入理解Java虚拟机之对象存活算法的实现(2)因为HotSpot是准确式GC(前一篇有说),并且是借助OopMap的协助来实现的, 所以就引出了一个问题,导致引用发生变化或者说导致OopMap发生修改的操作可能有 很多,如果每一个指令都生成一个OopMap这根本就不现实,因为如此以来空间成本就 太高了。所以HopSpot并不是为每一条指令都生成一个OopMap的,而是在特点的一些 位置将引
2017-12-19 21:56:15
949
原创 LintCode之50 数组剔除元素后的乘积
题目来源:数组提出元素后的乘积题目描述: 给定一个整数数组A。定义B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], 计算B的时候请不要使用除法。样例 给出A=[1, 2, 3],返回 B为[6, 3, 2]Java代码:public ArrayList<Long> productExcludeItself(ArrayList<Integer> A)
2017-12-13 21:03:18
432
原创 LintCode之46 主元素
题目来源:主元素题目描述: 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。样例: 给出数组[1,1,1,1,2,2,2],返回 1Java代码:public int majorityNumber(ArrayList<Integer> nums) { // write your code int[] number= new int
2017-12-13 21:01:20
372
原创 深入理解Java虚拟机之对象存活算法的实现
深入理解Java虚拟机之对象存活算法的实现在之前的博客中提到过,判断对象是否存活的方式有两种,一种是标记计数法,一种是可达性分析算法, 由于标记计数法不能解决循环引用的问题,所以大多数的虚拟机采用的都是可达性分析算法。但是我们知道 在可达性分析中可以作为GC Roots的节点主要位于全局性的引用(常量或类的静态成员变量)与执行的上下 文(Java虚拟机栈或本地方法栈的变量表)中,比方说有的应用
2017-12-13 20:51:41
997
原创 关于CentOS7 可以ping通 但是telnet无法连接上端口的问题
昨天应同学的要求在自己公司的云平台找了一台云主机上部署了分布式文件系统 FastDFS, 安装经过比较顺利,但是在启动服务的时候出问题了,追踪器Tracker 很容易就启动起来,端 口也可以通过ss -ntl看到,但是在启动存储器Storage 的时候却怎么也查不到相应的端口,查 看了一下日志,发现是Storage无法连接到Tracker,在确定配置不存在问题之后,觉得可能是 云主机的问题,
2017-12-13 10:34:43
40725
6
原创 LintCode之44 最小子数组
题目来源:最小子数组题目描述: 给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。样例: 给出数组[1, -1, -2, 1],返回 -3Java代码:public int minSubArray(ArrayList<Integer> nums) { // write your code int start=0,end=0,minsum=nums.get
2017-12-12 22:17:38
290
原创 LintCode之41 最大子数组
题目来源:最大子数组题目描述: 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例: 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6Java代码:public int maxSubArray(int[] nums) { // write your code int start=0,end=
2017-12-12 22:15:52
231
原创 深入理解Java虚拟机之垃圾收集算法(3)
深入理解Java虚拟机之垃圾收集算法(3)今天说一下垃圾收集算法中的最后一个,“标记-整理算法”,之前说过,“暂停-复制算法”会导致部分空间 的浪费,而且需要有额外的空间进行担保,确保每次暂停复制的时候再另一块空间超出的时候有额外的空间存储, 所以在新生代会采用“暂停-复制算法”,但是在老年代会采用“标记-整理”算法。 “标记整理”算法和“标记-清除”算法比较像,但是在标记完对象之后,不会对可
2017-12-12 22:09:07
289
原创 Java源码阅读之String(4)
Java源码阅读之String(4)这一篇博客主要阅读String类的查找和替换相关的方法。 /* *查询当前对象的哈希码,如果当前对象没有计算过哈希码 *则计算当前对象的哈希码并赋值给当前对象的hash对象 *计算方法为: *value[0]*31^(n-1)+value[1]*31^(n-2)+...+value[n-2]*31+value[n-1]
2017-12-08 15:40:13
386
原创 LintCode之40 用栈实现队列
题目来源:用栈实现队列题目描述: 正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。样例: 比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2Java代码:public
2017-12-07 23:16:37
252
原创 LintCode之39 恢复旋转排序数组
题目来源:恢复旋转排序数组题目描述: 给定一个旋转排序数组,在原地恢复其排序。什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]样例 [4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]Java代码:public void recoverRotatedSortedArra
2017-12-07 23:13:32
528
原创 LintCode之38 搜索二维矩阵 II
题目来源:搜索二维矩阵 II 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。样例 考虑下列矩阵: [ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10] ]给出target = 3,返回 2
2017-12-07 23:10:53
471
原创 深入理解Java虚拟机之垃圾收集算法(2)
深入理解Java虚拟机之垃圾收集算法(2)这一篇我们说一下垃圾收集算法中的,“暂停-复制”算法,暂停复制算法是为了补充“标记-清除” 算法的不足出现的,这个算法解决了“标记-清除”算法效率不高且产生内存碎片的缺点。它将内存分 为两块大小相等的区域,每次只使用一块。当这一块内存用完的时候就将这块内存上存活的对象复制到 另一块大小相等的区域中,再将原来的区域清理掉。这样一来每次产生对象都是移
2017-12-07 22:42:13
362
原创 深入理解Java虚拟机之垃圾收集算法(1)
深入理解Java虚拟机之垃圾收集算法(1)这一篇博客我们介绍一下虚拟机的垃圾收集算法,最基础的垃圾收集算法是“标记-清除”法,顾名思义 这个算法分为两个步骤,标记和清除,首先对需要进行回收的对象进行标记,如何进行标记在之前的博客里面 已经说过了,这里就不赘述了,标记完成之后,对所有进行标记过得对象进行回收。之所以说这个算法是最基 础的算法是因为之后的算法都是对这个算法进行的改进和补充,这个算法
2017-12-05 22:04:36
267
原创 Java源码阅读之String(3)
Java源码阅读之String(3)这一篇博客主要读一下String类的比较方法/***将anotherString对象和当前对象进行对比,对比方式为*从两者首位依次向后对比,知道对比到其中一个结束*返回值为负数则当前对象小,返回0则相等,返回正数则当前对象大*/public int compareTo(String anotherString) { int len1 = valu
2017-12-05 18:25:36
505
原创 PathVariable annotation was empty on param 0.
PathVariable annotation was empty on param 0.今天在写Feign调用另一个模块的时候报了一个错,就是标题,到网上查了一下发现问题出在@PathVariable 标记中的value不能为空,也就是不能只写@PathVariable String id而是要写成 @PathVariable(value=”id”) String id,这个问题似乎在普通的类上
2017-12-04 10:43:34
1952
原创 Java源码阅读之String(2)
Java源码阅读之String(2)这一篇博客用于记录String类的部分方法。//获取字符串长度,返回的是value数组的长度public int length() { return value.length;}//根据value数组长度判断字符串是否为空public boolean isEmpty() { return value.length == 0;}//根据ind
2017-12-02 14:32:47
1277
原创 LintCode之35 翻转链表
题目来源:翻转链表题目描述: 翻转一个链表样例: 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nullJava代码:public ListNode reverse(ListNode head) { // write your code here int count=0; int[] xulie = new int[
2017-11-30 23:08:56
266
原创 深入理解Java虚拟机之回收方法区
深入理解Java虚拟机之回收方法区 很多人认为在Java虚拟机中,方法区是不存在垃圾回收的,因此方法区也成为永久代,在Java虚拟机规范中的确没有要求方法区进行垃圾回收,这是因为方法区的垃圾回收“性价比”比较低,在堆中进行一次GC,往往可以回收75%到95%的空间,而在方法区中的回收效率远远低于此值。 所以,方法区并不是没有垃圾回收,在方法区的垃圾回收主要分为两个部分:对废弃
2017-11-30 23:04:15
1302
原创 Java源码阅读之String(1)
Java源码阅读之String(1) String类表示字符串。 Java程序中的所有字符串文字(例如“abc”)都是作为这个类的实例来实现的。 String的实例创建之后值就不能被修改。StringBuffer和StringBuilder支持可变的字符串。因为字符串对象是不可变的,所以它们可以共享。String类底层是用char数组存储值的,它实现了java.io.Serializabl
2017-11-30 14:32:23
1390
原创 LintCode之28 搜索二维矩阵
题目来源:搜索二维题目描述:写出一个高效的算法来搜索 m × n矩阵中的值。 这个矩阵具有以下特性:每行中的整数从左到右是排序的。每行的第一个数大于上一行的最后一个整数。样例:考虑下列矩阵: [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]Java代码:public boolean searchMatrix(
2017-11-29 21:32:27
308
原创 深入理解Java虚拟机之引用与对象回收
深入理解Java虚拟机之引用与对象回收 在JDK1.2之前Java对引用的定义是这样的:如果栈中reference数据指向的是另一块内存的其实地址,就称之为这个内存的一个引用。这种定义比较纯粹但是过于狭隘,因为这种情况下一个对象只有两种状态,被引用和未被引用,但是如果有一些我们希望当内存够用的时候保留下来,当内存不够用的时候再回收掉的对象,我们就无法简单的用被引用和未被引用这两种状态来表述
2017-11-29 21:26:50
1391
空空如也
Java final变量虚拟机赋初值
2016-07-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人