首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【DB笔试面试676】Oracle中,一个RAC双节点实例环境...给EMP加锁:请尝试解决这个故障。

♣ 题目部分 Oracle中,一个RAC双节点实例环境,面试人员使用是实例2,而在实例1中已经使用“SELECT * FROM SCOTT.EMP FOR UPDATE;”给EMP加锁: SQL...SET ENAME='ENMOTECH' WHERE EMPNO=7369; 请尝试解决这个故障。...,是否可以KILL掉阻塞者; ④ 获得可以KILL掉进程的确认回复后,正确杀掉另一个实例上进程。...答:V$LOCK中,当TYPE列为TM锁时,则ID1列为DBA_OBJECTS.OBJECT_ID,ID2列为0;当TYPE列为TX锁时,则ID1列为视图V$TRANSACTION...另外,由于变为KILLED状态会话PADDR列都变成了另外一个,因此,通过平常连接方式就没有办法关联到后台进程,Oracle 11g下提供了CREATOR_ADDR列,该列可以关联到后台进程,

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

一个数据对应遍历df数据只要df存在对应数据就替换掉,但是这个一直报错

大家好,是皮皮。 一、前言 前几天Python最强王者交流群【哎呦喂 是豆子~】问了一个Pandas数据处理问题,一起来看看吧。...问题描述: 大佬们 请问下这个问题 有一个数据对应,然后遍历df数据只要df存在对应数据就替换掉 但是这个一直报错(IndexError: index 0 is out of bounds for...二、实现过程 这里【瑜亮老师】给了一个指导:使用dfreplace。这个方法是可以 但是要替换数据太多了 就直接弄成对应了。...后来【wangning】也给了一个指导,使用正则处理文本数据。 顺利地解决了粉丝问题。 三、总结 大家好,是皮皮。...最后感谢粉丝【哎呦喂 是豆子~】提出问题,感谢【瑜亮老师】、【wangning】给出思路,感谢【莫生气】等人参与学习交流。 【提问补充】温馨提示,大家群里提问时候

17210

hash 特性与运用

我们把数据关键内容作为输入,把通过哈希函数得到输出作为对应 key 映射到一个位置,这样我们就可以具备极快访问速度,数据量越大,哈希访问速度优势就越明显。...,那么要找到该数据就必须以 phone 作为匹配条件去遍历查询,这样耗时可能会很长 如果存储哈希中,那么只需要以 phone 作为输入得到对应哈希地址,就可以直接访问到该数据全部内容...这也是为什么在前端项目中,大数量数据存储都尽量使用 Map 2 识别内容变化 在实践中,有的时候直接识别内容变化可能会比较麻烦。...,试图通过暴力手段不停尝试,直到得到一个符合约定规则 hash 。...当然,如果未来某个时刻技术发展,算力大幅度增强,也不排除有可能可以轻松做到,如果到了这个时候,sha256 就失去了其安全性,比特币也将崩溃 我们可以在网上找到很多在线 sha256 工具,有兴趣可以搜索尝试一下

58730

《面试集:自用》《待完善...》

树中叶子保存是对应行物理位置。通过该,存储引擎能顺利地进行回查询,得到一行完整记录。同时,每个叶子页也保存了指向下一个叶子页指针。从而方便叶子节点范围遍历。...(容易扩容时候,形成循环链表),jdk1.8以后是尾插入(避免循环链表) HashMap安全问题 jdk1.7及之前HashMap HashMap扩容时候调用resize()方法中transfer...CAS是一种非阻塞式同步方式。 CAS 有效地说明了“认为位置 V 应该包含 A;如果包含该,则将 B 放到这个位置;否则,不要更改该位置,只告诉这个位置现在即可。...下次再请求加载该类时候,类加载器会直接使用缓存实例,而不会尝试再次加载。 类加载详细过程 加载,查找并加载类二进制数据,Java堆中也创建一个java.lang.Class类对象。...比如加入存储一条数据后,马上要返回数据总条数,这个时候,会出问题,Elasticsearch会返回操作之前数据,也就是假如开始有500条数据,Insert了一条进去,按道理来说应该是501条,但是这个时候查询会发现

45830

Linux内核那些事之连接跟踪

02 — 连接如何插入全局连接跟踪 前一节中,我们看到了内核创建了一个连接conntrack,并将其插入到unconfirmed list中。那么为什么不直接将其插入到全局连接跟踪中呢?...其原因有二: 基础知识一节中,我们提到一个conntrack有两个tuple。当我们创建conntrack时,实际上只有一个方向报文,也就只能够生成这个方向tuple。...基于以上原因,Linux内核会在最后时刻才会将新建conntrack插入到全局中。那么这个最后时刻是什么时候呢?...上面代码中h1和h2分别对应conntrack两个tuple计算hash,分别与CONNTRACK_LOCKS进行模操作得到两个锁索引。...遍历桶中连接时,匹配前调用nf_ct_is_expired判断连接是否过期,如果过期则调用nf_ct_gc_expired淘汰该连接。这样就保证了大部分过期连接可以得到及时淘汰。

2.5K20

【小家java】HashMap原理、TreeMap、ConcurrentHashMap原理、性能、安全方面大解析-----看这一篇就够了

从下图可以我们也能看到这样会保证低位全为1,而扩容后只有一位差异,也就是多出了最左位1,这样通过 h&(length-1)时候,只要h对应最左边一个差异位为0,就能保证得到数组索引和老数组索引一致...要注意是,有人觉得上面定位到数组位置之后然后遍历链表时候,e.hash == hash这个判断没必要,仅通过equals判断就可以。...一直以来都知道HashMap是线程不安全,但是到底为什么线程不安全,多线程操作情况下什么时候线程不安全?...一个哈希下面,有若干个子哈希。...抛出一个问题:每一个segment各自持有锁,那么调用size()方法时候(size()实际开发大量使用),怎么保持一致性呢?

1K10

利用pythonexcel中画图实现方法

当然,其实用画图这个词不甚严谨,实际上是利用opencv遍历一个像素rgb,再将其转化为16进制,最后调用openpyxl进行填充即可。 1.1、实现效果 效果如下图 ?...这里就是本方法也就是方法3中调用方法2。唯一区别就是有没有返回。 我们这样方法3中调用方法2然后方法2中调用方法1。这样在对象外时候我们就只用对象实例化并调用方法3即可实现功能。...第三行、第四行就是调用openpyxl.load_workbook打开我们方法1中新建工作簿中test工作 五到七行两个循环嵌套很容易懂就是利用循环遍历每个工作 第八行代码可能可以简化...,这个修改网上一个填充渐变色代码。...四、结语 好啦,到此所有东西已全部搞定,当然还有很多要注意, 第一、方法3中红绿蓝提取中这部分编号是刚好相反,提取时候需要注意 如下 ? 当然你也可以尝试改变这个看最后会得到什么结果。

3.2K31

JAVA容器-自问自答学ArrayList

一个这么重要东西,为什么没有一开始就去学习它呢,因为它是由多种基础数据结构和一些代码设计思想组成。我们要学习了这些基础,再学习HashMap,这样我们才能更好去理解它。...问 1:您上面说,存放一个元素时,先计算它hash确定它存储位置,然后再把这个元素放到对应位置上,那万一这个位置上面已经有元素存在呢,新增这个元素怎么办?...随后将 这个hash % 模上 哈希Node[] table长度 得到具体存放位置。所以put(K key, V value)多个元素,是有可能计算出相同存放位置。...如果出现线程不安全操作时,HashMap会尽可能抛出ConcurrentModificationException防止数据异常,当我们在对一个HashMap进行遍历时,遍历期间,我们是不能对HashMap...问:我们使用HashMap时,选取什么对象作为key键比较好,为什么? 答: 可变对象:指创建后自身状态能改变对象。换句话说,可变对象是该对象创建后它哈希可能被改变。

87990

mysql优化groupBy - 崔笑颜博客

这个名词《MySQL分时机:100w?300w?500w?都对也都不对!》一文中有讲到,这是MySQL连接线程可以独立访问和处理内存区域,那么,这个临时长什么样呢?...早期数据量不是很大时候,以存储分组及统计字段为例,那么,基本上内存就可以完全存放下分组及统计字段对应所有这个存放大小由tmp_table_size参数决定。...这时候这个存放内存区域,MySQL就叫它内存临时。 此时,或许你已经觉得MySQL将中间结果存放在内存临时,性能已经有了保障,但是,《MySQL分时机:100w?300w?500w?...这个写死是MySQL内存分配一个缺陷。 磁盘临时 当分组及统计字段对应所有大小超过tmp_table_size决定,那么,MySQL将使用磁盘来存储这些。...如上图temporary框 遍历完成后,再根据字段viewed_user_agesort_buffer中做排序,得到结果集返回给客户端。

1K30

他连哈希扣都不懂

下边就用蹩脚英文翻译一下它意思。。。 返回当前对象一个哈希这个方法用于支持一些哈希,例如 HashMap 。...通常来讲,它有如下一些约定: 若对象信息没有被修改,那么,一个程序执行期间,对于相同对象,不管调用多少次 hashCode 方法,都应该返回相同。...一会儿通过一个案例说明,就能明白为什么这样说了。 什么是哈希? 上文中提到了哈希。什么是哈希呢?我们直接看百度百科解释。 ? 用一张图来表示它们关系。 ?...左边一列就是一些关键码(key),通过哈希函数,它们都会得到一个固定,分别对应右边一列某个。右边这一列就可以认为是一张哈希。...但是,我们会发现这样也有一个弊端,就是哈希所占内存空间就会变大。因此,这是一个权衡过程。 有心同学可能已经发现了。去,上边这个做法好熟悉啊。

70220

读时加写锁,写时加读锁,Eureka可真的会玩

但是就在翻Eureka源码时候,发现Eureka使用读写锁时竟然是在读时加写锁,写时加读锁,这波操作属实震惊到了,于是就花了点时间研究了一下Eureka这波操作。...2、服务下线 cancel和internalCancel 服务下线就是注册删除这个服务实例信息,服务下线方法最后是调用internalCancel实现,而internalCancel是加读锁...hash,设置到增量信息返回为什么要加锁 假设不加锁,那么对于注册和recentlyChangedQueue读写都可以同时进行,那么会出现这么一种情况 当获取增量信息时候第一步遍历recentlyChangedQueue...所以一定要加锁,保证获取增量数据时,不能对注册进行改动。 为什么加读写锁而不是synchronized锁 这个其实跟Eureka没多大关系,主要是读写锁和synchronized锁特性决定。...哈哈,其实对于这个读操作性能低问题,Eureka也进行了优化,那就是通过缓存来优化了这个性能问题,读时候先读缓存,缓存没有才会真正调用获取增量方法来读取增量信息,所以最后真正走到获取增量信息方法

48010

Group By 深度优化,真是绝了!

这个名词《MySQL分时机:100w?300w?500w?都对也都不对!》一文中有讲到,这是MySQL连接线程可以独立访问和处理内存区域,那么,这个临时长什么样呢?...早期数据量不是很大时候,以存储分组及统计字段为例,那么,基本上内存就可以完全存放下分组及统计字段对应所有这个存放大小由tmp_table_size参数决定。...这时候这个存放内存区域,MySQL就叫它内存临时。 此时,或许你已经觉得MySQL将中间结果存放在内存临时,性能已经有了保障,但是,《MySQL分时机:100w?300w?500w?...这个写死是MySQL内存分配一个缺陷。 磁盘临时 当分组及统计字段对应所有大小超过tmp_table_size决定,那么,MySQL将使用磁盘来存储这些。...如上图temporary框 遍历完成后,再根据字段viewed_user_agesort_buffer中做排序,得到结果集返回给客户端。

33930

HashMap 和 currentHashMap 终于总结清楚了!

也就是说,当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入时候,发现已经被其他元素占用了,其实这就是所谓哈希冲突,也叫哈希碰撞。...Entry引用,单链表结构 int hash;//对keyhashcode进行hash运算后得到,存储Entry,避免重复计算 /** *...key的话,则会调用addEntry方法链表添加一个Entry,重点就在与addEntry方法是如何插入链表,addEntry方法源码如下: voidaddEntry(int hash, K key...HashMapput时候,插入元素超过了容量(由负载因子决定)范围就会触发扩容操作,就是rehash,这个会重新将原数组内容重新hash到新扩容数组中,多线程环境下,存在同时其他元素也进行...,而红黑树遍历效率是很快,代替一定阈值链表,这样形成一个最佳拍档 4、JDK1.8为什么使用内置锁synchronized来代替重入锁ReentrantLock,觉得有以下几点 5、因为粒度降低了

52041

关于python中set与dict无序问题

大家初识python时就学习过,什么是可迭代对象(分清楚这个多半是想知道到底啥能被for循环遍历),什么是可变可迭代对象,什么是不可变可迭代对象,什么是无序什么是有序。但大家有想过证明无序嘛?...这种情况下,无论怎么疯狂输出,疯狂运行这段代码,得到结果却是唯一,那就是print了{1,2,3} 通过反复尝试发现,只要是int类型,那么set好像就变成有序了,无论声明这个set时数字如何摆放...同样将dict字典key设为int类型,这时候字典也变成了固定排序方式。这是为什么呢? 讲到这里,本蛇需要继续声明set和dict是无序!别怀疑你专业知识。...那么为什么出现这种现象呢,答案只需要从底层源码中就能找到。简单来说,就是字典和集合无序性python是如何实现? 字典和集合无序实现方式是hash。...~ 就像上图显示一样,每次hash都不同,那么字符ABChash位置也不同,然而set就是依据hash来进行排列,这就实现了集合无序。

2.1K20

HashMap 底层源码解读(一行一行读,有基础就能看懂)

为什么HashMap 中数组初始化容量必须是 2n次幂呢? 我们HashMap中 添加一个元素时候,是根据key哈希确定在数组中 位置。...我们添加一个元素时候,如何找到具体数组索引? put 方法中有一个参数调用hash(),计算keyhash,然后与数=数组长度进行取余位运算 获得数组具体位置索引。...随着扩容进行,我们会创建一个大小为原数组大小2倍数组,然后遍历原数组,计算每个元素hash,然后再根据hash与数组长度求余,拿到这个元素新数组中索引,然后放置 (下面就是加分回答了) 重新计算...olcCap 是一个 1000 最高位是1 数字,所以与 oldCap 按位与运算能够得到hash最高位 我们进行扩充hashmap时候,不需要重新计算hash,只需要看原来hash新增那个...,大概流程 现获得原数组长度,阈值,然后都增大二倍得到新数组长度和 阈值 然后我们 拿新数组长度new一个新数组 然后遍历原数组中一个元素,重新计算元素hash,然后与新数组取余获得索引

46840

Go语言实现布谷鸟过滤器

具体插入步骤如下: 当一个不存在元素插入时候,会先根据 H1 计算出其 T1 位置,如果该位置为空则可以放进去。...如果该位置不为空,则根据 H2 计算出其 T2 位置,如果该位置为空则可以放进去。 如果T1 和 T2 位置元素都不为空,那么就随机选择一个 hash 将其元素踢出。...如一个布谷鸟过滤器中数组长度2^8即256,那么取 hash 最后 n 位即:hash & 255这样就可以得到最终位置信息。...[Cuckoo Filter Insert3] 上图展示了元素 X 插入到 hash 时候,hash 两次发现对应槽位 0 和 3 都已经满了,那么随机抢占了槽位 3 其中一个元素,被抢占元素重新...那么这个元素会霸占两个槽位上所有位置,最后插入第 9 个相同元素时候,会一直循环挤兑,直到最大循环次数,然后返回一个 false: [Cuckoo Filter Insert4] 如果插入之前做一次检查能不能解决问题呢

1.2K20

MPQ Storm库 源代码分析 一个

这个MPQ文件头部,最基本目的是占位,保证第一个数据文件写入位置是正确。 6》假设是大文件,则创建大文件索引HetTable。...同一时候分配一个TMPQHash(hash索引取值与文件名称有关),分配完之后。与FileEntry关联。...有了FileTable就能够得到FileEntry,有了文件入口。就能读取数据了。 4》加载listfile和attributes文件。 眼下没用到这两个选项。...第一种是取出当中某一个特定文件,另外一种遍历MPQ文件内部全部数据文件。 第一种取出一个文件是比較简单。...详细流程是: 1》调用SFileFindFirstFile,匹配符为*,则会所有匹配。返回一个hFind。 2》运行读取一个文件流程,上面已经说明,此处不再赘述。

46540

【JavaWeb】73:JdbcTemplate竟然只能算是江南七怪级别的

Java中可以用一个JavaBean来表示数据: ? Java与数据之间满足如下关系: 类名就相当于数据名。 成员变量就相当于数据表列名(字段)。...②rowMapper接口 row是“行”意思,Mapper是映射器意思。 说白了这个接口就是将数据中一行数据映射成一个JavaBean对象。 上述例子中JavaBean就是User这个类。...这个接口就和动态代理中调用处理器特别的类似: 当template调用query时候,rowMapper就会调用它自己mapRow()方法。...那它是如何封装呢? 可以尝试着自定义封装一个update方法,让其达到和JdbcTemplate一样效果。 把握一个原则,数据不写死,让代码更具有拓展性: ?...具体,是以args这个可变参数(也就是数组)来表示,而数组索引是以0开始。 所以③中封装时这样编写: ? 封装有个特点就是很少看到具体,都是用变量。

58440

嘿嘿,就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他

前言 上篇文章介绍了 HashMap 源码后,博客平台广受好评,让本来己经不打算更新这个系列,仿佛被打了一顿鸡血。真的,被读者认可感觉,就是这么奇妙。...因此,只能自己在此更正一下。见下面截图, ? put 方法,替换旧那里,应该是只有一种情况,e 不包括新。图中方框也标注出来了。...这个计算 (j << SSHIFT) + SBASE ,在后边非常常见,我们只需要知道它代表是 j 一个偏移量,通过偏移量,就可以得到 j 实际。可以类比,AQS 中 CAS 操作。...可能有的小伙伴就会迷惑,为什么做这么多次判断,直接去自旋不就好了,反正最后都要自旋理解是,多线程环境下,因为不确定是什么时候会有其它线程 CAS 成功,有可能发生在以上任意时刻。...元素迁移时候,所有线程都遵循从后向前推进规则,即如图A线程是第一个进来线程,会从下标为7位置,开始迁移数据。

52110
领券