Java总结知识点(1)

JSTL 是一个jsp标准标签库 使用需要 jstl.jar和standard.jar
例如 <c:if></c:if>

OGNL 是一种强大的表达式语言是Struts2的默认表达式语言

EL 是为了使jsp写起来更简单 ${}

**SSH开发经验:**之前做一些完整的项目时一直使用的是JDBC+Servlet+Jsp,然后还有就是DBUtils等一些包来简化一些工作量。我会将mysql的一些操作封装成一个工具类,会写一个BaseDao来操作数据库,BaseDao能解决简单的增删改查功能,但要解决一些比较复杂的,比如涉及到级联的时候,可能就不适用了,需要重新写个类来实现相关的功能。自己设计好bean类后,还需要去设计表结构,而如果类有改动,则需要重新设计表,复杂的时候可能设计到几张表,如果有外键关系的话更恼火…

使用SSH的话,首先来说你需要设计好类结构,然后加上注解或者声明式配置好,hibernate会自动生成表结构,而如果类有改动,表结构也会自动更改,这算是大大节省了开发时间了。然后,hibernate只需要一个BaseDao就基本能解决所有的数据操作,因为hibernate支持泛型。还有传数据和参数的问题,我们只需在action里写一个字段即可,省了很多代码。

总的来说,使用SSH框架,我们只需要关心业务逻辑的实现即可,其它的很多问题不必担心。不过我在想我是不是离底层越来越远了…我个人还是挺喜欢写原生代码的…不喜欢框架。

servlet 小型web服务器 用来生成动态web页面
JSON是一个轻量级的数据格式

**多线程:**一个进程中不只有一个线程。

SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层。

SSM 则指的是 SpringMVC 做控制器(controller),Spring 管理各层的组件,MyBatis 负责持久化层。


优化数据库:
1、选取最适用的字段属性 比如邮政编码char类型 不必要varchar 类型 另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。例如“省份”或者“性别”而数值型数据被处理起来的速度要比文本类型快得多
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、使用外键例如,外键可以保证每一条销售记录都指向某一个存在的客户。在这里,外键可以把customerinfo表中的CustomerID映射到salesinfo表中CustomerID,任何一条没有合法CustomerID的记录都不会被更新或插入到salesinfo中。
5、使用索引 索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。
那该对哪些字段建立索引呢?
一般说来,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。尽量不要对数据库中某个含有+
6、优化的查询语句 首先,最好是在相同类型的字段间进行比较的操作。
7、SELECT UPPER(“asdf”) 大写 FROM DUAL;
8、Java Date Jpa: Jpa是一个规范 orm框架是JPA的提供者或规范 Spring Data是Spring Framework的一部分。Spring Data存储库抽象的目标是显著减少为各种持久性存储实现数据访问层所需的代码量
10、多线程的优势: 发挥多核CPU的优势 防止阻塞
11、**分布式:**是为了利用更多机器,处理更多的数据
12、Redis是在用户请求和服务器的中间件,起到缓冲作用
13、Quart z:是一个任务调度框架
length——数组的属性
length()——String的方法;
size()——集合的方法
重载:同一个类方法名相同,参数不同重载不能根据方法返回值区分
**重写:**父类和子类子类重写父类方法
抽象和接口区别:抽象类可以有一个或多个抽象方法,接口中的方法都必须是抽象方法
抽象类和方法必须使用dabstract关键声明为抽象,而接口中的方法默认被修饰为public abstract类型(默认为公开抽象的方法)
**Java IO流:**字节流字符流(文件上传)
包括文件读写和网络传输。比如我要读取一段数据,我使用输入流的时候不用关心这数据是从哪儿读进来的,都直接用read方法就行了。
实现线程的2中方式: 实现Runable接口,继承Thread类
Spring Boot 2个核心配置文件
1.application配置文件是应用级别的,是当前应用的配置文件。
bootstrap配置文件bootstrap配置文件是系统级别的,用来加载外部配置,如配置中心的配置信息,也可以用来定义系统不会变化的属性。bootstatp文件的加载先于application文件
Http协议基于TCP协议主要用来客户端到服务端的数据传输格式最初是传输HTML
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
String 字符串判断重复字符:
String str = “qwertyuiopuasdf”;
String[] str1 = str.split("");
for(int i=0;i<str.length();i++)
{
int index = 0;
while(index < i)
{
if(str1[index].equals(str1[i]))
{
System.out.println(“重复字符是:”+str1[i]);
}
index++;//对于每一个值,都需要从前面开始遍历
}
}
**微服务:**架构风格(一组小型服务可以通过http方式进行互通)
他是一个单体应用(把功能模块分支出来复制到其他服务器方而不是整个项目放在服务器上(每一个服务都是可独立替换的可升级的服务单元))
SpringBoot将所有的功能场景都抽取出来,做成了一个个的启动器(都可以引用)相关场景的所有依赖都会导入进来要用什么功能,
Yml 以对象为中心比(xml)更好作为配置文件 语法 k(空格)v:表示一对键值对(空格必须有)
以空格控制层级关系;只要是左对齐的一列数据,都是同一层级的属性也是大小写敏感 字符串默认不加引号
对象 MPA 数组 写Yml
User{name: zhangsan,age: 15}
Pet:
-cat
-dog
-pig
Pet:{cat,dog,pig}
@ConfigurationProperties 批量注入配置文件的属性 。@value一个个指定 支持数据效验
@Configuration 知名当前类是一个配置类替代之前spring的配置文件
高并发:指系统同一时间能处理很多请求
什么是分布式缓存?为了提高性能和响应时间,在应用程序(通常是Web应用程序)中“部署”并确保数据从内存加载而不是从磁盘加载(速度更慢)的解决方案。
分布式系统?  分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
**Mysql集群:**多个数据库

**nginx:**反向代理服务器
Integer 和int区别: int是基本类型 Integer是其包装类 用于数据类型的转换,(因为像java容器基本类型是放不进去的容器都是装object类型的)不同:基本类型不适用new包装类型使用new在堆中分配地址,2.默认值不同基本类型是0而包装类型默认值是null
**拆箱:**就是将包装类型变为基本类型。
Java容器:实现List接口常用的类LinkedList,ArrayList,Vector
LinkedList 实现于List接口允许为null 提供额外的get()remove(),insert没有同步
ArrayList:实现可变化的数组形式他允许所有的元素包括null没有同步方法size(),isEmpty,get,add因为非同步所以效率高如果涉及堆栈操作,队列等操作应该考虑List对于需要快速插入,删除元素应该使用LinkedList,如果需要快速访问元素(查询)应该使用ArrayList集合同步是:当线程A和线程B同时访问数据的时候线程A修改数据后,线程B访问的还是修改之前的数据,不同步所有线程不安全。
Set接口不包含重复元素最多有一null 实现了有HashSet类TreeSet HashSet不允许出现重复元素,允许值为null的元素但最多只有1个null元素
TreeSet可以实现排序 等功能的集合
Map集合接口主要方法有equals()比较对象 remove删除对象put(k,v)插入对象 实现Map接口的是
Hashtable
(线程安全,多线程并发使用,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低),HashMap类非同步线程不安全接受null
单例模式:
懒汉模式(类加载时不初始化)在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
饿汗模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)
**Delete:**删除一行数据,并把该行的删除操作记录在日志中方便进行回滚。
Truncate table (“表名”) 则一次性从表中删除所有的数据执行速度快删除后不能回复。
Redis的数据结构: 1.String 2.List,3.Set,4,Hash 5,Zset
**什么是进程:**运行中应用程序。要求:用户每启动一个进程,操作系统就会为该进程分配一个独立的内存空间。
**线程是:**是进程中的一个实体,是被系统独立调度和分派的基本单位
**innerHTML :**获取数据
innerText : 可以将标签或数据放到页面上。
**Oracle的监听机制:**它负责管理 Oracle 数据库和客户端之间的通讯
**游标:**从表中检索出结果集,从中每次指向一条记录进行交互的机制
**Java回收机制(Gc)**主要场所是堆和方法区,堆中主要存储了java运行产生的对象信息

猜你喜欢

转载自blog.csdn.net/w_h_s_233/article/details/89455869