07 2019 档案
摘要:1 概念 1.1 模型 节点 在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。 异常 机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率
阅读全文
摘要:JavaScript 是一种有趣的语言,我们都喜欢它,因为它的性质。浏览器是JavaScript的主要运行的地方,两者在我们的服务中协同工作。JS有一些概念,人们往往会对它掉以轻心,有时可能会忽略不计。原型、闭包和事件循环等概念仍然是大多数JS开发人员绕道而行的晦涩领域之一。正如我们所知,无知是一件
阅读全文
摘要:题目信息 问题1:浏览器控制台上会打印什么? 答案(JS 常见问题) 问题2:如果我们使用 let 或 const 代替 var,输出是否相同 答案(JS 常见问题) 问题3:"newArray"中有哪些元素? 答案(JS 常见问题) 问题4:如果我们在浏览器控制台中运行'foo'函数,是否会导致堆
阅读全文
摘要:如果使用Redis的时候,不合理使用内存,把什么东西都放在内存里面,又不设置过期时间,就会导致内存的堆积越来越大。根据28法则,除了20%的热点数据之外,剩余的80%的非热点或不怎么重要的数据都在占用内存空间,这时就要使用一种淘汰策略来释放一些内存。Redis中提供了多种内存回收策略,当内存容量不足
阅读全文
摘要:分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集。本文第一部分将向你介绍分片的概念,第二部分将向你展示 Redis 分片的可选方案。 分片能做什么 Redis 的分片承担着两个主要目标: 允许使用很多电脑的内存总和来支持更大的数据库。
阅读全文
摘要:热点问题概述 产生原因 热点问题产生的原因大致有以下两种: 用户消费的数据远大于生产的数据(热卖商品、热点新闻、热点评论、明星直播)。 在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的降价促销,当这其中的某一件商品被数万次点击浏览或者购买时,会形成一个较大的需求量,这种情况下就会造成
阅读全文
摘要:背景 秒杀活动是绝大部分电商选择的低价促销、推广品牌的方式。不仅可以给平台带来用户量,还可以提高平台知名度。一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验,提升平台的口碑,从而提升秒杀活动的最大价值。 本文讨论云数据库Redis版缓存设计高并发的秒杀系统。 秒杀的特征 秒杀活
阅读全文
摘要:背景 云数据库Redis版不管主从版还是集群规格,replica作为备库不对外提供服务,只有在发生HA的时候,replica提升为master后才承担读写流量。这种架构读写请求都在master上完成,一致性较高,但性能受到master数量的限制。经常有用户数据较少,但因为流量或者并发太高而不得不升级
阅读全文
摘要:一、写在前面 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。 所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。 说实话,如果在公司里落地生产
阅读全文
摘要:本文版权归博客园和作者本人吴双共同所有 。转载爬虫请注明地址,博客园蜗牛 http://www.cnblogs.com/tdws/p/5712835.html 蜗牛Redis系列文章目录http://www.cnblogs.com/tdws/tag/NoSql/ Redis Cluster http
阅读全文
摘要:爬虫和转载请注明原文地址:博客园蜗牛 http://www.cnblogs.com/tdws/p/5727633.html 我们知道,redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。 那么当所需内存,超过maxmemory怎么办? 这个时候就该配置文件中的maxm
阅读全文
摘要:一、简介: 和大多NoSQL数据库一样,Redis同样遵循了Key/Value数据存储模型。在有些情况下,Redis会将Keys/Values保存在内存中以提高数据查询和数据修改的效率,然而这样的做法并非总是很好的选择。鉴于此,我们可以将之进一步优化,即尽量在内存中只保留Keys的数据,这样可以保证
阅读全文
摘要:一、前言 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔
阅读全文
摘要:1 redis是什么? 通常而言目前的数据库分类有几种,包括 SQL/NSQL,,关系数据库,键值数据库等等 等,分类的标准也不以,Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数 据库之间。Redis不
阅读全文
摘要:关于mysql的用户管理,笔记 1、创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localhost identified by "123456" ; // 创建新用户,用户名为testuser,密码为123456 ;
阅读全文
摘要:文章首发于【博客园-陈树义】,点击跳转到原文《大白话说Java反射:入门、进阶、原理》 目录 一个简单的例子 反射常用API 获取反射中的Class对象 通过反射创建类对象 通过反射获取类属性、方法、构造器 反射源码解析 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。 一般情
阅读全文
摘要:首先,清除所有预设置 iptables -F 其次,设置只允许指定ip地址访问指定端口 1、在tcp协议中,禁止所有的ip访问本机的1521端口。 iptables -I INPUT -p tcp --dport 1521 -j DROP 2、允许192.168.1.123访问本机的1521端口 i
阅读全文
摘要:转载:https://www.cnblogs.com/landeanfen/p/6047031.html 阅读目录 一、Less介绍 1、官方介绍 2、自己理解 3、Less、Sass、Stylus 二、Less使用入门 1、开发模式下使用Less 2、运行模式下使用Less 三、常见用法示例 1、
阅读全文
摘要:转载:https://www.cnblogs.com/youyoui/p/7851007.html 当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方
阅读全文
摘要:问题一: 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 答案:绝对路径:如/etc/init.d当前目录和上层目录:./ ../主目录:~/切换目录:cd问题二: 怎么查看当前进程?怎么执行退出?怎么查看当前路径?答案:查看当前进程:ps执行退出:e
阅读全文
摘要:.example .pp{ color: orange; } .example.pp2 { color: green; }如上面的两个定义一个是中间有空格,一个是中间没空格。 第一个class要这样写生效:<p class="example">文字文字<span class="pp">pp这个cla
阅读全文
摘要:转 https://www.cnblogs.com/tufujie/p/9413852.html 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没
阅读全文
摘要:docker 查询或获取私有仓库(registry)中的镜像,使用 docker search 192.168.1.8:5000 命令经测试不好使。 解决: 1、获取仓库类的镜像: [root@shanghai docker]# curl -XGET http://192.168.1.8:5000/
阅读全文
摘要:有时候关闭软件后,后台进程死掉,导致端口被占用。下面以JBoss端口8083被占用为例,列出详细解决过程。 解决方法: 1.查找被占用的端口 netstat -tln netstat -tln | grep 8083 netstat -tln 查看端口使用情况,而netstat -tln | gre
阅读全文
摘要:ref : https://www.jianshu.com/p/7635ea96e53f 用 Docker 部署 Kafka Kafka 简介 作为一个消息中间件,Kafka 以高扩展性、高吞吐量等特点,在互联网项目中被广泛采用。不清楚 Kafka 的同学,可以先看看这篇文章:http://blog
阅读全文
摘要:什么是消息队列? 简单来说,消息队列是存放消息的容器。客户端可以将消息发送到消息服务器,也可以从消息服务器获取消息。 问题导读:********* 为什么需要消息系统? kafka架构? kafka如何存储消息? Producer如何发送消息? Consumer如何消费消息? Offset如何保存?
阅读全文
摘要:在Redis中,键值对(Key-Value Pair)存储方式是由字典(Dict)保存的,而字典底层是通过哈希表来实现的。通过哈希表中的节点保存字典中的键值对。我们知道当HashMap中由于Hash冲突(负载因子)超过某个阈值时,出于链表性能的考虑,会进行Resize的操作。Redis也一样 在re
阅读全文
摘要:Stream是Redis 5.0版本引入的一个新的数据类型,它以更抽象的方式模拟日志数据结构,但日志仍然是完整的:就像一个日志文件,通常实现为以只附加模式打开的文件,Redis流主要是一个仅附加数据结构。至少从概念上来讲,因为Redis流是一种在内存表示的抽象数据类型,他们实现了更加强大的操作,以此
阅读全文
摘要:拉取redis5.0.3镜像 # docker pull daocloud.io/library/redis:5.0.3 [root@localhost ~]# docker pull daocloud.io/library/redis:5.0.3 5.0.3: Pulling from libra
阅读全文
摘要:一、从数据一致性谈起1、数据一致性的情形2、数据一致性的概念3、数据一致性的原理4、数据一致性的协议二、分布式服务间的数据一致性三、分布式事务一致性解决方案1、接口同步调用模式与一致性解决方案2、接口异步调用模式与一致性解决方案3、消息异步处理模式与一致性解决方案四、保证操作幂等性的常用方法五、总结
阅读全文
摘要:一、数据库瓶颈1、IO瓶颈2、CPU瓶颈二、分库分表1、水平分库2、水平分表3、垂直分库4、垂直分表三、分库分表工具四、分库分表步骤五、分库分表问题1、非partition key的查询问题(水平分库分表,拆分策略为常用的hash法)2、非partition key跨库跨表分页查询问题(水平分库分表
阅读全文
摘要:一、数据库架构原则二、常见的架构方案方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用方案二:双主架构,两个主库同时提供服务,负载均衡方案三:主从架构,一主多从,读写分离方案四:双主+主从架构,看似完美的方案三、一致性解决方案第一类:主库和从库一致性解决方案第二类:DB和缓存一致性解决方案
阅读全文
摘要:转载 1、C和C++的特点与区别? 答:(1)C语言特点:1.作为一种面向过程的结构化语言,易于调试和维护; 2.表现能力和处理能力极强,可以直接访问内存的物理地址; 3.C语言实现了对硬件的编程操作,也适合于应用软件的开发; 4.C语言还具有效率高,可移植性强等特点。 (2)C++语言特点: 1.
阅读全文
摘要:原文:http://www.cnblogs.com/gaoxing/p/4253833.html 内存分配是面向虚拟内存的而言的,以页为单位进行管理的,页的大小一般为4kb,当在堆里创建一个对象时(小于4kb),会分配一个页,当再次创建一个对象时会判断该页剩余大小是否够,够的话使用该页剩余的内存,减
阅读全文
摘要:redis 不支持会滚操作的说明. redis 不支持会滚操作的说明. redis 不支持会滚操作的说明.
阅读全文
摘要:Zookeeper是可以存储数据的,所以我们可以把它理解一个数据库,实际上它的底层原理本身也和数据库是类似的。 一、数据库的原理 我们知道,数据库是用来存储数据的,只是数据可以存储在内存中或磁盘中。而Zookeeper实际是结合了这两种的,Zookeeper中的数据即会存储在磁盘中以达到持久化的目的
阅读全文
摘要:1.排序方法 首先能想到的就是先排序,然后取前1000个数,或者部分排序,只排出前1000个数就行 缺点:这些方法的时间复杂度都比较高 2,分治法 可以使用分治法,这有点类似快排中partition的操作,随机选一个数t,然后对整个数组进行partition,会得到两部分,前一部分的数都大于t,后一
阅读全文
摘要:题目一:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7,的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数组2或者3。(n个元素,n种可能的取值
阅读全文
摘要:现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来。python中有协程库gevent,py web框架tornado中也用了gevent封装好的协程。本文主要介绍进程、线程和协程三者之间的区别。 一、概念 1、进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进
阅读全文
摘要:1、索引定义 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表中一个或多个列(例如,employee 表的姓氏 (lname) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。 2、建立索引的优缺点: 优点:
阅读全文
摘要:转载:https://www.cnblogs.com/zwwhnly/p/11194028.html 最近在读刘增辉老师所著的《MyBatis从入门到精通》一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使用coll
阅读全文
摘要:为了获得更良好的阅读体验,建议您前往个人独立域名博客观看:传送门) 一、什么是消息队列? 当我试图用一则通俗的比喻来说明这个概念的时候,我想到一个有意思的比喻:如果把队列抽象成一个集合体,那么消息队列也就是一堆消息的集合。按照这个思路我想到了「杂志」。这不就是一堆消息的集合吗,关心这些消息的人都能通
阅读全文
摘要:转载:https://www.cnblogs.com/yjf512/p/11193009.html k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位。 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe
阅读全文
摘要:转载:https://mp.weixin.qq.com/s/YIcXaH7AWLJbPjnTUwnlyQ 首先我们分别画图来看看,BIO、NIO、AIO,分别是什么? BIO:传统的网络通讯模型,就是BIO,同步阻塞IO 它其实就是服务端创建一个ServerSocket, 然后就是客户端用一个Soc
阅读全文
摘要:转载:http://techblog.ppdai.com/2018/03/26/20180326/ 一、前言 技术选型是一个很热门的话题,最近我看到自己的微信朋友圈有好几篇关于技术选型的文章,读者对这类主题的热情很高。在技术组织内部,技术人员经常会面临技术选型问题,有时候,技术选型还常常牵扯好几波干
阅读全文
摘要:转载:https://www.cnblogs.com/lovecindywang/p/9617542.html 【下载本文PDF进行阅读】 转载:https://www.cnblogs.com/lovecindywang/p/9617542.html 【下载本文PDF进行阅读】 这里所说的三架马车是
阅读全文
摘要:MongoDB 是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多。由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置漏洞被攻击,数据被删,引起了人们的注意,同时也说明了很多公司生产中大量使用 Mongodb。 Mo
阅读全文
摘要:作者:Mike丶 https://www.cnblogs.com/mikeCao/p/8710837.html 假设B复制了A,修改A的时候,看B是否发生变化: 如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值) 如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)
阅读全文
摘要:作者:水滴石穿 https://www.cnblogs.com/powercto/p/11182754.html 1 说明 下面如果有贴出源码,对应的源码是JDK8主要的源码类java.util.concurrent.ThreadPoolExecutor、java.util.concurrent.T
阅读全文
摘要:转:https://mp.weixin.qq.com/s/CEJFsDBizdl0SvugGX7UmQ 不知道从什么时候开始,网上流传着这么一个说法: MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!= 这些条件时便不能使用索引查询,只能使用全表扫描。 这种说法愈演愈烈,
阅读全文
摘要:题记:观察人类进化,以及各国、各民族在这个进化中所起的作用、所处的位置,市值 TOP 10 的变迁,会是一个再好不过的指标! 2008年,经历了全球金融危机后,原油期货一路飙升,创出了147.27美元的历史高点,全球十大市值中有3家石油公司,埃克森美孚雄踞榜首,享受着无上荣光。 低靡的经济形势下,石
阅读全文
摘要:1、什么是Mybatis? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 MyBatis 可以使用
阅读全文
摘要:Java基础 2018年如何快速学Java 泛型就这么简单 注解就这么简单 Druid数据库连接池就是这么简单 Object对象你真理解了吗? JDK10都发布了,nio你了解多少? COW奶牛!Copy On Write机制了解一下 给女朋友讲解什么是Optional【JDK 8特性】 还在用Sy
阅读全文
摘要:关于树的层遍历,记得设置保存每一层的tmp和保存所有层的res 1、从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路:利用queue,第一层节点全部压进queue,进入下一层时先弹出保存然后再压下一层的节点。 2、请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打
阅读全文
摘要:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 几个算法题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 几个算法题目 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null 几个算法题目 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字...
阅读全文
摘要:题目: 提升开发效率的一款mybatis开发神 面试官:你分析过mybatis工作原理吗? Mybatis架构与原理 通过源码分析MyBatis的缓存 了解Mybatis的工作原理吗 MyBatis拦截器原理探究 Mybatis解析动态sql原理分析 如何让Mybatis自动生成代码 MyBatis
阅读全文
摘要:题外话,今天推文2-7条对一些开发中常用的知识点做了分类总结,欢迎阅读! 需求 前段时间,做了一个世界杯竞猜积分排行榜。对世界杯64场球赛胜负平进行猜测,猜对+1分,错误+0分,一人一场只能猜一次。 1.展示前一百名列表。 2.展示个人排名(如:张三,您当前的排名106579)。 分析 一开始打算直
阅读全文
摘要:一、静态代理 又是一年秋招季,很多小伙伴开始去大城市打拼。来大城市第一件事就是租房,免不了和中介打交道,因为很多房东很忙,你根本找不到他。从这个场景中就可以抽象出来代理模式: ISubject:被访问者资源的抽象 SubjectImpl:被访问者具体实现类(房东) SubjectProxy:被访问者
阅读全文
摘要:转:https://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247486856&idx=1&sn=d430be5d14d159fd36b733c83369d59a&chksm=e9c5f439deb27d2f60b69d7f09b240eb43a
阅读全文
摘要:Python读写文件 1.open 使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。 file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:...
阅读全文
摘要:来源:https://mp.weixin.qq.com/s/4kPlBE3C6lTuSvt5mY5hUQ 前言 一. 开发语言 二. 纯内存访问 三. 单线程 四. 非阻塞多路I/O复用机制 前言 一. 开发语言 二. 纯内存访问 三. 单线程 四. 非阻塞多路I/O复用机制 前言 Redis是一种
阅读全文
摘要:转载:https://mp.weixin.qq.com/s/_bk2JVOm2SkXfdcvki6-0w 本文来自一位不愿意透露姓名的粉丝投稿,由Hollis整理并"还原"了面试现场。 相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。 因为索引是My
阅读全文
摘要:我参阅了这份文章: 让windows cmd也用上linux命令 原文时间有点久了,Cygwin也更新了... 所以我的做法简单了很多... 到Cygwin官网下载安装包:https://cygwin.com/install.html 一路安装下去... 假如安装路径是:C:\cygwin64 那么
阅读全文
摘要:1. Java 基础 1.JDK 和 JRE 有什么区别? 2. == 和 equals 的区别是什么? 3. 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗? 4. final 在 java 中有什么作用? 5. java 中的 Math.round(-1.
阅读全文
摘要:转载:https://mp.weixin.qq.com/s/H0LRdTnjhkIm3DBq5QuDeA 把一线城市塞满之后,连锁便利店开始下沉、再下沉。 近期,5家罗森便利店在长沙一同开业。继2017年在江阴、湖州等地开店以来,罗森对于下沉市场的布局愈发深入。罗森中国目标是,2020年达到3000
阅读全文
摘要:背景 Squirrel(松鼠)是美团技术团队基于Redis Cluster打造的缓存系统。经过不断的迭代研发,目前已形成一整套自动化运维体系,涵盖一键运维集群、细粒度的监控、支持自动扩缩容以及热点Key监控等完整的解决方案。同时服务端通过Docker进行部署,最大程度的提高运维的灵活性。分布式缓存S
阅读全文
摘要:2、devDependencies (1)内容:是一个对象,配置模块依赖的模块列表,key是模块名称,value是版本范围(2)作用:该模块中所列举的插件属于开发环境的依赖(比如:测试或者文档框架等)(3)部署来源:通过你npm install进行依赖安装时加上-save-dev,devDepend
阅读全文
摘要:本文来自于爱宝贝丶分享, 来源:https://my.oschina.net/zhangxufeng/blog/3017521 1. Full GC次数过多 2. CPU过高 3. 不定期出现的接口耗时现象 4. 某个线程进入WAITING状态 5. 死锁 6. 小结 1. Full GC次数过多
阅读全文
摘要:1、在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemo
阅读全文
摘要:这是笔者一个好友面试阿里时,被问及的一个问题,应该不少人看到这个问题都会一面懵逼。因为,大部分的文章都是分析链表是怎么转换成红黑树的,但是并没有说明为什么当链表长度为8的时候才做转换动作。笔者第一反应也是一样,只能初略的猜测是因为时间和空间的权衡。 要弄明白这个问题,我们首先要明白为什么要转换,这个
阅读全文
摘要:作者:莫那鲁道原文:http://thinkinjava.cn/2019/03/16/2019-03-16-mysql/ 1. 索引 索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容。 索引的优点:1. 天生排序。2. 快速查找。索引的缺点:1. 占用空间。2. 降低更新表的速度。 注
阅读全文
摘要:Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的类。 类装载方式,有两种 : 1.隐式装载
阅读全文
摘要:Class的生命周期 一个Class在虚拟机中的完整生命周期如下图所示: 需要说明的是,上述的流程只是描述了逻辑上各个阶段的开始顺序,实际过程中,各个阶段可能是交错进行,并不是一个阶段等到另一个阶段完全完成才开始执行。 加载 加载一个Class需要完成以下3件事: 通过Class的全限定名获取Cla
阅读全文
摘要:前言 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道。因为网上流传的多数资料是官网翻译而来,很多描述的重点也都偏向于作者自身碰到的问题,这样就很容易让你理解和操作出现偏差,最开始我就进入了这样误区。官网的技术导读真的描述的很详细,虽然对于我们看英文很费劲,但如果英文不是
阅读全文
摘要:去年(18年)年底想出来看看机会,最后很幸运地拿到了 PingCAP,今日头条的 offer 以及蚂蚁金服的口头 offer。想着可以总结一下经验,分享一下自己这一段”骑驴找马”过的心路历程。当然,一家之言,难免粗浅,如有不妥,敬请指正。 全文有点长,假如只对一家公司感兴趣的话可以直接跳过去: 准备
阅读全文
摘要:用过Redis的都知道,Redis有两种持久化方式:RDB和AOF,他们的区别大家应该都清楚,所以今天主要想分享一下这两种持久化方式的底层原理以及实现。 如果让你手写一个持久化(架构级)的功能,你没有思路的话,那希望这个文章可以给你灵感。 1. RDB持久化 1.1 创建 简单回顾下RDB文件的创建
阅读全文
摘要:Callable和Future出现的原因 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从
阅读全文
摘要:1. Java 堆空间 2. GC 开销超过限制 3. 请求的数组大小超过虚拟机限制 发生频率:2颗星 4. Perm gen 空间 5. Metaspace 6. 无法新建本机线程 7. 杀死进程或子进程 8. 发生 stack_trace_with_native_method 1. Java 堆
阅读全文
摘要:什么是阻塞队列? 阻塞队列是一个在队列基础上又支持了两个附加操作的队列。 2个附加操作: 支持阻塞的插入方法:队列满时,队列会阻塞插入元素的线程,直到队列不满。 支持阻塞的移除方法:队列空时,获取元素的线程会等待队列变为非空。 阻塞队列的应用场景 阻塞队列常用于生产者和消费者的场景,生产者是向队列里
阅读全文
摘要:早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,
阅读全文
摘要:【线程让步yield()方法】 yield()方法可以让当前正在执行的线程暂停,但它不会阻塞该线程,它只是将该线程从运行状态转入就绪状态。 只是让当前的线程暂停一下,让系统的线程调度器重新调度一次。 很有可能,当某个线程调用了yield()方法暂停之后进入就绪状态,它又马上抢占了CPU的执行权,继续
阅读全文
摘要:这里仅仅进行一些简单的比较,如果你想要更加详细的信息话,请自己百度。 1.Collection: 是集合类的上层接口。本身是一个Interface,里面包含了一些集合的基本操作。 Collection接口时Set接口和List接口的父接口 里面的常用操作有如下内容: 2.Collections Co
阅读全文
摘要:java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明已经存在的对象小于,等于,大于输入对象。Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来
阅读全文
摘要:1.根据应用需要正确选择要使用的集合类型对性能非常重要,比如:假如知道元素的大小是固定的,那么选用Array类型而不是ArrayList类型更为合适。 2.有些集合类型允许指定初始容量。因此,如果我们能估计出存储的元素的数目,我们可以指定初始容量来避免重新计算hash值或者扩容等。 3.为了类型安全
阅读全文
摘要:下面列出了Array和ArrayList的不同点:Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array大小是固定的,ArrayList的大小是动态变化的。ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等
阅读全文
摘要:Iterator和ListIterator的区别是什么? 下面列出了他们的区别: Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。 Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。 ListIterator实现了I
阅读全文
摘要:阅读目录 一、迭代器概述 二、ArrayList的Iterator实现 三、ListIterator 回到顶部 一、迭代器概述 1、什么是迭代器? 在Java中,有很多的数据容器,对于这些的操作有很多的共性。Java采用了迭代器来为各种容器提供了公共的操作接口。这样使得对容器的遍历操作与其具体的底层
阅读全文
摘要:为什么集合类没有实现Cloneable和Serializable接口? 答:克隆(cloning)或者序列化(serialization)的语义和含义是跟具体的实现相关的。因此应该由集合类的具体实现类来决定如何被克隆或者序列化 一些解释: (1)什么是克隆? 克隆是把一个对象里面的属性值,复制给另一
阅读全文
摘要:1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在
阅读全文
摘要:转载自 http://zhangshixi.iteye.com/blog/673143 1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet
阅读全文
摘要:Set中元素不可以重复,是无序的(这里无序是指存入元素的先后顺序与输出元素的先后顺序不一致) HashSet:内部的数据结构是哈希表,是线程不安全的。 HashSet中保证集合中元素是唯一的方法:通过对象的hashCode和equals方法来完成对象唯一性的判断。 如果对象的hashCode值不同,
阅读全文
摘要:总共有两大接口:Collection 和Map ,一个元素集合,一个是键值对集合; 其中List和Set接口继承了Collection接口,一个是有序元素集合,一个是无序元素集合; 而ArrayList和 LinkedList 实现了List接口,HashSet实现了Set接口,这几个都比较常用;
阅读全文
摘要:简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自
阅读全文
摘要:答:不对,有相同的 hash code这是java语言的定义:1) 对象相等则hashCode一定相等;2) hashCode相等对象未必相等 1.如果是基本变量,没有hashcode和equals方法,基本变量的比较方式就只有==; 2.如果是变量,由于在java中所有变量定义都是一个指向实际存储
阅读全文
摘要:Set 里的元素是不能重复的,元素重复与否是使用 equals()方法进行判断的。 equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。 equals()和==的区别 ==操作符专门用来比较两个变量的值是否相等,也
阅读全文
摘要:List与Set都是单列元素的集合,它们有一个功共同的父接口Collection。 Set里面不允许有重复的元素, 存元素:add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true;当集合含有与某个元素equals相等的元素时,此时add方法无法
阅读全文
摘要:转载:https://my.oschina.net/u/3627055/blog/2995973 背景 生产环境有二台阿里云服务器,均为同一时期购买的,CPU、内存、硬盘等配置相同。具体配置如下: 节点 CPU 内存 硬盘 其它 A 2CPU 4G 普通云盘 Centos6.4 64位+JDK1.8
阅读全文
摘要:一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集
阅读全文
摘要:首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下: 如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组
阅读全文
摘要:在vue中,使用watch来响应数据的变化。watch的用法大致有三种。下面代码是watch的一种简单的用法: <input type="text" v-model="cityName"/> new Vue({ el: '#root', data: { cityName: 'shanghai' },
阅读全文
摘要:HashMap在Java开发中使用的非常频繁,可以说仅次于String,可以和ArrayList并驾齐驱,准备用几个章节来梳理一下HashMap。我们还是从定义一个HashMap开始。 HashMap<String, Integer> mapData = new HashMap<>(); 我们从此处
阅读全文
摘要:2017-02-24 自从我写完这个话题的上半部分之后,就感觉头脑中出现了许多细小的声音,久久挥之不去。它们就像是在为了一些鸡毛蒜皮的小事而相互争吵个不停。的确,有关分布式的话题就是这样,琐碎异常,而且每个人说的话听起来似乎都有道理。 今天,我们就继续探讨这个话题的后半部分。本文中,我们将从anti
阅读全文
摘要:基于Redis的分布式锁到底安全吗(上)? 2017-02-11 网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词“Redis 分布式锁”随便到哪个搜索引擎上去搜索一下就知道了。这些文章的思路大体相近,给出的实现算法也看似合乎逻辑,但当我们着手去实现它们的时候,却发现如果你越是
阅读全文
摘要:在Redis上,可以通过对key值的独占来实现分布式锁,表面上看,Redis可以简单快捷通过set key这一独占的方式来实现,也有许多重复性轮子,但实际情况并非如此。总得来说,Redis实现分布式锁,如何确保锁资源的安全&及时释放,是分布式锁的最关键因素。如下逐层分析Redis实现分布式锁的一些过
阅读全文
摘要:前言 大家都知道,jvm在启动的时候,会执行默认的一些参数。一般情况下,这些设置的默认参数应对一些平常的项目也够用了。但是如果项目特别大了,需要增加一下堆内存的大小、或者是系统老是莫明的挂掉,想查看下gc日志来排查一下错误的原因,都需要咱们手动设置这些参数。 各个参数介绍 1.verbose:gc
阅读全文
摘要:有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你
阅读全文
摘要:专栏大纲 1.核心gc 内存回收以及提前设置内存大小。
阅读全文
摘要:题目信息 java基础: 1. Java 基础 JDK 和 JRE 有什么区别? Java中JDK和JRE的区别是什么?它们的作用分别是什么? == 和 equals 的区别是什么? 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗? final 在 java
阅读全文
摘要:面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力。但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点。在这里我将这 80% 常问的知识点整理出来,方便大家快速地掌握。这些知识点也标注了重要程度,从而让大家可以根据知识点的重要程度去制定学习计划。
阅读全文
摘要:mit 分布式论文集 https://github.com/feixiao/Distributed-Systems wiki上描述的几种都明白了就出师了 raft 和 zab 是类似的,都是1.先选举,2.然后再对客户端的消息进行投票. 其实是 simple paxos 的一种变化. 和 原生pax
阅读全文
摘要:目录 raft算法概览 leader election term 选举过程详解 log replication Replicated state machines 请求完整流程 safety corner case stale leader State Machine Safety leader c
阅读全文
摘要:问题:当 raft group 发生脑裂的情况下,老的 raft leader 可能在一段时间内并不知道新的 leader 已经被选举出来,这时候客户端在老的 leader 上可能会读取出陈旧的数据(stale read)。比如,我们假想一个拥有 5 个节点的 raft group: 其中 Node
阅读全文
摘要:随着 CoreOS 和 Kubernetes 等项目在开源社区日益火热,它们项目中都用到的 etcd 组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高
阅读全文
摘要:问题:给定一个二叉搜索树(BST),找到树中第 K 小的节点。 出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家。 考察点: 1. 基础数据结构的理解和编码能力 2. 递归使用 参考答案: 说明:保证输入的 K 满足 1<=K<=(节点数目) 树相关的题目,第一眼就想到递归求解,左右子树
阅读全文
摘要:概述 UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常音频,视频和普通数据在传送时,使用UDP较多,因为即使丢失少量的包,也不会对接受结果产生较大的影响。 传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了
阅读全文
摘要:背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次。 从好上开始,到现在,一年多也算坚持下来了。 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声音,过一会儿之后才会恢复。 中间双方可能就要不断的确认网络是否恢复,但是有时候会: 她:“你可以听到
阅读全文
摘要:Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持的数据类型很丰富,如字符串、链表、集合、以及散列等,并且还支持多种排序功能。 什么叫持久化? 用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中。 持久化的
阅读全文
摘要:Redis提供的持久化机制 Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能、持久存储、适应高并发应用场景等优势。它虽然起步较晚,但发展却十分迅速。 近日,Redis的作者在博客中写到,他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的,于
阅读全文
摘要:转载(http://redisbook.com/preview/dict/incremental_rehashing.html) 上一节说过, 扩展或收缩哈希表需要将 ht[0] 里面的所有键值对 rehash 到 ht[1] 里面, 但是, 这个 rehash 动作并不是一次性、集中式地完成的,
阅读全文
摘要:rehash 随着操作的不断执行, 哈希表保存的键值对会逐渐地增多或者减少, 为了让哈希表的负载因子(load factor)维持在一个合理的范围之内, 当哈希表保存的键值对数量太多或者太少时, 程序需要对哈希表的大小进行相应的扩展或者收缩。 扩展和收缩哈希表的工作可以通过执行 rehash (重新
阅读全文
摘要:1.HashMap的内部实现机制 HashMap是对数据结构中哈希表(Hash Table)的实现,Hash表又叫散列表。Hash表是根据关键码Key来访问其对应的值Value的数据结构,它通过一个映射函数把关键码映射到表中一个位置来访问该位置的值,从而加快查找的速度。这个映射函数叫做Hash函数,
阅读全文
摘要:转载(美团针对Redis Rehash机制的探索和实践) 背景 Squirrel(松鼠)是美团技术团队基于Redis Cluster打造的缓存系统。经过不断的迭代研发,目前已形成一整套自动化运维体系,涵盖一键运维集群、细粒度的监控、支持自动扩缩容以及热点Key监控等完整的解决方案。同时服务端通过Do
阅读全文
摘要:前言 gopush-cluster是一套golang开发的实时消息推送集群,主要分享一下开发这套系统的想法和思路。 架构 主要分为三个模块来开发,comet/web/message。 comet 主要负责消息排队、消息推送以及和客户端的连接维护;整套系统依据是消息ID顺序原则获取消息(客户端本地获取
阅读全文
摘要:转(https://www.cnblogs.com/renpingsheng/p/9862485.html) Redis Cluster是Redis官方提供的Redis集群功能 1.为什么要实现Redis Cluster 1.主从复制不能实现高可用 2.随着公司发展,用户数量增多,并发越来越多,业务
阅读全文
摘要:C语言标准库: http://www.cplusplus.com/reference/cmath/ 在一个区间中,每次拿中间数的平方来试验,如果大了,就再试左区间的中间数;如果小了,就再拿右区间的中间数来试。比如求sqrt(16)的结果,你先试(0+16)/2=8,8*8=64,64比16大,然后就
阅读全文
摘要:问题:已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位。 出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家。 考察点:基础算法的灵活应用能力(二分法学过数据结构的同学都知道,但不一定往这个方向考虑;如果学过数值计算的同学,应该还要能想
阅读全文
摘要:问题:如何实现一个高效的单向链表逆序输出? 出题人:阿里巴巴出题专家:昀龙/阿里云弹性人工智能负责人 参考答案:下面是其中一种写法,也可以有不同的写法,比如递归等。 今日一题选自GitHub项目 interview_internal_reference。 2019年最新总结,阿里,腾讯,百度,美团,
阅读全文
摘要:1.首先输入以下指令: sudo cat /etc/mysql/debian.cnf运行截图如下: 2. 再输入以下指令: mysql -u debian-sys-maint -p//注意! //这条指令的密码输入是输入第一条指令获得的信息中的 password = ZCt7QB7d8O3rFKQZ
阅读全文
摘要:在Ubuntu 18.04 下安装mysql 不知道是由于mysql更新为新版还是.Ubuntu18.04中的特性,安装过程中没有设置密码的环节,在网络上找了半天,总算解决了!特此记录下来,以便以后查看! 1、在终端下输入 sudo apt-get install mysql-server mysq
阅读全文
摘要:docker部署mysql 1. 下载 [root@localhost my.Shells]# ./dockerStart.sh start or stop start Redirecting to /bin/systemctl start docker.service [root@localhos
阅读全文
摘要:转(https://blog.51cto.com/13906751/2153924) 前段时间,给星球的球友们专门码了一篇文章《深入分析Java的编译原理》,其中深入的介绍了Java中的javac编译和JIT编译的区别及原理。并在文中提到:JIT编译除了具有缓存的功能外,还会对代码做各种优化,比如:
阅读全文
摘要:转:https://mp.weixin.qq.com/s/-lSiVDfqYrKk_w-xitYBhA 背景:新功能开发测试完成后,准备发布上线,当发布完第三台机器时,监控显示其中一台机器CPU突然飙升到300%,Dubbo活动线程数直接飙到1000+,不得不停止发布,立马回滚出问题的机器,回滚之后
阅读全文
摘要:1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperid的人口标签、移动端id(主要是idfa和imei)的人口标签,以及一些黑名单id、ip等数据。 在
阅读全文
摘要:Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发编程:vo
阅读全文
摘要:Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发编程:vo
阅读全文
摘要:Java并发编程系列: Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发编程:vo
阅读全文
摘要:转:https://mp.weixin.qq.com/s/lDuguEhuWiLY8ofBRy3tZA 并发环境下进行编程时,需要使用锁机制来同步多线程间的操作,保证共享资源的互斥访问。 加锁会带来性能上的损坏,似乎是众所周知的事情。 然而,加锁本身不会带来多少的性能消耗,性能主要是在线程的获取锁的
阅读全文
摘要:作者:codegoose https://segmentfault.com/a/1190000017864721 经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次出征。 鹅厂 面试职位:go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以c
阅读全文
摘要:附录:Redis企业实战的一些坑 一、前言 小伙伴们对Redis应该不陌生,Redis是系统必备的分布式缓存中间件,主要用来解决高并发下分担DB资源的负载,从而提升系统吞吐量。 Redis支持多种数据类型,String(字符串)、list(列表)、hash(哈希)、set(集合)、zset(有序集合
阅读全文
摘要:使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打日志 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。 当你碰到if…else 或
阅读全文