
后端
阿菜ray
这个作者很懒,什么都没留下…
展开
-
日志打印高并发场景case记录
case介绍线上服务OOM,通过Java自带的jvisualvm打开dump文件查看内存对象分析,500个一组,发现前面几组的栈信息全部指向代码中的同一行LOGGER.info("业务xxxx, xName: {}, xText: {}", xName, xText);jvisualvm截图如下case分析(直接扒源码)跳过N步后结论归纳可以看到上图最终是通过构造event参数体填充传入的StringBuffer,对比上面jvisualvm截图可以理解原因如下原创 2021-11-19 21:50:55 · 533 阅读 · 0 评论 -
mac执行mvn命令 No compiler is provided in this environment. Perhaps you are running on a JRE
https://blog.youkuaiyun.com/w605283073/article/details/111770386感谢~转载 2021-11-17 11:25:22 · 613 阅读 · 0 评论 -
java spi浅析
1. Java spi是什么SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。2. 使用定义spi接口定义多态实现按固定规范 即classpath:/META-INF/services目录下新建spi接口的全限定类名文件 文件内按行填写该spi接口用到的实现类ServiceLoader.load(spiInterface.class) 使原创 2021-06-28 02:30:18 · 462 阅读 · 1 评论 -
nginx静态目录配置问题
配置静态目录映射不起作用 ,老访问安装目录下的相对文件,原因是nginx的默认配置文件含有css|mv之类的静态资源默认配置,把你的覆盖了,注释了就好了另外location /xxx/ { root /root/static #访问1.1.1.1/xxx/1.html会映射到/root/static/xxx/1.html}location /xxx/ { alias /root/static #访问1.1.1.1/xxx会映射到/root/static/1.html}...原创 2021-03-17 20:14:21 · 286 阅读 · 0 评论 -
cat指定正则的几个文件
ls | grep -E ‘abc-(03|01).log’ | xargs find | xargs cat原创 2021-03-15 10:50:45 · 1516 阅读 · 0 评论 -
springboot单测配置文件问题
很小的一个问题 自己回顾线上线下几套环境配置文件添加了一个新的配置,然后代码@Value注入发现单测都失败了,然后把这两个配置加到了单测模块下的test文件夹下的配置文件application.properties中。时常警醒自己的惯性思维...原创 2021-03-12 18:11:16 · 281 阅读 · 0 评论 -
nginx经常unavailable
http {keepalive_timeout 120; proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;}location {# 重试次数 为0不限制 个人理解原创 2021-03-11 19:28:48 · 517 阅读 · 0 评论 -
es新增字段并设置初值
非千篇一律的原创 亲测可用# es新增字段curl -u username:password --header 'Content-Type: application/json' -XPUT http://host:port/${indexName}/_mapping/${typeName} -d '{"properties": {"${paramName}": {"type": "long"}}'# 为该字段设置初值param_data='{"script":{"lang":"painless",原创 2021-02-22 12:35:34 · 1103 阅读 · 0 评论 -
ES的TF-IDF
需求: 对业务某实体进行多条件匹配排序,属性有实体名称、实体浏览量…db做法 like then order by viewCount死板 名称相关性无法体现 搜出来的只是包含 有多包含?TF-IDF = TF * IDFTF:term frequency词频 某文本1000词 'JAVA'匹配到10个 词频为TF = 10 / 1000 = 0.01IDF:inverse document frequency逆向文件频率 1000个文本 'JAVA'在10个文本中出现过 IDF =原创 2021-02-20 21:02:41 · 722 阅读 · 0 评论 -
nginx访问问题-日志不实时刷新
nginx配置的路由转发有的能访问 有的访问不了 同时日志不实时刷新 提供一种思路检查配置文件是否存在问题(某些路由失效的情况)/usr/local/nginx/sbin/nginx -t修复配置文件原创 2021-02-05 10:13:56 · 1345 阅读 · 0 评论 -
linux服务器Java项目crash排查
昨天线上某业务线项目挂掉了,记录下排查流程查看项目下是否有core.文件、heapdump文件、hs_err.log文件也可以查看var/log/message文件,通过找到crash时的时间对应的相应日志重点可以看下hs_err*.log,是否包含oom等常见crash问题,不过我们的hs_err*.log发现异常是一个nullpointexception,其他没有发现明显问题。随后观看了下异常栈栈顶部分发现包名不是业务包,询问发现是安全部的一个部署侵入包,于是询问对应的安全部rd并提供hs_er原创 2020-12-30 14:14:48 · 562 阅读 · 0 评论 -
ssh自动化登陆脚本加别名
直接上脚本目的主机有client机公钥#!/usr/bin/expectspawn ssh -p ${port} ${user}@${host}interact目的主机无client机公钥#!/usr/bin/expectspawn ssh -p ${port} ${user}@${host}expect "*password:"send "${password}\r"interact上述shell脚本可直接Mac机使用,window机没试过,要看是否支持expect和原创 2020-12-04 11:10:41 · 253 阅读 · 0 评论 -
重量级锁和CAS的适用场景
明确点: CAS的线程都是活跃状态,相当于一直处于while(true)的状态 重量锁的线程处于阻塞或者睡眠的状态并发量很高以及任务执行时间很长的方法/任务适用于重量级锁,此时使用CAS自旋前者导致CPU的负载过重,后者则CPU不必要的消耗,你执行时间这么长还让我在这一直自旋,你逗我呐?上面的反例即为CAS的适用场景,并发量CPU可以承受,且每一个任务的执行时间比较短...原创 2020-10-29 21:33:48 · 612 阅读 · 2 评论 -
macos安装brew
感谢大佬 ~转载同时去除部分内容 原文链接见下 亲测可用https://zhuanlan.zhihu.com/p/90508170本文主要介绍Homebrew安装方式以及如何加速访问,顺便普及一些必要的知识。脚本说明Homebrew默认安装脚本:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"如果你等待一段时间之后遇到下面提示,就说明无法访问转载 2020-10-19 17:48:38 · 232 阅读 · 0 评论 -
ThreadLocal内存泄漏问题
学习来自马士兵老师1. 什么是弱引用,弱引用什么时候会被回收2. ThreadLocal中弱引用的使用3. ThreadLocal什么时候会被回收1. 这块可以参考下别的大神的文章了解下,这块介绍很多,唯一补充下虚引用那块如下。一般用作堆外内存的回收使用(如nio),当需要回收堆外内存在堆内的引用时,会先把这些引用放到我们初始化虚引用时传入的一个队列,随后会有专门的线程去清理这些引用指向的堆外内存。 可按如下步骤跟踪下此引用的使用做证实// 第一步 调用ByteBuffer的allocateDi原创 2020-10-14 17:43:12 · 554 阅读 · 2 评论 -
内存局部性原理-利用空间局部性优化程序
学习来自马士兵什么是内存局部性原理?见https://blog.youkuaiyun.com/xindoo/article/details/97525694 可以看下内存局部性这块的解释先上代码package com.example.mashibing;import java.util.concurrent.CountDownLatch;public class Demo1 { static CountDownLatch countDownLatch = new CountDownLatch(原创 2020-09-30 16:35:13 · 958 阅读 · 0 评论 -
javanio读取文件超出问题
读问题:读取一个文件按读取的byte[]输出时输出超出文件内容问题发生示例: 有文件a.txt,内容为 ‘12345 \n 12345 \n 123’,通过如下代码输出结果为’12345 \n 12345 \n 12312345\n’ 即表现形式是输出超了public class Demo1 { public static void main(String[] args) throws IOException { File f = new File("filePath");原创 2020-09-22 23:40:24 · 312 阅读 · 0 评论 -
springboot覆盖父pom parent依赖版本思路
分两种情况,一种是项目引入了spring-boot-starter-parent,一种是没有引入,本文介绍的是我解决问题的思想,可能和你的case不一致,但是解决思路应该是相同的引入的情况,case示例前两天公司公告jackson-databind-2.9.10.6以下可能存在远程执行漏洞要升级,由于项目是多模块,因此首先想到的就是父pom版本管理Ctrl+鼠标左键进入我们的父pom引入的spring-boot-starter-parent,如下图图一进入这个pom文件后我们发现他的depende原创 2020-09-22 23:16:05 · 8251 阅读 · 0 评论 -
如何看懂tomcat安装包logs文件夹下日志
本篇文章较长 重要的是思路!!!之后你看Tomcat的任何一个类的源码都可以根据这种思路去定位和trace对于一个正在找工作的渣渣来说 习惯性的翻源码慢慢也变成了乐趣 -鲁迅对于Tomcat的源码我觉得看懂架构非常容易 对于细节因人而异 贴一张Tomcat的架构图(百度找的)左边就是我们conf目录下很重要的server.xml文件内容,右边则是官方给的架构图 可以看到一一对应从上图我们可以看到server.xml文件中的标签与右边的架构图的组件具有相同的相对位置 而在源码中他们更是具有相同的关系原创 2020-05-09 11:09:03 · 780 阅读 · 0 评论 -
jvm服务器-图解如何查看GC日志
可根据上图进行对照 上图以youngGC示例,oldGC与fullGC参数、分析与上述除将新生代大小转换为老年代大小之外完全一致原创 2020-04-27 09:57:31 · 1307 阅读 · 0 评论 -
提一个lombok的bug
问题描述: 实体类内的字段名与实体类内定义的非静态常量或普通字段字母相同(忽略大小写的情况下)例:public class Model { private String name; public final String NAME;(or private String NAME;)}问题:toString方法会打印NAME字段,并且值为name的值,下图为idea反编译后的toS...原创 2019-12-31 14:07:09 · 1100 阅读 · 0 评论 -
springboot2.X部署到阿里云服务器(实战检验)
springboot2.X项目部署到阿里云服务器在上干货之前想说一下由MainApplication.java RUN方式转换为部署到tomcat下启动访问两种方式的转换思路:直接run as 启动类实质上是使用的springboot自带的tomcat插件,我们在application.yml中配置的server.port、server.servlet.context-path等属性就是对自带...原创 2018-10-10 19:53:19 · 529 阅读 · 0 评论 -
spring service多子类动态注入 最后有重点
最近在水微信群时有人问了一个很好的问题,于是我知道,我装X的时刻又到了,嘻嘻嘻问题描述:对于XXService的多种实现类不通过resource指定的情况下实现按功能动态注入思路:使用拦截器对这个接口进行匹配拦截,通过接口参数来完成类型指定,通过反射完成注入上代码拦截器的public boolean preHandle(HttpServletRequest httpServletRequ...原创 2019-01-08 14:45:12 · 3327 阅读 · 2 评论 -
eclipse导入spring3.2.6(学习咕泡课程)
刚上来的第一个难题就是源码的下载(https://github.com/spring-projects/spring-framework/releases/tag/v3.2.6.RELEASE)。我在尝试了几十次包括FQ都以中断重新下载后想到了一个方法:1.在我的阿里云服务器上安装了gityum -y install git2.使用阿里云服务器clonespring项目到服务器上cd ...原创 2019-02-15 21:47:34 · 273 阅读 · 0 评论 -
idea|eclipse导入mybatis源码(推荐直接导入带中文注释的mybatis源码)
最近想看下mybatis的源码,就去交友网站搜了下,发现直接就有带中文注释的mybatis源码了,感谢感谢!贴下地址:https://github.com/tuguangquan/mybatis1.https://github.com/tuguangquan/mybatis 下载mybatis源码(这个是带中文注释的,也可下载最纯净的)2. https://github.com/mybatis...原创 2019-03-20 18:21:10 · 1433 阅读 · 0 评论 -
maven项目打包target目录无法访问无权限类似问题
今天一位同学遇到了一个问题,idea中的maven项目打包时报了一个bug,无法删除/创建target的子文件|子文件夹,然后在window explorer中打开后第一次是target文件夹都进不去,无权限访问,他重启了一次机器,打包后又遇到这个bug,这次倒是能点进去target文件夹了,但是还是不能删除推测:无法访问的原因是程序占用解决办法:打开任务管理器注意,重启此进程前请关闭所...原创 2019-03-21 19:06:03 · 15244 阅读 · 18 评论 -
天气
example:// 省略...public @interface RabbitListener { String id() default ""; QueueBinding[] bindings() default {};}public @interface QueueBinding { String value() defaut "";}how to use@...原创 2019-08-06 15:15:48 · 627 阅读 · 0 评论 -
redis求交集、差集、合集注意点
以下纯属个人观点,如有错误或疑问,非常欢迎和感谢指正与讨论1. 对数据较大,如百万级、千万级的value一定要考虑分片。制定分片均匀的方案,键的设计可为固定键加分片位,value最好不要超过10W。这样可以将一个大的计算任务分为多个小的计算任务,(很多公司的redis服务器应该都是有超时策略的)不会过度影响到读请求。也可以采用读写分离,计算任务放到一个redis服务器,读请求放到另一台服务器...原创 2019-09-26 20:15:27 · 1971 阅读 · 0 评论 -
springboot对Double类型保留两位小数返回处理
如下1、定义序列化Json处理类继承JsonSerializer,泛型类型为要做处理的对象类型2、在要处理对象属性上面指定序列化处理类格式化如果有错,非常感谢您的指正!感谢点赞,您的支持是我写下去的动力、、1、定义序列化Json处理类继承JsonSerializer,泛型类型为要做处理的对象类型import java.io.IOException;import java.text.Decim...原创 2018-10-18 18:42:44 · 18274 阅读 · 21 评论