服务端编程技术详解(Java篇)

本文深入讲解Java基础,包括StringBuilder与StringBuffer的区别、BufferedReader与Scanner的使用场景;探讨Java面向对象编程,涵盖Lambda表达式、多态性实现、抽象类与接口的应用;介绍Java高级编程技巧,如动态规划、反射机制及设计模式;并解析系统性能指标和Java虚拟机内存模型。
摘要由CSDN通过智能技术生成

1. Java基础
参考:http://www.runoob.com/java/java-tutorial.html

StringBuilder与StringBuffer
StringBuilder: 速度优势;
StringBuffer: 线程安全,可同步访问。

BufferedReader与Scanner
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a = br.readLine;
Scanner sc = new Scanner(System.in);
String b = sc.nextLine;
BufferedReader:Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。
可多线程处理,支持同步,足够大的缓冲区内存,速度快
Scanner:java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型。

数组
二维数组
声明:数组类型[][] 数组名;数组类型 数组名[][];,例如int[][] array;
长度:array.length; // 为一维的长度
锯齿数组:各行长度不同
注意:
使用语法new int[5][]创建数组时,需指定第一个下标。语法new int[][]是错误的。

2. Java面向对象

JDK8

Lambda表达式:Java SE 8中的新特性,允许通过表达式代替功能接口。本质是语法糖,由编译器推断并转换包装为常规代码,以更少代码实现同样的功能。
基本语法:(parameters)->expression或(parameters)->{statements;}

::双冒号用法:双冒号运算是Java中的方法引用,方法引用包括实例方法、静态方法。将方法作为参数传递给需要的方法,或者说是传递到stream()中去。
基本语法:类名::方法名

java多态
多态性是对象多种表现形式的体现,即同一个行为具有多个不同表现形式或形态的能力。
多态的实现方式:
重写、接口、抽象类和抽象方法

重写(Override)与重载(Overload)
重写:子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参不变。
重载:在一个类里面,方法名相同,参数不同。返回类型相同也可以不同。
重写与重载是java多态性的不同表现,重载是一个类的多态性表现,重写是子类与父类的一种多态性表现。
参考:http://www.runoob.com/java/java-override-overload.html

虚函数
java类中普通成员函数(没有被static、native等关键字修饰)就是虚函数。

抽象类
某类的方法具体实现由其子类确定,可在父类声明该方法为抽象方法。
有抽象方法的类必定是抽象类,构造方法、类方法(用static修饰的方法)不能声明为抽象方法。

封装
一种将抽象性函数接口的实现细节部分包装、隐藏起来的方法。
封装步骤:
① 修改属性的可见性(如private)
② 提供对外的公共方法访问,用于对私有属性的访问(如getter\setter方法)。

接口
Java接口必须实现接口内所描述的所有方法,否则必须声明为抽象类。


java.lang 打包基础的类
java.io 包含输入输出功能的函数

3. Java高级编程

动态规划(Dynamic Programming): 一种分阶段求决策问题的数学思想,不止用于编程领域,也用于管理学、经济学、生物学。
重要概念:最优子结构、边界、状态转移公式。
备忘录算法:暂存计算结果。

反射机制:反射将Java类中的各个成分映射成一个个Java对象。
程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言,包括Perl,Python,Ruby。

设计模式
创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
还有两类:并发型模式和线程池模式。

单例模式:主要包含懒汉式单例、饿汉式单例(线程安全)、登记式单例
参考:
http://www.petrichar.com/?p=592
https://blog.csdn.net/jason0539/article/details/23297037/

4. 系统相关

系统吞吐量:单位时间内中央处理器(CPU)从存储设备读取——>处理——>存储信息的量。从业务上来讲,可理解为应用系统每秒钟最大能接受的用户访问量,或者每秒钟最大能处理的请求数。
QPS:每秒钟处理完请求的次数。具体指发出请求到服务器处理完成功返回结果。
TPS:每秒钟处理完的事务次数,一般对整个系统而言。
并发量:系统能同时处理的请求数。
RT:响应时间,处理一次请求所需要的平均处理时间。
计算关系:
并发量=QPS*平均响应时间
参考:https://blog.csdn.net/cainiao_user/article/details/77146049

5. Java虚拟机

Java内存模型
Java Memory Model, JMM。 Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。
Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。变量包括实例字段、静态字段和构成数组对象的元素,不包括局部变量与方法参数,因为后者是线程私有的,不会共享,也就不存在竞争的问题。

内存溢出(out of memory):指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给他存了long才能存下的数,就会发生内存溢出。

内存泄露(memory leak),是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,最终都会申请用光。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anneCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值