Java
文章平均质量分 69
Alenlyx
这个作者很懒,什么都没留下…
展开
-
Java Stream编程回顾
Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。获...原创 2019-12-27 10:49:12 · 365 阅读 · 0 评论 -
Callable Future FutureTask
并发包下边的三个可以异步计算的工具类Callable实现线程的一种方式,带有返回值Future带有返回值的的接口FutureTask具体的实现类1.Callable和Runnable的区别Callablepublic interface Callable<V> { V call() throws Exception;}Runnableinterface ...原创 2019-10-16 18:11:49 · 148 阅读 · 0 评论 -
Java新特性
Java 8 新特性Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。Java8 新增了非常多的特性,我们主要讨论以下几个:Lambda 表达式 − Lambda允许把函数作为一个方...原创 2019-08-23 17:04:00 · 105 阅读 · 0 评论 -
Java中synchronized 用在static方法和非static方法上面的区别
在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized到底有什么不同呢?大家都知道,static的方法属于类方法,它属于这个Class(注意:这里的Class不是指Class的某个具体对象),那么static获取到的锁......原创 2019-08-20 16:27:05 · 2559 阅读 · 0 评论 -
Java8-Stream
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理,...原创 2019-08-26 14:15:46 · 116 阅读 · 0 评论 -
Java8-默认方法
Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个 default 关键字即可实现默认方法。为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的 java 8 之前的集合框架没有 foreach 方法,通常能想到的解决办法...原创 2019-08-26 14:29:55 · 100 阅读 · 0 评论 -
Java8-Lambda
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }以下是lambda表达式的重要特征:可选类型声明:不需要声明参数类型,编译器可以统一识别...原创 2019-08-26 18:14:37 · 117 阅读 · 1 评论 -
Java8-函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。如定义了一个函数式接口如下:@FunctionalInterfaceinterface GreetingService { void sayM...原创 2019-08-27 15:31:23 · 93 阅读 · 0 评论 -
Java8-时间日期API
Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。在旧版的 Java 中,日期时间 API 存在诸多问题,其中有:非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有...原创 2019-08-27 15:48:55 · 166 阅读 · 0 评论 -
Java8-Optional
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。类声明以下是一个 java.util.Optional 类的声明:...原创 2019-08-27 16:26:39 · 99 阅读 · 0 评论 -
Spring AOP回顾
基本概念“横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect”,即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流...原创 2019-09-18 15:41:01 · 357 阅读 · 0 评论 -
Java实现多线程的区别
Java中为什么要单继承,多实现,总结如下:若为多继承,那么当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清,因此用了单继承。为什么是多实现呢?通过实现接口拓展了类的功能,若实现的多个接口中有重复的方法也没关系,因为实现类中必须重写接口中的方法,所以调用时还是调用的实现类中重写的方法。那么各个接口中重复的变量又是怎么回事呢?接口中,所有属性都是 static final修饰的,...原创 2019-10-11 11:53:07 · 313 阅读 · 1 评论 -
外观模式
Alen自从毕业后开始做软件开发,做着做着发现不爽了,钱赚不了太多,头发也白了。于是拿着一点小资本,想着做点小生意。瞅着眼前的餐饮行业还不错,于是打算开一家正新鸡排。烤鸡排可不是一件容易的事,仅仅行政类的审批流程就不少。至少包括办理卫生许可证,办理税务登记,办理工商登记等。行政审批总接口public interface Executive { public void approve(...原创 2019-05-13 07:16:27 · 102 阅读 · 0 评论 -
SpringBoot启动异常
项目启动异常"C:\Program Files\Java\jdk1.8.0_161\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBea...原创 2019-05-16 12:04:54 · 685 阅读 · 1 评论 -
Java有了基本数据类型,为什么还要实现包装器类型。
基本类型包装器类型byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean为什么存在这两种类型呢?我们都知道在Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象;但是对于经常用...原创 2019-04-08 12:21:16 · 945 阅读 · 0 评论 -
分布式系统概念
一 分布式系统分布式系统的由来:国内来讲,移动互联网的爆发伴随着分布式系统的突现,移动互联网最大的特点是2(to)c的o2o产品越来越多,这跟传统2B的系统最大区别就是用户量的不同,2C系统的用户量远远要高于2b系统,这就对系统提出了各种各样的高标准,响应时间,性能,灾备,吞吐量等等,各种分布式技术也是为了这些标准而服务。分布式架构的应用:分布式文件系统分布式缓存系统分布式数据库分布...原创 2018-11-15 16:25:36 · 39297 阅读 · 8 评论 -
Lombok的使用
LomBok介绍在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。官方地址:https://projectlombok.org/gitHub地址: https://github.com/rzwitserloot/lombok## Idea安装插件打开IDEA的Setting –&gt; 选择Plugins选项 –&gt; ...原创 2018-11-12 14:38:42 · 2314 阅读 · 0 评论 -
Java开发中计算机网络总结
前言:在Java开发中,计算机网络的知识也是一项重点,因此在此对计算机网络的相关知识进行总结。1.OSI参考模型自下而上:物理层(物理介质,比特流)、数据链路层(网卡、交换机)、网络层(IP协议)、传输层(TCP/UDP协议)、会话层(创建/建立/断开连接)、表示层(翻译,编码,压缩,加密)、应用层(HTTP协议)。简化为TCP/IP模型:网络层(物理层、数据链路层、网络层)、传输层,会话层...原创 2018-11-16 17:25:26 · 2652 阅读 · 0 评论 -
[JVM一]Java开发中需要了解的JVM
1.内存模型以及分区,需要详细到每个区放什么。2.堆里面的分区:Eden,survival from to,老年代,各自的特点。3.对象创建方法,对象的内存分配,对象的访问定位。4.GC 的两种判定方法:引用计数与引用链。5.GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么 地方,如果让你优化收集方法,有什么思路?6.GC 收集器有哪些?CMS 收集器与 G1...原创 2018-11-30 16:48:50 · 130 阅读 · 0 评论 -
[JVM二]JVM内存模型
上一边[JVM一]Java开发中需要了解的JVM列出JVM相关的问题,本文就相关的知识点进行梳理。1.内存模型以及分区,需要详细到每个区放什么。2.堆里面的分区:Eden,survival from to,老年代,各自的特点。3.对象创建方法,对象的内存分配,对象的访问定位。4.GC 的两种判定方法:引用计数与引用链。...原创 2018-11-30 17:53:55 · 165 阅读 · 0 评论 -
Java面试经典面试题
1、java事件机制包括哪三个部分?分别介绍。2、为什么要使用线程池?3、线程池有什么作用?4、说说几种常见的线程池及使用场景。5、线程池都有哪几种工作队列?6、怎么理解无界队列和有界队列?7、线程池中的几种重要的参数及流程说明。8、什么是反射机制?9、说说反射机制的作用。10、反射机制会不会有性能问题?11、你怎么理解http协议?12、说说http协议的工作流程。13、...原创 2019-01-09 17:04:26 · 218 阅读 · 0 评论 -
JVM垃圾收集器选择策略
前言:新生代的收集器有:Serial,ParNew,Parallel Scavenge等。老年代有:CMS,SerialOld,Paraller Old等。接下来将深入理解各个垃圾收集器的原理,以及它们如何在不同场景下进行搭配使用。同时,先解释几个名次:1,并行(Parallel):多个垃圾收集线程并行工作,此时用户线程处于等待状态2,并发(Concurrent):用户线程和垃圾收集线程同...原创 2019-01-21 18:35:49 · 931 阅读 · 0 评论 -
Java性能优化技巧
大多数开发人员认为性能优化是个比较复杂的问题,需要大量的经验和知识。是的,这并不没有错。诚然,优化应用程序以获得最好的性能并不是一件容易的事情,但这并不意味着你在没有获得这些经验和知识之前就不能做任何事。下面有几个很容易遵循的建议和最佳实践能够帮你创建一个性能良好的应用程序。这些建议中的大多数都是基于Java的,但是也不一定,也有一些是可以应用于所有的应用程序和编程语言的。在我们分享基于Java...原创 2019-01-31 17:42:35 · 114 阅读 · 0 评论 -
线程池参数设置
一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数核心线程会一直存活,及时没有任务需要执行当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭queueCapacity:任务队列容量(阻塞队列)当核心线程数达到最大时,新任务会放在队列...原创 2019-02-14 18:14:39 · 175 阅读 · 0 评论 -
HashSet如何保证元素唯一
hashset基于hashmap去实现,但是hashset如何保证集合内元素是唯一的呢,以下文章接下来去记录一下这个过程。1.HashSet原理我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降低了使用equals()方法的次数当HashSet调用add()方法存储对象的时候, 先调用对象的hashCode()方...原创 2019-04-04 19:35:07 · 687 阅读 · 0 评论 -
JDK1.8源码-java.lang.object
1.hashcode()方法在hashmap中如果用自己自定义的对象作为Key,必须重写hashcode()方法,equals()方法hashCode 在 Object 类中定义如下:public native int hashCode();这也是一个用 native 声明的本地方法,作用是返回对象的散列码,是 int 类型的数值。那么这个方法存在的意义是什么呢?我们知道在Java ...原创 2019-04-11 17:27:02 · 120 阅读 · 0 评论 -
Java 简单的TCP链接
服务端代码import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class SocketServer { public static vo...原创 2018-09-18 11:32:54 · 9677 阅读 · 0 评论