java基础
huangyaa729
这个作者很懒,什么都没留下…
展开
-
java 8 关键特性整理
近期重新回顾java8的一些特性,对一些小的知识点做了简单的整理,以备后面回顾查询使用:以下是看到的一些优秀的博客1、JDK8新特性:接口的静态方法和默认方法2、JDK8新特性:函数式接口@FunctionalInterface的使用说明3、Lambda表达式详解对接口的要求虽然使用 Lambda 表达式可以对某些接口进行简单的实现,但并不是所有的接口都可以使用 Lambda 表达式来实现。Lambda 规定接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法jdk 8 中有另一个新转载 2021-06-09 09:35:01 · 168 阅读 · 0 评论 -
项目部署时,centerOs系统环境搭建相关文档总结
Dokcer 安装Centos7上安装docker: https://www.cnblogs.com/yufeng218/p/8370670.htmlcentos7使用docker安装es(elasticsearch)忽略上方的docker安装步骤 https://www.cnblogs.com/pxblog/p/12234561.htmlrabbitMq安装CentOS7安装RabbitMQ https://www.cnblogs.com/fengyumeng/p/11133924.html原创 2020-10-22 09:38:03 · 224 阅读 · 1 评论 -
select、poll、epoll之间的区别
(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n)poll本质上和select没有区别,它将用户传入...转载 2019-05-11 18:25:16 · 1817 阅读 · 0 评论 -
深入理解Java:类加载机制及反射
开篇一张图,基本上一个类的加载过及内存分配全部包含了一、Java类加载机制1.概述Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解...转载 2019-05-16 18:10:27 · 209 阅读 · 0 评论 -
java动态代理实现与原理详细分析
JDK动态代理的一篇好文,特地分享一下一、代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。简单的说就是,我们在访问...转载 2019-05-17 11:22:28 · 143 阅读 · 0 评论 -
Cglib动态代理实现原理
Cglib动态代理实现原理:我们先通过一个demo看一下Cglib是如何实现动态代理的。首先定义个服务类,有两个方法并且其中一个方法用final来修饰。public class PersonService { public PersonService() { System.out.println("PersonService构造"); } //该方法不...转载 2019-05-17 14:03:48 · 269 阅读 · 0 评论 -
java I/O : BIO、NIO、AIO的区别
简单的描述一下BIO的服务端通信模型:采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连接,它接收到客户端连接请求之后为每个客户端创建一个新的线程进行链路处理 处理完成后,通过输出流返回应答给客户端,线程销毁。即典型的一请求一应答通宵模型。刚开始人们为了解决上面,高并发下服务器建立线程过多而枯竭,有人就想出了使用线程池来控制建立线程的数量,不至于服务器挂掉,于是...原创 2019-05-27 17:15:14 · 341 阅读 · 0 评论 -
为什么我使用source /etc/profile这个命令之后,新的环境变量只能在一个终端里面有效?
为什么我使用source /etc/profile这个命令之后,新的环境变量只能在一个终端里面有效?为什么我使用source /etc/profile这个命令之后,新的环境变量只能在一个终端里面有效?各位大虾:我从网上得知,在ubuntu中,使用source /etc/profile命令可以使新建立的环境变量立刻生效而不用重新启动系统,但是如题,当我使用source /etc/profil...转载 2019-09-28 10:58:20 · 5975 阅读 · 0 评论 -
shell中 >/dev/null 2>&1
shell中>/dev/null 2>&11./dev/null这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。2>&1这条命令用到了重定向...原创 2019-09-28 11:07:53 · 758 阅读 · 0 评论 -
Synchronized 和 Lock 锁在JVM中的实现原理以及代码解析
一、深入JVM锁机制:synchronizedsynrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非null对象作为"锁",当synchronized作用在方法上时,锁住的便是对象实例(this);当作用在静态方法时锁住的便是对象对应的Class实例,因为Class数据存在于永久带,因此静态方法锁相当于该类的一个全局锁;...转载 2019-05-10 16:50:34 · 257 阅读 · 0 评论 -
线程用户态和内核态
(1)用户态和内核态的概念?—>内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序—>用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取(2)为什么需要用户态和内核态?—>由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据,...转载 2019-05-14 13:59:52 · 8539 阅读 · 0 评论 -
CGlib动态代理中Enhancer.create()函数的逻辑
整个过程如下:Cglib根据父类,Callback, Filter 及一些相关信息生成key. 然后根据key 生成对应的子类的二进制表现形式 使用ClassLoader装载对应的二进制,生成Class对象,并缓存 最后实例化Class对象,并缓存下面是相对应的关键代码. 1)Cglib如何生成的Class的二进制文件 针对不同场景, CGlib准备了不同的Class生成方法, 他们都实现了转载 2017-09-07 18:15:52 · 4094 阅读 · 0 评论 -
用maven 搭建 Spring boot工程
1.创建Maven项目 2.选择项目类型 3.选择项目 4.编写项目组和名称-finish即可 5.修改pom.xml文件 加入如下配置: <!--spring boot 基础环境--><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</a原创 2017-09-11 15:24:21 · 923 阅读 · 0 评论 -
java泛型——编译期类型检查的范围
这两天在对比着看《java编程思想》和《Effective JAVA》(第二版)中关于泛型的问题,对里面涉及到的一个泛型转换例子感觉很费解,如下:interface UnaryFunction&lt;T&gt;{ T apply(T arg);}public class MyTestJob{&gt;{ private int i = 1; private sta...原创 2018-08-22 17:37:57 · 2396 阅读 · 0 评论 -
反序列化时,具体对象生成方式的探究
今天读《Effective Java》这本书时,读到第77条时,困惑了很久,对里面列举单例模式反序列化问题久久不能理解,因此特意探究了下,对反序列化的流程有了进一步的认识:1)反序列化时,是根据序列化时写入流的类路径去加载类的,采用的方法如下:ObjectInputStream—&gt;resolveClass(ObjectStreamClass desc){ String name ...原创 2018-08-31 17:42:00 · 209 阅读 · 0 评论 -
HTTPS原理和CA证书申请(满满的干货)
读到这篇博客,对https的原理介绍的比较详细且生动,为了防止丢失,mark一下,以下是原文链接https://blog.51cto.com/11883699/2160032众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输目前主流的网站基本上开始默认采用HTTPS作为通信...转载 2019-03-05 13:42:45 · 8358 阅读 · 6 评论 -
Java中 String str = new String("hello");的底层实现
String str = "hello";String str2 = new String("hello");上面两中创建 string对象的方式底层实现的不同之处:(1)首先,先确定String常量池的定义:常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。Java为了提高...原创 2019-03-18 16:16:56 · 3232 阅读 · 2 评论 -
java单例模式的写法及优缺点
单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式。但是除了这两种方式,本文还会介绍其他几种实现单例的方式,让我们来一起看看吧。简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序...转载 2019-03-18 18:11:48 · 1001 阅读 · 0 评论 -
ExecutorService中对异常的处理
ExecutorService加强了Executor这个接口,并提供了submit方法以加强Executor中的execute方法,也正是因为这两个方法某些细微的差异,造成了对异常处理时两个方法的千差万别。在面对异常时,有如下几种场景Thread1.自定义UncaughtExceptionHandler 2.用 try/catch代码块包围3.自己实现Thr...转载 2019-04-23 15:49:19 · 6450 阅读 · 3 评论 -
继承类要实现接口父类的所有方法吗
一个类实现接口和继承抽象类对于抽象方法的实现原则是相同的: (1)如果这个类是个普通类,那么必须实现这个接口/抽象类的所有抽象方法; (2)如果这个类是个抽象类,那么不必实现这个接口/抽象类的抽象方法,因为抽象类中可以定义抽象方法。转载 2017-09-07 15:20:40 · 7198 阅读 · 0 评论