- 博客(41)
- 收藏
- 关注
原创 skywalking源码本地编译运行经验总结
最近工作原因在弄skywalking,为了进一步熟悉拉了代码下来准备debug,但是编译启动项目我就费了老大劲了,所以准备写这篇,帮兄弟们少踩点坑。
2023-09-26 14:49:36 2408
原创 redission3.16.0版本加锁高耗时?
事件缘由:公司redis升级为带密码访问后,同事反馈使用redisson加锁一两秒,当时使用的版本是3.16.0有些同事的3.11.6版本没有类似的问题出现,临时降到3.11.6版本调研结果:3.14.1版本开始,redisson引入了wait命令这个wait命令将阻塞当前客户端,直到当前Session连接(主节点上)所有的写命令都被传送到指定数据量的slave节点。如果到达超时(以毫秒为单位),则即使尚未完全传送到达指定数量的salve节点,该命令也会返回(成功传送到的节点的个数)
2022-05-12 23:08:33 1494
原创 如何获取客户端请求真实ip
1.正常的逻辑,如果我们直接请求服务,那么在request.getRemoteAddress()就可以拿到原始客户端请求的ip2.如果新增了nginx代理,那么就只能借助XFF从header里面取了3.如果全部署在k8s,会过一道网络代理,那么在网络代理这会做一次NAT,所以如果不想丢失源ip就只能修改externalTrafficPolicy=local 不进行路由,直接在当前节点处理...
2021-12-07 16:28:19 3063
原创 mapstruct 自定义转换规则
遇到一个需求,就是我费率返回给前端的时候,多余的小数位不要展示我对象转换全是使用的mapstruct,有兴趣的可以了解一下。就是只需要自定义接口,然后在编译时生成转换逻辑的代码这次我只是简单记录一下,特殊逻辑的时候,怎么实现自定义转换首先,是自定义的转换逻辑public class ConvertExpression { private ConvertExpression() { } public static String stripTrailingZer
2021-08-30 10:19:47 1224
原创 DataOutputStream乱码问题
这个坑我就先踩为敬了,千万不要用DataOutputStream的writeBytes 方法千万不要用DataOutputStream的writeBytes 方法千万不要用DataOutputStream的writeBytes 方法我们使用DataOutputStream 的时候,比如想写入String ,你就会看到三个方法public final void writeBytes(String s)public final void writeChars(String s)...
2021-04-06 21:44:56 261702 5
原创 多线程下载大文件(断点续传)
RandomAccessFile提到多线程下载大文件或者时断点续传,我们就肯定要提到 RandomAccessFile这个类,为啥可以多线程来下载一个大文件呢?得益于它强大的seek方法然后提到断点续传呢,我觉得可以聊一聊Connection 头字段相关的内容Connection这个字段只在http 1.1 协议中存在。它决定了客户端和服务器进行了一次会话后,服务器是否立即关闭网络连接。Connect有两个值:close 当read完数据时,就立即返回 keep-alive re.
2021-04-05 21:07:55 568
原创 Equals相同,hashcode会返回不同吗?
如果两个对象equals()方法相等则它们的hashCode返回值一定要相同,如果两个对象的hashCode返回值相同,但它们的equals()方法不一定相等。hashCode()的作用是为了提高在散列结构存储中查找的效率,在线性表中没有作用;只有每个对象的 hash 码尽可能不同才能保证散列的存取性能,事实上 Object 类提供的默认实现确实保证每个对象的 hash 码不同(在对象的内存地址基础上经过特定算法返回一个 hash 码)。在 Java 有些集合类(HashSet)中要想保证元素不重复可以
2020-11-29 12:04:10 1449
原创 线程池拒绝策略引发的灵异事件
自从昨天的一波bug吃了亏,我决定狠狠的总结一番线程池的拒绝策略bug回顾:我昨天在跑批,读取文件中的流水信息更新账单,量也还好,大概几万单吧,为了快点我就直接用我现成的一个线程池的工具类开多个线程跑,通过关注日志,发现怎么没过多久就跑完了。我一开始就以为就是处理的比较快,但是我昨天统计实收实付的时候发现怎么还这么多数据未实收实付,一开始看了很多单发现还好,但逐渐往后看怎么modified time都不太对呀,感觉像没有更新到。此时,我重新修改了日志信息,新增了统计,就拿刚刚的重新跑了一遍,发现
2020-11-17 15:53:16 339
原创 线上故障排查之异常的堆栈信息怎么突然就不见了
上周四,线上环境突然疯狂告警,我手机一直滴滴滴滴响个不停这是一开始看到的告警信息,目测能看出可能是依赖的产品服务出问题了等我打开电脑一看时,发现告警邮件又变成下面的样子就只有一个空指针,啥堆栈都没有了(这我就有点懵逼了,大晚上12点,要是不是别人的问题把别人喊起来这不太好)今天又发过版本,先镜像回滚吧,这样稳妥点(前提得确定新发布的代码,确认回滚不会出问题)回滚完之后发现告警还在,那么就只能找产品的同学起来看了,结果已联系发现产品那边已经发现自己出问题了后来服务是恢复了,但是
2020-11-09 16:11:32 724
原创 牛顿迭代法(求平方根)
public static double sqrt(double c) { if(c<0) return Double.NaN; double err = 1e-15; //1的-15次方 科学计数法 double t = c; while(Math.abs(t - c/t) > err * t) { t = (c/t + t) / 2.0; } return t; }以上是牛顿迭代法的java实现,牛顿迭代法具体的数学公式有兴趣可以自行百度(我了解完才发.
2020-11-01 21:45:59 1248 1
原创 把第三方jar包打入maven项目
场景:和蚂蚁联调的过程中,他们的接口还没上线,我们这边又是采用SDK的方式接入的,所以只能他们手动把jar包down下来给我。那么我这边的是maven项目,我如果想使用这jar包的话,要么就是把相关的jar包和pom文件上传到公司的maven仓库,要么就是放进项目中。毫无疑问,如果只是临时使用的话,放进项目中是最方便的,那么怎么操作呢?上配置:<dependency> <groupId>com.alipay.api</groupId&g
2020-08-14 18:24:24 421
原创 mongodb日期类型查询命令
日期类型的数据,mongo相关命令1.查询在2020年1月1日之前的数据db.getCollection('superman_surrend_info').find({"createTime":{$lt:ISODate("2020-01-01 00:00:00")}})2.查询在2020年1月1日之前的数据的数量db.getCollection('superman_surrend_info').find({"createTime":{$lt:ISODate("2020-06-20 00:
2020-07-24 11:35:57 1000
原创 jdbcTemplate的queryForList(超级坑)
jdbcTemplate 中的queryForList,你真的懂吗?你想象中的queryForList是不是应该长成下面这种模样?String sql = "select * from person";List<Person> persons = jdbcTemplate.queryForList(sql, Person.class);然后,你很激动的点了run...
2020-03-20 22:51:04 36355 8
原创 springboot之取消starter的自动注入
springboot之取消starter的自动注入starer是spring boot中一个很重要的概念,starter相当于一个模块,它能将所需要的的依赖整合在一起并对模块内的bean自动装配到spring IOC容器,使用者只需要在maven中依赖相应的starter包并无需做过多的依赖即可进行开发。一、例子比如,我们导入了mybatis相关的依赖,但是我可能暂时没用到数据库,所以...
2020-03-08 22:31:47 1424
原创 整合JdbcTemplate报错Failed to determine a suitable driver class
一开始整合JdbcTemplate的时候,报错Failed to determine a suitable driver class这是因为spring-boot-starter-jdbc根据自动配置约束自己去配置数据源,而项目中并没有dataSource相关的配置,所以出错。然后需要首先在启动类中排除数据源自动配置@SpringBootApplication(exclude = {...
2019-09-28 19:52:47 583 2
原创 springboot整合freemark---解决部署后路径找不到问题
springboot整合freemarker之后,本地跑起来完全没问题,但是打包部署后,报错路径找不到。HashMap root =new HashMap();root.put("vo", coverntToVO(policyFailDO));Configuration config = new Configuration();config.setDefaultEncoding("UT...
2019-08-21 15:23:58 2084
原创 java.net.socket cannot be cast to javax.net.ssl.sslSocket
首先,因为出现这种报错的情况会有很多种,那么说一下我的场景: 我是在使用htmlUnit的时候,HtmlUnitSSLSocketFactory中的createSocket方法报错的然后我就找到htmlUnit里面这个方法的源码,发现final Socket socket = super.createSocket(params);configureSocket((SSLSo...
2019-06-12 15:28:05 1291
原创 Spring boot跨域的三种解决方式
(一)跨域的原因浏览器的同源策略:限制了从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是用于隔离潜在恶意文件的重要安全机制 只有协议、主机、端口三者都相等才算同源(某些浏览器端口不计入标准中,公司域名等高可信度的域名也不必遵守同源策略)(二)跨域访问过程跨源网络访问:通常允许跨域写操作 例如:链接、重定向、以及表单提交 (少...
2019-06-02 19:21:59 4119
原创 Vue实现进度条
本篇文章用Vue简单实现进度条的变化。先上一波效果图:点击减后,每次减百分之十减到百分之0后,减操作按钮隐藏然后点击重头开始,恢复到初始状态二话不说,上代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <ti...
2019-05-15 17:04:41 22486 1
原创 Vue之动态绑定CSS
操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是属性,所以我们可以用v-bind处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将v-bind用于class和style时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。下面介绍绑定html class中的对象语法<di...
2019-05-10 15:26:08 2495
原创 将java项目打包运行
如何将java项目打包运行呢?首先,我们编写的java程序在编译完都会生成相应的字节码文件,在bin目录下面就是如果,我们想不用eclipse之类的工具运行代码,而采用命令行的方式,会是怎样呢?看下图我们可以直接进入项目的bin目录,使用java指令来运行项目 那么如果我们如何将项目打包运行呢?问题一 将...
2019-05-10 00:24:37 1099
原创 模拟爬取文本中的所有邮箱
模拟爬取文本中的所有邮箱描述:从一段文字中,爬取出其中所有的邮箱。(利用正则表达式)public class Test { public static void main(String[] args) { String str ="电子邮箱: 752763471@qq.com 电子邮箱:752763471@qq.cn 电子邮箱:752763471@qq.ne...
2019-03-12 22:17:28 391
原创 spring security登录成功后跳转回登录前的页面
spring security登录成功后跳转回登录前的页面我刚好碰到了这么一个需求,正好自己也刚开始学spring security,但是我百度了一下,发现都讲的好麻烦,其实大概了解完之后,亲自实践一下发现,操作非常简单。需求如下:在未登录的情况下访问某些页面被拦截,跳转到登录页面,然后现在需要登录成功之后跳转到登录之前的页面。要解决这个问题,就需要明白一点,就是我被拦截前的请求去...
2019-02-23 21:04:01 10272 6
原创 spring-data-mongodb 2.1.2 版本存在问题
spring-data-mongodb 2.1.2 版本存在问题问题描述:我是准备使用 MongoRepository 和 MongoTemplate,然后就遇到这个问题,我maven依赖加好了,但是就是找不到这两个东西。他们需要的包如下import org.springframework.data.mongodb.repository.MongoRepository;impo...
2019-02-22 12:23:34 1175 1
原创 Could not transfer artifact org.springframework:spring-tx:jar:3.2.3.RELEASE异常解决方案
Could not transfer artifact org.springframework:spring-tx:jar:3.2.3.RELEASE异常解决方案导致该异常的原因:1.网速超级慢,慢到渣一样,下载断断续续的2.你觉得慢,你自己手贱给中止掉了下载异常后表现出来的现状:pom文件报错:内容大概就是xxxxxxx jar包出问题之类的解决方案:第一步,到你自...
2018-12-03 00:24:34 9823 2
原创 使用commons-fileupload包上传文件(含中文乱码解决方案)
使用commons-fileupload包上传文件(含中文乱码解决方案)简单实现form表单上传文件:注意点一,将enctype的值设置为multipart/form-data后端就简单使用servlet处理,这里只是为了简单展示一下如何用commons-fileupload包上传文件,代码如下:package servlet;import java.io.File;imp...
2018-11-24 22:05:08 747
原创 利用ajax进行前后端交互的简单例子
利用ajax进行前后端交互的简单例子不多说,上代码:前端部分:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>查询所有学生的信息</title> <link
2018-10-09 22:09:12 9432 4
原创 自定义带参数异常
自定义带参数异常我们自定义异常往往有两种:一种是自定义运行时异常,就是产生异常时交由JVM处理,也就是在控制台打印出来,这是继承RuntimeException类还有一种就是自定义编译时异常,就是需要自己try-catch处理或者throws继续往上抛出,这是继承Exception类那么需要往里面带参数的话,只需要在自定义的异常类中创建带参的构造方法就好,然后方法中将参数传给父类构...
2018-09-02 00:16:54 2249
原创 统计字符串中每个字符出现的次数
统计字符串中每个字符出现的次数利用map中Key不重复的特点,统计字符串中每个字符出现的次数package com.xiongda.demo;import java.util.HashMap;import java.util.Iterator;import java.util.Map.Entry;import java.util.Set;/** * * @author...
2018-08-27 00:12:30 17267 1
原创 @value注解和@ConfigurationProperties注解的基本使用
@value注解和@ConfigurationProperties注解的基本使用基于@value读取默认配置yml文件内容如下(装了STS插件以后即可直接使用,改后缀就行了)user: username: xiongda sex: man age: 20school: name: xtu location: hunan备注:一定要注意之间要留空格,发现颜色变...
2018-08-21 14:06:11 6588
原创 list集合添加元素导致的并发异常的解决方案
list集合添加元素导致的并发异常的解决方案应该都知道在集合遍历的过程中直接使用remove或者add方法对list集合进行操作会引起并发修改异常。这是因为list中的remove和add方法使得modcount和exceptmodcount字段不等导致的。针对remove方法造成的并发修改异常,我们可以直接使用iterator中的remove方法解决。那怎么解决add方法产生的并发修...
2018-08-12 19:47:10 3329
原创 改BUG的一点小心得
Server Tomcat v8.5 Server at localhost failed to start错误分析首先如果你也是在写servlet时发生这样的错误,那没准咱俩很有缘分,遇到了相同的问题:然后讲一下,为什么我很喜欢这个错误呢?理由就是,这个错误让我学会了观察爆出的异常,然后找到错误发生的地方,我现在真的很想感慨,try-catch是太强了,帮了大忙。我先贴出异常如下:java.ut...
2018-05-08 23:49:02 1393
原创 Mysql8.0使用JDBC无法顺利建立连接问题
Mysql8.0使用JDBC无法顺利建立连接问题一开始的建立连接的代码为:conn=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=flase","root","xb199795");控制台什么也没有输出,我也是debug完才发现问题在建立连接这一行所以我就在这一行加上了tyr-ca...
2018-05-06 18:26:14 3006
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人