JAVA--基础知识整理
把平时的阅读的知识进行总结整理,归纳总结,分享给大家,一起学习进步。
谈胖胖
码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多线程系列---Atomic包原子类介绍(八)
一、何谓Atomic?Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中断,直到其执行完成)在x86平台上,CPU提供了在指令执行期间对总线加锁的手段。CPU芯片上...原创 2019-05-08 08:14:10 · 4947 阅读 · 0 评论 -
多线程系列---多线程共享变量(六)
Java中可以通过synchronized、volatile、java concurrent类来实现共享变量的可见性。synchronized实现可见性synchronized 实际上是对访问修改共享变量的代码块进行加互斥锁,多个线程对synchronized代码块的访问时,某一时刻仅仅有一个线程在访问和修改代码块中的内 容(加锁),其他所有的线程等待该线程离开代码块时(释放锁)才有机会进...原创 2019-05-07 21:39:20 · 6045 阅读 · 0 评论 -
多线程系列---线程范围内的共享变量(五)
模拟ThreadLocal类实现:线程范围内的共享变量,每个线程只能访问他自己的,不能访问别的线程。package com.ljq.test.thread;import java.util.HashMap;import java.util.Map;import java.util.Random;/** * 线程范围内的共享变量 * * 三个模块共享数据,主线程模块和AB模...原创 2019-05-07 21:04:18 · 8719 阅读 · 0 评论 -
多线程系列---多线程实现的方式(四)
Executor框架是一种将线程的创建和执行分离的机制。它基于Executor和ExecutorService接口,及这两个接口的实现类ThreadPoolExecutor展开,Executor有一个内部线程池,并提供了将任务传递到池中线程以获得执行的方法,可传递的任务有如下两种:通过Runnable接口实现的任务和通过Callable接口实现的任务。在这两种情况下,只需要传递任务...原创 2019-05-07 09:11:27 · 5051 阅读 · 0 评论 -
Spring中用到的设计模式
第一种:简单工厂又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。如下配置,就是在 ...原创 2019-04-16 09:21:44 · 2397 阅读 · 2 评论 -
Spring-AOP原理详解
Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC、AOP。可见AOP是Spring框架中的核心之一,在应用中具有非常重要的作用,也是Spring其他组件的基础。AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念...原创 2019-04-16 08:25:59 · 2829 阅读 · 1 评论 -
spring-IOC原理详解
Spring容器高层视图Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。Bean缓存池:HashMap实现IOC容器介绍Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的...原创 2019-04-15 22:03:20 · 5366 阅读 · 4 评论 -
JAVA安全-数字证书(五)
概要数字证书具备常规加密解密必要的信息,包含签名算法,可用于网络数据加密解密交互,标识网络用户(计算机)身份。数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载体。依靠数字证书,我们可以构建一个简单的加密网络应用平台。数字证书类似于个人身份证,由数字证书颁发认证机构(Certificate Authority, CA)签发。只有经过CA签发的证书在网络中才具备可认证性...原创 2019-02-24 07:26:16 · 3825 阅读 · 1 评论 -
JAVA安全-数字签名(四)
概要:签名认证是对非对称加密技术与数字摘要技术的综合运用,指的是将通信内容的摘要信息使用发送者的私钥进行加密,然后将密文与原文一起传输给信息的接收者,接收者通过发送者的公钥信息来解密被加密的摘要作息,然后使用与发送者相同的摘要算法,对接收到的内容采用相同的方式方式产生摘要串,与解密的摘要串进行对比,如果相同,则说明接收到的内容是完整的,在传输过程中没有受到第三方的篡改,否则说明通信内容已被第三...原创 2019-02-22 10:22:36 · 3223 阅读 · 1 评论 -
JAVA安全-消息摘要(三)
数字摘要,也叫消息摘要。它是一种单向的,不可逆的加密算法。发送方:采用单向hash函数对消息进行计算,得到摘要。发送消息和摘要。接收方:把接收的消息,按着同样的hash函数计算,新产生的摘要和发送来的原摘要进行对比。如果2个摘要不一致,说明消息不完整了。特点:无论输入的消息有多长,计算出来的摘要长度是固定的。 消息摘要具备的基本性质:不同的消息,计算出来的摘要不同;相同的消息,计算出来的...原创 2019-02-21 21:27:16 · 4499 阅读 · 1 评论 -
JAVA安全-非对称加密(二)
非对称加密会产生两个东西,一个是公钥,一个是私钥,公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。非对称加密特点:公开密钥是对大众公开的,私密密钥是服务器私有的,两者不能互推得出。 用公开密钥对数据进行加密,私密密钥可解密;私密密钥对数据加密,公开密钥可解密。 速度较对称加密慢。常见...原创 2019-02-19 09:00:19 · 7022 阅读 · 4 评论 -
JAVA安全-对称加密(一)
1.对称密码算法简介对称密码算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施凡是涉及到安全需求,都会优先考虑对称加密算法。对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆。特点:算法公开、计算量小、加密速度快、加密效率高 弱点:双方都使用同样密钥,安全性得不到保证常见的对称加密算法:2.DES算法...原创 2019-02-18 21:22:38 · 6099 阅读 · 5 评论 -
Java常见性能优化
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:控制资源的使用,通过线程同步来控制资源的并发访问; 控制实例的产生,以达到节约资源的目的; 控制数据...原创 2019-05-04 08:28:52 · 5658 阅读 · 1 评论 -
JAVA基础-代理(三种方式)
简介:代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。1.静态代理:静态代理在使用时,需要定义接口或者父类,被代理对象(目标对象)与代理对象...原创 2019-03-10 21:11:34 · 2501 阅读 · 1 评论 -
JAVA基础-反射
Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息。Class对象 理解RTTI在Java中的工作原理,首先需要知道类型信息在运行时是如何表示的,这是由Class对象来完成的,它包含了与类有关的信息。Class对象就是用来创建所有“常规”对象的,Java使用Cl...原创 2019-03-04 22:05:51 · 2330 阅读 · 1 评论 -
Redis系列--常见应用场景(四)
Redis的7个应用场景一:缓存——热数据热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相比于memcached还提供了丰富的数据类型可以使用,另外,内存中的数据也提供了AOF和RDB等持久化机制可以选择,要冷、热的还是忽冷忽热的都可选。结合具体应用需要注意一下:很多人用spring的...原创 2019-01-29 08:27:25 · 3857 阅读 · 3 评论 -
Redis系列--持久化方式(二)
Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。另外Redis的数据持久化机制是可以关闭的。如果你只把Redis作为缓存服务使用,Redis中存储的所有数据都不是该数据的主体而仅仅是同步过来的备份,那么可以关闭Redis的数据持久化机制。但通常来说,仍然建议至少开启RDB方式的数据持久化,因为:...原创 2019-01-23 08:50:00 · 3657 阅读 · 5 评论 -
类的加载过程
1.类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持 Java 语言的运行...原创 2019-03-03 19:45:49 · 3144 阅读 · 1 评论 -
垃圾回收器
JVM的垃圾回收器大致分为六种类型:1.Serial收集器串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记-压缩;垃圾收集的过程中会Stop The World(服务暂停)。参数控制:-XX:+UseSerialGC串行收集器2.串行:ParNew收集器ParNew收集器其实就是S...原创 2019-02-28 09:08:39 · 2341 阅读 · 2 评论 -
GC算法
简介:JVM中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。对象存活判断:引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象...原创 2019-02-28 08:18:31 · 2594 阅读 · 1 评论 -
JVM运行时内存结构
主要结构:堆内存、方法区、栈(说明:基于JDK1.7)堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配; 方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法区还有一个别名Non-Heap(非堆); 栈又分为java虚...原创 2019-02-26 08:20:52 · 6423 阅读 · 5 评论 -
JVM系列---对象的创建,定位及访问
Java对象创建底层原理1.虚拟机遇到一条new指令时,首先检查这个对应的类能否在常量池中定位到一个类的符号引用;2.判断这个类是否已经被加载,解析,初始化3.为这个新生对象在java堆中分配内存空间,其中分配内存空间的方式有两种 指针碰撞:分配内存空间包括开辟一块内存和移动指针两个步骤;非原子步骤可能出现并发问题,Java虚拟机采用CAS配上失败重试的方式保证更新操...原创 2019-10-07 15:05:06 · 3927 阅读 · 1 评论
分享