Java基础
文章平均质量分 53
java基础
HandKnock
读书-手敲-思考-总结-细节-深入-查漏补缺
展开
-
语言对比学习-Java
语言对比学习-JavaJava介绍Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。1995年5月以Java的名称正式发布。伴随着互联网的迅猛发展,Java逐渐成为重要的网络编程语言2011年7月28日,Oracle公司发布Java SE 1.72014年3月18日,Oracle原创 2021-05-14 20:19:59 · 303 阅读 · 0 评论 -
String.trim()究竟去掉了什么?
trim()方法实际上trim掉了字符串两端Unicode编码小于等于32(\u0020)的所有字符 /** * Returns a string whose value is this string, with any leading and trailing * whitespace removed. * <p> * If this {@code String} object represents an empty character原创 2021-01-15 15:57:12 · 267 阅读 · 0 评论 -
写一个死锁的demo
package com.test.algorithm;public class DeadLock { public static void main(String[] args) { Thread t1 = new Thread(new MyDeadLock(true)); Thread t2 = new Thread(new MyDeadLock(false)); t1.start(); t2.start(); }}原创 2020-12-03 15:31:28 · 172 阅读 · 0 评论 -
JDK历史版本
1、jdk版本迭代2020年3月17日,JDK14正式发布JDK1.5新特性自动装箱与拆箱枚举静态导入可变参数泛型-强类型在编译时刻进行类型检查JDK 1.6新特性Jvm为了提高锁的获取与释放效率对(synchronized )进行了优化,引入了 偏向锁 和 轻量级锁JDK 1.7 新特性switch中可以使用字串JDK 1.8 新特性Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法Lambda 表达式Java 8原创 2020-11-09 22:30:34 · 1407 阅读 · 0 评论 -
锁
锁JVM锁优化和膨胀过程自旋锁:自旋锁其实就是在拿锁时发现已经有线程拿了锁,自己如果去拿会阻塞自己,这个时候会选择进行一次忙循环尝试。也就是不停循环看是否能等到上个线程自己释放锁。自适应自旋锁指的是例如第一次设置最多自旋10次,结果在自旋的过程中成功获得了锁,那么下一次就可以设置成最多自旋20次。锁粗化:虚拟机通过适当扩大加锁的范围以避免频繁的拿锁释放锁的过程。锁消除:通过逃逸分析发现其实根本就没有别的线程产生竞争的可能(别的线程没有临界量的引用),或者同步块内进行的是原子操作,而“自作多情”地给原创 2020-10-27 22:35:45 · 155 阅读 · 0 评论 -
反射-注解
注解什么是注解?类似一个标签,给字段、方法、类、做一个标记注解不仅仅是通过反射一种方式来使用,也可以使用APT在编译期处理为什么要用注解?使用它们修饰我们的代码, 可以让我们提高程序的开发效率。以及对代码施以规范,让代码更加有可读性元注解定义注解的存活时间,注解运用的地方等@Target说明了Annotation所修饰的对象范围TYPE:用于描述类、接口(包括注解类型) 或enum声明METHOD:用于描述方法CONSTRUCTOR:用于描述构造器PACKAGE:用于描述包原创 2020-10-27 22:24:17 · 578 阅读 · 0 评论 -
面向对象
Java语言主要特性易学强制面向对象是分布式的健壮安全解释型语言支持多线程面向对象思想首先面向对象是一种编程思想,在面向对象这种编程思想出来以前,主流是以c为首的面向过程的语言,它更多的是按照计算机处理事务的思想来编写代码,被称为函数,这种编程思想对我们理解来说太复杂,不符合我们的思考方式,因此面向对象的编程思想孕育而生万事万物都是对象,具有特定属性和行为动作的对象。符合人们对事物的认知习惯,认知形态的确立面向对象就可以理解为把任何事物抽象成一个对象来对待,之后再对这个对象进行操作面原创 2020-10-27 22:22:35 · 101 阅读 · 0 评论 -
异常-代理-泛型
异常体系Exception 和 Error的区别Exception 和 Error 都继承于 Throwable,在 Java 中,只有 Throwable 类型的对象才能被 throw 或者 catch,它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java 对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应的处理。Error 是指在正常情况下,不大可能出现的情况,绝大部分 Error 都会使程序处于非正常原创 2020-10-26 22:17:47 · 174 阅读 · 0 评论 -
题目-java基础
多线程和单线程线程不是越多越好,假如你的业务逻辑全部是计算型的(CPU密集型),不涉及到IO,并且只有一个核心。那肯定一个线程最好,多一个线程就多一点线程切换的计算,CPU不能完完全全的把计算能力放在业务计算上面,线程越多就会造成CPU利用率(用在业务计算的时间/总的时间)下降。但是在WEB场景下,业务并不是CPU密集型任务,而是IO密集型的任务,一个线程是不合适,如果一个线程在等待数据时,把CPU的计算能力交给其他线程,这样也能充分的利用CPU资源。但是线程数量也要有个限度,一般线程数有一个公式:最佳启原创 2020-10-26 21:27:56 · 444 阅读 · 0 评论 -
多线程
Java 并发编程也是高级必问知识:Thread生命周期、JMM、volatile、synchronizied、final、JUC、Lock、线程池等等。推荐看一下《Java 并发编程的艺术》。线程状态转换图有多个线程1、2、3、4,1、2、3 并行完后与 4 串行,至少 3 种方式实现如何中断一个线程使用标志位true/falseinterrupt()在Thread类中有两个方法可以判断线程是否通过interrupt方法被终止。interrupted()用来判断当前线是否被中断isInte原创 2020-10-26 16:11:53 · 160 阅读 · 0 评论 -
Java并发编程的艺术
并发编程的挑战上下文切换当并发执行累加操作不超过百万次时,速度会比串行执行累加操作要慢。那么,为什么并发执行的速度会比串行慢呢?这是因为线程有创建和上下文切换的开销如何减少上下文切换减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一 些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。CAS算法。Java的Atomic包使用CAS算法来更新数据,而不需要加锁。原创 2020-10-26 16:00:19 · 319 阅读 · 0 评论