探究JS V8引擎下的“数组”底层实现 背景今天在学习JS的数组时,发现JS的数组可以存放不同类型的元素、并且数组长度是可变的。what??这跟我之前接触的数组不一样啊。数据结构中定义的数组都是定长的、数据类型一致的存储结构。JS中的数组竟然如此特殊,这也是为什么标题中数组二字加上了“”的原因。带着一脸的懵逼,打开搜索引擎,一探究竟。目录:什么是数组JavaScript中的数组总结什么是数组首先来看维基百科中对于数组...
linux 文件IO系统学习 所有的IO操作打开的文件系统都会生成一个文件描述符fd来表示已经打开的文件。fd是一个整数。fd = open(pathname, flags, mode)函数打开pathname所标识的文件,并返冋文件描述符,用以在后续函数调用中指代打开的文件。如果文件不存在,open()函数可以创建,这取决于对位掩码参数flags的设置。如果打开的过程中出现错误,则返回-1。flags参数还可指定...
Kapacitor、Chronograf配置报警的TICKscript脚本语言使用 TICK :Telegraf +InfluxDB +Chronograf +KapacitorTelegraf:Telegraf是一个数据采集套件,对应用、容器等进行监控,监控采集的数据会发送给influxDB。InfluxDB:go语言开发的时序数据库,专门负责存储时序数据。Chronograf :可视化的监控展示服务。Kapacitor:Kapacitor是一款时序数据...
RocketMQ消息消费方式 推拉模式 RocketMQ消息消费本质上是基于的拉(pull)模式,consumer主动向消息服务器broker拉取消息。consumer被分为2类:MQPullConsumer和MQPushConsumer,其实本质都是拉模式(pull),即consumer轮询从broker拉取消息。 区别:MQPushConsumer方式,consumer把轮询过程封装了,并注册MessageListener监...
创建基于Feign的RPC服务 1.首先声明一个feign的接口@FeignClient(value = "test-api", configuration = QueryBySqlServiceConfiguration.class, fallback = QueryBySqlServiceFallBack.class)public interface QueryBySqlService { @PostMapp...
top K问题 在大规模数据处理中,经常会遇到的一类问题:在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。例如,在搜索引擎中,统计搜索最热门的10个查询词;在歌曲库中统计下载最高的前10首歌等。针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到的最小堆),即先将数据集按照Hash方法分解成多个小数据集,然后使...
HashMap的死循环问题 HashMap在put操作时,如果达到了扩容条件,会触发resize操作,对map进行扩容。public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key); int i = indexFor(hash, table.len...
TCP的可靠传输 滑动窗口、确认应答与超时重传 TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。通过序列号与确认应答提高可靠性TCP通过肯定的确认应答(ACK)实现可靠的数据传输。当发送端将数据发出后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大。没有收到确认应答并不意味着数据一定丢失。也又可能是对方已经收到了数据,只是返回的确认应答在途中丢失...
如何开发RESTful API RESTFul API有哪些特点:基于“资源”,数据也好、服务也好,在RESTFul设计里一切都是资源。 无状态。一次调用一般就会返回结果,不存在类似于“打开连接-访问数据-关闭连接”这种依赖于上一次调用的情况。 URL中通常不出现动词,只有名词 URL语义清晰、明确 使用HTTP的GET、POST、DELETE、PUT来表示对于资源的增删改查 使用JSON不使用XML 我举...
Java判断字符串是不是时间日期格式 引入jar包:import org.apache.commons.lang3.time.DateUtils; private static String[] parsePatterns = {"yyyy-MM-dd","yyyy年MM月dd日", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy/MM/dd"...
进程和线程的区别 进程与线程的区别:通俗的解释一个系统运行着很多进程,可以比喻为一条马路上有很多马车不同的进程可以理解为不同的马车而同一辆马车可以有很多匹马来拉--这些马就是线程假设道路的宽度恰好可以通过一辆马车道路可以认为是临界资源那么马车成为分配资源的最小单位(进程)而同一个马车被很多匹马驱动(线程)--即最小的运行单位每辆马车马匹数=1所以马匹数=1的时候进程和线程没有...
Java中的ThreadLocal、ThreadLocalMap原理学习 public class ThreadLocalTest { public static void main(String[] args) { final ThreadLocal<Integer> local = new ThreadLocal<>(); local.set(10); Thread t = new T...
Redis事务,watch命令学习 redis事务:redis的事务和mysql等关系型数据库的事务不太一样,redis中的事务不会回滚,只能手动收拾事务失败后的烂摊子。在命令行中,MULTI是事务的开始命令。EXEC是事务的执行命令。并且会按顺序执行事务中的命令,不会被其他事务的命令打扰。在java操作redis中,是通过.multi()和.exec()开始和执行事务。MULTI会将之后加入的所有命令按顺序的加入到命令...
Mysql InnoDB事务隔离级别 隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read) 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeatable read) 不可能 不可能 可能...
Java反射中Class.forName()和ClassLoader.loadClass()的区别 一、Java类装载过程装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象; 链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的; 校验:检查导入类或接口的二进制数据的正确性;(文件格式验证,元数据验证,字节码验证,符号引用验证) 准备:给类的静态变量分配并初始化存储空间...
new Hashmap时设置初始化容量多少合适 在阿里巴巴Java开发手册中,阿里工程师对于初始化hashmap的容量的建议是:刚看到这个建议,是非常懵的,为啥要这样设置?在jdk中,当我们new hashmap并且指定初始化容量capacity时,jdk会帮我们取第一个大于capacity的2次幂。具体的实现是:1.先把capacity - 12.进行多次无符号右移和或运算3.最后 + 1比如,我们...
适配器模式在Java中的应用 Java中Array.asList()方法就是用的适配器模式,这个方法只是在原来的数组上包了一次list,实际上数据还是保存在数组中。如果对Array.asList()方法得到的list调用add,remove等操作,将抛出了UnsupportedOperationException。因为asList()方法返回的是Array的一个内部类,并不是正经的List类,它并没有实现List类的一...
mac批量修改文件名、后缀名 第一种方法:打开终端cd 到文件所在的目录执行for i in *.xxx;do mv “$i” “${i%.xxx}.yyy” ;done 命令。把xxx换成输入的后缀,yyy换成输出的后缀即可。第二种方法:下载NameChanger工具。add后选择中间的模式,rename即可。...
局部变量、实例变量的线程安全性 局部变量是线程安全的。因为局部变量是声明在方法中的变量,方法是放在JVM内存中的方法区的,为方法分配内存的时候并不会为局部变量分配内存,只有在有线程在调用方法的时候才会为局部变量分配内存,并且局部变量是分配在栈上的,栈空间是线程私有的,所以,每当有线程执行方法,都会为其在栈上分配一个局部变量的空间。所以局部变量是属于线程的,是线程安全的。实例变量的线程安全要分两种情况来说。对于单例模式下对象的...
反向代理和CDN是什么,作用是什么 CDN是内容分发网络(Content Delivery Network)。是为了解决用户请求响应过慢的问题。比如用户在黑龙江,服务器在海南,用户请求的速度可能受距离、带宽的影响。CDN将几台机器分发在全国各地,用户发出的请求会选择就近的CDN服务器进行处理。CDN简单的来说就是存储一些静态文件的一台或多台服务器,通过复制,缓存主服务器等方式,将文件保存其中。反向代理一般就是指Nginx,是...