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/1773614820973674496.htm" title="2023-02-16" target="_blank">2023-02-16</a> <span class="text-muted">执剑饮烈酒</span> <div>1、开心点,反正谁也别想活着离开这个世界。——朱德庸2、我一直以为爱的反义词是不爱,直到现在我才明白,爱的反义词是遗忘。——《寻梦环游记》3、人生的最高境界是佛为心,道为骨,儒为表,大度看世界。技在手,能在身,思在脑,从容过生活。——南怀瑾4、如果一个民族沦落到,只剩下把升官发财当成最终目标和追求的时候,那么这个民族就危险了,一旦金钱和权利成了唯一的信仰,那将是悲哀的。——鲁迅5、人和人如果不在一</div> </li> <li><a href="/article/1773611036537061376.htm" title="100天30本书读书计划(2018-06-11)DAY 62" target="_blank">100天30本书读书计划(2018-06-11)DAY 62</a> <span class="text-muted">一个姜姜</span> <div>【书名】当我谈跑步时,我谈些什么【作者】村上春树【读书页数】51--128/187【读书时间】2018年6月11日【精彩句子】01肌肉难长,易消。赘肉易长,难消。P5502肌肉也同有血有肉的动物一般无二,它也愿意过更舒服的日子,不继续给它负荷,它便会心安理得地将记忆出去。想再度输入的话,必须得从头开始,将同样的模式重复一遍。P7703不管怎样,反正得坚持跑步。每天跑步对我来说好比生命线,不能说忙就</div> </li> <li><a href="/article/1773606496911818752.htm" title="3/31总结" target="_blank">3/31总结</a> <span class="text-muted">静心第一</span> <div>今日总结:1.上午体验课以及反馈2.p1专注力上课3.情绪精品营上课4.燕子营队辅营以及前台值班5.活动室带孩子接待带到访今日反思:1.合理安排体力2.对于准客户记得跟进3.不要放过每一次成交的机会(这个精品营转发有点失败,后期需调整)今日感受:1.为了效果,后期课程一定想方设法布置家庭,给予一个好的支持系统2.上到下午的课程感觉特别特别的累3.晚上在做辅营一个孩子大声叫喊,后来单独出去沟通,其实</div> </li> <li><a href="/article/1773604712310964224.htm" title="python抓包与解包_Python—网络抓包与解包(pcap、dpkt)" target="_blank">python抓包与解包_Python—网络抓包与解包(pcap、dpkt)</a> <span class="text-muted">weixin_39691055</span> <a class="tag" taget="_blank" href="/search/python%E6%8A%93%E5%8C%85%E4%B8%8E%E8%A7%A3%E5%8C%85/1.htm">python抓包与解包</a> <div>pcap安装[root@localhost~]#pipinstallpypcap抓包与解包#-*-coding:utf-8-*-importpcap,dpktimportre,threading,requests__black_ip=['103.224.249.123','203.66.1.212']#抓包:param1eth_name网卡名,如:eth0,eth3。param2p_type日志捕</div> </li> <li><a href="/article/1773596544394657792.htm" title="5月8日盘前提示:维持短期可以操作到下周二左右的判断,重个股轻指数" target="_blank">5月8日盘前提示:维持短期可以操作到下周二左右的判断,重个股轻指数</a> <span class="text-muted">九命_猫妖</span> <div>大盘:消息面。取消境外投资者额度限制,这个长线利好股市,短期影响不大,因为3000亿额度只用了1/3。额度本来就够用。走势看,昨天缩量横盘,走的还算中规中矩,近期一直弱势的次新股走势较强,前期强势股京威股份、光大嘉宝等跌停,由此判断市场还是存量博弈的市场,震荡是市场的主基调。维持短期可以操作到下周二左右的判断。下周后半段震荡回调的概率较高。思路:短期重个股轻指数行业和个股:物联网行业有利好,关注下</div> </li> <li><a href="/article/1773592261972525056.htm" title="2022-04-30" target="_blank">2022-04-30</a> <span class="text-muted">何以解忧啊</span> <div>今日体验:把身体照顾好,把喜欢的事做好,把重要的人待好,你要的一切都在路上!你现在要做的就是好好成为更好的自己!</div> </li> <li><a href="/article/1773588094755340288.htm" title="美团自动配送车2024春季招聘 | 社招专场" target="_blank">美团自动配送车2024春季招聘 | 社招专场</a> <span class="text-muted">美团技术团队</span> <div>关于美团自动配送团队美团自动配送以自研L4级自动驾驶软硬件技术为核心,与美团即时零售业务结合,形成满足公开道路、校园、社区、工业园区等室外全场景下的自动配送整体解决方案。美团自动配送团队成立于2016年,团队成员来自于Waymo、Cruise、Pony.ai、泛亚等自动驾驶行业头部公司,自动驾驶技术团队博士占比高达30%,依靠视觉、激光等传感器,实时感知预测周围环境,通过高精地图定位和智能决策规划</div> </li> <li><a href="/article/1773586592385007616.htm" title="天猫超市优惠获取渠道,天猫超市内部优惠劵领取方法使用教程" target="_blank">天猫超市优惠获取渠道,天猫超市内部优惠劵领取方法使用教程</a> <span class="text-muted">氧惠全网优惠</span> <div>天猫超市是一个不错的购物平台,满足用户所需,基本次日达,很方便的购物平台,那么有人问我,天猫超市优惠获取渠道在哪?怎么能够优惠的购买,今天分享给大家;1、天猫超市优惠券抢好券:天猫超市首页每天可以领取满199减30、满235减35、满299减50、满399减60、满166减30等优惠券,领劵方法复制下条口令打开淘宝进入领劵会场;隐藏神券、实时爆款、天天更新!戳>(CZ9185ZatcdhNADlJ</div> </li> <li><a href="/article/1773583060877508608.htm" title="自律计划:从早睡早起开始" target="_blank">自律计划:从早睡早起开始</a> <span class="text-muted">犀首公孫衍</span> <div>今天天气十分不错,阳光明媚。下午趁着阳光充足,想去田野里走一走。两个多月了,几乎都是在家待着,大门不出二门不迈。上大学以来,可几乎不怎么去到田间地头看一看。3月正是油菜花开放的季节,满地的金黄色,草木也开始生出了绿色的芽儿。眼前的景儿,让人眼明心亮。一年之计在于春,春天是最美好的季节。这样一个特殊的春天,让我暂时脱离了学校,也算有了一些新的收获吧。开始有了一些好的改变,开始坚持每天读书,保持较好的</div> </li> <li><a href="/article/1773582305621770240.htm" title="华为OD机试 - 单向链表中间节点(Java & JS & Python & C & C++)" target="_blank">华为OD机试 - 单向链表中间节点(Java & JS & Python & C & C++)</a> <span class="text-muted">华为OD题库</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输出描述解析代码题目描述给定一个单链表L,请编写程序输出L中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。例如:给定L为1→7→5,则输出应该为7;给定L为1→2→3→4,则输出应该为3;输入描述每个输入包含1个测试用例。每个测试用例:第一行给出链表首结点的地址、结点总</div> </li> <li><a href="/article/1773578026081124352.htm" title="学习JavaEE的日子 Day32 线程池" target="_blank">学习JavaEE的日子 Day32 线程池</a> <span class="text-muted">A 北枝</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0JavaEE/1.htm">学习JavaEE</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/java-ee/1.htm">java-ee</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a> <div>Day32线程池1.引入一个线程完成一项任务所需时间为:创建线程时间-Time1线程中执行任务的时间-Time2销毁线程时间-Time32.为什么需要线程池(重要)线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time1,T3分别安排在项目的启动和结束的时间段或者一些空闲的时间段线程池不仅调整Time1,Time3产生的时间段,而且它还显著减少了创建</div> </li> <li><a href="/article/1773576508988784640.htm" title="花气袭人知昼暖" target="_blank">花气袭人知昼暖</a> <span class="text-muted">柒侠传</span> <div>花气袭人知昼暖高一七班黄韵熹37号花袭人,原名花珍珠,位列金陵十二钗又副册中的第二位。“袭人”这一称呼源于“花气袭人知昼暖”这一诗句,是宝玉给起的。想起来便觉得暖融融的,一如花袭人温柔的笑容。但花袭人着实是令人又爱又怕的角色。第二十一回的回目将她赞作“贤袭人”,脂砚斋在一旁批道“当得起”。花袭人对宝玉的确是一片真心。她为劝宝玉收敛他那成日在大观园里与姐姐妹妹“厮混”的性子,假借家人赎回的机会,软语</div> </li> <li><a href="/article/1773573233237360640.htm" title="淘宝天猫38节活动时间和玩法,2024年焕新周满减优惠多少" target="_blank">淘宝天猫38节活动时间和玩法,2024年焕新周满减优惠多少</a> <span class="text-muted">小小编007</span> <div>在2024年,淘宝天猫平台即将迎来一年一度的38节活动,这是广大消费者们翘首以待的购物狂欢节。在这篇文章中,我们将为您详细解读淘宝天猫38节活动的时间安排和玩法,以及2024年焕新周的满减优惠力度。一、淘宝天猫38节活动时间2024年淘宝天猫38节活动将于2月28日正式启动,持续至3月8日,为期10天。活动期间,消费者们可以尽情享受各种优惠折扣、满减活动以及限时秒杀,尽情释放购物热情。2024淘宝</div> </li> <li><a href="/article/1773572854445572096.htm" title="感恩日志" target="_blank">感恩日志</a> <span class="text-muted">圆施</span> <div>张新丽2019年8月16日感恩日志:1.感恩天地滋养万物;感恩国家恩惠护佑;感恩父母养育深恩。2.感恩尊重为平台源头付出的所有人事物。3.感恩红斌、孙萍清晨7点开车来接我和小姨去安宁渠采摘。4.感恩小姨和小姨夫亲自采摘还带我们去瓜地品尝,第一次这么吃好甜啊,忘掉了炎热消了暑,拍下了瞬间,分享着快乐,带给大家。4.感恩整理收拾好小姨给大家利用午休蒸苞米。5.感恩去接爸妈参加沙龙。6.感恩祝福两位伙伴</div> </li> <li><a href="/article/1773572474143834112.htm" title="❤️ 美娟 感恩福记 32/365" target="_blank">❤️ 美娟 感恩福记 32/365</a> <span class="text-muted">让一切都成为你的助力</span> <div>感恩信守承诺完成✅的一天感恩连睡梦中都惦记着“感恩”,夜晚睡的香甜,好感恩,谢谢感恩好手艺,营养早餐,开启了美好的一天感恩感恩健身,让自己的身体肌肉变得结实,painisweaknessleavingthebody!痛苦会让软弱离开身体!好棒的,渐渐爱上燃烧脂肪的感觉,喜欢精气神饱满的自己感恩感恩奶奶的夸赞,把堉哥哥买给奶奶的蚕丝被邮寄回去了,奶奶很高兴,有人惦记着她,也是因为奶奶智慧的规劝,才遇</div> </li> <li><a href="/article/1773571355124498432.htm" title="python 推导式(派生、衍生)" target="_blank">python 推导式(派生、衍生)</a> <span class="text-muted">sanduo112</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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>python推导式一、推导式(派生、衍生)1.Python推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。2.列表(list)推导式3.字典(dict)推导式4.集合(set)推导式5.元组(tuple)推导式二、代码概述一、推导式(派生、衍生)1.Python推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。Python支持各种数</div> </li> <li><a href="/article/1773569718641295360.htm" title="uni-app实现 步骤条" target="_blank">uni-app实现 步骤条</a> <span class="text-muted">夏夏的码农</span> <a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a> <div>实现如图样式html部分代码如下投资期限与收益0?'active':'default'">募集开始1?'active':'default'">募集结束2?'active':'default'">产品成立3?'active':'default'">产品到期0?'active-step1':'step1'">1?'active-st</div> </li> <li><a href="/article/1773569448767193088.htm" title="为什么说仪式和习惯非常重要?" target="_blank">为什么说仪式和习惯非常重要?</a> <span class="text-muted">章鱼老师zy</span> <div>这是章鱼姐第【40】篇原创文章,日更计划第【37/100】天。阅读张萌萌姐【精力管理手册】第【6/7】章。一阅读摘要这一章萌姐讲到了习惯的重要性,为什么说养成一个习惯很重要?如何养成一个好习惯?如何建立自己的仪式感?二金句精力管理最重要的是产生什么效果。当你想做却没有动力去做一件事情时,你就应该把它养成习惯。习惯可以帮我们创造稳定框架。对于那些特别考验意志的事情,我们应该先行后思。三思考题,萌姐讲</div> </li> <li><a href="/article/1773569321646227456.htm" title="安神的投资札记——指数跟踪周报(20220602)" target="_blank">安神的投资札记——指数跟踪周报(20220602)</a> <span class="text-muted">echo安神</span> <div>本周关键词:缩表上周调整过后,本周又反弹了。最近创业板好活跃,跌的时候跌得凶,涨的时候也涨得猛。底部特征明显。上证50,0.99%;沪深300,2.21%;中证100,1.85%;中证500,3.03%;深证100,3.71%;创业板指数,5.85%;中证1000,3.75%。美联储6月1日开启缩表,每月总计减持475亿美元美国国债和MBS(抵押贷款支持证券),并将在3个月后提高缩表上限至每月95</div> </li> <li><a href="/article/1773563772531703808.htm" title="社交电商是什么意思通俗的说" target="_blank">社交电商是什么意思通俗的说</a> <span class="text-muted">氧惠好项目</span> <div>社交电商是目前电商发展的一个非常热门的领域,它将传统的电商和社交媒体相结合,让用户可以在社交平台上完成购物、支付等操作。社交电商不同于传统电商,它更加注重用户的社交性和互动性,通过社交媒体的传播,吸引用户关注,让产品能够更加快速地传播。京东密令红包:最爱领红包828红包多多148今天给大家分享我长期在做的副业,也在这里赚到人生第3桶金!氧惠APP佣金高,资质靠谱,各大应用市场均可搜索使用。【氧惠】</div> </li> <li><a href="/article/1773559735694458880.htm" title="有一种失去叫做得不到" target="_blank">有一种失去叫做得不到</a> <span class="text-muted">野风狂生</span> <div>图片发自App有一种失去叫做得不到野风狂生(20190130)有一种失去叫做得不到失去的是希望是前进的方向是奋斗的动力是奇迹的召唤纵然有一天将其释怀遗憾的残迹却永留心底得不到有时也会心痛仿佛沙漠里远望着的一泓甘泉十米处被他人喝干涸仿佛黑洞里疲惫追逐的火焰在握住前一秒耗尽光明仿佛风雪彻骨的冬天被人剥剩至赤裸而夜行山莽埋葬未曾示面的野心有谁还会去祭奠不用问我问我也无可奉告不用问你问你也缄默不言去拥抱那</div> </li> <li><a href="/article/1773554866065571840.htm" title="Django之Debug篇" target="_blank">Django之Debug篇</a> <span class="text-muted">菜鸟之编程</span> <a class="tag" taget="_blank" href="/search/Django/1.htm">Django</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>一、DebugToolBar基本使用1.1、概述Django框架的调试工具栏使用django-debug-toolbar库,是一组可配置的面板,显示有关当前请求/响应的各种调试信息,点击时,显示有关面板内容的更多详细信息。官方文档:DjangoDebugToolbar—DjangoDebugToolbar4.3.0documentation1.2、安装pipinstalldjango-debug-</div> </li> <li><a href="/article/1773552600176721920.htm" title="1.计算机处理器架构+嵌入式处理器架构及知识" target="_blank">1.计算机处理器架构+嵌入式处理器架构及知识</a> <span class="text-muted">vv 啊</span> <a class="tag" taget="_blank" href="/search/arm-linux%E5%AD%A6%E4%B9%A0/1.htm">arm-linux学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>目录一:x86-64处理器架构二:Intel80386处理器(i386)1.i3862.i686三:嵌入式Linux知识:1.MinGW2.GNU计划2.1GNU工具链概述此次只分享英特尔和ADM处理器有关于x86的架构,至于嵌入式处理器架构请查看https://en.wikipedia.org/wiki/List_of_ARM_processors一:x86-64处理器架构x86-64,也称为x</div> </li> <li><a href="/article/1773549956938924032.htm" title="数据挖掘|数据预处理|基于Python的数据标准化方法" target="_blank">数据挖掘|数据预处理|基于Python的数据标准化方法</a> <span class="text-muted">皖山文武</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BB%BA%E6%A8%A1%E4%B8%8E%E5%88%86%E6%9E%90/1.htm">数据建模与分析</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/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>基于Python的数据标准化方法1.z-score方法2.极差标准化方法3.最大绝对值标准化方法在数据分析之前,通常需要先将数据标准化(Standardization),利用标准化后的数据进行数据分析,以避免属性之间不同度量和取值范围差异造成数据对分析结果的影响。1.z-score方法Z-score方法是基于原始数据的均值和标准差来进行数据标准化的,处理后的数据均值为0,方差为1,符合标准正态分布</div> </li> <li><a href="/article/1773547565535526912.htm" title="c++中如何判断变量的数据类型,并输出" target="_blank">c++中如何判断变量的数据类型,并输出</a> <span class="text-muted">xnrbjy</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</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++中如果想要判断变量的数据类型,可以使用typeid运算符。该运算符返回一个std::type_info类型的对象,可以使用name()方法获取其名称从而确定变量的类型,例如:#include#includeusingnamespacestd;intmain(){inta=123;floatb=3.14;boolc=true;chard='A';stringe="HelloWorld";cou</div> </li> <li><a href="/article/1773542224814997504.htm" title="暗示的可怕力量,这些话永远不要对孩子说" target="_blank">暗示的可怕力量,这些话永远不要对孩子说</a> <span class="text-muted">浅来浅去</span> <div>记得春节的时候,在亲戚家的饭桌上。跟我同坐的是亲戚家的一位老姑父。同桌的几位熟人跟老人谈论他的孙子。“他现在变化真的很大,不错不错!”“我们前段时间遇到他,觉得他现在工作很认真,会有出息的。”“唉,你们不要说了,我还不知道他什么样,快30岁的人了,一事无成。”他说自己不相信。我跟他说,“您得相信他会改变,因为家人相信他会改变,有时真的会改变的。”“您得给他一些正面的暗示。”那天老人脸色凝重,喝了不</div> </li> <li><a href="/article/1773540138937286656.htm" title="【计算机网络】第 3 问:电路交换、报文交换、分组交换之间的区别?" target="_blank">【计算机网络】第 3 问:电路交换、报文交换、分组交换之间的区别?</a> <span class="text-muted">孤独打铁匠Julian</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA408%E8%80%83%E7%A0%94%E9%9D%A2%E8%AF%95/1.htm">计算机408考研面试</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>电路交换、报文交换、分组交换之间的区别?省流图详解电路交换电路交换的优点电路交换的缺点建立连接时间长的原因报文交换报文交换的优点报文交换的缺点分组交换分组交换的优点分组交换的缺点比较总结省流图详解电路交换在进行数据传输前,两个结点之间必须先建立一条专用(双方独占)的物理通信路径(由通信双方之间的交换设备和链路逐段连接而成),该路径可能经过许多中间结点。这一路径在整个数据传输期间一直被独占,直到通信</div> </li> <li><a href="/article/1773536165878628352.htm" title="入伏(五)" target="_blank">入伏(五)</a> <span class="text-muted">喜马ma</span> <div>图片发自App入伏13今天我看见很多蜻蜓在飞飞得很低想起小学时学的那点知识在这闷热的午后真能来一场暴雨太过瘾了入伏14有点像瓢虫的昆虫喜欢吃葡萄叶喜欢交配在炎热的夏天如果你在葡萄园看见两只昆虫它们不是在吃葡萄叶就是在交配请记住它们的名字叫葡萄十星红甲</div> </li> <li><a href="/article/1773530120070430720.htm" title="心赏(2018.10.8)" target="_blank">心赏(2018.10.8)</a> <span class="text-muted">六一节_3928</span> <div>1.上班第一天,同事彤休完产假,回来上班,给我带了酸奶和水果。她生小孩时,我给她发了一个小红包贺喜,哪知她就记在心里了。心赏这个有心的90后。2.女儿放学回来,说自己当了小组长。一边说不想当,一边得意的样子。心赏老师给了孩子这个锻炼的机会。3.老妈今天做了"蚂蚁上树"的菜,得到女儿的高度肯定。心赏老妈还在不断学习。</div> </li> <li><a href="/article/1773528182234873856.htm" title="springboot集成logback-spring.xml文件" target="_blank">springboot集成logback-spring.xml文件</a> <span class="text-muted">RT_0114</span> <a class="tag" taget="_blank" href="/search/SpringBoot/1.htm">SpringBoot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/logback/1.htm">logback</a> <div>彩色日志日志分debug和error文件输出,方便开发人员运维日志限制最大保管天数日志限制总量大小占用量GB日志限制单个文件大小MB日志显示最大保留天数屏蔽没用的日志${CONSOLE_LOG_PATTERN}${log.path}/debug.log${log.path}/%d{yyyy-MM-dd,aux}/debug.%d{yyyy-MM-dd}.%i.log.gz1024MB50GB365</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>