last

34. Find First and Last Position of Element in Sorted Array

别来无恙 提交于 2020-03-20 12:35:46
https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/ 给定一个有序数组,可能包含有重复元素,问target在数组中的起始位置和结束位置,要求复杂度 \(O(logN)\) ------------------------------------------------------------------ Example 1: Input: nums = [5,7,7,8,8,10], target = 8 Output: [3,4] Example 2: Input: nums = [5,7,7,8,8,10], target = 6 Output: [-1,-1] Example 2: Input: nums = [5,7,7,8,8,10], target = 5 Output: [0,0] class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int lo = 0, hi = nums.size()-1; if (hi==-1) { vector<int> result={-1,-1}; return result; } while(lo < hi

vi编辑器

a 夏天 提交于 2020-03-19 23:07:36
vi的基本概念   基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode),   各模式的功能区分如下:   1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。   2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。   3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。   不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。   vi的基本操作   ?进入vi   在系统提示符号输入vi及文件名称后,即可进入vi全屏幕编辑画面:   $ vi testfile   有一点要特别注意,就是您进入vi之后是处于“Command mode”下,您要切换到Insert mode才能输入文字。   初次用vi的用户都会想先用上下左右键移动光标,结果电脑一直叫,把自己气个半死,所以进入vi后,先不要乱动,   转换入Insert后再说。?切换至Insert

第七篇 开放的API服务

六月ゝ 毕业季﹏ 提交于 2020-03-19 19:19:40
3 月,跳不动了?>>> 获取5条数据 https://randomuser.me/api/?results=5 {"results":[{"gender":"male","name":{"title":"Mr","first":"Angel","last":"Burke"},"location":{"street":{"number":6651,"name":"Saddle Dr"},"city":"Orange","state":"New South Wales","country":"Australia","postcode":5792,"coordinates":{"latitude":"-80.5750","longitude":"-132.0348"},"timezone":{"offset":"+5:45","description":"Kathmandu"}},"email":"angel.burke@example.com","login":{"uuid":"01baba21-ef07-4d4f-9738-e7c5fc0a1bed","username":"bluelion931","password":"jesus1","salt":"57bB2s7u","md5":"80fdfb45ac5070ade689c20a405be80d","sha1":

MySQL 处理重复数据

旧城冷巷雨未停 提交于 2020-03-19 02:47:28
MySQL 处理重复数据 sMySQL 处理重复数据 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。 防止表中出现重复数据 你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。 CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) ); 如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示: CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) ); 如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功

MySQL 处理重复数据

好久不见. 提交于 2020-03-19 02:46:01
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。 防止表中出现重复数据 你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) ); 如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。如下所示: CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) ); 如果我们设置了唯一索引,那么在插入重复数据时,SQL语句将无法执行成功,并抛出错。 INSERT IGNORE INTO与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据

集合框架系列 Map(十一):LinkeHashMap

a 夏天 提交于 2020-03-18 18:31:25
目录 1 概述 2 原理 3 源码分析  3.0 Entry 的继承体系  3.1 链表的建立过程  3.2 链表节点的删除过程  3.3 访问顺序的维护过程  3.4 基于 LinkedHashMap 实现缓存 4 总结 1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap 对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。在实现上,LinkedHashMap 很多方法直接继承自 HashMap,仅为维护双向链表覆写了部分方法。所以,要看懂 LinkedHashMap 的源码,需要先看懂 HashMap 的源码。关于 HashMap 的源码分析,本文并不打算展开讲了。大家可以参考我之前的一篇文章“ HashMap 源码详细分析(JDK1.8) ”。在那篇文章中,我配了十多张图帮助大家学习 HashMap 源码。 本篇文章的结构与我之前两篇关于 Java 集合类( 集合框架 )的源码分析文章不同,本文将不再分析集合类的基本操作(查找、遍历、插入、删除),而是把重点放在双向链表的维护上。包括链表的建立过程,删除节点的过程,以及访问顺序维护的过程等。好了,接下里开始分析吧。 2. 原理 上一章说了

[红日安全]Web安全Day12 – 会话安全实战攻防

杀马特。学长 韩版系。学妹 提交于 2020-03-18 17:23:58
本文由红日安全成员: ruanruan 编写,如有不当,还望斧正。 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。 1.会话安全概述 1.1 什么是会话 session会话机制是一种服务器端机制,它使用类似于哈希表(可能还有哈希表)的结构来保存信息。当程序需要为客户端的请求创建会话时,服务器首先检查客户端的请求是否包含会话标识符(称为会话ID)。如果包含它,它先前已为此客户端创建了一个会话。服务器根据会话ID检索会话(无法检索,将创建新会话),如果客户端请求不包含会话ID,则为客户端创建会话并生成与会话关联的会话ID。 session id应该是一个既不重复也不容易被复制的字符串。会话ID将返回给客户端以保存此响应。 1.2常见会话问题 1.2

Mysql基于gtid的主从复制错误:1062

倾然丶 夕夏残阳落幕 提交于 2020-03-18 07:49:11
说明: 环境 mysql-master:172.16.200.43 mysql-slave:172.16.200.44 系统:centos7 版本:MySQL5.6.35 一、基于GTID复制环境的搭建前提 主从环境的搭建和5.5没有什么区别,唯一需要注意的是:开启GTID需要启用这三个参数: #GTID gtid_mode = on enforce_gtid_consistency = 1 log_slave_updates = 1 gtid-mode用来设置是否开启GTID功能,如果要开启GTID功能,需要同时开启log-bin和log_slave_updates功能,另外还需要开启enforce_gtid_consistency功能。gtid_mode参数可以设置为on、off、upgrade_step_1、upgrade_step_2四种值,其中upgrade_step_1和upgrade_step_2是给将来mysql可能的新功能预留的,对当前的myql没有任何意义。同时,mysql建议在mysql_upgrade的时候,关闭gtid_mode功能和enforce_gtid_consistency功能,因为Mysql在upgrade期间可能会操作非事务的MyISAM存储引擎表,会引起报错。 二、配置步骤 1、43上面授权44从库的账号 MySQL [(none)]>

Linux 内核链表 list.h 的使用

人盡茶涼 提交于 2020-03-18 07:15:46
Linux 内核链表 list.h 的使用 C 语言本身并不自带集合(Collection)工具,当我们需要把结构体(struct)实例串联起来时,就需要在结构体内声明指向下一实例的指针,构成所谓的“链表”。而为了实现对链表的操作,我们需要另外实现一系列的函数,例如添加、删除、搜索、复制等等。而利用 Kernel 源代码中自带的 list.h,则可以方便地实现任意类型结构体的串联。 编程需求 假设我有一个表示学生资料的结构体: #define MAX_STRING_LENGTH 50 typedef struct student { char first_name[MAX_STRING_LENGTH]; char last_name[MAX_STRING_LENGTH]; unsigned int age; } student_t; 传统的做法,当我们需要将一系列学生的数据串联起来,那我们需要在该结构体内部添加一枚指针: typedef struct student { char first_name[MAX_STRING_LENGTH]; char last_name[MAX_STRING_LENGTH]; unsigned int age; struct student *next; /* Look at dis ;p */ } student_t; 几乎每位 C

oracle 统计/分析函数

本小妞迷上赌 提交于 2020-03-16 14:05:39
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 语法: Sql代码 <analytic- function >(<argument>,<argument>,...) over( <query-partition-clause> < order - by -clause> <windowing-clause> ) 说明: <1> over是关键字,用于标识分析函数。 <2> <analytic-function>是指定的分析函数的名字。 <3> <argument>为参数,分析函数可以选取0-3个参数。 <4> 分区子句<query-partition-clause>的格式为: partition by<value_exp>[,value_expr]... 关键字partition by子句根据由分区表达式的条件逻辑地将单个结果集分成N组。这里的"分区partition"和"组group" 都是同义词。 <5> 排序子句order-by-clause指定数据是如何存在分区内的。其格式为: order[siblings]by{expr|position|c_alias}[asc|desc][nulls first|nulls last] 其中: A.asc|desc