直接上工具方法 /** * 获取访问用的真实IP,无视nginx等反向代理软件 * @param request * @return ip地址 */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("X-Real-IP"); if (!StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) { retur…

2021-01-14 0条评论 996点热度 0人点赞 admin 阅读全文

/** * 判断字符串中是否包含中文 * * @param str 待校验字符串 * @return 是否为中文 * @warn 不能校验是否为中文标点符号 */ public static boolean isContainsChinese(String str) { if (str == null) { return false; } Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); Matcher m = p.matcher(str); return m.find…

2021-01-13 0条评论 4870点热度 1人点赞 admin 阅读全文

最近发现一个问题,Tomcat运行一段时间后,就会发生崩溃现象,查找tomcat的logs/catalina.out日志,发现很多 java.io.IOException: Too many open files这样的错误日志 继续查找,ps au|grep java 找到tomcat的PID,lsof -p PID 看到具体的打开文件很多都是我最近添加的代码里Files.list(Paths.get(baseDir)).filter(...)这里的文件 可是Files.list这种Stream的方式浏览文件,最后…

2021-01-11 1条评论 2071点热度 1人点赞 admin 阅读全文

重复N个字符连成一个字符串,比如生成5个连续的a的字符串aaaaa 最不用动脑筋的方法就是for循环里面用String/StringBuffer/StringBuilder等把string拼接起来 String repeatedString = ""; for (int i = 0; i < n; i++) { string = string + s; } 下面介绍稍微优雅一点的实现 //s是要重复的字符,n是重复次数,各种JDK版本通用 String repeatedString = new String(…

2021-01-10 0条评论 4786点热度 5人点赞 admin 阅读全文

比较简单,直接干货 /** * * @param bytes 文件大小,单位:字节数bytes * @param precision 小数点后位数,可以是0 * @return 得到可读的文件的大小, 比如1.51 GB */ public static String readableFileSize(long bytes, int precision) { if (bytes <= 0) return "0"; final String[] units = new String[]{"B", "KB", "…

2021-01-10 0条评论 1892点热度 0人点赞 admin 阅读全文

先准备好工具类: package com.terrynow.test.imagecompare; import java.awt.image.BufferedImage; public class HistogramFilter { private int redBins; private int greenBins; private int blueBins; public HistogramFilter() { redBins = greenBins = blueBins = 4; } public void …

2021-01-05 0条评论 1177点热度 0人点赞 admin 阅读全文

首先看下怎么在JSP里使用: JSP头部增加: <% request.setAttribute("call", new Call()); %> 需要调用的静态方法,如Utils.java package com.terrynow.test.utils public class Utils { public static String testMethod(String args, String arg2) { //省略 return "xxxx" } } JSP的代码里这样调用: <%-- 带参数…

2021-01-04 0条评论 1496点热度 0人点赞 admin 阅读全文

比如有个需求,超时30秒,检查是否准备好,某个条件是否为真,30秒后也算条件为假,比较传统的做法是,每一秒检查,中间用Thread.sleep停一下 boolean checkResult = false; for (int i = 0; i < 30; i++) { if (condition()) {//某种条件下判断为真,表示已经准备好 checkResult = true; break; } Thread.sleep(1000L); } System.out.println(checkResult);…

2020-12-31 0条评论 863点热度 0人点赞 admin 阅读全文

Java代码ping网络中的设备,两种方式实现 使用Java自带API,需要被Ping的设备防火墙开启端口: 7 (Echo) String sdAddress = "192.168.0.1"; InetAddress address = InetAddress.getByName(sdAddress); // 5000是超时5秒 boolean reachable = address.isReachable(5000); 调用外部命令(注意注释里选择是Windows还是Linux下的ping命令) //Windo…

2020-12-28 0条评论 3023点热度 0人点赞 admin 阅读全文

为了测试服务器速度,有时候需要提供下载文件,这里写了一个Java代码,可提供下载测试文件、可断点续传,还可以让客户端请求的时候自定义下载文件的大小,这样省去找一个固定大小的文件丢到服务器上的麻烦了。 <%@ page import="java.io.OutputStream" %> <%@ page import="java.text.DecimalFormat" %> <%@ page language="java" contentType="text/html; charset=U…

2020-12-25 0条评论 1006点热度 0人点赞 admin 阅读全文