精华内容
下载资源
问答
  • 【2021.01.08】前缀指令

    2021-01-08 23:30:42
    如何判断某个指令是前缀指令还是后面的opcode? CPU判断某个指令是否是前缀指令还是opcode,是根据当前指令的内容判断的。 当前指令如果是55,那就是opcode。 如果当前指令值是66,无论后面是什么,那就是前缀...

    x86指令编码(硬编码)的结构

    可以看到前缀指令的说明有一个小括号里面写的optional,表示可以有,也可以没有。

    如何判断某个指令是前缀指令还是后面的opcode?

    1. CPU判断某个指令是否是前缀指令还是opcode,是根据当前指令的内容判断的。
    2. 当前指令如果是55,那就是opcode。
    3. 如果当前指令值是66,无论后面是什么,那就是前缀指令。
    4. 判断是否是前缀指令是根据当前指令它本身的内容来判断的。
    5. 前缀指令是有限的。
    6. 前缀指令最多4个,最少0个。

    前缀指令是分组的

    前缀指令 硬编码 分组 作用
    LOCK F0 LOCK 和 REPEAT 前缀指令

    锁地址总线。

    例如0x00412345地址,在前面加上LOCK的话。

    如果有多个CPU来执行,在某一个时刻,只能有一个核的CPU才能读这个地址,其他核CPU不能读这个地址。

    该指令在多核下才有意义。

    REPNE/REPNZ F2 LOCK 和 REPEAT 前缀指令 重复执行。当eFlag寄存器中的ZeroFlag为0时,才执行。
    REP/REPZ F3 LOCK 和 REPEAT 前缀指令 重复执行。当eFlag寄存器中的ZeroFlag为1时,才执行。
    CS 2E 段前缀指令

    段寄存器,明确告诉CPU使用哪个段。

    读写内存,涉及到内存地址时,如果没有特殊的提示或指令,那么默认的段寄存器都是DS段寄存器。

    如果涉及到ESP或EBP,默认的是SS段寄存器。

    SS 36 段前缀指令

    段寄存器,明确告诉CPU使用哪个段。

    读写内存,涉及到内存地址时,如果没有特殊的提示或指令,那么默认的段寄存器都是DS段寄存器。

    如果涉及到ESP或EBP,默认的是SS段寄存器。

    DS 3E 段前缀指令 段寄存器,明确告诉CPU使用哪个段。

    读写内存,涉及到内存地址时,如果没有特殊的提示或指令,那么默认的段寄存器都是DS段寄存器。

    如果涉及到ESP或EBP,默认的是SS段寄存器。

    ES 26 段前缀指令 段寄存器,明确告诉CPU使用哪个段。

    读写内存,涉及到内存地址时,如果没有特殊的提示或指令,那么默认的段寄存器都是DS段寄存器。

    如果涉及到ESP或EBP,默认的是SS段寄存器。

    FS 64 段前缀指令 段寄存器,明确告诉CPU使用哪个段。

    读写内存,涉及到内存地址时,如果没有特殊的提示或指令,那么默认的段寄存器都是DS段寄存器。

    如果涉及到ESP或EBP,默认的是SS段寄存器。

    GS 65 段前缀指令 段寄存器,明确告诉CPU使用哪个段。

    读写内存,涉及到内存地址时,如果没有特殊的提示或指令,那么默认的段寄存器都是DS段寄存器。

    如果涉及到ESP或EBP,默认的是SS段寄存器。

      66 操作数宽度前缀指令

    改变默认操作数宽度。例如在32位模式下使用16位操作数,在16位模式下使用32位操作数。

      67 地址宽度前缀指令 改变默认寻址方式。例如在32位模式下使用16位寻址方式,在16位模式下使用32位寻址方式。
    展开全文
  • 这里是题目描述:LeetCode-820.单词的压缩编码 根据题干我们可以看出,如果一个单词时另一个单词的后缀子串,...本题中我们需要判断输入单词的后缀情况,我们可以将所有单词反转,问题就变成了判断单词的前缀情况:"...

    这里是题目描述:LeetCode-820.单词的压缩编码

    根据题干我们可以看出,如果一个单词时另一个单词的后缀子串,则将它并入另一个单词中,最后编码时不计入它的长度,最短的编码长度是所有不是其他单词后缀的单词的长度和个数的总和

    那么,如何较高效的判断哪些单词是后缀,哪些不是呢?

    方法一:字典树+DFS

    本题中我们需要判断输入单词的后缀情况,我们可以将所有单词反转,问题就变成了判断单词的前缀情况:"me""time"的后缀,将它们反转后得到"em""emit",前者是后者的前缀

    接下来,将反转后的单词存入字典树(Trie树),它具有特性:所有具有相同前缀的单词会被存入从root节点出发的相同的路径中。例如,有单词"time""me""el""bell",将它们的反转结果存入Trie树,如下图:
    在这里插入图片描述
    通过Trie的存储,我们可以看到所有是其他单词后缀的单词都并入了其他单词的路径中,每条从root出发到达叶子节点的路径就是一个不是其他单词前缀的单词。接下来,通过DFS来遍历Trie树,计算所有叶子节点的深度以及叶子节点个数的总和,就是我们要求的最短压缩编码长度

    字典树+DFS 题解代码:

    import java.util.HashMap;
    import java.util.Map.Entry;
    
    public class Solution {
        public static void main(String[] args) {
            String[] words={"time", "me", "bell"};
            Solution obj=new Solution();
            System.out.println(obj.minimumLengthEncoding(words));
        }
        public int minimumLengthEncoding(String[] words) {
            if(words.length==0)
            {
                return 0;
            }
            if(words.length==1)
            {
                return words[0].length()+1;
            }
            Trie root=new Trie('.'); //Trie树的root节点
            for(int i=0;i<words.length;i++)
            {
                root.insert(words[i],words[i].length()-1); //将单词插入Trie树中
            }
            return dfSearchTrie(root,0,0);
        }
        int dfSearchTrie(Trie node,int deep,int encodeLen) //深度优先搜索,统计所有叶子节点的深度以及单词间分隔符的和,即压缩编码长度
        {
            if(node.child.isEmpty()) //孩子为空,是叶子节点
            {
                encodeLen+=(deep+1);
            }
            else
            {
                for(Entry<Character,Trie> e:node.child.entrySet())
                {
                    encodeLen=dfSearchTrie(e.getValue(),deep+1,encodeLen);
                }
            }
            return encodeLen;
        }
    
    }
    
    class Trie //字典树
    {
        char ch;
        HashMap<Character,Trie> child;
        Trie(char ch)
        {
            this.ch=ch;
            this.child=new HashMap<>();
        }
        void insert(String word,int index) //向Trie树中插入单词
        {
            char curCh=word.charAt(index);
            if(!this.child.containsKey(curCh))
            {
                this.child.put(curCh,new Trie(curCh));
            }
            Trie nextNode=this.child.get(curCh);
            if(index>0)
            {
                nextNode.insert(word,index-1);
            }
        }
    }

    设单词个数是n,单词平均长度是m
    时间复杂度:O(nm)
    空间复杂度:O(nm)

    方法二:反转+排序

    继续利用方法一中的“反转单词,后缀问题变前缀问题“的思想,但是这一次不需要使用Trie树

    在用java语言解题时,我们可以使用数组的排序库函数:Arrays.sort(String [])。排序结果如下图:
    在这里插入图片描述
    我们可以发现规律:若单词t是单词s的后缀,那么排序后单词t一定在s的前一位。因此,我们可以计算最短压缩编码长度:遍历排序后的数组,若当前遍历的单词是后一个单词的后缀,则不将它计入编码长度;否则,当前单词不是任何一个单词的后缀,将它的长度+1计入编码长度

    反转+排序题解代码:

    import java.util.Arrays;
    
    public class Solution {
        public static void main(String[] args) {
            String[] words={"time", "tme", "bell"};
            Solution obj=new Solution();
            System.out.println(obj.minimumLengthEncoding(words));
        }
        public int minimumLengthEncoding(String[] words) {
            if(words.length==0)
            {
                return 0;
            }
            if(words.length==1)
            {
                return words[0].length()+1;
            }
            for(int i=0;i<words.length;i++)
            {
                words[i]=reverseString(words[i]);
            }
            Arrays.sort(words);
            int encodeLen=0; //编码长度
            for(int i=0;i<words.length-1;i++)
            {
                if(!isPrefix(words[i],words[i+1])) //当前单词不是紧挨着的下一个单词的前缀
                {
                    encodeLen+=(words[i].length()+1);
                }
            }
            encodeLen+=(words[words.length-1].length()+1);
            return encodeLen;
        }
        String reverseString(String s) //反转字符串
        {
            StringBuffer sb=new StringBuffer();
            for(int i=s.length()-1;i>=0;i--)
            {
                sb.append(s.charAt(i));
            }
            return sb.toString();
        }
        boolean isPrefix(String s1,String s2) //判断s1是否是s2的前缀
        {
            if(s1.length()>s2.length())
            {
                return false;
            }
            for(int i=0;i<s1.length();i++)
            {
                if(s1.charAt(i)!=s2.charAt(i))
                {
                    return false;
                }
            }
            return true;
        }
    }

    经验总结

    1. 对于后缀问题,我们可以进行某些操作(例如本题中的反转每个单词),让它变成前缀问题
    2. 对于前缀问题,我们可以尝试使用Trie树(前缀树、字典树)来解决
    3. 对于无序的数组,我们可以尝试排序来转化问题,然后从排序后的数组来寻找规律
    展开全文
  • 阿里巴巴编码规范(Java)满分答卷

    万次阅读 2019-02-27 16:19:46
    如何处理单元测试产生的数据,下列哪些说法是正确的?ABC A .测试数据入库时加特殊前缀标识。 B .测试数据使用独立的测试库。 C .自动回滚单元测试产生的脏数据。 D .无须区别,统一在业务代码中进行判断和识别...

    多选 1.如何处理单元测试产生的数据,下列哪些说法是正确的?ABC    
      A .测试数据入库时加特殊前缀标识。
      B .测试数据使用独立的测试库。
      C .自动回滚单元测试产生的脏数据。
      D .无须区别,统一在业务代码中进行判断和识别。
    多选 2.关于并发处理,下列哪些说法符合《阿里巴巴Java开发手册》:ABC
      A .线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。
      B .同步处理时,能锁部分代码区块的情况下不要锁整个方法;高并发时,同步调用应该考虑到性能损耗。
      C .创建线程或线程池时,推荐给线程指定一个有意义的名称,方便出错时回溯。
      D .推荐使用Executors.newFixedThreadPool(int x)生成指定大小的线程池。(线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式)
    多选 3.下列哪些说法符合《阿里巴巴Java开发手册》:ACD
      A .对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。
      B .永久弃用的代码段注释掉即可,即不用加任何注释。
      C .对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三 个斜杠(///)来说明注释掉代码的理由。
      D .不要在视图模板中加入任何复杂的逻辑。
    多选 4.关于分页查询,下列哪些说法符合《阿里巴巴Java开发手册》:ABC
      A .分页查询,当统计的count为0时,应该直接返回,不要再执行分页查询语句。
      B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。
      C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。
      D .可使用存储过程写分页逻辑,提高效率。
    多选 5.根据《阿里巴巴Java开发手册》,以下功能必须进行水平权限控制校验的有:ABCD
      A .订单详情页面。
      B .类目管理后台。
      C .店铺装修后台。
      D .订单付款页面。

     

    贴出五道供大家验证,剩下的请下载文档:https://download.csdn.net/download/xingkongtianma01/10979205

    展开全文
  • 如何处理单元测试产生的数据下列哪些说法是正确的ABC A .测试数据入库时加特殊前缀标识 B .测试数据使用独立的测试库 C .自动回滚单元测试产生的脏数据 D .无须区别统一在业务代码中进行判断和识别 多选 2.关于并发...
  • 1.如何处理单元测试产生的数据,下列哪些说法是正确的? 【ABC 】多选 A .测试数据入库时加特殊前缀标识。 B .测试数据使用独立的测试库。 C .自动回滚单元测试产生的脏数据。 D .无须区别,统一在业务代码中进行...

    前几天刚过这个认证,开心哈哈,然后分享一些题给大家吧~


    1.如何处理单元测试产生的数据,下列哪些说法是正确的? 【ABC 】多选
    A .测试数据入库时加特殊前缀标识。
    B .测试数据使用独立的测试库。
    C .自动回滚单元测试产生的脏数据。
    D .无须区别,统一在业务代码中进行判断和识别。

    2.关于并发处理,下列哪些说法符合《阿里巴巴Java开发手册》:【ABC】多选
    A .线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。
    B .同步处理时,能锁部分代码区块的情况下不要锁整个方法;高并发时,同步调用应该考虑到性能损耗。
    C .创建线程或线程池时,推荐给线程指定一个有意义的名称,方便出错时回溯。
    D .推荐使用Executors.newFixedThreadPool(int x)生成指定大小的线程池。(线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式)

    3.下列哪些说法符合《阿里巴巴Java开发手册》:【ACD】多选
    A .对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。
    B .永久弃用的代码段注释掉即可,即不用加任何注释。
    C .对于暂时被注释掉,后续可能恢复使用的代码片断,在注释代码上方,统一规定使用三 个斜杠(///)来说明注释掉代码的理由。
    D .不要在视图模板中加入任何复杂的逻辑。

    4.关于分页查询,下列哪些说法符合《阿里巴巴Java开发手册》:【ABC】多选
    A .分页查询,当统计的count为0时,应该直接返回,不要再执行分页查询语句。
    B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。
    C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。//易错
    D .可使用存储过程写分页逻辑,提高效率。

    5.根据《阿里巴巴Java开发手册》,以下功能必须进行水平权限控制校验的有【ABCD】多选
    A .订单详情页面。
    B .类目管理后台。
    C .店铺装修后台。
    D .订单付款页面。

    6.关于数据库中NULL的描述,下列哪些说法符合《阿里巴巴Java开发手册》:【BD】多选
    A .NULL=NULL的返回结果为true。
    B .NULL与任何值的比较结果都为NULL。
    C .NULL<>1的返回结果为true。
    D .当某一列的值全是NULL时,sum(col)的返回结果为NULL。
    提示:count(col1,col2) 如果其中有一列为空则返回 0,那么count(col)也是一样的!

    7.关于接口使用抛异常还是返回错误码,下列哪些说法符合《阿里巴巴Java开发手册》:ABCD
    A .向公司外部提供的http/api接口,推荐使用“错误码”方式返回异常或者错误信息。
    B .对于应用内部的方法调用,推荐使用“抛出异常”的方式处理异常或者错误信息。
    C .跨应用的RPC调用,推荐使用将“错误码”和“错误简短信息”封装成Result的方式进行返回。
    D .对外提供的接口,一定要保证逻辑健壮性:尽量避免空指针等技术类异常;对于业务类异常要做好错误码或者异常信息的封装。 //这一项容易选掉

    8.关于类的序列化,下列说法哪些是正确的:【D】单选
    A .类的序列化与serialVersionUID毫无关系。
    B .如果完全不兼容升级,不需要修改serialVersionUID值。
    C .POJO类的serialVersionUID不一致会编译出错。
    D .POJO类的serialVersionUID不一致会抛出序列化运行时异常。

    9.关于Java的接口描述,下列哪些说法符合《阿里巴巴Java开发手册》:【BCD】多选
    A .在接口类中的方法和属性使用public修饰符。
    B .对于Service类,内部的实现类加Impl的后缀与接口区别。例如:ProductServiceImpl实现ProductService接口。
    C .对于Service类,基于SOA的理念,是以接口方式暴露服务。
    D .尽量不在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,而且是整个应用的基础常量。

    10.集合在遍历过程中,有时需要对符合一定条件的元素进行删除,下列哪些说法是正确的:【B】单选
    A .在 foreach 循环里进行元素的 remove操作。
    B .使用Iterator方式,如果有并发,需要对Iterator对象加锁。
    C .Iterator进行元素的删除操作,绝对是线程安全的。
    D .Java无法实现在遍历时,进行删除元素操作。

    11.关于基本数据类型与包装数据类型的使用标准,下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
    A .所有的POJO类属性必须使用包装数据类型。
    B .RPC方法的返回值和参数必须使用包装数据类型。
    C .因为JAVA的自动装箱与拆箱机制,不需要根据场景来区分数据类型。//容易选错
    D .所有的局部变量推荐使用基本数据类型。

    12.关于索引的设计,下列哪些说法符合《阿里巴巴Java开发手册》:【ACD】多选
    A .对varchar类型的字段建立索引,必须指定索引长度。
    B .对varchar类型的字段建立索引,不需要指定索引长度,这样索引区分度最好。
    C .业务上具有唯一特性的字段(含组合字段),必须指定唯一索引。
    D .建复合索引时,一般选择区分度高的字段放在最左列。

    13.关于二方库版本号的命名方式,下列哪些说法符合《阿里巴巴Java开发手册》:【ABCD】
    A .版本号命名格式:主版本号.次版本号.修订号。
    B .主版本号:产品方向改变,或者大规模API不兼容,或者架构不兼容升级。
    C .次版本号:保持相对兼容性,增加主要功能特性,影响范围极小的API不兼容修改。
    D .修订号:保持完全兼容性,修复BUG、新增次要功能特性等。

    14.关于索引的使用,下列哪些说法是正确的:【BCD】多选
    A .查询语句 WHERE a+1 = 5 可以利用a索引。
    B .查询语句WHERE date_format(gmt_create, ‘%Y-%m-%d’) = '2016-11-11’无法利用gmt_create索引。
    C .当 c 列类型为 char 时,查询语句 WHERE c = 5 无法利用c索引。
    D .索引字段使用时不能进行函数运算。

    15.关于生产环境的日志文件,下列哪些说法符合《阿里巴巴Java开发手册》:【ABCD】多选
    A .异常信息应该包括两类信息:案发现场信息和异常堆栈信息。
    B .日志文件推荐至少保存15天,因为有些异常具备以“周”为频次发生的特点。
    C .避免重复打印日志,浪费磁盘空间,务必在log4j.xml中设置additivity=false。
    D .错误日志和业务日志尽量分开存放。

    16.关于代码注释,下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
    A .特殊注释标记,请注明标记人与标记时间。
    B .待办事宜(TODO):( [标记人,标记时间,[预计处理时间])
    C .在注释中用FIXME标记某代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进。 // XXX
    D .在注释中用FIXME标记某代码是错误的,而且不能工作,需要及时纠正的情况
    提示:FIXME可以看成fix me修理我,有错误才处理,对吧!
    TODO:代做如果代码中有该注释,说明在该注释处有功能代码待编写,待实现的功能在说明中会简略说明。

    17.关于MySQL性能优化的描述,下列哪些说法是正确的:【ABCD】多选
    A .主键查询优先于二级索引查询。
    B .表连接有一定的代价,故表连接数量越少越好。
    C .一般情况下,二级索引扫描优先于全表扫描。
    D .可以使用通过索引避免排序代价。
    注意:这四条都要好好理解,对于索引优化都很有好处的。二级索引可以学习一下!

    18.关于索引的设计和使用,下列哪些说法是正确的:【ABCD】多选
    A .若查询条件中不包含索引的最左列,则无法使用索引。
    B .对于范围查询,只能利用索引的最左列。
    C .对于order by A或group by A语句,在A上建立索引,可以避免排序。//易错
    D .对于多列排序,需要所有所有列排序方向一致,才能利用索引。

    注意:组合索引有一个特性:做做前缀匹配,即(A,B,C)相当于(A),(A,B),(A,B,C)
    索引使用规则:
    若查询条件中不包含索引的最左列,无法使用索引
    对于范围查询,只能利用索引的最左列
    对于order by A语句或group by A语句,在A上建立索引,可以避免排序
    对于多列排序,需要所有所有列排序方向一致,才能利用索引。

    19.关于类命名,下列哪些说法符合《阿里巴巴Java开发手册》:【ABCD】多选
    A .抽象类命名使用Abstract或Base开头。
    B .异常类命名使用Exception结尾。
    C .测试类命名以它要测试的类的名称开始,以Test结尾。
    D .如果使用到了设计模式,建议在类名中体现出具体模式。例如代理模式的类命名:LoginProxy;观察者模式命名:ResourceObserver。

    20.关于数据库模糊检索的描述下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
    A .绝对禁止左模糊。
    B .绝对禁止全模糊。
    C .绝对禁止右模糊。
    D .全模糊或左模糊查询需求,优先使用搜索引擎。

    21.关于代码注释,下列哪些说法符合《阿里巴巴Java开发手册》:ACD多选
    A .所有的抽象方法(包括接口中的方法)必须要用javadoc注释。
    B .所有的方法,包括私有方法,最好都增加注释,有总比没有强。
    C .过多过滥的注释,代码的逻辑一旦修改,修改注释是相当大的负担。
    D .我的命名和代码结构非常好,可以减少注释的内容。

    22.关于checked/unchecked exception,下列哪些说法是正确的:BCD多选
    A .继承java.lang.Error的类属于checked exception。
    B .checked异常继承java.lang.Exception类。
    C .unchecked异常继承java.lang.RuntimeException类。
    D .NullPointerException , IllegalArgumentException属于unchecked exception。

    23.关于Map类型集合的遍历方式,下列哪些说法是正确的:【D】单选
    A .Map类型的实现类都同时实现了Iterator接口。
    B .使用foreach进行遍历。
    C .推荐使用keySet进行遍历。
    D .推荐使用entrySet进行遍历。

    24.关于变量、方法名包的命名下列哪些说法符合《阿里巴巴Java开发手册》:【ABCD】多选
    A .POJO类中的任何布尔类型的变量,都不要加is,因为部分框架解析时有可能会出现序列化错误。
    B .包名统一使用单数形式,如:com.alibaba.mpp.util。
    C .中括号是数组类型的一部分,数组定义如下:String[] args; 不要误写为String args[];
    D .Service/DAO层方法命名可以参考规约,例如:删除的方法推荐使用remove或delete做前缀。

    25.关于常量定义,下列哪些说法符合《阿里巴巴Java开发手册》:【AC】多选
    A .不允许出现任何魔法值(即未经预先定义的常量)直接出现在代码中。
    B .魔法值是指程序中随意定义并赋值的变量值,如果代码编写者明白变量值意义是可以任意使用的,例如在代码中写if(status == 3) return error;符合规范。
    C .如果变量值仅在一个范围内变化推荐用Enum类。
    D .在程序中,一律禁止使用枚举类型。

    26.关于maven依赖、仲裁、规则,下列哪些说法是正确的:【ACD】多选
    A .的依赖会默认传递给子项目。
    B .的依赖绝对不会传递给子项目。
    C .在中指定版本号。
    D .避免在不同的子项目,声明同一个二方库的不同版本号。
    注意:,不会传给子项目。

    27.关于二方库升级,下列哪些说法是正确的:【B】单选
    A .升级二方库只是改个版本号,不需要关联功能的回归。
    B .升级二方库需要比对仲裁结果的差异,谨慎评估。
    C .升级二方库,绝对不会影响到其它二方库的版本号。
    D .只要此二方库负责人保证说不会有任何影响,即可大胆升级,直接发布上线。

    28.关于表字段和索引,下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
    A .表字段注释,如果修改字段含义或对字段表示的状态追加时,需要及时更新。
    B .合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。
    C .针对表的每个字段都增加索引,加快查询速度。
    D .字段的区分度越高,索引的查找速度越快。

    创建表的时候写注释
    create table test1 (
    field_name int comment ‘字段的注释’
    )comment=‘表的注释’;
    修改表的注释
    alter table test1 comment ‘修改后的表的注释’;
    修改字段的注释
    alter table test1 modify column field_name int comment ‘修改后的字段注释’;

    29.关于测试代码的覆盖率,下列哪些说法是正确的?【B】单选
    A .路径覆盖是最强覆盖,符合路径覆盖且测试全部通过,程序绝对没有问题。
    B .语句覆盖度是最弱的覆盖度量方式。
    C .分支覆盖与条件覆盖其实是一回事。
    D .判定条件覆盖与路径覆盖其实是一回事。
    注意:路径覆盖完全,也不能保证百分百不出错!

    30.Hashtable,HashMap, ConcurrentHashMap都是Map的实现类,它们在处理null值的存储上有细微的区别,下列哪些说法是正确的:【ABD】多选
    A .Hashtable的KV都不可以为null。
    B .HashMap的KV都可以为null。
    C .HashMap的K不可以为null,V可以为null。
    D .ConcurrentHashMap的KV都不可以为null。

    31.关于数据库命名规则,下列哪些说法符合《阿里巴巴Java开发手册》:【BCD】多选
    A .数据库库名和表名没有规定,可任意取名,只要方便记忆即可。
    B .库名应该尽量与应用名称保持一致,表的命名最好是业务名称_表名的方式。
    C .无论是库名还是表名都禁用保留字,如desc、match、range等。
    D .表名、字段名必须使用小写字母或数字。

    32.关于异常的处理方式,下列哪些说法是正确的:【BD】多选
    A .为防止obj对象本身空指针异常,书写代码时应该注意加异常捕获处理,例如:try { obj.method() } catch(NullPointerException e){……} 。
    B .方法签名中,抛给调用者的关键字为throws
    C .方法内部,抛出异常实例对象为throws
    D .自定义异常要做到“认知对等”,即:抛出者和接收者要保持对自定义异常的认知统一,接收方需要知道这种异常的含义和对应的处理方案。

    33.数组使用Arrays.asList转化为集合,下列说法哪些正确的:【ACD】多选
    A .数组元素的修改,会影响到转化过来的集合。
    B .数组元素的修改,不会影响到转化过来的集合。
    C.对于转换过来的集合,它的 add/remove/clear 方法会抛出:
    UnsupportedOperationException。
    D .Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。

    34.关于文件编码和格式的设定,下列哪些说法符合《阿里巴巴Java开发手册》:【BC】多选
    A .IDE的text file encoding设置为GBK格式。
    B .IDE的text file encoding设置为UTF-8格式。
    C .IDE中文件的换行符使用unix格式。
    D .IDE中文件的换行符使用windows格式。

    35.关于数据库是与否概念的列的命名方式,下列哪些说法符合《阿里巴巴Java开发手册》:【BD】多选
    A .对于是与否概念的列名,必须使用can_abc 来表示。
    B .对于是与否概念的列名,必须使用is_abc 来表示。
    C .数据类型是varchar(1)( Y表示是,N表示否)。
    D .数据类型是unsigned tiny int.( 1表示是,0表示否)。

    36.以下关于格式规约的说法,正确的有哪些:【AD】多选
    A .代码块缩进4个空格,如果使用tab缩进,请设置成1个tab为4个空格;
    B .代码块缩进5个空格,如果使用tab缩进,请设置成1个tab为5个空格。
    C .为了保持代码美观,《手册》强烈推荐增加若干空格,使某一行的变量与相邻对应位置的变量对齐。
    D .方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义之间推荐插入一个空行;相同业务逻辑和语义之间不需要插入空行。

    37.通过集合A.subList()获取子集合B,下列说法哪些是正确的:【ABD】多选
    A .返回的集合B没有实现Serializable接口,不能被序列化,所以不能应用于RPC场景。
    B .在B集合中添加某个元素,那么A集合也会添加进去此元素。
    C .集合A中元素的修改不会影响到集合B的任何操作。
    D .对A元素个数的修改,会导致集合B的遍历产生ConcurrentModificationException 异常。

    38.关于捕获异常和抛异常,下列哪些说法符合《阿里巴巴Java开发手册》:【BCD】多选
    A .如果需要捕获不同类型异常,为了方便处理,可以使用catch(Exception e){…}。
    B .不要捕获异常后不处理,丢弃异常信息。
    C .捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类。
    D .异常定义时区分unchecked / checked 异常,避免直接使用RuntimeException抛出。

    39.关于线程安全,下列哪些说法是正确的:【ACD】多选
    A .SimpleDateFormat 是线程不安全的类。
    B .SimpleDateFormat 是线程安全的类。
    C .一般不要定义SimpleDateFormat的static变量,如果定义为static,必须保证线程安全。
    D .推荐使用Apache封装好的DateUtils和DateFormatUtils工具类,来处理时间日期转换问题。

    40.为了更方便地进行单元测试,被测试的业务代码应避免以下哪些情况?【ABCD】多选
    A .构造方法中做的事情过多。
    B .存在过多的全局变量和静态方法。
    C .存在过多的外部依赖。
    D .存在过多的条件语句。

    41.关于控制语句,下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
    A .推荐 if-else的方式可以改写成卫语句的形式。
    B .尽量减少try-catch 块内的逻辑,定义对象、变量、获取数据库连接等操作可以移到try-catch块外处理
    C .if ( condition) statements; 单行语句不需要使用大括号。
    D .在一个switch块内,都必须包含一个default语句并且放在最后,即使它什么代码也没有。

    42.关于参数有效性验证,下列哪些说法符合《阿里巴巴Java开发手册》:【ABCD】多选
    A .防止page size过大导致内存溢出。
    B .防止正则输入源串拒绝服务ReDOS。
    C .防止任意重定向。
    D .预防 SQL 注入。
    43.关于变量和常量定义,下列哪些符合《阿里巴巴Java开发手册》:【AD】多选
    A .Long a=2L;//大写的L
    B .Long a=2l; //小写的l
    C .常量只定义一次,不再赋值,所以不需要命名规范。
    D .不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。

    44.在定义DO/DTO/VO/等POJO类时,对属性默认值的设定,下列哪些说法符合《阿里巴巴Java开发手册》:【D】单选
    A .String类型的默认值设定为空字符串。
    B .Date类型的默认值设定为new Date()。
    C .集合类型的默认值设定为Collections.EMPTY_LIST。
    D .不要设定任何属性默认值。

    45.关于二方库依赖的解析命令,下列哪些说法是正确的:【ABC】多选
    A .mvn dependency:resolve 打印出已仲裁依赖的列表。
    B .mvn dependency:tree 打印工程整个的依赖树结构。
    C .mvn dependency:tree -Dverbose -Dincludes=commons-lang 打印出与commons-lang相关的详细依赖。
    D .mvn clean install 打印工程整个的依赖树结构,并部署到本地仓库中。

    46.KV结构的集合,在处理null值的存储上有细微的区别,下列哪些说法是正确的:【A】单选
    A .TreeMap的key不可以为null
    B .TreeMap的key可以为null
    C .ConcurrentHashMap的key可以为null
    D .ConcurrentHashMap的value可以为null

    47.关于数据库中表相关的命名,下列哪些说法符合《阿里巴巴Java开发手册》:【ABD】多选
    A .表名、字段名禁止出现数字开头,禁止两个下划线中间只出现数字。
    B .表名不使用复数名词。
    C .表必备三字段命名:id, gmt_create, gmt_modify。
    D .表必备三字段命名:id, gmt_create, gmt_modified。

    48.关于【多线程并行处理定时任务】的情况,下列哪些说法符合《阿里巴巴Java开发手册》:【BCD】
    A .推荐使用Timer方式处理。
    B .推荐使用ScheduledExecutorService方式处理。
    C .Timer运行多个TimeTask时,只要其中之一没有捕获抛出的异常,其它任务便会自动终止运行。
    D .ScheduledExecutorService并发运行多个定时任务时,其中某线程抛出异常,不会影响到其它线程的继续运行。//好好理解

    49.关于Java代码的设计和开发注意事项下列哪些说法符合《集合开发规约》:【ABCD】多选
    A .禁止将URL、文件名、系统参数、数据库连接地址、业务规则的可变参数,硬编码在工程中。
    B .long或者Long初始赋值时,必须是大写的L,不能小写。
    C .当一个类有多个构造方法,或是多个同名方法,这些方法应该按顺序放置在一起,便于阅读。
    D .相同参数类型,同等业务含义,才可以使用Java的可变参数,参数的类型尽量避免使用Object。// 避免强制转换引起RuntimeException的ClassCastException

    50.关于数据库索引的命名,下列哪些说法符合《阿里巴巴Java开发手册》:【ACD】多选
    A .主键索引(primary key),字段类型为unsigned bigint、单表时推荐自增、步长为1。
    B .主键索引(primary key),字段类型为unsigned bigint、单表时推荐自增、步长为2。
    C .唯一索引(unique key),命名规则为uk_字段名(如果多个字段继续下划线)。
    D .普通索引(normal index),标记成idx_字段名(如果多个继续下划线)。

    追加最新题型(2019-11)
    1、利用索引进行排序,下列哪些说法是正确的:多选 【AB】
    A.查询语句 WHERE a = 10 ORDER BYb,可以利用素引(a,b)来进行索引排序。
    B.查询语句WHERE a > 10 ORDER BY b,不可以利用素引(a,b)进行索引排序。
    C.查询语句WHERE a IN (10, 11) ODER BY b.可以利用索引(a,b)来进行索引排序。
    D.查询语句WHER a>10 AND b=20 ORDER BY a,可以利用索引(b,a)来进行素引排序。

    解析:–where a in(…) order by b,c (对于排序来说,多个等于条件,也是范围查询)。又因为:比如索引中有范围查找,那么索引有序性无法利用。

    2、sont表示元素在存入集合时进行了排序,数据遍历的结果是按某个排序规则输出的;而order表示每次遍历的序列都是一样的,元素前后关系每次遍历都是确定的,那么下列哪些集合既是sort,又是order的:单选 D
    A、HashSet
    B、LinkedList
    C、HashMap
    D、TreeMap

    3、关于类和方法,下列哪些符合《阿里巴巴Java开发手册》: ABC
    A.任何类、方法、严控访问范围。因为过宽泛的访问范围,不利于模块解耦。
    B.对外暴露的接口签名,原则上不允许修改,宁可新增,避免对依赖端产生影响。
    C.如果新增一个功能完全相同的新接口,过时接口必须加@deprecated注释。
    D. 所有过时的类与方法不得使用。
    根据:文档的:对外暴露的接口签名, 原则上不允许修改方法签名,避免对接口调用方产生影响。接口过时必须加@Deprecated 注解,并清晰地说明采用的新接口或者新服务是什么。

    4、关于异常处理的注意事项,下列哪些说法符合《阿里巴巴Java开发手册》: AB
    A、事务场景中,抛出异常核catch后,如果需要回滚,一定要手动回滚事务。
    B、在finally对文件流进行关闭。
    C、推荐在finally使用return语句。
    D、在try块内,可以不用对可能为null的对象做非空判断,因为如果抛掷NPE,会被catch块捕获井处理
    文档:【强制】不要捕获 Java 类库中定义的继承自 RuntimeException 的运行时异常类,如:
    IndexOutOfBoundsException / NullPointerException,这类异常由程序员预检查来规避,保证程序健壮性。

    5、关于日志的条件输出和占位符的方式,下列哪些说法是正确的: AD
    A. 对trace/debug/info级别的日志输出,必须使用条件输出形式或者使用占位符的方式
    B.条件输出方式可以避免log参数中字符串拼接的开销。
    C.占位符输出格式可以和条件输出一样避免参数中字符串拼接开销。
    D.因为设置了日志输出级别,所以无需使用条件输出方式。
    文档:【强制】对 trace/debug/info 级别的日志输出,必须使用条件输出形式或者使用占位符的方式。
    Trace >debug >info > error
    说明:logger.debug("Processing trade with id: " + id + " symbol: " + symbol); 如果日志级别是 warn,上述日志不会打印,但是会执行字符串拼接操作,如果 symbol 是对象,会执行 toString()方法,浪费了系统资源,执行了上述操作,最终日志却没有打印。
    正例:(条件)
    if (logger.isDebugEnabled()) {
    logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
    }
    正例:(占位符)// ★使用{}占位符。避免字符串连接操作,减少String对象(不可变)带来的内存开销
    logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
    【强制】异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么往上抛。
    正例:logger.error(各类参数或者对象 toString + “_” + e.getMessage(), e);

    6、关于代码书写格式,下列哪些说法符合《阿里巴巴Java开发手册》:BCD
    A.换行时相对上一行缩进2个空格。
    B.运算符与下文一起换行,方法调用的点符号与下文一起换行。
    C.在多个参数超长,逗号后进行换行。
    D在括号前不要换行。

    文档:【强制】单行字符数限制不超过 120 个,超出需要换行,换行时,遵循如下原则:
    1) 换行时相对上一行缩进 4 个空格。
    2) 运算符与下文一起换行。
    3) 方法调用的点符号与下文一起换行。
    4) 在多个参数超长,逗号后进行换行。
    5) 在括号前不要换行,见反例。

    7、关于枚举类型,以下描述符合规范的是:BC
    A.只要是常量,就使用校举值.
    B.如果变量值在一个范围内变化,而且还带有名称之外的延伸属性,必须使用Enum类,如: publc enum MonthEnm( JANUARY(1),FEBRARY(2),MCAC (I) 3, APA14DDEME 12)
    C.枚举名命名建议带上Enum,枚举成员名称需要全大写,单词用"_"分割。
    D.定义星期一至星期日这种范围固定的信息,不推荐使用校举类型。

    文档:【推荐】如果变量值仅在一个范围内变化用 Enum 类。如果还带有名称之外的延伸属性,必须
    使用 Enum 类,下面正例中的数字就是延伸信息,表示星期几。
    正例:public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5),
    SATURDAY(6), SUNDAY(7);}

    8、关于参数校验,下列哪些说法符合《阿里巴巴Java开发手册》:ABCD
    A.批量处理接口必须做好接口入参保护
    B.需要极高稳定性和可用性的方法需要对参数进行校验
    C.底层的方法,在上层调用中参数多半已经被校验过,可以考虑不校验。
    D.对外提供的开放接口,都要进行参数检验。
    文档:【推荐】接口入参保护,这种场景常见的是用于做批量操作的接口。
    【参考】方法中需要进行参数校验的场景:
    1) 调用频次低的方法。
    2) 执行时间开销很大的方法,参数校验时间几乎可以忽略不计,但如果因为参数错误导致中间执行回退,或者错误,那得不偿失。
    3) 需要极高稳定性和可用性的方法。
    4) 对外提供的开放接口,不管是 RPC/API/HTTP 接口。
    【参考】方法中不需要参数校验的场景:
    1) 极有可能被循环调用的方法,不建议对参数进行校验。但在方法说明里必须注明外部参数检查。
    2) 底层的方法调用频度都比较高,一般不校验。毕竟是像纯净水过滤的最后一道,参数错误不太可能到底层才会暴露问题。一般 DAO 层与 Service 层都在同一个应用中,部署在同一台服务器中,所以 DAO 的参数校验,可以省略。
    3) 被声明成 private 只会被自己代码所调用的方法,如果能够确定调用方法的代码传入参数已经做过检查或者肯定不会有问题,此时可以不校验参数。

    9、根据《阿里巴巴Java开发手册》 ,数据库的表设计允许适当冗余,以提升SQL查询的性能,避免表的关联查询,下列哪些字段不允许几余:【CD】
    A、文本类型的字段。
    B、基本固定不变的类目名称。
    C、 varchar(2500)的字段
    D、需要频繁修改的字段
    .【推荐】字段允许适当冗余,以提高性能,但是必须考虑数据同步的情况。冗余字段应遵循:
    1)不是频繁修改的字段。
    2)不是 varchar 超长字段,更不能是 text 字段。

    短连接:短连接操作步骤是:
    连接-》数据传输-》关闭连接;
    长连接:长时间保持客户端与服务端的连接状态。
    连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;
    要求:长连接在没有数据通信时,定时发送数据包,以维持连接状态;短连接在没有数据传输时直接关闭就行了

    展开全文
  • 如何处理单元测试产生的数据,下列哪些说法是正确的?ABC A .测试数据入库时加特殊前缀标识。 B .测试数据使用独立的测试库。 C .自动回滚单元测试产生的脏数据。 D .无须区别,统一在业务代码中进行判断和...
  • 使用C#的读文件操作代码如下: using (FileStream input = File.OpenRead("binarydata.dat")) ...字符串有长度前缀,一次 7 位地被编码为整数。 说字符串有长度前缀,没没见到这个前缀啊?请大神指导
  • LeetCode131分割回文串

    2020-04-27 15:22:27
    产生前缀字符串的时候,判断前缀字符串是否是回文: * 如果 前缀字符串是回文,则可以产生分支和节点 * 如果前缀字符串不是回文,则不产生分支和节点,这一步是剪枝操作 在叶子节点是空字符串的时候结算,此时根节点...
  • 131. 分割回文串 难度中等 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。...2、产生前缀字符串的时候,判断前缀字符串是否是回文。 如果前缀字符串是
  • 每章小结的最后一项“测验”包含了一系列关于本章内容的判断题和选择题。在附录E中可以找到这些问题、可能的答案、解决方案以及相关解释。  第Ⅰ部分:PL/SQL基础  ·第1章介绍了Oracle开发架构以及连接机制。 ...
  • 每章小结的最后一项“测验”包含了一系列关于本章内容的判断题和选择题。在附录E中可以找到这些问题、可能的答案、解决方案以及相关解释。  第Ⅰ部分:PL/SQL基础  ·第1章介绍了Oracle开发架构以及连接机制。 ...
  • 3.5.3 给40亿个不重复的unsigned int的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那40亿个数当中? 3.5.4 在一个文件中有10G个整数,乱序排列,要求找出中位数。内存限制为2G。 3.5.5 时分秒针...
  • 打开一个文件,判断是否存在,判断编码类型,写入方式是追加还是覆盖,接着创建流,写入流,关闭流等等没有十几,二十行代码根本搞不定,还不一定见得是对的. 5. 模板的模板 首先,要强调一点,只要可以用文本编辑器编辑的...
  • Code Compl 代码大全

    2011-05-26 12:09:22
     1.3 如何阅读本书  关键点  第2章 用隐喻来更充分地理解软件开发  2.1 隐喻的重要性  2.2 如何使用软件隐喻  2.3 常见的软件隐喻  软件中的书法:写作代码  软件的耕作法:培植系统  软件的牡蛎养殖观点:...
  • 0785. 判断二分图 0790. 多米诺和托米诺平铺 0799. 香槟塔 0801. 使序列递增的最小交换次数 0816. 模糊坐标 0820. 单词的压缩编码 0873. 最长的斐波那契子序列的长度 0875. 爱吃香蕉的珂珂 0877. ...
  • 最长公共前缀 回文数 动态规划 单词拆分 爬楼梯 打劫房屋 编辑距离 乘积最大子序列 矩阵 螺旋矩阵 判断数独是否合法 旋转图像 二进制 / 位运算 落单的数 格雷编码 其他 反转整数 LRU缓存策略 ...
  • 实例034 加加减减——前缀方式增1和减1运算符 63 实例035 乾坤大挪移——移位运算符的简单应用 64 实例036 制作一个简单的加法计算器(利用算术运算符) 66 实例037 判断合法的用户名称和密码 67 实例038 加密用户密码...
  • 实例034 加加减减——前缀方式增1和减1运算符 63 实例035 乾坤大挪移——移位运算符的简单应用 64 实例036 制作一个简单的加法计算器(利用算术运算符) 66 实例037 判断合法的用户名称和密码 67 实例038 加密用户密码...
  • 实例034 加加减减——前缀方式增1和减1运算符 63 实例035 乾坤大挪移——移位运算符的简单应用 64 实例036 制作一个简单的加法计算器(利用算术运算符) 66 实例037 判断合法的用户名称和密码 67 实例038 加密用户密码...
  • **注意,实例化路由时,判断当运行在qiankun环境时,路由要添加前缀前缀与主应用注册子应用函数genActiveRule("/aaa")内的参数一致** export async function mount(props) { router = new VueRouter({ base: ...
  • [如何使用] 下载程序,解压上传到你的服务器路径下,data目录设置777权限。访问体验超便捷的服务吧! (data目录没有写权限会导致配置修改不能保存、不能新建用户等) [关于上传问题] 程序没有做任何限制,如果需要...
  • php高级开发教程说明

    2008-11-27 11:39:22
    判断。 前面提到的每一种语言代表一种解决问题的特定方法,这些问题多属于具有特殊要求的某 一特殊种类。因为这些语言集中在一个有限的应用领域内,他们的成功性也限制在这些领域。 像C和P a s c a l这样的语言变得...
  • DX1.5 手机正式版

    2011-02-25 17:39:55
    /*将cookie中加上了前缀的数据 去掉前缀存在$this->var['cookie']数组中*/ $prelength = strlen($this->config['cookie']['cookiepre']); foreach($_COOKIE as $key => $val) { if(substr($key, 0, $prelength) == $...
  • 怎么判断一个数组是否已经排序 普通map如何不用锁解决协程安全问题 array和slice的区别 golang面试题:json包变量不加tag会怎么样? 零切片、空切片、nil切片是什么 slice深拷贝和浅拷贝 map触发扩容的时机,满足...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

如何判断前缀编码