Java简介和各个知识要点大解析,一文带你初步了解,让兴趣带你深入学习

EEGLAB数据预处理基本流程GUI实操指南 按钮,会出现如上图所示的长条形对话框,方框里面是所有电极的名称,这时将需要的剔除的电极选择上,如上图,我选择了 VEOG这个电极(该电极表示是垂直眼电),然后点“OK”,在弹出的对话框中自行确定是否需要修改命名。坏导是指在数据采集时,由于各种原因(如,电极本身问题或阻抗不好等)导致数据记录有问题,但是在后期又特别想要该通道的数据,那么就可以利用插值的方法进行——利用该导联周边的几个电极点的均值作为该导的数据。上图的图是通过IClabel的工具箱进行自动判断的,可以帮助自动识别出哪些是Eye的成分。 阅读详情

目录

Java简介

一、语言特征

Java编程语言的风格十分接近C语言、C++语言(这里不详细介绍这两种编程语言,有兴趣的同学自己可以先了解一下)。Java是一个纯粹的面向对象的程序设计语言,他继承了C++语言面向对象的技术核心,并舍弃了C语言中容易引起错误的指针、运算符重载、多重继承等特性,增加了垃圾回收功能,用于回收不再引用的对象所占的内存空间,使得程序员不用再被内存管理而担忧。

Java不同于一般的编译执行计算机语言和解释执行计算机语言。Java首先是将源代码编译成二进制字节码,然后依赖各种不同平台的虚拟机来解释执行字节码。从而实现了“一次编译,到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程序上降低了Java程序的性能。

编辑Java源代码可以使用任何无格式的纯文本编辑器进行编辑,如windows系统中的NotePad、EditPlus等程序。

Java的介绍

二、主要特征

1、Java语言是易学的。它的语法由于与C语言、C++语言十分接近,使得大部分有C语言和C++语言基础的同学很容易学习和使用Java。另方面,Java摒弃了C++语言中很少使用的、很难理解的、甚至令人迷惑的特性,如操作符重载、多继承、自动的强制类型转换。而且,Java不适用指针、而是引用。并提供了自动的垃圾回收,使得程序员不在为内存管理而担忧

2、Java语言是强制面向对象的。Java语言提供类、接口和继承等原语,为了简单期间,支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。Java语言全面支持动态绑定。

3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(Java net),它提供了用于网络应用编程的类库,包括URL、URLContnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

4、Java语言是强大的。Java的强类型机制,异常处理、垃圾的自动收集等是Java程序强大的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制是的Java更具强大。

5、Java语言是安全的。Java通常备用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制,如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制让Java用用设置安全哨兵。

6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的开发。

7、Java语言是可移植的。这种移植性源于体系结构中立性。另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C 实现的。

8、Java语言是原生支持多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子类创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口,因此任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

9、Java语言是动态的。Java语言的设计目标之一是适用于动态变化的环境。Java语言需要的类能够动态的被载入到动态的环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

10、Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。

以上只是简单的概括,不涉及干货,接下来咱们着重讲讲Java的基础组成、封装、继承、多态、抽象类、内部类、接口等知识要点,让你更快的入门Java!!!

Java语言基础组成

  • 关键字(都是小写, 类名大写)
  • 标识符

数字不能开头,不可以使用关键字(标识符里有-和$符号)

  • 注释

//单行注释    / * 多行注释/   / * * 文档注释/
注释可以嵌套,但多行不能套多行    
javadoc可提取(Java特有)
可以使用注释,进行逐段调试

    

注释的应用:
/ * 需求:练习...思路:
1、...2、...3、...步骤:
1. 用class关键字完成定义;
2. 主函数:固定格式;
3. 输出语句*/

  • 常量与变量

整数、小数、布尔、字符、字符串、null常量

  • 进制  

byte字节=8个二进制位

  • 负数

四个字节表示

  • 变量

变量作用范围(一对{}之间有效)
格式:数据类型 变量名=值;

  • 数据类型
  1. 整数:byte(1位)、short(2位)、int(默认)(4位),long(8位)
  2. 小数:float(4个字节),double(默认)(8个字节)
  3. 字符:char(2个字节,一个中文正好两个字节)
  4. 布尔:boolean(只有True和False)
  • 类型转换
  1. 自动类型转换
  2. 强制类型转换(丢失精度)

字符+数,显示ACSII码
字符类型运算过程(Java底层用Unicode码)

  • 运算符
  1. 类型运算符细节(byte担心存不下,Integer.Max_VALUE(int 型最大值))
  2. 算数运算符
  •  - * / %(取余) +(连接符)
    ++ --(在原来的基础上自加自减1)
  1. 赋值运算符

=、+=、-=、*=、......

注意:+=不等于=......+......(+=在赋值中做了强制转换,=...+....是两步运算)

  1. 比较运算符

运算完结果必须是True或者False
==   !=  >  <  <=  >=

  1. 逻辑运算符
  1. &用于连接两个布尔类型的表达式
  2. &与|或  &运算特点
  3. ^异或:两边相同为假   
  4. !非
  5. &&和&运算结果一样,但过程有点小区别    
  6. &右边始终参与,&&左为假,右不参与
  7. ||左边为真,后边不参与
  1. 位运算符

<<左移  >>右移  >>>无符号右移

        

左移几位就是乘以2的几次方,
右移:以前最高位是啥就拿啥补空位,右移就是该数据除以2的几次幂
无符号右移:右移,高位出现的空位用0补

例子: 两个数互换问题:

  1. 引入第三方变量
  2. a=a+b;    b=a-b;    a=a-b;
  3. a=a^b;    b=a^b;    a=a^b;
  1. 三元运算符

(条件表达式)?表达式1:表达式2;

  • 程序流程控制

顺序结构  选择结构  循环结构

  1. 选择结构
if(条件表达式) 
{    
	执行语句;  
}
if(条件表达式)
{
	执行语句;  
}  
else{  
	执行语句;  
}
if ........
else if...........
else   if........  
else

当if.....else......运算后有具体结果,可以用三元运算符代替

 代码块:局部代码可以定义局部变量周期

          

switch(表达式){  
	case  取值1:
		执行语句;
		break;  
	case  取值2:
		执行语句;
		break;  
	default:
		执行语句;
		break;
}    
//挨着大括号的break可以不用写
  1. 循环结构
while(条件表达式){ 
	执行语句;  
}
do{  
	执行语句;
}while(条件表达式);
for(初始化表达式;循环条件表达式;循环后表达式){
	...
}

其他流程控制语句:continue(继续);break(跳出);

    

  • 函数

       

定义在类中具有特点功能的一段独立小程序
函数也称方法;
可以将代码封装,复用;

重载:(重复载入):在同一个类中,允许存在一个以上的同名函数,只要参数个数或者参数类型不同即可;

  • 数组

同一类型数据的集合,其实就是一个容器

       

当访问到数组中不存在角标时会发生异常

//格式1:
//元素类型【】  数组名=new  元素类型【元素个数或数组长度】;
int【】  arr=new   int【3】;

//格式2:
//元素类型【】  数组名=new  元素类型【】{元素,元素,...};
  • 堆栈

堆特点:存储实体(一堆数据),不能消失;
栈的特点:先进后出

           

栈:引入(指向)堆中的数据  引入(指针)
堆: 垃圾回收机制:自动不定时回收堆中的垃圾

     

内存空间的划分:局部代码块;决定局部变量生命周期

  • 正向遍历,反向遍历(数据结构)
  • 排序(选择排序、冒泡排序、排序位置置换代码提取)

面向对象

三个特征:封装、继承、多态

对象

用Java语言对现实生活中事物描述,通过类的形式体现
对事物描述两方面:

  1. 属性
  2. 行为

对象就是该类事物实实在在个体
引用数据类型参数传递

封装

private私有,只在本类中有效,其他类就算创建对象也访问不到

public       void  函数名(){
	....    
}

      

封装隐藏实现细节、对象属性、仅对外提供公共访问方式
优点:

  1. 安全性;
  2. 便于隔离;
  3. 提高重用性;
    私有仅仅是一种体现形式(封装的)

Java语言中最小的封装体是函数

构造函数

  • 特点
  1. 函数名与类名相同
  2. 不用定义返回值类型
  3. 没有具体返回值

          

  • 作用

给对象初始化;

          

一个类中如果没有定义构造函数,该类中会有一个默认的空参数构造函数

          

  • 一般函数和构造函数区别
  1. 构造函数:对象创建时就会调用与之对应的构造函数初始化
  2. 一般函数:对象创建后,需要时才调用

          

  • 什么时候定义构造函数?

在描述事物时,该事物已存在就具备的一些内容,这些内容都定义在构造函数中;

  • 构造函数细节
  1. 对象改名:p1.setname("小强");
  2. 构造函数加void成一般函数;

this关键字

  • this(当局部变量和成员变量重名时,可以用关键字this区分)

      

this代表对象,当前对象
this就是所在函数所属对象的引用
简单来说,哪个对象调用了所在的函数,this就代表哪个对象

  • 构造函数调用构造函数,用this调用成员

对this的调用必须是构造函数第一个语句,因为初始化动作要先执行

  • 只要在本类中用本类对象,用this

static(静态关键字)

  

静态数据可以被对象调用,类调用

  • 特点
  1. static是一个修饰符,用于修饰成员;
  2. static修饰的成员被所有对象共享;
  3. static优先于对象存在,因为static随着类的加载已经存在;
  4. static修饰的成员多了一种调用方式,可以用类名调用;
  5. static存储共享数据,类中的私有
  • 成员变量(实例变量)和静态变量(类变量)的区别:
  1. 生命周期:
    成员变量随着对象的创建而存在,随着对象的被回收而释放;
    静态变量随着类的加载而存在,随着类的消失而消失;
  2. 调用方式不同:
    成员变量只能被对象调用;
    静态变量可以被对象调用,也可以类名调用;
  3. 别名不同:
    成员变量(实例)
    静态变量(类变量)
  4. 存储位置:
    成员变量在堆中;
    静态变量存在方法区(的静态区)共享数据区;
  • 静态使用注意事项
  1. 静态方法只能访问静态成员(非静态方法可以访问静态成员,也可以访问非静态成员)
  2. 静态方法不可以使用this,super关键字
  3. 主函数是静态的,只能访问静态的;

主函数

public  static  void  main(String[]  args)
  • 主函数特殊之处
  1. 格式是固定的
  2. 被JVM所识别和调用

public:因为权限必须是最大的
static:不需要对象,直接用主函数所属类名调用即可;
void:主函数没有具体返回值;
main:函数名,不是关键字,只是JVM识别的名字
String[] args:主函数参数列表是一个数组类型的参数,而且元素都是字符串类型;

静态什么时候用呢?

  1. 静态变量:
    当分析对象中所具备的成员变量的值是相同的,只要数据在对象中都是不同的,就是对象特有数据,必须存储在对象中;
  2. 静态函数:
    从源代码看,该功能是否需要访问非静态成员变量(可以加,可以不加的时候,最好加上,不浪费内存)
  3. 静态代码块:
    随着类的加载而执行,而且只执行一次 作用:用于给类进行初始化;
  4. 构造函数代码块:
    构造函数具有初始化对象针对性;

             

面向对象(数组工具对象建立)

  • 文档注释:建立一个用于操作数组工具类,其中包含着常见的数组的函数,如最值,排序等
  • 文档能提取的是公有的

设计模式

对问题行之有效的解决办法,其实他是一种思想;

     

继承

好处:

  1. 提高代码复用性;
  2. 让类之间产生关系,给多态提供了前提;
  • 父类
  • 子类

Java中支持单继承,不直接支持多继承,但对C++的多继承进行了改良

  • 单继承:一个子类只能有一个直接复类

  • 多继承:一个子类可以有多个直接父类(Java中不允许,进行了改良)会产生不确定性,不直接支持,因为父类中有相同成员会产生调用的不确定性;

  • Java支持多重继承:C继承B,B继承A

因此出现继承体系:

  1. 查看体系顶层类,了解体系基本功能;
  2. 创建体系最子类对象,完成功能使用。
  • 什么时候定义继承呢?

当类与类之间存在所属关系时候,就定义继承;

  • 在子父类中,成员的特点体现:

1、成员变量;2、成员函数;3、构造函数;

成员变量

当本类的成员和局部变量同名用this区分;
当子父类中的成员变量同名用super区分父类;

this和super用法很相似:
this代表一个本类对象的引用
super代表一个父类空间

子父类中成员函数特点

1. 覆盖:当子父类中出现成员函数一模一样,会运行子类情况,这种现象称为覆盖;  

函数两个特点:

  1. 重载:在同一类中
  2. 覆盖:子类中,覆盖也称为重写;

覆盖注意事项:

  1. 子类方法覆盖父类方法时,子类权限必须大于等于父类权限;
  2. 静态只能覆盖静态,或被静态覆盖;
  • 什么时候覆盖操作?

当对一个类进行子类扩展时,子类需保留父类功能,但要定义子类特有

子父类中的构造函数——子类的实例化过程

  • 在子类构造对象时,发现访问子类构造函数时,父类也运行了;

原因:在子类中构造函数中第一行有一个默认隐式语句,super()

  • 子类的实例化过程:子类中所有构造函数都默认访问父类构造函数
  • 为什么子类继承父类要访问他们的构造函数?

那是因为子类继承父类,获取了父类内容,所以使用父类内容前,先看父类如何对自己内容初始化

注意:super语句必须定义在子类构造函数第一行

一个对象实例化过程

person.p=new person()
  1. JVM会读取指定路径下person.class文件,并加载进内存,并会先加载person父类;
  2. 在堆内存中开辟空间,分配地址;
  3. 并在对象空间中,对对象属性默认初始化;
  4. 调用对应构造函数初始化;
  5. 构造函数中,第一行先调用父类构造函数;
  6. 父类初始化完后,对子类属性初始化;
  7. 在进行子类构造函数特定初始化;
  8. 初始化完毕后,将地址值赋给引用变量;

final关键字:继承的弊端:打破了封装性;

  1. final是一个修饰符,可以修饰类、方法、变量;
  2. final修饰的类不可以被继承;
  3. final修饰的方法不可以被覆盖;
  4. final修饰变量是一个常量,只能赋值一次;
  • 为什么要用final修饰变量,其实在程序中如果数据固定,则直接用就可以?

为了区别;

抽象类

  • 抽象:abstract /抽象关键字/

没有足够的信息描述一个类就是抽象类;

  • 特点
  1. 抽象类:方法只有声明没有实现时,该方法就是抽象方法,抽象方法必须在抽象类中;
  2. 抽象类不能被实例化,因为调用抽象方法没有意义;
  3. 抽象类必须由子类覆盖抽象类方法,否则,子类还是抽象类;
  • 抽象类是构造函数吗?

    

是,用于给子类对象初始化;

  • 抽象类可以不定义抽象方法?

    

可以,但是少见,通常类中有很多方法,但是却没有内容;

  • 抽象类不能和哪些关键字?

    

private、final、static

  • 抽象类和一般类异同点:

   

相同点:
抽象类和一般类都是用来描述事物的,都在内部定义了成员;
不同点:

  1. 一般类有足够信息描述事物;
  2. 一般类不能定义抽象方法;
  3. 一般类可以被实例化;
  • 抽象类是一个父类吗?    

对.

接口

interface() 当抽象类中方法都是抽象时,这时可以将该抽象类用接口、

   

定义接口使用的关键字不是class,是interface

  • 对于接口常见的成员:
  1. 全局变量(public static final)
  2. 抽象方法(public abstract)

由此得出结论,接口成员都是公共的权限

  • 实现

类与类之间是继承关系;类与接口之间是实现关系;

接口不可以实例化,只能由实现了接口的子类并覆盖了接口中所有抽象方法后,才可以实例化;

      

在Java中不直接支持多继承,因为会调用不确定性,所以改良多实现

      一个类中可以实现多接口

class  Test   implements  A,Z   //多实现
  • 细节:
  • 一个类在继承另一个类的同时,还可以实现多个接口
  • 接口出现避免了单继承的局限性
  • 接口与接口之间是继承关系,而且接口可以多继承;
  • 接口的特点

是对外暴露的规则,是程序的功能拓展,可以用来多实现;         

类与接口之间是实现规则,类继承的同时可以实现多个接口,降低耦合性

  • 接口与抽象类区别:

      

相同点:都是不断向上抽取而来;
不同点:

  1. 抽象类需要被继承,接口需要被实现;
  2. 抽象类中可以定义抽象方法和非抽象方法,接口中只可以定义抽象方法;

多态

  • 定义

某一类事物的多种存在形态;

  • 对象的多态性

一个对象对应着不同类型;

多态在代码中体现,父类或接口的引用指向其子类的对象;

  • 多态的好处

提高了代码扩展性,前期定义的代码,可以使用后期的内容;

  • 多态弊端

前期定义的内容不能调用后期子类特有内容;

  • 多态前提
  1. 必须由关心:继承,实现;
  2. 必须要有覆盖;
  • 多态转型
  1. 自动类型提升,但是特有功能无法访问;作用就是限制对特有功能访问;
  2. 向下转型的目的是为了使用子类中的特有语法;
  • 类型转换异常

注意:对于转型,自始至终都是子类对象在做着类型变化;

多态成员:

  1. 成员变量;
  2. 成员函数;
  3. 静态函数;
  • 多态成员变量
  1. 编译时,参考引用型变量所属类中是否有调用的成员变量;有,编译通过,没有,编译失败;
  2. 运行时,参考引用型变量所属类中是否有调用的成员变量;并运行该所属类中的成员变量;
  • 多态成员函数
  1. 参考引用型变量所属类中是否有调用的成员函数,有,编译通过;
  2. 运行时,参考的是对象所属类中是否有调用的成员函数;
  • 静态函数:谁调用显示谁;

其实对静态方法,直接用类名调用即可;

内部类:类定义在类中

  • 访问特点:内部类可以直接访问外部类中成员,包括私有成员;

外部类访问内部类中成员,必须建立内部类对象;

    

一般用于类的设计
分析事物时,发现事物描述中还有事物;

  • 内部类——修饰符
  1. 如果内部类是静态的,相当于一个外部类;
  2. 如果内部类是静态的,成员是静态的;
  3. 如果内部类中定义了静态成员,这个类也是静态类;
  • 为什么内部类能直接访问外部类成员?

      

因为内部类持有外部类引用;

  • 内部类可以放在局部位置上,只能访问局部被final修饰的局部变量;

  • 匿名内部类:就是内部类简写格式:必须有前提,内部类必须继承或实现一个外部类或接口;

其实就是一个匿名子类对象;

好了,Java的基础简介就介绍到这里,怎么样,是不是对学习Java有了一定的信心?其实技术这东西挺死板,但是咱们要运用活了,技术与实战相结合,你就是未来BATJ的大牛~~~~

喜欢请多多点赞评论转发,你们的支持就是小编最大的动力!!!关注小编,后续小编会为大家介绍更多的IT领域最新技术及学习资料,希望能帮到大家更好的学习~~~

 

离线AI实战指南:本地部署大模型处理PDF/Word/Excel 离线AI是指在无网络、不上传数据前提下,于个人设备运行大语言模型并完成文档理解、多轮对话与代码辅助等任务的技术方案。其核心依赖本地模型推理、文档解析向量化和轻量级对话调度三大能力。随着Phi-3、Qwen2、Llama3等轻量化开源模型普及,以及Ollama、LM Studio等易用工具成熟,普通用户已可在主流笔记本上实现PDF摘要、合同比对、代码注释等真实办公场景。本文聚焦离线AI的硬件适配、模型选型、文件处理链路与知识库构建,尤其强调中文OCR支持、结构化文档提取与CPU/GPU混合推理优化,助力非开发 阅读详情

相关推荐

IDEA 2023.2最新破解安装教程(含详细配置步骤及常见问题解决)

本文详细介绍了IDEA 2023.2的安装流程及高效开发环境搭建指南,涵盖基础配置、项目结构优化、核心功能使用、插件推荐、性能优化等全方位内容,帮助开发者快速掌握这一强大的Java开发工具。

x2y3z4a5b的博客 1750

Java简介和各个知识要点大解析,一文带你初步了解,让兴趣带你深入学习(1)

本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!MySQL50道高频面试题整理:本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取静态什么时候用呢?

2401_84584817的博客 683

#基于原生JS的交互式代码高亮编辑器实现教程

本文介绍了一个轻量级交互式代码高亮编辑器的实现方案。该编辑器采用原生JavaScript开发,支持语法高亮、行号显示、主题切换等核心功能,适合嵌入博客、文档等场景使用。 项目技术栈包括HTML5/CSS3/JavaScript,使用Prism.js实现语法高亮,prettier提供代码格式化功能。编辑器界面分三个区域:顶部工具栏(语言选择/主题切换)、中间编辑区(行号+代码)、底部状态栏(语言/字符数)。 核心功能实现包括:通过contenteditable属性创建可编辑区域,Flex布局实现行号与代码同步

qq_42386733的博客 1035

一文带你了解java stream, 太强了

说起stream的流, 在平时的工作中, 很多同事都在用, 而且用的很牛逼, 代码的效率也是溜溜的, 真的牛逼的不行了, 自己一直想学习一下, 虽然在开发中也慢慢学习了一些, 但是感觉还...

故事凌 2801

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

Linux中Hadoop 集群搭建

零、下载Hadoop: http://archive.cloudera.com/cdh5/cdh/5/?tdsourcetag=s_pctim_aiomsg 一、集群规划: 搭建的 hadoop 集群由 3 台服务器组成,分别叫做 master,salve1 和 slave2。其中 master 作为主节点,slave1 和 slave2 作为从节点。 二、网络配置: 1.查看 3 个节点的主机名...

白墨的小白博客 3990

一文带你了解Java虚拟机内存分配原理

使用句柄这种方式的优点是当对象里的地址发生改变时,只需要修改句柄池里的对象实例数据的指针即可,不会影响到reference的指向,实际上是一个间接引用,这就导致了在运行时会比较慢,因为需要两次指向才能访问到对象数据。这就需要我们去了解对象的访问机制了,在Java虚拟机规范中值规定了reference类型是一个指向对象的引用,但没有规定这个引用具体如何去定位、访问堆中对象的具体位置,这使得虚拟机的实现留下了很多的空间,让虚拟机厂商可以自由的发挥实现。当我们new一个对象时,这个对象是怎么存的呢?

qq_37677132的博客 2276

Procedural modeling

What is procedural modeling? One content generation option is modeling buildings, plants, clouds, cities, and worlds using an underlying system of rules. 1 Procedural Modeling: Grammars A rule-based generative system loosely organized as: ...

qq_24505417的博客 711

带你全面了解高级 Java 面试中需要掌握的 JVM 知识点

对于一名高级 Java 工程师来说,JVM 可以说是面试必问的一个知识点,而大多数人可能没有对 JVM 的实际开发和使用经验,接下来这一系列文章将带你深入了解 JVM 需要掌握的各个知识点。这也将帮助你完成从初级程序员到高级程序员的转变。 本 Chat 的内容如下: JVM 内存划分与内存溢出异常 垃圾回收算法与收集器 虚拟机的类加载机制 内存模型与线程 虚拟机性能监控工具介绍 ...

GitChat 2816

FPGA工程师必看:JESD204B同步机制实战指南(含SYSREF信号调试技巧)

本文为FPGA工程师提供了一份JESD204B同步机制的实战指南,重点聚焦于SYSREF信号的调试技巧。文章从同步的核心逻辑出发,深入剖析了时钟、SYSREF与对齐序列这“三驾马车”的协作,并详细阐述了硬件PCB布局、FPGA IP核配置、状态机监控以及使用示波器进行波形分析等关键实战步骤,旨在帮助工程师解决多通道高速系统中的同步难题,确保链路的稳定与确定性延迟。

weixin_29239661的博客 330

Vision 机器视觉案例 之 零件边缘缺陷检测

缺陷检测工具

机器视觉李小白的博客 1384

一文带你了解 Java 21

Java 21 作为长期支持版本,带来了15项重要革新,包括虚拟线程、记录模式等核心特性。虚拟线程实现了M:N映射,支持百万级并发且内存占用极低;记录模式简化了嵌套对象访问;序列集合统一了有序集合操作;分代ZGC提升了垃圾回收效率;字符串模板优化了拼接操作;结构化并发改善了任务管理。这些改进显著提升了Java在并发编程、代码简洁性和性能方面的表现,为开发者提供了更高效的开发体验。

qq_844085127的博客 2202

SAP CPI 和 PO 的区别

SAP CPI适合云集成轻量级的集成需求,并且由于其云架构,具有快速部署低维护高度可扩展的特点。SAP PO更适合本地系统集成复杂的集成场景和高度定制化的需求,并且对于已经有 SAP 基础设施的企业来说,PO 提供了更多的控制和灵活性。选择使用哪个平台通常取决于企业的技术架构、集成需求、预算以及对灵活性和控制的需求。如果企业主要使用 SAP 的本地系统,并且有复杂的集成需求,那么 SAP PO 是一个理想的选择。如果企业更多地依赖云应用,并希望简化集成操作,那么 SAP CPI 更加适合。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1870

一文带你了解Spring Cloud的各个组件

本文转载自:https://juejin.im/post/5de2553e5188256e885f4fa3 写在前面的话 马上要考试了!!! 作为一个苦逼的在读大学生,又要面临半年一度的期末考试了,因为上课没听,我啥都不会,什么通信原理,单片机。。。饶了我吧!!! 给你们看看我上课在干啥你就知道我为啥啥都不会了。 上课笔记。。 emmm,字比较丑????。我还记得那是一堂英语课,老...

凌枫ozo的博客 472

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

兴趣:最好的老师,它将带你遨游知识的海洋

现在IT行业存在这样一个现象,学计算机的非常多,但人才稀缺,大多数普通高校出来的所谓的“学计算机的”根本达不到就业的要求,稍微好点的进企业还有人要,再不行的还想干这行的就要去培训了,总之大学4年算白混,我认识的一位学长大概就是这个样子,毕业后什么都不会,到了企业才真正开始学习技术,所以在企业的待遇或职位提高很慢。据说毕业工作的都会觉得大学根本学不到东西,到了企业才是真正的开始学东西。...

weixin_43855646的博客 280

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OpenStack入门 之 初步了解

OpenStack入门 之 初步认识1. 写在前面从 OpenStack 基础知识开始学起,剖析 OpenStack 架构,分析 OpenStack 的各个组件的功能、原理和使用方法,通过实战演练来掌握 OpenStack 的部署和操作。为今后学习 OpenStack 的高级课程以及基于 OpenStack 构建企业级云计算系统打下基础。在接下来的几天里,我将会学到以下主要内容: OpenStack

hoofi.xyz 2565

一文带你了解Java Agent

Java Agent这个技术,对于大多数同学来说都比较陌生,但是多多少少又接触过,实际上,我们平时用的很多工具,都是基于Java Agent实现的,例如常见的热部署JRebel,各种线上诊断工具(btrace, greys),还有阿里最近开源的arthas。 其实Java Agent一点都不神秘,也是一个Jar包,只是启动方式和普通Jar包有所不同,对于普通的Jar包,通过指定类的main函数进行...

程序之道的博客 925

一文带你了解SpringMVC基本知识

SpringMVC简介 MVC模式 MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的开发思想。 M(model)模型:处理业务逻辑,封装实体 V(view) 视图:展示内容 C(controller)控制器:负责调度分发(1.接收请求、2.调用模型、3.转发到视图) SpringMVC概述 SpringMVC 是一种基于 Java 的实现 MVC 设计模式的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在Sprin

q1472750149的博客 916

一文带你了解 NIO

文章系统介绍了Java NIO编程的核心概念与组件。首先解释了用户态/内核态及其在I/O中的切换过程,然后重点讲解NIO三大组件:Channel(双向数据通道)、Buffer(数据缓冲区)和Selector(多路复用器)。详细剖析了ByteBuffer的结构、使用方法和常见操作(flip/clear/compact等),包括直接内存与堆内存缓冲区的区别。最后通过ScatteringReads分散读取、GatheringWrites集中写入的示例,以及黏包半包处理的实际练习,展示了NIO的高效数据处理能力。

殊途的博客 959

JAVA基础知识总结(万字长文一文了解JAVA所有基础知识)(上)

今天笔者将会开启新的专栏,后端开发,在这之前,笔者先总结一下所有JAVA基础知识以及后续JVM的深度解析,以供后续阅览参考,由于篇幅原因,Java专栏将分为上、中、下三期。本篇仅供查阅复习使用。后几期也会进行总结。长文警告!!!我们将类看作自定义数据类型,用于表示和处理基本类型以外的其他数据。一个数据类型由其包含的属性和该类型可以进行的操作组成,属性可以分为类本身的属性,也可以是实例具有的属性,操作也类似。类型本身具有的属性,通过类变量体现。类型本身可以进行的操作,通过类方法体现。

wxchyy的博客 1584

【Java】一文带你理清Java中Scanner和BufferedReader区别

一文带你理清Java中Scanner和BufferedReader区别

JeredYe的博客 2127

前端需要了解的后端知识

一名有前端工程师,除了掌握自身知识体系外,在业余时间也应该了解下后端的知识时间,由于前端与后端工作是最最密切相关的,多学习些后端知识对自身也是大有好处的。 1、后端语言 后端语言用来写后台的三巨头:php、JAVA、ASP.NET三门语言各有特色,php轻量级开发,适合开发论坛和bbs的后台。java就不用说了,比较大型的项目的后台都是用java写的。工作的需求也是很大,但是从业的人员也是 非常多的,ASP.NET是微软提出的开发后台的一门技术。但是因为跨平台的特性不好的原因。是干不过Java的不过听说最近

Arui_0的博客 2713

别整那些虚的,Java构造器,一文带你了解(1)

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

a1901149的博客 684

史上最全的大数据技术栈,有种冲动学习的既视感,你是否感受到了自己的不足?

前言 提起大数据,不得不提由IBM提出的关于大数据的5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性),而对于大数据领域的从业人员的日常工作也与这5V密切相关。大数据技术在过去的几十年中取得非常迅速的发展,尤以Hadoop和Spark最为突出,已构建起庞大的技术生态体系圈。 下面我们通过一张图来了解一下目前大数据领域常用的一些技术,当然大数据发展至今所涉及技术远不止这些。 下面自底向上介绍各个层的主要项目。 .

python6_quanzhan的博客 7182
上一篇: 清华大佬用了6小时讲完的Python,757M,拿走不谢
下一篇: 你知道Kafka和Redis的各自优缺点吗?一文带你优化选择,不走弯路
Java领域指导者
博客等级 码龄7年 404粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值