
Java基础
东北一绝、英俊侠
一个假的程序员。
展开
-
Java8 Stream新特性详解及实战
Java8 Stream新特性详解及实战背景介绍在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了。为此,针对Java8的新特性,会更新一系列的文章,欢迎大家持续关注。首先,我们来看一下Spring Boot源代码ConfigFileApplicationListener类中的一段代码:pr...转载 2019-10-12 16:37:35 · 256 阅读 · 0 评论 -
Java并发编程:Synchronized及其实现原理
一. 同步的基本使用同步是爪哇中解决并发问题的一种最常用的方法,也是最简单的一种方法.Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题从语法上讲,花样总共有三种用法: 修饰普通方法 修饰静态方法 修饰代码块 接下来我就通过几个例子程序来说明一下这三种使用方式(为了便于比较,三段代...原创 2019-07-30 11:22:26 · 185 阅读 · 0 评论 -
Java8中的流操作-基本使用&性能测试
一、流(Stream)简介流是 Java8 中 API 的新成员,它允许你以声明式的方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。这有点儿像是我们操作数据库一样,例如我想要查询出热量较低的菜品名字我就可以像下面这样:SELECTnameFROMdishesWHEREcalorie<400;您看,我们并没有对菜品的什么属性进行筛选(比如像之前使用...转载 2019-08-05 16:25:52 · 228 阅读 · 0 评论 -
java中的垃圾如何分类?
之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员。确实,在 Java 的世界里,似乎我们不用对垃圾回收那么的专注,很多初学者不懂 GC,也依然能写出一个能用甚至还不错的程序或系统。但其实这并不代表 Java 的 GC 就不重要。相反,它是那么的重要和复杂,以至于出了问题,那些初学者除了打开 GC 日志,看着一堆0101的...原创 2019-08-01 14:33:24 · 1424 阅读 · 0 评论 -
初识Maven
前言在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见。Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那么一个多模块的项目足以让你头疼,依赖冲突就会让你不知所措,甚至搞不清楚项目是如何运行起来的,专题的目的就是:彻底搞定Maven!Thinking in MavenMaven的使用方式回想...原创 2019-08-01 14:43:58 · 150 阅读 · 0 评论 -
JVM常见面试题
IT哈哈今天前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出思路:描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案: 栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存...转载 2019-08-05 16:53:21 · 458 阅读 · 0 评论 -
轻松理解DI 、IoC、DIP ?
摘要面向对象设计(OOD)有助于我们开发出高性能、易扩展以及易复用的程序。其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC、DI以及Ioc容器等概念。本文我们将一起学习这些概念,并理清他们之间微妙的关系。在学习之前,大家可以把自己的理解发表在留言区,共同探讨。目录 前言 依赖倒置原则(DIP) 控制反转(IoC) 依赖注入(D...原创 2019-08-01 17:17:36 · 552 阅读 · 0 评论 -
Java线程面试题
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。2) 线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而...原创 2019-05-10 11:46:57 · 113 阅读 · 0 评论 -
cookie、session与token的真正区别
发展史1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪...原创 2019-05-09 11:21:24 · 48376 阅读 · 27 评论 -
java内置工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。一. org.apache.commons.io.IOUtilscloseQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块toString:...原创 2019-08-22 12:07:12 · 944 阅读 · 0 评论 -
JAVA中try、catch、finally带return的执行顺序总结
异常处理中,try、catch、finally的执行顺序,大家都知道是按顺序执行的。即,如果try中没有异常,则顺序为try→finally,如果try中有异常,则顺序为try→catch→finally。但是当try、catch、finally中加入return之后,就会有几种不同的情况出现,下面分别来说明一下。也可以跳到最后直接看总结。一、try中带有returnprivat...转载 2019-09-18 10:39:14 · 281 阅读 · 0 评论 -
Arrays.asList存在的坑
引语:阿里巴巴java开发规范说到使用工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException(),我们来看一下为什么会出现这种情况。问题分析:我们做个测试publicstaticvoidmain(String[]args){...原创 2019-07-29 18:02:54 · 396 阅读 · 0 评论 -
Java中的注解是怎么工作的
做Java开发过程中,我们常常用到注解,如@Service、@Overrided、@Autowired、@Param等,但这些注解的工作原理是怎么样的恐怕不是每个人都说的清楚,在没了解注解的工作原理之前倒是可以大致推断一下:当注解标注到某个类或者方法或者某个成员变量或者某个输入参数上的时候,一定有一个对应的机制来对注解标注的类、方法、成员变量和参数进行某些处理。比如Bean扫描、编译检查、注入值、...原创 2019-07-24 16:16:21 · 376 阅读 · 0 评论 -
Java中几种常用JSON库性能比较
本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能。每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库。但是百闻不如一见,只有自己亲手测试过的才是最值得相信的。JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,一般情况我们对于JSON解析构造的性能并不需要过于关心,除非是在性能要求比较高的系统。目前对于Java开源的JSON类库有很多种,下面我...原创 2019-05-27 22:08:12 · 194 阅读 · 0 评论 -
为什么阿里巴巴要求谨慎使用ArrayList中的subList方法
集合是Java开发日常开发中经常会使用到的。在之前的一些文章中,我们介绍过一些关于使用集合类应该注意的事项。关于集合类,《阿里巴巴Java开发手册》中其实还有另外一个规定:本文就来分析一下为什么会有如此建议?其背后的原理是什么?1subListsubList是List接口中定义的一个方法,该方法主要用于返回一个集合中的一段、可以理解为截取一个集合中的部分元素,他的返回...原创 2019-06-25 10:17:39 · 360 阅读 · 0 评论 -
SimpleDataFormat 设置时间格式的写法
首先实例化一个calender类然后实例化一个SimpleDateFormat类并设置日期显示格式;下面是格式显示的参数:G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D 一年中的第几天 F 一月中第几个星期几 w 一年中第几个星期 W 一...原创 2019-06-18 17:44:36 · 1207 阅读 · 0 评论 -
Java-工具类之ZIP压缩解压
zip压缩单个或者多个文件package com.artisan.commonUtils.zip;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.nio.file.Fil...原创 2019-07-02 23:09:55 · 498 阅读 · 0 评论 -
两种解压压缩包方法的对比
初入新公司,领导让我对上传文件解析进行调优,部分都已经进行调优,唯独这个解压压缩包的方法没有调整,便自己弄个方法进行比较。公司使用的:/* * @param srcZipFile 需解压的文件名 * * @return 如果解压成功返回true */ private List<String> unzip(String fullp...原创 2019-07-03 10:31:01 · 1413 阅读 · 1 评论 -
Java如何实现栈和队列
Java如何实现栈和队列栈栈(stack)是一种后进先出(LIFO)的集合类型, 即后来添加的数据会先被删除。可以将其类比于下面文件的取放操作:新到的文件会被先取走,这使得每次取走的文件都是最新的。栈可以用数组或者队列去实现下面要实现的栈的API如下图所示:用数组实现栈下面我们通过数组实现一个指定了初始容量,但随着元素的增加能够动态地扩张容量的栈。注意:因为数组指定大小...原创 2019-07-03 15:38:52 · 2939 阅读 · 0 评论 -
Spring 常用注解
Spring部分1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller 在展现层使用,控制器的声明(C) 2.注入bean的注解 @Autowired:由Spring提供 @Inject:由JS...原创 2019-07-01 11:26:55 · 121 阅读 · 0 评论 -
java查询项目代码行数
查询项目代码行数今天领导给布置了一个任务,就是用工具查询一下项目的代码行数,但是我用工具和java工具类查询发现结果集却不一样,想了想可能是注释的过滤原因,所以手动的更改了一下java工具类,以下便是代码:package com.example.demo;import java.io.*;/** * @Author: Mr.wang * @Date: 2019/7/12 9:5...原创 2019-07-12 11:05:36 · 3264 阅读 · 0 评论 -
Java异常简介、异常捕获还是上抛
Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。Java异常机制用到的几个关键字:...原创 2019-07-17 15:55:09 · 1271 阅读 · 0 评论 -
java中静态方法,非静态方法和构造方法的执行顺序问题
java中静态方法,非静态方法和构造方法的执行顺序问题一直是面试总会遇到的一个问题,很多初级程序员都会在这个上面出现问题,也包括博主我,所以今天我将自己亲历写出来,让大家看一看,结果显而易见。/** * @author 文先生 * @date 2019/05/15 * QQ 1452561187 * 项目:springboot-shiro-demo1.0.1 * 包:com.exa...原创 2019-05-15 23:14:11 · 4016 阅读 · 0 评论