java学习
mmmbin
这个作者很懒,什么都没留下…
展开
-
JAVA内省和反射
内省Wiki 定义在计算机科学中,内省是指计算机程序在运行时,检查对象类型的一种能力,通常也可以称作运行时类型检查java定义从 java Bean的角度来看,这里的对象就是bean对象,主要关注点是属性、方法和事件,也就是运行时可以获取到相应的信息今夕一些处理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EXfeSdlZ-1647321008695)(/Users/bingye/Library/Application Support/typora-user原创 2022-03-15 13:10:44 · 552 阅读 · 0 评论 -
多线程相关的名词解释
多线程用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。这个只对一半,因为反应多角色的程序代码,最起码每个角色都要给他一个线程,否则连实际场景无法模拟当然也没法说能用单线程来实现:比如最常见的生产者消费者模型.多线程: 指的是这个程序运行时产生了不止一个线程并行与并发:并行: 多个cpu实例或者多台机器同时执行一段处理逻辑并发: 通过cpu调度算法,让用户看上去是同时执行,实际上从cpu操作层面不是真正的同时.并发往往在场景中有公共的资源,那么针对原创 2022-03-11 11:35:08 · 634 阅读 · 0 评论 -
CAS(自旋锁优化)及ABA问题
CAS (自旋锁 优化)CAS的全称是 compare and swap,他是同步类的基础, javade concurrent中的原子性都是通过CAS进行实现的**jdk8**中底层调用的native方法是Unsafe文件中的 compareAndSwapjdk11中有了升级调用的native方法是 Unsafe文件中 weakCompareAndSet原理按照理解,因为是自旋锁优化,实际不是上锁就是在某个线程在改变volatile之前需要验证一下,要改变的值和预期的值是否一致,如果一原创 2022-03-11 11:23:55 · 805 阅读 · 0 评论 -
synchronized底层锁升级
锁升级原创 2022-03-10 14:26:02 · 201 阅读 · 0 评论 -
Java8Lambda表达式
Java8Lambda表达式java8提供的函数一些接口package java.util.function;Lambda表达式一种运算符表示匿名函数和闭包为什么需要用Lambda表达式在Java中,我们无法将函数作为参数传递给一个方法,也无法申明返回一个函数的方法在javaScript中,函数参数是一个函数,返回值是另外一个函数的情况是非常常见的;JavaScript...原创 2019-04-05 23:02:21 · 260 阅读 · 0 评论 -
Optional
java8 的 Optional所属包:package java.util;Optional 就是一个容器Optional 无法直接构造因为构造方法是私有的 /** * Constructs an empty instance. * * @implNote Generally only one empty instance, {@link O...原创 2019-04-05 23:35:37 · 175 阅读 · 0 评论 -
java8 方法引用
方法引用(Method reference.)方法引用实际上是Lambda表达式的一种语法糖方法引用我们可以将方法引用看作是一个【函数指针】,function pointer.方法引用的分类类名::静态方法名 public static void main(String[] args) { Student student1 = new Stud...原创 2019-04-06 00:43:24 · 275 阅读 · 0 评论 -
Collectors
CollectorsCollect : 收集器Collector 做为collect方法的参数Collector是一个接口,他是一个可变的汇聚操作,将输入的元素积累到一个可变的结果容器内;他会在所有元素处理完毕后,将积累的结果转换为一个最终的表示(这是一个可选的操作),它支持穿行和并行两种方式Collectors本身提供了关于Ccollect的常见汇聚实现,Collectorts本身实际...原创 2019-04-07 17:26:51 · 237 阅读 · 0 评论 -
java的虚拟机的内存
区域栈stack栈的特点栈描述的是方法执行的内存模型,每个方法调用都会创建一个栈帧(存局部变量/操作数/方法出口等)JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数/局部变量等)栈属于线程私有,不能实现线程间的共享栈的存储特性先进后出,后进先出栈是由系统自动分配,速度块!栈是一个连续的内存空间堆heap堆用于存储常见好的对象和数组(数组也是对象)JVM只...原创 2019-04-04 21:59:23 · 710 阅读 · 0 评论 -
java应用程序运行机制
计算机高级语言的类型编译型解释型java是两种类型的结合Java 运行流程编写java源程序 *.java用编译器将java源程序编译成字节码文件*.class利用jvm解释执行JRE类装载字节码校验解释器解释...原创 2019-04-04 20:01:54 · 224 阅读 · 0 评论 -
java中的static关键字
通常来说,在创建类的时候,就是在描述那个类的对象的外观和行为。除非用new创建了类的对象。否则实际上并未获得任何对象,只有new来创建对象时,数据存储空间才被分配,其方法才被外界调用。以上的方法有两种情况是无法解决的。1、只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本不就不创建任何对象。2、希望某一个类的方法不用创建对象就能调用。以上两种无法解决的情况就得引入static关键原创 2017-11-07 23:29:22 · 185 阅读 · 0 评论 -
抽象类和抽象方法
概念:包含抽象方法的类就叫做抽象类abstract class Animal //定义抽象类 { String str; Animal(String s) //定义抽象类的一般方法 { str=s; } abstract void eat(); //定义抽象方法 } class Horse extends原创 2017-11-08 23:25:48 · 243 阅读 · 0 评论 -
myeclipse基本的快捷键
package com.sty;/** * 快捷键 * @author Bingye Meng * alt+/ ------> 自动补全 * syso + alt + / -------> System.out.println(); * main + alt + / -------> public static voidmain(String[] ar原创 2017-11-12 21:09:41 · 271 阅读 · 0 评论 -
java对象的内存
假定有如下一个类package com.oop;/** * 对象 * */public class Car { private String abc; public void run() { System.out.println("这是方法"); }}这有一个测试main方法package com.oop;/* * 这个测试mian方法来创建原创 2017-11-13 23:14:19 · 222 阅读 · 0 评论 -
java程序运行时对象是怎么进行放置安排? 内存是如何分配的呢?
java程序运行时对象是怎么进行放置安排?内存是如何分配的呢?1. 寄存器 这个是最快的存储区,位于处理器的内部。 但是寄存器的数量是极其有限的,所以寄存器根据需求进行分配,你是不能直接控制。2. 栈 位于通用的RAM(随机访问存储器)中,但是通过堆栈指针可以从处理器哪里获取直接的支持。 若堆栈指针向下移动,则分配新的内存;若向上移动,则释放哪原创 2017-11-05 00:39:17 · 424 阅读 · 0 评论 -
面向对象的三大特征与抽象类
继承的概念在现实生活中,继承一般指子女继承父辈的财产。在程序中,继承描述事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如公司中的研发部员工和维护部员工都属于员工,程序中便可以描述为研发部的员工和维护部的员工继承与员工。1、继承好处 继承提高代码的复用性 继承让类与类之间产生了关系,提供了多态的前提2、注意 a、类只支持单继承 b、一个类是可以被多个类继承抽象类例如:一辆自原创 2017-11-14 22:04:11 · 451 阅读 · 0 评论 -
final关键字和static关键字
1、为什么会有final因为继承的出现提高了代码的复用性。但是有些类描述完成后不想被继承,或者来说有些类中的部分方法和功能是固定的不想让子类重写。 这个时候就出现了final,final的意思是最终,不可变化的。 1、final的特点 被final修饰的类不可以被继承, 但是可以继承其他的类。 被final修饰的方法不可以被重写 被final修饰的变量是常量、这些变量只能被赋值一次 被f原创 2017-11-15 23:42:19 · 274 阅读 · 0 评论 -
匿名对象和内部类
1、匿名对象的特点概念:匿名对象是指创建对象时,只有创建对象的语句,却没有吧对象的地址赋值给某个对象。 例如:package com.niming;/* * 这里创建一个对象 */public class Person { public void eat() { System.out.println("哈哈哈哈"); }}创建一个普通对象Person p原创 2017-11-16 00:12:42 · 212 阅读 · 0 评论 -
java对象的特例:基本类型
基本类型与包装类型原创 2017-11-06 22:04:26 · 400 阅读 · 0 评论