09 2019 档案
摘要:在java中存在一些转义字符,比如"\n"为换行符,但是也有一些JDK自带的一些操作符 比如 : System.getProperty("line.separator") 这也是换行符,功能和"\n"是一致的,但是此种写法屏蔽了 Windows和Linux的区别 ,更保险一些. 学无止境呀! 参考:
阅读全文
摘要:原题如下: 有一个100G大小的文件里存的全是数字,并且每个数字见用逗号隔开。现在在这一大堆数字中找出100个最大的数出来。 我认为,首先要摸清考官的意图。是想问你os方面的知识,还是算法,或者数据结构。 如果是os: 无疑是外排序算法的选择。100g文件在当前的环境下是无法全部读入内存的。 如果是
阅读全文
摘要:项目引入了其他的lib包,我们原来的项目中没有lib包,只能自己引入,我是用了第二种方法,顺利引入: 一.直接复制:(不推荐)方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可。注意:1.对于导入的eclipse项目,该方式添加的jar包没有任何反应,用make编译项目会报错2.对于在id
阅读全文
摘要:我还写了两篇详细的 参考:六大Web负载均衡原理与实现 参考:LVS(Linus Virtual Server):三种IP负载均衡方式比较+另三种Web负载均衡方式 其中LVS、HAProxy可以工作在4-7层,NginX工作在7层(阿里面试题) Web负载均衡的几种实现方式摘要:负载均衡(Load
阅读全文
摘要:需求与背景 需求背景 政府网约车监管平台,为了对网约车行业进行实时监控,顺利完成对网约车行业信用的考核管理。要求网约车平台向交通部级平台实时传输相关数据。同时数据顺利传输,网约车平台是提交网约车牌照审批的必要条件。 按照交通部规定,网约车仅需要完成【全国性网约车平台】-【部级网约车监管平台】数据交换
阅读全文
摘要:平常使用mac的同学们,可能经常要接受下别人发过来的rar文件,可惜的时mac os x系统默认是不能打开rar文件(不知道以后苹果会支持rar不?),那么我们该如何去解圧rar文件,接下来我将介绍。 软件名称:The Unarchiver for Mac V3.11.2(多语中文版) 苹果电脑版软
阅读全文
摘要:概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变
阅读全文
摘要:进程状态转换图 kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象。 执行kill(不加 -* 默认kill -15)命令,系统会发送一个SIGTERM信号给对应的程序。当程序接收到该signal信号后,将
阅读全文
摘要:一、业务场景 spring框架应用中有些静态方法需要依赖被容器管理的类,就像这样: 这样一定会报java.lang.NullPointerException: null异常。 二、原理剖析 静态变量、类变量不是对象的属性,而是一个类的属性,所以静态方法是属于类(class)的,普通方法才是属于实体对
阅读全文
摘要:1. load average 定义 linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。 Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。 通过系统命令"w"查看当前load average情况 上边0.31,0.30,0.31
阅读全文
摘要:线程不安全的问题:hashMap 的多线程安全问题- ConcurrentModificationException 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成
阅读全文
摘要:想了解AIO,BIO NIO Reactor 请参考:IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别(百度) 1、引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。 本文基于 Netty 4.1 展开介绍相关
阅读全文
摘要:我们的项目中使用了websocket 用java-websocket 开源项目做的,阿里的人问我用啥实现的websocket一时没有答上来 回来做了总结: 1、前言 最近有同学问我有没有做过在线咨询功能。同时,公司也刚好让我接手一个 IM 项目。所以今天抽时间记录一下最近学习的内容。本文主要剖析了
阅读全文
摘要:基本的docker使用参考:Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点) 昨天去阿里面试 问我如果给你5台服务器 如何部署docker,我说一个个拷贝,面试官听了脸都绿了, 说有没有听说过用swarm和compose 部署docker集群,我说没用过, 后来回来
阅读全文
摘要:阿里太注重原理了:阿里问kafka如何实现高并发存储-如何找到一条需要消费的数据,kafka用了稀疏索引的方式,使用了二分查找法,其实很多索引都是二分查找法 二分查找法的时间复杂度:O(logn) redis,kafka,B+树的底层都采用了二分查找法 参考:二分查找法 redis的索引底层的 跳表
阅读全文
摘要:关于top命令 经常问load average 参考:load average 定义(网易面试) jvm dump的使用 参考:Jvm dump jstack jmap jstat 介绍与使用(内存与线程) 以及使用jstack定位问题 查看端口:如何在Windows,Linux下查看JAVA端口占
阅读全文
摘要:redis使用跳表不用B+数的原因是:redis是内存数据库,而B+树纯粹是为了mysql这种IO数据库准备的。B+树的每个节点的数量都是一个mysql分区页的大小(阿里面试) 还有个几个姊妹篇:介绍mysql的B+索引原理 参考:一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试)
阅读全文
摘要:二分查找法的时间复杂度:O(logn) redis,kafka,B+树的底层都采用了二分查找法 参考:二分查找法 redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 redis的跳表原理 时间复杂度O(logn)(阿里) 参考:二分查找法 kafka如何实现高并发存储-如何找
阅读全文
摘要:Hashtable 初始容量是11 ,扩容 方式为2N+1; HashMap 初始容量是16,扩容方式为2N; 阿里的人突然问我为啥扩容因子是0.75,回来总结了一下; 提高空间利用率和 减少查询成本的折中,主要是泊松分布,0.75的话碰撞最小, HashMap有两个参数影响其性能:初始容量和加载因
阅读全文
摘要:还有一篇 讲解lock的实现原理,参考:解决多线程安全问题-无非两个方法synchronized和lock 具体原理以及如何 获取锁AQS算法 (百度-美团) synchronized 不管是读还是写,如果前面有锁,只能是等待, lock中有读写锁,可以做到读读并发,读写互斥,写写互斥,但是sync
阅读全文
摘要:在项目中使用到了ObjectMapper,故研究了一下。现将自己的几个测试用例和大家分享一下~ 首先在pom.xml文件中,加入依赖: 创建一个实体类XwjUser: 先创建一个ObjectMapper,然后赋值一些属性: 1、对象与json字符串、byte数组 运行结果: 注意,对象转json字符
阅读全文
摘要:1、引言 Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目方面提供参考。 本文作者的另两
阅读全文
摘要:阿里的人问我 缓存雪崩(大量数据在同一时间过期了)了如何处理,缓存击穿了如何处理,回答的很烂,做了总结: 把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数据量很大的时候,经典的几个问题如下: 1. 缓存穿透 在大多数互联网应用中,缓存的使用方式如下图所示
阅读全文
摘要:CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。 CAP原则又称CAP定理,指的是在一个分布式系统中,
阅读全文
摘要:结论: 对于单机单库系统,数据一致性可通过关系型数据库的事务来满足,而且ACID特性中的C是指强一致性,各数据库本身都支持,而且很成熟。 分布式系统则需要以BASE理论作为指导,即以基本可用性和最终一致性作为目标。 远程RPC调用是一致性问题主要原因,异步解耦+消息队列可作为分布式系统满足最终一致性
阅读全文
摘要:对于一个需要处理高并发的系统而言,可以从多个层面去解决这个问题。 1、数据库系统:数据库系统可以采取集群策略以保证某台数据库服务器的宕机不会影响整个系统,并且通过负载均衡策略来降低每一台数据库服务器的压力(当然用一台服务器应付一般而言没啥问题,找一台当备机放着应付宕机就行,如果一台应付不了,那么再加
阅读全文
摘要:还有一篇文章 讲解guava如何删除过期数据的,与redis不同,guava没有维护线程删除过期key,只是在设置 key 或者 读取key的时候,顺带删除参考:GuavaCache简介(一)是轻量级的框架 少量数据,并且 过期时间相同 可以用 GuavaCache 内存上限Redis可以通过 ma
阅读全文
摘要:三、如何保证消息的顺序性 拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理 写入一个partition中的数据一定是有
阅读全文
摘要:先看看spring的bean作用域有几种,分别有啥不同。 spring bean作用域有以下5个: singleton:单例模式,当spring创建applicationContext容器的时候,spring会欲初始化所有的该作用域实例,加上lazy-init就可以避免预处理; prototype:
阅读全文
摘要:1、多线程put操作后,get操作导致死循环。2、多线程put非NULL元素后,get操作得到NULL值。3、多线程put操作,导致元素丢失。 参考:多线程下HashMap的死循环问题 比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成: 1、多线程put操作后,get操作
阅读全文
摘要:CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。 在多重
阅读全文