Wordpress插件3

过滤器 Filters

  • 过滤器钩子和动作钩子有很大的区别。它让你可以控制代码的输出。
apply_filters() 函数

  • $tag – 过滤器钩子的名字。
  • $value – 传递给任何添加到这个钩子的过滤器的参数。这个函数可以添加任意个额外的 $value 参数传递给过滤器。
  • 注意:在写一个过滤器的时候 $value 必须返回给 WordPress。

过滤器钩子的例子:


template_include 是一个过滤器钩子的名字,
$template 是一个可以通过注册到这个过滤器钩子的过滤器改变的文件名。

什么是过滤器?

一个过滤器是一个注册到过滤器钩子的函数。这个函数最少接受一个参数并在执行完代码后返回那个参数。没有过滤器的过滤器钩子没有任何作用。插件开发者可以通过过滤器钩子改变不同的变量 – 从字符串到多位数组。

当一个过滤器钩子被 apply_filters() 函数调用时,所有注册到这个钩子的过滤器都会被执行。要添加一个过滤器,使用

add_filter() 函数。

下面看看 wp_title 过滤器钩子,它是负责页面的 元素的过滤器钩子。</p> <pre><code><?php apply_filters( 'wp_title', $title, $sep, $seplocation ); ?> </code></pre> <p>wp_title – 钩子名。<br> $title – 一个字符串,要过滤并返回给 WordPress 的值。<br> $sep – 说明 <title> 元素之间的分隔符是什么。<br> $seplocation – 分隔符的位置。下一个例子中要用到。<br> 现在写一个函数来过滤 $title 的输出 – 在页面的 title 后面附加站点的名字:</p> <pre><code><?php add_filter( 'wp_title', 'boj_add_site_name_to_title', 10, 2 ); function boj_add_site_name_to_title( $title, $seq ) { /* 得到网站名称 */ $name = get_bloginfo( 'name' ); /* 附加到 $title 变量。 */ $title .= $sqp.' '.$name; /* 返回 $title */ return $title; } ?> </code></pre> <p>boj_add_site_name_to_title() 函数修改 $title 参数并返回给 WordPress。$sep 参数在函数中使用,但没有返回。</p> <p>过滤器钩子函数</p> <h5>apply_filters_ref_array</h5> <p>类似于动作钩子里面的do_action_ref_array) 函数。</p> <pre><code><?php apply_filters_ref_array( $tag, $args ); ?> </code></pre> <p>假设你要执行一个一般的 WordPress 没有的复杂的数据库查询来加载首页的 posts。WordPress 提供了一个叫做 posts_results 的过滤器钩子使得你可以改变它。下面是 WordPress 核心中的代码:</p> <pre><code><?php $this -> posts = apply_filters_ref_array( 'posts_results', array( $this -> posts, & $this ) ); ?> </code></pre> <p>这个过滤器钩子向所有注册到它的过滤器传递一个 post 对象的数组。下面的例子,你完全重写这个 post 对象的数组并用自定义的内容代替。默认情况下,WordPress 查询 post 类型的 posts。下面改成查询 page 类型的 psots 并显示在首页。</p> <p>这段代码使用了 wpdb 类,在 part-6 “插件安全” 中将详细介绍。</p> <pre><code><?php add_filter( 'posts_result', 'boj_custom_home_page_posts'); function boj_cumstom_home_page_posts( $result ) { global $wpdb,$wp_query; /* 检查是否在首页 */ if( is_home() ) { /* 每页的 post 个数 */ $per_page= get_option('posts_per_page'); /* 得到当前页 */ $paged= get_query_var('paged'); /* 设置 $page 变量 */ $page= ( ( 0 ==$paged|| 1 ==$paged ) ? 1 : absint($paged ) ); /* 设置偏移的 posts 的个数 */ $offset= ($page- 1 ) * $per_page.','; /* 通过 $offset 和 要显示的 posts 数量来设置 limit */ $limits='LIMIT'.$offset.$per_page; /* 从数据库查询结果 */ $result=$wpdb-> get_results(" SELECT SQL_CALC_FOUND_ROWS$wpdb-> posts. * FROM $wpdb-> posts WHERE 1 = 1 AND post_type ='page' AND post_status ='publish' ORDER BY post_title ASC$limits" ); } return $result; } ?> </code></pre> <p>remove_filter</p> <pre><code><?php remove_filter( $tag, $function_to_remove,$priority,$accepted_args); ?> </code></pre> <p>这和前面的 remove_action 类似。</p> <p>下面看看 WordPress 定义在 wp-includes/default-filters.php 页面中的默认的过滤器。其中一个有意思的过滤器叫做 wpautop(),它将双换行转换成 HTML 的 <p> </p>。这也就是我们在 HTML 发布内容时,直接回车便可在最终前端显示的时候换行的原因。它在核心代码中的几个钩子中都执行。下面是其中一个实例:</p> <pre><code><?php add_filter( 'the_content', 'wpautop'); ?> </code></pre> <p>这将 wpautop() 过滤器应用到 post 的内容中,把每个换行都转换成段落( <p> )。但是也许有的客户不希望他的内容自动变成段落。那么你就可以使用 remove_filter() 函数从 the_content 钩子中删除这个过滤器。</p> <pre><code><?php remove_filter( 'the_content', 'wpautop'); ?> </code></pre> <p>因为在 add_filter 的时候没有定义优先级,所以这里也不需要。</p> <h4>remove_all_filters</h4> <p>和前面的remove_all_actions类似。</p> <pre><code><?php remove_all_filters($tag,$priority); ?> </code></pre> <h5>has_filter</h5> <p>和前面的 has_action 类似。</p> <h4>current_filter</h4> <p>同样类似于 did_action。不过它不仅仅对过滤器钩子有效,同样对动作钩子也有效,所以它返回的是当前的 action 或者 filter 钩子。这个函数在你对多个钩子使用单个函数,但是需要依赖不同的钩子执行不同的内容的时候非常的有用。例如,客户希望在 post 标题 和内容中限制一些内容,但是这两个限制的minganci的集合是不同的。使用 current_filter() 函数来根据钩子设置不同的minganci表就可以实现用一个函数同时过滤 the_content 和 the_title。使用下面的代码,你可以把minganci替换成**。</p> <pre><code><?php add_filter( 'the_content', 'boj_replace_unwanted_words'); add_filter( 'the_title', 'boj_replace_unwanted_words'); function boj_replace_unwanted_words( $text ) { /* 如果过滤器钩子是 the_content */ if('the_content'== current_filter() ) $words=array('min','gan','ci'); /* 如果钩子是 the_title */ elseif('the_title'== current_filter() ) $words=array('zhen','de','hen','min','gan'); /* 替换minganci */ $text=str_replace($words,'**',$text); return$text; } ?> </code></pre> <h5>快速返回函数</h5> <p>你经常需要写一个函数返回一个常用的值给一个过滤器钩子,例如 true,false,或者一个空数组。你甚至尝试使用 PHP 的 create_function() 函数来快速返回一个值。</p> <p>WordPress 提供几个函数处理这种情况。</p> <p>下面是例子禁用了 user contact 方法 – 在 WordPress 的个人用户管理页面中的一系列 <input>。要禁用这些表单项,你需要返回一个空数组。通常,你必须添加过滤器钩子调用和函数。</p> <pre><code><?php add_filter( 'user_contactmethods', 'boj_return_empty_array' ); function boj_return_empty_array() { returnarray(); } ?> </code></pre> <p>写这样的代码一两次并没什么。但是写一个返回空数组的函数太傻了。WordPress 使之简单化了。因为要禁用这些表单项,你只需要使用 WordPress 的 __return_empty_array() 函数作为过滤器来快速返回一个空数组。如下:</p> <pre><code>add_filter( 'user_contactmethods', '__return_empty_array' ) </code></pre> <p>还有几个类似的快速返回函数:</p> <ul> <li>__return_false</li> <li>__return_true</li> <li>__return_zero<br> 如果上面的函数不符合你的要求,你还可以创建自己的快速返回函数。</li> </ul> <h3>常用的过滤器钩子</h3> <p>WordPress 上百种过滤去钩子提供给插件开发者。下面介绍一些常用的过滤器钩子。</p> <h5>the_content</h5> <p>the_content 可以说是用的最多的过滤器钩子了。没有内容,一个网站一点用处也没有。内容是一个网站上最重要的东子,插件使用这个钩子为网站添加许多特色。</p> <p>the_content 钩子向所有注册给它的过滤器传递一个 post 的内容。之后由过滤器来控制内容,通常添加一些格式化或者附加而外的一些信息。下面的例子根据 post 分类,当用户阅读一篇 post 时显示一个附加的相关 post 列表到 the_content。</p> <pre><code><?php add_filter( 'the_content', 'boj_add_related_posts_to_content'); function boj_add_related_posts_to_content( $content) { /* 如果不是单篇文章,直接返回 content */ if( !is_singular('post') ) return$content; /* 得到当前 post 的分类 */ $terms= get_the_terms( get_the_ID(),'category'); /* 循环分类,并将它们的 ID 放到一个数组中 */ $categories=array(); foreach($termsas$term ) $categories[] =$term-> term_id; /* 从数据库查询相同分类的 posts */ $loop=newWP_Query( array( 'cat__in'=>$categories, 'posts_per_page'=> 5, 'post__not_in'=>array( get_the_ID() ), 'orderby'=>'rand' ) ); /* 是否有相关 posts 存在 */ if($loop-> have_posts() ) { /* 开始 ul */ $content.='<ul class="related-posts">'; while($loop-> have_posts() { $loop-> the_post(); /* 添加 post 标题 */ $content.= the_title ( '<li><a href="'.get_permalink().'">', '</a></li>', false ); } /* 结束 ul */ $content.='</ul>'; /* 重置 query */ wp_reset_query(); } /* 返回 content */ $return $content; } ?> </code></pre> <h5>the_title</h5> <p>文章的标题几乎和内容一样重要,所以 the_title 也是一个常用的过滤器钩子。你可以使用这个钩子添加信息,或者直接重写。</p> <p>应用给 the_title 钩子的一个有用的过滤器就是去除标题中 HTML 标签的过滤器函数。用户有时会添加一些标签到标题中,这可能会破坏正常的格式。使用下面的代码,你可以过滤掉所有用户可能添加到标签。</p> <pre><code><?php add_filter( 'the_title', 'boj_strip_tags_from_titles'); function boj_strip_tags_from_title( $title ) { $title=strip_tags($title); $return $title; } ?> </code></pre> <p>同样 comment_text 也很常用。</p> <p>下面的例子中,检查一条评论是否是网站的注册用户发表的。如果是注册用户,你可以附加一段用户信息的说明( 详见:Part-8,”用户” )</p> <pre><code><?php add_filter( 'comment_text', 'boj_add_role_to_comment_text'); function boj_add_role_to_comment_text( $text ) { global$comment; /* 检查是否是注册用户 */ if($comment-> user_id > 0 ) { /* 新建一个用户对象 */ $user=newWP_User( $comment-> user_id ); /* 如果用户有一个角色,添加到评论内容中 */ if(is_array($user-> roles ) ) $text.='<p>User Role: '.$user-> roles[0]. '</p>'; } return$text; } ?> </code></pre> <h5>template_include</h5> <p>template_include 是其他一些更特殊的过滤器钩子的一类”杂物包”( catchall )过滤器钩子。</p> <ul> <li>front_page_template</li> <li>home_template</li> <li>single_template</li> <li>page_template</li> <li>attachment_template</li> <li>archive_template</li> <li>category_template</li> <li>tag_template</li> <li>author_template</li> <li>date_template</li> <li>search_template</li> <li>404_template</li> <li>index_template<br> 它用在 theme template 过滤器后面,当当前页被选中后。WordPress 根据读者当前浏览的页面来选择一个模板。你可以为每一个独立的过滤器钩子添加一个过滤器,也可以在最后使用 template_include 钩子一起过滤他们。</li> </ul> <p>比如你想按照你的插件的标准构造一个模板层级结构,而不是使用 WordPress 默认的模板层级。template_include 和上面列表中的钩子可以满足你。</p> <p>下面的例子中,根据分类判断一个 posts 的模板是否存在。默认情况下,WordPress 先检查 single.php,如果不存在,再检查 index.php文件。而你的函数查找一个叫做 single-category-$slug.php ( $slug 是分类的别名 )的文件。所以如果用户有一个叫 art 的分类,同时一个模板的名字叫做 single-category-art.php,那么这个文件会被用来代替 single.php。</p> <pre><code><?php add_filter( 'single_template', 'boj_single_template' ); function boj_single_template( $template ) { global$wp_query; /* 检查是否在浏览单个 post */ if( is_singular('post') ) { /* 获得 post ID */ $post_id=$wp_query-> get_queried_object_id(); /* 获得 post 的分类 */ $terms= get_the_terms($post_id,'category'); /* 循环分类,添加别名作为文件名的一部分 */ $template=array(); foreach($termsas$term ) $templates[] ="single-category-{$term->slug}.php"; /* 检查模板是否存在 */ $locate= locate_template($templates); /* 如果找到,让它成为新模板 */ if( !empty($locate) ) $template=$locate; } /* 换回模板文件名 */ return$template; } ?> </code></pre> <h5>使用一个类中的钩子</h5> <p>前面已经讲了许多通过 PHP 函数来使用动作钩子和过滤器钩子的例子。在类中添加一个方法作为一个动作或者过滤器的时候,格式和 add_action() 和 add_filter() 略微有些不同。</p> <p>一般来说,插件使用函数而不是类中的方法作为动作或者过滤器。但是,可能有些时候使用类更适合,所以你要知道如何类在类中将方法注册到钩子。</p> <p>前面已经提到的注册函数到一个动作钩子的方法:</p> <pre><code><?php add_action( $tag, $function_to_add); ?> </code></pre> <p>当在类中将方法作为 $function_to_add 参数时,你必须把 $function_to_add 变成一个数组,其中 & $this 作为第一个参数,方法名作为第二个参数:</p> <pre><code><?php add_action( $tag, array( &$this,$method_to_add) ); ?> </code></pre> <p>对于过滤器钩子也是一样。一般的将函数添加到一个过滤器钩子类似于:</p> <pre><code><?php add_filter( $tag, $function_to_add); ?> </code></pre> <p>当使用类的方法的时候,要改成:</p> <pre><code><?php add_filter( $tag, array( &$this,$method_to_add) ); ?> </code></pre> <p>下面的例子中,创建了一个类,包含一个构造函数,一个作为动作的方法,和一个作为过滤器的方法。add_filters() 方法检查用户是否在浏览单篇 post。如果是 content() 方法附加最后的修改时间到 post 的内容中</p> <pre><code><?php class BOJ_My_Plugin_Loader { /* 类的构造函数 */ functionBOJ_My_Plugin_Loader() { /* 为 'template_redirect' 钩子添加 'singular_check' 方法 */ add_action('template_redirect',array( & $this,'singular_check') ); } /* 作为动作的方法 */ functionsingular_check() { /* 如果在看单个文章,过滤内容 */ if( is_singular() ) add_filter('the_content',array( & $this,'content') ); } /* 作为过滤器的方法 */ functioncontent($content) { /* 得到 post 的最后修改时间 */ $date= get_the_modified_time( get_option('date_format') ); /* 附加修改时间到 content */ $content.='<p> 最后修改于:'.$date.'</p>'; return$content; } } $boj_myplugin_loader=newBOJ_My_Plugin_Loader(); ?> </code></pre> <p>创建自定义钩子<br> 插件不但可以使用内核的内置钩子,他们也可以创建自定义的钩子供其他插件和模板使用。</p> <p>插件可以使用4个可用函数中的一个来创建自定义钩子。</p> <ul> <li>do_action()</li> <li>do_action_ref_array()</li> <li>apply_filters()</li> <li>apply_filters_ref_array()<br> 前两个创建自定义动作钩子,后两个创建自定义过滤器钩子。</li> </ul> <h5>创建自定义钩子的优点</h5> <p>自定义钩子使得你的插件更灵活,使其可以被其他插件扩展,让你可以钩到你的整个插件自己的其他执行过程中。</p> <p>使用自定义钩子还可以防止用户直接修改你的插件。这一点的重要性在于,当你更新你的插件时,用户不会失去他们修改的内容。</p> <h5>自定义动作钩子实例</h5> <p>在这个例子中,建立了一个插件安装函数。这个函数定义了一个可以更换的常量。别的插件也可以在这个钩子上执行任何代码。因为你在那一点上提供了钩子。</p> <pre><code><?php add_action( 'plugins_loaded', 'boj_myplugin_setup' ); function boj_myplugin_setup() { /* 允许动作最先触发 */ do_action('boj_myplugin_setup_pre'); /* 检查 root slug 是否定义 */ if( !defined('BOJ_MYPLUGIN_ROOT_SLUG') ) define('BOJ_MYPLUGIN_ROOT_SLUG','articles'); } ?> </code></pre> <p>其他插件或者模板可以钩到 boj_myplugin_setup_pre 来执行任何函数。</p> <p>比如你想把 BOJ_MYPLUGIN_ROOT_SLUG 常量从 ‘articles’ 改为 ‘papers’ ,你可以建立一个动作并添加到这个钩子中:</p> <pre><code><?php add_action( 'boj_myplugin_setup_pre','boj_define_myplugin_constants'); function boj_define_myplugin_constants() { define('BOJ_MYPLUGIN_ROOT_SLUG','papers'); } ?> </code></pre> <p>自定义过滤器钩子实例</p> <p>假设有一个函数显示一个具有一个特定阐述的文章列表。你也许希望其他人能够过滤那个参数或者过滤最终结果。</p> <p>下面的例子中,写一个函数根据收到的评论条数列取了前10的文章。这个函数让用户可以在从数据库获取数据前过滤这个参数,并且可以过滤最终输出的 HTML 列表</p> <pre><code><?php function boj_posts_by_comments() { /* 默认参数 */ $args=array( 'post_type'=>'post', 'posts_per_page'=> 10, 'order'=>'DESC', 'oerderby'=>'comment_count' ); /* 应用过滤器 */ $args= apply_filters('boj_posts_by_comments_args',$args); /* 设置输出变量 */ $out=''; /* 由给定的参数从数据库查询文章 */ $loop = newWP_Query( $args ); /* 检查是否返回结果 */ if($loop-> have_posts() ) { $out.='<ul class="posts-by-comments" >'; while($loop-> have_posts() ) { $loop-> the_post(); $out.= the_title('<li>','</li>', false ); } $out.='</ul>'; } $out= apply_filters('boj_posts_by_comments',$out); echo $out; } ?> </code></pre> <p>要过滤参数,给 boj_posts_by_comments_args 添加一个过滤器。比如你希望把数量从默认的10变成15,添加下面的过滤器:</p> <pre><code><?php add_filter( 'boj_posts_by_comments_args','boj_change_posts_by_comments_args'); function boj_change_posts_by_comments_args( $args) { $args['posts_per_page'] = 15; return $args; } ?> </code></pre> <p>要过滤最后的 HTML 输出,添加一个过滤器到 boj_posts_by_comments。比如你想把 ul 改成 ol。</p> <pre><code><?php add_filter( 'boj_posts_by_comments', 'boj_change_posts_by_comments' ); function boj_change_posts_by_comments( $out ) { $out=str_replace('<ul','<ol',$out); $out=str_replace('</ul>','</ol>',$out); return$out; } ?> </code></pre> <p>上哪找钩子?<br> 要给出 WordPress 中所有钩子的列表几乎是不可能的。前面我们讨论了一些常用的动作和过滤器钩子,这一节仅仅讨论一小部分 WordPress 提供的钩子。</p> <p>WordPress 的新版本会加入新的钩子。最终查看不同版本的内核可以让你找到可以用在插件中的新钩子。</p> <p>在内核中搜索钩子</p> <p>作为一个插件开发这,你应该熟悉 WordPress 的内核。寻找钩子能很好的帮助你熟悉 WordPress 内核是如何工作的。没有更好的方法来搞明白 PHP 代码在内核中是如何工作的了。</p> <p>要寻找钩子的一个简单的方法是在编辑器中打开一个 WordPress 文件然后搜索下面的四个词:</p> <ul> <li>do_action</li> <li>do_action_ref_array</li> <li>apply_filters</li> <li>apply_filters_ref_array<br> 这四个函数,每一个都创建一个钩子。</li> </ul> <h5>变量钩子</h5> <p>在 WordPress 的内核中找钩子的时候,你会遇到变量钩子。通常钩子的名字是一个静态的字符串。但是变量钩子的名字跟着特定的变量而改变。</p> <p>一个很好的例子就是 load-$pagenow 动作钩子。变量 $pagenow 根据 WordPress 中当前浏览的 admin 页面而改变。这个钩子如下:</p> <pre><code><?php do_action( "load-$pagenow" ); ?> </code></pre> <p>变量 $pagenow 会变成当前访问页面的名字。例如 new post 页面的钩子是 load-post-new.php,而编辑页面的是 load-post.php。这就使得插件仅仅对特定的 admin 页面执行代码。WordPress 有几个动作和过滤器钩子的名称里面是含有变量的。</p> <p>通常,这些钩子的名字变成给定的内容,使得插件开发者可以在特定的环境下执行代码。</p> <h3>钩子参考列表</h3> <p>虽然在核心里面搜索钩子有助于你增长经验,但是有时你需要一些网上的参考列表。</p> <p>WordPress 在 Codex 中有官方的钩子参考列表。</p> <ul> <li>http://codex.wordpress.org/Plugin_API/Action_Reference</li> <li>http://codex.wordpress.org/Plugin_API/Filter_Reference</li> </ul> <p>在 Part-18,开发人员工具箱,将介绍更多帮助插件开发者的工具。</p> <h2>总结</h2> <p>钩子是创建 WordPress 插件的最重要的一环了。每次你开始创建一个插件,你都要把你的插件钩到 WordPress 的动作钩子和过滤器钩子中。钩子是插件开发中必不可少的工具。在了解了钩子之后,就是时候开始创建插件了。</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1212478113087328256"></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">你可能感兴趣的:(Wordpress插件3)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1901642400963555328.htm" title="【技术解密】本地部署 DeepSeek-V3:完整指南" target="_blank">【技术解密】本地部署 DeepSeek-V3:完整指南</a> <span class="text-muted">海棠AI实验室</span> <a class="tag" taget="_blank" href="/search/%E2%80%9C%E6%99%BA%E5%85%83%E5%90%AF%E7%A4%BA%E5%BD%95%E2%80%9C/1.htm">“智元启示录“</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/AI%E5%8F%91%E5%B1%95%E7%9A%84%E6%B7%B1%E5%BA%A6%E6%80%9D%E8%80%83%E4%B8%8E%E6%9C%AA%E6%9D%A5%E5%B1%95%E6%9C%9B/1.htm">AI发展的深度思考与未来展望</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>目录引言运行环境需求下载与安装推理部署总结参考资源引言随着人工智能的快速发展,开源大模型正逐步改变着技术生态。DeepSeek-V3作为最新的开源大模型之一,不仅提供了强大的推理能力,同时也支持本地部署,使开发者可以灵活地进行自定义优化。本文将详细介绍如何在本地部署DeepSeek-V3,涵盖系统要求、安装步骤、模型转换及不同推理框架的应用。1.运行环境需求1.1硬件要求✅NVIDIAGPU(支持</div> </li> <li><a href="/article/1901637858842701824.htm" title="TRS收益互换系统开发为何敢称“无限拓展”?模块化架构+弹性集群揭秘!" target="_blank">TRS收益互换系统开发为何敢称“无限拓展”?模块化架构+弹性集群揭秘!</a> <span class="text-muted">Ashlee_code</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>《【券商震惊】传统询价3小时→TRS黑科技10分钟!盈立证券交易量暴增150%背后秘密》开篇:询价耗时3小时?券商正在被低效“慢性杀死”电话询价、邮件比价、Excel汇总——传统场外交易中,一次询价流程动辄数小时,客户流失率高达40%!TRS收益互换平台,依托DeepSeek动态定价算法与多发行方实时比价引擎,将询价响应时间从3小时压缩至10分钟,助力盈立证券交易量飙升150%,彻底改写行业游戏规</div> </li> <li><a href="/article/1901637857127231488.htm" title="24小时响应+零宕机!TRS收益互换系统售后如何成为券商“救命稻草”?" target="_blank">24小时响应+零宕机!TRS收益互换系统售后如何成为券商“救命稻草”?</a> <span class="text-muted">Ashlee_code</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>《【券商震惊】传统询价3小时→TRS黑科技10分钟!盈立证券交易量暴增150%背后秘密》开篇:询价耗时3小时?券商正在被低效“慢性杀死”电话询价、邮件比价、Excel汇总——传统场外交易中,一次询价流程动辄数小时,客户流失率高达40%!令克软件TRS收益互换平台,依托DeepSeek动态定价算法与多发行方实时比价引擎,将询价响应时间从3小时压缩至10分钟,助力盈立证券交易量飙升150%,彻底改写行</div> </li> <li><a href="/article/1901636472482623488.htm" title="MySQL---DDL(3.17)" target="_blank">MySQL---DDL(3.17)</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/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>1、DDL-数据库操作查询:查询所有数据库:SHOWDATABASES;查询当前数据库:SELECTDATABASE();创建:CREATEDATABASE[IFNOTEXISTS]数据库名[DEFAULTCHARSET字符集][COLLATE排序规则];删除:DROPDATABASE[IFEXISTS]数据库名;使用:USE数据库名;2、DDL--表操作-查询查询当前数据库所有表:SHOWTAB</div> </li> <li><a href="/article/1901633700265783296.htm" title="证券交易系统核心技术解析:LinkTrader 的毫秒级响应架构与风控实践" target="_blank">证券交易系统核心技术解析:LinkTrader 的毫秒级响应架构与风控实践</a> <span class="text-muted">Ashlee_code</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>一、行业痛点:为什么传统交易系统正在被淘汰?2024年,证券行业guweng22346的技术竞争已从“功能完备”转向**“速度+智能”的极限博弈**。以下是传统系统的三大致命缺陷:数据延迟:非官方行情源导致套利窗口丢失(实测延迟普遍>0.1秒);风控低效:依赖人工监控,凌晨时段风险拦截率不足30%;扩展性差:单体架构下订单处理峰值低于10万/秒,极易崩溃。典型案例:某券商因系统延迟0.05秒,单日</div> </li> <li><a href="/article/1901632692068347904.htm" title="音频 Alsa、Framework及Android" target="_blank">音频 Alsa、Framework及Android</a> <span class="text-muted">‘禹’你一起</span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>目录1Alsa、Framework及Android1.1ALSA架构简介图11.2ALSA架构简介图21.3ALSA架构简介图31.4ALSA架构简介图41.5ALSA架构简介图51.6ALSA架构简介图61.8音频代码1Alsa、Framework及Android目前,linux系统常用的音频驱动有两种形式:alsa和oss。Alsa:现在是linux下音频驱动的主要形式,与简单的oss兼容。o</div> </li> <li><a href="/article/1901632188152082432.htm" title="【大模型实战篇】使用GPTQ量化QwQ-32B微调后的推理模型" target="_blank">【大模型实战篇】使用GPTQ量化QwQ-32B微调后的推理模型</a> <span class="text-muted">源泉的小广场</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E9%87%8F%E5%8C%96/1.htm">大模型量化</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E7%90%86%E6%A8%A1%E5%9E%8B%E9%87%8F%E5%8C%96/1.htm">推理模型量化</a><a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%8C%96/1.htm">量化</a><a class="tag" taget="_blank" href="/search/qwq32b/1.htm">qwq32b</a><a class="tag" taget="_blank" href="/search/gptq%E9%87%8F%E5%8C%96/1.htm">gptq量化</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%8E%A8%E7%90%86/1.htm">大模型推理</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98/1.htm">性能调优</a> <div>1.量化背景之所以做量化,就是希望在现有的硬件条件下,提升性能。量化能将模型权重从高精度(如FP32)转换为低精度(如INT8/FP16),内存占用可减少50%~75%。低精度运算(如INT8)在GPU等硬件上计算效率更高,推理速度可提升2~4倍。我们的任务是,将QwQ-32B微调后的推理模型,也就是bf16的精度,通过量化,压缩到int4。关于QwQ-32B微调,可以参考《利用ms-swift微</div> </li> <li><a href="/article/1901631177463230464.htm" title="嵌入式开发之STM32学习笔记day06" target="_blank">嵌入式开发之STM32学习笔记day06</a> <span class="text-muted">小程同学>o<</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0%E4%B9%8BSTM32/1.htm">嵌入式学习之STM32</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>基于STM32F103C8T6的开发实践——从入门到精通011.引言STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器,广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款,凭借其强大的性能、丰富的外设接口和低廉的价格,成为了开发者的首选之一。本文将通过实例,详细介绍如何基于STM32F103C8T6进行开发,并带领读者完成从简</div> </li> <li><a href="/article/1901630420097757184.htm" title="Github开源库Xpopup代码阅读" target="_blank">Github开源库Xpopup代码阅读</a> <span class="text-muted">月亮下的小草屋</span> <a class="tag" taget="_blank" href="/search/github%E5%BC%80%E6%BA%90%E5%BA%93%E4%BB%A3%E7%A0%81%E9%98%85%E8%AF%BB/1.htm">github开源库代码阅读</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>前言很久没写点东西了,在家闲着考了个驾照,花了一个半月,中国的驾考真的是没眼看,刚拿到驾照当天就被疫情封闭在家,直接封了一个多月,人都麻了,再来一次估计直接过年了,最近刚开始干点活。Xpopup是我非常喜欢的一个Github开源库,一直在用,我在Xpopup2.x版本的时候看过一遍它的代码,现在已经更新到3.x版本了,这两天也没啥事,又重新看了一遍,Xpopup的代码还是很容易阅读的,有兴趣的话可</div> </li> <li><a href="/article/1901629789039554560.htm" title="Linux如何查询文件及文件夹大小" target="_blank">Linux如何查询文件及文件夹大小</a> <span class="text-muted">大数据侠客</span> <a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%9B%B8%E5%85%B3/1.htm">操作系统相关</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>查看当前目录下各文件、文件夹的大小,这个比较实用du-h-max-depth=1*查询当前目录总大小du-sh3.最大文件夹倒叙和正序du-s*|sort-rn从小到大按字节排序du-sh*sort-n从小到大按字节和M排序4.最大文件夹倒排前10和后10du-sh*|sort-rn|head前面10个du-sh*|sort-rn|tail后面10个</div> </li> <li><a href="/article/1901627899891478528.htm" title="pytorch 天花板级别的知识点 你可以不会用 但是不能不知道" target="_blank">pytorch 天花板级别的知识点 你可以不会用 但是不能不知道</a> <span class="text-muted">小赖同学啊</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>PyTorch的高级知识涵盖了从模型优化到分布式训练的广泛内容,适合已经掌握基础知识的开发者进一步提升技能。以下是PyTorch的高级知识点,详细且全面:1.模型优化与加速1.1混合精度训练定义:使用半精度(FP16)和单精度(FP32)混合训练,减少内存占用并加速计算。实现:使用torch.cuda.amp模块。示例:fromtorch.cuda.ampimportautocast,GradSc</div> </li> <li><a href="/article/1901627898926788608.htm" title="【GPT入门】第23课 langchain serve介绍" target="_blank">【GPT入门】第23课 langchain serve介绍</a> <span class="text-muted">*星星之火*</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a> <div>【GPT入门】第23课langchainserve介绍1.langchain介绍2.思路3.代码1.langchain介绍langserve是一个用于简化LangChain应用部署的工具,它可以将使用LangChain构建的链(chains)、代理(agents)等组件快速转化为RESTfulAPI服务,下面从多个方面详细介绍它的作用:1.简化部署流程一键部署为API:LangChain可用于构建</div> </li> <li><a href="/article/1901627899467853824.htm" title="【GPT入门】第24课 langfuse介绍" target="_blank">【GPT入门】第24课 langfuse介绍</a> <span class="text-muted">*星星之火*</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a> <div>【GPT入门】第24课langfuse介绍1.langfuse概念与作用2.代码3.页面效果4.设计模式1.装饰器模式2.上下文管理模式1.langfuse概念与作用Langfuse是一款专为大规模语言模型(LLM)应用开发设计的开源平台。其作用主要包括以下几个方面:提升开发效率:通过消除LLM应用构建与运维的复杂性,让开发者、运维团队及产品经理能更专注于核心开发与迭代优化,减少在监控与优化方面的</div> </li> <li><a href="/article/1901627772590157824.htm" title="【GPT入门】第20课 langchain的function calling 初步体验" target="_blank">【GPT入门】第20课 langchain的function calling 初步体验</a> <span class="text-muted">*星星之火*</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>【GPT入门】第20课langchain的functioncalling初步体验1.langchain的functioncalling非常简洁2.代码3.执行结果:1.langchain的functioncalling非常简洁在方法名说明方法用途和参数作用增加@tool标签langchain方法自动把@tool转为方法定义,后续方法调用都很简洁下面代码用支持单函数与多函数调用,自己体验一下quer</div> </li> <li><a href="/article/1901625631301496832.htm" title="73_Go基础_1_43 方法继承" target="_blank">73_Go基础_1_43 方法继承</a> <span class="text-muted">芦苇King</span> <a class="tag" taget="_blank" href="/search/05_Go_01/1.htm">05_Go_01</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</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> <div>packagemainimport"fmt"//1.定义一个"父类"typePersonstruct{namestringageint}//2.定义一个"子类"typeStudentstruct{Person//结构体嵌套,模拟继承性schoolstring}//3.方法func(pPerson)eat(){fmt.Println("父类的方法,吃窝窝头。。")}func(sStudent)stu</div> </li> <li><a href="/article/1901625124294029312.htm" title="一个简单的日志类Logger" target="_blank">一个简单的日志类Logger</a> <span class="text-muted">qinfen123456</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>实现一个C++简单日志类,具备以下特性:日志文件命名采用文件名前缀加上日期的格式,方便管理与识别。对单个日志文件大小进行限制,当文件大小达到20MB时,自动开启新的日志文件。具备过期文件清理机制,自动删除保留时间超过365天的日志文件,节省存储空间。该日志类是线程安全的,能够在多线程环境下稳定运行,避免日志记录冲突。支持使用format格式进行日志记录,方便灵活输出不同格式的日志信息。自动创建子目</div> </li> <li><a href="/article/1901623486745473024.htm" title="基于多向量检索器的多模态RAG实现:用于表格、文本和图像" target="_blank">基于多向量检索器的多模态RAG实现:用于表格、文本和图像</a> <span class="text-muted">lichunericli</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a> <div>原文地址:Multi-VectorRetrieverforRAGontables,text,andimages2023年10月20日概括跨不同数据类型(图像、文本、表格)的无缝问答是RAG追求的目标之一。我们将发布threenewcookbooks,展示在包含混合内容类型的文档上使用RAG的多向量检索器。这些cookbooks还提出了一些将多模态LLM与多向量检索器配对以解锁图像上的RAG的想法。</div> </li> <li><a href="/article/1901622855813099520.htm" title="基础架构系列篇-系统WIN10使用VS+CMAKE编译AWS-SDK-CPP" target="_blank">基础架构系列篇-系统WIN10使用VS+CMAKE编译AWS-SDK-CPP</a> <span class="text-muted">dong-123456</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E7%82%B9/1.htm">知识点</a><a class="tag" taget="_blank" href="/search/aws/1.htm">aws</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/vs/1.htm">vs</a><a class="tag" taget="_blank" href="/search/cmake/1.htm">cmake</a> <div>基础架构系列篇-系统WIN10使用VS+CMAKE编译AWS-SDK-CPP目录1.下载GIT(https://git-scm.com/downloads),本地安装2.下载CMAKE(https://cmake.org/download/),这里用的版本3.17,本地安装3.下载VS19版本,安装4.下载AWS-SDK-1.8地址https://github.com/aws/aws-sdk-cp</div> </li> <li><a href="/article/1901622225669255168.htm" title="DIFFERENTIAL TRANSFORMER" target="_blank">DIFFERENTIAL TRANSFORMER</a> <span class="text-muted">UnknownBody</span> <a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Daily/1.htm">Daily</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a> <div>本文是LLM系列文章,针对《DIFFERENTIALTRANSFORMER》的翻译。差分Transformer摘要1引言2差分Transformer3实验4结论摘要Transformer倾向于将注意力过度分配到无关的上下文中。在这项工作中,我们引入了DIFFTransformer,它在消除噪声的同时增强了对相关上下文的关注。具体而言,差分注意力机制将注意力得分计算为两个单独的softmax注意力图</div> </li> <li><a href="/article/1901621217035612160.htm" title="学习Web3.0需要具备哪些基础知识?" target="_blank">学习Web3.0需要具备哪些基础知识?</a> <span class="text-muted">alankuo</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>学习Web3.0需要具备以下基础知识:一、计算机科学基础1.编程知识-了解至少一种编程语言,如Python、JavaScript等。这将有助于理解Web3.0应用程序的开发和智能合约的编写。-熟悉编程概念,如变量、数据类型、控制结构、函数等。2.数据结构和算法-掌握常见的数据结构,如数组、链表、栈、队列、树、图等,以及它们的操作和应用。-了解基本的算法,如排序、搜索、递归等,以及它们的时间和空间复</div> </li> <li><a href="/article/1901621090636066816.htm" title="【versal】【petalinux】添加LED驱动" target="_blank">【versal】【petalinux】添加LED驱动</a> <span class="text-muted">qq2108462953</span> <a class="tag" taget="_blank" href="/search/petalinux/1.htm">petalinux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>versal添加LED驱动`提示:本文使用外部kernel与uboot`一、LED1.1LED功能1.2LED节点1.3LED操作命令1.3.1点LED1.3.2关闭LED二、LED驱动2.1驱动文件2.2设备树兼容属性三、LED设备树配置3.1设备树配置信息3.2设备树配置信息讲解四、提示4.1正确4.2错误4.3提示:本文使用外部kernel与uboot一、LED1.1LED功能向节点中bri</div> </li> <li><a href="/article/1901619954906624000.htm" title="Vue3+ts+router项目创建" target="_blank">Vue3+ts+router项目创建</a> <span class="text-muted">DaKangya</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>1.安装Node.js和npm确保你已经安装了Node.js和npm。你可以通过以下命令检查是否已安装:node-vnpm-v如果没有安装,可以从Node.js官网下载并安装。2.安装VueCLIVueCLI是一个用于快速搭建Vue项目的工具。你可以通过以下命令全局安装VueCLI:npminstall-g@vue/cli安装完成后,你可以通过以下命令检查VueCLI是否安装成功:vue--ver</div> </li> <li><a href="/article/1901616176606277632.htm" title="【网络安全 | 漏洞挖掘】价值14981$的Google点击劫持漏洞" target="_blank">【网络安全 | 漏洞挖掘】价值14981$的Google点击劫持漏洞</a> <span class="text-muted">秋说</span> <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/%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98/1.htm">漏洞挖掘</a> <div>未经许可,不得转载。文章目录点击劫持前言漏洞1攻击场景漏洞2攻击场景漏洞3攻击场景漏洞4攻击场景漏洞5攻击场景漏洞6攻击场景点击劫持点击劫持是一种恶意的用户界面攻击技术,也被称为“UI覆盖攻击”或“透明劫持”。攻击者通过创建一个看似正常的网页,并在其中嵌入一个隐藏的、透明的iframe框架,该框架指向目标网站的某个功能页面,如支付页面、订阅页面等。同时,攻击者会在iframe上方放置一些虚假的按钮</div> </li> <li><a href="/article/1901614917606240256.htm" title="【sklearn 07】sklearn工艺流程" target="_blank">【sklearn 07】sklearn工艺流程</a> <span class="text-muted">@金色海岸</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/sklearn/1.htm">sklearn</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>01数据的获取02数据预处理03特征的提取04特征的选择05模型的训练06模型的评估07模型的优化</div> </li> <li><a href="/article/1901611892447703040.htm" title="在 CentOS 7 上安装 PHP 7.3" target="_blank">在 CentOS 7 上安装 PHP 7.3</a> <span class="text-muted">wjf63000</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>在CentOS7上安装PHP7.3可以按照以下步骤进行操作:1.安装必要的依赖和EPEL仓库EPEL(ExtraPackagesforEnterpriseLinux)是为企业级Linux提供额外软件包的仓库,yum-utils用于管理yum仓库。sudoyuminstall-yepel-releaseyum-utils2.添加Remi仓库Remi仓库包含了丰富的PHP版本,你可以从中选择PHP7.</div> </li> <li><a href="/article/1901610255314382848.htm" title="java监听mq消息_Java ActiveMQ 讲解(二)Spring ActiveMQ整合+注解消息监听" target="_blank">java监听mq消息_Java ActiveMQ 讲解(二)Spring ActiveMQ整合+注解消息监听</a> <span class="text-muted">清风明月人间</span> <a class="tag" taget="_blank" href="/search/java%E7%9B%91%E5%90%ACmq%E6%B6%88%E6%81%AF/1.htm">java监听mq消息</a> <div>对于ActiveMQ消息的发送,原声的api操作繁琐,而且如果不进行二次封装,打开关闭会话以及各种创建操作也是够够的了。那么,Spring提供了一个很方便的去收发消息的框架,springjms。整合Spring后,代码不仅变得非常优雅,而且易用性和扩展性更好。废话不多说,直接开搞。1.maven依赖org.apache.xbeanxbean-spring3.16org.springframewor</div> </li> <li><a href="/article/1901607484745904128.htm" title="第二十五篇 SQL优化杀手锏:用分析函数让你的查询快如闪电" target="_blank">第二十五篇 SQL优化杀手锏:用分析函数让你的查询快如闪电</a> <span class="text-muted">随缘而动,随遇而安</span> <a class="tag" taget="_blank" href="/search/SQL%E4%B9%8B%E9%81%93%E2%80%94%E2%80%94%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">SQL之道——从入门到精通</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/sql/1.htm">sql</a> <div>目录一、初识分析函数:外卖骑手的一天1.1真实工作场景二、分析函数三板斧(超直观对比表)三、手把手教学:5大核心函数详解️3.1排名三剑客(班级成绩单案例)3.1.1ROW_NUMBER():唯一学号式排名3.1.2RANK():运动会颁奖式排名3.1.3DENSE_RANK():电梯楼层式排名3.2时间旅行函数(股票分析案例)3.3滑动窗口函数(疫情数据分析)四、性能优化三大绝招(让老板眼前一亮</div> </li> <li><a href="/article/1901607356370841600.htm" title="第十篇 秒懂SQL集合运算与联结:像逛超市一样学SQL" target="_blank">第十篇 秒懂SQL集合运算与联结:像逛超市一样学SQL</a> <span class="text-muted">随缘而动,随遇而安</span> <a class="tag" taget="_blank" href="/search/SQL%E4%B9%8B%E9%81%93%E2%80%94%E2%80%94%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">SQL之道——从入门到精通</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/sql/1.htm">sql</a> <div>目录一、前情提要:SQL集合运算就像整理购物车1.1基础三剑客:UNION/INTERSECT/EXCEPT1.2新手必坑指南⚠️二、表联结:你的SQL人际关系学2.1三种联结方式对比2.2隐藏技巧:过时语法vs现代语法三、高级玩法:用JOIN代替集合运算3.1交集替代方案3.2差集替代方案四、综合练习:超市库存管理系统实战五、学习路线图️一、前情提要:SQL集合运算就像整理购物车想象你有两个购物</div> </li> <li><a href="/article/1901607357390057472.htm" title="第十一篇 SQL高级处理:窗口函数和GROUPING运算符,看这篇就够了" target="_blank">第十一篇 SQL高级处理:窗口函数和GROUPING运算符,看这篇就够了</a> <span class="text-muted">随缘而动,随遇而安</span> <a class="tag" taget="_blank" href="/search/SQL%E4%B9%8B%E9%81%93%E2%80%94%E2%80%94%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">SQL之道——从入门到精通</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/sql/1.htm">sql</a> <div>目录1.窗口函数:像班级排名一样分析数据1.1什么是窗口函数?1.2三大排名函数对比(附生活案例)1.3累计统计:你的工资今年涨了多少?1.4移动平均:预测股票走势的秘密武器2.GROUPING运算符:自动生成Excel式合计行2.1ROLLUP:自动加小计和总计2.2CUBE:所有维度组合统计2.3GROUPINGSETS:只生成我需要的统计3.实战技巧+避坑指南✅必看技巧⚠️常见错误4.互动问</div> </li> <li><a href="/article/1901607358396690432.htm" title="第十六篇 SQL优化之计划控制:进阶之路带上这篇文章,快到起飞" target="_blank">第十六篇 SQL优化之计划控制:进阶之路带上这篇文章,快到起飞</a> <span class="text-muted">随缘而动,随遇而安</span> <a class="tag" taget="_blank" href="/search/SQL%E4%B9%8B%E9%81%93%E2%80%94%E2%80%94%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">SQL之道——从入门到精通</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/sql/1.htm">sql</a> <div>目录一、执行计划是啥?为啥要控制它?1.1执行计划就像导航路线1.2不管控执行计划的后果二、操控执行计划的「三板斧」2.1第一招:HINT大法(直接下指令)2.2第二招:暗度陈仓(间接引导)方法1:统计信息大法方法2:虚拟列黑科技方法3:分区表妙用2.3第三招:计划冻结术(一劳永逸)SQLProfilevsBaseline对比表三、实战演练:从青铜到王者案例:分页查询优化(5秒→0.1秒)四、课后</div> </li> <li><a href="/article/111.htm" title="JAVA基础" target="_blank">JAVA基础</a> <span class="text-muted">灵静志远</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E8%BD%BD/1.htm">加载</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B1%A0/1.htm">字符串池</a><a class="tag" taget="_blank" href="/search/%E8%A6%86%E7%9B%96/1.htm">覆盖</a> <div>一、类的初始化顺序 1 (静态变量,静态代码块)-->(变量,初始化块)--> 构造器 同一括号里的,根据它们在程序中的顺序来决定。上面所述是同一类中。如果是继承的情况,那就在父类到子类交替初始化。 二、String 1 String a = "abc"; JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的对象,根</div> </li> <li><a href="/article/238.htm" title="keepalived实现redis主从高可用" target="_blank">keepalived实现redis主从高可用</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>方案说明 两台机器(称为A和B),以统一的VIP对外提供服务 1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A) 2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务 3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slaveof B,开始</div> </li> <li><a href="/article/365.htm" title="java文件操作大全" target="_blank">java文件操作大全</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近在博客园看到一篇比较全面的文件操作文章,转过来留着。 http://www.cnblogs.com/zhuocheng/archive/2011/12/12/2285290.html 转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html 一.获得控制台用户输入的信息    &nbs</div> </li> <li><a href="/article/492.htm" title="android学习任务" target="_blank">android学习任务</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>任务 完成情况 搞清楚带箭头的pupupwindows和不带的使用 已完成 熟练使用pupupwindows和alertdialog,并搞清楚两者的区别 已完成 熟练使用android的线程handler,并敲示例代码 进行中 了解游戏2048的流程,并完成其代码工作 进行中-差几个actionbar 研究一下android的动画效果,写一个实例 已完成 复习fragem</div> </li> <li><a href="/article/619.htm" title="zoom.js" target="_blank">zoom.js</a> <span class="text-muted">换个号韩国红果果</span> <a class="tag" taget="_blank" href="/search/oom/1.htm">oom</a> <div>它的基于bootstrap 的 https://raw.github.com/twbs/bootstrap/master/js/transition.js  transition.js模块引用顺序 <link rel="stylesheet" href="style/zoom.css"> <script src=&q</div> </li> <li><a href="/article/746.htm" title="详解Oracle云操作系统Solaris 11.2" target="_blank">详解Oracle云操作系统Solaris 11.2</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/Solaris/1.htm">Solaris</a> <div>当Oracle发布Solaris 11时,它将自己的操作系统称为第一个面向云的操作系统。Oracle在发布Solaris 11.2时继续它以云为中心的基调。但是,这些说法没有告诉我们为什么Solaris是配得上云的。幸好,我们不需要等太久。Solaris11.2有4个重要的技术可以在一个有效的云实现中发挥重要作用:OpenStack、内核域、统一存档(UA)和弹性虚拟交换(EVS)。  </div> </li> <li><a href="/article/873.htm" title="spring学习——springmvc(一)" target="_blank">spring学习——springmvc(一)</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a> <div>Spring MVC基于模型-视图-控制器(Model-View-Controller,MVC)实现,能够帮助我们构建像Spring框架那样灵活和松耦合的Web应用程序。   1,跟踪Spring MVC的请求 请求的第一站是Spring的DispatcherServlet。与大多数基于Java的Web框架一样,Spring MVC所有的请求都会通过一个前端控制器Servlet。前</div> </li> <li><a href="/article/1000.htm" title="hdu4342 History repeat itself-------多校联合五" target="_blank">hdu4342 History repeat itself-------多校联合五</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E8%AE%BA/1.htm">数论</a> <div>水题就不多说什么了。 #include<iostream>#include<cstdlib>#include<stdio.h>#define ll __int64using namespace std;int main(){ int t; ll n; scanf("%d",&t); while(t--) </div> </li> <li><a href="/article/1127.htm" title="EJB和javabean的区别" target="_blank">EJB和javabean的区别</a> <span class="text-muted">asia007</span> <a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/ejb/1.htm">ejb</a> <div>EJB不是一般的JavaBean,EJB是企业级JavaBean,EJB一共分为3种,实体Bean,消息Bean,会话Bean,书写EJB是需要遵循一定的规范的,具体规范你可以参考相关的资料.另外,要运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了   1.EJB用于服务端应用开发, 而JavaBeans</div> </li> <li><a href="/article/1254.htm" title="Struts的action和Result总结" target="_blank">Struts的action和Result总结</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/Action%E9%85%8D%E7%BD%AE/1.htm">Action配置</a><a class="tag" taget="_blank" href="/search/Result%E9%85%8D%E7%BD%AE/1.htm">Result配置</a> <div>    一:Action的配置详解:      下面是一个Struts中一个空的Struts.xml的配置文件     <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &quo</div> </li> <li><a href="/article/1381.htm" title="如何带好自已的团队" target="_blank">如何带好自已的团队</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F%E7%AE%A1%E7%90%86/1.htm">团队管理</a><a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F/1.htm">团队</a> <div>在网上看到博客" 怎么才能让团队成员好好干活"的评论,觉得写的比较好。 原文如下: 我做团队管理有几年了吧,我和你分享一下我认为带好团队的几点: 1.诚信         对团队内成员,无论是技术研究、交流、问题探讨,要尽可能的保持一种诚信的态度,用心去做好,你的团队会感觉得到。 2.努力提</div> </li> <li><a href="/article/1508.htm" title="Java代码混淆工具" target="_blank">Java代码混淆工具</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/ProGuard/1.htm">ProGuard</a> <div>Open Source Obfuscators ProGuard http://java-source.net/open-source/obfuscators/proguardProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, m</div> </li> <li><a href="/article/1635.htm" title="【Redis三】基于Redis sentinel的自动failover主从复制" target="_blank">【Redis三】基于Redis sentinel的自动failover主从复制</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。   什么是Sentine</div> </li> <li><a href="/article/1762.htm" title="使用代理实现Hibernate Dao层自动事务" target="_blank">使用代理实现Hibernate Dao层自动事务</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>都说spring利用AOP实现自动事务处理机制非常好,但在只有hibernate这个框架情况下,我们开启session、管理事务就往往很麻烦。 public void save(Object obj){ Session session = this.getSession(); Transaction tran = session.beginTransaction(); try </div> </li> <li><a href="/article/1889.htm" title="maven3实战读书笔记" target="_blank">maven3实战读书笔记</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/maven3/1.htm">maven3</a> <div>Maven简介 是什么? Is a software project management and comprehension tool.项目管理工具 是基于POM概念(工程对象模型) [设计重复、编码重复、文档重复、构建重复,maven最大化消除了构建的重复] [与XP:简单、交流与反馈;测试驱动开发、十分钟构建、持续集成、富有信息的工作区]     功能: </div> </li> <li><a href="/article/2016.htm" title="编程之美-子数组的最大乘积" target="_blank">编程之美-子数组的最大乘积</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> public class MaxProduct { /** * 编程之美 子数组的最大乘积 * 题目: 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意N-1个数的组合中乘积中最大的一组,并写出算法的时间复杂度。 * 以下程序对应书上两种方法,求得“乘积中最大的一组”的乘积——都是有溢出的可能的。 * 但按题目的意思,是要求得这个子数组,而不</div> </li> <li><a href="/article/2143.htm" title="读书笔记-2" target="_blank">读书笔记-2</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a> <div>1、反射 2、oracle年-月-日 时-分-秒 3、oracle创建有参、无参函数 4、oracle行转列 5、Struts2拦截器 6、Filter过滤器(web.xml) 1、反射 (1)检查类的结构 在java.lang.reflect包里有3个类Field,Method,Constructor分别用于描述类的域、方法和构造器。 2、oracle年月日时分秒 s</div> </li> <li><a href="/article/2270.htm" title="[求学与房地产]慎重选择IT培训学校" target="_blank">[求学与房地产]慎重选择IT培训学校</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/it/1.htm">it</a> <div>      关于培训学校的教学和教师的问题,我们就不讨论了,我主要关心的是这个问题       培训学校的教学楼和宿舍的环境和稳定性问题       我们大家都知道,房子是一个比较昂贵的东西,特别是那种能够当教室的房子... &nb</div> </li> <li><a href="/article/2397.htm" title="RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系" target="_blank">RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/rman/1.htm">rman</a><a class="tag" taget="_blank" href="/search/filesperset/1.htm">filesperset</a><a class="tag" taget="_blank" href="/search/PARALLELISM/1.htm">PARALLELISM</a> <div>RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系 转 PARALLELISM --- 我们还可以通过parallelism参数来指定同时"自动"创建多少个通道: RMAN > configure device type disk parallelism 3 ; 表示启动三个通道,可以加快备份恢复的速度。 </div> </li> <li><a href="/article/2524.htm" title="简单排序:冒泡排序" target="_blank">简单排序:冒泡排序</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/1.htm">冒泡排序</a> <div> public void bubbleSort(int[] array){ for(int i=1;i<array.length;i++){ for(int k=0;k<array.length-i;k++){ if(array[k] > array[k+1]){ </div> </li> <li><a href="/article/2651.htm" title="初二上学期难记单词三" target="_blank">初二上学期难记单词三</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/sciet/1.htm">sciet</a> <div>concert 音乐会 tonight 今晚 famous 有名的;著名的 song 歌曲 thousand 千 accident 事故;灾难 careless 粗心的,大意的 break 折断;断裂;破碎 heart 心(脏) happen  偶尔发生,碰巧 tourist 旅游者;观光者 science (自然)科学 marry 结婚 subject 题目;</div> </li> <li><a href="/article/2778.htm" title="I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码" target="_blank">I.安装Memcahce 1. 安装依赖包libevent Memcache需要安装libevent,所以安装前可能需要执行 Shell代码 收藏代码</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-stable make   前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。 异常一: make[2]: cc: Command not found 异常原因:没有安装g</div> </li> <li><a href="/article/2905.htm" title="并发容器" target="_blank">并发容器</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91%E5%AE%B9%E5%99%A8/1.htm">并发容器</a> <div>   通过并发容器来改善同步容器的性能,同步容器将所有对容器状态的访问都串行化,来实现线程安全,这种方式严重降低并发性,当多个线程访问时,吞吐量严重降低。    并发容器ConcurrentHashMap       替代同步基于散列的Map,通过Lock控制。   &nb</div> </li> <li><a href="/article/3032.htm" title="Spring Security(12)——Remember-Me功能" target="_blank">Spring Security(12)——Remember-Me功能</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/Remember+Me/1.htm">Remember Me</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%BD%8F%E6%88%91/1.htm">记住我</a> <div>Remember-Me功能   目录   1.1     概述 1.2     基于简单加密token的方法 1.3     基于持久化token的方法 1.4     Remember-Me相关接口和实现</div> </li> <li><a href="/article/3159.htm" title="位运算" target="_blank">位运算</a> <span class="text-muted">焦志广</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a> <div> 一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&am</div> </li> <li><a href="/article/3286.htm" title="nodejs 数据库连接 mongodb mysql" target="_blank">nodejs 数据库连接 mongodb mysql</a> <span class="text-muted">liguangsong</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/node/1.htm">node</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5/1.htm">数据库连接</a> <div>1.mysql 连接    package.json中dependencies加入     "mysql":"~2.7.0"    执行 npm install      在config 下创建文件 database.js     </div> </li> <li><a href="/article/3413.htm" title="java动态编译" target="_blank">java动态编译</a> <span class="text-muted">olive6615</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/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E7%BC%96%E8%AF%91/1.htm">动态编译</a> <div>    在HotSpot虚拟机中,有两个技术是至关重要的,即动态编译(Dynamic compilation)和Profiling。     HotSpot是如何动态编译Javad的bytecode呢?Java bytecode是以解释方式被load到虚拟机的。HotSpot里有一个运行监视器,即Profile Monitor,专门监视</div> </li> <li><a href="/article/3540.htm" title="Storm0.9.5的集群部署配置优化" target="_blank">Storm0.9.5的集群部署配置优化</a> <span class="text-muted">roadrunners</span> <a class="tag" taget="_blank" href="/search/%E4%BC%98%E5%8C%96/1.htm">优化</a><a class="tag" taget="_blank" href="/search/storm.yaml/1.htm">storm.yaml</a> <div>nimbus结点配置(storm.yaml)信息: # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional inf</div> </li> <li><a href="/article/3667.htm" title="101个MySQL 的调节和优化的提示" target="_blank">101个MySQL 的调节和优化的提示</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div> 1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。   2. 不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢。   3. 使用电池供电的RAM(注:RAM即随机存储器)。   4. 使用高级的RAID(注:Redundant Arrays of Inexpensive Disks,即磁盘阵列</div> </li> <li><a href="/article/3794.htm" title="zoj 3829 Known Notation(贪心)" target="_blank">zoj 3829 Known Notation(贪心)</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/ZOJ/1.htm">ZOJ</a> <div> 题目链接:zoj 3829 Known Notation 题目大意:给定一个不完整的后缀表达式,要求有2种不同操作,用尽量少的操作使得表达式完整。 解题思路:贪心,数字的个数要要保证比∗的个数多1,不够的话优先补在开头是最优的。然后遍历一遍字符串,碰到数字+1,碰到∗-1,保证数字的个数大于等1,如果不够减的话,可以和最后面的一个数字交换位置(用栈维护十分方便),因为添加和交换代价都是1</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>