C++项目:基于boost在线文档实现的搜索引擎(一)

C++项目:基于boost在线文档实现的搜索引擎(一)

  • 前言 - 搜索引擎的原理
  • 目录结构与相关库的下载
  • 模块的划分
  • 预处理模块
  • 预处理模块测试

下一篇:C++项目:基于boost在线文档实现的搜索引擎(二)
github: https://github.com/duchenlong/boost-search-engine


前言 - 搜索引擎的原理

C++项目:基于boost在线文档实现的搜索引擎(一)_第1张图片
当我们在百度的搜索框框中,输入想要搜索的关键字杰尼龟,然后很快就会出现很多和杰尼龟相关的数据,可以看到显示的数据中,所有的杰尼龟关键字都是红色文本显示,可以猜到杰尼龟应该是一个关键字,当我们搜索的时候,后台会找到所有和这个关键字有关的数据。这样就会显示所有和关键字相关的结果了。

对于提取关键字对指定文本进行分词,这一过程叫做倒排索引。他的核心就是根据一个词,映射到这个词所属的文档中(哈希表)
C++项目:基于boost在线文档实现的搜索引擎(一)_第2张图片

  • 正排索引:根据文档id,得到文档的内容
  • 倒排索引:根据文档的内容,得到文档的id

而这个项目的实现就用boost的在线文档来完成了
C++项目:基于boost在线文档实现的搜索引擎(一)_第3张图片

因为boost的官方文档中没有一个搜索的功能,那就可以利用下,为博客系统的搜索功能打一个小基础

C++项目:基于boost在线文档实现的搜索引擎(一)_第4张图片

那么倒排索引与正排索引的模块,就可以在这些官方文档的html文件中的文本来建立

C++项目:基于boost在线文档实现的搜索引擎(一)_第5张图片
在这里插入图片描述

目录结构与相关库的下载

C++项目:基于boost在线文档实现的搜索引擎(一)_第6张图片

  • common:放置公共模块的程序
  • data:inputoutput表示输入输出内容,tmp表示临时数据
  • jieba_dict:jieba分词的词典文件
  • parser:预处理模块
  • searcher:搜索模块,索引模块

C++项目:基于boost在线文档实现的搜索引擎(一)_第7张图片

对于使用到的一些库,需要下载一下:

  • httplib:https://github.com/yhirose/cpp-httplib
    g++版本必须得是4.9以上

  • boost 文档:下载地址 https://sourceforge.net/projects/boost/files/boost/1.53.0/

  • boost 在线文档:下载地址 http://www.boost.org/doc/libs/1_53_0/doc/html/

  • jieba分词的库:https://github.com/yanyiwu/cppjieba
    在这个库中,还需要一个limonp组件,https://gitee.com/mirrors_yanyiwu/limonp?_from=gitee_search,然后放到cppjieba的include目录下就可以了

  • boost: yum install boost-devel.x86_64

  • jsoncpp: yum install jsoncpp-devel.x86_64

下载之后,对分词进行测试与使用

在这里插入图片描述


模块的划分

C++项目:基于boost在线文档实现的搜索引擎(一)_第8张图片

  1. 预处理模块

读取指定html文档的内容,解析出其中的文本内容:文档标题,文档URL,文档的正文(p,span,h1…等等这种文本标签中的内容)
然后将解析的关键字的集合,整理到一起,为了之后建立索引打基础

  1. 索引模块

针对预处理模块中得到的关键字的集合,对于这些关键字,逐一构造正排索引和倒排索引,并提供一些接口给其他函数中方便调用

  1. 搜索模块

首先,搜索模块中的内容会是一个长文本,得先对个文本进行分词 (分词)

再根据分词的结果,根据倒排索引依次查找所有关键字,得到与这些关键字相关的所有文档 (触发)

之后把所有相关的文档按照一定的规则进行排序,相关性越高的文档排在前面进行显示。(排序)

最后,我们在页面上显示的时候,总不能直接显示文档的所有内容吧,可以根据标题,URL,重要的描述来构造一个显示的结果,这就需要用文档id进行正排索引,把结果封装起来发送给客户端 (构造结果)
C++项目:基于boost在线文档实现的搜索引擎(一)_第9张图片
变成这样,在网页上只显示文件前面的部分数据,剩余的使用...代替

  1. 服务器模块

Http服务器,给外部提供服务,使用httpliib搭建服务器


预处理模块

首先就是得到boost文档中 .html文件的路径,然后根据这些路径依次对这些文档的内容进行解析(标题,路径URL,正文),最后输出为一个行文本文件

  1. 枚举boost文档中所有 .html文件路径

这里封装一个函数,直接将所有的路径加入到vector数组中,执行失败返回false

bool GetFilePath(const string& input_path,vector<string>* file_list);

boost::filesystem 中的path类

path相关的函数名 解释
path(); path(const char* pathname); path(const std::string& pathname); 构造函数
const std::string& string( ) 返回用于初始化 path 的字符串的副本
bool exists(const path&) 检查文件的扩展名。文件可以为任何类型:常规文件、目录、符号链接等等
std::string extension(const path&): 此函数以前面带句点 (.) 的形式返回给定文件名的扩展名。例如,对于文件名为 test.cpp 的文件,extension 将返回 .cpp

boost::filesystem::recursive_directory_iterator,该迭代器可以递归的遍历指定路径下的所有文件,在遍历的途中,我们需要跳过目录以及不是.html文件的路径

C++项目:基于boost在线文档实现的搜索引擎(一)_第10张图片

最后所得到的路径,便是相对于doc_searcher文件的一个相对路径

bool GetFilePath(const string& input_path,vector<string>* file_list){
    namespace fs = boost::filesystem;
    fs::path root_path(input_path);
    if(fs::exists(root_path) == false){
        cout<<input_path<<" not exists"<<endl;
        return false;
    }

    fs::recursive_directory_iterator end_iter;
    for(fs::recursive_directory_iterator iter(root_path); 
        iter != end_iter; iter++){
            //当前路径为目录时,直接跳过
            if(fs::is_regular_file(*iter) == false){
                continue;
            }
            
            //当前文件不是 .html 文件,直接跳过
            if(iter->path().extension() != ".html"){
                continue;
            }

            //得到的路径加入到 vector 数组中
            file_list->push_back(iter->path().string());
        }
    
    return true;
}
  1. 根据路径遍历每个.html文件,对文件内容进行解析

直接遍历vector 数组中的每一个路径,然后依次打开文件,从中进行解析,并对解析函数进行封装

bool ParseFile(const string& file_path,DocInfo* doc_info)

在该函数中,读取文件数据使用公共函数模块中封装的Read接口,然后再分别对标题,路径,正文的解析函数进行封装。

对于解析好的数据,我们进行一个结构体的描述

//一个文档信息的概括
struct DocInfo{
    string _title;      //文档标题
    string _url;        //文档的地址
    string _content;    //文档的正文
}

C++项目:基于boost在线文档实现的搜索引擎(一)_第11张图片

//找到标题   
bool ParseTitle(const string& html,string* title){
    size_t begin = html.find(""</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>begin <span class="token operator">==</span> string<span class="token operator">::</span>npos<span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span><span class="token string">"title not find"</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    size_t end <span class="token operator">=</span> html<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token string">"",begin);
    if(end == string::npos){
        cout<<"title not find"<<endl;
        return false;
    }

    begin += string(""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>begin <span class="token operator">>=</span> end<span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span><span class="token string">"title pos info error"</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token operator">*</span>title <span class="token operator">=</span> html<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span>begin<span class="token punctuation">,</span>end <span class="token operator">-</span> begin<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token comment">// 本地路径形如:</span>
<span class="token comment">// ../data/input/html/thread.html</span>
<span class="token comment">// 在线路径形如:</span>
<span class="token comment">// https://www.boost.org/doc/libs/1_53_0/doc/html/thread.html</span>
<span class="token keyword">bool</span> <span class="token function">ParseUrl</span><span class="token punctuation">(</span><span class="token keyword">const</span> string<span class="token operator">&</span> file_path<span class="token punctuation">,</span>string<span class="token operator">*</span> url<span class="token punctuation">)</span><span class="token punctuation">{</span>
    string url_tail <span class="token operator">=</span> file_path<span class="token punctuation">.</span><span class="token function">substr</span><span class="token punctuation">(</span>g_input_path<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token operator">*</span>url <span class="token operator">=</span> g_url_head <span class="token operator">+</span> url_tail<span class="token punctuation">;</span>

    <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token keyword">bool</span> <span class="token function">ParseContent</span><span class="token punctuation">(</span><span class="token keyword">const</span> string<span class="token operator">&</span> html<span class="token punctuation">,</span>string<span class="token operator">*</span> content<span class="token punctuation">)</span><span class="token punctuation">{</span>
    <span class="token keyword">bool</span> is_content <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">auto</span> c <span class="token operator">:</span> html<span class="token punctuation">)</span><span class="token punctuation">{</span>
        <span class="token keyword">if</span><span class="token punctuation">(</span>is_content <span class="token operator">==</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
            <span class="token keyword">if</span><span class="token punctuation">(</span>c <span class="token operator">==</span> <span class="token string">'<'</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
                <span class="token comment">//之后对<>中的内容进行忽略处理</span>
                is_content <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span>
            <span class="token keyword">else</span><span class="token punctuation">{</span>
                <span class="token keyword">if</span><span class="token punctuation">(</span>c <span class="token operator">==</span> <span class="token string">'\n'</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
                    c <span class="token operator">=</span> <span class="token string">' '</span><span class="token punctuation">;</span>
                <span class="token punctuation">}</span>
                content<span class="token operator">-</span><span class="token operator">></span><span class="token function">push_back</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span>
        <span class="token punctuation">}</span>
        <span class="token keyword">else</span><span class="token punctuation">{</span>
            <span class="token keyword">if</span><span class="token punctuation">(</span>c <span class="token operator">==</span> <span class="token string">'>'</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
                is_content <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
            <span class="token punctuation">}</span>
            <span class="token comment">//忽略标签中的内容 <a> </span>
        <span class="token punctuation">}</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>


<span class="token keyword">bool</span> <span class="token function">ParseFile</span><span class="token punctuation">(</span><span class="token keyword">const</span> string<span class="token operator">&</span> file_path<span class="token punctuation">,</span>DocInfo<span class="token operator">*</span> doc_info<span class="token punctuation">)</span><span class="token punctuation">{</span>
    string html<span class="token punctuation">;</span>
    <span class="token keyword">bool</span> ret <span class="token operator">=</span> common<span class="token operator">::</span>Util<span class="token operator">::</span><span class="token function">Read</span><span class="token punctuation">(</span>file_path<span class="token punctuation">,</span><span class="token operator">&</span>html<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>ret <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span>file_path<span class="token operator"><<</span> <span class="token string">" file read error"</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    ret <span class="token operator">=</span> <span class="token function">ParseTitle</span><span class="token punctuation">(</span>html<span class="token punctuation">,</span><span class="token operator">&</span>doc_info<span class="token operator">-</span><span class="token operator">></span>_title<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>ret <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span><span class="token string">"title analysis error "</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    ret <span class="token operator">=</span> <span class="token function">ParseUrl</span><span class="token punctuation">(</span>file_path<span class="token punctuation">,</span><span class="token operator">&</span>doc_info<span class="token operator">-</span><span class="token operator">></span>_url<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>ret <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span><span class="token string">"Url analysis error "</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    ret <span class="token operator">=</span> <span class="token function">ParseContent</span><span class="token punctuation">(</span>html<span class="token punctuation">,</span><span class="token operator">&</span>doc_info<span class="token operator">-</span><span class="token operator">></span>_content<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>ret <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span><span class="token string">"content analysis error "</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
    <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> 
  <ol start="3"> 
   <li><strong>解析的结果写入到一个输出文件中</strong></li> 
  </ol> 
  <p>同理,对这个函数进行封装</p> 
  <pre><code class="prism language-cpp"><span class="token keyword">void</span> <span class="token function">WriteOutput</span><span class="token punctuation">(</span><span class="token keyword">const</span> DocInfo<span class="token operator">&</span> doc_info<span class="token punctuation">,</span>std<span class="token operator">::</span>ofstream<span class="token operator">&</span> ofstream<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> 
  <p>对每一个单独的html文件进行解析后的数据,我们单独写在一行中,并用一个特定的符号进行分割。这个符号不能是正文中存在的,那就可以使用一些不经常使用的字符<code>'\3'</code></p> 
  <pre><code class="prism language-cpp"><span class="token keyword">void</span> <span class="token function">WriteOutput</span><span class="token punctuation">(</span><span class="token keyword">const</span> DocInfo<span class="token operator">&</span> doc_info<span class="token punctuation">,</span>std<span class="token operator">::</span>ofstream<span class="token operator">&</span> ofstream<span class="token punctuation">)</span><span class="token punctuation">{</span>
    ofstream<span class="token operator"><<</span>doc_info<span class="token punctuation">.</span>_title<span class="token operator"><<</span><span class="token string">"\3"</span><span class="token operator"><<</span>doc_info<span class="token punctuation">.</span>_url
            <span class="token operator"><<</span><span class="token string">"\3"</span><span class="token operator"><<</span>doc_info<span class="token punctuation">.</span>_content<span class="token operator"><<</span>endl<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> 
  <p><img src="http://img.e-com-net.com/image/info8/99bb407347ca4480811a3b1dc7be598a.jpg" alt="在这里插入图片描述" width="0" height="0"></p> 
  <h1>预处理模块测试</h1> 
  <pre><code class="prism language-cpp"><span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>

    <span class="token comment">// 1. 得到html文件路径</span>
    vector<span class="token operator"><</span>string<span class="token operator">></span> file_list<span class="token punctuation">;</span>
    <span class="token keyword">bool</span> ret <span class="token operator">=</span> <span class="token function">GetFilePath</span><span class="token punctuation">(</span>g_input_path<span class="token punctuation">,</span><span class="token operator">&</span>file_list<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>ret <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span><span class="token string">"get html file path error"</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    <span class="token comment">// for(auto& str : file_list){</span>
    <span class="token comment">//     cout<<str<<endl;</span>
    <span class="token comment">// }</span>
    <span class="token comment">// cout<<file_list.size()<<endl;</span>

    <span class="token comment">// 2. 遍历枚举的路径,针对每个文件进行单独处理</span>
    std<span class="token operator">::</span>ofstream <span class="token function">output_file</span><span class="token punctuation">(</span>g_output_path<span class="token punctuation">.</span><span class="token function">c_str</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span><span class="token punctuation">(</span>output_file<span class="token punctuation">.</span><span class="token function">is_open</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        cout<span class="token operator"><<</span>g_output_path<span class="token operator"><<</span><span class="token string">" file open error"</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
        <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
    <span class="token keyword">for</span><span class="token punctuation">(</span><span class="token keyword">const</span> <span class="token keyword">auto</span><span class="token operator">&</span> file_path <span class="token operator">:</span> file_list<span class="token punctuation">)</span><span class="token punctuation">{</span>
        DocInfo doc_info<span class="token punctuation">;</span>
        ret <span class="token operator">=</span> <span class="token function">ParseFile</span><span class="token punctuation">(</span>file_path<span class="token punctuation">,</span><span class="token operator">&</span>doc_info<span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">if</span><span class="token punctuation">(</span>ret <span class="token operator">==</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
            cout<span class="token operator"><<</span>file_path<span class="token operator"><<</span><span class="token string">" file analysis error"</span><span class="token operator"><<</span>endl<span class="token punctuation">;</span>
            <span class="token keyword">continue</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>
        <span class="token comment">//cout<<doc_info._title<<' '<<doc_info._url<<endl;</span>
        <span class="token comment">// 3. 解析的文件写入到 指定的输出文件中</span>
        <span class="token function">WriteOutput</span><span class="token punctuation">(</span>doc_info<span class="token punctuation">,</span>output_file<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

    output_file<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1559733473210601472"></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">你可能感兴趣的:(C/C++,搜索引擎,C++,boost在线文档)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1881216784795758592.htm"
                           title="JavaScript详解十三 ——节点操作" target="_blank">JavaScript详解十三 ——节点操作</a>
                        <span class="text-muted">遇见~未来</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/JavaScript%E8%AF%A6%E8%A7%A3/1.htm">JavaScript详解</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</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/ecmascript/1.htm">ecmascript</a>
                        <div>目录节点操作1、创建节点2、创建文本3、添加节点(先有父母才能生孩子)4、替换节点5、删除节点6、克隆节点7、创建节点另外几种方式(1)、element.innerHTML(2)、element.innerText(3)、document.write()(4)、insertAdjacentHTML()节点操作1、创建节点docment.createElement('节点')参数:标签名字符串这些元</div>
                    </li>
                    <li><a href="/article/1881216149769744384.htm"
                           title="linux制作自定义service服务单元" target="_blank">linux制作自定义service服务单元</a>
                        <span class="text-muted">handsomestWei</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>linux制作自定义service服务单元服务单元简介在Linux系统中,服务单元通常以.service后缀结尾,并存储在/etc/systemd/system目录下。服务单元文件定义了服务的启动顺序、依赖关系、执行命令等参数。使得系统管理员能够方便地启动、停止、重启和管理系统中的各种服务。java服务单元示例服务单元myJava.service文件示例。注意关闭标准输出,避免日志文件占用磁盘空间</div>
                    </li>
                    <li><a href="/article/1881215379712307200.htm"
                           title="TTL 在 Redis 缓存中的作用" target="_blank">TTL 在 Redis 缓存中的作用</a>
                        <span class="text-muted">maply</span>
<a class="tag" taget="_blank" href="/search/Redis/1.htm">Redis</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%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>RedisTTL(TimeToLive)与缓存的关系TTL(TimeToLive,生存时间)是Redis提供的一种自动过期机制,用于控制键值对的存活时间。当TTL到期后,Redis会自动删除该键,避免长期占用内存。这对于缓存系统来说至关重要,因为它能够有效防止缓存过载,并确保数据的一致性和实时性。1.TTL相关的Redis命令1.1.设置TTLEXPIREkeyseconds:为key设置seco</div>
                    </li>
                    <li><a href="/article/1881214372399869952.htm"
                           title="【新人系列】Python 入门(二十七):Python 库" target="_blank">【新人系列】Python 入门(二十七):Python 库</a>
                        <span class="text-muted">Pandaconda</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E4%BA%BA%E7%B3%BB%E5%88%97/1.htm">新人系列</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/python%E5%BA%93/1.htm">python库</a><a class="tag" taget="_blank" href="/search/%E5%BA%93/1.htm">库</a>
                        <div>✍个人博客:https://blog.csdn.net/Newin2020?type=blog专栏地址:https://blog.csdn.net/newin2020/category_12801353.html专栏定位:为0基础刚入门Python的小伙伴提供详细的讲解,也欢迎大佬们一起交流~专栏简介:在这个专栏,我将带着大家从0开始入门Python的学习。在这个Python的新人系列专栏下,将会</div>
                    </li>
                    <li><a href="/article/1881212987268722688.htm"
                           title="Mysql8 MHA" target="_blank">Mysql8 MHA</a>
                        <span class="text-muted">不吃稻米的熊</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</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/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>MySQL高可用架构之MHA简介:1、MHA简介MHA介绍MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作</div>
                    </li>
                    <li><a href="/article/1881212609240297472.htm"
                           title="顺时针打印矩阵题解(文末附完整代码,自己敲#include这句 和最后return 0 后面的空格中也有不能识别的字符 删掉就行了)" target="_blank">顺时针打印矩阵题解(文末附完整代码,自己敲#include这句 和最后return 0 后面的空格中也有不能识别的字符 删掉就行了)</a>
                        <span class="text-muted">zl_dfq</span>
<a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</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/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/1.htm">线性代数</a>
                        <div>分析:1.人为的感觉是螺旋形地打印数字,但是,计算机只能一行一行地打印数字,所以想到:先创建二维数组(最好是变长数组)来存放这些数,然后再打印。如上图:上横:一圈螺旋之中,上面一行的所有数右竖:一圈螺旋之中,右边一列除去顶端之后的所有数下横:一圈螺旋之中,下边一行除去最右边之后的所有数左竖:一圈螺旋之中,左边一列除去首尾的所有数2.所谓螺旋:先是“上横”这一行数,再是“右竖”这一列数,再是“下横”</div>
                    </li>
                    <li><a href="/article/1881212482790420480.htm"
                           title="flume系列之:flume落cos" target="_blank">flume系列之:flume落cos</a>
                        <span class="text-muted">快乐骑行^_^</span>
<a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%B8%B8%E5%88%86%E4%BA%AB%E4%B8%93%E6%A0%8F/1.htm">日常分享专栏</a><a class="tag" taget="_blank" href="/search/flume%E7%B3%BB%E5%88%97/1.htm">flume系列</a>
                        <div>flume系列之:flume落cos一、参考文章二、安装cosjar包三、添加hadoop-cos的相关配置四、flume环境添加hadoop类路径五、使用cos路径六、启动/重启flume一、参考文章Kafka数据通过Flume存储到HDFS或COSflumetocos使用指南二、安装cosjar包将对应hadoop版本的hadoop-cos的jar包(hadoop-cos-{hadoop.ve</div>
                    </li>
                    <li><a href="/article/1881211978807046144.htm"
                           title="Linux top命令cpu使用率计算底层原理" target="_blank">Linux top命令cpu使用率计算底层原理</a>
                        <span class="text-muted">学会了没</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%9B%91%E6%8E%A7/1.htm">监控</a><a class="tag" taget="_blank" href="/search/cpu%E4%BD%BF%E7%94%A8%E7%8E%87/1.htm">cpu使用率</a>
                        <div>在Linux中,top命令通过读取内核提供的统计数据来计算CPU使用率。其底层原理可以概括为以下几步:1.读取/proc/stattop命令主要从/proc/stat文件中获取CPU的统计信息。这个文件包含了每个CPU核心(或所有核心合计)的各种状态下的时间计数,单位是jiffies(一个jiffy是内核时间单位,通常是1/100秒或1/1000秒,取决于Hertz配置)。/proc/stat中包</div>
                    </li>
                    <li><a href="/article/1881210842351988736.htm"
                           title="办公软件必备:团队协作和项目管理的高效工具" target="_blank">办公软件必备:团队协作和项目管理的高效工具</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/androidios%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">androidios小程序</a>
                        <div>在当今快节奏的工作环境中,高效的团队协作和项目管理工具已成为企业成功的关键。本文将为您推荐几款功能强大、备受好评的办公软件,帮助您的团队提升工作效率,轻松应对各种挑战。一、团队协作工具1.MicrosoftTeams推荐理由:MicrosoftTeams是一款集聊天、视频会议、文件共享和应用程序集成为一体的团队协作平台,与Microsoft365无缝集成,为企业提供一站式解决方案。主要功能:即时通</div>
                    </li>
                    <li><a href="/article/1881210719916060672.htm"
                           title="Microi 吾码与 JavaScript:前端低代码平台的强大组合" target="_blank">Microi 吾码与 JavaScript:前端低代码平台的强大组合</a>
                        <span class="text-muted">小周不想卷</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>目录一、引言二、Microi吾码概述三、JavaScript在Microi吾码前端开发中的应用(一)前端V8引擎与JavaScript(二)接口引擎与JavaScript四、JavaScript在Microi吾码后端开发中的协同(一)与C#后端框架的交互(二)利用gRPC实现跨语言通信五、Microi吾码中JavaScript与数据库的交互六、Microi吾码中JavaScript在表单与模板引擎</div>
                    </li>
                    <li><a href="/article/1881210715247800320.htm"
                           title="数据迁移丨借助 AI 从 PostgreSQL 到 GreatSQL" target="_blank">数据迁移丨借助 AI 从 PostgreSQL 到 GreatSQL</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93mysql/1.htm">数据库mysql</a>
                        <div>数据迁移丨借助AI从PostgreSQL到GreatSQL本文将介绍如何从PostgreSQL到GreatSQL的数据迁移,并运用AI协助迁移更加方便。迁移的方式有很多,例如:pg_dump:导出SQL文件,修改后导入GreatSQL数据库。COPY:导出txt文本文件,导入GreatSQL数据库。pg2mysql:从PostgreSQL迁移到MySQL/GreatSQL工具。GreatDTS:商</div>
                    </li>
                    <li><a href="/article/1881210336346959872.htm"
                           title="如何在龙蜥蜴 OS(AliOS)上安装极狐GitLab?" target="_blank">如何在龙蜥蜴 OS(AliOS)上安装极狐GitLab?</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/gitgitlab%E7%A7%81%E6%9C%89%E5%8C%96%E9%83%A8%E7%BD%B2/1.htm">gitgitlab私有化部署</a>
                        <div>本文分享如何在龙蜥操作系统(AliOS)(包括RHCK和ANCK两种,两种方式的安装流程一样)上安装极狐GitLab?前提条件一个安装了龙蜥操作系统的云服务器可以查看/etc/os-release中的信息,确认操作系统信息:NAME="AnolisOS"VERSION="8.9"ID="anolis"ID_LIKE="rhelfedoracentos"VERSION_ID="8.9"PLATFOR</div>
                    </li>
                    <li><a href="/article/1881210212933758976.htm"
                           title="Node.js 能做什么" target="_blank">Node.js 能做什么</a>
                        <span class="text-muted">yqcoder</span>
<a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>一、服务器端开发1.构建Web服务器使用内置的`http`模块或流行的框架(如Express、Koa等)创建Web服务器,处理HTTP请求和响应。可以处理各种类型的请求,如GET、POST、PUT、DELETE等,并返回相应的HTML、JSON或其他数据类型。consthttp=require("http");constserver=http.createServer((req,res)=>{ r</div>
                    </li>
                    <li><a href="/article/1881209826621583360.htm"
                           title="deepin-如何在 ArchLinux 发行版上安装 DDE 桌面环境" target="_blank">deepin-如何在 ArchLinux 发行版上安装 DDE 桌面环境</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/deepin/1.htm">deepin</a>
                        <div>ArchLinux是一个独立开发的x86-64通用GNU/Linux发行版,其用途广泛,足以适应任何角色。开发侧重于简单、极简主义和代码优雅。Arch是作为一个最小的基础系统安装的,由用户配置,通过仅安装其独特目的所需或所需的东西来组装他们自己的理想环境。官方没有提供GUI配置实用程序,大多数系统配置是通过编辑简单的文本文件从shell执行的。Arch努力保持领先,通常提供大多数软件的最新稳定版本</div>
                    </li>
                    <li><a href="/article/1881209708338016256.htm"
                           title="存储过程报错ORA-01031 权限不足 ORA-00942 解决办法" target="_blank">存储过程报错ORA-01031 权限不足 ORA-00942 解决办法</a>
                        <span class="text-muted">学无止境的小一</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/dba/1.htm">dba</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>昨天有客户在执行存储过程的时候出现了报错,具体报错信息如下存储过程中的内容很简单,就是普通的select,update语句。但是操作的表是在另一个用户下。并且用户表示在外部单独执行这条语句是可以执行的。这是oracle的一个经典案例。下面在测试环境来模拟一下此问题。测试环境创建用户并赋予dba权限SYS@orcl>createuserpro_testidentifiedbytestaccountu</div>
                    </li>
                    <li><a href="/article/1881209709004910592.htm"
                           title="数据泵 expdp/impdp常用命令详解(超详细)" target="_blank">数据泵 expdp/impdp常用命令详解(超详细)</a>
                        <span class="text-muted">学无止境的小一</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>
                        <div>一.简介数据泵属于逻辑备份逻辑备份仅关注数据部分,一般作为物理备份的辅助工具;逻辑备份,可以有很宽松的备份级别:表级别模式级别(用户级别的)表空间级别(数据泵可以)数据库级别(将整个数据库迁移)逻辑备份的两种工具:导入/导出:imp/exp--原始导入导出工具数据泵:impdp/expdp–oracle10g之后的工具--是一种高效的数据和元数据的迁移工具二.准备工作使用数据泵需要创建direct</div>
                    </li>
                    <li><a href="/article/1881209582328541184.htm"
                           title="Oracle11g ADG部署 duplicate方式(超级详细)" target="_blank">Oracle11g ADG部署 duplicate方式(超级详细)</a>
                        <span class="text-muted">学无止境的小一</span>
<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/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/dba/1.htm">dba</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9E%B6%E6%9E%84/1.htm">数据库架构</a>
                        <div>前言在我们的工作中经常会遇到给现有的生产环境搭建ADG容灾系统的需求,此篇文章详细的教大家Oracle11g版本的ADG部署(duplicate方式)。内容都是工作中总结出来的,还算比较详细。环境准备准备两台虚拟机前期基础配置步骤省略两台都安装好oracle11g软件配置好监听其中一台作为主库,需安装好数据库并启动实例。主库主机名:dg1SID:orclhosts文件:192.168.1.217d</div>
                    </li>
                    <li><a href="/article/1881209455945773056.htm"
                           title="6-5.Android 对话框之 Fragment 中创建对话框的上下文对象的选择" target="_blank">6-5.Android 对话框之 Fragment 中创建对话框的上下文对象的选择</a>
                        <span class="text-muted">我命由我12345</span>
<a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8C%96%E7%BC%96%E7%A8%8B/1.htm">简化编程</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/java-ee/1.htm">java-ee</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/android-studio/1.htm">android-studio</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/jetpack/1.htm">jetpack</a>
                        <div>一、对话框对话框(Dialog)是一种常用的UI组件,它主要用于显示信息、接收用户操作反馈对话框可以包含各种元素,但是主要还是以文本、按钮为主,其次是列表其中,基础对话框是Android中最简单的对话框,而后是进度对话框、自定义对话框等二、Fragment中的上下文对象在Android开发中,Fragment是用于在Activity中表示或管理界面的一部分的一个组件在Fragment中,可能会需要</div>
                    </li>
                    <li><a href="/article/1881209203469643776.htm"
                           title="线程池的拒绝策略有哪些?" target="_blank">线程池的拒绝策略有哪些?</a>
                        <span class="text-muted">IsToRestart</span>
<a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a>
                        <div>在Java中,线程池的拒绝策略决定了在任务队列已满的情况下,如何处理新提交的任务。当线程池达到最大容量并且任务队列也已满时,拒绝策略就会起作用。Java提供了四种内置的拒绝策略,它们分别是:AbortPolicy-这是默认的拒绝策略,当线程池无法接受新任务时,会抛出RejectedExecutionException异常。这意味着新任务会被立即拒绝,不会加入到任务队列中,也不会执行。通常情况下都是</div>
                    </li>
                    <li><a href="/article/1881209077237870592.htm"
                           title="python爬取高德地图道路交通状态数据代码" target="_blank">python爬取高德地图道路交通状态数据代码</a>
                        <span class="text-muted">weixin_17839606517</span>
<a class="tag" taget="_blank" href="/search/%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">可视化</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>"""author:17839606517"""importdatetimeimportdatetimeimportosimportcsvfromcodecsimportStreamReaderWriterimportnumpyasnpimportrequestsimportpandasaspdimportjsonimportcodecsimporttimedefaaa():#初始API的URL#</div>
                    </li>
                    <li><a href="/article/1881208447211466752.htm"
                           title="大量研究SSRF文章和报告的总结" target="_blank">大量研究SSRF文章和报告的总结</a>
                        <span class="text-muted">渗透小白鼠</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a>
                        <div>资源链接:https://pan.quark.cn/s/a900691a3ec3免责声明由于传播、利用本公众泷羽Sec提供的文章、工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号泷羽Sec团队及作者不为此承担任何责任,一旦造成后果请自行承担!前言研究大量有关服务器端请求伪造(SSRF)的文章和报告后,输出了一份有关SSRF漏洞的全面概述服务器端请求伪造(SSRF)服务器端请求伪</div>
                    </li>
                    <li><a href="/article/1881207921749061632.htm"
                           title="开年「荣誉三重奏」,融云斩获技术、产品、出海三项大奖!" target="_blank">开年「荣誉三重奏」,融云斩获技术、产品、出海三项大奖!</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                        <div>开年接连喜获大奖,融云服务再获认可——登榜CSDN“2024中国开发者影响力年度评选”、荣获InfoQ“2024年度优秀出海服务商”、人人都是产品经理“2024年度评选-产品技术创新突破奖”。2024年是AI应用元年,也是出海持续深化的一年。面对AI和出海这两大变量,开发者群体在国内应用市场增长空间狭小的现实下有了更趁手的工具和广阔的发力方向。融云作为以“一切为了开发者”为发展宗旨的通信云服务商,</div>
                    </li>
                    <li><a href="/article/1881207794531627008.htm"
                           title="融云 IM 干货丨私有云IMKit支持哪些国家的语言?" target="_blank">融云 IM 干货丨私有云IMKit支持哪些国家的语言?</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E8%9E%8D%E4%BA%91%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AFim/1.htm">融云即时通讯im</a>
                        <div>私有云IMKit支持以下国家的语言:默认支持的语言简体中文(zh_CN)英语(en_US)阿拉伯语(ar)其他语言支持除了上述默认支持的语言外,IMKit还支持通过客户端单独适配其他语言。例如,可以通过以下步骤添加日语支持:创建Localizations:选择日语。创建Strings文件:命名必须和SDK的国际化文件一致,例如RongCloudKit。设置对应语言的文案:将IMKit内置的Rong</div>
                    </li>
                    <li><a href="/article/1881207161246248960.htm"
                           title="融云 IM 干货丨使用IMKit时,如何处理网络异常?" target="_blank">融云 IM 干货丨使用IMKit时,如何处理网络异常?</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E8%9E%8D%E4%BA%91%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AFim/1.htm">融云即时通讯im</a>
                        <div>在使用IMKit时,处理网络异常是非常重要的,以下是一些常见的处理方法和建议:1.设置连接状态监听器通过设置IM连接状态监听器,可以在应用内正确处理连接状态变化。如果遇到连接问题,可以检查网络连接,并确保AppKey和Token是有效的。2.重连机制IMKitSDK内部已经实现了重连机制。在应用的整个生命周期内,开发者只需要调用一次im.connect()建立连接。当网络异常中断时,SDK内部会尝</div>
                    </li>
                    <li><a href="/article/1881207062495555584.htm"
                           title="Kotlin Bootcamp 自学(2):Kotlin基础" target="_blank">Kotlin Bootcamp 自学(2):Kotlin基础</a>
                        <span class="text-muted">EdwardW@ng</span>
<a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>KotlinBootcamp自学(2):Kotlin基础目录KotlinBootcamp自学(2):Kotlin基础前言运算符与数据类型(OperatorsandTypes)数值类型(NumericalType)练习使用数据类型字符串(String)比较条件和布尔值(Boolean)比较符号if...else...关于空值(Nullability)关于array,list,和loopListArr</div>
                    </li>
                    <li><a href="/article/1881206907088203776.htm"
                           title="如何在 deepin文件夹中搜索包含特定内容、关键字的 Word 文档" target="_blank">如何在 deepin文件夹中搜索包含特定内容、关键字的 Word 文档</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/deepin/1.htm">deepin</a>
                        <div>在deepin系统中,搜索包含特定内容或关键字的Word文档是一项常见需求。以下是一个详细的步骤指南,帮助你在文件夹中高效地完成这项任务。一、安装依赖工具要搜索Word文档,首先需要安装一些必要的工具。这些工具包括catdoc、docx2txt、iconv和grep。它们分别用于处理不同格式的Word文档、字符编码转换和文本搜索。在终端执行以下命令安装这些工具:sudoaptinstallcatd</div>
                    </li>
                    <li><a href="/article/1881206684236443648.htm"
                           title="JavaScript进阶" target="_blank">JavaScript进阶</a>
                        <span class="text-muted">不断学习的码农</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a>
                        <div>一.同步和异步程序同步程序就是从头到尾一一执行异步是同步程序执行完成之后才来执行异步程序js是单线程的一个任务执行完成之后才会执行另外一个二.js的内存结构栈内存和堆内存js分引用类型和原始类型原始类型存储在栈内存中引用类型存储在堆内存中三.什么是闭包闭包就是函数嵌套函数,内部的函数就是闭包正常情况下函数执行完成之后,内部的变量就会被销毁(释放内存)闭包:内部函数没有执行完成,外部函数变量不会被销</div>
                    </li>
                    <li><a href="/article/1881206306015080448.htm"
                           title="css hover样式调试" target="_blank">css hover样式调试</a>
                        <span class="text-muted">monstkl</span>
<a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>调试hover后才出现的元素如何调试打开开发者工具,鼠标放在hover时才出现的元素上,然后点击右键不要选中任何选项,将鼠标移动到开发者工具的调试面板中按下N键,此时悬浮的元素不会消失,定位成功调试元素悬浮样式选中有hover样式的元素在开发者工具中选择:hov,就可以看到了</div>
                    </li>
                    <li><a href="/article/1881206303423000576.htm"
                           title="Flume 简介01 作用 核心概念 事务机制 安装 配置入门实战" target="_blank">Flume 简介01 作用 核心概念 事务机制 安装 配置入门实战</a>
                        <span class="text-muted">湖中屋</span>
<a class="tag" taget="_blank" href="/search/Flume/1.htm">Flume</a><a class="tag" taget="_blank" href="/search/flume/1.htm">flume</a>
                        <div>Flume1.业务系统为什么会产生用户行为日志,怎么产生的用户行文日志:每一次访问的行为(访问、搜索)产生的日志记录用户行为日志的目的:1.商家会精准的给你呈现符合你的个人界面2.商家会给你个人添加用户标签,更加精准的分析埋点等2.flume用来做什么的(采集传输数据的,分布式的,可靠的)ApacheFlume是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来</div>
                    </li>
                    <li><a href="/article/1881206295084724224.htm"
                           title="Android 右键后无Java class创建" target="_blank">Android 右键后无Java class创建</a>
                        <span class="text-muted">不吃凉粉</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Androidstudio创建javaclass:最近几个月用Androidstudio开发,因为电脑设置了一个新的用户使用,原来的androidstudio,打开之前的正常的项目总是报一些奇奇怪怪的错误,就重新安装了最新的版本问题描述但是新的androidstudio右键后没有javaclass,本来我就不怎么用java和androidstudio,又赶时间,不想花时间用更不了解的kotlin解</div>
                    </li>
                                <li><a href="/article/73.htm"
                                       title="Hadoop(一)" target="_blank">Hadoop(一)</a>
                                    <span class="text-muted">朱辉辉33</span>
<a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>今天在诺基亚第一天开始培训大数据,因为之前没接触过Linux,所以这次一起学了,任务量还是蛮大的。 
首先下载安装了Xshell软件,然后公司给了账号密码连接上了河南郑州那边的服务器,接下来开始按照给的资料学习,全英文的,头也不讲解,说锻炼我们的学习能力,然后就开始跌跌撞撞的自学。这里写部分已经运行成功的代码吧. 
   在hdfs下,运行hadoop fs -mkdir /u</div>
                                </li>
                                <li><a href="/article/200.htm"
                                       title="maven An error occurred while filtering resources" target="_blank">maven An error occurred while filtering resources</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/18145774/eclipse-an-error-occurred-while-filtering-resources 
  
maven报错: 
maven An error occurred while filtering resources 
  
Maven -> Update Proje</div>
                                </li>
                                <li><a href="/article/327.htm"
                                       title="jdk常用故障排查命令" target="_blank">jdk常用故障排查命令</a>
                                    <span class="text-muted">daysinsun</span>
<a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a>
                                    <div>linux下常见定位命令: 
1、jps      输出Java进程 
      -q       只输出进程ID的名称,省略主类的名称; 
      -m      输出进程启动时传递给main函数的参数; 
    &nb</div>
                                </li>
                                <li><a href="/article/454.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/%E4%BD%8D%E7%A7%BB/1.htm">位移</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%AE%97/1.htm">运算</a><a class="tag" taget="_blank" href="/search/%E4%B9%98%E6%B3%95/1.htm">乘法</a>
                                    <div>  
对于 JAVA 编程中,适当的采用位移运算,会减少代码的运行时间,提高项目的运行效率。这个可以从一道面试题说起:  
   
   问题:  
用最有效率的方法算出2   乘以8   等於几?”        
答案:2 << 3    
由此就引发了我的思考,为什么位移运算会比乘法运算更快呢?其实简单的想想,计算机的内存是用由 0 和 1 组成的二</div>
                                </li>
                                <li><a href="/article/581.htm"
                                       title="java中的枚举(enmu)" target="_blank">java中的枚举(enmu)</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>从jdk1.5开始,java增加了enum(枚举)这个类型,但是大家在平时运用中还是比较少用到枚举的,而且很多人和我一样对枚举一知半解,下面就跟大家一起学习下enmu枚举。先看一个最简单的枚举类型,一个返回类型的枚举: 
public enum ResultType {
	
	/**
	 * 成功
	 */
	SUCCESS,
	/**
	 * 失败
	 */
	FAIL,
	</div>
                                </li>
                                <li><a href="/article/708.htm"
                                       title="MQ初级学习" target="_blank">MQ初级学习</a>
                                    <span class="text-muted">510888780</span>
<a class="tag" taget="_blank" href="/search/activemq/1.htm">activemq</a>
                                    <div>1.下载ActiveMQ 
去官方网站下载:http://activemq.apache.org/ 
 
2.运行ActiveMQ 
解压缩apache-activemq-5.9.0-bin.zip到C盘,然后双击apache-activemq-5.9.0-\bin\activemq-admin.bat运行ActiveMQ程序。 
 
启动ActiveMQ以后,登陆:http://localhos</div>
                                </li>
                                <li><a href="/article/835.htm"
                                       title="Spring_Transactional_Propagation" target="_blank">Spring_Transactional_Propagation</a>
                                    <span class="text-muted">布衣凌宇</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/transactional/1.htm">transactional</a>
                                    <div>//事务传播属性 
@Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个 
@Transactional(propagation=Propagation.NOT_SUPPORTED)//这个方法不开启事务 
@Transactional(propagation=Propagation.REQUIREDS_N</div>
                                </li>
                                <li><a href="/article/962.htm"
                                       title="我的spring学习笔记12-idref与ref的区别" target="_blank">我的spring学习笔记12-idref与ref的区别</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>idref用来将容器内其他bean的id传给<constructor-arg>/<property>元素,同时提供错误验证功能。例如: 
 
<bean id ="theTargetBean" class="..." />
<bean id ="theClientBean" class=&quo</div>
                                </li>
                                <li><a href="/article/1089.htm"
                                       title="Jqplot之折线图" target="_blank">Jqplot之折线图</a>
                                    <span class="text-muted">antlove</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/timeseries/1.htm">timeseries</a><a class="tag" taget="_blank" href="/search/jqplot/1.htm">jqplot</a>
                                    <div>timeseriesChart.html 
<script type="text/javascript" src="jslib/jquery.min.js"></script>  
<script type="text/javascript" src="jslib/excanvas.min.js&</div>
                                </li>
                                <li><a href="/article/1216.htm"
                                       title="JDBC中事务处理应用" target="_blank">JDBC中事务处理应用</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/JDBC%E7%BC%96%E7%A8%8B/1.htm">JDBC编程</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1%E6%8E%A7%E5%88%B6%E8%AF%AD%E5%8F%A5/1.htm">事务控制语句</a>
                                    <div>  
解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复 
  
事务常用命令: 
            Commit提交 
        </div>
                                </li>
                                <li><a href="/article/1343.htm"
                                       title="[转]ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论" target="_blank">[转]ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8/1.htm">线程安全</a><a class="tag" taget="_blank" href="/search/HashMap/1.htm">HashMap</a>
                                    <div>在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK1.0的一部分。 Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的――Hashtable的所有方法都是同步的。此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一个不同步的</div>
                                </li>
                                <li><a href="/article/1470.htm"
                                       title="ng-if与ng-show、ng-hide指令的区别和注意事项" target="_blank">ng-if与ng-show、ng-hide指令的区别和注意事项</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a>
                                    <div>        angularJS中的ng-show、ng-hide、ng-if指令都可以用来控制dom元素的显示或隐藏。ng-show和ng-hide根据所给表达式的值来显示或隐藏HTML元素。当赋值给ng-show指令的值为false时元素会被隐藏,值为true时元素会显示。ng-hide功能类似,使用方式相反。元素的显示或</div>
                                </li>
                                <li><a href="/article/1597.htm"
                                       title="【持久化框架MyBatis3七】MyBatis3定义typeHandler" target="_blank">【持久化框架MyBatis3七】MyBatis3定义typeHandler</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/TypeHandler/1.htm">TypeHandler</a>
                                    <div>什么是typeHandler? 
typeHandler用于将某个类型的数据映射到表的某一列上,以完成MyBatis列跟某个属性的映射 
  内置typeHandler 
MyBatis内置了很多typeHandler,这写typeHandler通过org.apache.ibatis.type.TypeHandlerRegistry进行注册,比如对于日期型数据的typeHandler, </div>
                                </li>
                                <li><a href="/article/1724.htm"
                                       title="上传下载文件rz,sz命令" target="_blank">上传下载文件rz,sz命令</a>
                                    <span class="text-muted">bitcarter</span>
<a class="tag" taget="_blank" href="/search/linux%E5%91%BD%E4%BB%A4rz/1.htm">linux命令rz</a>
                                    <div>刚开始使用rz上传和sz下载命令: 
因为我们是通过secureCRT终端工具进行使用的所以会有上传下载这样的需求: 
 
我遇到的问题: 
sz下载A文件10M左右,没有问题 
但是将这个文件A再传到另一天服务器上时就出现传不上去,甚至出现乱码,死掉现象,具体问题 
 
解决方法: 
上传命令改为;rz -ybe 
下载命令改为:sz -be filename 
 
如果还是有问题: 
那就是文</div>
                                </li>
                                <li><a href="/article/1851.htm"
                                       title="通过ngx-lua来统计nginx上的虚拟主机性能数据" target="_blank">通过ngx-lua来统计nginx上的虚拟主机性能数据</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/ngx-lua%E3%80%80%E7%BB%9F%E8%AE%A1+%E8%A7%A3%E7%A6%81ip/1.htm">ngx-lua 统计 解禁ip</a>
                                    <div>介绍 
以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力.项目主页: https://github.com/skyeydemon/ngx-lua-stats 功能 
 
 支持分不同虚拟主机统计, 同一个虚拟主机下可以分不同的location统计. 
 可以统计与query-times request-time </div>
                                </li>
                                <li><a href="/article/1978.htm"
                                       title="java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132" target="_blank">java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>
import java.util.Arrays;
import java.util.Comparator;

public class MinNumFromIntArray {

	/**
	 * Q68输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。
	 * 例如输入数组{32,  321},则输出这两个能排成的最小数字32132。请给出解决问题</div>
                                </li>
                                <li><a href="/article/2105.htm"
                                       title="Oracle基本操作" target="_blank">Oracle基本操作</a>
                                    <span class="text-muted">ccii</span>
<a class="tag" taget="_blank" href="/search/Oracle+SQL%E6%80%BB%E7%BB%93/1.htm">Oracle SQL总结</a><a class="tag" taget="_blank" href="/search/Oracle+SQL%E8%AF%AD%E6%B3%95/1.htm">Oracle SQL语法</a><a class="tag" taget="_blank" href="/search/Oracle%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/1.htm">Oracle基本操作</a><a class="tag" taget="_blank" href="/search/Oracle+SQL/1.htm">Oracle SQL</a>
                                    <div>一、表操作 
 
1. 常用数据类型 
NUMBER(p,s):可变长度的数字。p表示整数加小数的最大位数,s为最大小数位数。支持最大精度为38位 
NVARCHAR2(size):变长字符串,最大长度为4000字节(以字符数为单位) 
VARCHAR2(size):变长字符串,最大长度为4000字节(以字节数为单位) 
CHAR(size):定长字符串,最大长度为2000字节,最小为1字节,默认</div>
                                </li>
                                <li><a href="/article/2232.htm"
                                       title="[强人工智能]实现强人工智能的路线图" target="_blank">[强人工智能]实现强人工智能的路线图</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                                    <div> 
    1:创建一个用于记录拓扑网络连接的矩阵数据表 
     2:自动构造或者人工复制一个包含10万个连接(1000*1000)的流程图 
     3:将这个流程图导入到矩阵数据表中 
     4:在矩阵的每个有意义的节点中嵌入一段简单的</div>
                                </li>
                                <li><a href="/article/2359.htm"
                                       title="给Tomcat,Apache配置gzip压缩(HTTP压缩)功能" target="_blank">给Tomcat,Apache配置gzip压缩(HTTP压缩)功能</a>
                                    <span class="text-muted">cwqcwqmax9</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a>
                                    <div>背景: 
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,</div>
                                </li>
                                <li><a href="/article/2486.htm"
                                       title="SpringMVC and Struts2" target="_blank">SpringMVC and Struts2</a>
                                    <span class="text-muted">dashuaifu</span>
<a class="tag" taget="_blank" href="/search/struts2/1.htm">struts2</a><a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>SpringMVC  VS Struts2

1:
spring3开发效率高于struts
2:
spring3 mvc可以认为已经100%零配置
3:
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现r</div>
                                </li>
                                <li><a href="/article/2613.htm"
                                       title="windows常用命令行命令" target="_blank">windows常用命令行命令</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a><a class="tag" taget="_blank" href="/search/command/1.htm">command</a>
                                    <div>在windows系统中,点击开始-运行,可以直接输入命令行,快速打开一些原本需要多次点击图标才能打开的界面,如常用的输入cmd打开dos命令行,输入taskmgr打开任务管理器。此处列出了网上搜集到的一些常用命令。winver 检查windows版本 wmimgmt.msc 打开windows管理体系结构(wmi) wupdmgr windows更新程序 wscrip</div>
                                </li>
                                <li><a href="/article/2740.htm"
                                       title="再看知名应用背后的第三方开源项目" target="_blank">再看知名应用背后的第三方开源项目</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a>
                                    <div>知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《 
iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的开源框架,并对其中一些框架进行了分析,同样国外开发者 
@iOSCowboy也在博客中给我们列出了国外多款知名应用使用的开源框架。另外txx's blog中详细介绍了 
Facebook Paper使用的第三</div>
                                </li>
                                <li><a href="/article/2867.htm"
                                       title="Objective-c单例模式的正确写法" target="_blank">Objective-c单例模式的正确写法</a>
                                    <span class="text-muted">jsntghf</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/iPhone/1.htm">iPhone</a>
                                    <div>一般情况下,可能我们写的单例模式是这样的: 
#import <Foundation/Foundation.h>

@interface Downloader : NSObject

+ (instancetype)sharedDownloader;

@end


#import "Downloader.h"

@implementation</div>
                                </li>
                                <li><a href="/article/2994.htm"
                                       title="jquery easyui datagrid 加载成功,选中某一行" target="_blank">jquery easyui datagrid 加载成功,选中某一行</a>
                                    <span class="text-muted">hae</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/datagrid/1.htm">datagrid</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD/1.htm">数据加载</a>
                                    <div>1.首先你需要设置datagrid的onLoadSuccess   
$( 
'#dg' 
).datagrid({onLoadSuccess :  
function 
(data){   
     
$( 
'#dg' 
).datagrid( 
'selectRow' 
,3);   
}});       
2.onL</div>
                                </li>
                                <li><a href="/article/3121.htm"
                                       title="jQuery用户数字打分评价效果" target="_blank">jQuery用户数字打分评价效果</a>
                                    <span class="text-muted">ini</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div>效果体验:http://hovertree.com/texiao/jquery/5.htmHTML文件代码: 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery用户数字打分评分代码 - HoverTree</</div>
                                </li>
                                <li><a href="/article/3248.htm"
                                       title="mybatis的paramType" target="_blank">mybatis的paramType</a>
                                    <span class="text-muted">kerryg</span>
<a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>MyBatis传多个参数: 
1、采用#{0},#{1}获得参数: 
   Dao层函数方法: 
    public User selectUser(String name,String area); 
 对应的Mapper.xml 
   <select id="selectUser" result</div>
                                </li>
                                <li><a href="/article/3375.htm"
                                       title="centos 7安装mysql5.5" target="_blank">centos 7安装mysql5.5</a>
                                    <span class="text-muted">MrLee23</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。 
  
#列出所有被安装的rpm package rpm -qa | grep mariadb 
  
#卸载 
rpm -e mariadb-libs-5.</div>
                                </li>
                                <li><a href="/article/3502.htm"
                                       title="利用thrift来实现消息群发" target="_blank">利用thrift来实现消息群发</a>
                                    <span class="text-muted">qifeifei</span>
<a class="tag" taget="_blank" href="/search/thrift/1.htm">thrift</a>
                                    <div>           Thrift项目一般用来做内部项目接偶用的,还有能跨不同语言的功能,非常方便,一般前端系统和后台server线上都是3个节点,然后前端通过获取client来访问后台server,那么如果是多太server,就是有一个负载均衡的方法,然后最后访问其中一个节点。那么换个思路,能不能发送给所有节点的server呢,如果能就</div>
                                </li>
                                <li><a href="/article/3629.htm"
                                       title="实现一个sizeof获取Java对象大小" target="_blank">实现一个sizeof获取Java对象大小</a>
                                    <span class="text-muted">teasp</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98/1.htm">内存</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1%E5%A4%A7%E5%B0%8F/1.htm">对象大小</a><a class="tag" taget="_blank" href="/search/sizeof/1.htm">sizeof</a>
                                    <div>   由于Java的设计者不想让程序员管理和了解内存的使用,我们想要知道一个对象在内存中的大小变得比较困难了。本文提供了可以获取对象的大小的方法,但是由于各个虚拟机在内存使用上可能存在不同,因此该方法不能在各虚拟机上都适用,而是仅在hotspot 32位虚拟机上,或者其它内存管理方式与hotspot 32位虚拟机相同的虚拟机上 适用。 
  
  </div>
                                </li>
                                <li><a href="/article/3756.htm"
                                       title="SVN错误及处理" target="_blank">SVN错误及处理</a>
                                    <span class="text-muted">xiangqian0505</span>
<a class="tag" taget="_blank" href="/search/SVN%E6%8F%90%E4%BA%A4%E6%96%87%E4%BB%B6%E6%97%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BC%BA%E8%A1%8C%E5%85%B3%E9%97%AD/1.htm">SVN提交文件时服务器强行关闭</a>
                                    <div>在SVN服务控制台打开资源库“SVN无法读取current” ---摘自网络 写道   SVN无法读取current修复方法 Can't read file : End of file found 
 
文件:repository/db/txn_current、repository/db/current 
  
其中current记录当前最新版本号,txn_current记录版本库中版本</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>