每日知识记载总结51

  1. static final修饰符

    final修饰类 不能被继承,也没有子类。

    【使用环境】:
    1.不是专门为继承而设计的类,类的本身方法之间有复杂的调用关系。假如随意创建这些类的子类,子类可能会错误的修改父类的实现细节
    2.出于安全原因,类的实现细节不允许有任何改动
    3.在创建对象模型的时候,确信这个类不会再被扩展

    final 不能修饰接口
    final 修饰的方法 不能重写
    final 可以修饰入参

    static 不能修饰类 不能修饰接口 不能修饰入参 不能出现在方法内

  2. 接口和抽象类
    抽象类
    使用abstract关键字修饰,并且没有方法体
    抽象类不能直接创建实例可以定义引用变量。

     Shape shape=new Shape();错
     Shape shape=new Circle();对

    抽象类只能被继承,一个具体类继承一个抽象类,必须实现所有的抽象方法。
    有抽象的方法类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以是全是具体的方法。
    abstract与final不能同时使用。final阻止重写和继承的。
    abstract与private也不能同时修饰方法,因为private阻止继承,也阻止了重写的事实。

    抽象类与接口的区别
        抽象类不能创建实例
        抽象类的抽象方法不需在具体的子类来实现,不能有抽象的构造方法或者抽象的静态方法。
        接口是抽象类的一种特例,接口中的所有方法都必须是抽象的,接口的方法默认为public abstract类型,接口中的成员变量默认为 public static final类型

      区别如下
        抽象类可以有构造方法,接口中不能有构造方法。
        抽象类可以有普通成员变量,接口中没有。
        抽象类中包含非抽象的方法,接口中的所有方法必须是抽象的。
        抽象类的抽象方法访问的类型可以是public,protected和默认类型(最好不要),接口接口方法只能是public类型的,,并且默认为public abstract类型。
        一个类只能继承一个抽象类,但可以实现多个接口

  3. redis key值还有乱码\xac\xed\x00\x05t\x00\x0cALIYUN_TOKEN

    原因:
    spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化,如下

     private boolean enableDefaultSerializer = true;
     private RedisSerializer<?> defaultSerializer = new JdkSerializationRedisSerializer();
     private RedisSerializer keySerializer = null;
     private RedisSerializer valueSerializer = null;
     private RedisSerializer hashKeySerializer = null;
     private RedisSerializer hashValueSerializer = null;

    解决方法:设置序列化方式为StringRedisSerializer

     private RedisTemplate redisTemplate;
    
     @Autowired(required = false)
     public void setRedisTemplate(RedisTemplate redisTemplate) {
         RedisSerializer stringSerializer = new StringRedisSerializer();
         redisTemplate.setKeySerializer(stringSerializer);
         redisTemplate.setValueSerializer(stringSerializer);
         redisTemplate.setHashKeySerializer(stringSerializer);
         redisTemplate.setHashValueSerializer(stringSerializer);
         this.redisTemplate = redisTemplate;
     }
  4. 日志级别输出

    Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来,也是说大于等于的级别的日志才输出。

    logback指定某方法打印至某指定目录 以方便观察

     <appender name="CAR_TRACE"
               class="ch.qos.logback.core.rolling.RollingFileAppender">
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>INFO</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <FileNamePattern>/opt/car_log/trace_%d{yyyyMMdd}.log</FileNamePattern>
             <MaxHistory>30</MaxHistory>
         </rollingPolicy>
         <encoder>
             <pattern>%d{HH:mm:ss} [%F:%L] %-5level - %msg%n</pattern>
         </encoder>
     </appender>
    
     <logger name="CAR_TRACE" level="DEBUG">
         <appender-ref ref="CAR_TRACE" />
     </logger>

    在java类创建该日志对象

     private static Logger logger_car_trace = LoggerFactory.getLogger("CAR_TRACE");
  5. 抓取html后提取并处理文字内容

    1. pom.xml配置jar包

      <dependency>
          <groupId>org.jsoup</groupId>
          <artifactId>jsoup</artifactId>
          <version>1.11.3</version>
      </dependency>
    2. java代码

       // 1. Jsoup.parse(html).text() 用jsonP的方法处理成文本
       // 2. replaceAll("\\\uFEFF", "") 处理bom头
       Jsoup.parse(html).text().replaceAll("\\\uFEFF", "");
      
       // 3.  \t tab,缩进  \n  换行 \r 回车  全部替换为,
       text.replaceAll("[\\t\\n\\r]", ",");
      
       // 4. 替换所有的空格为逗号 包含一个或多个
       text.replaceAll("[' ']+", ",")

    延展:
    /t相当于键盘的Tab键,/n换行New Line,/r回车Carriage Return,基本的概念应该是回车表示回到最前面,换行表示换一行。

    操作系统的不同,换行符操也不同:

    /r Mac
    /n Unix/Linux
    /r/n Windows

  6. 查看linux是32位还是64位
    使用命令 “getconf LONG_BIT”

  如果返回的是32,那么就是32位

  如果返回的是64,那么就是64位

转载于:https://www.cnblogs.com/cuiyf/p/11302034.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值