• 每日记载内容总结24


    1. linux tomcat 启动报错The BASEDIR environment variable is not defined correctly This environment
    variable is not defined correctly This environment variable is needed to run this program

    这个错是由于文件执行权限不足,解决办法就是给

    $CATALINA_HOME/bin目录下所有.sh文件添加一个可执行权限即可

    命令如下:chmod 755 *.sh

    chmod 777 aa.txt 给文件所有权限
    chmod 755 aa.txt 给属主执行权限,
    chmod 770 aa.txt 给属主和属组权限
    chmod 666 aa.txt 去掉文件的可执行权限

    linux用9个权限位来控制文件属主,用户组,其他用户的权限。
    r:read,   w:write,    x:execute,   -:none
    r--read,读权限(4),w---write写权限(2),x---execute执行权限(1)
    rwx=7
    777代表 rwxrwxrwx 赋予所有权限
    666=rw-rw-rw- 去掉文件的执行权限
    755=rwxr-xr-x 将文件变为可执行文件,并且其他人不可以修改

    u 代表属主
    g 代表数组
    o 代表其他用户
    a 代表以上3个
    + 代表增叫相关权限
    - 代表减去相关权限

    chomd ugo-x aa.txt 减去所有用户的执行权限
    chmod u+x aa.txt 给属主增加执行权限
    chgrp wangxujun aa.txt 修改文件的属性组
    chmod a+x aa 给所有人执行权限
    chmod a-x aa   给所有人减去执行权限
    chmod a+x ,a+r ,a+w aa 给所有人所有权限

    2.涉及到设置eclipse的运行环境jdk的地方:

    (1)java build path -> add libirary (2)Project->Properties->Java Compiler->Configure Workspace Setting (3)Run configuration 里面的vm

    3.关于lucene的standardAnalyzer在配置文件里面的读取问题:

    在3.0之前初始化lucene的标准分析器是不用传参数的,故初始化没问题

    在3.0之后初始化lucene的标准分析器需要传一个版本的参数,故初始化会报错(由于后来建立索引操作移出项目,作为一个小项目运行,此问题解决方法未知)

    This is a regression from JCR-2415 where we updated to Lucene version 3. Analyzers
    that have a public empty default constructor still work, but the updated once that in Lucene 3 require a Version argument don't. Note that Jackrabbit already uses the StandardAnalyzer class as the default when no explicit analyzer is specified, so as a quick workaround you can just remove that configuration option.

    在使用类反射实例化某个对象时,如果这个对象不包含无参数的构造函数,会出现这个错误

    Caused by: java.lang.InstantiationException: org.apache.lucene.analysis.standard.StandardAnalyzer
        at java.lang.Class.newInstance0(Class.java:340)
        at java.lang.Class.newInstance(Class.java:308)

    4.mysql用中间表批量更新(从一个表中查出的数据,按照与另外一个表的对应字段更新另外一个表的字段,比如本例的temp_id就是与另外一个表的对应字段,temp_name就是要更新的字段)

    t_class 

    CREATE TABLE `t_class` (
      `class_id` int(10) NOT NULL AUTO_INCREMENT,
      `class_name` varchar(20) NOT NULL,
      PRIMARY KEY (`class_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

    t_user

    CREATE TABLE `t_user` (
      `user_id` int(10) NOT NULL AUTO_INCREMENT,
      `class_id` int(10) NOT NULL,
      `user_name` varchar(20) NOT NULL,
      PRIMARY KEY (`user_id`),
      KEY `FK_OA_RORBIDDEN` (`class_id`),
      CONSTRAINT `FK_OA_RORBIDDEN` FOREIGN KEY (`class_id`) REFERENCES `t_class` (`class_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

    t_class 的class_id 管理 t_user的class_id ,现在需要从t_user查出user_name 然后更新t_class的class_name

    (1)CREATE TABLE t_tmp (temp_id INT(10)  PRIMARY KEY,temp_name VARCHAR(20));创建中间表

    (2)INSERT INTO t_tmp SELECT tu.class_id , tu.user_name FROM t_user tu; 向中间表插入数据,一个是与需要更新的表的关联字段,一个是要更新的字段数据

    (3)UPDATE t_class tc , t_tmp tt SET tc.class_name = tt.temp_name WHERE tt.temp_id = tc.class_id ; 更新数据

    (4)DROP TABLE t_tmp 删除中间表

    切忌用UPDATE t_class tc SET tc.class_name = (SELECT tu.user_name FROM t_user tu WHERE tu.class_id = tc.class_id) 如果t_class里面的class_id 比t_user里面的class_id 多的话,那么多的那部分不会被更新,反而全部变成空的

    或者说 ,最简单的一个方法:

    UPDATE t_class tc , t_user tu SET tc.class_name = tu.user_name WHERE tc.class_id = tu.class_id

  • 相关阅读:
    JavaEE基础(十九)/异常和File
    JavaEE基础(十八)/集合
    JavaEE基础(十七)/集合
    JavaEE基础(十六)/集合
    快排、插入、冒泡排序
    函数技巧总结
    读书笔记-你不知道的JS中-函数生成器
    读书笔记-你不知道的JS中-promise(3)
    异步API
    读书笔记-你不知道的JS中-promise(2)
  • 原文地址:https://www.cnblogs.com/cuiyf/p/3415474.html
Copyright © 2020-2023  润新知