last

Elasticsearch入门实践

一笑奈何 提交于 2020-03-01 06:30:32
一. 系统环境 操作系统:CentOS release 6.8 (Final) ES版本:6.1.1 二. 安装 先确认安装了Java运行时环境: [es@localhost]$ java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) 解压ES压缩包: [es@localhost]$ curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.1.zip [es@localhost]$ unzip elasticsearch-6.1.1.zip 三. 启动 1. 启动ES单节点 [es@localhost]$ cd elasticsearch-6.1.1 [es@localhost]$ ./bin/elasticsearch # 在前台启动,可以通过CTRL + C停止 [es@localhost]$ ./bin/elasticsearch -d # 在后台以守护进程模式运行,通过信号通知关闭: kill -SIGTERM

sed详解

℡╲_俬逩灬. 提交于 2020-03-01 05:52:15
文章目录 语法 SED工作流程 选项 SCRIPS 模式空间命令 保持空间命令 sed使用实例 1、打印: p 命令 2、删除: d 命令 3、替换: s 命令 4、追加: a 命令 5、插入:i命令 6、修改:c命令 7、打印行号:=命令 8、打印(包括控制字符):l命令 9、字符转换:y命令 10、读取下一行:n命令 11、读取文件:r命令 12、保存文件:w命令 13、退出:q命令 14、读取下一行以\n拼接上一行:N 15、打印至\n的内容:P 16、删除上一行:D 17、保持空间命令:h/H,g/G,x 改变流 1、分支 branch 2、测试 test sed(Stream EDitor),是一种流编辑器,用于文本编辑 语法 sed [option] 'SCRIPTS' FILE... SCRIPTS:[Address] [!]Command 命令地址对 SED工作流程 读取新的一行到模式空间,将“SCRIPTS”的第一个address匹配,如果符合则执行command 如果address符合则执行command,不符合取下一个地址命令对 直到所有的地址命令对应用完,输出模式空间的内容 选项 选项 功能 -f FILE 调用sed脚本处理文件 -n 抑制默认内容输出,常与p命令连用 -r 支持扩展元字符 -iSUFFIX 修改源文件,同时创建一个备份文件

C++中accumulate的用法

天大地大妈咪最大 提交于 2020-02-29 19:42:37
std::accumulate 定义于头文件< numeric> template < class InputIt , class T > constexpr T accumulate ( InputIt first , InputIt last , T init ) ; template < class InputIt , class T , class BinaryOperation > constexpr T accumulate ( InputIt first , InputIt last , T init , BinaryOperation op ) ; 计算给定值 init 与给定范围 [first, last) 中元素的和。第一版本用 operator+ ,第二版本用二元函数 op 求和元素,均将 std::move 应用到其左侧运算数 (C++20 起)。 op 必须不非法化涉及范围的任何迭代器,含尾迭代器,且不修改其所涉及范围的任何元素及 *last 。(C++11 起) 参数 first, last - 要求和的元素范围 init - 和的初值 op - 被使用的二元函数对象。接收当前积累值 a (初始化为 init )和当前元素 b 的二元运算符。 该函数的签名应当等价于: Ret fun ( const Type1 & a , const Type2 & b

关于页码的js代码

孤者浪人 提交于 2020-02-29 14:56:37
<script type="text/javascript"> function submitMessageForm(flag) { if ('first' == flag) { document.getElementById('page').value = 1; } else if ('pre' == flag) { var current = Number(document.getElementById('page').value); if (current > 1) { document.getElementById('page').value = current - 1; } } else if ('next' == flag) { var current = Number(document.getElementById('page').value); var last = Number(document.getElementById('last').value); if (current < last) { document.getElementById('page').value = current + 1; } } else if ('last' == flag) { var last = Number(document.getElementById('last')

Leetcode 68.文本左右对齐

微笑、不失礼 提交于 2020-02-29 08:33:35
文本左右对齐 给定一个单词数组和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用"贪心算法"来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。 文本的最后一行应为左对齐,且单词之间不插入 额外的 空格。 说明: 单词是指由非空格字符组成的字符序列。 每个单词的长度大于 0,小于等于 maxWidth 。 输入单词数组 words 至少包含一个单词。 示例: 输入: words = ["This", "is", "an", "example", "of", "text", "justification."] maxWidth = 16 输出: [ "This is an", "example of text", "justification. " ] 1 import java.util.*; 2 3 public class Solution { 4 public ArrayList<String> fullJustify(String[] words, int maxWidth) { 5 ArrayList

浅谈REDIS数据库的键值设计

三世轮回 提交于 2020-02-29 07:38:41
丰富的数据结构使得redis的设计非常的有趣。不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与。redis的DBA需要熟悉数据结构,并能了解使用场景。 下面举一些常见适合kv数据库的例子来谈谈键值的设计,并与关系型数据库做一个对比,发现关系型的不足之处。 用户登录系统 记录用户登录信息的一个系统, 我们简化业务后只留下一张表。 关系型数据库的设计 mysql> select * from login; +---------+----------------+-------------+---------------------+ | user_id | name | login_times | last_login_time | +---------+----------------+-------------+---------------------+ | 1 | ken thompson | 5 | 2011-01-01 00:00:00 | | 2 | dennis ritchie | 1 | 2011-02-01 00:00:00 | | 3 | Joe Armstrong | 2 | 2011-03-01 00:00:00 | +---------+----------------+-----

数据结构与算法分析:(五)循环链表

自闭症网瘾萝莉.ら 提交于 2020-02-29 02:05:50
一、前言 相信小伙伴们在前面两篇文章的详细介绍已经对单向链表、双向链表有一个很清晰的认识了。 数据结构与算法分析:(三)单向链表 数据结构与算法分析:(四)双向链表 接下来我们来介绍循环链表,你把单向链表、双向链表搞清楚了的话,循环链表自然也不难了。 循环链表可分为:单向循环链表、双向循环链表。 1、单向循环链表: 单向循环链表跟单向链表唯一的区别就在 尾结点 。我们知道,单向链表的尾结点指针指向空地址,表示这就是最后的结点了。而单向循环链表的尾结点指针是指向链表的头结点。从我画的单向循环链表图中,你应该可以看出来,它像一个环一样首尾相连,所以叫作“单向循环”链表。 和单向链表相比,单向循环链表的优点是从链尾到链头比较方便。当要处理的数据具有环型结构特点时,就特别适合采用单向循环链表。比如著名的 约瑟夫问题 。尽管用单向链表也可以实现,但是用单向循环链表实现的话,代码就会简洁很多。 2、双向循环链表: 双向循环链表想必也不用我多说了吧。 二、循环链表实战 假设有这么一个小游戏: 100个人围成圆圈,从1开始报数,喊到3人的时候退出,重复,直到剩下最后一个人。 看到围成圆圈,立马想到了 循环链表 这个数据结构。 1、我们先来定义循环链表的接口 public interface CircularLinkedList < E > { /** * 向链表插入一个元素,默认在尾部 *

PTA6-2 顺序表操作集

邮差的信 提交于 2020-02-28 21:37:55
本题要求实现顺序表的操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下: typedef int Position; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */ }; 各个操作函数的定义为: List MakeEmpty():创建并返回一个空的线性表; Position Find( List L, ElementType X ):返回线性表中X的位置。若找不到则返回ERROR; bool Insert( List L, ElementType X, Position P ):将X插入在位置P并返回true。若空间已满,则打印“FULL”并返回false;如果参数P指向非法位置,则打印“ILLEGAL POSITION”并返回false; bool Delete( List L, Position P )

STL源码学习----next_permutation和prev_permutation算法

喜夏-厌秋 提交于 2020-02-28 17:23:44
  STL中也提供了迭代器范围内的排列算法,next_permutaion和prev_permutation即是。本文先给出常见的一种字符串全排列算法,然后分析STL提供的next_permutation和prev_permutation算法。 1,一种消重的字符串全排列算法   在字符串全排列中,如果该字符串中存在相同的两个元素,这个字符串的全排列的个数不再是n!,所以要考虑相同元素的情况。下面的实现是利用交换的思想,递归地求解字符串的全排列算法: 1 void swap(char* x, char* y) 2 { 3 char tmp; 4 tmp = *x; 5 *x = *y; 6 *y = tmp; 7 } 8 9 void permute(char *str, int i, int n) 10 { 11 int j; 12 13 if (i == n) 14 printf("%s\n", str); 15 else{ 16 for (j = i; j <= n; j++){ 17 if(str[i] == str[j] && j != i) //为避免生成重复排列,不同位置的字符相同时不交换 18 continue; 19 swap((str+i), (str+j)); 20 permute(str, i+1, n); 21 swap((str+i), (str+j))

侧边栏下拉时箭头的旋转动画(treeView控件)

霸气de小男生 提交于 2020-02-28 13:30:50
//点击菜单时箭头旋转 let treeView = document.getElementsByClassName("treeview");//let解决闭包问题 let last=document; for (let i = 0; i <treeView.length ; i++) { treeView[i].addEventListener("click",function(){ let that = treeView[i]; if (that.classList.contains("menu-open")){ last.getElementsByTagName("i")[1].style.transform="rotateZ(180deg)"; that.getElementsByTagName("i")[1].style.transform="rotateZ(0deg)"; that.getElementsByTagName("i")[1].style.transition="0.5s"; }else{ last.getElementsByTagName("i")[1].style.transform="rotateZ(0deg)"; that.getElementsByTagName("i")[1].style.transform="rotateZ(180deg)";