Java基础
jhonjson
我就是我,颜色不一样的烟火!改变不了别人,只能先改变自己!!!!
展开
-
java.lang.NoSuchMethodError
java.lang.NoSuchMethodErrorNo virtual method setEndpointIdentificationAlgorithm(Ljava/lang/String;)V in class Ljavax/net/ssl/SSLParameters; or its super classes (declaration of ‘javax.net.ssl.SSLParameters’ appears in /system/framework/core-libart.jar)s.原创 2022-01-12 18:51:56 · 703 阅读 · 0 评论 -
Java中,负数转换为正数
-10-20Math.abs(-10)Math.abs(-20)输出:1020原创 2021-05-10 17:04:43 · 7912 阅读 · 0 评论 -
Object是什么?
Java的定义:万物皆对象Java把现实中的任何事物都当做一个对象(Object), Java是面向对象的,就是Object Orentied 简称OO 。此处的Object在Java中被定义为一个顶级父类,它是任何类父类,我们可以显示的继承它,也可以隐式继承。public class Object { private static native void registerNatives(); static { registerNatives(); }原创 2020-05-29 11:50:42 · 496 阅读 · 0 评论 -
Java多线程死锁产生的原因及解决方法
死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。死锁产生的原因系统资源的竞争进程推进顺序非法进程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁。信号量使用不当也会造成死锁。死锁产生的必要条件,产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生互斥条件:进程要求对所分配的资源进行排他..原创 2020-05-13 21:47:00 · 1220 阅读 · 0 评论 -
多线程之Synchronized
Synchronized作用:阻塞线程,保证同一时刻最多只有1个线程执行。原理:依赖 JVM 实现同步,底层通过一个监视器对象(monitor)完成, wait()、notify() 等方法也依赖于 monitor 对象。使用:Synchronized 修饰 代码块、类的实例方法 & 静态方法Synchronized同步锁的类型:对象锁:Synchronized代码块类的实例对...原创 2019-06-24 16:40:01 · 131 阅读 · 0 评论 -
多线程之锁的详解讲解《一》
之前写过线程、线程池,但是并没有深入的讲解,因为线程 多线程是Java中的一个重要环节,不管是使用还是面试,都不可避免用到它,所以会拆开详细的讲解,如有缺陷,请指出,共同进步。线程知识巩固第一节线程知识巩固第二节线程知识巩固第三节线程知识巩固第四节线程知识巩固第五节线程池实现原理ThreadPoolExecutor锁在我们的实际开发中用的不是很多,常用的也就Synchronize和v...原创 2019-06-20 11:29:14 · 337 阅读 · 0 评论 -
java内存机制
java内存机制jvm内存区域分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器。方法区:运行时所有线程共享。存储的类信息、常量、静态变量、即时编译器编译后的代码。堆:运行时所有线程共享。存储的类的实例虚拟机栈:线程私有。每个方法被执行的时候都会同时创建一个栈幁,用来存储局部变量表,操作栈,动态链接,方法出口等信息。每个方法从调用直到执行完成的过程,都对应一个栈幁在虚 拟机栈中从入栈到出...原创 2019-06-10 12:16:19 · 92 阅读 · 0 评论 -
浅析RxJava 版本2.2.9 《二》线程的切换使用
经过上一节的基础使用,相信大家对RxJava就有一定的了解了,下边让我们继续深入的了解它。RxJava流程图在Rxjava中,Scheduler是调度器,相当于线程控制器。多分为以下五个场景场景:查看源码得知: @NonNull static final Scheduler SINGLE; @NonNull static final Scheduler CO...原创 2019-06-18 22:02:54 · 143 阅读 · 0 评论 -
线程池实现原理ThreadPoolExecutor
线程池队列原创 2019-06-13 11:13:51 · 179 阅读 · 0 评论 -
java类加载过程
类从加载到JVM中开始,到卸载共经历了七个阶段。生命周期包括:加载、验证、准备、解析、初始化、使用和卸载加载(Loading)获取二进制字节流。静态存储结构转化为方法区的运行时数据结构。在Java堆中生成一个类对象,作为方法区的访问入口。验证(Verification)验证Calss文件的标识:魔数 Magic Number验证Calss文件的主次版本号验证常量池(...原创 2019-05-27 22:48:46 · 78 阅读 · 0 评论 -
多线程之volatile
volatileSynchronized 同步锁给多个线程访问的代码块加锁以保证线程安全性。多线程之Synchronized缺点:加锁后多个线程需要频繁判断锁状态,很消耗资源。所以就有了volatile 关键字,一种轻量级的解决方案。特点:内存可见性:线程对 volatile 变量的修改,对其他线程都是可见的。即获取 volatile 变量的值都是最新的。volatile的本质告诉jvm...原创 2019-06-24 17:07:02 · 185 阅读 · 0 评论 -
Java集合简介之List接口
Java的集合类主要由两个接口派生而出:Collection和MapCollection是一个高度抽象出来的接口。基本操作:添加、删除、清空、遍历(读取)。它支持iterator()的方法。典型用法:// 获得一个迭代子Iterator it = collection.iterator(); while(it.hasNext()) { // 得到下一个元素 Object ...原创 2019-07-09 15:40:16 · 201 阅读 · 0 评论 -
Java集合简介之Set接口
Java集合简介之List接口前边介绍过List接口,下边我们介绍一下Set相关接口Set:一个不包含重复元素的 collection。无序且唯一。HashSet实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。注意:它不是同步的。如果多个线程同时访问一个哈希 set,而其中至...原创 2019-07-09 15:55:31 · 134 阅读 · 0 评论 -
Java集合简介之Map接口
Java集合简介之List接口Java集合简介之Set接口接下来我们一起介绍一下Map,它与我们的生活息息相关。Map没有继承Collection接口,Map提供key、value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。HashMa...原创 2019-07-09 17:55:30 · 118 阅读 · 0 评论 -
HashMap原理解析
讲解HashMap之前,我们需要了解一下数组和链表。数组:采用一段连续的存储单元来存储数据。如:ArrayList链表:是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针。如:LinkedList优缺点数组(顺序表)链表优点物理上连续,所以查找快空间不连续,逻辑上连续,增删元素快缺点删除和增加元素要大量移动数据,增删慢物理...原创 2019-07-22 21:59:56 · 337 阅读 · 0 评论 -
java中byte、 int、char、long、float、double各占多少字节数?
字节:byte:用来计量存储容量的一种计量单位;位:bit类型字符数byte1字节char2字节short2字节int4字节float4字节long8字节double8字节boolean至少1字节...原创 2019-08-28 15:58:25 · 15059 阅读 · 0 评论 -
java为什么要重写hashCode和equals方法?
java为什么要重写hashCode和equals方法?基本数据类型的 == 比较的值相等。类的 == 比较的内存的地址,即是否是同一个对象,在不覆盖equals的情况下,同比较内存地址,原实现也为 == ,如String等重写了equals方法.hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等...原创 2019-08-28 20:51:09 · 257 阅读 · 0 评论 -
java中截取以逗号分割string字符串
String string = "张三,李四,王五,马六,小气"; String substring = string.substring(0, string.length() - 1); System.out.println(substring); String[] split = substring.split(",");//以逗...原创 2019-09-27 11:03:30 · 26101 阅读 · 3 评论 -
什么是缓存?
硬件的缓存?cpu缓存:位于cpu和内存之间的临时存储器软件缓存?软件缓存分为三级内存缓存(预先将数据写到容器(list,map,set)等数据存储单元中,就是软件内存缓存)数据库缓存网络缓存内存缓存淘汰机制分为三种FIFO(First In,First Out)先进先出优点:是先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单。缺...原创 2019-05-26 15:08:23 · 5251 阅读 · 0 评论 -
数据结构
数据结构定义:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构的研究方向:线性表队列堆栈树图论排序和算法顺序表-ArrayListArrayList的使用场景有哪些?适合大量的存取和删除操作ArrayList...原创 2019-05-10 20:56:35 · 131 阅读 · 0 评论 -
java算法
1.约瑟夫算法: 约瑟夫环:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的 人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出 列;依此规律重复下去,直到圆桌周围的人全部出列 demo下载地址!!!!!...原创 2018-03-02 15:11:25 · 160 阅读 · 0 评论 -
设计模式-创建性-单例模式
单例模式:为什么使用单例模式? 节约内存开销,提高效率(性能),提高资源使用率。 单例模式的特点:构造方法私有化定义静态方法返回当前对象确保这个对象是唯一的确保在序列化和反序列化操作的过程中同样保证同一个对象。列表内容不允许有子类(太监类->final)单例模式->恶汉式(单线程推荐使用) 优点:安全(为你提前准备好,不管你用不用) ...原创 2018-03-05 23:01:49 · 117 阅读 · 0 评论 -
设计模式-创建型-构建者模式
基本概念:构建者模式的定义 将构建的过程和表示过程进行分离 构建的过程:隐藏 表示过程 : 开放构建者模式的场景 创建一个复杂的对象,同时改复杂对象有很多默认值(初始化)的时候,可以使用构建者模式。(典型:给对象设置可选参数)构建者模式案例 AlretDialog构建者模式-UML类图结构 4.1 分析角色划分 角色一:产品 ...原创 2018-03-12 22:49:32 · 142 阅读 · 0 评论 -
Mina框架的学习第一节
Apache官方网站:http://mina.apache.org/mina-project/downloads.html本文使用:mina-2.0.18.jar Apache Mina Server 是一个网络通信应用框架,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架。MINA框架的应用比较广泛,应用的开源项目有Apache Directory、AsyncWeb、Apache ...原创 2018-06-08 14:17:23 · 125 阅读 · 0 评论 -
Mina框架的学习第二节(服务器端)
服务器端使用jar: mina-core-2.0.18.jar slf4j-api-1.7.25.jarpublic class MinaServer { // 端口号,要求客户端与服务器端一致 private static int PORT = 8282; public static void main(String[] args) { I...原创 2018-06-08 15:45:19 · 150 阅读 · 0 评论 -
Java的运算符:取整,取绝对值,取余数
1.取整: 1. 舍掉小数取整:Math.floor(2.5)=2 2. 四舍五入取整:Math.rint(2.5)=3 3. 进位取整:Math.ceil(2.1)=3 2.取绝对值: Math.abs(-3.5)=3.53.取余数: A%B = 余数 ...原创 2018-06-29 14:09:58 · 4955 阅读 · 0 评论 -
复习java的垃圾回收机制
Java为什么需要垃圾回收?判断哪些对象是垃圾JVM堆模型/分代垃圾收集算法Java为什么需要垃圾回收?在c/c++中,需要手动去释放内存,很麻烦并且容易引起内存泄露!!在Java中内存是相对以一定的,并非内存无限大。如果我们不断的分配内存空间而不进行回收,内存迟早是会用完的。所以Java由JVM提供了垃圾回收机制,此时我们只需关注对象的创建即可,无需关心对象不用...原创 2019-03-06 09:46:40 · 155 阅读 · 0 评论 -
复习Java之String API
Java 中的String类包含了50多个方法。char charAt(int index)返回给定位置的代码单元。除非对底层的代码单元感兴趣,否则不需要调用这个方法。int codePointAt(int index)返回从指定位置开始的码点。int offsetByCodePoints(int startIndex,int cpCount)返回从startIndex代码点开始,位...原创 2019-03-06 22:38:22 · 96 阅读 · 0 评论 -
java截取某个字符之前或者之后的字符串
String str = lly://enterVideoList?result={jsonString};截取?之前字符串String str1=str.substring(0, str.indexOf("?"));截取?之后字符串String str1=str.substring(0, str.indexOf("?"));String str2=str.substring(str1...原创 2019-03-04 21:25:05 · 55968 阅读 · 5 评论 -
java算法之排序算法
冒泡排序 public static void main(String[] args) { int srcArray[] = {11, 31, 44, 57, 7, 8, 911, 101, 111, 17, 21, 123, 28, 123, 32, 538, 41, 457, 540, 565, 641, 78, 81, 88, 95, 98}; bub...原创 2019-04-11 11:02:59 · 101 阅读 · 0 评论 -
线程知识巩固第一节
什么是线程?线程:操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程的开启方式有几种?怎么实现?开启线程的方式有三种:继承Thread类(重写run方法) public class Main { publ...原创 2019-04-07 19:33:19 · 193 阅读 · 0 评论 -
线程知识巩固第二节
多线程之经典案例–售票案例 public static void main(String[] args) { System.out.println("Hello World!"); new MyThread("张三 ").start(); new MyThread("李四 ").start(); } public...原创 2019-04-07 20:13:19 · 165 阅读 · 0 评论 -
线程知识巩固第三节
线程常用的一些方法sleep()方法主要的作用:停止当前线程执行,资源让给其他线程执行,到指定时间线程自动恢复运行状态。 try { //休息一秒 sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }wait() 和notify()有一个共同...原创 2019-04-07 21:51:13 · 155 阅读 · 0 评论 -
线程知识巩固第四节
线程池的使用为什么要使用线程池?线程池为线程生命周期开销问题和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。优点:请求线程已经存在,所以消除了线程创建所带来的延迟。可以立即请求服务,使应用程序响应更快。通过适当地调整线程池中的线程数目,也就是当请求的数目超过某个阈值时,就强制其它任何新到的请求一直等待,直到获得一个线程来处理为止,从而可以防止资源...原创 2019-04-07 22:29:54 · 143 阅读 · 0 评论 -
线程知识巩固第五节
线程池的原理上一篇介绍了为什么要使用线程,以及创建线程的的几种方式。接下来将详细介绍线程的实现原理。由源码可知,线程池实际上调用的还是ThreadPoolExecutor方法。下面将看一下ThreadPoolExecutor的源代码和注释解析。 /** * Creates a new {@code ThreadPoolExecutor} with the given initial...原创 2019-04-08 19:48:08 · 136 阅读 · 0 评论 -
java算法之二分查找算法
二分查找又称折半查找,它是一种效率较高的查找方法。、折半查找的算法思想:、将数列按有序化(递增或递减)排列,进行折半查找。可以明显减少比较次数,提高查找效率。优点:查找比较次数少,查找速度快,性能好。缺点:要求待查表为有序表,且插入删除困难。public static void main(String[] args) { int srcArray[] = {1, 3, 4,...原创 2019-04-09 13:09:26 · 255 阅读 · 0 评论 -
java的反射机制
java的反射机制1 JAVA的反射机制是什么?反射机制能做什么?反射机制的优点与缺点 2 认识 Class类,Class类能做什么? 3 JDK中提供的Reflection API 4 JAVA反射机制提供了什么功能 • 获取类的Class对象 • 获取类的Fields • 获取类的Method • 获取类的Cons...原创 2018-03-01 11:13:14 · 325 阅读 · 0 评论