第76节:Java中的基础知识

设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat

折佣动态代理解决网站的字符集编码问题

使用request.getParameter()获得的数据是否有乱码问题.

自定义注解

@: @Test等.注解就是一种数据类型

package com.dashucoding.test;

import java.util.ArrayList;
import java.util.List; public class TestAnnotation {
// 注解含义: 声明当前的方法是重写的方法
@Override
public String toString() {
return super.toString();
} // @Test
public void test01() {
// 不使用 不加警告
@SuppressWarnings("unused")
int i;
// 让不使用的变量,和泛型不报警告
@SuppressWarnings({ "rawtypes", "unused" })
List a = new ArrayList();
} // @Deprecated: 声明方法是过时的方法 }
java.lang
Class String
java.lang.Object
java.lang.String
public final class String exteds Objectt
implements Serializable, Comparable<String>, CharSequence
String str = "abc";
char data[]={'a','b','c'};
String str = new String(data);
Object.toString()
StringBuffer
StringBuilder
Charset
Serialized Form
// 编译期间有效
@Override
@Deprecated
@Suppresswarning

自己定义注解

// 定义注解
public @interface MyTest{
// 给注解定义属性
public long time();
} 格式
public @interface 注解名称{
public 属性类型 属性名称 1() default 默认值;
}
//以下注解的含义是:如果当前方法的执行时间超过1秒,会报错
@Test(timeout=1000) @Deprecated
//以下注解的含义是:声明以下的方法是过时的方法,不建议大家使用 //@SuppressWarnings("unused")
抑制编译器发生警告信息 //@SuppressWarnings({ "unused", "rawtypes" })
抑制编译器发生警告信息 //@Override
声明当前的方法是重写父类的方法

注解的属性支持的类型有

基本数据类型(4类8种)
String,Class,Annotation(注解类型),枚举类型
public class UserDao {

	static{
System.out.println("加载静态代码段的消息");
} @MyTest
public void addUser(){
System.out.println("增加用户");
}
@MyTest
public void delUser(){
System.out.println("删除用户");
}
@MyTest
public void uptUser(){
System.out.println("更新用户");
}
public void getUser(){
System.out.println("获取用户");
}
}
注解Retention说明当前自定义注解的作用域(Class,Source,Runtime)
//@Retention(RetentionPolicy.RUNTIME) 注解Target说明当前的自定义注解的目标对象
//@Target(ElementType.METHOD) public @interface MyTest {
//在MyTest注解中定义成员属性,默认值为-1
public long timeout() default -1;
}

注解:自定义,要说明作用域和目标对象.

设计模式:

单例模式,工厂模式,

// 单例模式
public class Stu {
private Stu() {
} private static Stu stu=new Stu(); public static Stu getInstance(){
return stu;
}
} public class TestStu {
public static void main(String[] args) {
Stu stu1=Stu.getInstance();
Stu stu2=Stu.getInstance();
Stu stu3=Stu.getInstance();
System.out.println(stu1);
System.out.println(stu2);
System.out.println(stu3);
}
}

设计模式,用于解决各种问题的套路.

装饰者模式:

要知道接口中的方法,自己定义装饰类实现接口.传参数,为不能继承的实现类.

public interface ICar {
public void start();
public void run();
public void stop();
} public class GoogleCar implements ICar{ @Override
public void start() {
System.out.println("控制谷歌的汽车启动");
} @Override
public void run() {
System.out.println("控制谷歌的汽车运行"); } @Override
public void stop() {
System.out.println("控制谷歌的汽车停止");
} } public class TestCar {
public static void main(String[] args) {
ICar car=new GoogleCar();
car.start();
car.run();
car.stop();
}
}
public interface ICar {
public void start();
public void run();
public void stop();
} public class GoogleCar implements ICar{ @Override
public void start() {
System.out.println("判断天气是否良好");
System.out.println("判断路况是否良好");
System.out.println("控制谷歌的汽车启动");
} @Override
public void run() {
System.out.println("控制谷歌的汽车运行"); } @Override
public void stop() {
System.out.println("控制谷歌的汽车停止");
} } public class TestCar {
public static void main(String[] args) {
ICar car=new GoogleCar();
car.start();
car.run();
car.stop();
}
}
public interface ICar {
public void start();
public void run();
public void stop();
} public class GoogleCar implements ICar{ @Override
public void start() { System.out.println("控制谷歌的汽车启动");
} @Override
public void run() {
System.out.println("控制谷歌的汽车运行"); } @Override
public void stop() {
System.out.println("控制谷歌的汽车停止");
} } public class MyCar extends GoogleCar{
@Override
public void start() {
System.out.println("判断天气是否良好");
System.out.println("判断路况是否良好");
super.start();
}
} public class TestCar {
public static void main(String[] args) {
ICar car=new MyCar();
car.start();
car.run();
car.stop();
}
}
public interface ICar {
public void start();
public void run();
public void stop();
} public final class GoogleCar implements ICar{ @Override
public void start() { System.out.println("控制谷歌的汽车启动");
} @Override
public void run() {
System.out.println("控制谷歌的汽车运行"); } @Override
public void stop() {
System.out.println("控制谷歌的汽车停止");
} } public class MyCar implements ICar{ ICar car; public MyCar(ICar car) {
this.car=car;
} @Override
public void start() {
System.out.println("检查天气是否良好");
System.out.println("检查路况是否拥堵");
car.start();
} @Override
public void run() {
car.run();
} @Override
public void stop() {
car.stop();
} } public class TestCar {
public static void main(String[] args) {
ICar car=new MyCar(new GoogleCar());
car.start();
car.run();
car.stop();
}
}

缺点

缺点就是接口中的方法过多,导致修饰类中的方法过多

动态代理模式:

字节码加载器,把字节码文件加载到内存,这类程序简称为字节码加载器.底层实现,利用io流技术.

字节码加载器3种.

public interface ICar {
public String start(int a,int b);
public void run();
public void stop();
} public final class GoogleCar implements ICar{ public void fly(){} @Override
public String start(int a,int b) { System.out.println("控制谷歌的汽车启动"); return "start...."+a+" "+b;
} @Override
public void run() {
System.out.println("控制谷歌的汽车运行"); } @Override
public void stop() {
System.out.println("控制谷歌的汽车停止");
} } public class Test {
public static void main(String[] args) {
Class[] clazz = GoogleCar.class.getInterfaces();
Class cla=clazz[0];
//获取ICar.class字节码对象上所有的方法
Method[] mds = cla.getMethods();
for (Method method : mds) {
System.out.println(method.getName());
}
}
}

小结

自定义注解

动态代理解决网站字符集编码

jdk提供的三个注解作用

注解的使用

注解的定义和解析

Proxy编写动态代理类

类加载器的作用

自定义注解模拟@Test

使用@Test对程序进行测试,使用Junit是单元测试的工具.什么是注解呢,Annotation注解是一种代码级别的说明.

和注释相比,注释是给开发人员看的,注解是给计算机提供相应的信息.

注解到底有什么用呢?

编译检查,代码分析,编写文档

jdk提供注解

@Deprecated 表示被修饰的方法已经过时了.
@Override jdk5.0表示复写父类的方法,jdk6.0表示是实现接口的方法
@SuppressWarnings表示抑制警告
deprecation 过时
rawtypes 忽略类型安全
unused 忽略不能使用
unchecked 忽略检查
null 忽略空指针
all 忽略所有
// 方法已过期
class Test {
@Deprecated
public void init(){
}
}
jdk 5.0
class Test1 {
public void init(){}
}
class Test2 extends Test1{
@Override
public void init(){}
}
// jdk6.0
interface Test1{
public void init();
}
class Test2 implements Test1 {
@Override
public void init(){}
}
@SuppressWarnings("serial")
@SuppressWarnings("null")
rawtypes: 类型安全
unused: 不使用
@interface
class interface enum

自定义注解

// 定义注解
@interface MyAno{ }
@interface MyAno{
public String username() default "jack";
}

属性格式: 修饰符, 返回值类型 属性名() [default 默认值]

修饰符: 默认值 public abstract

只能是public abstract

返回值类型,基本类型,字符串String,Class,注解,枚举

属性名:自定义

default默认值

小结

类加载器

什么是类加载器,类加载器就是负责加载类的对象.

class文件加载到内存生成Class对象,所有的类加载器都是java.lang.ClassLoader的子类.

类加载器加载机制是全盘负责委托机制.

动态代理解决全站乱码问题

request.getMethod(); 获取当前请求类型
request.setCharacterEncoding(“utf-8”);
String v=request.getParameter(name);

设计模式

  1. 创建型模式
  2. 结构型模式
  3. 行为型模式
工厂方法
抽象工厂
建造者模式
单态模式
原型模式
适配器模式
桥接模式
组合模式
装饰模式
外观模式
享元模式
代理模式
责任链模式
命令模式
解释器模式
迭代器模式
中介者模式
备忘录模式
观察者模式
状态模式
策略模式
模板方法
访问者模式

如果看了觉得不错

点赞!转发!

达叔小生:往后余生,唯独有你

You and me, we are family !

90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通

简书博客: 达叔小生

https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

第76节:Java中的基础知识的更多相关文章

  1. 第79节:Java中一些要点

    第79节:Java中一些要点 前言 一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢 内容 如果有人问jre,jdk,jvm是什么,你怎么回答呢? jre的英 ...

  2. 第78节:Java中的网络编程(上)

    第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...

  3. 第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  4. 第68节:Java中的MYSQL运用从小白到大牛

    第68节:Java中的MYSQL运用从小白到大牛 前言 学习java必备要求,学会运用!!! 常见关系化数据库 BootStrap是轻量级开发响应式页面的框架,全局css组件,js插件.栅格系统是将页 ...

  5. Java并发(基础知识)—— Executor框架及线程池

    在Java并发(基础知识)—— 创建.运行以及停止一个线程中讲解了两种创建线程的方式:直接继承Thread类以及实现Runnable接口并赋给Thread,这两种创建线程的方式在线程比较少的时候是没有 ...

  6. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  7. 第83节:Java中的学生管理系统分页功能

    第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...

  8. 第82节:Java中的学生管理系统

    第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...

  9. 第80节:Java中的MVC设计模式

    第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...

随机推荐

  1. [DP][NOIP2013]花匠

    花匠 问题描述: 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致. ...

  2. 2019新版UI设计面试题汇总(附答案)

    问题一.Android手机的常用设计尺寸有_________.怎么适配ios和安卓. 答案:安卓320 X 480是常规模拟器.但现在的开发都是用360x640做一倍率.480 X 800(1.5倍率 ...

  3. python3 第三十二章 - 标准库概览

    1. 操作系统接口 os 模块提供很多函数与操作系统进行交互︰ >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Pyt ...

  4. zabbix3.0监控Windows服务器

    我们下载后,解压开始有多个文件: conf目录存放是agent配置文件bin文件存放windows下32位和64位安装程序 找到conf下的配置文件 zabbix_agentd.win.conf ,修 ...

  5. Intellij IDEA 环境 tomcat 启动设置

    第一步:选择新的新的配置,我选择是Tomcat Server----->Local配置 第二步:配置Server属性 第三步:配置Deployment 第四步:配置Logs,默认配置 第五步:配 ...

  6. Intellij IDEA环境配置RestEasy,SpringMVC+RestEasy

    在SpringMvc中配置RestEasy,需要以下步骤 1.通过maven导入restEasy所需要的jar包 2.在web.xml文件中添加相应的配置. 3.编写服务. 具体步骤: 1.通过mav ...

  7. cookie存储

    cookie就是用来存储数据的 cookie先分装函数 这是用来存数据的函数 function setCookie(name,value,iDay){ if(iDay){ var oDate = ne ...

  8. csu1804

    /* csu 1804 因为define和const总出错,到现在也不明白为什么 不知道define 和 const 出来的 mod 有什么区别 */ #include<iostream> ...

  9. spring切换多数据源

    应用场景:在一个项目需要用到两个或两个以上的数据库时,要进行切换数据库,来操作相应的表. 框架:用的是spring 的org.springframework.jdbc.datasource.looku ...

  10. quartz一次简单应用经历

    项目里使用到每月的第一天需要定时统计上一个月的某种数据,这个时候,我开始第一次知道任务调度这么一个专业词汇.也初次了解quartz这个任务调度框架.网上看了好几篇博文,有种quartz越看越难的感觉, ...