Java
文章平均质量分 63
怪盗基德007
这个作者很懒,什么都没留下…
展开
-
Java编程中一些奇怪的问题及其解决方案
服务端开发遇到一个奇怪问题,使用swagger和前端进行交互时,发现接口的入参对象,在swagger上变成了另一个对象,两个类中的成员变量使用了@ApiModelProperty修饰。原因是@ApiModel修饰这两个类是,取得名字一样,或者都没有使用@ApiModel注解修饰,默认给它们一样的名字。解决方法:使用@ApiModel修饰这2个类,value设置不同值或不设置,或者只用@ApiModel修饰其中一个类。原创 2023-02-16 19:15:52 · 290 阅读 · 0 评论 -
Java并发——多线程
创建线程的方法一、继承Thread自定义线程类继承Thread,并重写run方法创建自定义线程类的对象调用对象的start方法二、实现Runnable自定义类实现Runnable接口,并重写run方法创建自定义类对象创建Thread类对象,并传入自定义类对象调用线程类对象的start方法自定义类实现Callable接口,并重写call方法创建实现类对象创建线程池,并传入实现类对象获取执行结果ExecutorService es = Executors.newFixedTh原创 2021-08-19 08:36:06 · 182 阅读 · 0 评论 -
Java并发——线程安全
一、线程安全的定义如果一个对象可以安全地被多个线程同时使用,那么它就是线程安全的。(这个定义没有可操作性)当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么就称这个对象是线程安全的。——Brian Goetz《Java并发编程实战》二、共享数据线程安全程度分类按照线程安全的”安全程度“由强到弱,可以把Java语言中各种操作共享的数据分为五类不可...原创 2020-08-18 23:17:40 · 164 阅读 · 0 评论 -
Java并发——锁优化
自旋锁让请求锁的线程执行忙循环(自旋)而不放弃处理器的执行时间,这项技术就是自旋锁。jdk1.4.2中引入,默认关闭。jdk6中默认开启。自旋次数默认10次,可以使用参数修改。jdk6中引入了自适应自旋,即自选时间不再固定,而是由前一次在同一锁上的自旋时间及锁的拥有者的状态来决定。如果在同一锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行,那么虚拟机认为这次自旋也很可能成功,进而允许自旋等待较长时间,比如100次忙循环。如果对某个锁,自旋很少成功获得锁,那么以后获取这个锁可能直接省略掉...原创 2020-09-02 23:38:51 · 200 阅读 · 0 评论 -
Java中使用注解校验参数
一、参数校验的注解Java中参数校验的注解来自三方面,分别是javax.validation:validation-api,对应包javax.validation.constraints org.springframework:spring-context,对应包org.springframework.validation org.hibernate:hibernate-validator,对应包org.hibernate.validator.constraints1.啊validatio原创 2021-02-09 17:35:23 · 8992 阅读 · 0 评论 -
设计模式——代理模式
慕课网,模式的秘密——代理模式,https://www.imooc.com/video/4877代理模式:为其他对象提供一种代理,以控制对这个对象的访问。代理对象起到中介的作用,可以去掉功能或是增加额外服务。几种代理模式远程代理,类似客户端-服务器,为不同地理的对象,提供局域网代表对象。 虚拟代理:根据需要,将资源消耗很大的对象进行延迟,真正需要的时候才创建。 保护代理:控制对一个对象的访问权限。 智能引用代理:提供对目标对象额外的功能。代理的两种实现方式静态代理:代理和被代理对象在原创 2020-07-26 23:32:09 · 119 阅读 · 0 评论 -
工具篇:Java中邮件类MimeMessage说明
MimeMessage类位于javax.mail.internet包下,是用于发送邮件的一个类,其中header变量包含了众多与邮件头信息有关的变量headers头信息 索引序号 变量名 含义 0 Return-Path 1 Received 2 Resent-Date 3 Resent-From 4 Resent-Sender 5 Resent-To 6 Re...原创 2020-06-04 14:47:52 · 4080 阅读 · 0 评论 -
Java编码建议
一、变量的命名虽然变量区分大小写,但是不建议以大小写区分变量 变量名可以包含字母、数字、下划线(_)和美元符号($),但是不建议在变量名中使用美元符号 为提高可读性,建议每行只定义一个变量 建议变量的声明尽可能靠近第一次使用 建议类和实例field尽可能在声明时进行初始化,而不使用系统的默认值...原创 2019-06-05 15:21:27 · 146 阅读 · 0 评论 -
Java代码笔记——集合类和数组有关的操作
一、类型转换1. 数组转列表public enum Month{ JAN, FEB, MAR; public static List<Month> asList(){ Month[] months = Month.values(); List list = Arrays.asList(array); return list; }}2...原创 2019-03-30 18:30:59 · 168 阅读 · 0 评论 -
Java代码笔记——日期操作
日期操作主要使用Date、Calendar和SimpleDateFormat类,Date类对象可以获取时间,Calendar类可以对日期进行加减操作,而SimpleDateFormat类可以在日期和字符串之间转换。import java.util.Calendar;import java.util.Date;import java.text.SimpleDateFormat;impor...原创 2018-12-28 15:03:46 · 156 阅读 · 0 评论 -
Java实现——判断一个数是否是质数
质数(又名素数):只能被1和它本身整除的正整数(它本身不能是1,最小的质数是2,2也是唯一的偶数质数)。存在除1和它本身外的因数的正整数是合数。判断一个数是否是质数时,只要试到它的平方根即可。一个合数分解质因数时,最大质因数不会大于它的平方根,所以循环从2到sqrt(n)即可。public boolean prime(int n){ if(n < 2){ return false;...原创 2017-09-19 21:48:20 · 16326 阅读 · 3 评论 -
算法:两个栈实现一个队列——Java实现
import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push(int node) { stack1.push(node); } public原创 2018-05-09 14:25:05 · 176 阅读 · 0 评论 -
算法:求斐波那契数列第n项(兔子繁殖,青蛙跳台阶)——Java实现
f(n) = f(n-1) + f(n-2), f(0) = f(1) = 1 public int f(int n){ if(n < 0){ return -1; } if(n == 0 || n == 1){ return 1; } return f(n - 1) + f(n - 2); }转载 2017-09-19 21:44:47 · 1510 阅读 · 0 评论 -
工具篇:java
jarjar包有关的命令jar tf name.jar : 查看jar包里的文件后台启动nohup java -jar xxx.jar &为了避免进程意外终止引起的问题,可以使用supervisor来管理后台启动的进程。当进程中止后,supervisor可以保证自动重启。...原创 2018-12-12 15:29:47 · 143 阅读 · 0 评论 -
Java代码笔记——读取文件
一、读取yaml文件<dependency> <groupId>org.jyaml</groupId> <artifactId>jyaml</artifactId> <version>1.3</version> </dependency>i...原创 2018-12-12 16:16:34 · 272 阅读 · 1 评论 -
工具篇:spring-boot的maven依赖包
spring-boot<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncodi...原创 2018-12-19 17:10:54 · 2195 阅读 · 1 评论 -
Java语言学习笔记(一)——基础知识
main方法方法签名可以增加final、synchronized关键字,且public和static的顺序也可以换位。以下签名都是正确的。public static void main(String[] args)static public void main(String[] args)public static final void main(String[] args)p...原创 2018-12-20 17:02:14 · 471 阅读 · 0 评论 -
字符串反转
这里提供两种方法实现。(1)使用循环而非递归,时间复杂度O(n),空间复杂度T(n)。public String reverseLoop(String s){ if(s == null || s.length() <= 1){ return s; } StringBuffer sb = new StringBuffer原创 2017-09-01 10:08:19 · 744 阅读 · 0 评论