202208-11 在Map中实现key唯一不重复操作 目录Map中如何实现key唯一不重复问题:如何做到Map中key唯一不重复,每次都遍历来equals比较吗?结合HashMap.class中的put方法来说明:如何找到这个区域呢?得到这个区域以后,再遍历这个区域来找到对应的元素Map放入相同的key值Map中如何实现key唯一不重复问题:如何做到Map中key唯一不重复,每次都遍历来equals比较吗?首先,答案是否。如果全部遍历的话,当Map中元素很多的时候,显然查询效率低。解释:HashMap属于散列存储结... 继续阅读 >
202205-30 MySQL 外键(FOREIGN KEY)用法案例详解 引子:把所有数据都存放于一张表的弊端表的组织结构复杂不清晰浪费空间扩展性极差为了解决上述的问题,就需要用多张表来存放数据。表与表的记录之间存在着三种关系:一对多、多对多、一对一的关系。处理表之间关系问题就会利用到FOREIGNKEY多对一关系:寻找表与表之间的关系的套路举例:雇员表:emp表 部门:dep表part1:先站在表emp的角度去找表emp的多条记录能否对应表dep的一条记录。翻译... 继续阅读 >
202204-30 Redis通过scan查找不过期的 key(方法详解) RedisScan命令用于迭代数据库中的数据库键。SCAN返回一个包含两个元素的数组,第一个元素是用于进行下一次迭代的新游标,而第二个元素则是一个数组,这个数组中包含了所有被迭代的元素。如果新游标返回0表示迭代已结束。相关命令:SSCAN命令用于迭代集合键中的元素。HSCAN命令用于迭代哈希键中的键值对。ZSCAN命令用于迭代有序集合中的元素(包括元素成员和元素分值)。#SCAN命令是一个基于游标的迭代器(cursorbase... 继续阅读 >
202202-10 浅谈Vue3中key的作用和工作原理 这个key属性有什么作用呢?我们先来看一下官方的解释:kekey属性主要用在Vue的虚拟DOMdiff算法中,在新旧nodes对比时辨识Vnodes;如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法而使用key时,它会基于key的变化重新排列元素顺序,并且会移除/销毁key不存在的元素。先简单提一下我对VNode的理解:VNode的全称是VirtualNode,也就是虚拟节点;V... 继续阅读 >
202107-01 详解vue中v-for的key唯一性 目录1.DOMDiff2.为同一层的相同类型的元素添加key属性3.key不能是index下标值1.DOMDiff要想真正了解key属性的存在意义,还真得从DOMDiff说起,并不需要深入了解DOMDiff的原理,而是仅仅需要知道DOMDiff的工作过程即可。Vue和React都采用了运用虚拟DOM的方式减少浏览器不必要的渲染。由于Vue和React采用的都是v=render(m)的方式渲染视图的,当model数据发生变化时,视图更新的方式就是重新... 继续阅读 >
202105-23 golang 如何获取map所有key的方式 最佳方式:根据map的长度,新建一个数组,遍历map逐个压入方法1(效率很高):funcgetKeys1(mmap[int]int)[]int{//数组默认长度为map长度,后面append时,不需要重新申请内存和拷贝,效率很高j:=0keys:=make([]int,len(m))fork:=rangem{keys[j]=kj++}returnkeys}方法2(效率很高):funcgetKeys2(mmap[int]int)[]int{//数组默认长度为map长度,后面append时,不需要重新申请内存和拷贝,效率很高keys... 继续阅读 >
202104-27 详解React中key的作用 要了解React中key的作用,可以从key的取值入手,key的取值可以分为三种,不定值、索引值、确定且唯一值在下面的代码中,key的取值是不定值(Math.random())问题:点击按钮的时候,span的颜色会变成红色吗?importReact,{useState}from'react';functionApp(){const[initMap,setInitMap]=useState([1,2,3,4]);consthandleClick=()=>{setInitMap([1,2,3,4])varspanEle=document.getElementsByTagNa... 继续阅读 >
202103-30 redis通过lua脚本,获取满足key pattern的所有值方式 我们知道,redis提供了keys命令去获取所有满足格式的key,如我们键入命令keys"user*"将得到所有以user开头的key然后执行mget命令可以获取多个key的值,如但如果满足条件的key过多,我们要将所有key拿到,再用mget去拿到所有值则为相对比较麻烦,因此可以借助xargsredis-clikeys"user*"|xargsredis-climget获取到所有key的值也可以执行lua脚本localkeys=redis.call('keys',KEYS[1]);returnredis.call('mget',unpack(key... 继续阅读 >
202103-05 解决RedisTemplate的key默认序列化器的问题 redis的客户端换成了spring-boot-starter-data-redis,碰到了一个奇怪的问题,在同一个方法中1.先hset,再hget,正常获得数据。在不同的方法中先hset,再hget获取不到数据,通过redis的monitor监控发现了命令的问题:实际我的key为JK_HASH:csrk,hashkey为user,但是根据上图所示,实际执行的命令多了好多其他字符,这是什么原因呢?在服务器端先确认发现实际有这个Hash,通过hset可以得到正确的数据,所以第一次执行hset的时候命... 继续阅读 >
202102-28 解决Java Redis删除HashMap中的key踩到的坑 现象Java使用Redis删除HashMap中的key时,取出对应的HashMap后通过Java中HashMap的remove方法移除key然后重新调用redis的Hmset方法将覆盖无效示例代码//通过key取出对应的HashMapMap<String,String>ruleMap=jedisCluster.hgetAll("HashKey");//通过java中移除HashMap中的KeyruleMap.remove("ruleA");//将移除后的HashMap重新存入redis的hashmap中jedisCluster.hmset(key,ruleMap);//问题来了,这里通过HashKey从redis中取出Hash... 继续阅读 >
202101-26 C# 获取动态key的json对象的值案例 问题描述如果直接获取某个json数组中的元素将得到如下的json{"44":{"height":25,"appeared":-70000000,"length":44,"order":"saurischia","vanished":-70000000,"weight":135000}}这个json对象如果使用C#类来反序列化,那么实体类的结构如下,实体类的类名需要与json对象key相同的才可以使用json反序列化,这样对程序造成了极大的不便。publicclass44{publicintheight{get;set;}publicintappeare... 继续阅读 >
202101-22 为什么ConcurrentHashMap的key value不能为null,map可以? 源码if(key==null||value==null)thrownewNullPointerException();二义性假定ConcurrentHashMap也可以存放value为null的值。那不管是HashMap还是ConcurrentHashMap调用map.get(key)的时候,如果返回了null,那么这个null,都有两重含义:1.这个key从来没有在map中映射过。2.这个key的value在设置的时候,就是null。为什么map允许value=null对于HashMap的正确使用场景是在单线程下使用。在单线程中,当我们得到的value是nu... 继续阅读 >
202012-10 python的dict判断key是否存在的方法 大家在学会python中的字典,会发现,字典中是没有特殊顺序的,但是都存储在一个特定的key下面,key是什么呢?其实key是python字典中的键,可以是数字,也可以是字符串,可以存储任意类型的对象。那你知道如何判断字典中key的存在吗?下面小编就向大家介绍python中,判断字典中是否存在key的两种方法。方法一:使用自带函数实现dict={'a':{},'b':{},'c':{}}print(dict.__contains__("b"))返回:Trueprint(dict.__contai... 继续阅读 >
202011-29 Redis大key多key拆分实现方法解析 背景业务场景中经常会有各种大key多key的情况,比如:1:单个简单的key存储的value很大2:hash,set,zset,list中存储过多的元素(以万为单位)3:一个集群存储了上亿的key,Key本身过多也带来了更多的空间占用(如无意外,文章中所提及的hash,set等数据结构均指redis中的数据结构)由于redis是单线程运行的,如果一次操作的value很大会对整个redis的响应时间造成负面影响,所以,业务上能拆则拆,下面举几个典型的分拆方案... 继续阅读 >
202011-25 浅谈Redis的key和value大小限制 今天研究了下将javabean序列化到redis中存储起来,突然脑袋灵光一闪,对象大小会不会超过redis限制?不管怎么着,还是搞清楚一下比较好,所以就去问了下百度,果然没多少人关心这个问题,没找到比较合适的答案,所以决定还是去官网找吧。找到两句比较关键的话,截图如下。结论redis的key和string类型value限制均为512MB。补充知识:Redis获取所有键值通过遍历获取目标键值:importredisredis=redis.Redis(host='192.24.210.2',... 继续阅读 >
202011-03 详解安装sql2012出现错误could not open key...解决办法 【前言】 之前由于小编的错误操作误删了注册表中的一项关于sql的内容,具体删了什么,也忘记了,当时是为了解决一个sql问题,问题没解决成,反而sql后来被弄得修复不了、装不上、卸载不了,无奈之下,出于当时正在准备面试事项,sql也不急着用,就一直没管,想用数据库做一些demo的时候,小编选择安装了一个mysql进行实践,近期小编要做一个图书管理系统平台,快速学习的方法就是看看别人是如何做的,然... 继续阅读 >