自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iCoding91

if u like it~ just do it~ it's that simple~

原创 面试总结(知乎+京东)

知乎面试问题一面算法题两个有序数组,输出第k小的数字思想时:分别折半查找,每个数组记录自己的left,right索引,进行查找。hashmap源码结构hashmap在扩容时空间创建+新旧节点的对应关系+如果扩容过程中查找该怎么查找**(分析如下)**究竟哪些节点需要申请新的存储空间?哪些不需要呢?需要新申请空间的节点:newTab,即为新table数组,申请空间个数为32...

2019-01-04 14:20:00 1050 2

原创 头条面试总结

头条面试问题整理自我介绍项目详细介绍算法题LeetCode上一个题,给定一个二维数组和目标值,该二维数组每一行和每一列都是非递减的,问二维数组中的等于目标值的坐标。实现一个排序树,能插入,能删除,能平衡输入一个数组,要求输出数组中每个数字后面第一个比他大的数字,没有比他大的输出-1,时间复杂度O(n)。输入:5,1,9,6,7 输出:9,9,-1,7,-1二维数组中,只能向右和向...

2019-01-04 14:19:49 3225

原创 快手面试题目

快手面试总结一面算法跳台阶问题稳定且有上限的带宽条件下,超大文件从server传输到client端,选择一个tcp连接快,还是构建多个tcp连接考察点:tcp连接的滑动窗口+带宽受限局域网内,带宽受限时,每秒钟传输的信息量大小被限制,就算是多个tcp连接,也只是多个tcp传输的信息量和=单个tcp连接传输的信息量。公网上,可能由于tcp被阻塞断开连接,此时多条tcp连接要比单t...

2019-01-04 14:19:40 8918 1

原创 亚马逊面试题

亚马逊面试问题一面笔试中做的最差题目的重新分析讲实习项目获得字符串中最大重复子串长度思想dp,当时只想到了暴力解法。二面讲实习项目内存空间大小按页=4KB划分,实现接口,可以实现borrow(int size)、return(List ids)方法完成内存块的申请和释放。将二叉树转为镜像二叉树,但不能使用递归。...

2019-01-04 14:19:30 4190 1

原创 常用算法 [进制转换+最小正整数+树的非递归算法]

常用算法 [进制转换+最小正整数+树的非递归算法]问题一 :8和10进制转换public class Main { public static void main(String[] args) { //Scanner scanner = new Scanner(System.in); // 十进制和十六进制转化 String s1 = ...

2019-01-04 14:19:18 399

原创 Java并发编程的艺术笔记

多线程总结Java内存模型volatile重排序规则[不允许重排序]volatile读+任何操作任何操作+volatile写volatile写+volatile读ReentrantLock实现依赖于Java同步器框架AQSAQS使用一个整型的volatile变量(命名为state)来维护同步状态这个volatile变量是ReentrantLock内存语义的关键...

2018-10-20 13:42:47 404

原创 JVM常用参数

JVM常用参数堆-Xms和—Xmx堆的最小值 & 堆的最大值默认值是物理内存的1/4(<1GB) & 默认值是物理内存的1/64(<1GB)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制;通常会将 -Xms 与 -Xmx两个参数配置相同的值,目的是为了能够在java垃圾回...

2018-10-03 14:02:36 485

原创 MySQL知识点总结

MySQLsql查询过程中,如何判定当前sql是否命中缓存? 比较当前sql的查询文本和缓存中的sql,比较内容包括:大小写、空格等。如果缓存中的sql和当前sql的文本一模一样,则命中缓存。直接返回缓存结果,不再进行sql解析、优化等操作。 Mysql默认的锁级别是行锁,那么什么时候使用表锁呢? MyISAM 总体看:只支持表锁,也就是select时加读锁,(update,in...

2018-09-15 21:35:55 231

原创 AB Test

关于AB Test是什么   一种灰度发布方式。   ps:什么是灰度发布   每个灰度对象都是0%(白色)到100%(黑色)的中间值,灰度发布是指在黑白之间,能够平滑过度的一种发布方式。  实现方式   让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上来。 哪里会用到  客户端。完成下发和统计反馈,最终从多个方...

2018-09-10 16:08:38 356

原创 4个常用排序算法

1.快速排序import java.util.concurrent.BrokenBarrierException;public class Main { public static void main(String[] args) throws InterruptedException, BrokenBarrierException { Main main = n...

2018-08-28 22:41:32 330

原创 单例模式总结

单例模式饿汉模式   初始化时间   类加载到JVM时  缺点   类加载慢  优点   获取对象速度快 避免多线程的同步问题  懒汉模式【线程不安全】   初始化时间   第一次调用方法时 缺点 第一次方法调用响应慢,因需要实例化对象。 多线程不安全优点 节约资源 懒汉模式【线程安全】 初始化时间 第一次方法调用时 缺点 调用方法为“synch...

2018-08-16 19:51:30 183

原创 简单认识SLF4J

SLF4JJAVA 简易日志门面 【Simple Logging Facade for Java,缩写SLF4J】 宏观定义:一套包装Logging 框架的界面程式,以外观模式实现 定性:它仅仅是一个提供日志输出的统一接口,而非具体的日志实现方案。具体的日志实现方案有:log4j、JDK14、Simple等。支持5种记录等级 【级别依次升高】 TRACE 比 DEBUG ...

2018-08-16 14:38:41 132

原创 Airbnb的电面题目-2018暑期实习

记一次Airbnb的电面题目:1.题目描述将一个.csv文件进行切分。 已知一个.csv文件是按照逗号分割的每个item的,但是如果一个item里面自己有逗号,则整个item都会用双引号扩起来,如果item里面有双引号,则其前面再加一个双引号进行转义。举例如下: John,Smith,”john”“.smith@gmail.com”,”Los,Angeles”,1 应该对应的真...

2018-05-28 12:52:12 2452 4

原创 ThreadLocal源码分析-java8

1.特性分析类功能 提供线程本地变量。减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度 为线程提供一个私有的变量副本,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响。与类中其它普通变量的区别 普通的变量可以通过线程自身的get和set方法进行访问。本地变量是独立初始化的变量de副本。 ThreadLocal实例声明规则 定义为privat...

2018-05-17 13:01:37 276

原创 Thread源码分析-java8

1.Thread特性分析守护线程Daemon 定性:支持性线程,主要用于程序中后台调度以及支持性工作。当JVM中不存在Daemon线程时,JVM将会退出。将一个线程设定为Daemon的方法: 调用Thread.setDaemon(true)。Daemon属性的设定只能在启动线程前设置,启动线程后不能设置。JVM退出时Daemon线程中的finally块中的代码不一定会执行。因此不...

2018-05-14 17:16:46 1624 1

原创 word和Safari更改背景色

突然就觉得还是写代码的idea环境好啊,黑色背景眼睛很舒服,现在看多了网页和word眼镜就受不了,所以改一下背景色吧,搜罗了一下教程,包括word和safari,如下:1.word更改背景色按照图片操作即可。 2.safari更改背景色使用Sublime先创建一个css文件,文件名为:SafariColor.css,包含内容如下: body { backg...

2018-05-04 22:38:46 2512

原创 Exchanger源码分析-java8

1.特性分析功能 一个用于线程间协作的工具类。用于线程间的数据交换。 实现机制 它提供了一个同步点,在这个同步点,两个线程可以交换彼此的数据。 两个线程通过exchange方法交换数据,如果第一个线程先执行exchange()方法,它会一直等待第二个线程也执行exchange()方法,直到两个线程都到达同步点时,这两个线程就可以交换数据。 应用场景 遗传算法 校对工作...

2018-05-04 12:03:33 317

原创 AbstractQueuedSynchronizer源码分析-java8

1.AbstractQueuedSynchronizer特点总结类功能宏观描述 此类对实现阻塞锁,依赖FIFO等待队列的同步机制(如semaphores,events等)提供了一个框架。 AQS被作为同步器的辅助子类时,子类应该被定义为非public类型的内部辅助类,以用于实现闭合类的同步属性. CountDownLatch和Semaphore都使用其作为内部辅助类。 此类...

2018-05-02 22:52:11 391

原创 Semaphore源码分析-java8

1.特性分析Semaphore就是一个计数的信号量 每一个线程在获取资源前,必须从semaphore获取许可,这保证了一定有可用的资源。 注意:acquire方法并没有使用同步锁机制,这样就保证了acquire方法被调用时,被使用完的资源依然可以放回资源池中。 二元semaphore 它只有两个状态:1表示可用 或者 0表示可用 和java.util.concurrent...

2018-04-22 23:32:56 355

原创 Spring中涉及的设计模式总结

Spring中涉及的设计模式总结 1.简单工厂(非23种设计模式中的一种)实现方式:BeanFactory。 Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。实现原理: bean容器的启...

2018-04-22 16:00:21 25155 4

原创 关系数据库相关的一些概念

关系数据库相关的一些概念感觉对于数据库用的时候比较多,但是面试时候一旦问到一些概念性的问题,就不知道怎么解释。所以整理一些今天在网易被问到的关系数据库的问题。 1.关系数据库的理解定义的角度: 建立在关系数据库模型基础上的数据库 借助于集合代数等概念和方法来处理数据库中的数据 是一个被组织成一组拥有正式描述性的表格,该表格作用的实质是装载着数据项的特殊收集体。 ...

2018-04-21 21:58:26 518

原创 CyclicBarrier源码分析-java8

1.特点分析CyclicBarrier是一种同步机制,它可以使得一组线程在同一个障碍点进行等待。 CyclicBarriers 可以通过重置计数器从而重新使用。 CyclicBarrier支持一个可选的Runnable命令(实例化构造函数中的参数),该命令在最后一个线程到达后,但在任何线程被释放之前被执行。这一命令在barrier处只会被执行一次,且由最后到达的线程完成。这种屏障行为对...

2018-04-19 09:25:57 756

原创 Spring五个事务隔离级别和七个事务传播行为

其实之前写过一篇,但是写的太简单了,所以这次重新补充一些内容。 1.Spring事务隔离级别摘要: Spring中5个事务隔离级别的区分 脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 不可重复读:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也...

2018-04-18 10:09:57 580

原创 JDK中涉及的设计模式总结

所有的设计模式都找了一种JDK中的实现(并未列出所有,原因是太多,而且本次整理的目的是通过JDK中的实例完成设计模式的梳理和记忆,所以只写一种实现)。依次对类,对应的方法,功能进行介绍。 创建模式1.抽象工厂javax.xml.parsers.DocumentBuilderFactory抽象类 public static DocumentBuilderFactory...

2018-04-16 15:43:55 2699 2

原创 基本类型包装型的缓存值cache

1.基本类型包装类型的缓存值基本类型不包括:float,double bool缓存值:true,false char缓存值:0~127,故ASSII码里面的字符都有缓存其它范围:-128~127 特殊的int:上限默认为127,但可通过-XX:AutoBoxCacheMax设置。 实现方式:定义了缓存数组(bool定义的是常量),且为静态代码块,在类加载时即生成。2...

2018-04-15 23:50:50 794

原创 最最简单的几个Mac终端命令

几个简单的Mac终端命令目录切换相关 cd+空格+/ 回到根目录 cd+空格+.. (或者 cd+空格+../) 回到上一级目录 cd+空格+. 回到当前目录 pwd 显示从根目录到当前目录的完整目录 vi操作相关 注意:vi操作的文件如果不存在,则先自动创建一个该名字的文件vi+文件名称 打开文件 按键E进入编辑界面 按键S进入编辑模式 ...

2018-04-13 22:49:03 2379

原创 调整数组顺序使奇数位于偶数前面(归并排序java)

1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 1.剑指offer上面的方法不能保证奇数奇数,偶数偶数的相对位置不改变 2.之前自己用的都是冒泡排序,但显然时间复杂度不好,这次利用归并排序重写了算法,利用空间换时间 2.code实现(已a)...

2018-04-13 17:38:28 790

原创 CopyOnWriteArrayList源码分析-java8

1.特性此类是ArrayList的线程安全变体,其中所有更改操作(如add,set等)通过创建底层数组的最新副本来实现 迭代器特性: 迭代器使用快照方式,且在迭代期间数组不会改变,故不会出现并发异常。 迭代器创建后,对list对add,remove不会反映到迭代器中。 迭代器自身不支持remove,set,add操作。这一点和其它集合的迭代器很不一样。 允许元素为nul...

2018-04-12 13:02:59 295

原创 LinkedHashMap源码分析-java8

得益于昨天网易的面试,所以重新认识了一个集合,回来后赶紧做了分析,继续努力~ps:面试官真的很nice,希望好运~1.特性分析说明:因为LinkedHashMap单词太长,所以以下都用LHM替代 基本数据结构:数组+双向链表+红黑树 因为继承HashMap,故常用属性和HashMap都一样。对于几个node指针的分析: HashMap中的Map.Entry:只有ne...

2018-04-12 10:36:37 518

原创 ConcurrentHashMap源码分析-Java8

1.ConcurrentHashMap特性说明:因为ConcurrentHashMap单词太长,所以下面均适用CHM替代ConcurrentHashMap同为线程安全集合,但CHM没有任何访问操作需要锁定全表。这也注定了CHM上的操作效率之高。 表访问需要volatile/atomic读,写和CAS.这通过使用内在函数(sun.misc.Unsafe)完成。 向一个空bin中插...

2018-04-09 22:14:25 753 2

原创 TreeMap源码分析-java8

1.特征分析TreeMap是基于NavigableMap的红黑树的实现。默认排序方式:对key升序排序。 TreeMap是非线程同步的。 支持浅拷贝,序列化 红黑树put节点时,分有无比较器分开讨论,这主要是从性能角度考虑的。 代理模式:定义在subMap中的方法,将其行为委托给了NavigableMap来实现,代理模式的使用,消除了需要对Iterator方法进行类型检...

2018-03-23 22:38:53 241

原创 TreeSet源码分析-java8

1.特点分析TreeSet是基于TreeMap的NavigableSet实现,所以要想理解好TreeSet,必须研究TreeMap。 TreeMap对其的实现中,key作为存储set中元素的位置,而value始终都是一个static final常量。 时间复杂度为:log(n)的方法:add(),remove(),contains()非线程安全集合 支持浅拷贝、序列化 4个...

2018-03-22 12:20:49 618

原创 拼凑面额dp

1.题目给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。 2.代码import java.util.*;public class Main{ public static void main(String args[]) { Scanner sc...

2018-03-22 11:46:22 266 3

原创 AbstractSet源码分析-java8

1.3个方法2.Hash值hash=sum(每个元素的hash值) 如果元素为null,则默认hash值为0. 3.removeAll(Collection4.源码分析 package sourcecode.analysis; /** * @Author: cxh * @CreateTime: 18/3/21 20:42 ...

2018-03-21 21:29:07 203

原创 Set接口源码分析-java8

1.toArray()和toArray(T[] a)将set实例转为String[]的方式如下: Set<String> x=new HashSet<String>;String[] y = x.toArray(new String[0]); 注意:toArray(new Object[0])和toArray()两者在功能上完全相同. 2.s...

2018-03-21 19:08:21 259

原创 TopK问题

TopK问题说明: 1)求最小k个数,使用大顶堆; 2)求最大k个数,使用小顶堆。 实现代码如下import java.util.ArrayList; //第k小,则构造大顶堆 public class Main{ public static void main(String args[]) { Main mai...

2018-03-21 17:40:54 153

原创 Cookie和Session的对比分析

宏观概括 1.Cookie和Session都是常用的会话跟踪技术。 2.Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中。 3.Cookie是客户端浏览器保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。1.Cookie机制 如果服务器需要记录登陆用户的状态,则使用response向客户端浏...

2018-03-20 23:40:34 332

原创 HTTP问题总结

HTTP相关内容1.HTTP协议简介HTTP协议是一种网络协议。网络协议:计算机通信网络中两台计算机之间进行通信必须遵守的规定or准则。 HTTP协议属于应用层协议。 HTTP协议在传输层使用的是可靠的数据传输协议TCP协议。 TCP/IP协议族中和HTTP协议关系比较密切的协议: IP,TCP,DNS。分属于:网络层、传输层、应用层。 IP简介 位置:网络层 ...

2018-03-20 18:01:59 794

原创 Java8函数式编程的宏观总结

1.java8优势通过将行为进行抽象,java8提供了批量处理数据的并行类库,使得代码可以在多核CPU上高效运行。 2.函数式编程的核心使用不可变值和函数,函数对一个值进行处理,映射成另一个值。 3.Lambda表达式一种紧凑的、传递行为的方式。 4. 静态类型语言java8依旧是静态类型语言,javac依旧会在编译时,对参数类型进行检查。5....

2018-03-18 23:13:27 622

原创 语法练习笔记-java8

1.类说明Album:专辑类,包含了专辑名称,专辑上所有曲目的列表,参与创作本专辑的艺术家列表 Artist:乐队类,包含了乐队名字,乐队成员,乐队国籍 Track:专辑中的一支曲目,包含了曲目名称,曲目时长 Albums:提供了4个专辑,以及一些功能方法,主要是为了在测试时,直接使用,避免测试类中创建太多非测试逻辑的代码。 2.codeAlbum类 ...

2018-03-18 21:14:48 168 2

提示
确定要删除当前文章?
取消 删除