发表于: 2017-07-18 23:24:27

4 1328


今天完成的事情:

1.了解Debug模式

2. 尝试进行调试,对数据进行跟踪查看

3. 尝试向数据库插入100万条数据


明天计划的事情:

1.了解连接池,尝试配置

2. 买一台服务器,熟悉linux


遇到的问题:

 1.  IDEA链接数据库没有成功但没有表

没有设置ALL Schemas

点击数据库下方的Schemas-->ALL Schemas


2.在数据库中删除插入的几十万条的数据,没有删除

  好像我电脑有问题,数据库发到师兄电脑上执行不到1S就删完了

 




收获:

1.日志的级别分

  完成单元测试,到目前为止我还没有发现单

日志的级别
Level描述
ALL各级包括自定义级别
DEBUG指定细粒度信息事件是最有用的应用程序调试
ERROR错误事件可能仍然允许应用程序继续运行
FATAL指定非常严重的错误事件,这可能导致应用程序中止
INFO指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
OFF这是最高等级,为了关闭日志记录
TRACE指定细粒度比DEBUG更低的信息事件
WARN指定具有潜在危害的情况
常用的有四个,优先级由高到低为:ERROR、WARN、INFO、DEBUG
规则为,假设设置为INFO和WARN的级别,则DEBUG的不输出,
只输出INFO到一个文件和WARN及其WARN以上优先级的到一个文件
日志记录的级别有继承性,优先级低的会记录比起优先级高的的所有的日志级别。
示例:
### 设置###
log4j.rootLogger debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target System.out
log4j.appender.stdout.layout org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://java/logs/springmybatis/error.log ###
log4j.appender.D org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File logs/debug.log
log4j.appender.D.Append true
log4j.appender.D.Threshold DEBUG
log4j.appender.D.layout org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://java/logs/springmybatis/error.log ###
log4j.appender.E org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =logs/error.log
log4j.appender.E.Append true
log4j.appender.E.Threshold ERROR
log4j.appender.E.layout org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]
logger 配置说明:
log4j.rootLogger debug,stdout,D,E

将DEBUG级别的日志信息输出到student,D和E处


log4j.appender.stdout org.apache.log4j.ConsoleAppender
此句为定义名为student的输出端是哪种类型

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j.appender.D.File logs/debug.log
此句为定义名为D的输出端的文件到 scr/logs/debug.log  可以自行修改
log4j.appender.D.Threshold DEBUG

表示为输出日志的级别


log4j.appender.D.layout org.apache.log4j.PatternLayout
此句为定义名为D的输出端的layout是哪种类型,可以是

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
log4j.appender.D.layout.ConversionPattern = [SM] %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
输出的格式

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
[SM]是log信息的开头,可以为任意字符,一般为项目简称。



2. debug调试模式

  1. 首先打断点进入Debug模式


  1. F8执行下一步


  1. 选中某个变量,ctrl+F1 常看详细属性(2)


  1. F7,如果当前执行的不是方法,则继续向下进行如果是方法,则进入方法里, 开始单步执行如果其中还有方法,接着进入执行
  2. Shift+F8对应于F7,跳出执行的方法,返回调用该方法处(该方法已经执行),执行下一句
  3. F9直接执行到下一断点的位置为止


3. 尝试向数据库插入100万条数据

         long k = 0;

           // 保存sql后缀  

           StringBuffer suffix = new StringBuffer();  

           // 设置事务为非自动提交  

           conn.setAutoCommit(false);  

           PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");  

           // 外层循环,总提交事务次数  

           for (int i = 1; i <= 100; i++) {  

               // 一次提交的记录

               for (int j = 1; j <= 100; j++) {  

                   // 构建sql后缀  

                   Date nowTime = new Date(System.currentTimeMillis());

                   suffix.append("(" + k + ", " + k  

                            + ",'JAVAsds',111 , "+ nowTime +"),"); 

                   k++;

               }  

               // 构建完整sql  ,-1为去除sql语句最后一位的逗号

               String sql = prefix + suffix.substring(0, suffix.length() - 1);  

               // 添加执行sql  

               pst.addBatch(sql);  

               // 执行操作  

               pst.executeBatch();  

               // 提交事务  

               conn.commit();  

               // 清空上一次添加的数据  

               suffix = new StringBuffer(); 

           }  

           // 关闭连接  

           pst.close();  

           conn.close();  

       } catch (SQLException e) {  

           e.printStackTrace();  

       }catch (Exception e) {

e.printStackTrace();


用时178S

希望能想到更快的算法



参考资料:

关于批量插入数据之我见(100万级别的数据,mysql)    (这个博客的代码有点小错误)

idea的debug调试



PS:开始接触linux



返回列表 返回列表
评论

    分享到