java基础
文章平均质量分 55
y41992910
紧跟时代潮流,努力进步,走在前列
展开
-
java注解
注解什么是注解?注解是一种元标签.注解也就是一种标签@Retention()注解@Retention可以用来修饰注解,是注解的注解,称为元注解。Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用。RetentionPolicy有3个值:CLASS RUNTIME SOURCE原创 2020-05-16 14:15:27 · 168 阅读 · 0 评论 -
springmvc-异步请求-返回DeferredResult
61、springmvc-异步请求-返回DeferredResult1.线程中创建DeferredResult<Object> deferredResult对象并返回.主线程推出2.当拿到deferredResult对象的线程调用了deferredResult.setResult(order);方法之后,response就可以拿到结果并返回3.假如超出等待时间,则直接提示失败. @ResponseBody @RequestMapping("/createOrder") publi原创 2020-05-16 14:11:41 · 675 阅读 · 0 评论 -
java用命令行的方式启动jar包
格式java -jar [jar包的路径] [--参数名称键值对]例如java -jar springcloud_eureka.jar --spring.profiles.active=peer1java -jar springcloud_eureka.jar --spring.profiles.active=peer2原创 2020-05-16 14:09:20 · 1444 阅读 · 0 评论 -
Servlet为什么要3.0(异步)
在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求。即每一次Http请求都由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成, 而IO操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,在并发量越来越大的情况下,这将带来严重的性能问题。即便是像Spring、Struts这样的高层框架也脱离不了这样的桎梏,因为他们都是建立在Servlet之上的。为原创 2020-05-16 14:01:44 · 178 阅读 · 1 评论 -
正则表达式匹配任意字符的写法
原来正则表达式中的".“代表的是除换行以外的任意字符,如果要真正代表任意字符,需要把换行符也加进去,但是经过测试”[.\n]“不生效,可以使用”\s\S"代表,即所有空字符+所有非空字符。注:为了适用于java程序,上述表达式已把斜杠替换成双斜杠。package com.hgh.springcloud.feign;import java.util.regex.Matcher;import...原创 2020-01-11 13:18:36 · 5550 阅读 · 2 评论 -
java NIO方式进行读写文件和内容
java NIO方式进行读写文件和内容import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;...原创 2019-03-13 16:05:33 · 4414 阅读 · 0 评论 -
effective java 第24条 消除非受检警告
第24条 消除非受检警告该指明类型就尽量指明类型.不能指明的,则最小化范围的使用@SuppressWarnings(“unchecked”)并写明原因不要在类上面用@SuppressWarnings(“unchecked”),不然会覆盖整个类的类型检查...原创 2019-05-04 19:58:56 · 234 阅读 · 0 评论 -
effective java 第23条 请不要在新代码中使用原生态类型
第23条 请不要在新代码中使用原生态类型原生态类型没有类型检查,容易出错,除了两种适用的情况之外,就不要使用学习了以下几种方式list<?>List<? extends xxx>List<E>List<E extends xxx>List<E extends Comparable<E>> /** * L...原创 2019-05-04 19:56:01 · 112 阅读 · 0 评论 -
github上有关java的高质量项目(收集)
https://www.zhihu.com/question/24834285/answer/251369977https://blog.csdn.net/hbtj_1216/article/details/78450233参考你需要知道的开源项目GuavaGuava是Google的开源项目,它包含了Google工程师经常使用的内部核心库,例如集合、缓存、原语支持、并发库、通用注释、字符...转载 2019-04-24 09:34:09 · 422 阅读 · 0 评论 -
计算一个java类占用的内存
总共:96byte1KB = 1024BYTE1024/96=10.61MB = 1024KB = 可以缓存10240个数据.public class LimitInfoByKeySnBO { //1.对象头 8 byte //2.retCode 4byte //3.retMsg 空,8(对象头)+4(引用)+4(对齐)byte //4.residualValidityPe...原创 2019-04-28 15:37:53 · 1033 阅读 · 0 评论 -
Enum枚举类的学习
//构造器是不允许其他类型的修饰,只能private,所以枚举类无法在类外进行初始化,保证了它不会多出几个另外的实例//所以枚举的实例本身也就是一个初始化好的类的示例(调用了构造函数初始化)//DAY调用了EnumTest2(),SECOND(100,"秒")调用了EnumTest2(Integer code,String message)import java.util.HashMap;...原创 2019-04-25 22:16:45 · 136 阅读 · 0 评论 -
ArrayList和LinkedList的优缺点和使用场景
参考源码,可以知道,ArrayList是用数组方式来实现的,要求内存连续.所以ArrayList查找数据和替换数据是很快的.也就是get(int index)和set(int index)方法但是ArrayList进行add(int index)和delete(int index)就很慢,因为需要在指定位置,把index后面的元素,全部都往后移动.LinkedList增加元素,删除元素,速度...原创 2019-04-16 14:12:48 · 1860 阅读 · 0 评论 -
transient关键字-标记后的字段不会被序列化
在讨论transient之前,有必要先搞清楚Java中序列化的含义;Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输,一般当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让我们的实体类实现Serializable接口,目的就是为...原创 2019-04-16 13:42:07 · 342 阅读 · 0 评论 -
effective java 第25条 列表优先于数组
第25条 列表优先于数组/** * 25条,列表优先于数组 * sub为super的子类型,则sub[]就是super[]的子类型. * 而 list<sub>则不会是list<super>的子类型. * 这种不是说泛型是有缺陷的,而是说数组是有缺陷的. * */ public void fanxing25() { //下面这种写法是合法的...原创 2019-05-04 19:59:42 · 177 阅读 · 0 评论 -
effective java 第27条 优先考虑泛型方法
第27条 优先考虑泛型方法package .fanxing27;public class UnaryFunctionClass { private static UnaryFunction<Object> IDENTY_FUNCTION= new UnaryFunction<Object>() { @Override public Objec...原创 2019-05-04 21:52:41 · 186 阅读 · 0 评论 -
深入理解java io
理解几个最基础的流 字节流输入:inputStream 字节输出流:outputStream 字符输入流:Reader 字符输出流:Writer文件对象:FileRandomAccessFile(随机文件操作):一个独立的类,直接继承至Object.它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。输入流想要转换为文件,则需要构建一个文件输入流,并且构建一个文件输出流,和一个文件对原创 2018-02-27 22:02:05 · 541 阅读 · 0 评论 -
java获取某个时间指定间隔后的日期(间隔单位年月日周等)
java获取某个时间指定间隔后的日期(间隔单位年月日周等)使用Calendar的Calendar.add方法 public static void main(String[] args) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Cal...原创 2019-05-05 15:06:41 · 1853 阅读 · 0 评论 -
java并发工具
参考:https://blog.csdn.net/coderinchina/article/details/54914852常用:CountDownLatchsemaphore1.CountDownLatch是一个同步计数器用于多个线程之间的同步计数,比如一个主线程要做n件事情,可以吧同步计数器传递给要做这些事情的子线程,子线程完成了,则计数器减1,主线程中计数器等待完成,则主线程返回...转载 2019-05-05 11:29:52 · 1192 阅读 · 0 评论 -
java BIO 读取文件和写出到文件
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;p...原创 2019-03-13 11:02:27 · 450 阅读 · 0 评论 -
java BIO 读取文件和写出到文件
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;p...原创 2019-03-12 13:12:53 · 683 阅读 · 0 评论 -
将完整的异常堆栈输出到某个字符串中
import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.io.StringWriter;public class ExceptionUtils { public static void main(String[] args) {...原创 2018-06-05 12:11:39 · 1188 阅读 · 0 评论 -
List.isEmpty与List.size() > 0
List<String> list = new ArrayList<String>(); System.out.println("list.isEmpty():" + list.isEmpty()); System.out.println("list.size() > 0:" + (list.size() > 0...原创 2018-05-21 14:25:18 · 1764 阅读 · 0 评论 -
spring异步任务Async
启用异步线程池package com.hgh.springboot.spring4.ch3_2.taskexecutor;import java.util.concurrent.Executor;import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;import org.springframe...原创 2018-05-17 22:09:28 · 196 阅读 · 0 评论 -
java-将字符串或者字节数组等,转换为输入流
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(new byte[1024]);ByteArrayInputStream byteArrayInputStream2 = new ByteArrayInputStream("1111".getBytes(Charset.forName("UTF-8")));原创 2018-05-03 10:44:06 · 9771 阅读 · 2 评论 -
BIO,NIO,AIO,path,paths,files,channel, buffer
BIO:阻塞方式的IONIO:非阻塞式的IOAIO:异步IO具体可以参考:https://blog.csdn.net/anxpp/article/details/51512200原创 2018-04-07 09:14:19 · 153 阅读 · 0 评论 -
在一个电脑上装多个JDK并切换
参考结合: https://blog.csdn.net/yuruixin_china/article/details/53607248 https://blog.csdn.net/yx1214442120/article/details/550992131 . 准备两个版本的jdk我的两个jdk路径为:D:\jdk1.7.0_80D:\Program Files\Java\jdk1.8.0_1转载 2018-04-03 14:14:21 · 198 阅读 · 0 评论 -
多个文件在一次循环中写出到本地,但是输入输出流未关闭导致总有一个文件提示被占用
多个文件在一次循环中写出到本地,但是输入输出流未关闭导致总有一个文件提示被占用 在没有这两句代码的时候,因为流未被关闭,所以多文件的时候,总有一个文件显示被流占用了 使用完流之后,一定要马上关闭,而不是等finally来关闭,它只是做最后的检查而已. os.close(); in.close(); for (int i = 0; i < fileOfBills.size原创 2018-01-31 21:40:38 · 2238 阅读 · 1 评论 -
java代理的几种实现
一.静态代理 1。先定义一个接口以及接口中的方法public interface UserInterface { void save();}2。接口的实现类/** * 接口实现 * 目标对象 */public class User implements UserInterface{ @Override public void save() { // TO原创 2017-10-25 21:52:29 · 1684 阅读 · 0 评论 -
线程池和线程调度
1,线程池有一个缓冲队列:ArrayBlockingQueue final ThreadPoolExecutor threadPool = new ThreadPoolExecutor( CORE_POOL_SIZE, MAX_POOL_SIZE, KEEP_ALIVE_TIME, TimeUnit.SECONDS,new ArrayBlocki原创 2017-03-27 21:13:47 · 1531 阅读 · 0 评论 -
java线程池和消息队列的运行流程分析
1.通过以下代码,向线程池中不断的放入线程任务 public static void main(String[] args) { for(int i=0;i<100;i++){ new TestDriver().sendMsg( Integer.toString( i ) ); } //new TestDriver().sendM原创 2017-05-13 22:17:01 · 2898 阅读 · 0 评论 -
java访问控制的意义
在4种访问控制中,public一般称作公共权限,其限制最小,也可以说没有限制,使用public修饰的内容可以在其它所有位置访问,只要能访问到对应的类,就可以访问到类内部public修饰的内容,一般在项目中开放的方法和构造方法使用public修饰,开放给项目使用的类也使用public修饰protected一般称作继承权限,使用protected修饰的内容可以被同一个包中的类访问也可以在不同包内部的原创 2017-04-06 10:09:15 · 440 阅读 · 0 评论 -
java写出文件的几种方式:
@Test public void testBlogb() throws Exception{ //往数据库中存大数据// Person person = new Person();// person.setBirthDate(new java.sql.Date(new Date().getTime()));// person.setNam原创 2017-04-12 22:46:36 · 1085 阅读 · 0 评论 -
java中如何在循环中准确删除集合中的某个元素,并且不引起错误
最好的方式:iterator // 系统配置的应用集合 List<ApplicationInfo> applicationInfos = new ArrayList<ApplicationInfo>(); // 移除已经存在了的应用集合 Iterator<ApplicationInfo> iterator = applicationInf原创 2017-03-21 08:59:34 · 406 阅读 · 0 评论 -
java异步在项目中的使用
/** * 测试异步的执行文件上传,可以成功的支持多线程和异步 * @author he_guanhong * */@Componentpublic class AsyncTaskFileUploadTaskService { @Autowired private FileUpLoadTaskService fileUpLoadTaskService; @A...原创 2018-06-05 14:39:10 · 931 阅读 · 0 评论 -
java线程有返回值的做法
有时候,我们要用线程来异步的处理某些耗时的任务,或者关联性不大的任务,并且希望得到这个线程的执行的结果,也就是有个返回值告诉我们任务执行的怎么样java提供一个有返回值的线程来实现这种需求. Callable 1.实现Callable接口,定义可返回结果的线程任务 public class TaskCallable implements Callable<String>...原创 2018-06-06 10:25:05 · 659 阅读 · 0 评论 -
java源码学习1-集合
public interface Collection<E> extends Iterable<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray();...原创 2018-08-02 14:48:29 · 459 阅读 · 0 评论 -
java-SringBuilder线程不安全-StrngBuffer线程安全
java-SringBuilder线程不安全-StrngBuffer线程安全,主要就是看看源码上有没有加锁查看源码可知StringBuffer public synchronized StringBuffer append(CharSequence s) { toStringCache = null; super.append(s); r...原创 2019-03-11 13:50:03 · 187 阅读 · 0 评论 -
java泛型
1.泛型。泛型主要有三种用途:泛型类,泛型接口,泛型方法主要用于模板方法之类的地方。提供一种通用的功能。在方法入参,返回值,属性值等类型不明确,或者需要由调用方指定的时候,就使用泛型泛型类测试,主要用于类的属性类型,或者方法入参不确定的时候package com.hgh.genericparadigm;/** * 泛型类测试,主要用于类的属性类型,或者方法入参不确定的时候 * @a...原创 2018-12-18 11:03:56 · 114 阅读 · 0 评论 -
java可变参数...var
1.可变参数和数组的区别。可变参数可以一个都没有,数组必须要有。可变参数本质上也是数组。2.可变参数的用途。应用在参数个数不确定的场景(假如直接定义数组的话,会不兼容非数组的情况,而可变参数支持)我们在编写方法的过程中,可能会遇见一个方法有不确定参数个数的情况。一般我们会用方法重载来解决问题:1 //方法重载,解决参数个数不确定问题2 public void method();3 ...原创 2018-12-18 09:40:35 · 281 阅读 · 0 评论 -
final修饰的方法入参以及入参是基本数据类型和对象的区别
结论:结论1:基本数据类型,用final修饰之后,无法进行再赋值。也就是值和地址都无法修改结论2:引用数据类型,用final修饰之后,无法进行对象赋值。也就是对象引用的地址无法修改。结论3:引用数据类型,用final修饰之后,可以通过方法或者属性值赋值的方式,修改其对象内属性的值(如果对象的属性值是final修饰的,也就无法再赋值了)。也就是对象引用的地址无法修改。package com....原创 2018-12-17 22:07:53 · 1301 阅读 · 0 评论