杂七杂八
阿弥陀佛僧
知幻即离,不假方便;离幻即觉,亦无渐次。
展开
-
记一次TheadLocal使用方式不正确导致内存泄漏问题的排查和修复过程
又再通过Jprofiler查看宕机时的线程的情况,定位到了出现问题的线程,然后查看代码,发现代码中有一个使用流的地方,但这个流在使用完之后没有关闭,就误以为是流未关闭导致的。代码的本意是想避免对象的多次反序列化,想将已经反序列化过的对象放在一个全局的Map里面,下次如果这个Map中已经有了该对象就直接从Map里面获取,若没有则先将该对象反序列化之后置入这个Map中,再从该Map中获取。在将内存溢出的dump文件导出之后,通过Jprofiler进行分析,发现HashMap对象占用的内存很大,而且一直在增加。原创 2023-10-20 18:26:48 · 294 阅读 · 0 评论 -
分账算法代码
【代码】分账算法代码。原创 2023-07-13 18:09:15 · 183 阅读 · 0 评论 -
Linux保留最近30天文件的shell脚本
结合crontab或supervisor使用,即可实现文件的定时清理。原创 2023-07-13 17:37:41 · 750 阅读 · 0 评论 -
Linux系统中Java进程守护脚本
配合Crontab或Supervisor使用。原创 2023-06-27 16:10:05 · 494 阅读 · 0 评论 -
Java中调用C或C++的so文件方法
Java调用C或C++的方法原创 2022-06-01 23:13:26 · 1080 阅读 · 2 评论 -
菜单兼容的处理
公司最近考虑将多个类似产品的不同功能合在一起形成一个功能较为齐全的产品,但原先每个产品的菜单互不兼容,而且合并后菜单有所调整,且可能是从任何一个产品升级为该产品,最终决定直接通过SQL的方式解决。主要的需求:某些菜单无则插入有则改变其父菜单,对应的权限有则不动无则插入。SQL示例如下:-- 菜单:无则插入有则修改菜单的pid和sort值,使用了ON DUPLICATE KEY UPDATEINSERT INTO bs_menu(`id`,`menu_code`,`menu_name`,`menu_ur原创 2021-09-16 17:31:34 · 72 阅读 · 0 评论 -
Shell使用expect实现自动交互
以自动登录为例:#!/usr/bin/expect -f# 接收参数set remote_ip [lindex $argv 0]set user [lindex $argv 1]set pass[lindex $argv 2]# 开始登录spawn ssh ${user}@${remote_ip} #使用指定用户登录expect { "*yes/no*)? " { send -- "yes\r" } # 需要交互发送yes}expect { "*password:*)? " { se原创 2021-05-11 09:33:04 · 153 阅读 · 0 评论 -
ES升级和数据迁移
一、背景 公司项目升级,ES版本由原来的2.x升级到5.x,同时会涉及到海量数据(几十个T)的迁移。二、方案 1、高版本ES直接使用低版本ES的持久化数据文件和日志文件 编辑elasticsearch.yml配置文件使path.data和path.logs的路径指向低版本对应的路径。 结果:未能识别出数据,应该是存在版本兼容性问题 2、利用第三方工具将低版本的索引数据导入到高版本中 选择的工具是elasticsearch-migration,相关介绍:elasticsearch-migr原创 2020-10-30 16:11:40 · 1543 阅读 · 0 评论 -
使用Java实现Linux简易终端
核心工具类:public final class CommandUtil { private static final Logger LOGGER = LoggerFactory.getLogger(CommandUtil.class); private static final Long THREAD_IDLE_MAX_SECONDS = 120L; /** * 系统换行符 */ public static final String LINE_SEPARATOR = System.原创 2020-10-22 19:29:22 · 2050 阅读 · 2 评论 -
Java使用selenium爬取网页源代码并通过邮件发送
1、项目搭建:idea + gradle + springboot build.gradle:引入selenium相关依赖apply plugin: 'java'apply plugin: 'maven'apply plugin: 'idea'apply plugin: 'org.springframework.boot'sourceCompatibility = 1.8group...原创 2020-01-16 20:30:30 · 793 阅读 · 0 评论 -
无头浏览器(Headless Chrome)的使用
一、Windows系统 1、安装Chrome 略 2、配置系统环境变量 将Chrome的安装目录(chrome.exe所在的目录)追加到系统变量的path变量中,比如我的Chrome安装在了:C:\Program Files (x86)\Google\Chrome\Application 3、使用 在dos命令窗口输入命令:使用无头模式将https://baidu.com的网页...原创 2020-01-14 16:47:35 · 11833 阅读 · 2 评论 -
扯扯Java开发的淡
有人说:这个世界上有两件最难的事, 一是把别人的钱装进自己的口袋;二是把自己的思想装进别人的脑袋。对于第一件,有些人做起来并没有那么难,而且做得相当成功,那就是乞丐;至于第二件有两个人虽做得比较成功,但却艰辛的多,其中一个是老师,另一个则是创业者。 我不是老师,也不是创业者,但我想做做第二件事。 作为一个从事后端开发的程序员,自然避免不了要为前端提供后台接口。那么,应该给前端提供几个后...原创 2020-01-11 00:58:56 · 455 阅读 · 0 评论 -
Spring配置异步任务处理
前言:在项目开发中,我们经常会有异步调用任务的需求,比如:a.在与第三方系统数据交互时,需要另开一个线程去执行交互任务b.系统中日志记录不希望引起响应迟缓c.短信、发送邮件等web.xml 3.0才开始支持异步,Spring3.2以上版本中提供了@async注解帮助我们更好的处理类似问题,以免引起阻塞导致请求响应不及时...转载 2018-07-13 00:50:20 · 887 阅读 · 0 评论 -
从HTTPS协议的网址跳转到HTTP协议的网址
右键点击Chrome的快捷方式,在其“属性”的“快捷方式”选项卡中,将“ --allow-running-insecure-content”加到“目标”文本框的最后面即可(注意前面有个空格)。重新打开Chrome,就不会再看到“不安全内容”的提示了,同时HTTPS协议下的网站也可访问HTTP协议的接口了。...原创 2018-06-05 00:05:12 · 19552 阅读 · 1 评论 -
前端通过Ajax发送请求与后端通过HttpClient发送请求的区别
在前端通过ajax发送请求和后端使用HttpClient发送请求看似没有什么区别,因为两者发送的都是HTTP请求或者HTTPS请求,而使用HttpClient发送的请求本身也是在模拟浏览器的行为,但有时通过前端发送ajax请求第三方平台的接口可行,但是通过HttpClient的方式却不行,为什么呢? 原因在于:通过ajax发送的请求是前端发送的请求,其请求的ip是浏览器所在机器的...原创 2018-06-01 00:07:50 · 7114 阅读 · 0 评论 -
Web请求过程
一、请求响应过程1、通过DNS将域名解析为IP地址;2、根据IP地址找到对应的负载均衡服务器;3、根据负载均衡的分配发送请求到具体某个服务器;4、服务器处理业务逻辑;5、根据业务逻辑从分布式缓存或者静态文件或者数据库里获取数据;6、将数据返回给浏览器;7、浏览器解析数据,此时如果存在一些其他服务器上的静态资源,浏览器会再次发起HTTP请求去请求这些静态资源,通常这些静态...原创 2017-09-20 21:42:18 · 293 阅读 · 0 评论 -
开发遇到的问题
1、产生多条通话记录 话务系统对接大唐电信的JS接口,大唐会在电话振铃、接听、挂断等时点回调我们系统的JS接口,使我们在这些时点做一些业务。但是在开发和测试时出现了一个怪异现象:打出去一通电话我们的系统却产生了多条通话记录。使用F12进行调试,发现只会调用一次生成通话记录的接口,这就奇怪了,明明只调用了一次接口,为何会产生两条通话记录呢?想破了脑袋终于想通了,这是因为大唐电信在回调接口时...原创 2019-03-20 16:02:55 · 1874 阅读 · 0 评论 -
引入外部js文件的加载
近日做了一个阿里云点播的上传和播放,需要在JSP页面中引入阿里云点播提供的js文件,通过<script>标签将需要的js引入。在dom加载完成之后执行$(function(){})中的代码去创建阿里云的js提供的对象,结果却报错了:说阿里云提供的一个js对象没有定义。很奇怪,js文件明明引入了,而且通过F12的NetWork可以看到文件引入也是成功的,这是为什么呢?原因在于$(...原创 2018-06-28 22:31:59 · 6515 阅读 · 0 评论 -
丢失数据的修复
背景: 近期做了一个话务管理的功能,就是调用大唐电信的接口完成与客户的电话沟通,并将通话信息记录在数据表中。该功能已经上线了两个多月,一直运行正常,但是前天我自己在查询生产数据时发现了一个问题:我们的通话记录中很多字段的值都为null。而这些字段应该是在挂断电话时大唐回调我们的接口更新到我们的数据表中的,所以一开始我怀疑大唐在某些情况下挂断电话是不走回调的,就与大唐的同事沟通,他们的反馈...原创 2018-06-08 01:38:09 · 603 阅读 · 0 评论 -
任意Excel数据导入任意数据库表的功能实现
1、前台jsp<%@ page contentType="text/html;charset=UTF-8" %><%@ include file="/WEB-INF/views/include/taglib.jsp"%><html><head> <title>Excel数据入表</title> <...原创 2019-08-07 18:47:38 · 456 阅读 · 0 评论 -
Windows中停止被占用的端口
开发过程中有时候会因为某些原因未能关闭tomcat的某个端口,导致该端口被占用,怎么在不重启电脑的情况下解决这个问题呢?使用dos命令:1、查找被占用端口的进程号(PID)netstat -ano | findstr 80802、杀死进程taskkill /F /PID 16200如下图:...原创 2018-07-20 00:57:51 · 6464 阅读 · 0 评论