2019年第三季度笔记整理

 

2019-07-02 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

    <!-- 业务日志 -->
    <appender name="APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>data/log/log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--<encoder class="com.test.query.feign.rewrite.PatternLayoutEncoderReWrite">-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <!--<pattern>%msg</pattern>-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 只记录sql日志 -->
    <appender name="SQL_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>data/log/log.sql@.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--<FileNamePattern>C:/logs/log.@build.finalName@.%d{yyyy-MM-dd}.log</FileNamePattern>-->
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--<encoder class="com.test.query.feign.rewrite.PatternLayoutEncoderReWrite">-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <!--<pattern>%msg</pattern>-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="jdbc.sqlonly" level="INFO" additivity="false">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="SQL_LOG"/>
    </logger>

    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="SQL_LOG"/>
    </logger>

    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="STDOUT"/>
    </logger>

    <!--指定业务日志包范围-->
    <logger name="com.example" level="INFO" additivity="false">
        <appender-ref ref="APP_LOG"/>
        <appender-ref ref="STDOUT"/>
    </logger>

    <logger name="com" level="INFO" additivity="false">
        <appender-ref ref="APP_LOG"/>
        <appender-ref ref="STDOUT"/>
    </logger>

    <logger name="org" level="INFO" additivity="false">
        <appender-ref ref="APP_LOG"/>
        <appender-ref ref="STDOUT"/>
    </logger>

    <!-- 日志输出级别 -->
    <root level="info">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>

2019-07-05 p3c-alibaba

<reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.3</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.5</version>
            </plugin>
        </plugins>
    </reporting>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>3.8</version>
    <configuration>
        <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
        <targetJdk>1.8</targetJdk>
        <printFailingErrors>true</printFailingErrors>
        <rulesets>
            <ruleset>rulesets/java/ali-comment.xml</ruleset>
            <ruleset>rulesets/java/ali-concurrent.xml</ruleset>
            <ruleset>rulesets/java/ali-constant.xml</ruleset>
            <ruleset>rulesets/java/ali-exception.xml</ruleset>
            <ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
            <ruleset>rulesets/java/ali-naming.xml</ruleset>
            <ruleset>rulesets/java/ali-oop.xml</ruleset>
            <ruleset>rulesets/java/ali-orm.xml</ruleset>
            <ruleset>rulesets/java/ali-other.xml</ruleset>
            <ruleset>rulesets/java/ali-set.xml</ruleset>
        </rulesets>
    </configuration>
    <executions>
        <execution>
            <phase>verify</phase>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.p3c</groupId>
            <artifactId>p3c-pmd</artifactId>
            <version>1.3.5</version>
        </dependency>
    </dependencies>
</plugin>

2019-07-10 一些知识点

  1. linux中 ctrl+a 光标到行首 ctrl+e 光标到行尾
  2. IPv6的地址格式解析
  IPv6的地址长度是128位(bit)。
  将这128位的地址按每16位划分为一个段,将每个段转换成十六进制数字,并用冒号隔开。
  例如:2000:0000:0000:0000:0001:2345:6789:abcd
  这个地址很长,可以用两种方法对这个地址进行压缩,
  前导零压缩法:将每一段的前导零省略,但是每一段都至少应该有一个数字
  例如:2000:0:0:0:1:2345:6789:abcd
  双冒号法:如果一个以冒号十六进制数表示法表示的IPv6地址中,如果几个连续的段值都是0,那么这些0可以简记为::。每个地址中只能有一个::。
  例如:2000::1:2345:6789:abcd

IPV6地址格式分析

  1. ext3文件系统容量计算
block大小(KB) 单个文件最大 分区最大值
1KB 16GB 2TB
2KB 256GB 8TB
4KB 2TB 16TB
  • incode为
  • ext3文件系统采用32bit的块地址索引空间
  • 在inode条目中,引用一个块空间符号需要4byte的大小
  • 对于一个inode来说,设计了12个直接指针索引,一个间接指针索引,一个双间接指针索引,以及一个三间接指针索引
  • 这些规定都是文件系统自身的程序代码所决定的,也就是说这是开发时就设计好的,没有为什么,只有是什么;对于其它文件系统也是一样;
  • 所谓双间接指针索引和三间接指针索引指的是两级结构和三级结构,相当于linux中的根文件系统目录树一样;
  • block 与inode 的大小(block 为1, 2, 4K,inode 为128bytes 或256bytes);

计算公式:以block 4k计算

12x4K+1x4K*1024/4KB+(1x4K*1024/4KB)^2+(1x4K*1024/4KB)^3=4TB

刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则

Linux 深入理解inode/block/superblock