java
spnier
这个作者很懒,什么都没留下…
展开
-
windows快速安装jdk脚本
echo %cd%echo %path%setx /m JAVA_HOME "%cd%"setx /m classpath "%cd%\lib\dt.jar;%cd%\lib\tools.jar"setx /m path "%path%;%cd%\bin;%cd%\jre\bin"pause将此脚本保存为 .bat文件,放在jdk的bin同级目录,双击即可完成jdk环境变量配置...原创 2021-09-25 21:29:15 · 720 阅读 · 1 评论 -
springAop处理异常参数问题
Aop切面处理异常参数原创 2021-07-07 21:50:54 · 340 阅读 · 0 评论 -
不创建第三个变量的情况下交换两个变量的值
int a = 500, b = 600;// 方法一a = a + b;b = a - b;a = a - b;System.out.println(a);System.out.println(b);// 方法二a = a ^ b;b = a ^ b;a = a ^ b;System.out.println(a);System.out.println(b);原创 2021-06-17 16:06:27 · 130 阅读 · 0 评论 -
神奇的代码
java中让 a==1 && a==2为truepublic static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Class cache = Integer.class.getDeclaredClasses()[0]; Field c = cache.getDeclaredField("cache"); c.setAccessible(t.原创 2021-06-04 22:09:52 · 192 阅读 · 0 评论 -
逗号隔开字符串与list互转
String str = "1,2,3,4,55,66,77,12"; List<Integer> integerList = Arrays.asList(str.split(",")).stream().map(Integer::valueOf).collect(Collectors.toList()); String strList = integerList.stream().map(String::valueOf).collect(Co...原创 2021-06-04 22:06:06 · 290 阅读 · 0 评论 -
java创建对象的方式
通过 new 关键字 这是最常用的一种方式,通过 new 关键字调用类的有参或无参构造方法来创建对象。比如 User user1 = new User(); 通过 Class 类的 newInstance() 方法 这种默认是调用类的无参构造方法创建对象。比如 User user2 = (User)Class.forName("com.example.demo.bussniss.domain.User").newInstance(); 通过 Constructor 类的 ne原创 2021-01-08 17:19:06 · 69 阅读 · 0 评论 -
异步线程池优化查询
controller方法中存在。1.查询数据库获取结果AList2.查询数据库获取结果BList3.AList与BList结果进行处理此时可以使用线程池异步处理1和2.配置文件:excutor: # 线程池配置 corePoolSize: 4 # 核心线程数 maxPoolSize: 20 # 最大线程数 queueCapacity: 20 # 最大等待队列 keepAliveSeconds: 20 # 最大存活时长 allowCoreThreadTimeOut原创 2020-11-14 14:52:59 · 323 阅读 · 0 评论 -
java8之lambda表达式高级应用
package com.fhc.modules.api.utils;import java.util.Arrays;import java.util.Comparator;import java.util.IntSummaryStatistics;import java.util.List;import java.util.function.Predicate;import java.util.stream.Collectors;/*** lambda Test*/.原创 2020-09-03 21:14:57 · 820 阅读 · 0 评论 -
java之RequestContextHolder获取HttpServletRequest、HttpServletResponse
/** * 原来写法 * * @param request * @param response */ @GetMapping(value = "/download") public void download(HttpServletRequest request, HttpServletResponse response) { // service层需要操作HttpServlet的时候还得需要在controll...原创 2020-07-28 20:15:32 · 722 阅读 · 0 评论 -
汉字转拼音工具类
package com.example.demo.utils;import net.sourceforge.pinyin4j.PinyinHelper;/** * @author :suyanlong * @date :Created in 2020/6/30 14:18 * @description:ceshi * @version: 1.0 */public class PinYinUtils { /** * 获取汉字首字母的方法。如: 张三 --> ZS.原创 2020-07-22 15:28:53 · 301 阅读 · 0 评论 -
java监听文件或文件将爱有没有变化
1.nio监听文件夹变化package com.suyl.candy.test;import java.nio.file.*;public class Test_ResourceListener { public static void main(String[] args) { try { //创建一个监听服务 WatchService service = FileSystems.getDefault().newWat原创 2020-07-17 11:14:24 · 185 阅读 · 0 评论 -
java压缩与解压缩
package com.example.demo.utils;import java.io.*;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;/** * @author :sohikoryuu * @date :Created in 2020/7/8 10:22 * @description:文件压缩与解压缩 * @versi.原创 2020-07-10 11:47:25 · 469 阅读 · 0 评论 -
java中各种路径获取方式
package com.example.demo.utils;import javax.servlet.http.HttpServletRequest;import java.io.File;import java.io.IOException;/** * @author :suyanlong * @date :Created in 2020/7/7 18:19 * @description:获取项目路径工具类 * @version: 1.0 */public class GetP.原创 2020-07-07 19:54:46 · 207 阅读 · 0 评论 -
jar包瘦身
之前项目打jar包,双击maven-package..... 15.9MB==============================================================在pom.xml中加入一下配置,双击打包<build> <finalName>demos</finalName> <plugins> <plugin>原创 2020-07-06 20:18:20 · 638 阅读 · 0 评论 -
HttpClient远程调用发送post请求
package com.test.supnier.util;import com.alibaba.fastjson.JSONObject;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.entity.U.原创 2020-06-24 11:24:19 · 1071 阅读 · 0 评论 -
springBoot中后台解决跨域
前后台联调过程中,前台使用ajax请求会显示跨域后台加入以下配置可解决跨域问题package com.suyl.candy.cros;import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ja..原创 2020-06-19 10:37:58 · 287 阅读 · 0 评论 -
springBoot如何打war包
创建项目的时候选成jar包了,想打war包的话需要改写东西一、修改pom.xml文件将默认的jar方式改为war:<!--默认为jar方式--><!--<packaging>jar</packaging>--><!--改为war方式--><packaging>war</packaging>二、排除内置的Tomcat容器(两种方式都可):1.排除spring-boot-starter-web中的Tomc原创 2020-06-18 10:42:10 · 195 阅读 · 0 评论 -
ftp上传下载工具类
package com.taotao.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache..原创 2020-06-14 17:07:41 · 82 阅读 · 0 评论 -
java字符串相加在jvm中new多少个对象
String s1 = "aaa";String s2 = "bbb" + "ccc";String s3 = s1 + "bbb";String s4 = new String("aaa"); 分析此段代码在java虚拟机中产生了多少个对象一般回答可能是4个:aaa bbbccc aaabbb new的那个;这个回答少了两个:StringBuilder toString的对象使用javap -v xxx.Class 或者javap -cxxx.Class反...原创 2020-06-14 15:12:36 · 679 阅读 · 1 评论 -
java中List如何一边遍历一遍删除里边的元素
分析首先你可能会想到使用下标报错,那就就不使用下标foreach来解决,于是下边代码出现 List<String> platformList = new ArrayList<>(); platformList.add("博客园"); platformList.add("CSDN"); platformList.add("掘金"); platformList.add("简书");原创 2020-06-14 14:55:39 · 786 阅读 · 0 评论 -
关于++i与i++的基础
很有意思的java基础public static void main(String[] args) { int i = 1; i = i++; // i=1 int j = i++; // j=1,i=2// int k = ++i + ++i * i++; // 3 + 4 * 4 , i = 5// int k = i + ++i * i++; // 2 + 3 * 3 ,i = 4 int k = i原创 2020-06-13 09:01:08 · 119 阅读 · 0 评论 -
java静态方法中获取spring容器中的bean
获取上下文工具类:package com.hikvision.pvia.kafka.utils;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.C原创 2020-05-17 21:57:30 · 2877 阅读 · 0 评论 -
springBoot中配置线程池
线程池配置文件(application-threadPool.properties):#################【threadPool config】##################executor.corePoolSize=5executor.maxPoolSize=10executor.queueCapacity=20executor.keepAliveSeconds=60executor.threadNamePrefix=threadPoolExecutor线程池配置,原创 2020-05-17 21:45:07 · 2391 阅读 · 0 评论 -
springBoot配置从配置文件中获取key及value值
springBoot中同时获取key及value值存入map中,配置文件(文件在resource下)如下:config.suyl=19931216config.candy=19940912config.child=20210505加载配置工具类:package com.suyl.candy.tools;import cn.hutool.core.io.FileUtil;import org.apache.poi.util.IOUtils;import org.slf4j.Logg原创 2020-05-17 21:24:42 · 4479 阅读 · 0 评论 -
限流算法与各实现方式及应用场景分析
各种限流算法、实现方式:1.算法令牌通算法、楼通算法、黑名单、白名单2.实现方案有哪些:客户端限流、网关限流、中间件限流、限流组件3.限流具体实现A.google Guava实现客户端方式限流https://my.oschina.net/hanchao/blog/1833612?appinstall=0使用Guava做限流算法B.Nginx实现网关限流和数据响应,下载速率限制C.redis+Lua脚本实现中间件限流D.SpringCloud Alibaba限流组件Sentinel..原创 2020-05-12 23:14:30 · 256 阅读 · 0 评论 -
HTTPS原理
HTTPS HTTPS 的实现原理 为什么数据传输是用对称加密? 为什么需要 CA 认证机构颁发证书? 浏览器是如何确保 CA 证书的合法性? 本地随机数被窃取怎么办? 用了 HTTPS 会被抓包吗? 总结 HTTPS随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS...转载 2020-04-29 11:51:58 · 148 阅读 · 0 评论 -
Java使用JNA调用c++的sdk(dll库)总结
springboot中使用JNA调用c++sdk总结注意:Springboot项目中引用devtools工具可能会引发一直重启问题结构体对应问题一般结构体c++中://用户名登录信息typedef struct tagHikLoginInfo{ char szUserName[64]; // 登录名称 cha...原创 2020-04-15 09:05:17 · 3643 阅读 · 0 评论 -
HashMap线程不安全分析
1.jdk1.7中的HashMap 1.1 扩容造成死循环分析过程 1.2 扩容造成数据丢失分析过程 2.jdk1.8中HashMap 总结 前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。1.jdk1.7中的HashMap在jdk1.8中对Ha...原创 2020-04-03 15:40:40 · 108 阅读 · 0 评论 -
Synchronized在多线程下锁分析
先看下面程序,猜猜结果会是啥???public class TestSynchronized implements Runnable { int b = 100; synchronized void m1() throws InterruptedException { b = 1000; Thread.sleep(500); //6 ...转载 2020-04-02 13:31:01 · 137 阅读 · 0 评论 -
线上cpu使用100%高居不下原因分析
环境:centos7 jdk1.8 springboot 模拟场景 使用springboot创建工程,增加一个http请求。设置无限死循环模拟cpu占用率场景。打成jar包。拷贝到centos7系统中。@SpringBootApplication@RestControllerpublic class CupFullApplication { public static...原创 2020-03-27 15:36:00 · 382 阅读 · 0 评论 -
深入理解HashMap底层原理(基于JDK1.8)
之前经常用HsahMap但是从未了解过底层的实现原理,今天就基于jdk1.8来研究一下HashMap的底层实现。在探讨hashMap前先说一下,两种常见的数据结构,数组与链表。数组:数组具有遍历快,增删慢的特点。数组在堆中是一块连续的存储空间,遍历时数组的首地址是知道的(首地址=首地址+元素字节数 * 下标),所以遍历快(数组遍历的时间复杂度为O(1) );增删慢是因为,当在中间插入或删...原创 2020-03-27 14:13:14 · 176 阅读 · 0 评论 -
JAVA读写excel文件总结
jxl、Poi、EasyExcel、EasyPOI、ExcelKitPoi、EasyExcel、EasyPOI导入EXCEL文档的实现方案有何区别https://blog.csdn.net/allenjoe666/article/details/90902121jxl导入/导出Excel(Maven)https://www.jianshu.com/p/698bebdf2129...原创 2020-03-24 15:20:54 · 320 阅读 · 0 评论 -
Java实现五子棋小游戏
package com.hbfec.ivms.ivms.controller;import javax.swing.*;import java.awt.*;import java.awt.event.*;/** * @author : suyl * @version : v1.0.0 * @date : 2020/3/24 11:43 * @descr : Descripti...原创 2020-03-24 13:17:22 · 127 阅读 · 0 评论 -
java多线程基础
创建线程的两种方式,第三种是再jdk1.8后第二种的变形。1.继承Thread2.实现Runnable接口3.Executors.newCachedThread通过线程池也可以启线程。线程常用方法:sleep()当前线程睡眠,把资源让出来给其他线程yield()让出一下cpu资源,可能立马回来执行,更大可能让队列里其他线程执行。join()有两个线程t1,t2再t2...原创 2020-03-10 21:15:57 · 65 阅读 · 0 评论 -
JVM调优(入门)学习笔记
JVM(jdk1.8)定位垃圾:1.引用计数 (reference count)不能解决循环引用的问题2.根可达算法 (Root Searching)GC Roots 根对象:线程栈变量、静态变量、常量池、JNI指针通过根对象找不着的既是垃圾垃圾回收算法:1.标记清除(Mark-Sweep)问题:位置不连续产生碎片2.拷贝算法(Copying)没有碎片,浪费空间3.标记...原创 2020-03-03 22:12:36 · 167 阅读 · 0 评论