乘法器verilog实现

  今天重新补习了一下二进制原码,反码和补码之间的关系以及正数变负数,负数变正数之间的关系。瞬间感觉好晕,赶紧仔细研究:

  原码就是符号位加上真值的绝对值。正数原码是其本身,负数符号位为1.

  正数的反码和补码都是其本身,负数反码为符号位不变,其余各位依次取反;补码为符号位不变,其余各位依次取反后加1。

  这都好理解,那一个正数怎么变为负数呢?

注意计算机内存储负数是其补码形式! 正数取反后加1就得到负数(其实是负数的补码),例如:7二进制为0111;取反后为1000;然后+1为1001=(-7)补码。

同理负数取反+1后得到正数的补码=正数本身。

好了理清了上述关系 下面实现一个booth算法乘法器:

booth算法其实就是一种位操作,直接上例子

bit[1]

   bit[2]

  位操作

             0

0

   无操作

             0                1            +被乘数

             1

0

  -被乘数

             1                1            无操作

例如4*2 被乘数为4(0100),乘数为2(0010),都为4bit,因此result应有9bit空间。

第一步:被乘数正数:0100 负数为:1100,result={4’d0,0010,0}

第二步:判断result[1:0] ,为00 则无操作,result向右移一位,补高位与原来高位一致为result={4’d0,0001,0}

第三步:判断result[1:0],为10则减被乘数,result[9:6]+4’b1100={1100,0001,0},result向右移一位,高位补1,result={1110,0000,1}

第四步:判断result[1:0],为01则加被乘数,result[9:6]+4’b0100={0010,0000,1},result向右移一位,高位补0,result={0001,0000,0}

第五步:判断result[1:0],为00则无操作,result向右移一位,高位补0,result={0000,0001,0}

第六步:最后结果取result[9:1]={0000,1000}=8;

中间判断次数为寄存器宽度,即4bit执行4次,然后去高8为最后结果。

下面为位宽8bit的booth乘法器verilog代码:

//-----------------------------------------------------------------------------
// Title         : 
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Project       : <project>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> File          : multiplier.v
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Author        : caoshan
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Created       : <credate>
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Last modified : <moddate>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Description :
</span><span style="color:#008000;">//</span><span style="color:#008000;"> <description>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Copyright (c) <copydate> by <company> This model is the confidential and
</span><span style="color:#008000;">//</span><span style="color:#008000;"> proprietary property of <company> and the possession or use of this
</span><span style="color:#008000;">//</span><span style="color:#008000;"> file requires a written license from <company>.
</span><span style="color:#008000;">//</span><span style="color:#008000;">------------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Modification history :
</span><span style="color:#008000;">//</span><span style="color:#008000;"> <modhist>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------</span>
<span style="color:#0000ff;">module</span> multiplier(<span style="color:#008000;">/*</span><span style="color:#008000;">autoarg</span><span style="color:#008000;">*/</span>
   <span style="color:#008000;">//</span><span style="color:#008000;"> Outputs</span>
<span style="color:#000000;">   done_flag, mul_result,
   </span><span style="color:#008000;">//</span><span style="color:#008000;"> Inputs</span>
<span style="color:#000000;">   clk, rst_n, start_en, mul_cand_data, mul_data
   );
  </span><span style="color:#008000;">//</span><span style="color:#008000;"> parameter  WIDTH = 8;
   
   </span><span style="color:#008000;">//</span><span style="color:#008000;">system interface</span>
   <span style="color:#0000ff;">input</span><span style="color:#000000;">             clk;
   </span><span style="color:#0000ff;">input</span><span style="color:#000000;">             rst_n;
   
   </span><span style="color:#0000ff;">input</span><span style="color:#000000;">             start_en;
   </span><span style="color:#0000ff;">input</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] mul_cand_data;
   </span><span style="color:#0000ff;">input</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] mul_data;

   </span><span style="color:#0000ff;">output</span><span style="color:#000000;">            done_flag;
   </span><span style="color:#0000ff;">output</span> [<span style="color:#800080;">15</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] mul_result;
   
   

   </span><span style="color:#008000;">/*</span><span style="color:#008000;">autoinput</span><span style="color:#008000;">*/</span>
   <span style="color:#008000;">/*</span><span style="color:#008000;">autooutput</span><span style="color:#008000;">*/</span>
   <span style="color:#008000;">/*</span><span style="color:#008000;">autoreg</span><span style="color:#008000;">*/</span>
   <span style="color:#008000;">//</span><span style="color:#008000;"> Beginning of automatic regs (for this module's undeclared outputs)</span>
   <span style="color:#0000ff;">reg</span><span style="color:#000000;">                  done_flag;
   </span><span style="color:#008000;">//</span><span style="color:#008000;">reg [2*WIDTH-1:0]    mul_result;
   </span><span style="color:#008000;">//</span><span style="color:#008000;"> End of automatics</span>
   <span style="color:#008000;">/*</span><span style="color:#008000;">autowire</span><span style="color:#008000;">*/</span>
   <span style="color:#008000;">//</span><span style="color:#008000;">===========================================================
   </span><span style="color:#008000;">//</span><span style="color:#008000;"> state machine
   </span><span style="color:#008000;">//</span><span style="color:#008000;">=======================================================</span>
   <span style="color:#0000ff;">parameter</span>      IDLE = <span style="color:#800080;">3</span><span style="color:#800000;">'</span><span style="color:#800000;">d0;</span>
   <span style="color:#0000ff;">parameter</span>      LOCK_DATA = <span style="color:#800080;">3</span><span style="color:#800000;">'</span><span style="color:#800000;">d1;</span>
   <span style="color:#0000ff;">parameter</span>      IMPROVE_MC = <span style="color:#800080;">3</span><span style="color:#800000;">'</span><span style="color:#800000;">d2;</span>
   <span style="color:#0000ff;">parameter</span>      IMPROVE_M = <span style="color:#800080;">3</span><span style="color:#800000;">'</span><span style="color:#800000;">d3;</span>
   <span style="color:#0000ff;">parameter</span>      JUDGE  = <span style="color:#800080;">3</span><span style="color:#800000;">'</span><span style="color:#800000;">d4;</span>
   <span style="color:#0000ff;">parameter</span>      MUL_MOV = <span style="color:#800080;">3</span><span style="color:#800000;">'</span><span style="color:#800000;">d5;</span>
   <span style="color:#0000ff;">parameter</span>      MUL_END = <span style="color:#800080;">3</span><span style="color:#800000;">'</span><span style="color:#800000;">d6;</span>

   <span style="color:#0000ff;">reg</span> [<span style="color:#800080;">2</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]            curr_state;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">2</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]            next_state;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]      mul_cand_data_ff1;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]      mul_cand_data_ff2;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]     mul_data_ff;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">16</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]      mul_result_ff;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]      cnt;

 
   
   </span><span style="color:#0000ff;">always</span> @ (<span style="color:#0000ff;">posedge</span> clk <span style="color:#0000ff;">or</span> <span style="color:#0000ff;">negedge</span> rst_n)<span style="color:#0000ff;">begin</span>
      <span style="color:#0000ff;">if</span>(rst_n == <span style="color:#800080;">0</span><span style="color:#000000;">)
        curr_state </span><=<span style="color:#000000;"> IDLE;
      </span><span style="color:#0000ff;">else</span><span style="color:#000000;">
        curr_state </span><=<span style="color:#000000;"> next_state;
   </span><span style="color:#0000ff;">end</span>

   <span style="color:#0000ff;">always</span> @ (*)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
      next_state </span>=<span style="color:#000000;"> IDLE;
      </span><span style="color:#0000ff;">case</span><span style="color:#000000;">(curr_state)
        IDLE:</span><span style="color:#0000ff;">begin</span>
           <span style="color:#0000ff;">if</span><span style="color:#000000;">(start_en)
             next_state </span>=<span style="color:#000000;"> LOCK_DATA;
           </span><span style="color:#0000ff;">else</span><span style="color:#000000;">
             next_state </span>=<span style="color:#000000;"> IDLE;
        </span><span style="color:#0000ff;">end</span><span style="color:#000000;">
    LOCK_DATA:</span><span style="color:#0000ff;">begin</span><span style="color:#000000;">
       next_state </span>=<span style="color:#000000;"> IMPROVE_MC;
    </span><span style="color:#0000ff;">end</span><span style="color:#000000;">
    
        IMPROVE_MC:</span><span style="color:#0000ff;">begin</span><span style="color:#000000;">
           next_state </span>=<span style="color:#000000;"> IMPROVE_M;
        </span><span style="color:#0000ff;">end</span><span style="color:#000000;">
    IMPROVE_M:</span><span style="color:#0000ff;">begin</span><span style="color:#000000;">
       next_state </span>=<span style="color:#000000;"> JUDGE;
    </span><span style="color:#0000ff;">end</span><span style="color:#000000;">
        JUDGE:</span><span style="color:#0000ff;">begin</span><span style="color:#000000;">
             next_state </span>=<span style="color:#000000;"> MUL_MOV;
        </span><span style="color:#0000ff;">end</span><span style="color:#000000;">
        MUL_MOV:</span><span style="color:#0000ff;">begin</span>
           <span style="color:#0000ff;">if</span>(cnt >= <span style="color:#800080;">7</span><span style="color:#000000;">)
             next_state </span>=<span style="color:#000000;"> MUL_END;
           </span><span style="color:#0000ff;">else</span><span style="color:#000000;">
             next_state </span>=<span style="color:#000000;"> JUDGE;
        </span><span style="color:#0000ff;">end</span><span style="color:#000000;">
        MUL_END:</span><span style="color:#0000ff;">begin</span><span style="color:#000000;">
           next_state </span>=<span style="color:#000000;"> IDLE;
        </span><span style="color:#0000ff;">end</span>
        <span style="color:#0000ff;">default</span>: next_state =<span style="color:#000000;"> IDLE;
      </span><span style="color:#0000ff;">endcase</span> <span style="color:#008000;">//</span><span style="color:#008000;"> case (curr_state)</span>
   <span style="color:#0000ff;">end</span> <span style="color:#008000;">//</span><span style="color:#008000;"> always @ (*)
   </span><span style="color:#008000;">//</span><span style="color:#008000;">-------------------------------------
   </span><span style="color:#008000;">//</span><span style="color:#008000;">state machine change</span>
   <span style="color:#0000ff;">always</span>@(<span style="color:#0000ff;">posedge</span> clk <span style="color:#0000ff;">or</span> <span style="color:#0000ff;">negedge</span> rst_n)<span style="color:#0000ff;">begin</span>
      <span style="color:#0000ff;">if</span>(rst_n==<span style="color:#800080;">0</span>)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
         mul_cand_data_ff1 </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
         mul_cand_data_ff2 </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
     mul_data_ff </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
      </span><span style="color:#0000ff;">end</span>
      
      <span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>(curr_state == IMPROVE_MC)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
         mul_cand_data_ff1 </span><=<span style="color:#000000;"> mul_cand_data;
         mul_cand_data_ff2 </span><= ~mul_cand_data + <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
     mul_data_ff <=<span style="color:#000000;"> mul_data;
     
      </span><span style="color:#0000ff;">end</span>
   <span style="color:#0000ff;">end</span>

   <span style="color:#0000ff;">always</span> @ (<span style="color:#0000ff;">posedge</span> clk <span style="color:#0000ff;">or</span> <span style="color:#0000ff;">negedge</span> rst_n)<span style="color:#0000ff;">begin</span>
      <span style="color:#0000ff;">if</span>(rst_n == <span style="color:#800080;">0</span><span style="color:#000000;">)
        mul_result_ff </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
      </span><span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>(curr_state ==<span style="color:#000000;"> IMPROVE_M)
        mul_result_ff </span><= {<span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">d0,mul_data_ff,1</span><span style="color:#800000;">'</span><span style="color:#000000;">b0};
      </span><span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>(curr_state == JUDGE)<span style="color:#0000ff;">begin</span>
         <span style="color:#0000ff;">if</span>(mul_result_ff[<span style="color:#800080;">1</span>:<span style="color:#800080;">0</span>]==<span style="color:#800080;">2</span><span style="color:#800000;">'</span><span style="color:#800000;">b01)</span>
           mul_result_ff <= {(mul_result_ff[<span style="color:#800080;">16</span>:<span style="color:#800080;">9</span>] + mul_cand_data_ff1[<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span>]),mul_result_ff[<span style="color:#800080;">8</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]};
         </span><span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>(mul_result_ff[<span style="color:#800080;">1</span>:<span style="color:#800080;">0</span>]== <span style="color:#800080;">2</span><span style="color:#800000;">'</span><span style="color:#800000;">b10)</span>
           mul_result_ff <= {(mul_result_ff[<span style="color:#800080;">16</span>:<span style="color:#800080;">9</span>] + mul_cand_data_ff2[<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span>]),mul_result_ff[<span style="color:#800080;">8</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]};
      </span><span style="color:#0000ff;">end</span>
      <span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>(curr_state ==<span style="color:#000000;"> MUL_MOV)
        mul_result_ff </span><= {mul_result_ff[<span style="color:#800080;">16</span>],mul_result_ff[<span style="color:#800080;">16</span>:<span style="color:#800080;">1</span><span style="color:#000000;">]};
   </span><span style="color:#0000ff;">end</span> <span style="color:#008000;">//</span><span style="color:#008000;"> always @ (posedge clk or negedge rst_n)</span>

   <span style="color:#0000ff;">always</span> @ (<span style="color:#0000ff;">posedge</span> clk <span style="color:#0000ff;">or</span> <span style="color:#0000ff;">negedge</span> rst_n)<span style="color:#0000ff;">begin</span>
      <span style="color:#0000ff;">if</span>(rst_n == <span style="color:#800080;">0</span><span style="color:#000000;">)
        cnt </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
      </span><span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>((curr_state == MUL_MOV)&&(cnt < <span style="color:#800080;">7</span><span style="color:#000000;">))
        cnt </span><= cnt + <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
      <span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>((cnt >=<span style="color:#800080;">7</span> )&&(curr_state ==<span style="color:#000000;"> MUL_END))
        cnt </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
   </span><span style="color:#0000ff;">end</span>

   <span style="color:#0000ff;">always</span>@(<span style="color:#0000ff;">posedge</span> clk <span style="color:#0000ff;">or</span> <span style="color:#0000ff;">negedge</span> rst_n)<span style="color:#0000ff;">begin</span>
      <span style="color:#0000ff;">if</span>(rst_n == <span style="color:#800080;">0</span><span style="color:#000000;">)
        done_flag </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
      </span><span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>(curr_state ==<span style="color:#000000;"> MUL_END)
        done_flag </span><= <span style="color:#800080;">1</span><span style="color:#000000;">;
      </span><span style="color:#0000ff;">else</span><span style="color:#000000;">
        done_flag </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
   </span><span style="color:#0000ff;">end</span>
   <span style="color:#0000ff;">reg</span>[<span style="color:#800080;">16</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] mul_result_ff2;
   </span><span style="color:#0000ff;">always</span> @ (<span style="color:#0000ff;">posedge</span> clk <span style="color:#0000ff;">or</span> <span style="color:#0000ff;">negedge</span> rst_n)<span style="color:#0000ff;">begin</span>
      <span style="color:#0000ff;">if</span>(rst_n == <span style="color:#800080;">0</span><span style="color:#000000;">)
        mul_result_ff2 </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
      </span><span style="color:#0000ff;">else</span> <span style="color:#0000ff;">if</span>(curr_state ==<span style="color:#000000;"> MUL_END)
        mul_result_ff2 </span><=<span style="color:#000000;"> mul_result_ff;
   </span><span style="color:#0000ff;">end</span>
   
   
   <span style="color:#0000ff;">assign</span> mul_result = mul_result_ff2[<span style="color:#800080;">16</span>:<span style="color:#800080;">1</span><span style="color:#000000;">];
          
   </span><span style="color:#0000ff;">endmodule</span> <span style="color:#008000;">//</span></pre> 
   </div> 
   <p>testbench:</p> 
   <div class="cnblogs_code" style="border:#cccccc 1px solid;"> 
    <pre><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Title         : <title>
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Project       : <project>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> File          : test_bench.v
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Author        : cs
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Created       : <credate>
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Last modified : <moddate>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Description :
</span><span style="color:#008000;">//</span><span style="color:#008000;"> <description>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Copyright (c) <copydate> by <company> This model is the confidential and
</span><span style="color:#008000;">//</span><span style="color:#008000;"> proprietary property of <company> and the possession or use of this
</span><span style="color:#008000;">//</span><span style="color:#008000;"> file requires a written license from <company>.
</span><span style="color:#008000;">//</span><span style="color:#008000;">------------------------------------------------------------------------------
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Modification history :
</span><span style="color:#008000;">//</span><span style="color:#008000;"> <modhist>
</span><span style="color:#008000;">//</span><span style="color:#008000;">-----------------------------------------------------------------------------</span>
<span style="color:#0000ff;">module</span><span style="color:#000000;"> testbench();
   </span><span style="color:#0000ff;">reg</span><span style="color:#000000;">             clk;
   </span><span style="color:#0000ff;">reg</span><span style="color:#000000;">             rst_n;
   
   </span><span style="color:#0000ff;">reg</span><span style="color:#000000;">             start_en;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] mul_cand_data;
   </span><span style="color:#0000ff;">reg</span> [<span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] mul_data;

   </span><span style="color:#0000ff;">wire</span><span style="color:#000000;">            done_flag;
   </span><span style="color:#0000ff;">wire</span> [<span style="color:#800080;">15</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] mul_result;

   </span><span style="color:#008000;">//</span><span style="color:#008000;">------------------------------------------------------------------------------</span>
   multiplier u_multiplier(<span style="color:#008000;">/*</span><span style="color:#008000;">autoinst</span><span style="color:#008000;">*/</span>
               <span style="color:#008000;">//</span><span style="color:#008000;"> Outputs</span>
<span style="color:#000000;">               .done_flag        (done_flag),
               .mul_result        (mul_result[</span><span style="color:#800080;">15</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]),
               </span><span style="color:#008000;">//</span><span style="color:#008000;"> Inputs</span>
<span style="color:#000000;">               .clk            (clk),
               .rst_n        (rst_n),
               .start_en        (start_en),
               .mul_cand_data    (mul_cand_data[</span><span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]),
               .mul_data        (mul_data[</span><span style="color:#800080;">7</span>:<span style="color:#800080;">0</span><span style="color:#000000;">]));
   </span><span style="color:#0000ff;">always</span> #<span style="color:#800080;">20</span> clk = ~<span style="color:#000000;">clk;

   </span><span style="color:#0000ff;">initial</span>
     <span style="color:#0000ff;">begin</span><span style="color:#000000;">
    clk </span>= <span style="color:#800080;">0</span><span style="color:#000000;">;
    rst_n </span>= <span style="color:#800080;">0</span><span style="color:#000000;">;
     # </span><span style="color:#800080;">100</span><span style="color:#000000;">
       rst_n </span>= <span style="color:#800080;">1</span><span style="color:#000000;">;
     </span><span style="color:#0000ff;">end</span>
   <span style="color:#0000ff;">reg</span> [<span style="color:#800080;">3</span>:<span style="color:#800080;">0</span><span style="color:#000000;">] i;
   
   </span><span style="color:#0000ff;">always</span>@(<span style="color:#0000ff;">posedge</span> clk <span style="color:#0000ff;">or</span> <span style="color:#0000ff;">negedge</span> rst_n)<span style="color:#0000ff;">begin</span>
      <span style="color:#0000ff;">if</span>(rst_n==<span style="color:#800080;">0</span>)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
     start_en </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
     mul_cand_data </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
     mul_data </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
     i </span><= <span style="color:#800080;">0</span><span style="color:#000000;">;
      </span><span style="color:#0000ff;">end</span>
      <span style="color:#0000ff;">else</span>
     <span style="color:#0000ff;">case</span><span style="color:#000000;">(i)
       </span><span style="color:#800080;">0</span>:<span style="color:#0000ff;">begin</span>
          <span style="color:#0000ff;">if</span>(done_flag)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span>= <span style="color:#800080;">0</span><span style="color:#000000;">;
         i </span><= i + <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         <span style="color:#0000ff;">end</span>
          <span style="color:#0000ff;">else</span> <span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span><= <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         mul_cand_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">d5;</span>
         mul_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">d8;</span>
          <span style="color:#0000ff;">end</span>
       <span style="color:#0000ff;">end</span> <span style="color:#008000;">//</span><span style="color:#008000;"> case: 0</span>
       <span style="color:#800080;">1</span>:<span style="color:#0000ff;">begin</span>
          <span style="color:#0000ff;">if</span>(done_flag)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span>= <span style="color:#800080;">0</span><span style="color:#000000;">;
         i </span><= i + <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         <span style="color:#0000ff;">end</span>
          <span style="color:#0000ff;">else</span> <span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span><= <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         mul_cand_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">b11111100;</span>
         mul_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">d4;</span>
          <span style="color:#0000ff;">end</span>          
       <span style="color:#0000ff;">end</span> <span style="color:#008000;">//</span><span style="color:#008000;"> case: 1</span>
       <span style="color:#800080;">2</span>:<span style="color:#0000ff;">begin</span>
          <span style="color:#0000ff;">if</span>(done_flag)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span>= <span style="color:#800080;">0</span><span style="color:#000000;">;
         i </span><= i + <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         <span style="color:#0000ff;">end</span>
          <span style="color:#0000ff;">else</span> <span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span><= <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         mul_cand_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">d127;</span>
         mul_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">b10000001;</span>
          <span style="color:#0000ff;">end</span>
       <span style="color:#0000ff;">end</span> <span style="color:#008000;">//</span><span style="color:#008000;"> case: 2</span>
       <span style="color:#800080;">3</span>:<span style="color:#0000ff;">begin</span>
          <span style="color:#0000ff;">if</span>(done_flag)<span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span>= <span style="color:#800080;">0</span><span style="color:#000000;">;
         i </span><= i + <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         <span style="color:#0000ff;">end</span>
          <span style="color:#0000ff;">else</span> <span style="color:#0000ff;">begin</span><span style="color:#000000;">
         start_en </span><= <span style="color:#800080;">1</span><span style="color:#800000;">'</span><span style="color:#800000;">b1;</span>
         mul_cand_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">b10000001;</span>
         mul_data <= <span style="color:#800080;">8</span><span style="color:#800000;">'</span><span style="color:#800000;">b10000001;</span>
          <span style="color:#0000ff;">end</span>
       <span style="color:#0000ff;">end</span> <span style="color:#008000;">//</span><span style="color:#008000;"> case: 3</span>
       <span style="color:#800080;">4</span>:<span style="color:#0000ff;">begin</span><span style="color:#000000;">
          i</span><=<span style="color:#800080;">4</span><span style="color:#800000;">'</span><span style="color:#800000;">d4;</span></pre> 
    <pre><span style="color:#800000;">          mul_cand_data <= 0;</span></pre> 
    <pre><span style="color:#800000;">          mul_data      <= 0;</span></pre> 
    <pre>       <span style="color:#0000ff;">end</span>
     <span style="color:#0000ff;">endcase</span> <span style="color:#008000;">//</span><span style="color:#008000;"> case (i)</span>
   <span style="color:#0000ff;">end</span> <span style="color:#008000;">//</span><span style="color:#008000;"> always@ (posedge clk or negedge rst_n)</span>
     <span style="color:#0000ff;">initial</span>
     <span style="color:#0000ff;">begin</span><span style="color:#000000;">
    $fsdbDumpfile (</span><span style="color:#800000;">"</span><span style="color:#800000;">./testbench.fsdb</span><span style="color:#800000;">"</span><span style="color:#000000;">);
    $fsdbDumpvars; </span><span style="color:#008000;">//
</span>     <span style="color:#0000ff;">end</span> 
<span style="color:#0000ff;">endmodule</span></pre> 
   </div> 
   <p>仿真结果</p> 
   <p><a href="http://img.e-com-net.com/image/info8/bb47204e42874ae88f012977d1bfd8b4.jpg" target="_blank"><img style="background-image:none;border:0px;;border:1px solid black;" title="LE1E[6PX1AU69RL[[1N4R5G" src="http://img.e-com-net.com/image/info8/bb47204e42874ae88f012977d1bfd8b4.jpg" alt="乘法器verilog实现_第1张图片" width="650" height="155"></a></p> 
   <blockquote> 
    <p>                                                                                                                                                                                                                                                                                                                      2015年4月9日</p> 
    <p>                                                                                                                                                                                                                                                                                                                           cslegend</p> 
   </blockquote> 
  </div> 
  <p>转载于:https://www.cnblogs.com/CSLegend/p/4412950.html</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1294945837381656576"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(乘法器verilog实现)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1885683624850812928.htm"
                           title="集团企业数字化转型整体蓝图与实施方案:数字化使命、数字化愿景、数字化目标、数字化蓝图、关键策略、数字化保障、" target="_blank">集团企业数字化转型整体蓝图与实施方案:数字化使命、数字化愿景、数字化目标、数字化蓝图、关键策略、数字化保障、</a>
                        <span class="text-muted">公众号:优享智库</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%97%E5%8C%96%E8%BD%AC%E5%9E%8B/1.htm">数字化转型</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%B2%BB%E7%90%86/1.htm">数据治理</a><a class="tag" taget="_blank" href="/search/%E4%B8%BB%E6%95%B0%E6%8D%AE/1.htm">主数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>集团企业数字化转型整体蓝图与实施方案集团企业数字化转型整体蓝图与实施方案数字化使命提升企业核心竞争力优化业务流程与效率拓展创新商业模式满足客户多元化需求数字化愿景构建全面互联互通企业生态实现数据驱动智能决策打造持续创新数字文化引领行业数字化转型发展数字化目标短期目标:快速响应市场变化中期目标:优化资源配置,提升运营效率长期目标:构建可持续发展数字生态关键绩效指标(KPI)设定数字化蓝图整体架构设计</div>
                    </li>
                    <li><a href="/article/1885683372722810880.htm"
                           title="Java中的getInterfaces()方法:使用与原理详解" target="_blank">Java中的getInterfaces()方法:使用与原理详解</a>
                        <span class="text-muted">AllenBright</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Java%E5%9F%BA%E7%A1%80/1.htm">Java基础</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在Java中,反射(Reflection)是一个强大的工具,它允许程序在运行时动态地获取类的信息并操作类的属性和方法。getInterfaces()方法是Java反射API中的一个重要方法,用于获取类或接口直接实现的接口。本文将深入探讨getInterfaces()方法的使用场景、工作原理以及实际应用。1.getInterfaces()方法简介getInterfaces()是java.lang.C</div>
                    </li>
                    <li><a href="/article/1885681732867387392.htm"
                           title="自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数" target="_blank">自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数</a>
                        <span class="text-muted">〖是♂我〗</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>代码:importtorchimportnumpyasnpimporttorch.nnasnnfromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_score#定义数据:x_data是特征,y_data是标签(目标值)data=[[-0.5,7.7],[1.8,98.5],[0.9,57.8],[0.4,39</div>
                    </li>
                    <li><a href="/article/1885680220569137152.htm"
                           title="基于SpringBoot+MyBatis Plus+Vue的Java项目百战商城(附:源码 课件)" target="_blank">基于SpringBoot+MyBatis Plus+Vue的Java项目百战商城(附:源码 课件)</a>
                        <span class="text-muted">搞程序的菇凉</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                        <div>项目背景随着互联网的不断普及和人们消费方式的转变,网络购物逐渐成为人们热衷的一种交易方式。文章采用最新流行的SpringBoot,VUE等技术以及IDEA,VisualStudioCode开发工具,实现前后端数据交互。该线上商城主要实现用户个人中心、购物车、商品管理、订单管理、支付、后台进行商铺内容管理、角色管理、权限管理等功能模块。本设计还为每个店铺可以上传自己的商品、设计轮播图、导航栏等。最后</div>
                    </li>
                    <li><a href="/article/1885679462977171456.htm"
                           title="自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测" target="_blank">自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测</a>
                        <span class="text-muted">知识鱼丸</span>
<a class="tag" taget="_blank" href="/search/machine/1.htm">machine</a><a class="tag" taget="_blank" href="/search/learning/1.htm">learning</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>在TensorFlow中实现逻辑回归、保存模型并加载模型进行预测的过程可以分为以下几个步骤:准备数据:创建或加载你的自定义数据集。构建逻辑回归模型。训练模型。保存模型。加载模型。使用加载的模型进行预测。importtensorflowastfimportnumpyasnp#1.准备数据#示例:生成一些随机数据np.random.seed(0)X_train=np.random.rand(100,3</div>
                    </li>
                    <li><a href="/article/1885679210782060544.htm"
                           title="数字化转型深化:2025年度战略蓝图" target="_blank">数字化转型深化:2025年度战略蓝图</a>
                        <span class="text-muted">SoftSwapGuru</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%A7%E5%93%81%E8%BF%90%E8%90%A5/1.htm">产品运营</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a>
                        <div>随着2025年的到来,全球企业正步入一个前所未有的数字化转型加速期。面对市场竞争的加剧、消费者需求的多元化以及技术迭代的飞速,制定并执行一套高效、前瞻性的年度任务规划,成为企业持续成长与保持竞争力的关键。本文旨在探讨2025年度企业如何通过科学规划、技术创新与团队协作,实现数字化转型的深化与突破。一、战略规划:明确方向,聚焦核心1.1市场趋势分析首先,企业需深入分析2025年的市场趋势,包括新兴技</div>
                    </li>
                    <li><a href="/article/1885676437059465216.htm"
                           title="使用PaddlePaddle实现逻辑回归:从训练到模型保存与加载" target="_blank">使用PaddlePaddle实现逻辑回归:从训练到模型保存与加载</a>
                        <span class="text-muted">Luzem0319</span>
<a class="tag" taget="_blank" href="/search/paddlepaddle/1.htm">paddlepaddle</a><a class="tag" taget="_blank" href="/search/%E9%80%BB%E8%BE%91%E5%9B%9E%E5%BD%92/1.htm">逻辑回归</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>1.引入必要的库首先,需要引入必要的库。PaddlePaddle用于构建和训练模型,pandas和numpy用于数据处理,matplotlib用于结果的可视化。importpaddleimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt2.加载自定义数据集假设有一个CSV文件custom_dataset.csv,其中包含特征(自变量</div>
                    </li>
                    <li><a href="/article/1885675050846187520.htm"
                           title="微服务中传递用户信息的实现方案" target="_blank">微服务中传递用户信息的实现方案</a>
                        <span class="text-muted">寒士obj</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>文章目录前言一、网关过滤器的处理二、SpringMVC拦截器的处理三、微服务之间调用时的处理总结前言网关过滤器:通过mutate()方法修改请求头,直接在请求中添加用户信息。SpringMVC拦截器:将请求头中的用户信息存储到ThreadLocal中,确保用户信息的隔离。微服务之间调用:使用RequestInterceptor在每次远程调用时,从ThreadLocal获取用户信息并将其设置到请求头</div>
                    </li>
                    <li><a href="/article/1885674924543111168.htm"
                           title="如何计算迭代次数和路径成本,针对本人所写的引导RRT算法" target="_blank">如何计算迭代次数和路径成本,针对本人所写的引导RRT算法</a>
                        <span class="text-muted">上海迪士尼35</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/matlab/1.htm">matlab</a>
                        <div>在您提供的RRT算法代码中,迭代次数和路径成本的计算可以通过以下方式实现:迭代次数迭代次数指的是RRT算法主循环执行的次数,即从开始到找到目标点或达到最大迭代次数为止。在您的代码中,这个值可以通过变量i来获取,当循环结束时,i的值就是实际执行的迭代次数。您可以在循环结束后添加如下代码来显示迭代次数:real_iterations=i;%实际迭代次数disp(['实际迭代次数:',num2str(r</div>
                    </li>
                    <li><a href="/article/1885673537277063168.htm"
                           title="集群部署时的分布式 session 如何实现?" target="_blank">集群部署时的分布式 session 如何实现?</a>
                        <span class="text-muted">打不死的喜羊羊</span>
<a class="tag" taget="_blank" href="/search/JAVA/1.htm">JAVA</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BC%9A%E8%AF%9D/1.htm">分布式会话</a>
                        <div>面试题集群部署时的分布式session如何实现?面试官心理分析面试官问了你一堆dubbo是怎么玩儿的,你会玩儿dubbo就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务、接口幂等性、分布式锁,还有最后一个就是分布式session。当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,这里只是说一下常见的几个问题,也是面试的时候常问的几个。面试题</div>
                    </li>
                    <li><a href="/article/1885672026186772480.htm"
                           title="使用 Redis Streams 实现高性能消息队列" target="_blank">使用 Redis Streams 实现高性能消息队列</a>
                        <span class="text-muted">桂月二二</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a>
                        <div>1.引言在后端开发中,消息队列是一个常见的组件,主要用于解耦系统、提高吞吐量以及实现异步处理。常见的消息队列包括Kafka、RabbitMQ以及ActiveMQ,但RedisStreams作为Redis5.0引入的新特性,也提供了一种高效、轻量的消息队列解决方案。本文将深入探讨RedisStreams的核心概念,并演示如何在后端服务中使用RedisStreams实现一个高性能的消息队列。2.Red</div>
                    </li>
                    <li><a href="/article/1885669631050444800.htm"
                           title="8647 实现图的存储结构" target="_blank">8647 实现图的存储结构</a>
                        <span class="text-muted">软工在逃男大学生</span>
<a class="tag" taget="_blank" href="/search/SCAU_OJ_DS/1.htm">SCAU_OJ_DS</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>SCAU数据结构OJ第六章文章目录8647实现图的存储结构8647实现图的存储结构输入样例4412133441输出样例0110000000011000代码如下:#include#includeusingnamespacestd;intmain(){intn,m,i,j,a,b;intMap[100][100]={0};cin>>n>>m;for(i=0;i>a>>b;Map[a][b]=1;}fo</div>
                    </li>
                    <li><a href="/article/1885666854400225280.htm"
                           title="Python-OpenCV实现运动物体检测" target="_blank">Python-OpenCV实现运动物体检测</a>
                        <span class="text-muted">HackDyno</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a>
                        <div>Python-OpenCV实现运动物体检测运动物体检测是计算机视觉领域中的一个重要任务,它可以帮助我们识别并跟踪视频中的运动物体。本文将介绍如何使用Python和OpenCV库实现基于帧差法的运动物体检测。导入库首先,我们需要导入所需的库:OpenCV和NumPy。importcv2importnumpyasnp读取视频我们将从视频文件中读取帧数据。可以使用cv2.VideoCapture函数打开</div>
                    </li>
                    <li><a href="/article/1885666854987427840.htm"
                           title="python实现运动检测" target="_blank">python实现运动检测</a>
                        <span class="text-muted">Harajukuuuu</span>
<a class="tag" taget="_blank" href="/search/tc%E5%91%A8%E8%AE%B0/1.htm">tc周记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/1.htm">自动驾驶</a>
                        <div>#-*-coding=GBK-*-importcv2ascvimporttimeimportdatetime#打开摄像头获取图片cap=cv.VideoCapture(0)#打开摄像头,0代表的是设备id,如果有多个摄像头,可以设置其他数值width=int(cap.get(cv.CAP_PROP_FRAME_WIDTH))height=int(cap.get(cv.CAP_PROP_FRAME_</div>
                    </li>
                    <li><a href="/article/1885666097827475456.htm"
                           title="OpenCV中投影变换的代码实现" target="_blank">OpenCV中投影变换的代码实现</a>
                        <span class="text-muted">AI_dataloads</span>
<a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>目录引言技术背景变换过程完整代码展示运行结果引言投影变换是计算机视觉和图像处理领域中常用的技术之一。它可以用于将图像从一个透视关系映射到另一个透视关系,常见的应用包括图像矫正、景深变化、以及虚拟实境的创建。本文将介绍如何使用OpenCV中的cv2.warpPerspective函数进行投影变换。技术背景投影变换的核心是使用一个3x3的变换矩阵,这个矩阵将源图像中的点映射到目标图像中的对应点。这个变</div>
                    </li>
                    <li><a href="/article/1885665716284223488.htm"
                           title="C 语言学习记录:选择语句与循环语句" target="_blank">C 语言学习记录:选择语句与循环语句</a>
                        <span class="text-muted">Aphelios380</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>在C语言的学习进程中,选择语句和循环语句是构建程序逻辑的重要部分。作为结构化编程语言,C语言主要包含顺序结构、选择结构和循环结构,其中选择语句和循环语句分别控制着程序的分支走向和重复执行,对实现复杂的业务逻辑起着关键作用。接下来,让我们深入学习这两类语句。一、选择语句在生活中,我们时刻面临着各种抉择,比如是选择去清华、北大还是其他地方深造,是否找朋友玩耍,以及选择及时行乐还是克勤克俭的生活方式等。</div>
                    </li>
                    <li><a href="/article/1885664076701429760.htm"
                           title="《OpenCV》——图像透视转换" target="_blank">《OpenCV》——图像透视转换</a>
                        <span class="text-muted">Kai HVZ</span>
<a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a>
                        <div>图像透视转换简介在OpenCV里,图像透视转换属于重要的几何变换,也被叫做投影变换。下面从原理、实现步骤、相关函数和应用场景几个方面为你详细介绍。原理实现步骤选取对应点:要在源图像和目标图像上分别找出至少四个对应的点。这些对应点不能共线,因为它们是计算透视变换矩阵的关键依据。计算透视变换矩阵:利用OpenCV的cv2.getPerspectiveTransform函数,依据前面选取的对应点来计算透</div>
                    </li>
                    <li><a href="/article/1885663950268329984.htm"
                           title="网络安全知识:网络安全网格架构" target="_blank">网络安全知识:网络安全网格架构</a>
                        <span class="text-muted">ManageEngine卓豪</span>
<a class="tag" taget="_blank" href="/search/IAM/1.htm">IAM</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/CSMA/1.htm">CSMA</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%9E%B6%E6%9E%84/1.htm">安全架构</a><a class="tag" taget="_blank" href="/search/IAM/1.htm">IAM</a>
                        <div>在数字化转型的主导下,大多数组织利用多云或混合环境,包括本地基础设施、云服务和应用程序以及第三方实体,以及在网络中运行的用户和设备身份。在这种情况下,保护组织资产免受威胁涉及实现一个统一的框架,该框架根据组织内每个实体的上下文提供安全性。此外,强化组合环境需要可互操作的跨域功能,以增强协作,这样就不需要多个解决方案来实现相同的功能。在这种情况下,网络安全网格架构(CSMA)提供了一种可扩展的方法来</div>
                    </li>
                    <li><a href="/article/1885663067136651264.htm"
                           title="文件的介绍2" target="_blank">文件的介绍2</a>
                        <span class="text-muted">zl_dfq</span>
<a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>一、文件的打开与关闭1.流与标准流(1)流:编写程序的时候,我们可以通过各种设备(如键盘、U盘等)获得数据,当然我们也可以通过各种设备输出相应的数据到它们当中去,可程序与设备进行了怎样的操作才实现了数据的输入输出呢?显然,这里面的水太深了!一一弄懂将会花费许多精力,所以为了方便对各种设备的操作,我们抽象出“流”的概念。流,可以理解为程序与各种设备之间的纽带,通过这条纽带,程序与各种设备之间联系紧密</div>
                    </li>
                    <li><a href="/article/1885662185733025792.htm"
                           title="Codeforces Round 130 (Div. 2) E. Blood Cousins(LCA+DFS序+二分)【2100】" target="_blank">Codeforces Round 130 (Div. 2) E. Blood Cousins(LCA+DFS序+二分)【2100】</a>
                        <span class="text-muted">Auto114514</span>
<a class="tag" taget="_blank" href="/search/ACM%E2%80%94%E6%A0%91/1.htm">ACM—树</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">深度优先</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E8%AE%BA/1.htm">图论</a>
                        <div>题目链接https://codeforces.com/contest/208/problem/E思路此题有两个要点:第一,快速找到节点uuu的ppp级祖先。第二,在以节点uuu为根的子树中找到与节点uuu深度相同的节点的个数。对于第一点,我们可以使用LCA算法在树上倍增,实现快速查询。对于第二点,我们可以按照深度,将所有节点的DFS序全部存储到vector中,因为DFS序的单调性,直接二分查找即可</div>
                    </li>
                    <li><a href="/article/1885661089438429184.htm"
                           title="《解锁AI黑科技:数据分类聚类与可视化》" target="_blank">《解锁AI黑科技:数据分类聚类与可视化》</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">人工智能深度学习数据挖掘</a>
                        <div>在当今数字化时代,数据如潮水般涌来,如何从海量数据中提取有价值的信息,成为了众多领域面临的关键挑战。人工智能(AI)技术的崛起,为解决这一难题提供了强大的工具。其中,能够实现数据分类与聚类,并以可视化形式展现的AI技术,正逐渐成为各行业数据分析和决策的核心力量。数据分类与聚类:AI的核心技能数据分类是将数据划分到预先定义好的类别中,就像把图书馆里的书籍按照不同学科分类摆放,方便读者查找。比如在垃圾</div>
                    </li>
                    <li><a href="/article/1885658400914731008.htm"
                           title="看深度求索如何思索自己的未来" target="_blank">看深度求索如何思索自己的未来</a>
                        <span class="text-muted">tuan_zhang</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%9C%E6%96%B9%E8%89%BE%E8%89%BE%E4%B8%8E%E6%8E%A2%E5%AE%87%E8%AE%A1%E5%88%92/1.htm">东方艾艾与探宇计划</a><a class="tag" taget="_blank" href="/search/%E7%BB%9D%E5%AF%86%E8%8A%AF%E7%89%87%E8%AE%A1%E5%88%92/1.htm">绝密芯片计划</a><a class="tag" taget="_blank" href="/search/%E6%88%98%E7%95%A5%E6%AC%BA%E9%AA%97/1.htm">战略欺骗</a><a class="tag" taget="_blank" href="/search/%E5%A4%AA%E7%A9%BA%E6%8E%A2%E7%B4%A2/1.htm">太空探索</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E6%94%BB%E5%9D%9A/1.htm">算法攻坚</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A%E8%BD%AF%E4%BB%B6/1.htm">工业软件</a>
                        <div>深度求索(DeepSeek)的崛起无疑是AI领域的一次现象级突破,但其未来能否持续"狂飙",需从技术、生态、商业和行业环境四个维度进行系统性分析:一、技术护城河的虚实验证1.动态优化技术的含金量:将模型迭代周期压缩至周级别需突破分布式训练瓶颈。其公布的训练效率提升数据(30%时间缩短、50%推理加速)若经第三方验证,可能重构行业技术标准。对比谷歌TPU+JAX框架实现的20%效率提升,深度求索的技</div>
                    </li>
                    <li><a href="/article/1885657386182569984.htm"
                           title="基于SSM的大王门店管理系统设计与实现" target="_blank">基于SSM的大王门店管理系统设计与实现</a>
                        <span class="text-muted">qq1744828575</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录摘要IAbstractII引言11相关技术31.1SSM31.1.1Spring31.1.2SpringMVC31.1.3MyBatis41.2Shiro41.3前端技术41.3.1Bootstrap41.3.2jQuery41.3.3Ajax51.3.4Layui51.3.5Thymeleaf51.4本章小结62系统分析72.1功能需求分析72.2非功能需求113系统设计133.1系统总体设</div>
                    </li>
                    <li><a href="/article/1885654989154611200.htm"
                           title="大模型开发流程及项目实战" target="_blank">大模型开发流程及项目实战</a>
                        <span class="text-muted">辣椒种子</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>一、大模型开发整理流程1.1、什么是大模型开发我们将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发。开发大模型相关应用,其技术核心点虽然在大语言模型上,但一般通过调用API或开源模型来实现核心的理解与生成,通过PromptEnginnering来实现大语言模型的控制,因此,虽然大模型是深度学习领域的集大成之作,大模型开</div>
                    </li>
                    <li><a href="/article/1885654989582430208.htm"
                           title="LitGPT - 20多个高性能LLM,具有预训练、微调和大规模部署的recipes" target="_blank">LitGPT - 20多个高性能LLM,具有预训练、微调和大规模部署的recipes</a>
                        <span class="text-muted">伊织产研</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/1.htm">开源项目</a><a class="tag" taget="_blank" href="/search/LitGPT/1.htm">LitGPT</a><a class="tag" taget="_blank" href="/search/%E9%A2%84%E8%AE%AD%E7%BB%83/1.htm">预训练</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E8%B0%83/1.htm">微调</a><a class="tag" taget="_blank" href="/search/%E9%83%A8%E7%BD%B2/1.htm">部署</a>
                        <div>文章目录一、关于LitGPT二、快速启动安装LitGPT高级安装选项从20多个LLM中进行选择三、工作流程1、所有工作流程2、微调LLM3、部署LLM4、评估LLM5、测试LLM6、预训练LLM7、继续预训练LLM四、最先进的功能五、训练方法示例六、项目亮点教程一、关于LitGPTLitGPT用于使用、微调、预训练和部署LLMLightning快速⚡⚡每个LLM都是从头开始实现的,没有抽象和完全控</div>
                    </li>
                    <li><a href="/article/1885654233181646848.htm"
                           title="ArkTS编程规范" target="_blank">ArkTS编程规范</a>
                        <span class="text-muted">RZer</span>
<a class="tag" taget="_blank" href="/search/HarmonyOS/1.htm">HarmonyOS</a><a class="tag" taget="_blank" href="/search/ArkTS/1.htm">ArkTS</a>
                        <div>文章目录目标和适用范围规则来源章节概览代码风格编程实践术语和定义总体原则命名类名、枚举名、命名空间名采用UpperCamelCase风格变量名、方法名、参数名采用lowerCamelCase风格常量名、枚举值名采用全部大写,单词间使用下划线隔开避免使用否定的布尔变量名,布尔型的局部变量或方法需加上表达是非意义的前缀格式使用空格缩进,禁止使用tab字符行宽不超过120个字符条件语句和循环语句的实现必</div>
                    </li>
                    <li><a href="/article/1885651330970742784.htm"
                           title="starrocks 2.5版本日期递增,实现对应序号" target="_blank">starrocks 2.5版本日期递增,实现对应序号</a>
                        <span class="text-muted">西瓜汁大数据</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>selectDATE_FORMAT(date_add('2024-08-05',(unnest-1)),'%Y-%m-%d')date_time,'N'enable,unnestseqfrom(selectarray_cum_sum(cast(split(lpad('1',(days_diff('2024-08-27','2024-08-05')*2)-1,'1;'),';')asarray))a</div>
                    </li>
                    <li><a href="/article/1885650825410310144.htm"
                           title="Linux系统中的Rsync服务" target="_blank">Linux系统中的Rsync服务</a>
                        <span class="text-muted">入眼皆含月</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>一、Rsync服务概述Rsync是一种功能强大的文件同步工具,广泛应用于Linux系统中的数据备份和文件同步任务。它通过比较文件的修改时间和大小来实现增量备份,大大提高了同步效率,减少了网络带宽的使用,并且支持多种同步选项,如压缩、加密和排除特定文件等。二、Rsync主要特点1、增量同步Rsync通过比较文件的修改时间和大小,只同步发生变化的部分,而不是整个文件。这使得同步过程更加高效,特别是在处</div>
                    </li>
                    <li><a href="/article/1885650446958260224.htm"
                           title="园区智能化系统实现管理与服务的智能化转型与创新进阶" target="_blank">园区智能化系统实现管理与服务的智能化转型与创新进阶</a>
                        <span class="text-muted">快鲸智慧楼宇管理系统</span>
<a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a>
                        <div>内容概要园区智能化系统的出现,标志着管理与服务向智能化转型的重要一步。这一系统不仅仅是一个技术解决方案,更是一个全面提升园区运营效率与安全性的独特工具。通过集成大数据分析、物联网和人工智能,园区智能化系统能够为各类园区如工业园、产业园、物流园、写字楼与公寓等提供切实可行的解决方案。“智能化管理不仅是未来的发展趋势,更是提升竞争力的必要手段。”在资产管理方面,智能化系统能够实时监控并优化资源的配置,</div>
                    </li>
                    <li><a href="/article/1885647297358917632.htm"
                           title="汽车蓝牙钥匙定位仿真小程序" target="_blank">汽车蓝牙钥匙定位仿真小程序</a>
                        <span class="text-muted">程序员石磊</span>
<a class="tag" taget="_blank" href="/search/%E5%9F%BA%E4%BA%8E%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9A%84%E5%AE%A4%E5%86%85%E5%AE%9A%E4%BD%8D/1.htm">基于深度学习的室内定位</a><a class="tag" taget="_blank" href="/search/%E5%AE%A4%E5%86%85%E5%AE%9A%E4%BD%8D/1.htm">室内定位</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E7%89%99%E9%92%A5%E5%8C%99/1.htm">蓝牙钥匙</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E7%89%99%E9%92%A5%E5%8C%99%E5%AE%9A%E4%BD%8D/1.htm">蓝牙钥匙定位</a>
                        <div>此需求来自于粉丝的真实需求,假期没事,牛刀小试。一、项目背景如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙Beacon在短距离定位场景下的可行性,我们搭建了一个简易原型:利用UniApp在移动端采集蓝牙信标的RSSI(信号强度),通过三边定位算法估算钥匙在车内或车周围的坐标,并使用FastAPI+Redis实现数据存储与可视化接口,最后在Leaflet地图中模拟车辆俯视效果,实时展示定</div>
                    </li>
                                <li><a href="/article/84.htm"
                                       title="继之前的线程循环加到窗口中运行" target="_blank">继之前的线程循环加到窗口中运行</a>
                                    <span class="text-muted">3213213333332132</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/JFrame/1.htm">JFrame</a><a class="tag" taget="_blank" href="/search/JPanel/1.htm">JPanel</a>
                                    <div>之前写了有关java线程的循环执行和结束,因为想制作成exe文件,想把执行的效果加到窗口上,所以就结合了JFrame和JPanel写了这个程序,这里直接贴出代码,在窗口上运行的效果下面有附图。 
 

package thread;

import java.awt.Graphics;
import java.text.SimpleDateFormat;
import java.util</div>
                                </li>
                                <li><a href="/article/211.htm"
                                       title="linux 常用命令" target="_blank">linux 常用命令</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%91%BD%E4%BB%A4/1.htm">命令</a>
                                    <div>1.grep 
相信这个命令可以说是大家最常用的命令之一了。尤其是查询生产环境的日志,这个命令绝对是必不可少的。 
但之前总是习惯于使用 (grep -n 关键字 文件名 )查出关键字以及该关键字所在的行数,然后再用 (sed -n  '100,200p' 文件名),去查出该关键字之后的日志内容。 
但其实还有更简便的办法,就是用(grep  -B n、-A n、-C n 关键</div>
                                </li>
                                <li><a href="/article/338.htm"
                                       title="php heredoc原文档和nowdoc语法" target="_blank">php heredoc原文档和nowdoc语法</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/heredoc/1.htm">heredoc</a><a class="tag" taget="_blank" href="/search/nowdoc/1.htm">nowdoc</a>
                                    <div><!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Current To-Do List</title>
</head>
<body>
<?</div>
                                </li>
                                <li><a href="/article/465.htm"
                                       title="overflow的属性" target="_blank">overflow的属性</a>
                                    <span class="text-muted">周华华</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml&q</div>
                                </li>
                                <li><a href="/article/592.htm"
                                       title="《我所了解的Java》——总体目录" target="_blank">《我所了解的Java》——总体目录</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>        准备用一年左右时间写一个系列的文章《我所了解的Java》,目录及内容会不断完善及调整。 
        在编写相关内容时难免出现笔误、代码无法执行、名词理解错误等,请大家及时指出,我会第一时间更正。 
   &n</div>
                                </li>
                                <li><a href="/article/719.htm"
                                       title="[简单]docx4j常用方法小结" target="_blank">[简单]docx4j常用方法小结</a>
                                    <span class="text-muted">53873039oycg</span>
<a class="tag" taget="_blank" href="/search/docx/1.htm">docx</a>
                                    <div>        本代码基于docx4j-3.2.0,在office word 2007上测试通过。代码如下: 
         
import java.io.File;
import java.io.FileInputStream;
import ja</div>
                                </li>
                                <li><a href="/article/846.htm"
                                       title="Spring配置学习" target="_blank">Spring配置学习</a>
                                    <span class="text-muted">云端月影</span>
<a class="tag" taget="_blank" href="/search/spring%E9%85%8D%E7%BD%AE/1.htm">spring配置</a>
                                    <div> 
首先来看一个标准的Spring配置文件 applicationContext.xml 
 
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:xsi=&q</div>
                                </li>
                                <li><a href="/article/973.htm"
                                       title="Java新手入门的30个基本概念三" target="_blank">Java新手入门的30个基本概念三</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E6%89%8B/1.htm">新手</a><a class="tag" taget="_blank" href="/search/java+%E5%85%A5%E9%97%A8/1.htm">java 入门</a>
                                    <div>17.Java中的每一个类都是从Object类扩展而来的。  18.object类中的equal和toString方法。  equal用于测试一个对象是否同另一个对象相等。  toString返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示.(toString 方法是一个很重要的方法)   19.通用编程:任何类类型的所有值都可以同object类性的变量来代替。 </div>
                                </li>
                                <li><a href="/article/1100.htm"
                                       title="《2008 IBM Rational 软件开发高峰论坛会议》小记" target="_blank">《2008 IBM Rational 软件开发高峰论坛会议》小记</a>
                                    <span class="text-muted">antonyup_2006</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a><a class="tag" taget="_blank" href="/search/%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91/1.htm">敏捷开发</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/IBM/1.htm">IBM</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a>
                                    <div>我一直想写些总结,用于交流和备忘,然都没提笔,今以一篇参加活动的感受小记开个头,呵呵! 
 
其实参加《2008 IBM Rational 软件开发高峰论坛会议》是9月4号,那天刚好调休.但接着项目颇为忙,所以今天在中秋佳节的假期里整理了下. 
 
参加这次活动是一个朋友给的一个邀请书,才知道有这样的一个活动,虽然现在项目暂时没用到IBM的解决方案,但觉的参与这样一个活动可以拓宽下视野和相关知识.</div>
                                </li>
                                <li><a href="/article/1227.htm"
                                       title="PL/SQL的过程编程,异常,声明变量,PL/SQL块" target="_blank">PL/SQL的过程编程,异常,声明变量,PL/SQL块</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/PL%2FSQL%E7%9A%84%E8%BF%87%E7%A8%8B%E7%BC%96%E7%A8%8B/1.htm">PL/SQL的过程编程</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E5%B8%B8/1.htm">异常</a><a class="tag" taget="_blank" href="/search/PL%2FSQL%E5%9D%97/1.htm">PL/SQL块</a><a class="tag" taget="_blank" href="/search/%E5%A3%B0%E6%98%8E%E5%8F%98%E9%87%8F/1.htm">声明变量</a>
                                    <div>PL/SQL; 
   
   过程;

    符号;

     变量;

     PL/SQL块;

     输出;

     异常;
 
  
  
PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言PL/SQL 是对 SQL 的扩展,sql的执行时每次都要写操作</div>
                                </li>
                                <li><a href="/article/1354.htm"
                                       title="Mockito(三)--完整功能介绍" target="_blank">Mockito(三)--完整功能介绍</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a><a class="tag" taget="_blank" href="/search/mockito/1.htm">mockito</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a>
                                    <div>        mockito官网:http://code.google.com/p/mockito/,打开documentation可以看到官方最新的文档资料。 
一.使用mockito验证行为 
//首先要import Mockito
import static org.mockito.Mockito.*;

//mo</div>
                                </li>
                                <li><a href="/article/1481.htm"
                                       title="精通Oracle10编程SQL(8)使用复合数据类型" target="_blank">精通Oracle10编程SQL(8)使用复合数据类型</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a>
                                    <div>/*
 *使用复合数据类型
 */

--PL/SQL记录
--定义PL/SQL记录
--自定义PL/SQL记录
DECLARE
  TYPE emp_record_type IS RECORD(
     name emp.ename%TYPE,
     salary emp.sal%TYPE,
     dno emp.deptno%TYPE
  );
  emp_</div>
                                </li>
                                <li><a href="/article/1608.htm"
                                       title="【Linux常用命令一】grep命令" target="_blank">【Linux常用命令一】grep命令</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Linux%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/1.htm">Linux常用命令</a>
                                    <div>grep命令格式 
  
grep [option] pattern [file-list] 
  
  
grep命令用于在指定的文件(一个或者多个,file-list)中查找包含模式串(pattern)的行,[option]用于控制grep命令的查找方式。 
  
pattern可以是普通字符串,也可以是正则表达式,当查找的字符串包含正则表达式字符或者特</div>
                                </li>
                                <li><a href="/article/1735.htm"
                                       title="mybatis3入门学习笔记" target="_blank">mybatis3入门学习笔记</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a><a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a><a class="tag" taget="_blank" href="/search/jdbc/1.htm">jdbc</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86/1.htm">配置管理</a>
                                    <div>MyBatis 的前身就是iBatis,是一个数据持久层(ORM)框架。  MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis对JDBC进行了一次很浅的封装。 
  
以前也学过iBatis,因为MyBatis是iBatis的升级版本,最初以为改动应该不大,实际结果是MyBatis对配置文件进行了一些大的改动,使整个框架更加方便人性化。</div>
                                </li>
                                <li><a href="/article/1862.htm"
                                       title="Linux 命令神器:lsof 入门" target="_blank">Linux 命令神器:lsof 入门</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/lsof/1.htm">lsof</a>
                                    <div>       
lsof是系统管理/安全的尤伯工具。我大多数时候用它来从系统获得与网络连接相关的信息,但那只是这个强大而又鲜为人知的应用的第一步。将这个工具称之为lsof真实名副其实,因为它是指“列出打开文件(lists openfiles)”。而有一点要切记,在Unix中一切(包括网络套接口)都是文件。 
有趣的是,lsof也是有着最多</div>
                                </li>
                                <li><a href="/article/1989.htm"
                                       title="java实现两个大数相加,可能存在溢出。" target="_blank">java实现两个大数相加,可能存在溢出。</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java%E5%AE%9E%E7%8E%B0/1.htm">java实现</a>
                                    <div>
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class BigIntegerAddition {

	/**
	 * 题目:java实现两个大数相加,可能存在溢出。
	 * 如123456789 + 987654321</div>
                                </li>
                                <li><a href="/article/2116.htm"
                                       title="Kettle学习资料分享,附大神用Kettle的一套流程完成对整个数据库迁移方法" target="_blank">Kettle学习资料分享,附大神用Kettle的一套流程完成对整个数据库迁移方法</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/Kettle/1.htm">Kettle</a>
                                    <div>Kettle学习资料分享 
  
Kettle 3.2 使用说明书 
目录 
概述..........................................................................................................................................7 
1.Kettle 资源库管</div>
                                </li>
                                <li><a href="/article/2243.htm"
                                       title="[货币与金融]钢之炼金术士" target="_blank">[货币与金融]钢之炼金术士</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E9%87%91%E8%9E%8D/1.htm">金融</a>
                                    <div> 
 
       自古以来,都有一些人在从事炼金术的工作.........但是很少有成功的 
 
       那么随着人类在理论物理和工程物理上面取得的一些突破性进展...... 
 
       炼金术这个古老</div>
                                </li>
                                <li><a href="/article/2370.htm"
                                       title="Toast原来也可以多样化" target="_blank">Toast原来也可以多样化</a>
                                    <span class="text-muted">dai_lm</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/toast/1.htm">toast</a>
                                    <div>Style 1: 默认 
 

Toast def = Toast.makeText(this, "default", Toast.LENGTH_SHORT);
def.show();
 
Style 2: 顶部显示 
 

Toast top = Toast.makeText(this, "top", Toast.LENGTH_SHORT);
t</div>
                                </li>
                                <li><a href="/article/2497.htm"
                                       title="java数据计算的几种解决方法3" target="_blank">java数据计算的几种解决方法3</a>
                                    <span class="text-muted">datamachine</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a><a class="tag" taget="_blank" href="/search/r-langue/1.htm">r-langue</a><a class="tag" taget="_blank" href="/search/r/1.htm">r</a>
                                    <div>4、iBatis 
    简单敏捷因此强大的数据计算层。和Hibernate不同,它鼓励写SQL,所以学习成本最低。同时它用最小的代价实现了计算脚本和JAVA代码的解耦,只用20%的代价就实现了hibernate 80%的功能,没实现的20%是计算脚本和数据库的解耦。 
    复杂计算环境是它的弱项,比如:分布式计算、复杂计算、非数据</div>
                                </li>
                                <li><a href="/article/2624.htm"
                                       title="向网页中插入透明Flash的方法和技巧" target="_blank">向网页中插入透明Flash的方法和技巧</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/Flash/1.htm">Flash</a>
                                    <div>将 
Flash 作品插入网页的时候,我们有时候会需要将它设为透明,有时候我们需要在Flash的背面插入一些漂亮的图片,搭配出漂亮的效果……下面我们介绍一些将Flash插入网页中的一些透明的设置技巧。  
  一、Swf透明、无坐标控制  首先教大家最简单的插入Flash的代码,透明,无坐标控制:   注意wmode="transparent"是控制Flash是否透明</div>
                                </li>
                                <li><a href="/article/2751.htm"
                                       title="ios UICollectionView的使用" target="_blank">ios UICollectionView的使用</a>
                                    <span class="text-muted">dcj3sjt126com</span>

                                    <div>UICollectionView的使用有两种方法,一种是继承UICollectionViewController,这个Controller会自带一个UICollectionView;另外一种是作为一个视图放在普通的UIViewController里面。 
个人更喜欢第二种。下面采用第二种方式简单介绍一下UICollectionView的使用。 
1.UIViewController实现委托,代码如</div>
                                </li>
                                <li><a href="/article/2878.htm"
                                       title="Eos平台java公共逻辑" target="_blank">Eos平台java公共逻辑</a>
                                    <span class="text-muted">蕃薯耀</span>
<a class="tag" taget="_blank" href="/search/Eos%E5%B9%B3%E5%8F%B0java%E5%85%AC%E5%85%B1%E9%80%BB%E8%BE%91/1.htm">Eos平台java公共逻辑</a><a class="tag" taget="_blank" href="/search/Eos%E5%B9%B3%E5%8F%B0/1.htm">Eos平台</a><a class="tag" taget="_blank" href="/search/java%E5%85%AC%E5%85%B1%E9%80%BB%E8%BE%91/1.htm">java公共逻辑</a>
                                    <div> Eos平台java公共逻辑 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
蕃薯耀 2015年6月1日 17:20:4</div>
                                </li>
                                <li><a href="/article/3005.htm"
                                       title="SpringMVC4零配置--Web上下文配置【MvcConfig】" target="_blank">SpringMVC4零配置--Web上下文配置【MvcConfig】</a>
                                    <span class="text-muted">hanqunfeng</span>
<a class="tag" taget="_blank" href="/search/springmvc4/1.htm">springmvc4</a>
                                    <div>与SpringSecurity的配置类似,spring同样为我们提供了一个实现类WebMvcConfigurationSupport和一个注解@EnableWebMvc以帮助我们减少bean的声明。 
  
applicationContext-MvcConfig.xml 
<!-- 启用注解,并定义组件查找规则 ,mvc层只负责扫描@Controller -->
	<</div>
                                </li>
                                <li><a href="/article/3132.htm"
                                       title="解决ie和其他浏览器poi下载excel文件名乱码" target="_blank">解决ie和其他浏览器poi下载excel文件名乱码</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a>
                                    <div>   使用poi,做传统的excel导出,然后想在浏览器中,让用户选择另存为,保存用户下载的xls文件,这个时候,可能的是在ie下出现乱码(ie,9,10,11),但在firefox,chrome下没乱码, 
 
因此必须综合判断,编写一个工具类: 
 
 
     

/**
     * 
     * @Title: pro</div>
                                </li>
                                <li><a href="/article/3259.htm"
                                       title="挥洒泪水的青春" target="_blank">挥洒泪水的青春</a>
                                    <span class="text-muted">lampcy</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                                    <div>2015年2月28日,我辞职了,离开了相处一年的触控,转过身--挥洒掉泪水,毅然来到了兄弟连,背负着许多的不解、质疑——”你一个零基础、脑子又不聪明的人,还敢跨行业,选择Unity3D?“,”真是不自量力••••••“,”真是初生牛犊不怕虎•••••“,••••••我只是淡淡一笑,拎着行李----坐上了通向挥洒泪水的青春之地——兄弟连! 
这就是我青春的分割线,不后悔,只会去用泪水浇灌——已经来到</div>
                                </li>
                                <li><a href="/article/3386.htm"
                                       title="稳增长之中国股市两点意见-----严控做空,建立涨跌停版停牌重组机制" target="_blank">稳增长之中国股市两点意见-----严控做空,建立涨跌停版停牌重组机制</a>
                                    <span class="text-muted">nannan408</span>

                                    <div>   对于股市,我们国家的监管还是有点拼的,但始终拼不过飞流直下的恐慌,为什么呢? 
   笔者首先支持股市的监管。对于股市越管越荡的现象,笔者认为首先是做空力量超过了股市自身的升力,并且对于跌停停牌重组的快速反应还没建立好,上市公司对于股价下跌没有很好的利好支撑。 
   我们来看美国和香港是怎么应对股灾的。美国是靠禁止重要股票做空,在</div>
                                </li>
                                <li><a href="/article/3513.htm"
                                       title="动态设置iframe高度(iframe高度自适应)" target="_blank">动态设置iframe高度(iframe高度自适应)</a>
                                    <span class="text-muted">Rainbow702</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/iframe/1.htm">iframe</a><a class="tag" taget="_blank" href="/search/contentDocument/1.htm">contentDocument</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%BA%A6%E8%87%AA%E9%80%82%E5%BA%94/1.htm">高度自适应</a><a class="tag" taget="_blank" href="/search/%E5%B1%80%E9%83%A8%E5%88%B7%E6%96%B0/1.htm">局部刷新</a>
                                    <div>如果需要对画面中的部分区域作局部刷新,大家可能都会想到使用ajax。 
但有些情况下,须使用在页面中嵌入一个iframe来作局部刷新。 
对于使用iframe的情况,发现有一个问题,就是iframe中的页面的高度可能会很高,但是外面页面并不会被iframe内部页面给撑开,如下面的结构: 
<div id="content">
    <div id=&quo</div>
                                </li>
                                <li><a href="/article/3640.htm"
                                       title="用Rapael做图表" target="_blank">用Rapael做图表</a>
                                    <span class="text-muted">tntxia</span>
<a class="tag" taget="_blank" href="/search/rap/1.htm">rap</a>
                                    <div>function drawReport(paper,attr,data){ 
     
    var width = attr.width; 
    var height = attr.height; 
     
    var max = 0; 
  &nbs</div>
                                </li>
                                <li><a href="/article/3767.htm"
                                       title="HTML5 bootstrap2网页兼容(支持IE10以下)" target="_blank">HTML5 bootstrap2网页兼容(支持IE10以下)</a>
                                    <span class="text-muted">xiaoluode</span>
<a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/bootstrap/1.htm">bootstrap</a>
                                    <div><!DOCTYPE html>
<html>
<head lang="zh-CN">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge"></div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>