【引用】Oracle全文检索方面的研究(全10)

4、操作实例

4.1 单列与多列支持中文检索

Create table mytable1(id number primary key, doc1 varchar2(400),doc2 clob,doc3 clob);

 

Insert into mytable1 values(1,'今天的天气很不错,我想去逛街','今天是星期天,不用上班。天天好心情','明天是星期一,要上班。心情不好');

Insert into mytable1 values(2,'天是蓝色的,万里无云。天气非常好。','天是多云的,天气看起来要下雨了。不适宜出门','天正在下雨,大雨倾盆。不能出门。');

Insert into mytable1 values(3,'this is a text','this is a word','this is a pdf');

Commit;

 

--先删除引用

begin

ctx_ddl.drop_preference('my_chinese_vgram_lexer');

ctx_ddl.drop_preference('my_chinese_lexer');

end;

 

--支持中文分词

Begin

ctx_ddl.create_preference('my_chinese_vgram_lexer', 'chinese_vgram_lexer');

ctx_ddl.create_preference('my_chinese_lexer', 'chinese_lexer');

End;

 

--先删除引用

begin

ctx_ddl.drop_preference('my_multi');

end;

--多列查询,如果仅仅是单列,则不用设置这个类型

Begin

Ctx_ddl.create_preference('my_multi', 'multi_column_datastore');

Ctx_ddl.set_attribute('my_multi', 'columns', 'doc1, doc2, doc3');

End;

 

 

drop index myindex;

 

--单列查询,支持中文的索引建立

Create index myindex on mytable(docs)

indextype is ctxsys.context

parameters ('datastore ctxsys.default_datastore lexer foo.my_chinese_lexer')

 

drop index idx_mytable;

--多列查询,支持中文的索引的建立

Create index idx_mytable on mytable1(doc1)indextype is ctxsys.context

parameters('datastore my_multi lexer foo.my_chinese_lexer');

 

--chinese_lexer词法分析器下的结果,三列都可以查询

Select * from mytable1 where contains(doc1, '今天')>0;  --检索到第一条数据

Select * from mytable1 where contains(doc1, '不适宜')>0; --检索到第二条数据

Select * from mytable1 where contains(doc1, '适宜')>0; --检索不到数据,他的分词技术太简单,将‘不适宜’作为一个词了

Select * from mytable1 where contains(doc1, '出门')>0;  --检索到第二条数据

Select * from mytable1 where contains(doc1, 'this is a word')>0;  --检索到第三条数据,中英文适用

 

 

--chinese_vgram_lexer词法分析器下的结果,

--chinese_vgram_lexer词法分析器虽然没那么智能,但检索结果往往比较符合我们的要求,

--如:“不适宜”这个词语应该拆分为“不适宜”和“适宜”两个词语,而不是单独的作为一个词语,

--chinese_vgram_lexer可以查询的到,而chinese_lexer不可以。

drop index idx_mytable;

--多列查询,支持中文的索引的建立

Create index idx_mytable on mytable1(doc1)indextype is ctxsys.context

parameters('datastore my_multi lexer foo.my_chinese_vgram_lexer');

 

--chinese_vgram_lexer词法分析器下的结果,三列都可以查询

Select * from mytable1 where contains(doc1, '今天')>0;  --检索到第一条数据

Select * from mytable1 where contains(doc1, '不适宜')>0; --检索到第二条数据

Select * from mytable1 where contains(doc1, '适宜')>0; --检索到第二条数据,这个分词虽然效率低点,但检索结果还可以

Select * from mytable1 where contains(doc1, '出门')>0;  --检索到第二条数据

Select * from mytable1 where contains(doc1, 'this is a word')>0;  --检索到第三条数据,中英文适用

 

 

--对于多列查询,更新列操作

--只更新从表,看是否能查到更新的信息

Update mytable1 set doc2='adladlhadad this datastore when your text is stored test' where id=2;

 

--同步更新索引

Begin

Ctx_ddl.sync_index('idx_mytable');

End;

--可见,虽然你检索是三个列,但是你更新的不是索引对应的那列(doc1),同步了索引也是不起作用的

Select * from mytable1 where contains(doc1,'adladlhadad')>0; --没有记录

 

--更新与doc1列原来相同内容(实际内容不变,只有操作而已)

Update mytable1 set doc1='天是蓝色的,万里无云。天气非常好。' where id=2;

 

--再同步更新索引

Begin

Ctx_ddl.sync_index('idx_mytable');

End;

 

--再查询一次

Select * from mytable1 where contains(doc1,'adladlhadad')>0; --有结果,可见,对于其他查询的列(非索引对应的列)的更新操作,可以连同索引对应的列一起更新,只是不改变索引的内容即可做到同步索引就可以出现效果了。

4.2 本地磁盘检索

create table mytable3(id number primary key, docs varchar2(2000));

 

insert into mytable3 values(111555,'1.txt');

 

insert into mytable3 values(111556,'1.doc');

 

insert into mytable3 values(111557,'1.xls');

 

insert into mytable3 values(111558,'1.pdf');

 

insert into mytable3 values(111559,'2.txt');

 

insert into mytable3 values(111560,'2.doc');

 

insert into mytable3 values(111561,'2.xls');

 

insert into mytable3 values(111562,'2.pdf');

 

commit;

 

 

--先删除引用

begin

ctx_ddl.drop_preference('COMMON_DIR');

end;

 

--建立 file datastore

begin

ctx_ddl.create_preference('COMMON_DIR','FILE_DATASTORE');

ctx_ddl.set_attribute('COMMON_DIR','PATH','D:\search');

end;

 

--先删除索引

drop index myindex3;

--建立索引,8个文件,内容简单,耗时1.5s

create index myindex3 on mytable3(docs) indextype is ctxsys.context parameters ('datastore COMMON_DIR lexer foo.my_chinese_lexer');

 

select * from mytable3 where contains(docs,'text')>0; --查询,支持txt

select * from mytable3 where contains(docs,'pdf')>0; --查询,支持pdf

select * from mytable3 where contains(docs,'excel')>0; --查询,支持excel

select * from mytable3 where contains(docs,'word')>0; --查询,支持doc

select * from mytable3 where contains(docs,'文本')>0; --查询,支持中文

select * from mytable3 where contains(docs,'文档')>0; --查询,支持中文

select * from mytable3 where contains(docs,'阅读')>0; --查询,支持中文pdf

select * from mytable3 where contains(docs,'这是Excel')>0; --查询,支持中文

 

--暂时测试支持doc,txt,xls,pdf

 

--更新了文件内容2.txt

select * from mytable3 where contains(docs,'这个测试用的文本')>0; --查询无更新好数据

--不同步索引,无效

--同步更新索引

Begin

Ctx_ddl.sync_index('myindex3');

End;

--再次查询

select * from mytable3 where contains(docs,'测试')>0; --还是无效

 

--用相同的值取代2.txt然后再同步索引

Update mytable3 set docs='2.txt' where id=111559;

 

--再同步索引

--同步更新索引

Begin

Ctx_ddl.sync_index('myindex3');

End;

--再次查询

select * from mytable3 where contains(docs,'测试')>0; --结果出现,可见,单更新文件内容,同步索引是无效的,索引认的是数据库纪录,数据库纪录改变,索引才会更新

 

--新增加文件,结果雷同。关键是要更新数据库纪录,即使改了文件内容,也要用相同的值update数据库纪录一次。

4.3 检索结果高亮显示

Create table my_high (id number primary key, docs varchar2(1000));

insert into my_high values (1, 'this is a oracle text example. And oracle is the key word.');

insert into my_high values (2, 'oracle textthis is a oracle ctx_doc hightlight example.');

commit;

/

--建立索引

create index ind_m_high on my_high(docs) indextype is ctxsys.context;

--返回结果的偏移量

set serverout on

declare

v_restab ctx_doc.highlight_tab;

begin

ctx_doc.highlight('ind_m_high', 1, 'oracle', v_restab, true);

for i in 1..v_restab.count loop

dbms_output.put_line('begin with: ' || v_restab(i).offset || ' length: ' || v_restab(i).length);

end loop;

end;

/

begin with: 11 length: 6

begin with: 36 length: 6

 

ctx_doc.highlight参数说明:

ctx_doc.highlight(索引,数据库中的ID, 搜索关键字, 指明返回的偏移量是针对纯文本格式还是针对HTML格式, true);

true or false: 对比PLAINTEXT设置为FALSE和TRUE的区别可以发现,对于HTML所有的标识部分,Oracle统一认为长度等于2。

对于True: oracle textthis is a oracle ctx_doc hightlight example.,认为是2个长度,false的话就全部纪录,认为总共有7个字符长度。</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">                要在sqlplus执行</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">4.4 具体测试</p> <p style="text-indent:2em;">                </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">4.4.1 基本的全文检索</p> <p style="text-indent:2em;">--先删除引用</p> <p style="text-indent:2em;">begin</p> <p style="text-indent:2em;">ctx_ddl.drop_preference('my_chinese_vgram_lexer');</p> <p style="text-indent:2em;">ctx_ddl.drop_preference('my_chinese_lexer');</p> <p style="text-indent:2em;">end;</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--支持中文分词</p> <p style="text-indent:2em;">Begin</p> <p style="text-indent:2em;">ctx_ddl.create_preference('my_chinese_vgram_lexer', 'chinese_vgram_lexer');</p> <p style="text-indent:2em;">ctx_ddl.create_preference('my_chinese_lexer', 'chinese_lexer');</p> <p style="text-indent:2em;">End;</p> <p style="text-indent:2em;">Begin</p> <p style="text-indent:2em;">Ctx_ddl.create_preference('F_DOCNEWS_Preference', 'multi_column_datastore');</p> <p style="text-indent:2em;">Ctx_ddl.set_attribute('F_DOCNEWS_Preference', 'columns', 'F_CONTENT,F_DESCRIPTION,F_TITLE');</p> <p style="text-indent:2em;">End;</p> <p style="text-indent:2em;">drop index f_content_index;</p> <p style="text-indent:2em;">Create index f_content_index on T_DOCNEWS(F_CONTENT)</p> <p style="text-indent:2em;">indextype is ctxsys.context </p> <p style="text-indent:2em;">parameters('datastore F_DOCNEWS_Preference lexer foo.my_chinese_lexer');</p> <p style="text-indent:2em;">Select * from T_DOCNEWS where contains(F_CONTENT,'菲律宾')>0; --有结果,</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">4.4.2 带动态摘要的高亮全文检索</p> <p style="text-indent:2em;">--先删除引用</p> <p style="text-indent:2em;">begin</p> <p style="text-indent:2em;">ctx_ddl.drop_preference('my_chinese_vgram_lexer');</p> <p style="text-indent:2em;">ctx_ddl.drop_preference('my_chinese_lexer');</p> <p style="text-indent:2em;">end;</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--支持中文分词</p> <p style="text-indent:2em;">Begin</p> <p style="text-indent:2em;">ctx_ddl.create_preference('my_chinese_vgram_lexer', 'chinese_vgram_lexer');</p> <p style="text-indent:2em;">ctx_ddl.create_preference('my_chinese_lexer', 'chinese_lexer');</p> <p style="text-indent:2em;">End;</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--先删除索引</p> <p style="text-indent:2em;">drop index f_content_index;</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--新建索引,默认属性,无过滤器,支持中文高级分词</p> <p style="text-indent:2em;">Create index f_content_index on T_DOCNEWS(F_CONTENT)</p> <p style="text-indent:2em;">indextype is ctxsys.context </p> <p style="text-indent:2em;">parameters('datastore ctxsys.default_datastore filter ctxsys.null_filter section group </p> <p style="text-indent:2em;">ctxsys.html_section_group lexer foo.my_chinese_lexer');</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">?--以下开始准备建立存储过程,先定义数组类型</p> <p style="text-indent:2em;">CREATE or replace TYPE f_content_arr AS OBJECT( </p> <p style="text-indent:2em;">id NUMBER , </p> <p style="text-indent:2em;">url varchar2(255),</p> <p style="text-indent:2em;">title varchar2(255),</p> <p style="text-indent:2em;">abstractcontent varchar2(255)</p> <p style="text-indent:2em;">); </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--定义数组变量</p> <p style="text-indent:2em;">CREATE or replace type f_content_arr_re as table of f_content_arr; </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--定义存储过程</p> <p style="text-indent:2em;">create or replace procedure f_content_pro (keyword in varchar,v_cfjg out f_content_arr_re) is </p> <p style="text-indent:2em;">v_restab ctx_doc.highlight_tab;</p> <p style="text-indent:2em;">begin </p> <p style="text-indent:2em;">DECLARE </p> <p style="text-indent:2em;">i number; </p> <p style="text-indent:2em;">s clob;</p> <p style="text-indent:2em;">startnum number;</p> <p style="text-indent:2em;">endnum number;</p> <p style="text-indent:2em;">v_res_fun T_DOCNEWS%rowTYPE; </p> <p style="text-indent:2em;">cursor c_fun is </p> <p style="text-indent:2em;">select *  from T_DOCNEWS where contains(F_CONTENT,keyword)>0; </p> <p style="text-indent:2em;">BEGIN </p> <p style="text-indent:2em;">i := 0; </p> <p style="text-indent:2em;">v_cfjg := f_content_arr_re(); </p> <p style="text-indent:2em;">open c_fun; </p> <p style="text-indent:2em;">LOOP </p> <p style="text-indent:2em;">fetch c_fun </p> <p style="text-indent:2em;">into v_res_fun; </p> <p style="text-indent:2em;">EXIT WHEN c_fun%NOTFOUND; </p> <p style="text-indent:2em;">i := i + 1; </p> <p style="text-indent:2em;">s := v_res_fun.F_CONTENT;</p> <p style="text-indent:2em;">v_cfjg.EXTEND; </p> <p style="text-indent:2em;">ctx_doc.highlight('f_content_index', v_res_fun.F_ID, keyword, v_restab, false);</p> <p style="text-indent:2em;">--只取第一个,没有loop循环</p> <p style="text-indent:2em;">startnum:=v_restab(1).offset;</p> <p style="text-indent:2em;">if v_restab(1).offset > 30 then</p> <p style="text-indent:2em;">   begin</p> <p style="text-indent:2em;">        startnum := v_restab(1).offset-30 ;</p> <p style="text-indent:2em;">   end; </p> <p style="text-indent:2em;">end if;</p> <p style="text-indent:2em;">if v_restab(1).offset <= 30 then</p> <p style="text-indent:2em;">   begin</p> <p style="text-indent:2em;">        startnum := 1 ;</p> <p style="text-indent:2em;">   end; </p> <p style="text-indent:2em;">end if;</p> <p style="text-indent:2em;">if length(s)-v_restab(1).offset > 30 then</p> <p style="text-indent:2em;">   begin</p> <p style="text-indent:2em;">        endnum := v_restab(1).offset+30 ;</p> <p style="text-indent:2em;">   end; </p> <p style="text-indent:2em;">end if;</p> <p style="text-indent:2em;">if length(s)-v_restab(1).offset <= 30 then</p> <p style="text-indent:2em;">   begin</p> <p style="text-indent:2em;">        endnum := length(s) ;</p> <p style="text-indent:2em;">   end; </p> <p style="text-indent:2em;">end if;</p> <p style="text-indent:2em;">v_cfjg(v_cfjg.count) := f_content_arr(v_res_fun.F_ID,v_res_fun.F_URL,v_res_fun.F_TITLE,substr(s,startnum,endnum-startnum)); </p> <p style="text-indent:2em;">dbms_output.new_line(); </p> <p style="text-indent:2em;">END LOOP; </p> <p style="text-indent:2em;">end; </p> <p style="text-indent:2em;">EXCEPTION </p> <p style="text-indent:2em;">WHEN TOO_MANY_ROWS THEN </p> <p style="text-indent:2em;">DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS'); </p> <p style="text-indent:2em;">WHEN OTHERS THEN </p> <p style="text-indent:2em;">DBMS_OUTPUT.PUT_LINE(sqlerrm); </p> <p style="text-indent:2em;">end f_content_pro; </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--在此,全文检索存储过程定义完毕</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">--以下是sqlplus调用 </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">declare</p> <p style="text-indent:2em;">   s f_content_arr_re;</p> <p style="text-indent:2em;"> begin    </p> <p style="text-indent:2em;">   f_content_pro('菲律宾',s);     </p> <p style="text-indent:2em;"> END;  </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">       Java后台调用存储过程并返回参数代码:</p> <p style="text-indent:2em;">            public ArrayList<DocNews> search(String keyword) {</p> <p style="text-indent:2em;">                  ArrayList<DocNews> list = new ArrayList<DocNews>();</p> <p style="text-indent:2em;">                  Connection conn = null;</p> <p style="text-indent:2em;">                  ResultSet rs = null;</p> <p style="text-indent:2em;">                  CallableStatement stmt = null;</p> <p style="text-indent:2em;">                  DocNews docnews;</p> <p style="text-indent:2em;">                  try {</p> <p style="text-indent:2em;">                        conn = DBPool.getConnection();</p> <p style="text-indent:2em;">                        stmt = null;</p> <p style="text-indent:2em;">               String procName = new StringBuffer().append("{ call f_content_pro(?,?) } ").toString();</p> <p style="text-indent:2em;">                        stmt = conn.prepareCall(procName);</p> <p style="text-indent:2em;">                        stmt.setString(1, keyword);</p> <p style="text-indent:2em;">                        stmt.registerOutParameter(2, Types.ARRAY, "F_CONTENT_ARR_RE");</p> <p style="text-indent:2em;">                        stmt.execute();</p> <p style="text-indent:2em;">                        ARRAY arr = (ARRAY) stmt.getArray(2);</p> <p style="text-indent:2em;">                        rs = arr.getResultSet();</p> <p style="text-indent:2em;">                        while (rs.next()) {</p> <p style="text-indent:2em;">                              STRUCT struct = (STRUCT) rs.getObject(2);</p> <p style="text-indent:2em;">                              Object[] obs = struct.getAttributes();</p> <p style="text-indent:2em;">                              docnews = new DocNews();</p> <p style="text-indent:2em;">                              docnews.setId(((BigDecimal)obs[0]).longValue());</p> <p style="text-indent:2em;">                              docnews.setUrl((String)obs[1]);</p> <p style="text-indent:2em;">                              docnews.setTitle((String)obs[2]);</p> <p style="text-indent:2em;">                              docnews.setAbstractcontent((String)obs[3]);</p> <p style="text-indent:2em;">                              list.add(docnews);</p> <p style="text-indent:2em;">                        }</p> <p style="text-indent:2em;">                        if (stmt != null) {</p> <p style="text-indent:2em;">                              stmt.close();</p> <p style="text-indent:2em;">                        }</p> <p style="text-indent:2em;">                        if (conn != null) {</p> <p style="text-indent:2em;">                              conn.close();</p> <p style="text-indent:2em;">                        }</p> <p style="text-indent:2em;">                  } catch (Exception e) {</p> <p style="text-indent:2em;">                        e.printStackTrace();</p> <p style="text-indent:2em;">                  }</p> <p style="text-indent:2em;">                  return list;</p> <p style="text-indent:2em;">         }</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">       注:在java中调用方法,除了在项目里加入class12.jar包以外,还需要加入Oracle自带的orai18n.jar包,如果仅仅是执行main方面,则可以,但如果是web项目,则要将orai18n.jar包加入到jdk的%jdk%\jre\lib\ext目录中才行。如果没有orai18n.jar这个包会造成检索调用存储过程返回结果是乱码(???三个问号)。</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">4.4.3 检索简单界面图</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">5.检索性能</p> <p style="text-indent:2em;">                        执行以下索引</p> <p style="text-indent:2em;">Create index f_content_index on T_DOCNEWS(F_CONTENT)</p> <p style="text-indent:2em;">indextype is ctxsys.context </p> <p style="text-indent:2em;">parameters('datastore F_DOCNEWS_Preference lexer foo.my_chinese_lexer');</p> <p style="text-indent:2em;">总共5272条新闻,总耗时61s</p> <p style="text-indent:2em;">合计约一分钟5000条</p> <p style="text-indent:2em;"> </p> <p style="text-indent:2em;">查询仅需200多毫秒</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1287787841711026176"></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">你可能感兴趣的:(【引用】Oracle全文检索方面的研究(全10))</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950233199242178560.htm" title="x86-64汇编语言训练程序与实战" target="_blank">x86-64汇编语言训练程序与实战</a> <span class="text-muted">十除以十等于一</span> <div>本文还有配套的精品资源,点击获取简介:汇编语言是一种低级语言,与机器代码紧密相关,特别适用于编写系统级代码及性能要求高的应用。nasm编译器是针对x86和x86-64架构的汇编语言编译器,支持多种语法风格和指令集。项目Euler提供数学和计算机科学问题,鼓励编程技巧应用,前100个问题的答案可共享。x86-64架构扩展了寄存器数量并引入新指令,提升了数据处理效率。学习汇编语言能够深入理解计算机底层</div> </li> <li><a href="/article/1950233040592629760.htm" title="2022-10-20" target="_blank">2022-10-20</a> <span class="text-muted">体力劳动者</span> <div>不因感觉稍纵即逝就不加记录。在女儿睡觉后我记下今天的小故事。接手新班级后,今天是第二次收到家长的感谢信(微信)。是我表扬次数最多的两位学生家长致来的感谢,他们明显感受到孩子自信、阳光了不少,写作业由被动变为了主动,家庭氛围也由鸡飞狗跳变成了其乐融融。在被顽皮的学生气得头晕之后,我感到了久违的价值感,责任感甚至使命感,我回复家长这样一句话:我们也需要家长的反馈好让我们的教育工作更有劲头。我也认识到,</div> </li> <li><a href="/article/1950232781174927360.htm" title="15个小技巧,让我的Windows电脑更好用了!" target="_blank">15个小技巧,让我的Windows电脑更好用了!</a> <span class="text-muted">曹元_</span> <div>01.桌面及文档处理第一部分的技巧,主要是围绕桌面的一些基本操作,包括主题设置、常用文档文件快捷打开的多种方式等等。主题换色默认情况下,我们的Win界面可能就是白色的文档界面,天蓝色的图表背景,说不出哪里不好看,但是就是觉得不够高级。imageimage说到高级感,本能第一反应就会和暗色模式联想起来,如果我们将整个界面换成黑夜模式的话,它会是这样的。imageimage更改主题颜色及暗色模式,我们</div> </li> <li><a href="/article/1950231640819167232.htm" title="贝多芬诞辰250周年纪念" target="_blank">贝多芬诞辰250周年纪念</a> <span class="text-muted">万千星河赴远方</span> <div>就算不是古典音乐爱好者,你也一定听说过贝多芬。作为古典音乐史上最伟大的音乐家之一,他不仅是古典主义风格的集大成者,同时也是浪漫主义风格的开创者。贝多芬肖像画(1813年)贝多芬的一生共创作了9部交响曲、36首钢琴奏鸣曲、10部小提琴奏鸣曲、16首弦乐四重奏、1部歌剧及2部弥撒曲等等。数量虽然不及前辈海顿、莫扎特多,但他几乎改造了当时所有的音乐表达形式,赋予了它们全新的价值,对后世音乐的发展产生了极</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/1950231308781285376.htm" title="力扣热题100-------54. 螺旋矩阵" target="_blank">力扣热题100-------54. 螺旋矩阵</a> <span class="text-muted">海航Java之路</span> <a class="tag" taget="_blank" href="/search/%E5%8A%9B%E6%89%A3/1.htm">力扣</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/1.htm">矩阵</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]提示:m==matrix.lengthn</div> </li> <li><a href="/article/1950230873060208640.htm" title="你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。" target="_blank">你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。</a> <span class="text-muted">霖霖z</span> <div>打卡人:周云日期:2018年11月09日【日精进打卡第180天】【知~学习】《六项精进》0遍共214遍《通篇》1遍共106遍《大学》2遍共347遍《坚强工作,温柔生活》ok《不抱怨的世界》104-108页《经典名句》你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。【行~实践】一、修身:(对自己个人)1、坚持打卡二、齐家:(对家庭和家人)打扫卫生,接送孩子,洗衣做饭,陪</div> </li> <li><a href="/article/1950229040682037248.htm" title="48. 旋转图像 - 力扣(LeetCode)" target="_blank">48. 旋转图像 - 力扣(LeetCode)</a> <span class="text-muted">Fiee-77</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a> <div>题目:给定一个n×n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转90度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例2:输入:matrix=[[5,1,9,11],[2,4,8,10],[13,3,6,</div> </li> <li><a href="/article/1950228158863175680.htm" title="英伟达靠什么支撑起了4万亿?AI泡沫还能撑多久?" target="_blank">英伟达靠什么支撑起了4万亿?AI泡沫还能撑多久?</a> <span class="text-muted"></span> <div>英伟达市值突破4万亿美元,既是AI算力需求爆发的直接体现,也暗含市场对未来的狂热预期。其支撑逻辑与潜在风险并存,而AI泡沫的可持续性则取决于技术、商业与地缘政治的复杂博弈。⚙️一、英伟达4万亿市值的核心支撑因素技术垄断与生态壁垒硬件优势:英伟达GPU在AI训练市场占有率超87%,H100芯片的FP16算力达1979TFLOPS,领先竞品3-5倍。CUDA生态:400万开发者构建的软件护城河,成为A</div> </li> <li><a href="/article/1950225381961297920.htm" title="SpringMVC的执行流程" target="_blank">SpringMVC的执行流程</a> <span class="text-muted"></span> <div>1、什么是MVCMVC是一种设计模式。MVC的原理图如下所示M-Model模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View视图(做界面的展示jsp,html……)C-Controller控制器(接收请求—>调用模型—>根据结果派发页面2、SpringMVC是什么SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,</div> </li> <li><a href="/article/1950225255557558272.htm" title="力扣面试题07 - 旋转矩阵" target="_blank">力扣面试题07 - 旋转矩阵</a> <span class="text-muted">茶猫_</span> <a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/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/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>题目:给你一幅由N×N矩阵表示的图像,其中每个像素的大小为4字节。请你设计一种算法,将图像旋转90度。不占用额外内存空间能否做到?示例1:给定matrix=[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例2:给定matrix=[[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,</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/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/1950222852074565632.htm" title="2025年SDK游戏盾终极解析:重新定义手游安全的“隐形护甲”" target="_blank">2025年SDK游戏盾终极解析:重新定义手游安全的“隐形护甲”</a> <span class="text-muted">上海云盾商务经理杨杨</span> <a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>副标题:从客户端加密到AI反外挂,拆解全链路防护如何重塑游戏攻防天平引言:当传统高防在手游战场“失效”2025年全球手游市场规模突破$2000亿,黑客单次攻击成本却降至$30——某SLG游戏因协议层CC攻击单日流失37%玩家,某开放世界游戏遭低频DDoS瘫痪6小时损失千万。传统高防IP的致命短板暴露无遗:无法识别伪造客户端流量、难防协议篡改、误杀率超15%。而集成于游戏终端的SDK游戏盾,正以“源</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/1950222601523621888.htm" title="不能随便扔垃圾" target="_blank">不能随便扔垃圾</a> <span class="text-muted">小猪宝贝0905</span> <div>阴雨天的周五,看你生病在家窝了快一周,嚷嚷着要去游乐场,那就决定带你去四海书城;为了不让你被雨淋湿,妈妈准备推个自行车,刚把你放到自行车后座上,你一个喷嚏鼻涕出来了,随手拿出纸巾擦擦鼻涕,妈妈因为嫌把你从座位上抱下来扔纸巾到前面的垃圾桶麻烦,就将纸巾扔进了旁边的树丛里;你却批评了妈妈,“不可以把纸巾扔到地上,应该扔进垃圾桶”;妈妈顿时感觉很羞愧,将你抱下来,重新捡起纸巾,扔进了垃圾桶。</div> </li> <li><a href="/article/1950221589622616064.htm" title="EasyPlayer播放器系列开发计划2025" target="_blank">EasyPlayer播放器系列开发计划2025</a> <span class="text-muted">xiejiashu</span> <a class="tag" taget="_blank" href="/search/EasyPlayer/1.htm">EasyPlayer</a><a class="tag" taget="_blank" href="/search/EasyPlayer/1.htm">EasyPlayer</a><a class="tag" taget="_blank" href="/search/EasyPlayer%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">EasyPlayer播放器</a><a class="tag" taget="_blank" href="/search/RTSP%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">RTSP播放器</a><a class="tag" taget="_blank" href="/search/js%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">js播放器</a><a class="tag" taget="_blank" href="/search/Web%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">Web播放器</a> <div>EasyPlayer系列产品发展至今,已经超过10年,从最早的EasyPlayerRTSP播放器,到如今维护的3条线:EasyPlayer-RTSP播放器:Windows、Android、iOS;EasyPlayerPro播放器:Windows、Android、iOS;EasyPlayer.js播放器:H5;这3个播放器各有各的应用场景,用户量也是巨大,像RTSP版本的播放器,到今天依然还有很多低</div> </li> <li><a href="/article/1950221332746661888.htm" title="学生把我的课件换成小三认罪书(赵书晴宋诗月)全集阅读_学生把我的课件换成小三认罪书最新章节阅读_赵书晴宋诗月(学生把我的课件换成小三认罪书)全本免费在线阅读_(学生把我的课件换成小三认罪书)完结..." target="_blank">学生把我的课件换成小三认罪书(赵书晴宋诗月)全集阅读_学生把我的课件换成小三认罪书最新章节阅读_赵书晴宋诗月(学生把我的课件换成小三认罪书)全本免费在线阅读_(学生把我的课件换成小三认罪书)完结...</a> <span class="text-muted">笔趣阁热门小说</span> <div>学生把我的课件换成小三认罪书(赵书晴宋诗月)全集阅读_学生把我的课件换成小三认罪书最新章节阅读_赵书晴宋诗月(学生把我的课件换成小三认罪书)全本免费在线阅读_(学生把我的课件换成小三认罪书)完结版免费在线阅读_学生把我的课件换成小三认罪书(赵书晴宋诗月)完整版免费阅读_(学生把我的课件换成小三认罪书)全章节免费在线阅读主角配角:赵书晴宋诗月简介:我和赵京立去了民政局提交了申请因为离婚冷静期,还要再</div> </li> <li><a href="/article/1950221205659250688.htm" title="小白买保险科普篇-意外险" target="_blank">小白买保险科普篇-意外险</a> <span class="text-muted">手牵手走</span> <div>意外险顾名思义,就是️对因意外导致的损失进行经济补偿的保险产品。我们看保险产品一定要看包含的责任。意外险通常包含:意外身故理赔金,额度10万-几百万不等。意外残疾理赔金,额度10万-几百万不等。意外医疗理赔金,额度通常在1-5万之间。这里的意外到底包含哪些意外事件,不能一概而论。综合意外险,我们重点看免责条款里的除外责任。比如:酒驾、违法不属于赔偿范围。这类产品小朋友和老人家往往有专属产品。年轻人</div> </li> <li><a href="/article/1950220183381536768.htm" title="读张萌萌姐《从受欢迎到被需要》第一章读书总结" target="_blank">读张萌萌姐《从受欢迎到被需要》第一章读书总结</a> <span class="text-muted">韩静_Han</span> <div>我是@张萌-萌姐#从受欢迎到被需要#读书会10班的书记官韩静我们的领读者是@郝美-菱这是今天的读书总结通过第一章的阅读,对高情商和自我介绍有了新的认知。思考题复盘:“我是谁,我需要什么,我能提供什么”【我是谁】我叫韩静,在房地产行业工作5年,现担任行政经理一职,是一位个子小却很坚强很拼的女生。【我能提供什么】️用自己减重26斤的经验帮助需要的人健康减肥️能提供房地产购房等方面的知识和问题️早起陪伴</div> </li> <li><a href="/article/1950220052531834880.htm" title="CodeFoeces-450B" target="_blank">CodeFoeces-450B</a> <span class="text-muted">ss5smi</span> <div>题目原题链接:B.JzzhuandSequences题意根据公式公式计算对应fn的值。参考了其他作者的代码和思路。找循环点。负数取余需要加取余数到>0为止才可取余。代码#includeusingnamespacestd;constintmod=1e9+7;intmain(){longlongf[10],x,y,n;cin>>x>>y>>n;x=(x+mod)%mod;y=(y+mod)%mod;f</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/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/1950218019712069632.htm" title="承德十大亲子鉴定医院名单(附2024年10所正规医院)" target="_blank">承德十大亲子鉴定医院名单(附2024年10所正规医院)</a> <span class="text-muted">国医基因陈主任</span> <div>承德哪家医院可以做亲子鉴定?承德市中心医院、中国人民解放军第二六六医院、承德医学院附属医院等都可以做常规亲子鉴定采样采集,一般的医院并不可以为你提供常规亲子鉴定检测的服务。承德亲子鉴定中心地址:承德市西大街路北11号(承德国医基因)。一般只有少数三甲医院可以做亲子鉴定采样,或者当地亲子鉴定中心可以做亲子鉴定。如果想做亲子鉴定,最好直接到亲子鉴定中心内或亲子鉴定医院采样点内进行双方抽血鉴定,这样会更</div> </li> <li><a href="/article/1950217809610993664.htm" title="分支和循环(下)" target="_blank">分支和循环(下)</a> <span class="text-muted">tryxr</span> <a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>写⼀个猜数字游戏游戏要求:1.电脑⾃动⽣成1~100的随机数2.玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束1.随机数生成要想完成猜数字游戏,⾸先得产⽣随机数,那怎么产⽣随机数呢?randC语⾔提供了⼀个函数叫rand,这函数是可以⽣成随机数的,函数原型如下所⽰:intrand(void);rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_</div> </li> <li><a href="/article/1950216926445760512.htm" title="Matrix-Breakout 2 Morpheus靶场解题过程" target="_blank">Matrix-Breakout 2 Morpheus靶场解题过程</a> <span class="text-muted"></span> <div>信息收集目标探测靶机目标很明显就是61.139.2.141了扫描开放端口发现22、80、81访问端口主机访问80翻译一下,并没有发现什么审查源代码发现里面有一张图片,下载下来看看是否有图片的隐写wgethttp://61.139.2.141/trinity.jpegstegoveritas-itrinity.jpeg-o/home/kali/Desktop/11分解后发现什么都没有,里面的keep</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/1950215985592070144.htm" title="我是孩子妈妈,我会让孩子饿着吗?" target="_blank">我是孩子妈妈,我会让孩子饿着吗?</a> <span class="text-muted">松玲子</span> <div>回老家过年,就是一场在关于喂养孩子问题上与老人的巅峰对决。前天我们回老家了,他爷爷奶奶就说孩子瘦了,就说我喂的不好,不按时喂,第一天夜里孩子总是睡一会就哭,睡一会就哭,夜里不知醒了多少次,弄得我真是几乎彻夜未眠。一大早,我还没起,我就听见他爷爷奶奶在外边说,今黑夜阳阳怎么老哭,是不是饿的,然后又延伸到我喂养的问题上,说不吃盐不行,不吃盐孩子没劲,吃蛋光吃个蛋黄,吃不饱,给他吃全蛋就行,哎呀我去,我</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/79.htm" title="基本数据类型和引用类型的初始值" target="_blank">基本数据类型和引用类型的初始值</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a> <div>package com.array; /** * @Description 测试初始值 * @author FuJianyong * 2015-1-22上午10:31:53 */ public class ArrayTest { ArrayTest at; String str; byte bt; short s; int i; long</div> </li> <li><a href="/article/206.htm" title="摘抄笔记--《编写高质量代码:改善Java程序的151个建议》" target="_blank">摘抄笔记--《编写高质量代码:改善Java程序的151个建议》</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/%E9%AB%98%E8%B4%A8%E9%87%8F%E4%BB%A3%E7%A0%81/1.htm">高质量代码</a> <div>        记得3年前刚到公司,同桌同事见我无事可做就借我看《编写高质量代码:改善Java程序的151个建议》这本书,当时看了几页没上心就没研究了。到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀。           看完整本书,也记了不少笔记</div> </li> <li><a href="/article/333.htm" title="【备忘】Django 常用命令及最佳实践" target="_blank">【备忘】Django 常用命令及最佳实践</a> <span class="text-muted">dongwei_6688</span> <a class="tag" taget="_blank" href="/search/django/1.htm">django</a> <div>注意:本文基于 Django 1.8.2 版本   生成数据库迁移脚本(python 脚本) python manage.py makemigrations polls  说明:polls 是你的应用名字,运行该命令时需要根据你的应用名字进行调整   查看该次迁移需要执行的 SQL 语句(只查看语句,并不应用到数据库上): python manage.p</div> </li> <li><a href="/article/460.htm" title="阶乘算法之一N! 末尾有多少个零" target="_blank">阶乘算法之一N! 末尾有多少个零</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%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%98%B6%E4%B9%98/1.htm">阶乘</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E6%95%88%E7%8E%87/1.htm">效率</a> <div>                                 &n</div> </li> <li><a href="/article/587.htm" title="spring注入servlet" target="_blank">spring注入servlet</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/Spring%E6%B3%A8%E5%85%A5/1.htm">Spring注入</a> <div>传统的配置方法是无法将bean或属性直接注入到servlet中的,配置代理servlet亦比较麻烦,这里其实有比较简单的方法,其实就是在servlet的init()方法中加入要注入的内容: ServletContext application = getServletContext(); WebApplicationContext wac = WebApplicationContextUtil</div> </li> <li><a href="/article/714.htm" title="Jenkins 命令行操作说明文档" target="_blank">Jenkins 命令行操作说明文档</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div> 假设Jenkins的URL为http://22.11.140.38:9080/jenkins/ 基本的格式为 java 基本的格式为 java -jar jenkins-cli.jar [-s JENKINS_URL] command [options][args] 下面具体介绍各个命令的作用及基本使用方法 1. &nb</div> </li> <li><a href="/article/841.htm" title="UnicodeBlock检测中文用法" target="_blank">UnicodeBlock检测中文用法</a> <span class="text-muted">布衣凌宇</span> <a class="tag" taget="_blank" href="/search/UnicodeBlock/1.htm">UnicodeBlock</a> <div>/**  * 判断输入的是汉字  */ public static boolean isChinese(char c) {        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);    </div> </li> <li><a href="/article/968.htm" title="java下实现调用oracle的存储过程和函数" target="_blank">java下实现调用oracle的存储过程和函数</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/orale/1.htm">orale</a> <div> 1.创建表:STOCK_PRICES     2.插入测试数据:     3.建立一个返回游标:  PKG_PUB_UTILS   4.创建和存储过程:P_GET_PRICE     5.创建函数:   6.JAVA调用存储过程返回结果集 JDBCoracle10G_INVO</div> </li> <li><a href="/article/1095.htm" title="Velocity Toolbox" target="_blank">Velocity Toolbox</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%9D%BF/1.htm">模板</a><a class="tag" taget="_blank" href="/search/tool/1.htm">tool</a><a class="tag" taget="_blank" href="/search/box/1.htm">box</a><a class="tag" taget="_blank" href="/search/velocity/1.htm">velocity</a> <div>velocity.VelocityUtil package velocity; import org.apache.velocity.Template; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.c</div> </li> <li><a href="/article/1222.htm" title="JAVA正则表达式匹配基础" target="_blank">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/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%8C%B9%E9%85%8D/1.htm">正则表达式的匹配</a> <div>  正则表达式;提高程序的性能,简化代码,提高代码的可读性,简化对字符串的操作   正则表达式的用途; 字符串的匹配 字符串的分割 字符串的查找 字符串的替换       正则表达式的验证语法     [a] //[]表示这个字符只出现一次 ,[a] 表示a只出现一</div> </li> <li><a href="/article/1349.htm" title="是否使用EL表达式的配置" target="_blank">是否使用EL表达式的配置</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/EL/1.htm">EL</a><a class="tag" taget="_blank" href="/search/EasyTemplate/1.htm">EasyTemplate</a> <div>        今天在开发过程中发现一个细节问题,由于前端采用EasyTemplate模板方法实现数据展示,但老是不能正常显示出来。后来发现竟是EL将我的EasyTemplate的${...}解释执行了,导致我的模板不能正常展示后台数据。         网</div> </li> <li><a href="/article/1476.htm" title="精通Oracle10编程SQL(1-3)PLSQL基础" target="_blank">精通Oracle10编程SQL(1-3)PLSQL基础</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块 --set serveroutput off begin dbms_output.put_line('Hello,everyone!'); end; select * from emp; --包含定义部分和执行部分的PL/SQL块 declare v_ename varchar2(5); begin select </div> </li> <li><a href="/article/1603.htm" title="【Nginx三】Nginx作为反向代理服务器" target="_blank">【Nginx三】Nginx作为反向代理服务器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>Nginx一个常用的功能是作为代理服务器。代理服务器通常完成如下的功能:   接受客户端请求 将请求转发给被代理的服务器 从被代理的服务器获得响应结果 把响应结果返回给客户端 实例 本文把Nginx配置成一个简单的代理服务器 对于静态的html和图片,直接从Nginx获取 对于动态的页面,例如JSP或者Servlet,Nginx则将请求转发给Res</div> </li> <li><a href="/article/1730.htm" title="Plugin execution not covered by lifecycle configuration: org.apache.maven.plugin" target="_blank">Plugin execution not covered by lifecycle configuration: org.apache.maven.plugin</a> <span class="text-muted">blackproof</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E9%94%99/1.htm">报错</a> <div>转:http://stackoverflow.com/questions/6352208/how-to-solve-plugin-execution-not-covered-by-lifecycle-configuration-for-sprin   maven报错: Plugin execution not covered by lifecycle configuration: </div> </li> <li><a href="/article/1857.htm" title="发布docker程序到marathon" target="_blank">发布docker程序到marathon</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/docker+%E5%8F%91%E5%B8%83%E5%BA%94%E7%94%A8/1.htm">docker 发布应用</a> <div>1 发布docker程序到marathon 1.1 搭建私有docker registry 1.1.1 安装docker regisry docker pull docker-registry docker run -t -p 5000:5000 docker-registry 下载docker镜像并发布到私有registry docker pull consol/tomcat-8.0 </div> </li> <li><a href="/article/1984.htm" title="java-57-用两个栈实现队列&&用两个队列实现一个栈" target="_blank">java-57-用两个栈实现队列&&用两个队列实现一个栈</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.List; import java.util.Stack; /* * Q 57 用两个栈实现队列 */ public class QueueImplementByTwoStacks { private Stack<Integer> stack1; pr</div> </li> <li><a href="/article/2111.htm" title="Nginx配置性能优化" target="_blank">Nginx配置性能优化</a> <span class="text-muted">cfyme</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>转载地址:http://blog.csdn.net/xifeijian/article/details/20956605   大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了。而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出Nginx的性能,你必</div> </li> <li><a href="/article/2238.htm" title="[JAVA图形图像]JAVA体系需要稳扎稳打,逐步推进图像图形处理技术" target="_blank">[JAVA图形图像]JAVA体系需要稳扎稳打,逐步推进图像图形处理技术</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>      对图形图像进行精确处理,需要大量的数学工具,即使是从底层硬件模拟层开始设计,也离不开大量的数学工具包,因为我认为,JAVA语言体系在图形图像处理模块上面的研发工作,需要从开发一些基础的,类似实时数学函数构造器和解析器的软件包入手,而不是急于利用第三方代码工具来实现一个不严格的图形图像处理软件......   &nb</div> </li> <li><a href="/article/2365.htm" title="MonkeyRunner的使用" target="_blank">MonkeyRunner的使用</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/MonkeyRunner/1.htm">MonkeyRunner</a> <div>要使用MonkeyRunner,就要学习使用Python,哎 先抄一段官方doc里的代码 作用是启动一个程序(应该是启动程序默认的Activity),然后按MENU键,并截屏 # Imports the monkeyrunner modules used by this program from com.android.monkeyrunner import MonkeyRun</div> </li> <li><a href="/article/2492.htm" title="Hadoop-- 海量文件的分布式计算处理方案" target="_blank">Hadoop-- 海量文件的分布式计算处理方案</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/mapreduce/1.htm">mapreduce</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%A1%E7%AE%97/1.htm">分布式计算</a> <div>csdn的一个关于hadoop的分布式处理方案,存档。 原帖:http://blog.csdn.net/calvinxiu/article/details/1506112。     Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同ja</div> </li> <li><a href="/article/2619.htm" title="以資料庫驗證登入" target="_blank">以資料庫驗證登入</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>以資料庫驗證登入 由於 Yii 內定的原始框架程式, 採用綁定在UserIdentity.php 的 demo 與 admin 帳號密碼:    public function authenticate()    {        $users=array( &nbs</div> </li> <li><a href="/article/2746.htm" title="github做webhooks:[2]php版本自动触发更新" target="_blank">github做webhooks:[2]php版本自动触发更新</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/webhooks/1.htm">webhooks</a> <div>上次已经说过了如何在github控制面板做查看url的返回信息了。这次就到了直接贴钩子代码的时候了。 工具/原料 git github 方法/步骤   在github的setting里面的webhooks里把我们的url地址填进去。   钩子更新的代码如下: error_reportin</div> </li> <li><a href="/article/2873.htm" title="Eos开发常用表达式" target="_blank">Eos开发常用表达式</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/Eos%E5%BC%80%E5%8F%91/1.htm">Eos开发</a><a class="tag" taget="_blank" href="/search/Eos%E5%85%A5%E9%97%A8/1.htm">Eos入门</a><a class="tag" taget="_blank" href="/search/Eos%E5%BC%80%E5%8F%91%E5%B8%B8%E7%94%A8%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">Eos开发常用表达式</a> <div>Eos开发常用表达式 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2014年8月18日 15:03:35 星期一     &</div> </li> <li><a href="/article/3000.htm" title="SpringSecurity3.X--SpEL 表达式" target="_blank">SpringSecurity3.X--SpEL 表达式</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/SpringSecurity/1.htm">SpringSecurity</a> <div>使用 Spring 表达式语言配置访问控制,要实现这一功能的直接方式是在<http>配置元素上添加 use-expressions 属性:   <http auto-config="true" use-expressions="true"> 这样就会在投票器中自动增加一个投票器:org.springframework</div> </li> <li><a href="/article/3127.htm" title="Redis vs Memcache" target="_blank">Redis vs Memcache</a> <span class="text-muted">IXHONG</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。 2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。 3. Redis支持数据的备份,即master-slave模式的数据备份。 4. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Red</div> </li> <li><a href="/article/3254.htm" title="Python - 装饰器使用过程中的误区解读" target="_blank">Python - 装饰器使用过程中的误区解读</a> <span class="text-muted">kvhur</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,Web权限校验, Cache等。 原文链接:http://www.gbtags.com/gb/share/5563.htm Python语言本身提供了装饰器语法(@),典型的装饰器实现如下:   @function_wrapper de</div> </li> <li><a href="/article/3381.htm" title="架构师之mybatis-----update 带case when 针对多种情况更新" target="_blank">架构师之mybatis-----update 带case when 针对多种情况更新</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/case+when/1.htm">case when</a> <div>1.前言.    如题. 2. 代码.   <update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="list" index=&</div> </li> <li><a href="/article/3508.htm" title="Algorithm算法视频教程" target="_blank">Algorithm算法视频教程</a> <span class="text-muted">栏目记者</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>课程:Algorithm算法视频教程 百度网盘下载地址: http://pan.baidu.com/s/1qWFjjQW 密码: 2mji 程序写的好不好,还得看算法屌不屌!Algorithm算法博大精深。 一、课程内容: 课时1、算法的基本概念 + Sequential search 课时2、Binary search 课时3、Hash table 课时4、Algor</div> </li> <li><a href="/article/3635.htm" title="C语言算法之冒泡排序" target="_blank">C语言算法之冒泡排序</a> <span class="text-muted">qiufeihu</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>任意输入10个数字由小到大进行排序。 代码: #include <stdio.h> int main() { int i,j,t,a[11]; /*定义变量及数组为基本类型*/ for(i = 1;i < 11;i++){ scanf("%d",&a[i]); /*从键盘中输入10个数*/ } for</div> </li> <li><a href="/article/3762.htm" title="JSP异常处理" target="_blank">JSP异常处理</a> <span class="text-muted">wyzuomumu</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a> <div>1.在可能发生异常的网页中通过指令将HTTP请求转发给另一个专门处理异常的网页中: <%@ page errorPage="errors.jsp"%>   2.在处理异常的网页中做如下声明: errors.jsp: <%@ page isErrorPage="true"%>,这样设置完后就可以在网页中直接访问exc</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>