0%

2018年6月18日 上午11:13

只有war exploede才可以热部署:

idea中war和war exploded的区别及修改jsp必须重新启动tomcat才能生效的问题(转) - 话说当初 - 博客园

两种方式得到的上下文环境的路径不同:

String contextPath = request.getSession().getServletContext().getRealPath("/");
idea Tomcat 部署 war和war exploded的区别 - CSDN博客

图一:

图二:

2018年6月16日 下午11:12

缘由:

尤其在这个图中,主内存是物理设备,而线程就是一个概念,他们两个是怎么扯上关系的,而且主内存和CPU之间的关系图也是这种样子。

解惑:

  1. 线程是cpu的抽象,线程是cpu调度的对象
    1. 一个cpu可以在不同的时间片执行不同的线程
    2. 但一个线程只能在一个cpu上执行
    3. cpu抽象为线程的原因就是可以隐藏上面这两条的关系

cpu个数、核数、线程数、Java多线程关系的理解 - CSDN博客

CPU核数跟多线程的关系 - CSDN博客

2018年6月16日 下午9:03

两个赋初值最容易错的地方:

  1. 在连接的准备阶段就会给static变量赋值分配内存,这时就会赋默认值。
  2. 在new对象时,在执行构造方法真正的生成对象之前,就是给对象的普通成员变量赋初值。

这篇讲的很详细,并且文章有例子

java类到底是如何加载并初始化的? - jim小子 - 博客园

题一:

Java的一道面试题——静态变量初始化过程 - CSDN博客

题二:

jvm - Java static 变量声明、初始化顺序问题 - SegmentFault 思否


题三:题二的变形

Java_基础_静态变量一定要先声明后赋值 - CSDN博客

2018年6月16日 下午8:51

static代码块的作用:

Java中的static关键字解析 - 海 子 - 博客园

能通过this访问静态成员变量吗?

Java中的static关键字解析 - 海 子 - 博客园

static关键字会改变类中成员的访问权限吗?

Java中的static关键字解析 - 海 子 - 博客园

static能作用于局部变量么?

Java中的static关键字解析 - 海 子 - 博客园

在静态方法中new 一个内部类对象和new 一个外部类对象的区别?

在静态方法中new 一个内部类对象和new 一个外部类对象的区别_百度知道

java静态代码块和静态方法的区别、static用法:

java静态代码块和静态方法的区别、static用法_郭鹏_新浪博客

2018年6月11日 上午12:45

自己再查一查
Java中的static关键字解析 - 海 子 - 博客园

  1. 对于static变量来说,这里是为了读取配置文件中的属性
  2. 对于static方法来说,这里是为了用起来更像是工具,直接用类名操作
    1. 这里巧妙地是static方法中new自己,这不是语法错误
    2. 这也证明了static方法虽然编译的早,但是并不执行,所以不会报错
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      package com.programing.util;

      import lombok.extern.slf4j.Slf4j;
      import org.apache.commons.net.ftp.FTPClient;

      import java.io.File;
      import java.io.FileInputStream;
      import java.io.IOException;
      import java.util.List;

      @Slf4j
      public class FTPUtil {
      private static String /ftpIp/= PropertiesUtil./getProperty/("ftp.server.ip");
      private static String /ftpUser/= PropertiesUtil./getProperty/("ftp.user");
      private static String /ftpPass/= PropertiesUtil./getProperty/("ftp.pass");

      public FTPUtil(String ip,int port,String user,String pwd){
      this.ip = ip;
      this.port = port;
      this.user = user;
      this.pwd = pwd;
      }
      public static boolean uploadFile(List<File> fileList) throws IOException {
      FTPUtil ftpUtil = new FTPUtil(/ftpIp/,21,/ftpUser/,/ftpPass/);
      /log/.info("开始连接ftp服务器");
      boolean result = ftpUtil.uploadFile("img",fileList);
      /log/.info("开始连接ftp服务器,结束上传,上传结果:{}");
      return result;
      }

      private boolean uploadFile(String remotePath,List<File> fileList) throws IOException {
      boolean uploaded = true;
      FileInputStream fis = null;
      //连接FTP服务器
      if(connectServer(this.ip,this.port,this.user,this.pwd)){
      try {
      ftpClient.changeWorkingDirectory(remotePath);
      ftpClient.setBufferSize(1024);
      ftpClient.setControlEncoding("UTF-8");
      ftpClient.setFileType(FTPClient./BINARY_FILE_TYPE/);
      ftpClient.enterLocalPassiveMode();
      for(File fileItem : fileList){
      fis = new FileInputStream(fileItem);
      ftpClient.storeFile(fileItem.getName(),fis);
      }

      } catch (IOException e) {
      /log/.error("上传文件异常",e);
      uploaded = false;
      e.printStackTrace();
      } finally {
      fis.close();
      ftpClient.disconnect();
      }
      }
      return uploaded;
      }

      private boolean connectServer(String ip,int port,String user,String pwd){

      boolean isSuccess = false;
      ftpClient = new FTPClient();
      try {
      ftpClient.connect(ip);
      isSuccess = ftpClient.login(user,pwd);
      } catch (IOException e) {
      /log/.error("连接FTP服务器异常",e);
      }
      return isSuccess;
      }

      private String ip;
      private int port;
      private String user;
      private String pwd;
      private FTPClient ftpClient;

      public String getIp() {
      return ip;
      }

      public void setIp(String ip) {
      this.ip = ip;
      }

      public int getPort() {
      return port;
      }

      public void setPort(int port) {
      this.port = port;
      }

      public String getUser() {
      return user;
      }

      public void setUser(String user) {
      this.user = user;
      }

      public String getPwd() {
      return pwd;
      }

      public void setPwd(String pwd) {
      this.pwd = pwd;
      }

      public FTPClient getFtpClient() {
      return ftpClient;
      }

      public void setFtpClient(FTPClient ftpClient) {
      this.ftpClient = ftpClient;
      }
      }

2018年6月11日 上午12:41

为什么是List list = new ArrayList(),而不直接用ArrayList - CSDN博客
这篇文章是从设计模式的角度去分析的。

java - 为什么是List list = new ArrayList(),而不直接用ArrayList - SegmentFault 思否
这篇文章是从上转型的角度去分析的