Java基础下

多时间尺度源储荷微电网协调调度+日前日内实时+需求响应——附代码 为提高区域电网新能源消纳率,使电力系统运行成本最小,提高电力系统供电可靠性。提出考虑特性分布的储能电站接入的电网多时间尺度“源–储–荷”协调调度策略。综合储能电站、负荷侧各类需求响应资源的多时间尺度特性制定日前调度计划,并通过日内滚动与实时修正实现对预测数据更高精度的保证。以系统运行成本、弃风惩罚成本、失负荷惩罚成本为目标函数,建立多时间尺度调度模型。最后通过 MATLAB 平台调用商用软件包 CPLEX 完成混合整数规划优化,结果表明该调度策略可以达到系统运行成本最优,降低弃风率的效果。 阅读详情

异常

Java异常类层次结构图概览:

Exception和Error有什么区别?

首先都属于同一类 Throwable

Exception是程序本身可以处理的异常,可以通过catch捕获.(Checked Exception 和 Unchecked Exception)

Error是程序无法处理的错误,比如虚拟机错误

Checked Exception 和 Unchecked Exception有什么区别

Checked Exception是受检查的异常,也就是说必须在编译时解决的异常,否则没有办法通过编译

Unchecked Exception 也就是Runtime Exception(五大异常)

1.算术异常 比如分母为0

2.空指针异常

3.数组越界异常

4.字符串转数字格式异常

5.类型转换异常

Throwable类常用的方法有哪些?

getMessage() 返回异常发生时的简要描述

toString()

printStackTrace() 在控制台上打印异常信息

try-catch-finally 如何使用?

try 捕获

catch 可接多个catch(异常类型由小到大放)

finally 可加可不加 加了一般情况下一定会执行(一般用于关流之类的)

注意:不要在 finally 语句块中使用 return!

finally 中的代码一定会执行吗?

不一定,如果虚拟机被终止运行的话

关闭了cpu

程序所在的线程死亡了

都不会执行

异常使用有哪些需要注意的地方?

  • 不要把异常定义为静态变量,因为这样会导致异常栈信息错乱。每次手动抛出异常,我们都需要手动 new 一个异常对象抛出。

  • 抛出的异常信息一定要有意义。

  • 建议抛出更加具体的异常比如字符串转换为数字格式错误的时候应该抛出NumberFormatException而不是其父类IllegalArgumentException。

  • 使用日志打印异常之后就不要再抛出异常了(两者不要同时存在一段代码逻辑中)。


泛型

什么是泛型?泛型有什么用?😢

泛型可增强代码的可读性和稳定性,编译器可以对泛型参数进行检测,并且通过泛型参数只能传入指定的对象类型.

泛型的使用方式有几种?

三种 泛型类 泛型接口 泛型方法

//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型
//在实例化泛型类时,必须指定T的具体类型
public class Generic<T>{

    private T key;

    public Generic(T key) {
        this.key = key;
    }

    public T getKey(){
        return key;
    }
}

泛型接口

public interface Generator<T> {
    public T method();
}

使用泛型接口,不指定类型

class GeneratorImpl<T> implements Generator<T>{
    @Override
    public T method() {
        return null;
    }
}

使用泛型接口指定类型

class GeneratorImpl<T> implements Generator<String>{
    @Override
    public String method() {
        return "hello";
    }
}

泛型方法

   public static < E > void printArray( E[] inputArray )
   {
         for ( E element : inputArray ){
            System.out.printf( "%s ", element );
         }
         System.out.println();
    }

在 java 中泛型只是一个占位符,必须在传递类型后才能使用。类在实例化时才能真正的传递类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数,静态的方法的加载就已经完成了,所以静态泛型方法是没有办法使用类上声明的泛型的。只能使用自己声明的

//自我解释 就是静态泛型的方法 不能用类的对象泛型 只能自己声明


反射

注解(Annotation)

可以看做特殊的注释

注解只有被解析后才会生效

编译期直接扫描 运行期通过反射处理

SPI

Service Provider Interface

序列化和反序列化

什么是序列化?什么是反序列化?

序列化:将数据结构或对象转换成二进制的字节流的过程

反序列化:将在序列化过程锁生成的二进制字节流 转换成数据结构或者对象的过程

下面是序列化和反序列化常见应用场景:

  • 对象在进行网络传输(比如远程方法调用 RPC 的时候)之前需要先被序列化,接收到序列化的对象之后需要再进行反序列化;

  • 将对象存储到文件之前需要进行序列化,将对象从文件中读取出来需要进行反序列化;

  • 将对象存储到数据库(如 Redis)之前需要用到序列化,将对象从缓存数据库中读取出来需要反序列化;

  • 将对象存储到内存之前需要进行序列化,从内存中读取出来之后需要进行反序列化。


综上:序列化的主要目的是通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。

序列化协议属于 TCP/IP 协议应用层的一部分

如果有些字段不想序列化怎么办?

通过transient关键字修饰

只能修饰变量

常见序列化协议有哪些?

JDK 自带的序列化方式一般不会用 ,因为序列化效率低并且存在安全问题。比较常用的序列化协议有 Hessian、Kryo、Protobuf、ProtoStuff,这些都是基于二进制的序列化协议。

像 JSON 和 XML 这种属于文本类序列化方式。虽然可读性比较好,但是性能较差,一般不会选择。

为什么不推荐使用 JDK 自带的序列化?

我们很少或者说几乎不会直接使用 JDK 自带的序列化方式,主要原因有下面这些原因:

  • 不支持跨语言调用 : 如果调用的是其他语言开发的服务的时候就不支持了。

  • 性能差:相比于其他序列化框架性能更低,主要原因是序列化之后的字节数组体积较大,导致传输成本加大。

  • 存在安全问题:序列化和反序列化本身并不存在问题。但当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码。


I/O

Java IO 流了解吗?

IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流


I/O 流为什么要分为字节流和字符流呢?

问题本质想问:不管是文件读写还是网络发送接收,信息的最小存储单元都是字节,那为什么 I/O 流操作要分为字节流操作和字符流操作呢?

个人认为主要有两点原因:

  • 字符流是由 Java 虚拟机将字节转换得到的,这个过程还算是比较耗时;

  • 如果我们不知道编码类型的话,使用字节流的过程中很容易出现乱码问题

语法糖Syntactic

什么是语法糖?

编程语言为了方便程序员开发程序而设计的一种特殊语法,这种语法对编程语言的功能并没有影响。实现相同的功能,基于语法糖写出来的代码往往更简单简洁且更易阅读。

for-each就是一个语法糖

但是JVM并不能识别语法糖,java语法糖要想别正确执行,需要先通过编译器解糖

Java中有哪些常见的语法糖?

泛型、自动拆装箱、变长参数、枚举、内部类、增强 for 循环、try-with-resources 语法、lambda 表达式

机器人动力学与控制学习笔记(一)————机器人控制概述 一、概述 1、机器人控制的目的 对自由运动机器人来说,控制的目的是要控制机器人手端的位置和姿态(以后统一简称为位姿),即所谓位置控制问题。这时希望机器人手端所达到的位置称为期望位置或期望轨迹。期望轨迹可以在机器人任务空间中给出,也可以通过逆运动学关系转化为机器人关节空间中的期望轨迹。期望轨迹通常有两种形式:一种是一个固定位置(即固定点),另一种是一条随时间连续变化的轨迹。自由运动机器人位置控制的目的,是要使机器人手端从任意起始位置出发都能到达期望轨迹。当期望轨迹是固定点时的位置控制称为定... 阅读详情

相关推荐

避坑指南:Ubuntu 22.04上源码编译Autoware.universe(Humble版)的完整流程与常见错误修复

本文详细介绍了在Ubuntu 22.04上源码编译Autoware.universe(Humble版)的完整流程与常见错误修复方法。从环境准备、依赖安装到编译优化,提供了实用的避坑指南和解决方案,帮助开发者高效完成安装并避免常见问题。特别针对源码安装过程中的疑难杂症给出了具体修复建议。

weixin_33712987的博客 382

Java基础语法

1. Java概述 1.1 Java语言发展史 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford University Network)在1995年推出的计算机语言 Java之父:詹姆斯·高斯林(James Gosling) 2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.com 当前,我们课程使用的JDK版本:11.0 1.2 Java语言跨平台原理

terence的博客 10万+

SpringBoot+Git+Jenkins+K8s容器化部署

SpringBoot+Git+Jenkins+K8s容器一套部署流程

可乐加.糖 471

Java基础总结

时光不负赶路人,星光不负追梦人

Pandafz的博客 7722

poincare截点

poincare映射定义比较抽象,简单理解就是每个原始周期取一个点,表现在程序中的思路如下: 以激励的周期T0为poincare的原始周期,设置1个周期取m个点,取N个周期设置T0/m为ode45的步长,每个周期的 i*m个点处取一个点(i=0.0-1.0),把这些点画出来就行了。有几个点就是几倍周期。 (注意:ode45算法是变步长的算法,所以一定要之前自己设置步长,我在这个地方吃了很大一个亏...

小树 3008

手把手配置:用Synopsys VDK为英飞凌TC4x系列MCU做虚拟原型开发

本文详细介绍了如何使用Synopsys VDK为英飞凌TC4x系列MCU进行虚拟原型开发,涵盖开发环境搭建、关键外设虚拟化配置、AUTOSAR栈集成及虚拟调试与性能调优全流程。通过虚拟原型技术,开发者可提前6-12个月启动软件开发,显著提升汽车电子项目的开发效率。

weixin_30606461的博客 291

Java基础看这个就足够了【Java基础内容总结】

Java基础内容总结一、创建第一个工程二、Java基本数据类型三、Java的基本流程控制语句1、If-else2、Switch3、For4、While5、Break 和 Continue6、Return四、对象五、方法六、访问权限七、继承和多态1、toString()继承和重写实践2、多态3、接口4、抽象类八、容器九、异常1、运行时异常2、检查性异常3、自定义异常十、I/O1、控制台I/O2、文件...

harry_c的博客 8862

在Jetson Orin (Arm64)上从Ubuntu22.04回退至20.04的完整指南及ROS-noetic适配方案

本文提供了在Jetson Orin (Arm64)设备上将Ubuntu 22.04系统回退至20.04 LTS版本的完整操作指南。针对机器人开发中ROS-noetic对Ubuntu20.04的官方最佳支持,详细阐述了从关键备份、软件源与APT优先级配置、系统降级执行到后续问题排查的全过程,并附带了在Arm64架构上成功安装和验证ROS-noetic的适配方案,旨在为开发者构建稳定可靠的机器人开发环境。

flower的专栏 580

Java基础

(1)顺序结构 序结构就是从上到下每一条语句都会执行,中间没有任何判断和跳转; (2)分支结构 分支结构就是用于程序中有不同的选择,不同的选择有不同的结果;分支结构包括:if,if...else,if...else if...else,switch (3)循环结构 循环结构就是将一段代码重复执行,直到满足条件才会停止循环,去执行循环后面的语句;循环结构包括:while,do...while,for

m0_53499553的博客 2870

Flink CDC 中 StartupOptions 模式详解

Flink CDC 的 StartupOptions 模式用于指定作业启动时从源数据读取数据的起始位置,不同的模式适用于不同的业务场景,可满足多样化的数据处理需求,主要有 Initial 模式、Earliest 模式、Latest 模式、SpecificOffset 模式和 Timestamp 模式。

RodJohnsonDoctor的专栏 849

【SA8155P】AIS Camera相关内容的简单介绍

【SA8155P】AIS Camera相关内容的简单介绍

静谧、淡雅 1700

Java必备基础一——一文读懂的Java基础中的基础

Java语言基本格式 Java语言基本元素 Java书写规范

Pandafz的博客 2070

药物对接仿真软件:HADDOCK_(5).HADDOCK中蛋白质-配体对接流程

半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。如果是PDB格式,确保文件包含所有必要的原子信息。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。

kkchenjj的博客 1081

Java基础重要吗?如何提升自己的 Java 基础?

基础真心是精通Java的基石,越到后面用的技术越高级,但是你按照知识点一拆分发现全是基础知识,所以如何提升自己Java基础也是小伙们非常关心的问题。简单说说自己的观点 Java基础薄弱原因如下: 1、前期学习Java的时候基本都是懵懂状态,代码基本都是照着视频,笔记,源码艰难的理解的,但是学习基本停留在用的阶段,有的甚至不会用全靠自己强大记忆力就行学习的。 2、越到后面学习的技术基本都是针对就业需要的技术就行定向的学习的,所有基础方面就直接略过,所以仍然停留在用的层面。 3、在往后走,就是新的技术.

java9875的博客 1154

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java基础选择题

习题均在网上摘抄,总结

qq_48019875的博客 6278

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JAVA基础

该文章讲解了Java的基本语法和面向对象的基本概念,参考动力节点

weixin_74090771的博客 1552

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

在学习Java中——Java的基础重要吗?

很明确肯定重要且异常重要,用一个简单的比喻基础就是地基,有多深厚的地基就会有多高的建筑;相反地基建造的没有那么深厚,所建造出的建筑肯定受到地基的影响; 当然也有很多人觉得学习Java基础部分掌握几个简单的知识点往后学就完啦! 请注意这需要分两种情况: 第一种代码搬运工、编程IT农民工这种偏业务型的工作,并不注重基础的工作,往往自己的知识上限已经被限制住啦,在IT领域常常做的工作比较浅层; 第二种就是技术型工种注重基础知识的学习,培养夯实自己的基础,提高自己的学习上限。通常游走在底层,结实的底层知识就

LSFZ88888的博客 1079

java基础

java 01 基础语法 1.环境问题 1.1 jdk的配置 JAVA_HOME 配置的就是 JDK 安装的一个根目录 Path 无需新建,只需要添加值(JDK 下的 bin 目录)即可 CLASS_PATH 配置的就是 JDK 的 lib 目录 1.2 JVM的语言特性 JVM是Java语言能够跨平台的前提,但是JVM本身不跨平台 我们编写的文件是以”.java”为后缀的源代码文件,Ctrl+S保存时会触发编译器Eclipse对写好的代码进行编译,编译后生成以”.class.

qq_52930092的博客 1817

JAVA入门基础

1)语法不同:与 while 循环相比,do-while 循环将 while 关键字和循环条件放在后面,而且前面多了 do 关键字,后面多了一个分号。while 循环和 do-while 循环的相同处是:都是循环结构,使用 while(循环条件) 表示循环条件,使用大括号将循环操作括起来。4、 数组属于引用类型,数组可以看成是一个对象,数组中的每一个元素相当于该对象的成员变量,因为数组本身就是对象,instanceof:是Java的一个二元操作符,类似于 ==,>,< 等操作符,也是Java的保留关键字。

Fog_cxz的博客 1226

java的基础

一、理解变量的值在盒子里存的都是二进制01表示的数,图片和音频也是-127和128与255的关系,256个数代表最大数是255,从0开始连续到255.二、数据存储原理、进制转换,数据类型及转换。

zq021011的博客 2374

java基础全套_Java全套基础教程

深知Java小白学习有多么的困难,找不到一份好的资源,所以呕心沥血做了一份java基础全套的教程资源。无论你是大牛还是java刚入行的小白,这套视频都可以满足你。Java全套视频教程——Java基础入门本套Java基础入门教程包含四个重点知识点,全套免费视频教程。知识点:环境搭建:(重点掌握)常用DOS命令及快捷键、EditPlus的安装、通用文本编辑快捷键、安装JDK、第一个Java程序的开发、...

weixin_39880301的博客 769

怎么巩固JAVA基础语法基础(上)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

x496182793的博客 2306

Java基础概念汇总

Java基础

随风而欲的博客 1517

java基础详解

Dos命令 打开Dos快捷键:windows+R 输入:cmd 开启快速复制:鼠标右键>属性>编辑选项 cd 切换目录 cd.. 返回上层目录 cd\ 退回当前目录 dir 查看当前目录子文件和子文件夹 cls 清屏 exit 退出 Tab 自动补全 ↕ 使用用过的命令 mkdir...

weixin_45116982的博客 771

java的基础是什么_Java语言的基础是什么

很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识。下面就说说Java零基础学习Java编程语言基础知识的几个要点。希望能够对Java编程基础入门学习的新手有帮助。一、先明白了解什么是Java的四个方面。初学者先弄清这些Java的基本概念也是必不可少的,死记硬背肯定是不行的,重在理解,理解它们之间的区别与联系,分别有哪些应用。想想这些代码中用到了哪些知识点。不...

weixin_35260153的博客 1029

菜鸟Java基础教程 2.Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。程序计数器是当前线程执行的字节码指令地址的指示器。每个线程都有自己的程序计数器。确定线程执行的位置,指示下一条要执行的指令。在多线程环境下,确保线程切换后能够正确恢复执行位置。程序计数器通常以寄存器的形式存在于CPU中,用于记录当前线程执行的位置。在执行Java方法时,程序计数器会指示当前执行的方法字节码指令地址。

m0_46211715的博客 1737
上一篇: Java基础中
下一篇: JavaEE总结
木工不是杠
博客等级 码龄5年 8粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值