MaxKey

2018年0112日笔记: 在数组里判断是否重复出现, 及重复次数等问题的三种解决方案

泪湿孤枕 提交于 2021-02-10 17:48:16
如果只是找出重复或不重复的,不用计算重复次数的情况下, 方法二,最快捷! 一. 传统处理方法是: 设置一个对象obj,并把数组中的每个元素,作为obj的属性; 统计属性的值(出现一次值加1); 大于1的,就是重复的元素.等于1就是没有重复的元素,最后把重复或不重复的元素放入新的数组中. 也可以用此方法来统计重复次数最多的元素,及次数; 1.题目:查找数组中重复出现过的元素 var arrx =[1, 2, 4, 4, 3, 3, 1, 5, 3]; function duplicates(arr) { var obj = {}; var res = []; for(i in arr){ if(obj[arr[i]]){ obj[arr[i]] +=1; } else{ obj[arr[i]] =1; } if(obj[arr[i]]>1 && res.indexOf(arr[i])==-1){ // obj的键大于1(说明重复出现), 并且 res数组里没有出现过,防止重复放入res; res.push(arr[i]); } } console.log(res); } duplicates(arrx); 2.上题数组中统计重复最多的元素和重复次数: function duplicates(arr) { var obj = {}; arr.forEach(function(item)

面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场

此生再无相见时 提交于 2021-01-29 03:02:21
摘要: Hash索引有两个明显的限制:(1)当key的数量很多时,维护Hash索引会给内存带来很大的压力;(2)区间查询很低效。如何对这两个限制进行优化呢?这就轮到本文介绍的主角,LSM树,出场了。 我们通过 append-only log 的数据结构,实现了一个具备高写入性能的key-value数据库。 append-only log 之所以有很高的写入性能,主要 得益于磁盘的顺序写入 。这可能违反了我们对磁盘的认知,因为在我们的印象中,写磁盘总是很慢。其实不然,准确地说应该是 随机写磁盘很慢 ,因为在写之前可能会进行多次寻址。如果只是顺序写磁盘,性能是非常的高,如下的一个ACM报告中显示,顺序写磁盘甚至比随机写内存的性能还要高! 举个例子,Kafka是一个高性能的消息队列,它的厉害之处就在于极致地利用磁盘的顺序写入性能,如果生产者和消费者的速率相当,消息甚至可以在操作系统的Page Cache层面就完成了传递。所以,以后别再认为写磁盘很慢了! append-only log 大幅提升了数据写入性能,但是随之而来的是,非常低的数据读取性能。针对这一点,我们采用Hash索引进行了优化,优化的效果也非常的显著。然而,Hash索引有两个明显的限制:(1)当key的数量很多时,维护Hash索引会给内存带来很大的压力;(2)区间查询很低效。如何对这两个限制进行优化呢?这就轮到本文介绍的主角

单点登录认证系统 MaxKey v 2.4.0GA发布

非 Y 不嫁゛ 提交于 2021-01-01 18:00:26
English | 中文 概述 MaxKey(马克思的钥匙) 单点登录认证系统(Single Sign On System),寓意是最大钥匙,是 业界领先的企业级开源IAM身份管理和身份认证产品 ,支持OAuth 2.0/OpenID Connect、SAML 2.0、JWT、CAS、SCIM等标准协议,提供 简单、标准、安全和开放 的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、RBAC权限管理和资源管理等。 官方网站 官网 | 官网二线 QQ交流群: 434469201 邮箱email: maxkeysupport@163.com 代码托管 GitHub | 码云(Gitee) 什么是 单点登录(Single Sign On) ,简称为 SSO ? 用户只需要登录认证中心一次就可以访问所有相互信任的应用系统,无需再次登录。 主要功能: 所有应用系统共享一个身份认证系统 所有应用系统能够识别和提取ticket信息 产品特性 标准认证协议: 序号 协议 支持 1.1 OAuth 2.0/OpenID Connect 高 1.2 SAML 2.0 高 1.3 JWT 高 1.4 CAS 高 1.5 FormBased 中 1.6 TokenBased(Post/Cookie) 中 1.7 ExtendApi 低 1.8 EXT 低 登录支持 序号 登录方式 2.1

mongodb 基础

狂风中的少年 提交于 2020-12-29 11:57:44
一、首先安装mongodb 1.下载地址:http://www.mongodb.org/downloads 2.解压缩到自己想要安装的目录,比如d:\mongodb 3.创建文件夹d:\mongodb\data\db、d:\mongodb\data\log,分别用来安装db和日志文件,在log文件夹下创建一个日志文件MongoDB.log,即d:\mongodb\data\log\MongoDB.log 4.运行cmd.exe进入dos命令界面,执行下列命令   > cd d:\mongodb\bin   > d:\mongodb\bin>mongod -dbpath "d:\mongodb\data\db"  看到类似的信息,则说明启动成功,默认MongoDB监听的端口是27017,mysql的是3306 5.测试连接  新开一个cmd窗口,进入mongodb的bin目录,输入mongo或者mongo.exe,出现如下信息说明测试通过,此时我们已经进入了test这个数据库,如何进入其他数据库下面会说。   输入exit或者ctrl+C可退出。 6.当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,此时我们可以将MongoDB安装为windows服务  还是运行cmd

Specified key was too long; max key length is 767 bytes解决方案

半腔热情 提交于 2020-12-24 13:43:34
Specified key was too long; max key length is 767 bytes解决方案 参考文章: (1)Specified key was too long; max key length is 767 bytes解决方案 (2)https://www.cnblogs.com/abcdwxc/p/9855344.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4837212

Python 练习题

℡╲_俬逩灬. 提交于 2020-11-08 09:08:39
一,两个小组对战,对战规则如下: team1 = ['a','b','c'] team2 = ['x','y','z'] #a 不和x对战,b 不和y,z 对战 # for i in team1: #法一 # for j in team2: # if i == 'a' and j == 'x': # continue # elif i == 'c' and (j == 'y' or j =='z'): # continue # else: # print('%s VS %s'%(i,j)) for t1 in team1: #法二 if t1 == 'a': tmp = team2[team2.index('x')+1:] #返回x 的索引 elif t1 == 'b': tmp = team2[:team2.index('y')] #返回 y 的索引 else: tmp = team2 for t2 in tmp: print('%s VS %s'%(t1,t2)) def func(x): if x > 0 : func(x-1) print(x) func(5) 输出结果: 1 2 3 4 5 (递归) 二,循环删list元素 li = [1,1,2,3,4,5,6,7,8,9] for i in li: if i%2!=0: li.remove(i) print(li)

laravel 数据库迁移时报错

元气小坏坏 提交于 2020-08-11 07:52:19
原文地址: https://www.wjcms.net/archives/laravel%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%81%E7%A7%BB%E6%97%B6%E6%8A%A5%E9%94%99 问题描述 [Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (1)laravel 5.4或者更高版本 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持。如果你运行MySQL v5.7.7或者更高版本,则不需要做任何事情。 (2)当你试着在一些MariaDB或者一些老版本的的MySQL上运行

IdentityServer4使用EFCore生成MySql Specified key was too long; max key length is 1000 bytes

笑着哭i 提交于 2020-08-07 10:31:42
IdentityServer4中,使用efcore生成PersistedGrant数据库时报错,错误信息如下: fail: Microsoft.EntityFrameworkCore.Database.Command[20102] Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] CREATE INDEX `IX_PersistedGrants_SubjectId_ClientId_Type` ON `PersistedGrants` (`SubjectId`, `ClientId`, `Type`); Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] CREATE INDEX `IX_PersistedGrants_SubjectId_ClientId_Type` ON `PersistedGrants` (`SubjectId`, `ClientId`, `Type`); ... Specified key was too long; max key length is 1000 bytes 在mysql中建立索引时

搭建mongodb分布式集群(3台主机分片集群)

☆樱花仙子☆ 提交于 2020-05-02 07:32:10
搭建mongodb分布式集群(分片集群+keyfile安全认证以及用户权限) 2020-01-02 12:56:37 介绍:     分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。 基本思想 就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器)。大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨分片查询。使用分片的时机: Shard Server: mongod 实例,用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障; Config Server: mongod 实例,存储了整个 Cluster Metadata,其中包括 chunk 信息。 Route Server: mongos 实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用 主机规划: IP地址 实例(端口) 实例(端口) 实例(端口) 实例(端口) 实例(端口) 192.168.2

Windows下安装配置MongoDB

梦想的初衷 提交于 2020-05-02 01:06:47
Windows下安装配置MongoDB 一,介绍 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 二,安装配置 当前数据库版本:Mongodb 4.0.5 第一步 :下载 MongoDB 第二步 :安装MongoDB 下载后双击该文件,按操作提示安装即可。但是安装过程中,你可以通过点击 "Custom(自定义)" 按钮来设置你的安装目录。 第三步 :创建数据库文件的存放位置 在MongoDB下创建data,在data下再创建db:D:\MongoDB\data\db 因为启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。 第四步 :启动MongoDB服务 进入D:\MongoDB\bin目录(注意:先输入d:进入d盘,然后输入cd D:\MongoDB\bin),然后输入如下的命令启动mongodb服务:mongod --dbpath D:\MongoDB\data\db,如果出现以下界面,表示启动成功 27017是mongodb的默认端口号 参数            描述