第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);
设计模式
- 创建型模式
- 结构型模式
- 行为型模式
工厂方法
抽象工厂
建造者模式
单态模式
原型模式
适配器模式
桥接模式
组合模式
装饰模式
外观模式
享元模式
代理模式
责任链模式
命令模式
解释器模式
迭代器模式
中介者模式
备忘录模式
观察者模式
状态模式
策略模式
模板方法
访问者模式
如果看了觉得不错
点赞!转发!
达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞
第76节:Java中的基础知识的更多相关文章
-
第79节:Java中一些要点
第79节:Java中一些要点 前言 一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢 内容 如果有人问jre,jdk,jvm是什么,你怎么回答呢? jre的英 ...
-
第78节:Java中的网络编程(上)
第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...
-
第69节:Java中数据库的多表操作
第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...
-
第68节:Java中的MYSQL运用从小白到大牛
第68节:Java中的MYSQL运用从小白到大牛 前言 学习java必备要求,学会运用!!! 常见关系化数据库 BootStrap是轻量级开发响应式页面的框架,全局css组件,js插件.栅格系统是将页 ...
-
Java并发(基础知识)—— Executor框架及线程池
在Java并发(基础知识)—— 创建.运行以及停止一个线程中讲解了两种创建线程的方式:直接继承Thread类以及实现Runnable接口并赋给Thread,这两种创建线程的方式在线程比较少的时候是没有 ...
-
【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
-
第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
-
第82节:Java中的学生管理系统
第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...
-
第80节:Java中的MVC设计模式
第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...
随机推荐
-
记一次串口通信调试,慎用SerialPort.Close
做项目是遇到了串口通信,真是遇到了一个大坑,不知道是微软的坑还是我的坑. 让我慢慢道来完整的经历. 项目中以前是vb 写的,是vb与vb 之间进行串口通信,现在改成C#和之前的vb程序进行串口通信. ...
-
hdu 4784 Dinner Coming Soon(spfa + 优先队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4784 思路:建图,对于同一个universe来说,就按题目给的条件相连,对于相邻的universe,连 ...
-
Linux下文件删除的原理
Linux文件删除的原理: Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除,一般来说每个文件都有2个link计数器:i_count和i_n ...
-
[Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置
ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程: http://jingyan.baidu.com/article/14bd256e0ca52eb ...
-
用javascript正则表达式来格式化金额
<html><head><script> function a() { var amount = "-22334.334455"; //if(/ ...
-
JavaWeb之Servlet:请求 与 响应
1 引入 浏览器和服务器的种类都有很多,要在它们之间通讯,必定要遵循一定的准则,而http协议就是这样的一个"准则". Http协议:规定了 浏览器 和 服务器 数据传输的一种格式 ...
-
一行 Python 实现并行化 -- 日常多线程操作的新思路
春节坐在回家的火车上百无聊赖,偶然看到 Parallelism in one line 这篇在 Hacker News 和 reddit 上都评论过百的文章,顺手译出,enjoy:-) http:// ...
-
BZOJ 3672: [Noi2014]购票( 树链剖分 + 线段树 + 凸包 )
s弄成前缀和(到根), dp(i) = min(dp(j) + (s(i)-s(j))*p(i)+q(i)). 链的情况大家都会做...就是用栈维护个下凸包, 插入时暴力弹栈, 查询时就在凸包上二分/ ...
-
Filezilla Server日志文件
Filezilla Server版本:0.9.41. Filezilla Server日志文件在软件安装目录下Logs目录下. 但Filezilla Server默认不开始日志记录,如何开启filez ...
-
.NET Framework 4.0/4.5离线版下载
/******************************************************************************* * .NET Framework 4. ...