redis 哨兵 票数

Content organization on the number of votes Quite often, we have the task to display any content (from the database) on the screen, many may argue that this is quite simple and trite. This is true, but when we have additional social components, for example on how to sort records by the number of comments or by rating – many novice webmasters can fall into confusion. Today we will consider the question of how to display the records by the number of gained votes. To do this, we will prepare a simple voting system.

内容组织在票数上经常,我们有任务在屏幕上显示任何内容(来自数据库),很多人可能会认为这很简单且陈腐。 的确如此,但是当我们还有其他社交功能时,例如关于如何按评论数或评分对记录进行排序的方法,许多新手网站管理员可能会感到困惑。 今天,我们将考虑如何通过获得的票数显示记录的问题。 为此,我们将准备一个简单的投票系统。

现场演示

First of all, I recommend that you check our demo to understand how it works. Now, we are ready to start

首先,我建议您检查我们的演示以了解其工作原理。 现在,我们准备开始

步骤1. SQL (Step 1. SQL)

Firstly, let’s prepare a new table in the database with some dummy records. If you are not familiar with the procedure of execution SQL requests, you can search in google about how to do it. But, basically, you just need to open phpMyAdmin, select your database, then click the ‘SQL’ tab, and put here the whole SQL query, and then – execute the query.

首先,让我们在数据库中准备一个包含一些伪记录的新表。 如果您不熟悉执行SQL请求的过程,则可以在Google中搜索如何执行。 但是,基本上,您只需要打开phpMyAdmin,选择数据库,然后单击“ SQL”选项卡,然后将整个SQL查询放在此处,然后–执行查询。


CREATE TABLE IF NOT EXISTS `s395_posts` (`id` int(10) unsigned NOT NULL auto_increment,`title` varchar(255) default '',`description` text NOT NULL,`when` int(11) NOT NULL default '0',`votecnt` int(11) NOT NULL,PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `s395_posts` (`title`, `description`, `when`, `votecnt`) VALUES
('First post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP(), 0),
('Second post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 1, 0),
('Third post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 2, 0),
('Fourth post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 3, 0),
('Fifth post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 4, 0);

CREATE TABLE IF NOT EXISTS `s395_posts` (`id` int(10) unsigned NOT NULL auto_increment,`title` varchar(255) default '',`description` text NOT NULL,`when` int(11) NOT NULL default '0',`votecnt` int(11) NOT NULL,PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `s395_posts` (`title`, `description`, `when`, `votecnt`) VALUES
('First post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP(), 0),
('Second post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 1, 0),
('Third post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 2, 0),
('Fourth post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 3, 0),
('Fifth post', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ac neque tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum id convallis velit. Sed aliquet nibh vitae lorem tincidunt, quis consequat lectus blandit. Nullam augue mauris, placerat in ante non, fermentum ornare quam. Cras et fermentum purus. Ut elit mauris, blandit sit amet condimentum eu, ornare vel ligula.', UNIX_TIMESTAMP() + 4, 0);

The table with records (s395_posts) contains the following fields:

包含记录的表(s395_posts)包含以下字段:

  • id – unique post idid –唯一的帖子ID
  • title – post title标题–帖子标题
  • description – post description (text)说明-帖子说明(文本)
  • when – post date什么时候–发布日期
  • votecnt – votes count投票数–票数

步骤2. PHP (Step 2. PHP)

In order to work with the database, we will use an existing class that we developed in the past (classes/CMySQL.php). I want to remind that the database credentials are found in this file, so don’t forget to put details of your database into this file:

为了使用数据库,我们将使用过去开发的现有类(classes / CMySQL.php)。 我想提醒一下,在此文件中找到了数据库凭据,所以不要忘记将数据库的详细信息放入此文件中:

类/CMySQL.php (classes/CMySQL.php)

// constructorfunction CMySQL() {$this->sDbName = '_YOUR_DB_NAME_';$this->sDbUser = '_YOUR_DB_USERNAME_';$this->sDbPass = '_YOUR_DB_USERPASS_';
// constructorfunction CMySQL() {$this->sDbName = '_YOUR_DB_NAME_';$this->sDbUser = '_YOUR_DB_USERNAME_';$this->sDbPass = '_YOUR_DB_USERPASS_';

Now we will begin the creation of a new class where we arrange all the necessary functions for our demonstration:

现在,我们将开始创建一个新的类,在其中安排演示所需的所有必要功能:

  • getRecentPosts – this function returns the recent posts (with order by id)getRecentPosts –此函数返回最近的帖子(按ID排序)
  • getTopPosts – this function returns the recent posts (with order by count of votes)getTopPosts –此函数返回最近的帖子(按票数排序)
  • resultToHtml – this function converts an array of data into html output coderesultToHtml –此函数将数据数组转换为html输出代码
  • addVote – this function accepts new votesaddVote –此功能接受新的投票
  • getVisitorIP – this function returns a visitor IP addressgetVisitorIP –此函数返回访客IP地址

classes / CPosts.php (classes/CPosts.php)


<?php
require_once('CMySQL.php'); // include the database class
class CPosts {// constructorfunction CPosts() {}// get recent (last) postsfunction getRecentPosts() {$a = $GLOBALS['MySQL']->getAll("SELECT * FROM `s395_posts` ORDER BY `id` DESC");return $this->resultToHtml($a);}// get top postsfunction getTopPosts() {$a = $GLOBALS['MySQL']->getAll("SELECT * FROM `s395_posts` ORDER BY `votecnt` DESC");return $this->resultToHtml($a);}// turn array of results into html outputfunction resultToHtml($a) {$posts = '';foreach ($a as $i => $post) {$posts .= <<<EOF
<article id="{$post['id']}"><h2>{$post['title']}</h2><i>{$post['description']}</i><b>( {$post['votecnt']} votes )</b><button>vote up</button>
</article>
EOF;}return $posts;}// add votefunction addVote($i) {if ($this->getVisitorIP()) {$GLOBALS['MySQL']->res("UPDATE `s395_posts` SET `votecnt` = `votecnt` + 1 WHERE `id` = '{$i}'");}}// get visitor IP addressfunction getVisitorIP() {$ip = "0.0.0.0";if( ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) && ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ) {$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} elseif( ( isset( $_SERVER['HTTP_CLIENT_IP'])) && (!empty($_SERVER['HTTP_CLIENT_IP'] ) ) ) {$ip = explode(".",$_SERVER['HTTP_CLIENT_IP']);$ip = $ip[3].".".$ip[2].".".$ip[1].".".$ip[0];} elseif((!isset( $_SERVER['HTTP_X_FORWARDED_FOR'])) || (empty($_SERVER['HTTP_X_FORWARDED_FOR']))) {if ((!isset( $_SERVER['HTTP_CLIENT_IP'])) && (empty($_SERVER['HTTP_CLIENT_IP']))) {$ip = $_SERVER['REMOTE_ADDR'];}}return $ip;}
}
$GLOBALS['CPosts'] = new CPosts();

<?php
require_once('CMySQL.php'); // include the database class
class CPosts {// constructorfunction CPosts() {}// get recent (last) postsfunction getRecentPosts() {$a = $GLOBALS['MySQL']->getAll("SELECT * FROM `s395_posts` ORDER BY `id` DESC");return $this->resultToHtml($a);}// get top postsfunction getTopPosts() {$a = $GLOBALS['MySQL']->getAll("SELECT * FROM `s395_posts` ORDER BY `votecnt` DESC");return $this->resultToHtml($a);}// turn array of results into html outputfunction resultToHtml($a) {$posts = '';foreach ($a as $i => $post) {$posts .= <<<EOF
<article id="{$post['id']}"><h2>{$post['title']}</h2><i>{$post['description']}</i><b>( {$post['votecnt']} votes )</b><button>vote up</button>
</article>
EOF;}return $posts;}// add votefunction addVote($i) {if ($this->getVisitorIP()) {$GLOBALS['MySQL']->res("UPDATE `s395_posts` SET `votecnt` = `votecnt` + 1 WHERE `id` = '{$i}'");}}// get visitor IP addressfunction getVisitorIP() {$ip = "0.0.0.0";if( ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) && ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ) {$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} elseif( ( isset( $_SERVER['HTTP_CLIENT_IP'])) && (!empty($_SERVER['HTTP_CLIENT_IP'] ) ) ) {$ip = explode(".",$_SERVER['HTTP_CLIENT_IP']);$ip = $ip[3].".".$ip[2].".".$ip[1].".".$ip[0];} elseif((!isset( $_SERVER['HTTP_X_FORWARDED_FOR'])) || (empty($_SERVER['HTTP_X_FORWARDED_FOR']))) {if ((!isset( $_SERVER['HTTP_CLIENT_IP'])) && (empty($_SERVER['HTTP_CLIENT_IP']))) {$ip = $_SERVER['REMOTE_ADDR'];}}return $ip;}
}
$GLOBALS['CPosts'] = new CPosts();

Now, let’s create a basic index.php file which we’ll run

现在,让我们创建一个基本的index.php文件,它将运行

index.php (index.php)


<?php
require_once('classes/CPosts.php'); // include the main class
// accept a vote
if ($_POST && $_POST['action'] == 'vote' && (int)$_POST['id']) {$GLOBALS['CPosts']->addVote((int)$_POST['id']);echo 1; exit;
}
$recent_posts = $GLOBALS['CPosts']->getRecentPosts();
$top_posts = $GLOBALS['CPosts']->getTopPosts();
?>
<!DOCTYPE html>
<html lang="en" ><head><meta charset="utf-8" /><title>Content organization on the number of votes | Script Tutorials</title><link href="css/main.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="js/jquery-1.10.2.js"></script></head><body><header><h2>Back to '<a href="https://www.script-tutorials.com/xxxxxxxxxxxxx/">Content organization on the number of votes</a>' tutorial</h2></header><div class="container"><div class="section"><h1>Top posts:</h1><?= $top_posts ?></div><div class="section"><h1>Recent posts:</h1><?= $recent_posts ?></div></div><script>$(window).load(function() {$('article button').click(function(e) {var id = $(this).parent().attr('id');if (id) {$.post('index.php', { action: 'vote', id: id }, function(data) {if (data) {location.reload();}});}});});</script></body>
</html>

<?php
require_once('classes/CPosts.php'); // include the main class
// accept a vote
if ($_POST && $_POST['action'] == 'vote' && (int)$_POST['id']) {$GLOBALS['CPosts']->addVote((int)$_POST['id']);echo 1; exit;
}
$recent_posts = $GLOBALS['CPosts']->getRecentPosts();
$top_posts = $GLOBALS['CPosts']->getTopPosts();
?>
<!DOCTYPE html>
<html lang="en" ><head><meta charset="utf-8" /><title>Content organization on the number of votes | Script Tutorials</title><link href="css/main.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="js/jquery-1.10.2.js"></script></head><body><header><h2>Back to '<a href="https://www.script-tutorials.com/xxxxxxxxxxxxx/">Content organization on the number of votes</a>' tutorial</h2></header><div class="container"><div class="section"><h1>Top posts:</h1><?= $top_posts ?></div><div class="section"><h1>Recent posts:</h1><?= $recent_posts ?></div></div><script>$(window).load(function() {$('article button').click(function(e) {var id = $(this).parent().attr('id');if (id) {$.post('index.php', { action: 'vote', id: id }, function(data) {if (data) {location.reload();}});}});});</script></body>
</html>

This is quite basic file which generates our page, it also accepts the POST action (upvote) that is sent by clicking on buttons that are located inside of each post.

这是生成我们页面的非常基本的文件,它还接受通过单击每个帖子内部的按钮发送的POST操作(upvote)。

步骤3. CSS (Step 3. CSS)

After the creation of the main functionality – we can move on to the design styles of all the used elements, that’s what we’ve got:

创建主要功能后,我们可以继续使用所有已使用元素的设计样式,这就是我们得到的:

css / main.css (css/main.css)


*{margin:0;padding:0}
body {background-repeat:no-repeat;background-color:#bababa;background-image: -webkit-radial-gradient(600px 200px, circle, #eee, #bababa 40%);background-image: -moz-radial-gradient(600px 200px, circle, #eee, #bababa 40%);background-image: -o-radial-gradient(600px 200px, circle, #eee, #bababa 40%);background-image: radial-gradient(600px 200px, circle, #eee, #bababa 40%);color:#fff;font:14px/1.3 Arial,sans-serif;min-height:600px;
}
.container {border:1px #111 solid;color:#000;margin:20px auto;overflow: hidden;padding:10px;position:relative;width:90%;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;
}
.section {float: left;margin: 0 1%;width: 48%;
}
article {margin:1em 0;
}
button {background: #e3e3e3;border: 1px solid #bbb;border-radius: 3px;-webkit-box-shadow: inset 0 0 1px 1px #f6f6f6;box-shadow: inset 0 0 1px 1px #f6f6f6;color: #333;display: block;font-weight: bold;padding: 8px 0 9px;text-align: center;text-shadow: 0 1px 0 #fff;width: 150px;
}
button:hover {background: #d9d9d9;-webkit-box-shadow: inset 0 0 1px 1px #eaeaea;box-shadow: inset 0 0 1px 1px #eaeaea;color: #222;cursor: pointer;
}
button:active {background: #d0d0d0;-webkit-box-shadow: inset 0 0 1px 1px #e3e3e3;box-shadow: inset 0 0 1px 1px #e3e3e3;color: #000;
}

*{margin:0;padding:0}
body {background-repeat:no-repeat;background-color:#bababa;background-image: -webkit-radial-gradient(600px 200px, circle, #eee, #bababa 40%);background-image: -moz-radial-gradient(600px 200px, circle, #eee, #bababa 40%);background-image: -o-radial-gradient(600px 200px, circle, #eee, #bababa 40%);background-image: radial-gradient(600px 200px, circle, #eee, #bababa 40%);color:#fff;font:14px/1.3 Arial,sans-serif;min-height:600px;
}
.container {border:1px #111 solid;color:#000;margin:20px auto;overflow: hidden;padding:10px;position:relative;width:90%;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;
}
.section {float: left;margin: 0 1%;width: 48%;
}
article {margin:1em 0;
}
button {background: #e3e3e3;border: 1px solid #bbb;border-radius: 3px;-webkit-box-shadow: inset 0 0 1px 1px #f6f6f6;box-shadow: inset 0 0 1px 1px #f6f6f6;color: #333;display: block;font-weight: bold;padding: 8px 0 9px;text-align: center;text-shadow: 0 1px 0 #fff;width: 150px;
}
button:hover {background: #d9d9d9;-webkit-box-shadow: inset 0 0 1px 1px #eaeaea;box-shadow: inset 0 0 1px 1px #eaeaea;color: #222;cursor: pointer;
}
button:active {background: #d0d0d0;-webkit-box-shadow: inset 0 0 1px 1px #e3e3e3;box-shadow: inset 0 0 1px 1px #e3e3e3;color: #000;
}

现场演示

[sociallocker]

[社交储物柜]

存档下载

[/sociallocker]

[/ sociallocker]

结论 (Conclusion)

That’s it for today. Our rating system with the output of records which are sorted by amount of votes is ready. Welcome back to our new articles.

今天就这样。 我们的评分系统已准备就绪,其中包含按票数排序的记录输出。 欢迎回到我们的新文章。

翻译自: https://www.script-tutorials.com/content-organization-on-the-number-of-votes/

redis 哨兵 票数

redis 哨兵 票数_内容组织上的票数相关推荐

  1. redis 哨兵 异步_Redis稍微往上一点点写点集群

    上篇文章记录了一点Redis的基础用法 这篇写的更往上一点点写点集群. 主从复制 一台Redis服务器有可能会崩掉出现故障,Redis向其他数据库一样,提供了复制机制,复制可以提高系统的容错能力,同时 ...

  2. redis 哨兵 异步_突破Java面试(23-8) - Redis哨兵主备切换的数据丢失问题-阿里云开发者社区...

    1 数据丢失的两个场景 主备切换的过程,可能会导致数据丢失 1.1 异步复制 由于 master => slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机,于是 ...

  3. redis生产环境持久化_在SageMaker上安装持久性Julia环境

    redis生产环境持久化 SageMaker is a great environment for data scientists to explore new languages and metho ...

  4. jedispool redis哨兵_通过java哨兵JedisSentinelPool代码示例连接对配置的redis哨兵主从模式进行测试验证...

    一.前言 本文章通过关于java的jedis(2.6.0)的redis客户端连接驱动包,对配置的redis哨兵+主从读写模式配置进行示例代码验证,详细参见具体配置步骤&示例代码说明部分. 二. ...

  5. 哨兵2号波段_分布式框架之高性能:Redis哨兵模式

    本文首发于Ressmix个人站点:https://www.tpvlog.com 我们在搭建Redis的主从架构时,主节点一旦由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主 ...

  6. REDIS哨兵【Sentinel】模式+哨兵的核心知识点+redis哨兵主从切换的数据丢失问题+上一章铺垫的【异步复制数据丢失问题】+【集群脑裂】

    1.redis哨兵模式的前言: 一年一度的问题来了,为啥子要用redis的哨兵模式的呢? 简单粗暴的理解下子,顺带开个玩笑,没有理解好,还望不要见笑: 其实redis的哨兵模式,个人理解:只是说法搞大 ...

  7. k8s redis集群_基于K8S部署redis哨兵集群

    本 文 主 要 内 容 什么是Kubernetes分布式容器管理平台 PaaS平台redis-sentinel集群架构简介 PaaS平台部署redis哨兵集群 redis-sentinel容器测试及验 ...

  8. redis 主从配置_应用 | Redis实现 主从,单例,集群,哨兵,配置应用

    小小经过一天的休整 公众号更新规则:每周六将会停更一次,进行短期的休整,其余时间继续每天一更. 思维导图如下 Redis 主从配置 这里配置Redis主从 什么是主从 主从复制,是指把一台Redis服 ...

  9. redis哨兵主从不切换_《「面试突击」—Redis篇》-- Redis的主从复制?哨兵机制?...

    Redis如何保证高并发,高可用? 高并发:redis的单机吞吐量可以达到几万不是问题,如果想提高redis的读写能力,可以用redis的主从架构,redis天热支持一主多从的准备模式,单主负责写请求 ...

最新文章

  1. qt toutf8函数_qt中的toUtf8, toLatin1, Local8bit, toUcs4(转)
  2. Ubuntu shutdown 关机、重启、注销 命令 常用实例
  3. wireshark抓包常见提示含义解析
  4. Tableau研学小课堂(part1)--商业智能概述
  5. zoj 2110 dfs,剪枝
  6. wps启用编辑按钮在哪里_WPS 新功能上线,官宣首发!人人都会用的图片设计
  7. java8 nullpoint_仅当在Java8中使用lambda时不为null时才过滤值
  8. 开源大数据:Alluxio 云原生数据编排
  9. 一文看懂Python列表表达式及高阶函数如lambda, zip, enumerate, map和filter方法
  10. 常见机器人离线编程软件对比
  11. python通讯录课程设计
  12. excel 多行 取消隐藏_如何在Excel 2013中隐藏和取消隐藏行和列
  13. Vijos 1004 伊甸园日历游戏 博弈
  14. IP地址和 MAC地址详解
  15. 微软认知服务应用秘籍 – 君子动口不动手
  16. 你知道管理工作中要远离三只猫吗?
  17. RK3399 Android7.1修改系统默认壁纸
  18. Js实现Base64编码、解码
  19. Python 高级编程和异步IO并发编程 --13_4 call_soon,call_at,call_soon_threadsafe
  20. 合并多个集合同类项 5.{aaa,bbb,ccc},{bbb,ddd},{eee,fff},{ggg},{ddd,hhh} 通过编程实现结果为

热门文章

  1. 快递鸟电⼦⾯单批量打印流程与注意事项
  2. 如何用python画爱心?
  3. Android 实现定位
  4. 计算机丢失mfc140ud.dll,mfc140ud.dll
  5. PHP是单线程还是多线程?
  6. .NET-9.乱七八糟的理论笔记(概念,思想)
  7. 驭龙HIDS的简介,它开源了
  8. python发送qq邮件_python基于SMTP发送邮件(qq邮箱)
  9. NVIDIA CUDA各版本下载链接(更新至2019-12-11,包含最新10.2版本)
  10. 群智能(SI)与蚁群优化(ACO)概述