
Java
文章平均质量分 57
java的相关编程技巧,一些应用代码案例。
菜鸟小窝
这个作者很懒,什么都没留下…
展开
-
String可变
如果非要改变String的值也是可以的,改变方法如下,不推荐使用,否则可能造成不好的后果。这里可以通过反射改变String的value值。查看源码就是段代码修改了String的值。原创 2021-03-17 22:44:12 · 207 阅读 · 0 评论 -
IntelliJ IDEA 特殊注释TODO、FIXME、XXX
如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。原创 2023-02-21 10:01:27 · 4249 阅读 · 0 评论 -
java使用Scanner从控制台读入
【代码】java使用Scanner从控制台读入。原创 2022-11-22 12:31:29 · 411 阅读 · 0 评论 -
SpringBoot自定义错误页
Spring Boot 中的错误默认是由= null)?}其中, errorHtml方法用来返回错误HTML页面, error用来返回错误JSON,具体返回的是HTML还是JSON,则要看请求头的Accept参数。返回JSON的逻辑很简单,不必过多介绍,返回HTML的逻辑稍微有些复杂,在 errorHtml方法中,通过调用resolveErrorView方法来获取一个错误视图的ModelAndView。原创 2022-11-08 14:25:16 · 2242 阅读 · 0 评论 -
异步线程使用Request存在问题
如果我们将request传递到异步线程中使用,可能获取不到参数,并且会导致后续的请求,使用到这个线程也会出问题。原因就是request对象会被重复使用。原创 2022-09-22 12:18:57 · 1341 阅读 · 0 评论 -
Java实现首字母转大写、小写StringUtils.capitalize
Java实现首字母转大写、小写StringUtils.capitalize原创 2022-09-20 17:12:02 · 2730 阅读 · 0 评论 -
java中的异常处理分析
java中的异常处理分析原创 2022-09-05 17:20:49 · 247 阅读 · 0 评论 -
aspectj切面织入
AspectJ 是一个 AOP 的具体实现框架。AOP(Aspect Oriented Programming)即面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AspectJ不但可以通过预编译方式(CTW)和运行期动态代理的方式织入切面,还可以在载入(Load Time Weaving, LTW)时织入。AspectJ 扩展了Java,定义了一些专门的AOP语法。原创 2022-09-05 16:11:37 · 1582 阅读 · 0 评论 -
java指令重排案例
java指令重排案例。原创 2022-07-22 16:12:20 · 542 阅读 · 0 评论 -
Java中的parallelStream
Java 中的 parallelStream 的底层实现为 ForkJoinPool 。线程池是所有并行流共享的。线程池的线程数量和CPU核数一致。需要等待任务全部执行完毕,主线程(调用线程)才继续往下执行。注意:因为线程池是全局共享的,所以我们尽量不要在 parallelStream 中执行阻塞任务,否则会影响到整个系统中其他的 parallelStream 任务执行的。下面的案例中使用了2个新线程,在其中分别执行 parallelStream 。线程A启动后,我们暂停2秒,目的是为了让线程A中的原创 2022-07-09 00:30:22 · 5374 阅读 · 0 评论 -
Java中Stream配合Lambda使用详解
Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的Lambda ,给我们操作集合(Collection)提供了极大的便利。Stream流是JDK8新增的成员,允许以声明性方式处理数据集合,可以把Stream流看作是遍历数据集合的一个高级迭代器。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找/筛选/过滤、排序、聚合和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询原创 2022-07-07 18:59:48 · 2563 阅读 · 0 评论 -
Java中的Lambda
大家应该都知道面向对象的特性(抽象、封装、继承、多态)。其实在 出现之前,我们关注的往往是某一类对象应该具有什么样的属性,当然这也是面向对象的核心–对数据进行抽象。但是出现以后,这一点开始出现变化,在某种场景下,更加关注某一类共有的行为(这与之前的接口有些类似),这也就是提出函数式编程的目的。面向对象编程到面向行为编程的变化我们知道,对于一个变量,我们可以赋给其一个**“值”**。如果你想把**“一块代码”**赋给一个变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做的变量:在之前,这个是做不到的原创 2022-07-07 18:56:16 · 4495 阅读 · 0 评论 -
ThreadLocal详解
使用线程池时,线程会被复用,因此线程池中的线程,执行任务时如果要获取提交线程(即提交任务到线程池的线程)保存的对象,则可以使用。使用线程池时,线程会被复用,因此线程池中的线程,执行任务时如果要获取提交线程(即提交任务到线程池的线程)保存的对象,还可以使用。看这个名称大概就能猜出是一个装饰器设计原理。spring 4.3 提供 TaskDecorator。原创 2022-07-05 13:02:52 · 483 阅读 · 0 评论 -
Spring中子线程获取RequestAttributes
在子线程中使用下面的方法获取 requestAttributes 为空。二、解决方法这里提供两种解决方法,方法一适用于某个请求的业务方法;方法二具有通用性,适用于整个项目。注意:以下两种解决方法,需要在 Servlet 的生命周期内使用,否则会导致 requestAttributes 中获取到的属性为空。在子线程启动前,加入下面的代码,可以使 requestAttributes 被子线程继承。2、方法二添加一个配置类。三、原理Servlet 初始化时,会调用 FrameworkServlet 中原创 2022-07-05 12:34:44 · 4337 阅读 · 0 评论 -
Java Web 实现下载文件
Java Web 实现下载文件Response.setContentType 可设置属性原创 2022-06-30 13:19:24 · 2625 阅读 · 0 评论 -
Java 文件下载,文件名乱码问题解决。
JAVA文件下载时乱码有两种情况:例如: 变为 如果还是乱码,参考下面的代码2、url包含中文乱码,提示找不到文件修改tomcat下的conf/server.xml文件,添加一个属性:URIEncoding,将该属性值设置为UTF-8...原创 2022-06-30 12:39:43 · 10955 阅读 · 0 评论 -
Java NIO
JAVA NIO 原理解析以及使用案例原创 2022-06-16 15:49:01 · 473 阅读 · 0 评论 -
JAVA父类、子类初始化步骤
java对象初始化步骤原创 2022-06-09 19:02:09 · 834 阅读 · 0 评论 -
new String(“abc“) 创建了几个对象?
本文分析了以下3个问题:new String("abc") 创建对象数量问题。String对象在什么情况下会复用。String对象,在什么情况下会复用常量池中String的value对象。原创 2020-04-27 11:13:54 · 2202 阅读 · 0 评论 -
RequestContextHolder
顾名思义,持有上下文的Request容器。从中我们可以获取到、、等对象。三、实现原理1、存储变量首先分析这个类,里面有两个保存当前线程下的。2、获取3、存入request和response等是什么时候设置进去的?参考:.........原创 2022-06-05 23:06:55 · 3213 阅读 · 0 评论 -
SpringAop使用方法
实现AOP的切面主要有以下几个要素:使用@Aspect注解将一个java类定义为切面类使用@Pointcut定义一个切入点,可以是一个规则表达式,比如下例中某个package下的所有函数,也可以是一个注解等。根据需要在切入点不同位置的切入内容2、将方法定义为切入点3、多个切入点如果你想同时拥有多个切入点的话,可以使用逻辑操作符 “”,“”等,如下所示:三、切入点执行顺序使用@Before在切入点开始处切入内容使用@After在切入点结尾处切入内容使用@AfterReturning在切入点retu原创 2022-06-03 12:50:03 · 238 阅读 · 0 评论 -
多线程交替输出AB
多线程案例原创 2022-05-30 22:55:27 · 240 阅读 · 0 评论 -
JavaWeb上传大小限制
方法一spring: servlet: multipart: max-file-size: 20MB max-request-size: 20MB方法二在扫描包下添加如下类,然后再application.yml 添加配置 import javax.servlet.MultipartConfigElement; import org.springframework.beans.factory.annotation.Value;import org.spri原创 2022-05-24 13:47:18 · 1243 阅读 · 0 评论 -
Java的JVM字节码指令集
JVM基本指令iconst_1 int型常量值1进栈bipush 将一个byte型常量值推送至栈顶iload_1 第二个int型局部变量进栈,从0开始计数istore_1 将栈顶int型数值存入第二个局部变量,从0开始计数iadd 栈顶两int型数值相加,并且结果进栈return 当前方法返回voidgetstatic 获取指定类的静态域,并将其值压入栈顶putstatic 为指定的类的静态域赋值invokevirtual 调用实例方法invokespecial 调用超类构造方法、实例原创 2022-05-12 22:25:17 · 622 阅读 · 0 评论 -
微服务指定注册服务的IP
微服务指定注册服务的IP1、概述避免注册中心获取错误的ip地址,我们可以用过以下的配置来进行限制。2、服务IP配置(1)配置下面四个配置选择其一即可。spring: cloud: nacos: discovery: # 如果选择固定Ip注册可以配置 ip: 192.168.1.12 # 如果选择固定网卡配置项 networkInterface: wlan0 inetutils: # 使用正则原创 2022-05-02 23:11:32 · 1652 阅读 · 0 评论 -
mybatis的一级缓存和二级缓存
一级缓存1、说明mybatis默认开启一级缓存,一级缓存的作用域是SqlSession范围的,当在同一个sqlSession中执行两次相同的sql语句时,第一次执行完毕会将数据库中查询的数据写到缓存,第二次查询时会从缓存中获取数据,不再去底层数据库查询,从而提高查询效率。在分布式的环境中,mybatis的一二级缓存非常危险,二级缓存一定要关闭,一级缓存视情况关闭一级缓存失效的四种情况:sqlSession不同。sqlSession相同,查询条件不同。因为缓存条件不同,缓存中还没有数据。sq原创 2022-04-14 17:37:26 · 3269 阅读 · 0 评论 -
java 多线程同时操作一个文件
下面的案例证明了文件读取操作和文件写出操作可以同时进行,文件写出和文件写出也可以同时进行package com.sun.redis;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class T { public static void main(String[] args) { //文件写出操作 new Thread(() -&原创 2022-03-17 18:40:32 · 3799 阅读 · 0 评论 -
wkhtmltox使用(html转pdf或图片)
html转PDF//wkhtmltopdf在系统中的路径 private static final String toPdfTool = "D:\\Downloads\\wkhtmltox-0.12.6-1.mxe-cross-win64\\wkhtmltox\\bin\\wkhtmltopdf.exe"; private static final String toImgTool = "D:\\Downloads\\wkhtmltox-0.12.6-1.mxe-cross-win64\原创 2022-02-23 09:07:45 · 6145 阅读 · 3 评论 -
Java内部类
Java 内部类是定义在其他类内部的类,具有一些特殊的特性和用途。以下是 Java 内部类的主要特性和使用。内部类可以增加封装性、组织性和代码复用性。它们允许将相关的类放在一起,并隐藏一些实现细节。总之,Java 内部类提供了一种将类组织在一起的机制,以及在某些情况下实现更优雅和灵活的设计。使用内部类时,需要根据具体需求选择不同类型的内部类,并理解它们的特性和限制。原创 2022-02-18 12:53:52 · 1103 阅读 · 0 评论 -
java使用robot实现控制电脑
import java.awt.AWTException;import java.awt.MouseInfo;import java.awt.Point;import java.awt.Robot;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;public class App { public static void main(String[] args) { try { Thread.sleep(1原创 2021-07-19 16:36:58 · 1711 阅读 · 0 评论 -
2021-07-17 Java代码的自动优化
代码案例一、原始代码public class Test { public static void main(String[] args) { long then = System.currentTimeMillis(); double result; for (int i = 0; i < 1000000000; i++) { result = i*i; } long now = Sys原创 2021-07-17 17:19:17 · 250 阅读 · 0 评论 -
JAVA中强引用、软引用、弱引用、虚引用
强引用软引用弱引用虚引用原创 2020-11-05 22:16:11 · 144 阅读 · 0 评论 -
Linux-Centos7下编译OpenCV 4.1.0
一、安装jdk我的jdk版本。二、安装python3.6注意:python版本可根据实际情况去调整,如果是opencv2.4.10,那么就需要python2.7。Linux下可能已经有python2,可以先确定下。注意替换以下命令中的python版本号。./configure --prefix=/usr/local/pythonmake && make install#更改默认python的bin文件名mv /usr/bin/python /usr/bin/py原创 2020-08-05 10:26:25 · 891 阅读 · 0 评论 -
Java SPI
SPI是什么SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。整体机制图如下:Java SPI 实际上是**“基于接口的编程+策略模式+配置文件”**组合实现的动态加载机制。系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在原创 2020-07-30 15:26:21 · 289 阅读 · 0 评论 -
HashMap 源码查看 (jdk1.8.0_31)
先从put方法开始看起。这里非常简单,调用了一个putVal的方法,然后将key调用了hash方法。 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }hash方法:这里,先是判断了key的值是否为空,然后再次调用了key的hashCod...原创 2020-07-28 15:59:43 · 226 阅读 · 0 评论 -
验证 synchronized 可见性
原始代码public class Test { public static boolean flag = false; public static void main(String[] args) throws Exception { new Thread(() -> { while (true) { if (flag) { System.out.println("fla原创 2020-07-28 13:23:59 · 180 阅读 · 0 评论 -
Java中将Html转图片
html转图片原创 2020-06-10 18:58:17 · 29133 阅读 · 11 评论 -
java使用ftp案例
读取ftp图片//图片所在位置String picUrl = "./paperpic";logger.info(picUrl);//图片名称String picName = "paper_001.Jpg";response.reset();OutputStream outputStream = response.getOutputStream();//OutputStream outputStream = new FileOutputStream("e://paper_001.jpg");原创 2020-06-01 17:27:10 · 569 阅读 · 1 评论 -
Java 获取系统属性
Properties props=System.getProperties(); //获得系统属性集 String osName = props.getProperty("os.name"); //操作系统名称 String osArch = props.getProperty("os.arch"); //操作系统构架 String osVersion = props.ge...原创 2020-03-05 15:35:32 · 162 阅读 · 0 评论 -
mybatis支持的注释
正常注释(建议使用)<!-- 注释内容 -->在mybatis中 postgre数据库,我使用了以下注释也没问题--注释内容mysql中注释(未尝试在mybatis中使用以下注释)1. #注释内容2. -- 注释内容,注意看着--后面有个空格3. /*注释内容*/...原创 2020-02-07 19:12:47 · 3611 阅读 · 0 评论