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/1901606272831123456.htm" title="DeepBranchTracer:一种使用多特征学习进行曲线结构重建的通用方法" target="_blank">DeepBranchTracer:一种使用多特征学习进行曲线结构重建的通用方法</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E9%9B%86/1.htm">数据集</a> <div>2024-02-02,由刘超、赵婷、郑能干一起提出了一种名为DeepBranchTracer的新型方法,是一种高效、通用的曲线结构重建方法,适用于多种2D和3D图像数据集。通过结合图像特征和几何特征,显著提高了重建的准确性和连续性。一、研究背景曲线结构(curvilinearstructures)是图像中常见的几何元素,广泛应用于医学图像中的神经分支和血管,以及遥感图像中的道路等。从图像中重建这些</div> </li> <li><a href="/article/1901606091171622912.htm" title="算法每日一练 (13)" target="_blank">算法每日一练 (13)</a> <span class="text-muted">张胤尘</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E6%AF%8F%E6%97%A5%E4%B8%80%E7%BB%83/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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>欢迎来到张胤尘的技术站技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌文章目录算法每日一练(13)全排列II题目描述解题思路解题代码`c/c++``golang``lua`官方站点:力扣Leetcode算法每日一练(13)全排列II题目地址:全排列II题目描述给定一个可包含重复数字的序列nums,按任意顺序返回所有不重复的全排列。示例1:输入:nums</div> </li> <li><a href="/article/1901606018509500416.htm" title="Python 3.14版本的彩蛋" target="_blank">Python 3.14版本的彩蛋</a> <span class="text-muted"></span> <div>使用3.14版本的Python创建一个虚拟环境,会看到在虚拟环境的bin目录中,不仅有python3、python3.14等常规文件,竟然还存在一个特殊的文件thon。/tmp/venv/bin$lltotal72...-rwxr-xr-x1useruser290BMar510:57pip3.14*lrwxr-xr-x1useruser10BMar510:57python@->python.exe</div> </li> <li><a href="/article/1901606019776180224.htm" title="vue2和vue3的响应式原理有何不同?" target="_blank">vue2和vue3的响应式原理有何不同?</a> <span class="text-muted"></span> <div>大家好,我是V哥。Vue2和Vue3在响应式原理上存在显著差异,下面为你详细介绍。如果你是前端开发,V哥建议抓紧入坑鸿蒙,2025年鸿蒙趋势将引领国产化替代的新征程,大量内推岗位等你来拿。推荐一本鸿蒙NEXT书《鸿蒙HarmonyOS开发之路》卷1,可以让你少走弯路。Vue2响应式原理Vue2使用Object.defineProperty()方法来实现响应式系统。该方法可以直接在一个对象上定义一个</div> </li> <li><a href="/article/1901605386679545856.htm" title="迷雾渐开:美国AIGC可版权性剖析及案例梳理" target="_blank">迷雾渐开:美国AIGC可版权性剖析及案例梳理</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> <div>当地时间2025年1月29日,美国版权局(U.S.CopyrightOffice,USCO)发布了版权和人工智能相关法律和政策报告的第二部分——《版权和人工智能:可版权性》(以下简称“《USCO可版权性报告》”)[1],旨在探讨人工智能生成内容(AIGC)的可版权性问题。该报告明确指出,美国版权局认为现有的版权法足以解决AIGC问题,因此无需制定新的立法。具体而言,该报告在此前美国版权局于2023</div> </li> <li><a href="/article/1901605209742831616.htm" title="EXCEL 读写文件xlrd,xlwt, xlsxwriter" target="_blank">EXCEL 读写文件xlrd,xlwt, xlsxwriter</a> <span class="text-muted">jiahuip</span> <div>1.xlrd读EXCELimportxlrdxlsx=xlrd.open_workbook('d:/表格1.xlsx')table=xlsx.sheet_by_index(0)#通过sheet名查找:xlsx.sheet_by_name("sheet0")#通过索引查找:xlsx.sheet_by_index(3)print(table.cell_value(0,0))#table.cell_va</div> </li> <li><a href="/article/1901605083490086912.htm" title="P3865 【模板】ST 表 && RMQ 问题 题解" target="_blank">P3865 【模板】ST 表 && RMQ 问题 题解</a> <span class="text-muted">huangyuze114514</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>思路求区间最大值,一道ST表模板题。没学过ST表的看这里。当查询区间最值时,若只用暴力,肯定会超时,所以我们可以建造一个ST表,ST表可以先求出一些小的区间的最值,然后以此类推求出更大区间的最值,这样在查询的时候时间就会大大减少。关于建表,我们举个例子,如果我们输入一个长度为888的数组,默认这一层为第000层,那么第一层的1到71到71到7个数,每个数是下面两个数的最值;第二层的1到51到51到</div> </li> <li><a href="/article/1901601684224798720.htm" title="《java面向对象(2)》<不含基本语法>" target="_blank">《java面向对象(2)》<不含基本语法></a> <span class="text-muted">java小白板</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>提示:本笔记基于黑马程序员java教程整理,仅供参考文章目录前言1.继承2.多态2.1对象多态2.2行为对象2.3多态的问题前言本文纯笔记,主要记录了java面向对象的高级方法继承与多态1.继承在创建多个对象类时,它们可能会有很多相似的属性,如姓名,身高,体重等,就会造成代码的重复,所以我们可以采用继承的思想,将它们相同的属性放在同一个父类中,而其它作为子类的都可以继承父类的属性,子类本身就只用定</div> </li> <li><a href="/article/1901601556277555200.htm" title="Centos离线安装perl" target="_blank">Centos离线安装perl</a> <span class="text-muted">为什么要做囚徒</span> <a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4/1.htm">linux运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/perl/1.htm">perl</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> <div>文章目录Centos离线安装perl1.perl是什么?2.Perl下载地址3.perl的安装4.安装结果验证Centos离线安装perl1.perl是什么?Perl是一种高级脚本语言,诞生于1987年,以强大的文本处理能力和灵活性著称,常用于系统管理、Web开发、网络编程等领域2.Perl下载地址perl整体打包下载地址CentOS-7所有rpm包的仓库地址:perl-5.16.3-297.el</div> </li> <li><a href="/article/1901599539429699584.htm" title="【Python】执行脚本的时,如何指定运行根目录,而不是指定脚本的父级目录" target="_blank">【Python】执行脚本的时,如何指定运行根目录,而不是指定脚本的父级目录</a> <span class="text-muted">jwensh</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/python/1.htm">python</a> <div>author:jwensh&gptdate:2024.09.23python执行脚本的时,如何指定运行根目录,而不是指定脚本的父级目录prompt:python执行脚本的时候,如何指定他的运行根目录,而不是指定脚本的父级目录在执行Python脚本时,如果你想指定一个自定义的运行根目录,而不是默认的脚本所在目录,可以使用以下几种方式:1.通过os.chdir()修改当前工作目录在脚本中使用os.ch</div> </li> <li><a href="/article/1901599540109176832.htm" title="python系列:解决:ModuleNotFoundError: No module named ‘exceptions’" target="_blank">python系列:解决:ModuleNotFoundError: No module named ‘exceptions’</a> <span class="text-muted">坦笑&&life</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/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>解决:ModuleNotFoundError:Nomodulenamed‘exceptions’解决:ModuleNotFoundError:Nomodulenamed‘exceptions’背景报错问题报错位置代码报错原因解决方法其他解决办法注意:此时有以下几种解决办法:1.升级代码或模块以支持Python3。2.如果你必须使用Python2,请确保你的代码或模块与Python2兼容。3.如果你</div> </li> <li><a href="/article/1901599540759293952.htm" title="【sklearn 03】逻辑回归、决策树、支持向量机" target="_blank">【sklearn 03】逻辑回归、决策树、支持向量机</a> <span class="text-muted">@金色海岸</span> <a class="tag" taget="_blank" href="/search/sklearn/1.htm">sklearn</a><a class="tag" taget="_blank" href="/search/%E9%80%BB%E8%BE%91%E5%9B%9E%E5%BD%92/1.htm">逻辑回归</a><a class="tag" taget="_blank" href="/search/%E5%86%B3%E7%AD%96%E6%A0%91/1.htm">决策树</a> <div>逻辑回归、决策树、支持向量机-逻辑回归logisticsregression(逻辑回归)算法是经典的分类算法,基本思想是构造一个概率的拟合函数。决策树决策树的基本思想是根据样例去推断其背后的树形知识表征支持向量机支持向量机SVM(supportvectormachine)的基本思想是寻找最大的间隔的分割超平面。离分割超平面最近的这些样本点称为支持向量机</div> </li> <li><a href="/article/1901596765451251712.htm" title="PyTorch中tensor赋值运算符" target="_blank">PyTorch中tensor赋值运算符</a> <span class="text-muted">华zyh</span> <a class="tag" taget="_blank" href="/search/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/1.htm">强化学习</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a> <div>t=torch.ones((3,3))t0=tt1=t.dataprint(id(t),id(t0),id(t1),id(t.data))运行结果:2132926456040213292645604021332763196402132924110392t0与t完全相同。t1与t.data地址不一样(但是,t1.data与t.data地址相同)</div> </li> <li><a href="/article/1901596135680700416.htm" title="go结构体初始化_golang中结构体的初始化方法" target="_blank">go结构体初始化_golang中结构体的初始化方法</a> <span class="text-muted">weixin_39724748</span> <a class="tag" taget="_blank" href="/search/go%E7%BB%93%E6%9E%84%E4%BD%93%E5%88%9D%E5%A7%8B%E5%8C%96/1.htm">go结构体初始化</a> <div>目录1、自定义一个结构体typeVertexstruct{X,Yfloat64}2、初始化方法-指针:rect1:=new(Vertex)rect2:=&Vertex{}rect3:=&Vertex{1,2}rect4:=&Vertex{X:100,Y:200}注意:这几个变量全部为指向Rect结构的指针(指针变量),因为使用了new()函数和&操作符.3、初始化方法-类型实例a:=Rect{}b</div> </li> <li><a href="/article/1901593362205569024.htm" title="C51芯片包下载安装" target="_blank">C51芯片包下载安装</a> <span class="text-muted">Book_熬夜!</span> <a class="tag" taget="_blank" href="/search/%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E6%9C%89%E5%85%B3/1.htm">环境配置有关</a><a class="tag" taget="_blank" href="/search/51%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">51单片机</a> <div>一、前言由于前段时间下载Keil5用于编写stm32单片机程序,最近需要编写C51单片机的程序,在创建新项目时发现没有51单片机的器件型号,花了一点时间解决这个问题,故在此分享。二、解决方法1、下载烧录软件stc-isp百度网盘链接提取码:spvx解压密码:51打开后选择使用的芯片->Keil仿真设计->添加型号和头文件到Keil中即可。2、常见报错在执行上述操作时,注意添加时要求Keil安装的一</div> </li> <li><a href="/article/1901593363660992512.htm" title="数据结构与算法——二叉树,多叉树的递归遍历、层序遍历,DFS与BFS" target="_blank">数据结构与算法——二叉树,多叉树的递归遍历、层序遍历,DFS与BFS</a> <span class="text-muted">Book_熬夜!</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">深度优先</a><a class="tag" taget="_blank" href="/search/%E5%AE%BD%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">宽度优先</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">广度优先</a> <div>文章目录二叉树1.递归遍历2.层序遍历3.多叉树遍历二叉树【子节点】:每个节点下方相连的节点【父节点】:每个节点上方相连的节点【根节点】:最上方没有父节点的节点【叶子节点】:最下方没有子节点的节点【最大深度】:树的最大层数【高度】:节点数减一,即枝数。【满二叉树(PerfectBinaryTree)】:深度为h,则总节点数:2^h-1FullBinaryTree是指一棵二叉树的所有节点要么没有孩子</div> </li> <li><a href="/article/1901591342983737344.htm" title="2024年一文1800字从0到1使用Python Flask实战构建Web应用(1)" target="_blank">2024年一文1800字从0到1使用Python Flask实战构建Web应用(1)</a> <span class="text-muted">2401_84564025</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛分享他们的经验,还会分享很多直播讲座和技术沙龙可以免费学习!划重点!开源的!!!qq群号:110685036第三部分:运行Flask应用在app.</div> </li> <li><a href="/article/1901590331158228992.htm" title="Java面试系列-ElasticSearch面试题20道,文档,索引,搜索,聚合,分词器,集群管理,索引模版,数据备份和恢复,安全机制,集群扩展,实时搜索,索引生命周期,节点发现,批量操作,基本架构" target="_blank">Java面试系列-ElasticSearch面试题20道,文档,索引,搜索,聚合,分词器,集群管理,索引模版,数据备份和恢复,安全机制,集群扩展,实时搜索,索引生命周期,节点发现,批量操作,基本架构</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/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a> <div>文章目录1.Elasticsearch的基本架构是什么?2.Elasticsearch中的Shard和Replica是如何工作的?3.Elasticsearch中的文档是如何存储的?4.Elasticsearch中的索引是如何创建的?5.Elasticsearch中的搜索是如何工作的?6.Elasticsearch中的聚合是如何工作的?7.Elasticsearch中的分词器是如何工作的?8.El</div> </li> <li><a href="/article/1901590078124257280.htm" title="【人工智能基础2】Tramsformer架构、自然语言处理基础、计算机视觉总结" target="_blank">【人工智能基础2】Tramsformer架构、自然语言处理基础、计算机视觉总结</a> <span class="text-muted">roman_日积跬步-终至千里</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B9%A0%E9%A2%98/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/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a> <div>文章目录七、Transformer架构1.替代LSTM的原因2.Transformer架构:编码器-解码器架构3.Transformer架构原理八、自然语言处理基础1.语言模型基本概念2.向量语义3.预训练语言模型的基本原理与方法4.DeepSeek基本原理九、计算机视觉七、Transformer架构1.替代LSTM的原因处理极长序列时,效率下降:虽然LSTM设计的初衷是解决长期依赖问题,即让模型</div> </li> <li><a href="/article/1901589951900872704.htm" title="【python web】一文掌握 Flask 的基础用法" target="_blank">【python web】一文掌握 Flask 的基础用法</a> <span class="text-muted">数据知道</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a> <div>文章目录一、Flask介绍1.1安装Flask二、Flask的基本使用2.1创建第一个Flask应用2.2路由与视图函数2.3请求与响应2.4响应对象2.5模板渲染2.6模板继承2.7静态文件管理2.8Blueprint蓝图2.9错误处理三、Flask扩展与插件四、部署Flask应用五、总结Flask是一个轻量级的PythonWeb框架,因其简单易用、灵活性高而受到广泛欢迎。本文将全面介绍Flas</div> </li> <li><a href="/article/1901588561128386560.htm" title="「C语言指针函数与函数指针:从内存管理到灵活调用的实战指南」" target="_blank">「C语言指针函数与函数指针:从内存管理到灵活调用的实战指南」</a> <span class="text-muted">℡残城碎梦</span> <a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E6%8C%87%E9%92%88%E5%87%BD%E6%95%B0/1.htm">指针函数</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88/1.htm">函数指针</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%E6%95%B0%E7%BB%84/1.htm">函数指针数组</a> <div>1.指针函数:外卖柜的「生存法则」核心痛点:返回局部变量地址导致崩溃?堆区与栈区傻傻分不清?生活类比:栈区≈临时摊位(函数结束即销毁)堆区≈智能外卖柜(手动申请释放,长期有效)代码对比://错误!返回栈区地址(临时摊位被拆)char*bug_demo(){charbuf[32]="hello";returnbuf;//危险操作!}//正确!返回堆区地址(外卖柜长期存餐)char*correct_d</div> </li> <li><a href="/article/1901587298630299648.htm" title="解决 HTTP 请求中的编码问题:从乱码到正确传输" target="_blank">解决 HTTP 请求中的编码问题:从乱码到正确传输</a> <span class="text-muted">和烨</span> <a class="tag" taget="_blank" href="/search/Java%E8%BF%9B%E9%98%B6%E5%AD%A6%E4%B9%A0%E4%B8%93%E6%A0%8F/1.htm">Java进阶学习专栏</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>文章目录解决HTTP请求中的编码问题:从乱码到正确传输1.**问题背景**2.**乱码问题的原因**2.1**客户端编码问题**2.2**请求头缺失**2.3**服务器编码问题**3.**解决方案**3.1**明确指定请求体编码**3.2**确保请求头正确**3.3**动态获取响应编码**4.**调试与验证**4.1**打印请求数据**4.2**使用抓包工具**4.3**查看服务器日志**5.**</div> </li> <li><a href="/article/1901586792646242304.htm" title="uniapp实现页面左滑右滑切换内容" target="_blank">uniapp实现页面左滑右滑切换内容</a> <span class="text-muted">浮桥</span> <a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a> <div>uniapp+uview:使用uniapp的swiper和uview的tabs标签组合实现Tabs标签-uview-plus3.0-uni-appUI框架{{item.name}}import{onMounted,onUnmounted,ref,reactive,computed,markRaw,getCurrentInstance,nextTick}from"vue";import{format</div> </li> <li><a href="/article/1901584903309422592.htm" title="python colorama_Python colorama 模块 使用 说明" target="_blank">python colorama_Python colorama 模块 使用 说明</a> <span class="text-muted">weixin_39682697</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/colorama/1.htm">colorama</a> <div>1Colorama模块说明在上篇博客我们了解了prettytable的使用,如下:https://www.cndba.cn/cndba/dave/article/3564使用prettytable模块之后,输出的内容格式看上去会非常整齐,但如果我们想要对部分内容重点显示,那么可以使用两种方法:1)直接使用Python控制输出颜色2)使用colorama模块Colorama是一个python专门用来</div> </li> <li><a href="/article/1901584650720047104.htm" title="任正非蜕变:追逐滚滚洪流中的那张船票" target="_blank">任正非蜕变:追逐滚滚洪流中的那张船票</a> <span class="text-muted">weixin_33843947</span> <a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</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/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>上一篇文章(《任正非蜕变:中国首个世界顶级的企业战略浮出水面》,详见21世纪经济报道2016年1月13日13版),得到了不少朋友的好评,其实我把最重要的一手留在了第二篇。与激情充沛的第一篇相比,这一篇我们注入更多的理性和冷静,来剖析华为真正的挑战。任正非讲话中大家印象最深刻的大概就是明确了终端的收入目标,“终端要敢于5年内超越1000亿美元的销售收入”。但奇怪的是,对于华为其他两块业务以及华为整体</div> </li> <li><a href="/article/1901583895179096064.htm" title="SAP访问外围系统(http/https)" target="_blank">SAP访问外围系统(http/https)</a> <span class="text-muted">对,就是哥</span> <a class="tag" taget="_blank" href="/search/ABAP/1.htm">ABAP</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>1、308PermanentRedirect(错误)没解决,如果有高手解决请留言非常感谢交流。外围系统要改URL访问地址,Postman访问时通的没有任何问题,通过ABAP程序调用报错308PermanentRedirect,使用SMICM没有查到任何错误,而且找basis查看防火墙都开着没问题。经过沟通对方提供URL地址时一级访问地址(Postman可以自动转接,abap程序不可以),最终外围系</div> </li> <li><a href="/article/1901580997208633344.htm" title="MV-EB435i立体相机对垃圾分类" target="_blank">MV-EB435i立体相机对垃圾分类</a> <span class="text-muted">开哥kg</span> <a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</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/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">卷积神经网络</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E7%B1%BB/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>最近在v社区发了一篇文章,懒得转移过来了链接:V社区-机器视觉技术交流社区-MV-EB435i立体相机对垃圾分类我觉得这篇文章对于刚入门深度学习想看点项目学点代码的刚刚好,因为我也是新手,嘻嘻嘻!希望这篇文章对大家有所帮助,如有错误请大家指正。</div> </li> <li><a href="/article/1901580492063436800.htm" title="Go 中间件学习" target="_blank">Go 中间件学习</a> <span class="text-muted">qq_17280559</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/go/1.htm">go</a> <div>文章目录1.设计中间件接口2.创建中间件函数3.使用中间件4.中间件链5.使用第三方框架6.定义自定义中间件7.使用自定义中间件应用到整个路由组应用到单个路由8.访问上下文中的信息9.控制流程总结在Go中,中间件(Middleware)是一种设计模式,常用于在请求处理的各个阶段添加通用功能,如日志记录、身份验证、异常处理等。中间件通常应用于HTTP服务器(如net/http包或第三方框架如Gin)</div> </li> <li><a href="/article/1901579104881274880.htm" title="FPGA中级项目3——IP核之时钟管理单元" target="_blank">FPGA中级项目3——IP核之时钟管理单元</a> <span class="text-muted">霖00</span> <a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/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/fpga/1.htm">fpga</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E5%BA%8F%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">时序数据库</a> <div>FPGA中级项目3——IP核之时钟管理单元时钟还需要管理?什么是时钟管理单元?我们常熟知FPGA本身有晶振单元,源源不断的提供的50Mhz的频率波。但是这样往往无法满足一些设计需求。使用Verilog代码设计倍频分频等又不可避免的出现毛刺等其他状况,且提升了代码复杂度。因此在FPGA设计中,时钟管理单元(ClockManagementUnit,CMU)IP核是关键组件,用于生成、调整和分配系统时钟</div> </li> <li><a href="/article/1901578851180408832.htm" title="C语言基础知识05---必背+函数" target="_blank">C语言基础知识05---必背+函数</a> <span class="text-muted">努力做小白</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0/1.htm">C语言学习</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>目录必备知识点1、C语言5大分区1.1局部变量1.2全局变量1.3静态局部变量1.4外部声明变量2、关键字2.1static2.2extern3、局部变量和全局变量能不能同名?4、实参&&形参函数1、函数的作用2、函数的分类2.1主函数2.2子函数3、函数命名4、函数定义格式5、函数传参5.1值传参5.2地址传参6、函数类型6.1函数的声明6.2函数调用6.3递归函数7、指针函数&&函数指针7.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>