[springmvc] Java中三个层的区别

Java中DAO层、Service层和Controller层的区别

DAO层:

DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。

Read More

[java] 绘图

Graphics类及其子类Graphics2D

  • 它相当于组件的绘图环境,利用它可以进行各种绘图操作
  • 获得Graphics对象常有两种方法
    使用组件的getGraphics()方法
    常用Canvas及JComponent对象来进行绘图,可以Override Canvas的paint(Graphics g)方法,或JComponent的paintComponent(Graphic g)方法
    示例要点:继承JPanel,重写paintComponent();setDoubleBuffered(true);//设置双缓冲
    ``` … SwingUtilities.invokeLater(()->{ JFrame f = new JFrame(“Draw”); f.setLayout(new GridLayout(3,4)); for(int i = 0; i < 16; i ++){ f.add(new FlowerPanel(i)); } f.setSize(400,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); });//main函数中 …
Read More

[java] 网络编程

使用Java.net.URL进行网络信息获取

  • 读取网页文件内容的步骤:
  • 1.创建一个URL类型的对象
    URL url = new URL("http://www.xxx.com");
    
  • 2.利用URL类的openStream(),获得对应的InputStream类的对象
    InputStream stream = url.openStream();
    
  • 3.通过InputStream或InputStreamReader来读取内容
Read More

[java] 事件及事件监听器

事件及事件监听器

  • 事件(Event)
    鼠标,键盘,布局改变等等操作
  • 事件监听器(Event Listener) 对这些事件做出响应的程序, 是一个接口
Read More

[java] 输入输出流

字节流和字符流

字节流是以字节为单位传输的流,字符流是以经过编码后的字符为单位传输的流。

Read More

[java] 线程池和timer

线程池

  • 线程池相关的类
    ExecutorService 接口,ThreadPoolExecutor类,Executors工具类
  • 常见的用法
    ExecutorService pool = Executors.newCachedThreadPool();
    使用其execute(Runnable r)方法
    class ThreadPoolDemo{
      public static void main(String[] args){
          ExecutorService pool = Executors.newCachedThreadPool();
          MyTask t1 = new Mytask(5);
          MyTask t2 = new MyTask(7);
          MyTask t3 = new MyTask(8);
          pool.execute(t1);
          pool.execute(t2);
          pool.execute(t3);
          pool.shutdown();
      }
    }
    class MyTask implements Runnable{...}
    
Read More

[java] 流及并行流

  • Java8开始提供了流(stream)操作
  • 基本用法
    List<Integer> nums = Arrays.asList(1,2,3);
    nums.stream().forEach(x->{System.out.println(x);});
    
Read More

[java] 线程的同步

互斥锁

  • 每个对象都对应于一个monitor,它上面有一个称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象
  • 关键字synchronized用来与对象的互斥锁联系。
Read More

[java] 线程的创建

通过继承Thread类创建线程

class MyThread extends Thread{
  public void run(){
    for(int i = 0; i < 100; i ++){
      System.out.print(" " + i);
    }
  }
}
  • 使用匿名类可简写为
    new Thread(){
    public void run(){
      for(int i = 0; i < 100; i ++){
        System.out.print(" " + i);
      }
    }
    }.start();
    
Read More

[java] 匿名类

匿名类

  • 匿名类是一种特殊的内部类
  • 它没有类名,在定义类的同时就生成该对象的一个实例
  • 一次性使用的类
    class Outer
    {
    private int size = 5;
    public Object makeTheInner(int localVar)
    {
      final int finalLocalVar = 99;
      return new Object(){
        public String toString(){
          return ("InnerSize:" + size + "finalLocalVar:" + finalLocalVar);
        }
      };
    }
    }
    

    匿名类的使用

  • 不取名字,直接用其父类或接口的名字。
    也就是说,该类是父类的子类,或者实现了一个接口 编译器生成xxxxx$1之类的名字
  • 类的定义的同时就创建实例,即类的定义前面有一个new
    new类名或接口名(){……}
    不使用关键词class,也不使用extends及implements
  • 在构造对象时使用父类构造方法
    不能够定义构造方法,因为它没有名字 如果new对象时,要带参数,则使用父类的构造方法
Read More

[java] 内部类

内部类

  • 内部类不能与外部类同名
  • 类名前要冠以外部类的名字;在用new创建内部类时,也要在new前面冠以对象变量
    Parcel.Contents c = p.new Contents(33);
Read More

[java] This的使用

  • 使用this解决局部变量与域同名的问题
      Person(int age, String name){  
          this.age = age;  
          this.name = name;  
       }
    
  • 构造方法中, 用this调用另一构造方法
      Person(){  
          this(0, "");    
          ...    
      }
    
Read More

[java] 字符链接运算符“+”

  • “+”除用于算术加法运算外,还可用于对字符串进行连接操作
    int i = 300 + 5;
    String s = "hello, " + "world!";

  • “+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接
    int i = 300 + 5;
    String s = "hello, " + i + "号";
    System.out.println(s); //输出:hello, 305号

该运算符大大简化了字符串的处理

Read More

[java] 增强的for语句

  • Enhanced for语句可以方便地处理数组、集合中各元素
  • 如:
    int[] ages = new int[10];
    for(int age : ages)
    {
    ` System.out.println(age); }`
  • 这种语句是只读式的遍历
Read More

[java] 一维数组的声明

  • Java语言中声明数组时不能指定其长度(数组中元素的个数),例如:
    int a[5]; //非法

  • 数组是引用类型
    int[] a = new int[5];

  • 这里a只是一个引用

Read More

[markdown] 基础语法

  • 标题
    #表示标题,一个#代表一级标题,两个#代表二级标题,以此类推
  • 换行
    用句末的两个空格 表示换行,或者用<br>表示
  • 强调
    用前后两个星号**表示加粗,用前后一个星号*表示斜体
  • 引用
    >表示引用
  • 代码
    用前后两个反引号```表示代码
  • 分隔线
    用三个星号***表示分割线
  • 链接
    [超链接显示名](超链接地址 "超链接title")表示链接,其中title可以没有
    bilibili弹幕网
  • 图片
    ![图片alt](图片链接 "图片title")表示图片
    沙漠中的岩石
Read More