乘法器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/1950233451282100224.htm"
                           title="python 读excel每行替换_Python脚本操作Excel实现批量替换功能" target="_blank">python 读excel每行替换_Python脚本操作Excel实现批量替换功能</a>
                        <span class="text-muted">weixin_39646695</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%AF%BBexcel%E6%AF%8F%E8%A1%8C%E6%9B%BF%E6%8D%A2/1.htm">读excel每行替换</a>
                        <div>Python脚本操作Excel实现批量替换功能大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换。使用的工具Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet,Cell这三个最根本的元素~明确需求原始excel如下我们的目标是把下面excel工作表的sheet1表页A列的内容“替换我吧”批量替换为B列的“我用来替换的</div>
                    </li>
                    <li><a href="/article/1950232820773351424.htm"
                           title="移动端城市区县二级联动选择功能实现包" target="_blank">移动端城市区县二级联动选择功能实现包</a>
                        <span class="text-muted">good2know</span>

                        <div>本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery</div>
                    </li>
                    <li><a href="/article/1950232316408295424.htm"
                           title="9、汇编语言编程入门:从环境搭建到简单程序实现" target="_blank">9、汇编语言编程入门:从环境搭建到简单程序实现</a>
                        <span class="text-muted">神经网络酱</span>
<a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80/1.htm">汇编语言</a><a class="tag" taget="_blank" href="/search/MEPIS/1.htm">MEPIS</a><a class="tag" taget="_blank" href="/search/GNU%E5%B7%A5%E5%85%B7%E9%93%BE/1.htm">GNU工具链</a>
                        <div>汇编语言编程入门:从环境搭建到简单程序实现1.数据存储介质问题解决在处理数据存储时,若要使用MEPIS系统,需确保有其可访问的存储介质。目前,MEPIS无法向采用NTFS格式(常用于Windows2000和XP工作站)的硬盘写入数据。不过,若硬盘采用FAT32格式,MEPIS就能进行写入操作。此外,MEPIS还能将文件写入软盘和大多数USB闪存驱动器。若工作站连接到局域网,还可通过FTP协议或挂载</div>
                    </li>
                    <li><a href="/article/1950231513744338944.htm"
                           title="IK分词" target="_blank">IK分词</a>
                        <span class="text-muted">初心myp</span>

                        <div>实现简单的分词功能,智能化分词添加依赖配置:4.10.4org.apache.lucenelucene-core${lucene.version}org.apache.lucenelucene-analyzers-common${lucene.version}org.apache.lucenelucene-queryparser${lucene.version}org.apache.lucenel</div>
                    </li>
                    <li><a href="/article/1950228031117258752.htm"
                           title="深入解析JVM工作原理:从字节码到机器指令的全过程" target="_blank">深入解析JVM工作原理:从字节码到机器指令的全过程</a>
                        <span class="text-muted"></span>

                        <div>一、JVM概述Java虚拟机(JVM)是Java平台的核心组件,它实现了Java"一次编写,到处运行"的理念。JVM是一个抽象的计算机器,它有自己的指令集和运行时内存管理机制。JVM的主要职责:加载:读取.class文件并验证其正确性存储:管理内存分配和垃圾回收执行:解释或编译字节码为机器指令安全:提供沙箱环境限制恶意代码二、JVM架构详解JVM由三个主要子系统组成:1.类加载子系统类加载过程分为</div>
                    </li>
                    <li><a href="/article/1950228031524106240.htm"
                           title="Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程" target="_blank">Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程</a>
                        <span class="text-muted">倾听铃的声</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</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/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第二篇:DispatcherServlet处理请求的过程的源码解析。@pdaiSpring进阶-SpringMVC实现原理之DispatcherServlet处理请求的</div>
                    </li>
                    <li><a href="/article/1950226517397139456.htm"
                           title="JVM 内存模型深度解析:原子性、可见性与有序性的实现" target="_blank">JVM 内存模型深度解析:原子性、可见性与有序性的实现</a>
                        <span class="text-muted">练习时长两年半的程序员小胡</span>
<a class="tag" taget="_blank" href="/search/JVM/1.htm">JVM</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%89%96%E6%9E%90%EF%BC%9A%E4%BB%8E%E9%9D%A2%E8%AF%95%E8%80%83%E7%82%B9%E5%88%B0%E7%94%9F%E4%BA%A7%E5%AE%9E%E8%B7%B5/1.htm">深度剖析:从面试考点到生产实践</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B/1.htm">内存模型</a>
                        <div>在了解了JVM的基础架构和类加载机制后,我们需要进一步探索Java程序在多线程环境下的内存交互规则。JVM内存模型(JavaMemoryModel,JMM)定义了线程和主内存之间的抽象关系,它通过规范共享变量的访问方式,解决了多线程并发时的数据一致性问题。本文将从内存模型的核心目标出发,详解原子性、可见性、有序性的实现机制,以及volatile、synchronized等关键字在其中的作用。一、J</div>
                    </li>
                    <li><a href="/article/1950226390070652928.htm"
                           title="Flowable 高级扩展:自定义元素与性能优化实战" target="_blank">Flowable 高级扩展:自定义元素与性能优化实战</a>
                        <span class="text-muted">练习时长两年半的程序员小胡</span>
<a class="tag" taget="_blank" href="/search/Flowable/1.htm">Flowable</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/1.htm">流程引擎实战指南</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%9B%BE/1.htm">流程图</a><a class="tag" taget="_blank" href="/search/flowable/1.htm">flowable</a><a class="tag" taget="_blank" href="/search/BPMN/1.htm">BPMN</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E/1.htm">流程引擎</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定</div>
                    </li>
                    <li><a href="/article/1950225785054883840.htm"
                           title="Java | 多线程经典问题 - 售票" target="_blank">Java | 多线程经典问题 - 售票</a>
                        <span class="text-muted">Ada54</span>

                        <div>一、售票需求1)同一个票池2)多个窗口卖票,不能出售同一张票二、售票问题代码实现(线程与进程小总结,请戳:Java|线程和进程,创建线程)step1:定义SaleWindow类实现Runnable接口,覆盖run方法step2:实例化SaleWindow对象,创建Thread对象,将SaleWindow作为参数传给Thread类的构造函数,然后通过Thread.start()方法启动线程step3</div>
                    </li>
                    <li><a href="/article/1950225255079407616.htm"
                           title="企业级区块链平台Hyperchain核心原理剖析" target="_blank">企业级区块链平台Hyperchain核心原理剖析</a>
                        <span class="text-muted">boyedu</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%8C%BA%E5%9D%97%E9%93%BE%E5%B9%B3%E5%8F%B0/1.htm">企业级区块链平台</a><a class="tag" taget="_blank" href="/search/Hyperchain/1.htm">Hyperchain</a>
                        <div>Hyperchain作为国产自主可控的企业级联盟区块链平台,其核心原理围绕高性能共识、隐私保护、智能合约引擎及可扩展架构展开,通过多模块协同实现企业级区块链网络的高效部署与安全运行。以下从核心架构、关键技术、性能优化、安全机制、应用场景五个维度展开剖析:一、核心架构:分层解耦与模块化设计Hyperchain采用分层架构,将区块链功能解耦为独立模块,支持灵活组合与扩展:P2P网络层由验证节点(VP)</div>
                    </li>
                    <li><a href="/article/1950224745093984256.htm"
                           title="在线人数统计业务设计(场景八股文)" target="_blank">在线人数统计业务设计(场景八股文)</a>
                        <span class="text-muted"></span>

                        <div>业务问题在当经的网站中,在线人数的实时统计已经是一个必不可少的模块了,并且该统计功能最好能够按不同的时间间隔做的统计,现在需要你设计一个在线人数统计的模块,你应该怎么进行设计的呢?背景一个网校下会有多个学员。目前平台大概有十个,平台对应的网校大概五十几个,平均一个网校会有5w个用户,预计总人数为200w,最该学员的在线人数在10w左右。设计思路最开始的时候,想到的就是使用mysql直接实现,但是明</div>
                    </li>
                    <li><a href="/article/1950224616647618560.htm"
                           title="JAVA接口机结构解析" target="_blank">JAVA接口机结构解析</a>
                        <span class="text-muted">秃狼</span>
<a class="tag" taget="_blank" href="/search/SpringBoot/1.htm">SpringBoot</a><a class="tag" taget="_blank" href="/search/%E5%85%AB%E8%82%A1%E6%96%87/1.htm">八股文</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>什么是接口机在Java项目中,接口机通常指用于与外部系统进行数据交互的中间层,负责处理请求和响应的转换、协议适配、数据格式转换等任务。接口机的结构我们的接口机的结构分为两个大部分,外部接口机和内部接口机,在业务的调度上也是通过mq来实现的,只要的目的就是为了解耦合和做差异化。在接口机中主要的方法就是定时任务,消息的发送和消费,其他平台调用接口机只能提供外部接口机的方法进行调用,外部接口机可以提供消</div>
                    </li>
                    <li><a href="/article/1950224618606358528.htm"
                           title="Aop +反射 实现方法版本动态切换" target="_blank">Aop +反射 实现方法版本动态切换</a>
                        <span class="text-muted"></span>

                        <div>需求分析在做技术选型的时候一直存在着两个声音,mongo作为数据库比较mysql好,mysql做为该数据比mongo好。当然不同数据库都有有着自己的优势,我们在做技术选型的时候无非就是做到对数据库的扬长避短。mysql最大的优势就是支持事务,事务的五大特性保证的业务可靠性,随之而来的就是事务会产生的问题:脏读、幻读、不可重复度,当然我们也会使用不同的隔离级别来解决。(最典型的业务问题:银行存取钱)</div>
                    </li>
                    <li><a href="/article/1950224490331959296.htm"
                           title="通义万相2.2:开启高清视频生成新纪元" target="_blank">通义万相2.2:开启高清视频生成新纪元</a>
                        <span class="text-muted">Liudef06小白</span>
<a class="tag" taget="_blank" href="/search/%E7%89%B9%E6%AE%8A%E4%B8%93%E6%A0%8F/1.htm">特殊专栏</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E9%80%9A%E4%B9%89%E4%B8%87%E7%9B%B82.2/1.htm">通义万相2.2</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E7%94%9F%E8%A7%86%E9%A2%91/1.htm">图生视频</a>
                        <div>通义万相2.2:开启高清视频生成新纪元2025年7月28日,中国AI领域迎来里程碑时刻——通义万相团队正式开源其革命性视频生成模型Wan2.2的核心权重,这标志着开源社区首次获得支持720P高清视频生成的先进模型架构。一、架构革新:混合专家系统1.1MoE视频扩散架构通义万相2.2首次将混合专家(MoE)架构引入视频扩散模型,通过双专家系统实现计算效率与模型容量的平衡:classMoEVideoD</div>
                    </li>
                    <li><a href="/article/1950224132230672384.htm"
                           title="氧惠官方邀请码333777,氧惠邀请码怎么获得?氧惠邀请码有什么套路?" target="_blank">氧惠官方邀请码333777,氧惠邀请码怎么获得?氧惠邀请码有什么套路?</a>
                        <span class="text-muted">知行导师</span>

                        <div>问:氧惠邀请码怎么获得?答:氧惠官方邀请码333777返点高佣金高真的高。问:氧惠邀请码有什么套路?答:氧惠官方邀请码333777返点高佣金高真的高。氧惠APP汇聚各大主流电商和生活服务平台优惠,展示全网全品类商品,满足网购爱好者对品质好货与极致性价比的追求,并同时享受大平台购物权益保障。满足用户日常吃喝玩乐衣食住行的聚合APP,独特的商业模式,响应国家号召,为实现全民共富而努力奋斗。氧惠邀请码3</div>
                    </li>
                    <li><a href="/article/1950223497875746816.htm"
                           title="最新阿里四面面试真题46道:面试技巧+核心问题+面试心得" target="_blank">最新阿里四面面试真题46道:面试技巧+核心问题+面试心得</a>
                        <span class="text-muted">风平浪静如码</span>

                        <div>前言做技术的有一种资历,叫做通过了阿里的面试。这些阿里Java相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐。希望对大家帮助,祝面试成功,有个更好的职业规划。一,阿里常见技术面1、微信红包怎么实现。2、海量数据分析。3、测试职位问的线程安全和非线程安全。4、HTTP2.0、thrift。5、面试电话沟通可能先让自我介绍。6、分布式事务一致性。7、ni</div>
                    </li>
                    <li><a href="/article/1950222723200380928.htm"
                           title="LVS+Keepalived实现高可用和负载均衡" target="_blank">LVS+Keepalived实现高可用和负载均衡</a>
                        <span class="text-muted">2401_84412895</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/lvs/1.htm">lvs</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>2、开启网卡子接口配置VIP[root@a~]#cd/etc/sysconfig/network-scripts/[root@anetwork-scripts]#cp-aifcfg-ens32ifcfg-ens32:0[root@anetwork-scripts]#catifcfg-ens32:0BOOTPROTO=staticDEVICE=ens32:0ONBOOT=yesIPADDR=10.1</div>
                    </li>
                    <li><a href="/article/1950222345163567104.htm"
                           title="深入理解汇编语言子程序设计与系统调用" target="_blank">深入理解汇编语言子程序设计与系统调用</a>
                        <span class="text-muted">网安spinage</span>
<a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80/1.htm">汇编语言</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/%E6%B1%87%E7%BC%96/1.htm">汇编</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo</div>
                    </li>
                    <li><a href="/article/1950222222803136512.htm"
                           title="大胆的宣传自己" target="_blank">大胆的宣传自己</a>
                        <span class="text-muted">工匠良辰</span>

                        <div>#大胆的宣传自己原创:辉哥奇谭辉哥奇谭今天有朋友问:辉哥,发现你最近很多次宣传「知识星球」…我回答:对我自己用心做的东西有信心。我的观点是:我们每个人要把自己当成一件产品,精心的打磨,大胆的推销。如果我们一辈子都不敢面对自己这件产品,也不好意思去推销,怎样才能实现自己内心的梦想?怎样才能获得自由?怎样才能过上自己想过的生活?人生在世也许就是七八十年光景,我们最终都会败在「时光」脚下。每个人来到这世</div>
                    </li>
                    <li><a href="/article/1950220180864954368.htm"
                           title="京东家电年销售额是去年的1300%,主要来自于他...." target="_blank">京东家电年销售额是去年的1300%,主要来自于他....</a>
                        <span class="text-muted">Shanshan小课堂</span>

                        <div>经过大半个月角逐纠缠,时间终于来到6月18日,618全球年中购物节迎来最高潮。作为国内最大的家电零售平台,京东家电从18日0点开始,便开启了飞速狂奔的模式,仅8分钟销售额就突破20亿元!展现出强劲的增长势头与家电主场的王者霸气的同时,也让各家电品牌实现了爆发式增长,美的、海尔、格力、奥克斯均在3分钟内突破1亿元大关。在今年的618中,除了消费者已经熟悉的网购形式外,线上线下联动的融合模式、社交电商</div>
                    </li>
                    <li><a href="/article/1950219953118441472.htm"
                           title="编程算法:技术创新的引擎与业务增长的核心驱动力" target="_blank">编程算法:技术创新的引擎与业务增长的核心驱动力</a>
                        <span class="text-muted"></span>

                        <div>在数字经济时代,算法已成为推动技术创新与业务增长的隐形引擎。从存内计算突破冯·诺依曼瓶颈,到动态规划优化万亿级金融交易,编程算法正在重塑产业竞争格局。一、存内计算:突破冯·诺依曼瓶颈的算法革命1.1存内计算的基本原理传统计算架构中90%的能耗消耗在数据搬运上。存内计算(Processing-in-Memory)通过直接在存储单元执行计算,实现能效10-100倍提升:#传统计算vs存内计算能耗模型i</div>
                    </li>
                    <li><a href="/article/1950218946015719424.htm"
                           title="图论算法经典题目解析:DFS、BFS与拓扑排序实战" target="_blank">图论算法经典题目解析:DFS、BFS与拓扑排序实战</a>
                        <span class="text-muted">周童學</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</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>图论算法经典题目解析:DFS、BFS与拓扑排序实战图论问题是算法面试中的高频考点,本博客将通过四道LeetCode经典题目(均来自"Top100Liked"题库),深入讲解图论的核心算法思想和实现技巧。涵盖DFS、BFS、拓扑排序和前缀树等知识点,每道题配有Java实现和易错点分析。1.岛屿数量(DFS遍历)问题描述给定一个由'1'(陆地)和'0'(水)组成的二维网格,计算岛屿的数量。岛屿由水平或</div>
                    </li>
                    <li><a href="/article/1950218819616174080.htm"
                           title="基于redis的Zset实现作者的轻量级排名" target="_blank">基于redis的Zset实现作者的轻量级排名</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/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>基于redis的Zset实现轻量级作者排名系统在今天的技术架构中,Redis是一种广泛使用的内存数据存储系统,尤其在需要高效检索和排序的场景中表现优异。在本篇博客中,我们将深入探讨如何使用Redis的有序集合(ZSet)构建一个高效的笔记排行榜系统,并提供相关代码示例和详细的解析。1.功能背景与需求假设我们有一个笔记分享平台,用户可以发布各种笔记,系统需要根据用户发布的笔记数量来生成一个实时更新的</div>
                    </li>
                    <li><a href="/article/1950218817753903104.htm"
                           title="【项目实战】 容错机制与故障恢复:保障系统连续性的核心体系" target="_blank">【项目实战】 容错机制与故障恢复:保障系统连续性的核心体系</a>
                        <span class="text-muted">本本本添哥</span>
<a class="tag" taget="_blank" href="/search/004/1.htm">004</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E7%A0%94%E6%95%88%E4%B8%8EDevOps%E8%BF%90%E7%BB%B4%E5%B7%A5%E5%85%B7%E9%93%BE/1.htm">研效与DevOps运维工具链</a><a class="tag" taget="_blank" href="/search/002/1.htm">002</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91%E8%83%BD%E5%8A%9B/1.htm">进阶开发能力</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>在分布式系统中,硬件故障、网络波动、软件异常等问题难以避免。容错机制与故障恢复的核心目标是:通过主动检测故障、自动隔离风险、快速转移负载、重建数据一致性,最大限度减少故障对业务的影响,保障系统“持续可用”与“数据不丢失”。以下从核心机制、实现方式、典型案例等维度展开说明。一、故障检测:及时发现异常节点故障检测是容错的第一步,需通过多维度手段实时感知系统组件状态,确保故障被快速识别。1.健康检查与心</div>
                    </li>
                    <li><a href="/article/1950218314064130048.htm"
                           title="Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)" target="_blank">Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)</a>
                        <span class="text-muted">bug菌¹</span>
<a class="tag" taget="_blank" href="/search/Java%E5%AE%9E%E6%88%98%28%E8%BF%9B%E9%98%B6%E7%89%88%29/1.htm">Java实战(进阶版)</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Java%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8/1.htm">Java零基础入门</a><a class="tag" taget="_blank" href="/search/Java%E5%B9%B6%E5%8F%91/1.htm">Java并发</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%AF%87/1.htm">多线程篇</a>
                        <div>本文收录于「Java进阶实战」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows10+IntelliJIDEA2021.3.2+Jdk1.8本文目录前言摘要正文何为线程池?为什么需要线程池?线程池的好处线程池使用场景如何创建线程池?线程池的常见配置源码解析案例分享案例代码演示案例运行</div>
                    </li>
                    <li><a href="/article/1950217936077647872.htm"
                           title="Java 队列" target="_blank">Java 队列</a>
                        <span class="text-muted">tryxr</span>
<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><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a>
                        <div>队列一般用什么哪种结构实现队列的特性数据入队列时一定是从尾部插入吗数据出队列时一定是从头部删除吗队列的基本运算有什么队列支持随机访问吗队列的英文表示什么是队列队列从哪进、从哪出队列的进出顺序队列是用哪种结构实现的Queue和Deque有什么区别Queue接口的方法Queue中的add与offer的区别offer、poll、peek的模拟实现如何利用链表实现队列如何利用顺序表实现队列什么叫做双端队列</div>
                    </li>
                    <li><a href="/article/1950216800016855040.htm"
                           title="Effective C++ 条款10:令operator=返回一个reference to *this" target="_blank">Effective C++ 条款10:令operator=返回一个reference to *this</a>
                        <span class="text-muted">君鼎</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a>
                        <div>EffectiveC++条款10:令operator=返回一个referenceto*this核心思想:赋值操作符(operator=)应始终返回当前对象的引用(*this),以实现连锁赋值并保持与内置类型一致的语义。⚠️1.问题场景:违反连锁赋值语义classWidget{public:voidoperator=(constWidget&rhs){//错误:返回voidvalue=rhs.val</div>
                    </li>
                    <li><a href="/article/1950215984249892864.htm"
                           title="打造自己的梦想生态系统" target="_blank">打造自己的梦想生态系统</a>
                        <span class="text-muted">轻风style</span>

                        <div>今天听了第5周5.1的梦想系统和随堂练习:梦想仓库与八大关注表。参照老师给出的例子,列出了八大关注对应的自己的梦想。有些写的时候内心都在怀疑,但因为老师有说到,要没有分别心的去列出,不管是近的,远的,小的,大的,自己觉得可以实现的,或者觉得根本不可能实现的,都统统的列出来。就像音频中提到的,林语堂说过的话,梦想无论怎样模糊,总潜伏在我们心底,使我们的心境永远得不到宁静,直到这些梦想成为事实才止;像</div>
                    </li>
                    <li><a href="/article/1950215918101524480.htm"
                           title="第二十二天(数据结构,无头节点的单项链表)" target="_blank">第二十二天(数据结构,无头节点的单项链表)</a>
                        <span class="text-muted">肉夹馍不加青椒</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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>线性表:一个线性表里面可以是任意的数据元素,但是同一个线性表里面数据应该是同类型的1存在一个/唯一被称为第一个节点的节点2存在一个/唯一被称为最后一个节点的节点3除了第一个以外,每一个元素都有一个前驱节点4除了最后一个,每一个元素都有一个后继节点满足以上性质,这个表就被称为线性表数组就是一个线性表想实现线性表的保存,我们需要考虑下面的事情1元素要保存2元素与元素之间的序偶关系谁是前面的谁是后面的我</div>
                    </li>
                    <li><a href="/article/1950213272120651776.htm"
                           title="Redis + Caffeine 实现高效的两级缓存架构" target="_blank">Redis + Caffeine 实现高效的两级缓存架构</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/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>Redis+Caffeine实现高效的两级缓存架构引言在现代高并发系统中,缓存是提升系统性能的关键组件之一。传统的单一缓存方案往往难以同时满足高性能和高可用性的需求。本文将介绍如何结合Redis和Caffeine构建一个高效的两级缓存系统,并通过三个版本的演进展示如何逐步优化代码结构。项目源代码:github地址、gitee地址两级缓存架构概述两级缓存通常由本地缓存(如Caffeine)和分布式缓</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>