
java基础
文章平均质量分 57
王老诩
茂密
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 11 新特性学习
Java 11 新特性介绍原作者:李 林锋网址:https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-11/index.html基于嵌套的访问控制与 Java 语言中现有的嵌套类型概念一致, 嵌套访问控制是一种控制上下文访问的策略,允许逻辑上属于同一代码实体,但被编译之后分为多个分散的 class 文件的类,无需编译器额外的创建可扩展的桥接访问方法,即可访问彼此的私有成员,并且这种改进是在 Java 字节原创 2020-06-29 15:32:20 · 427 阅读 · 0 评论 -
并发编程之java线程池
使用线程池有什么好处?线程复用,避免了线程的重复创建销毁带来的效率上的影响;控制并发线程的数量;对线程做一些简单的管理(设置线程的状态);ThreadPoolExecutor的重要参数java中的线程池都是基于ThreadPoolExecutor类来实现的。corePoolSize:核心线程数核心线程会一直存活,即使没有任务需要执行 当线程数小于核心线程数时,即...原创 2019-05-17 16:13:38 · 172 阅读 · 0 评论 -
并发编程之ThreadLocal
ThreadLocal基础知识很多地方叫做线程本地变量,也有些地方叫做线程本地存储。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。线程之间互不影响,这样一来就不存在线程安全问题,也不会严重影响程序执行性能。Synchronized 用于线程间的数据共享,而 ThreadLocal 则用于线程间的数据隔离。原理在Java中,每个...原创 2019-05-17 17:29:03 · 228 阅读 · 0 评论 -
并发编程之CAS操作
基本概念CAS算法是由硬件直接支持来保证原子性的。CAS操作过程是一个原子操作,它是由一条CPU指令完成的。有三个操作数:要更新的变量V、旧的预期值A和新值B。在要把变量更新时,现比较变量当前的值与旧的预期值A是否相同,相同就认为变量在这段时间没有发生变化,将B赋值给V,否则就什么都不做。CAS的ABA问题假若一个变量初次读取是A,在compare阶段依然是A,但其实可能在此过...原创 2019-05-17 17:41:59 · 238 阅读 · 0 评论 -
并发编程之AQS的同步原理
基本概念AQS(AbstractQueuedSynchronizer),抽象队列同步器。AQS的同步状态AQS使用一个int成员变量来表示同步状态,通过内置的FIFO队列来完成获取资源线程的排队工作。AQS使用CAS对该同步状态进行原子操作实现对其值的修改。private volatile int state;//共享变量,使用volatile修饰保证线程可见性状态信息通过g...原创 2019-05-17 18:12:35 · 512 阅读 · 0 评论 -
CyclicBarrier与CountDownLatch
CountDownLatch (倒计时器)CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。CountDownLatch 的三种典型用法①某一线程在开始运行前等待n个线程执行完毕。将 CountDownLatch 的计数器初...转载 2019-05-17 18:18:01 · 236 阅读 · 0 评论 -
JDBC连接数据库执行查询的全过程
package com.yangshengjie.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement; public class JDBCTest {...原创 2019-05-18 14:45:18 · 1931 阅读 · 0 评论 -
VO、 PO、DO、DTO、 BO、 QO、DAO、POJO定义
分层领域模型规约:DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。就是从现实世界中抽象出来的有形或无形的业务实体。 DTO( Data Transfer Object):数据传输对象,主要用于远程调用等需要大量传输对象的地方,比如我们有一个交易订单表,含有 25 个字段,那么其对应的 PO 就有 25 个属性,但我们的页面上只需要显示 5 个字段,因...原创 2019-07-12 14:16:47 · 1074 阅读 · 0 评论 -
java注解@Retention、@Targe、@Documented、@Inherited
@Retention(RetentionPolicy.TYPE)注解Retention(保留)注解说明,这种类型的注解会被保留到那个阶段,有三个值:1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略2.RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中...原创 2019-09-06 11:41:07 · 286 阅读 · 0 评论 -
Spring WebSocket实现消息推送
Spring WebSocket实现消息推送第一步: 添加Spring WebSocket的依赖jar包(注:这里使用maven方式添加 手动添加的同学请自行下载相应jar包放到lib目录)<!-- 使用spring websocket依赖的jar包 --> <dependency> <groupId>org...转载 2019-09-06 14:38:23 · 281 阅读 · 0 评论 -
Akka入门
https://doc.yonyoucloud.com/doc/akka-doc-cn/2.3.6/scala/book/index.htmlAkka是什么?通过使用Actor模型我们提升了抽象级别,为构建可扩展的、有弹性的响应式并发应用提供了一个更好的平台Akka实现了独特的混合模型ActorsActors为你提供:对并发/并行程序的简单的、高级别的抽象。 异...原创 2019-09-09 17:16:47 · 350 阅读 · 0 评论 -
并发编程之线程之间的通讯
线程与进程的区别(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.(4)系统开销:进程的系统开销远大于线程。线程间通信:由于多线程共享进程内的地址空间和数据空间,所以多个线程间的通信是一个线程...原创 2019-05-17 15:34:48 · 168 阅读 · 0 评论 -
有关并发编程技术基础知识
有关并发编程的基础知识实现多线程的三种方式(1)继承Thread类(2)实现Runnable接口(3)使用ExecutorService、Callable、Future实现有返回结果的多线程Thread和Runable的区别和联系Thread类实现了Runable接口,都需要重写run()方法。实现Runnable的类更具有健壮性,避免了单继承的局限。Runnable更...原创 2019-05-17 15:13:25 · 141 阅读 · 0 评论 -
JAVA面试中常会问到的问题总结
final,finally,finalize的区别final 修饰符(关键字)如果一个类被申明为final,意味着它不能再派生出新的子类,因此一个类不能既被声明为abstract的,又被声明为final的。将变量和方法声明为final变量的,可以保证它们在使用中不被改变。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之...原创 2019-05-16 17:28:39 · 3924 阅读 · 0 评论 -
由浅入深学习java的代理机制
java中的代理(静态代理与动态代理)静态代理静态代理通常用于对原有业务逻辑的扩充,其实也就是代理模式的一种实现,通过对真实对象的封装,来实现扩展性。缺点:同时代理多个方法时候冗余。class StaticUserDaoProxy implements IUserDao { //接收保存目标对象 private IUserDao target; publ...原创 2019-05-16 13:55:13 · 169 阅读 · 0 评论 -
为什么重写equals时必须重写hashCode方法?
为什么重写equals时必须重写hashCode方法?hashCode()介绍hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。为什么要有 hashCode当你把对象加入 ...原创 2019-05-15 21:35:38 · 291 阅读 · 0 评论 -
对java集合类的知识归纳与总结
java集合框架Java中的集合的两大类:Collecton类:可以理解为主要存放的是单个对象,Collection继承了Iterate接口,Iterate用于集合内迭代器抽象接口,其子类均实现接口中方法。Map类:可以理解为主要用来存储key-value类型的对象。Collection类下有Queue,List,Set集合。其中Set集合的实现依赖于Map的实现。Map类下...原创 2019-05-15 18:05:44 · 509 阅读 · 0 评论 -
java String类详解
1.String类的数据结构与特点String类是通过char数组来保存数据的。String类由final修饰,无法被继承,内部方法同理也无法重写。String类由final修饰的原因:①避免线程不安全的问题;②为了避免安全隐患,如果每一次使用String都在前面加上final使用的不好会导致性能问题,干脆就做成final类,放在常量池实现数据共享,节省资源,提高效率,可以在JVM里做...原创 2019-05-15 16:36:39 · 281 阅读 · 0 评论 -
对OOP的三大特性的理解
1.oop的三大特性?三大特性分别是什么意思?封装,继承,多态封装是为了隐藏类的内部机制,在不影响使用的前提下可以修改内部细节,同时可以保护内部数据。继承是为了复用父类的代码,让程序有逻辑上的上下关系。多态是能够让对象根据不同的消息参数,作出不同的行为,只要分为运行时多态和编译时多态。2.oop的相较于面向过程的优缺点。优点:易维护、易复用、易扩展,由于面向对象有封装、继承...原创 2019-05-15 13:52:55 · 2001 阅读 · 0 评论 -
JAVA的反射机制
JAVA中的反射机制的定义反射是Java语言的一个特性,它允许程序在运行时(注意不是编译的时候)来发现和使用类的信息。JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。反射就是把java类中的各种成分映射成一个个的Java对象。反射的作用(1)在运行时判断任意一个对象所属的类;(2)在运行时...原创 2019-05-16 14:31:03 · 128 阅读 · 0 评论 -
JAVA BIO\NIO\AIO的入门学习
对网络编程中五种IO模型的理解阻塞式I/O模型没有资源,挂起资源,等待有资源了,将进程变为就绪态。非阻塞式I/O模型没有资源,不断的轮询请求,直到有资源。I/O多路复用(事件驱动)模型I/O多路复用,I/O就是指的我们网络I/O,多路指多个TCP连接(或多个Channel),复用指复用一个或少量线程。串起来理解就是很多个网络I/O复用一个或少量的线程来处理这些T...原创 2019-05-16 16:13:37 · 434 阅读 · 0 评论 -
再谈BIO,NIO和AIO
本文从操作系统的角度来解释BIO,NIO,AIO的概念,含义和背后的那些事。本文主要分为3篇。第一篇 讲解BIO和NIO以及IO多路复用 第二篇 讲解磁盘IO和AIO 第三篇 讲解在这些机制上的一些应用的实现方式,比如nginx,nodejs,Java NIO等到底什么是“IO Block”很多人说BIO不好,会“block”,但到底什么是IO的Block呢?考虑下面两种情况:用...转载 2019-05-16 16:32:20 · 177 阅读 · 0 评论 -
NIO的最佳实践---Netty
Netty是什么?Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。...转载 2019-05-18 11:56:36 · 710 阅读 · 0 评论 -
对JAVA克隆机制的理解
Cloneable接口是一个标记接口,也就是没有任何内容。clone方法是在Object中定义的,而且是protected型的,只有实现了这个接口,才可以在该类的实例上调用clone方法,否则会抛出CloneNotSupportException。Object提供了一个对象拷贝的默认方法clone方法,但是该方法是有缺陷的,它提供了一种浅拷贝方式,也就是它并不会把对象所有属性全部拷贝一份,而是...原创 2019-05-16 16:56:46 · 299 阅读 · 0 评论 -
用大白话来说一下BIO\NIO与I\O复用技术
BIO大家都不陌生,不熟悉的同学只需要了解,BIO处理socket时一个socket对应着一个线程来处理,而且BIO的线程处理socket时是阻塞的,之前的博客中也说到,阻塞意味着在socket里没数据进来的时候会线程会挂起来。BIO用这种方式去处理socket,是因为在操作多个socket的时候,要一直保持有线程在做处理,才能知道当前的socket有没有数据进来,而没有数据线程没办法只能挂起...原创 2019-05-19 10:13:26 · 322 阅读 · 0 评论