ZBX Blog

热爱生活,健康工作

面试相关

面试相关的一些问题

还待进一步完善 Jdk 1.8的HashMap中resize中的2次幂的扩展 通过把长度扩展为原来的两倍,元素不用重新计算hash,只需原有的hash&(n-1), 原来的hash新增的那个bit是1还是0,是0的话索引没变,是1的话索引变成”原索引+oldCap“ Nagle算法 传送一个只拥有1个字节有效数据的数据包,却要发费40个字节长包头(即ip头20字节...

HTTP相关

HTTP相关

还待进一步完善 HTTP请求和响应 ETag 一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。 Set-Cookie 服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的...

Java的锁机制

偏向锁、CAS、Synchronized、Lock等

~还待进一步完善~ 悲观锁与乐观锁 悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中...

Java8相关知识

Java8相关知识

Java 多态的实现机制 多态分为两种:编译时多态和运行时多态。重载(overload)就是编译时多态的一个例子,编译时多态在编译时就已经确定,运行时运行的时候调用的是确定的方法。通常所说的多态指的都是运行时多态,也就是编译时不确定究竟调用哪个具体方法,一直延迟到运行时才能确定。 机制: 调用方法时,实际上必须首先完成实例方法的符号引用解析,结果是该符号引用被解析为方法表的偏移量。虚拟...

Redis相关知识

待进一步完善

原理 纯内存操作 单线程操作,避免了频繁的上下文切换,单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程。(单线程的缺点??) 采用了非阻塞 I/O 多路复用机制 使用了epoll,epoll中的读、写、关闭、连接都转化成了事件 数据类型 String 一个可变的字节数组,String是动态字符串 ...

空间的密文查询

空间几何范围的密文查询

Introduction ​ 文章提出了一种有效的几何范围查询方案(EGRQ)来支持加密空间数据的搜索和访问控制。在EGRQ中使用了安全的KNN计算、多项式拟合技术和保顺的加密来保护范围查询的安全性和私密性,为了提高效率利用R-tree来减少搜索空间和匹配时间。 System Model 数据拥有者 数据所有者的主要任务是将其空间数据以密文(util...

MySQL相关知识01

MySQL的原理、数据结构、引擎、使用、事务隔离级别等

InnoDB引擎 ​ InnoDB通过使用多版本并发控制MVCC来获得高并发性,并且实现了SQL的标准的4中隔离级别,默认为可重复读级别。同时,使用一种被称为next-key locking的策略来避免幻读现象的产生。除此之外,InnoDB还提供了insert buffer插入缓冲、二次写double write、自适应哈希索引adaptive hash index、预读 read ah...

Ethereum中的Bloom Filter

以太坊中的布隆过滤器

概念 布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询效率高,不会漏判,缺点是有一定的误判率。 日志中的Bloom Filter 以太坊提供Bloom Filter的功能是为了快速查找合约的交易或者发起交易的账户。某个账户根据合约地址查找相应的合约发...

LLVM Basic Block frequency

基本块频率

介绍 ​ 看了写论文中评价Fuzzer性能有一项关键性指标,即代码覆盖率(coverage),而Anti-fuzz的论文中则是提出了降低代码覆盖率的方案,而与覆盖率息息相关的是基本块频率,只有热的基本块的访问频率变低才能说明Anti-fuzz确实是有用的,于是查看了下LLVM中关于基本块频率的描述。 ​ 所谓Basic Block基本块,是指程序一顺序执行的语句序列,其中只有一个入口和...

Merkle Patricia Trie

以太坊虚拟机的的存储结构之Merkle Patricia Trie

以太坊中MPT树的结构 每一个以太坊的区块头都包含三棵MPT树,分别是交易树、收据树(交易执行过程中的一些数据)和状态树(账号信息、合约账户和用户账户)。MPT(Merkle Patricia Trie)是以太坊中一种非常重要的数据结构,用来存储用户账户的状态及其变更、交易信息、交易的收据信息。它实际上是三种数据结构的组合,分别是Trie树, Patricia Trie和Merkle树。下...