精华内容
下载资源
问答
  • 题目: 从这些数据中能否找出某些规律性的东西:如食品产地与食品质量的关系;食品销售地点(即抽检地点)与食品质量的关系;季节因素等等; ... 一看到这个题目瞬间就... 虽然感觉不会再爱了,但还要做题的不...

    题目:

    1. 从这些数据中能否找出某些规律性的东西:如食品产地与食品质量的关系;食品销售地点(即抽检地点)与食品质量的关系;季节因素等等;

      一看到这个题目瞬间就感觉到eggache了,这怎么找啊,跟食品安全有关的东西,这不一大堆嘛,难道这道题要海底捞针?有地方捞针到也行啊,但是一看那一百九十多个几乎可以称之为没有规律的数据,顿时感觉不会再爱了。。

      虽然感觉不会再爱了,但还要做题的不是。其实冷静下来分析一下,看破一个点,这个题就迎刃而解了。这一点就是:从题目所给的表格中,我们能获得什么数据?

    然后我们根据获取的数据进行规律总结就可以了,这样这道题就可以变成了一道数据略复杂的统计题。下面是解题过程:

      由分析数据可得,我们从数据中获得以下关系:

      食品-季度;食品-种类;食品-环节;食品-抽检单位;食品-生产单位;

      得到这五个对应的关系(个人分析角度不同,或许不止这五个关系),得到关系就好说了,挨个统计作图分析就可以了。至此,题意分析结束。

      知道做什么以后就轮到怎么去做了。其中食品-季度;食品-种类;食品-环节;还是比较好说的,数据量不大,直接手动分析就可以了。但是食品-抽检单位;食品-生产单位;就让人蛋疼了,那可是190多个数据文件啊(xls、word and html),手动分析,估计等数模结束了你都未必能分出来。那怎么办呢?好吧,我们是程序猿~~~

    首先我们对于这个两个关系进行分析,其中抽检单位都是在深圳市内,而有一些生产单位是不在深圳室内的。很明显东三省的数模是给深圳市做城市建设的,所以为了减少工作量,对于这两个关系我们选择食品-抽检单位进行统计。

    方法为matlab读取xls文件(其他文件已手动转化为xls文件),并根据关键字检索;

    (1)首先是获取合格和不合格食品的受检单位,代码如下:

     1 clear all;
     2 
     3 Files = dir(fullfile('unqualified','*.xls'));
     4 
     5 str1 = '受检单位名称';
     6 str2 = '被检单位';
     7 str3 = '受检单位';
     8 
     9 str4 = '受检单位详细地址';
    10 str5 = '受检单位地址';
    11 count = 1;
    12 name = {str1,str4};
    13 sign = 0;
    14 sign_address = 0;
    15 
    16 LengthFiles = length(Files);
    17 for l = 1:LengthFiles;
    18     %%读取xls文件内容
    19     [N, T, rawdata] = xlsread(strcat('unqualified/',Files(l).name));
    20     %%获得文件内容大小,为二维矩阵
    21     data_size = size(rawdata);
    22     %%初始化公司名称元胞数组
    23     name_size = size(name);
    24     % 循环遍历xls文件中的数据,相当与二维数组
    25     for row = 1 : data_size(1)
    26         for col = 1 : data_size(2)
    27             %%查找适合的那一列
    28             if( isequal((rawdata{row, col}), (rawdata{row, col})) && ((strcmp(rawdata{row, col}, str1) == 1) || ...
    29                 (strcmp(rawdata{row, col}, str2) == 1) || (strcmp(rawdata{row, col}, str3) == 1) ))
    30                 %%判断是否有受检单位详细地址这一列,如果有则将 sign_address 设为 1
    31                 if(strcmp(rawdata{row, col+1}, str4) == 1 || strcmp(rawdata{row, col+1}, str5) == 1)
    32                     sign_address = 1;
    33                 end
    34                 %得到受检单位名称一列后,遍历获取那一列的数据
    35                 for i = (row + 1) : data_size(1)
    36                     % 查询名称是否已存在
    37                     for j = 2 : name_size(1)
    38                         if(strcmp(rawdata{i, col}, name{j}) == 1)
    39                             %如果存在,则将标记位标记为 1
    40                             sign = 1;
    41                             break;
    42                         end
    43                     end   
    44                     %%如果公司名不存在,则将公司名加入元胞数组中
    45                     if(sign == 0 && isequal((rawdata{i, col}), (rawdata{i, col})))
    46                         count = count + 1;
    47                         name{count,1} = rawdata{i, col};
    48                         name_size = size(name);
    49                         if(sign_address == 1 && isempty(name{count,2}) )
    50                             name{count,2} = rawdata{i, col+1};
    51                         end
    52                     end
    53                     %%如果公司存在但所遍历的这一项有受监单位详细地址这一项,则将受检单位详细地址这一项加入元胞数组中
    54                     if(sign == 1 && isequal((rawdata{i, col}), (rawdata{i, col})) && sign_address == 1 && isempty(name{count,2})) 
    55                         name{count,2} = rawdata{i, col+1};
    56                     end
    57                     
    58                     sign = 0;
    59                     
    60                     %end
    61                 end
    62                 break;
    63             end
    64         end
    65     end
    66     sign_address = 0;
    67 end

    运行后会得到所有公司的一个mat文件,得到公司名后,也不能全手动分地区啊(按地区进行分类,而且不算重复,一共得到了7528了公司)。

    然后我们还是程序猿~~读取上面获得的mat文件,进行关键字检索,怎么做呢?直接上代码~

      1 clear all;
      2 
      3 
      4 %load('D:/数模/A题/data/qualified/matlab.mat');
      5 load('D:/数模/A题/data/unqualified/unqualified.mat');
      6 
      7 strFuTianQu = {'福田区 ','园岭','南园','华富','莲花','福田','沙头','香蜜湖','福保','华强北', '梅林',...
      8     '福田','园岭街道','南园街道','华富街道','莲花街道','福田街道','沙头街道','香蜜湖街道','福保街道','华强北街道', '梅林街道'};
      9 strFuTianQuSize = size(strFuTianQu);
     10 
     11 strLuoHuQu = {'罗湖区','黄贝','东门','南湖','桂园','笋岗','清水河','翠竹','东湖','东晓','莲塘'...
     12     '罗湖','黄贝街道','东门街道','南湖街道','桂园街道','笋岗街道','清水河街道','翠竹街道','东湖街道','东晓街道','莲塘街道'};
     13 strLuoHuQuSize = size(strLuoHuQu);
     14 
     15 strNanShanQu = {'南山区','南头','南山','招商','蛇口','粤海','沙河','西丽','桃源', ...
     16     '南山','南头街道','南山街道','招商街道','蛇口街道','粤海街道','沙河街道','西丽街道','桃源街道'};
     17 strNanShanQuSize = size(strNanShanQu);
     18 
     19 strYanTianQu = {'盐田区','沙头角','梅沙','盐田','海山', ...
     20     '盐田','沙头角街道','梅沙街道','盐田街道','海山街道'};
     21 strYanTianQuSize = size(strYanTianQu);
     22 
     23 strBaoAnQu = {'宝安区','新安','西乡','福永','沙井','松岗','石岩','中心区' , ...
     24     '宝安','新安街道','西乡街道','福永街道','沙井街道','松岗街道','石岩街道','中心区街道'};
     25 strBaoAnQuSize = size(strBaoAnQu);
     26 
     27 strGuangMingQu = {'光明区','公明','光明', '公明街道', '光明街道'};
     28 strGuangMingQuSize = size(strGuangMingQu);
     29 
     30 strLongGuangQu = {'龙岗区','布吉','坂田','南湾','平湖','横岗','龙岗','龙城','坪地', ... 
     31     '龙岗','布吉街道','坂田街道','南湾街道','平湖街道','横岗街道','龙岗街道','龙城街道','坪地街道'};
     32 strLongGuangQuSize = size(strLongGuangQu);
     33 
     34 strPingShanQu = {'坪山区','坪山','坑梓', ...
     35     '坪山','坪山街道','坑梓街道'};
     36 strPingShanQuSize = size(strPingShanQu);
     37 
     38 FuShanQu = {'受检单位名称','受检单位详细地址','编号'};
     39 LuoHuQu = {'受检单位名称','受检单位详细地址','编号'};
     40 NanShanQu = {'受检单位名称','受检单位详细地址','编号'};
     41 YanTianQu = {'受检单位名称','受检单位详细地址','编号'};
     42 BaoAnQu = {'受检单位名称','受检单位详细地址','编号'};
     43 GuangMingQu = {'受检单位名称','受检单位详细地址','编号'};
     44 LongGuangQu = {'受检单位名称','受检单位详细地址','编号'};
     45 PingShanQu = {'受检单位名称','受检单位详细地址','编号'};
     46 Others = {'受检单位名称'};
     47 
     48 countFuShanQu = 1;
     49 countLuoHuQu = 1;
     50 countNanShanQu = 1;
     51 countYanTianQu = 1;
     52 countBaoAnQu = 1;
     53 countGuangMingQu = 1;
     54 countLongGuangQu = 1;
     55 countPingShanQu = 1;
     56 countOthers = 1;
     57 
     58 %%互斥信号量
     59 mutex = 1;
     60 
     61 %%mat文件内的元胞数组名为 name
     62 data_size = size(name);
     63 col = 1;
     64 for row = 2 : data_size(1)
     65     %%福山区
     66     if(mutex == 1)
     67         for i1 = 1 : strFuTianQuSize(2)
     68 
     69             %%用strfind函数判断指定字符串是否存在于改字符串中,并将结果分别存储在out1和out2中
     70             out1 = strfind(name{row, col}, strFuTianQu{1, i1});  
     71             out2 = strfind(name{row, col + 1}, strFuTianQu{1, i1});
     72 
     73             %%如果out1和out2中有一个不为空,则分类
     74             if(~isempty(out1) || ~isempty(out2))
     75                 FuShanQu{countFuShanQu, 1} = name{row, col};
     76                 FuShanQu{countFuShanQu, 2} = name{row, col + 1};
     77                 FuShanQu{countFuShanQu, 3} = countFuShanQu;
     78                 countFuShanQu = countFuShanQu + 1;
     79                 mutex = 0;
     80                 break;
     81             end
     82         end
     83     end
     84     %%罗湖区
     85     if(mutex == 1)
     86         for i1 = 1 : strLuoHuQuSize(2)
     87 
     88             out1 = strfind(name{row, col}, strLuoHuQu{1, i1});  
     89             out2 = strfind(name{row, col + 1}, strLuoHuQu{1, i1});
     90             %%如果out1和out2中有一个不为空,则分类
     91             if(~isempty(out1) || ~isempty(out2))
     92                 LuoHuQu{countLuoHuQu, 1} = name{row, col};
     93                 LuoHuQu{countLuoHuQu, 2} = name{row, col + 1};
     94                 LuoHuQu{countLuoHuQu, 3} = countLuoHuQu;
     95                 countLuoHuQu = countLuoHuQu + 1;
     96                 mutex = 0;
     97                 break;
     98             end
     99         end
    100     end
    101 
    102     if(mutex == 1)
    103         for i1 = 1 : strNanShanQuSize(2)
    104 
    105             out1 = strfind(name{row, col}, strNanShanQu{1, i1});  
    106             out2 = strfind(name{row, col + 1}, strNanShanQu{1, i1});
    107             %%如果out1和out2中有一个不为空,则分类
    108             if(~isempty(out1) || ~isempty(out2))
    109                 NanShanQu{countNanShanQu, 1} = name{row, col};
    110                 NanShanQu{countNanShanQu, 2} = name{row, col + 1};
    111                 NanShanQu{countNanShanQu, 3} = countNanShanQu;
    112                 countNanShanQu = countNanShanQu + 1;
    113                 mutex = 0;
    114                 break;
    115             end
    116         end
    117     end
    118 
    119     if(mutex == 1)
    120         for i1 = 1 : strYanTianQuSize(2)
    121 
    122             out1 = strfind(name{row, col}, strYanTianQu{1, i1});  
    123             out2 = strfind(name{row, col + 1}, strYanTianQu{1, i1});
    124             %%如果out1和out2中有一个不为空,则分类
    125             if(~isempty(out1) || ~isempty(out2))
    126                 YanTianQu{countYanTianQu, 1} = name{row, col};
    127                 YanTianQu{countYanTianQu, 2} = name{row, col + 1};
    128                 YanTianQu{countYanTianQu, 3} = countYanTianQu;
    129                 countYanTianQu = countYanTianQu + 1;
    130                 mutex = 0;
    131                 break;
    132             end
    133         end
    134     end
    135 
    136     if(mutex == 1)
    137         for i1 = 1 : strBaoAnQuSize(2)
    138             
    139             out1 = strfind(name{row, col}, strBaoAnQu{1, i1});  
    140             out2 = strfind(name{row, col + 1}, strBaoAnQu{1, i1});
    141             %%如果out1和out2中有一个不为空,则分类
    142             if(~isempty(out1) || ~isempty(out2))
    143                 BaoAnQu{countBaoAnQu, 1} = name{row, col};
    144                 BaoAnQu{countBaoAnQu, 2} = name{row, col + 1};
    145                 BaoAnQu{countBaoAnQu, 3} = countBaoAnQu;
    146                 countBaoAnQu = countBaoAnQu + 1;
    147                 mutex = 0;
    148                 break;
    149             end
    150         end
    151     end
    152 
    153     if(mutex == 1)
    154         for i1 = 1 : strGuangMingQuSize(2)
    155             
    156             out1 = strfind(name{row, col}, strGuangMingQu{1, i1});  
    157             out2 = strfind(name{row, col + 1}, strGuangMingQu{1, i1});
    158             %%如果out1和out2中有一个不为空,则分类
    159             if(~isempty(out1) || ~isempty(out2))
    160                 GuangMingQu{countGuangMingQu, 1} = name{row, col};
    161                 GuangMingQu{countGuangMingQu, 2} = name{row, col + 1};
    162                 GuangMingQu{countGuangMingQu, 3} = countGuangMingQu;
    163                 countGuangMingQu = countGuangMingQu + 1;
    164                 mutex = 0;
    165                 break;
    166             end
    167         end
    168     end
    169 
    170     if(mutex == 1)
    171         for i1 = 1 : strLongGuangQuSize(2)
    172             
    173             out1 = strfind(name{row, col}, strLongGuangQu{1, i1});  
    174             out2 = strfind(name{row, col + 1}, strLongGuangQu{1, i1});
    175             %%如果out1和out2中有一个不为空,则分类
    176             if(~isempty(out1) || ~isempty(out2))
    177                 LongGuangQu{countLongGuangQu, 1} = name{row, col};
    178                 LongGuangQu{countLongGuangQu, 2} = name{row, col + 1};
    179                 LongGuangQu{countLongGuangQu, 3} = countLongGuangQu;
    180                 countLongGuangQu = countLongGuangQu + 1;
    181                 mutex = 0;
    182                 break;
    183             end
    184         end
    185     end
    186 
    187     if(mutex == 1)
    188         for i1 = 1 : strPingShanQuSize(2)
    189             
    190             out1 = strfind(name{row, col}, strPingShanQu{1, i1});  
    191             out2 = strfind(name{row, col + 1}, strPingShanQu{1, i1});
    192             %%如果out1和out2中有一个不为空,则分类
    193             if(~isempty(out1) || ~isempty(out2))
    194                 PingShanQu{countPingShanQu, 1} = name{row, col};
    195                 PingShanQu{countPingShanQu, 2} = name{row, col + 1};
    196                 PingShanQu{countPingShanQu, 3} = countPingShanQu;
    197                 countPingShanQu = countPingShanQu + 1;
    198                 mutex = 0;
    199                 break;
    200             end
    201         end
    202     end
    203 
    204     if(mutex == 1)
    205         
    206         Others{countOthers, 1} = name{row, col};
    207         Others{countOthers, 2} = name{row, col + 1};
    208         Others{countOthers, 3} = countOthers;
    209         countOthers = countOthers + 1;
    210         mutex = 0;
    211     end
    212     mutex = 1;
    213 end

    原理为根据深圳市各个区名和区内街道名对公司名进行匹配,原理很简单的,就看你能不能想到了~~,至此,第二题结束

    注:由于做数模这个东西确实恶心了,所以这篇博客在思路和代码方面我只是说了个大概,不想费那么多时间去总结那么细了,所以如果您对我的博客感兴趣并有疑问的话,欢迎评论或者发邮件给我(lityangweiguang@gmail.com)

    转载于:https://www.cnblogs.com/LitLeo/archive/2013/05/21/3089927.html

    展开全文
  • 某公司笔试

    千次阅读 2006-11-06 20:40:00
    某公司笔试1. 两个表,都1000W的数据,left join会不会挂? 如果数据量再大,怎么优化? 2. 一个数据文件,每条记录内容包括:时间、IP地址、关键词。记录是无序排列的,条数超过2000万条。 要求是按检索词排序,并保持...

    某公司笔试题

    1. 两个表,都1000W的数据,left join会不会挂? 如果数据量再大,怎么优化?

    2. 一个数据文件,每条记录内容包括:时间、IP地址、关键词。记录是无序排列的,条数超过2000万条。
    要求是按检索词排序,并保持时间,IP地址和关键词保持原来的关联...
    设计一个程序实现这个功能,并分析时间复杂度和空间复杂度...
    硬盘足够大..内存1G  

    (题目不是俺做滴,是一个PHPChina上的PHPer做滴)

    展开全文
  •  如:我写入关键字到数据库,多的时候用|隔开了,我提取再相关文章搜索的时候,我怎么提取用|隔开的文字啊,这样我就好用关键字搜索啊 回复: [removed] dim keywords,operator,operend,strsql keywords...
  • :我写入关键字到数据库,多的时候用|隔开了,我提取再相关文章搜索的时候,我怎么提取用|隔开的文字啊,这样我就好用关键字搜索啊 回复: 代码如下: [removed] dim keywords,operator,operend,strsql ...
  • 今天每日一之前,先一下下面的熟悉/回顾以下前缀和的相关知识。 304二维区域和检索 思路 其余的详见代码,这里介绍以下怎么计算前缀和、怎么计算子区域的和。 因为前缀和的计算就是计算索引(0,0)到当前...

    做今天每日一题之前,先做一下下面的题熟悉/回顾以下前缀和的相关知识。

    304二维区域和检索

    在这里插入图片描述

    思路

    其余的详见代码,这里介绍以下怎么计算前缀和、怎么计算子区域的和。
    在这里插入图片描述
    因为前缀和的计算就是计算索引(0,0)到当前索引位置(i,j)所框出的区域的元素和,所以前缀和的计算可以通过m[i][j] = m[i-1][j]+m[i][j-1]-m[i-1][j-1] + matrix[i-1][j-1];如要计算绿色框内的元素和,可以通过黄色+灰色区域和绿色+灰色区域,还有红色区域的值得到,因为黄色+灰色区域和绿色+灰色区域都是已经计算好的前缀和,所以可以直接拿来使用,而红色区域是矩阵matrix内的元素,也可以直接拿来使用,因为灰色区域被加了两次,因此要减去一次。

    在这里插入图片描述
    如示例中的要求,如果要求绿色区域的和,因为已经有了前缀和,所以可以借助黄色线框起来的区域(已经处理好的前缀和)进行计算(和计算前缀和比较相似,需要注意的是要把坐标值都加1,因为前缀和数组的范围都是加1的),因为黄色区域被加了两次,所以要减去一次,即m[row2][col2] + m[row1-1][col1-1] - m[row1-1][col2]-m[row2][col1-1];

    代码

    class NumMatrix {
        int [][] m ;
        public NumMatrix(int[][] matrix) {
            int h = matrix.length;
            int w;
            if(h==0)//因为题目中没有说数组的长度范围,所以可能是空数组,要防止这一点
                w=0;
            else
                w=matrix[0].length;
            m = new int[h+1][w+1];//加一的原因是为了避免操作时数组越界,加一的后面就不用考虑这一点了,开始用的时候有些别扭,习惯就好,且很方便
    
            //预处理得到所有的和,调用时只需要查询再加上少量的计算即可,减少了计算量
            for(int i=1;i<=h;i++)
            {
                for(int j=1;j<=w;j++)
                {
                    m[i][j] = m[i-1][j]+m[i][j-1]-m[i-1][j-1] + matrix[i-1][j-1];//获取前缀和,具体过程见上图
                }
            }
        }
        
        public int sumRegion(int row1, int col1, int row2, int col2) {
            //虽然题目说了,但是还是自己处理以下比较好,养成好习惯
            if(row1>row2)
            {
                int temp = row1;
                row1 = row2;
                row2 = temp;
            }
            if(col1>col2)
            {
                int temp = col1;
                col1 = col2;
                col2 = temp;
            }
            //因为数组m的长度都加1了,所以对于的子区域的坐标也要加1
            col1++;        col2++;        row1++;        row2++;
            return m[row2][col2] + m[row1-1][col1-1] - m[row1-1][col2]-m[row2][col1-1]; 
        }
    }
    
    /**
     * Your NumMatrix object will be instantiated and called as such:
     * NumMatrix obj = new NumMatrix(matrix);
     * int param_1 = obj.sumRegion(row1,col1,row2,col2);
     */
    

    1074元素和为目标值的子矩阵数量

    在这里插入图片描述
    在这里插入图片描述

    思路

    在这里插入图片描述
    借助上面的代码和思路,使用暴力方法,实现预处理得到矩阵的前缀和(可以采用上面的方法获取),然后再判断满足条件的子矩阵的数量。
    还有更简洁的方法,有时间再来更新。昨天的论文还没看完,哭唧唧

    代码

    class Solution {
        int[][] m;
        public int numSubmatrixSumTarget(int[][] matrix, int target) {
            int h = matrix.length;
            int w = matrix[0].length;
    
            m = new int[h+1][w+1];
    
            //计算前缀和
            for(int i=1;i<=h;i++)
            {
                for(int j=1;j<=w;j++)
                {
                    m[i][j] = m[i-1][j]+m[i][j-1]-m[i-1][j-1]+matrix[i-1][j-1];
                }
            }
            int count = 0;
            //寻找满足条件的子矩阵,遍历矩阵matrix中所有的子矩阵
            for(int i=0;i<h;i++)
                for(int j=0;j<w;j++)
                    for(int p=0;p<=i;p++)
                        for(int q=0;q<=j;q++)
                        {
                            if(check(p,q,i,j,target))
                                count++;
                        }
            return count;
        }
    
        public boolean check(int row1, int col1, int row2, int col2, int target)
        {
            row1++;  col1++;  row2++; col2++;//和上面题一样
            int c = m[row2][col2]+m[row1-1][col1-1]-m[row1-1][col2]-m[row2][col1-1];
            
            return c==target;
        }
    }
    
    展开全文
  • mybatis面试(记录)

    2020-07-10 11:26:54
    1、mybatis对JDBC了哪些封装? 对jdbc操作数据库的过程进行了封装,使开发人员只需关注sql本身,而无需去花费精力去处理注册驱动、 创建connection、创建statement、手动设置参数、结果集检索等jdbc复杂的过程代码...

    1、mybatis对JDBC做了哪些封装?
    对jdbc操作数据库的过程进行了封装,使开发人员只需关注sql本身,而无需去花费精力去处理注册驱动、
    创建connection、创建statement、手动设置参数、结果集检索等jdbc复杂的过程代码。

    2、mybatis如何映射?
    通过namespace来关联接口,namespace必须要跟你的接口路径一致

    3、Mybatis接口绑定有几种实现方式,分别是怎么实现的?
    2种
    第一种是注解的方式 直接在接口上面添加@select @update @insert @delete 注解
    第二种是xml方式,在mapper.xml里面 namespace要跟接口路径一致

    4、Mybatis中和${}与#{}的区别?
    #{} 预编译 可以防止sql注入 mybatis在处理#{}的时候,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。
    {} 字符串替换 就是将{}替换为变量的值

    5、myBatis 实现一对一有几种方式?具体怎么操作的?
    有联合查询和嵌套查询,联合查询是几个表联合在一起,只查询一次,通过在resultMap里面配置association [əˌsoʊsiˈeɪʃn,əˌsoʊʃiˈeɪʃn]
    节点配置一对一的类就可以完成。
    嵌套查询是先查一个表,根据这个表里面结果的外键id,去另外一个表里查询数据,也是通过resultMap配置assoction,但另外一个表的查询通过select属性配置

    6、myBatis 实现一对多有几种方式?怎么操作的?
    二种方式分别为:联合查询 嵌套查询
    联合查询:联合查询是几个表联合在一起,只查询一次,通过resultMap里面配置collection节点配置一对多的类就可以完成。
    嵌套查询:嵌套查询是先查一个表,根据这个表里面结果的外键id,去另外一个表查询数据,也是通过配置collection,但另外一个表是通过查询select节点配置。

    7、myBatis 里面的动态Sql是怎么设定的?用什么语法?
    mybatis里面的动态sql一般是通过if节点来实现,通过OGNL语法来实现,如果要写的完整的话必须要配合where,trim节点,
    where节点是判断包含节点有内容就插入where,否则不插入,trim节点是用来判断如果动态语句是用and 或 or开始,那么会
    自动的把这个and或者or给去掉。

    8、讲下 myBatis 的缓存?
    mybatis有两种缓存,分别为一级缓存(session) 二级缓存(mapper)
    Perpetual [pəˈpetʃuəl]
    一级缓存:基于PerpetualCache的HashMap本地缓存,他的存储作用域是session,当Session flush 或 close,该Session中的所有cache都将清空,
    默认打开一级缓存
    二级缓存:也是基于PerpetualCache的HashMap本地缓存,他的存储作用域是mapper,并且可以自定义存储源,默认不打开二级缓存,开启二级缓存需要使
    二级缓存属性类实现序列化接口,在他的映射文件中去配置

    9、mybatis的执行流程?
    服务器启动——>加载配置文件(mybatisConfig.xml)–产生–>构建者类(xmlConfigBuilder)–调用parse()–>配置类(configuration)–build–>

    会话工厂(sqlSessionFactory)–调用openSession()–>sqlSession对象——>Executor执行器接口——>Statement处理器——>结果集处理器
    (ResultSetHandler)————>结果

    10、持久层框架为什么选择mybatis?
    因为mybatis是最简单的持久层框架,更适合新手直接上手操作
    可以自己去编写原生sql
    提供xml标签,支持编写动态sql
    提供映射标签,支持对象与数据库的ORM字段关系映射
    可以应对需求量变化较多的项目,正符合目前流行的互联网项目
    sql写在xml文件里,便于统一管理和优化,可重用、降低耦合度

    展开全文
  • 这些好好!绝对很多公司要你。 题目节选,想知道答案?点击下载。 二 简答(243) 1. J2EE是什么?它包括哪些技术? 2.测试生命周期、测试过程分为几个阶段,以及各阶段的含义? 3.您系统设计用何种工具...
  • 适合高校面向对象编程课程的教科书,也可作为c++爱好者的参考书。 [center] [a href=http://www.china-pub.com/main/sale/c++tb.htm target=_blank]c++之父bjarne stroustrup博士专访[/a]  [a href=...
  • ,当数据量达到单表千万以上的时候,检索已经很慢了,如果检索条件是根据性别或者省份来就需要全表遍历,而性别这种选择性低的又不适合建立索引,我应该怎么提升用性别或省份作为检索条件的语句检索速度呢?
  • 2.对数据库检索的理解,怎么检索 3.检索采用的什么数据结构? 4.讲一讲红黑树是什么?红黑树解决了什么问题?和二叉搜索树有什么区别? 5.redis采用的数据结构是什么? 6.什么是跳表 7.给你一个一百万个数,求最大...
  • 21. Merge Two Sorted Lists

    2017-03-10 17:07:25
    由于要求用递归来,格式又是链表,那直接思考怎么用l1和l2的当前值来设计函数就行了。 两个list的当前位置l1,l2的值进行对比,小于划为一类,大于等于划为一类。我们以l1为比较条件与l2对比。如果l1的值小于l2,那...
  • 当时没想到怎么做,回了家一拍大腿才想起来这是布隆过滤器…… 唉,在极客时间学过这个概念,但是学完之后再也没用到过,而且太久没打LOL了,所以远远地抛到脑后…… 今天赶快复习一下…… 作用 布隆过滤器...
  • 为了BD

    2012-02-24 18:55:59
    搜索引擎检索端的架构组,对QA团队也是针对这个部分的模块来测试:一大概四道左右,排序和hash以及海量数据处理之类的算法、排序算法要写在纸上、还有道字符串处理的 、linux常用的命令 、还有给个取款机怎么...
  • 依图算法面试

    2019-09-17 22:11:56
    1.面试官直接就说上来就是要两道的,后面有空再看看项目。 2.第一,最大子序列的和,DP 。leetcode 53 这个写出来了 3.leetcode 304 二维区域和检索 - 矩阵不可变,相当于从1维变成了二维。(不会) 4.1-n个数...
  • 怎么做呢? 我一开始用的是两个二维矩阵,分别存储对应【i】和【j】的相加值,然后再对二维矩阵里面的元素逐一遍历。 但是,这样代码量很大,而且时间复杂度也会相对更高。 于是,就有了哈希表的优化做法。 对A和B的...
  • OCR字符识别

    2020-08-31 14:51:57
    文字识别OCR通常应用在证件识别(身份证,驾驶证,护照,名片)、文档检索、截图识别(猿题库,作业帮) OCR对图片都了什么: 实际上我们预期的结果是把只有包含单个文字的图片交给计算机去翻译。 机器是怎么看到...
  • jsp里div1里头引用了一个head.jsp,现在有这么2个连续的处理。 ...点击更新按钮的时候form submit了一次,然后在javascript里头这个更新...现在做检索处理,检索结果是一行一行的出,显示速度非常慢,这个该怎么改进?
  • 某公司笔试1. 两个表,都1000W的数据,left join会不会挂? 如果数据量再大,怎么优化? 2. 一个数据文件,每条记录内容包括:时间、IP地址、关键词。记录是无序排列的,条数超过2000万条。 要求是按检索词排序,并...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    ,此实例非常适合学习,重载并自绘了Wnd类,效果是上下文字、图片、文字由大到小和星星闪烁等滚动效果。实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

检索题怎么做