自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 【java.lang.reflect】反射机制应用及详解

最近也是面试的时候问道一个问题,如何将一个java对象转换为json字符串,一听到的时候没有任何思路,之前也有接触过fastjson,知道就是用这个jar包来处理的,但是具体如何运行原理并不了解,导致面试说不出来,面试官提到fastjson其实就是利用反射来获取这个对象对应的信息,然后转化,于是对反射机制做一个详细的掌握。一、什么是反射机制?java的反射机制就是在java程序运行中,可以...

2018-08-31 21:37:12 933

原创 ThreadLocal类应用及详解

参考:https://blog.csdn.net/woshiluoye9/article/details/72544764            https://www.cnblogs.com/dolphin0520/p/3920407.html

2018-08-30 18:33:56 376

原创 【java.util.Concurrent包】ConcurrentHashMap详解及源码解析

最近一次面试被问到ConcurrentHashMap原理,segment的数据结构,以及为什么可以保证并发下的效率(相比HashTable直接加锁),虽然知道利用的分段锁技术,但是具体的不是很清楚。一、背景:线程不安全的HashMap    因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效...

2018-08-30 17:10:54 2094

原创 【面经】京东金融一面凉经

项目1.你讲一下你的秒杀项目?2.秒杀最重要的点在哪?你说一下3.你怎么保证你的redis每个线程取商品库存的时候的并发性不会出错? setnx   那setnx怎么用的?后续?redis的setnx锁到了超时时间失效,并发的问题 框架1.看你用过springboot,了解springcloud吗? 不了解 微服务? 2.RPC框架了解过吗?这个最进挺火的?  http...

2018-08-29 20:33:36 1417

转载 【锁机制】CAS原理及应用

CAS(Compare And Swap)什么是CASCAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CA...

2018-08-26 16:26:58 5067

转载 【集合框架】LinkedList、Vector源码解析

转自:https://www.cnblogs.com/winterfells/p/8870401.htmlLinkedListLinkedList也和ArrayList一样实现了List接口,但是它执行插入和删除操作时比ArrayList更加高效,因为它是基于链表的。基于链表也决定了它在随机访问方面要比ArrayList逊色一点。除此之外,LinkedList还提供了一些可以使其作为栈、队...

2018-08-26 15:31:40 173

转载 【集合框架】ArrayList原理及源码解读

借鉴:https://www.cnblogs.com/winterfells/p/8867130.htmlArrayList动态数组,底层实现就是数组,相比数组提供了动态添加元素,删除以及扩容等机制。一、类声明public class ArrayList<E> extends AbstractList<E> implements List<E>,...

2018-08-24 17:17:41 186

转载 【Redis】底层数据结构

转:http://www.cnblogs.com/jaycekon/p/6227442.html1、概述    相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-value数据库。    在《Redis设计与实现》这样描述:    Redis 数据库里...

2018-08-21 16:06:22 265

原创 【面试总结】数据库

一、事务概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 ACID原子性:一个事务看成一个整体,要么成功提交,要么全部回滚。 一致性:事务操作前后,对于数据库的数据时保持一致的。 隔离性:一个事务在最终提交之前,对于其他事务没有影响。 持久性:一旦事务发生,对于数据库的修改就是永久的。就算数据...

2018-08-17 22:26:16 411

原创 【数据库】Mysql常用知识点

常用题型:子句的执行顺序:对数据库基本操作是每个程序员基本功,如何理解并快速记住sql执行的顺序呢,其实一条复杂的sql就能搞定:   SELECT DISTINCT <select_list>FROM <left_table><join_type> JOIN <right_table>ON <join_cond...

2018-08-16 21:24:09 270

原创 【集合框架】HashMap原理及源码解读

原贴写的很好:https://blog.csdn.net/qq_27093465/article/details/52207135本文加上个人理解,用自己的话表达集合框架及对HashMap细节的理解。简介HashMap是一种利用键值映射存储数据的数据结构,随着jdk的发展,在jdk1.8中引入了红黑树的数据结构和扩容的优化。Map类常用集合介绍HashMap实现自java....

2018-08-15 17:08:37 249

原创 【面试总结】MD5及加密算法优劣

最近在面试中问到项目为什么要使用MD5加密,对其他加密算法也不是很理解。于是利用这篇文章进行总结。常用加密算法可以分为单向加密和双向加密。单向加密:只提供单向加密不能解密,不可逆的过程。通常用来存储用户名和密码,直接从前端传输来存储到数据库中 双向加密:又分为对称性加密算法和非对称性加密算法。对称性加密算法,发送和接收端双方都知道秘钥和加密算法且秘钥都是相同的,之后便是对数据的加密和...

2018-08-14 16:06:24 14197

原创 【面试总结】一些面试不会的问题总结

vivo一面40分钟静态变量和非静态变量的区别 (记一下)项目中用到md5,md5的优势?还知道其他加密算法?这个得看看,目前不知道 (记一下)为什么没有用https,https和http有什么区别?https://www.cnblogs.com/wqhwe/p/5407468.html  ...

2018-08-14 11:56:07 460

转载 【笔试题】阿里快递问题

https://blog.csdn.net/baidu_22153679/article/details/81089208 转:题目如图,某物流派送员p,需要给a、b、c、d4个快递点派送包裹,请问派送员需要选择什么的路线,才能完成最短路程的派送。假设如图派送员的起点坐标(0,0),派送路线只能沿着图中的方格边行驶,每个小格都是正方形,且边长为1,如p到d的距离就是4。随机输入n个派送点...

2018-08-14 11:13:17 1523

原创 【面试总结】操作系统

大内核和微内核1. 大内核大内核是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。2. 微内核由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。因为...

2018-08-11 21:35:36 348

原创 【锁机制】synchronized和ReentrantLock、锁优化

java中的锁的种类很多。目前对这部分知识点只是停留在了解的基础上,就目前知识进行梳理,并长期补充。java中锁常用的为synchronized 和java.util.concurrent.Lock下的锁。这是一篇对各种分类锁的介绍:https://blog.csdn.net/u013256816/article/details/51204385 下面对java中实现的锁进行个人分析...

2018-08-11 14:52:59 980

原创 【面试总结】JVM虚拟机

内存泄漏与内存溢出:内存泄漏:指申请到的对象,用完之后没有被回收,导致下次申请的时候这些内存空间无法访问。内存溢出:指申请内存的时候,没有足够的内存空间供其使用,超过了内存的最大限度,出现了out of memory。(内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出)内存泄漏最终会导致内存溢出。内存溢出的原因:内存中加载的数据量过于庞大,例:一次...

2018-08-11 13:13:49 345

原创 【面试总结】计算机网络

Http协议与TCP/IP协议之间的关系Http协议的长连接和短连接本质上式TCP协议的长连接和短连接。Http是应用层协议,建立在TCP协议之上。TCP是传输层协议,IP协议是网络层协议。TCP又依靠IP协议完成网络传输。IP协议负责完成网络路由和网络寻址 TCP协议负责在IP协议的基础上,将所有数据包从发送端发送到接收端,并且保证接收的顺序和发送顺序一致。 TCP是可靠的,面向连接...

2018-08-09 15:57:34 372

转载 java中的并发与并行

https://www.cnblogs.com/NextNight/p/6323442.html先放个链接,稍后补充

2018-08-07 22:13:29 641

转载 Java静态分派与动态分派

牛客题:以下代码执行的结果是多少()? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

2018-08-05 17:54:18 294

原创 常用的排序算法及java实现

常用的排序算法有:               冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。排序算法稳定性稳定性的简单形式化定义为:如果Ai = Aj,排序前Ai在Aj之前,排序后Ai还在Aj之前,则称这种排序算法是稳定的。通俗地讲就是保证排序前后两个相等的数的相对顺序不变。对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须...

2018-08-04 21:16:08 198

原创 进程与线程的区别

进程:可以认为是一个运行的程序个体。是系统资源调度和分配的基本单位。线程:是进程中的实体,是cpu执行的基本单位,是比进程更小的独立运行单位。线程和进程的区别:1.进程拥有独立的堆栈空间和数据段(资源段),所以运行时会给进程分配地址空间。会建立众多的数据表维护它的代码段、数据段、堆栈段,多进程情况下,系统开销大。线程拥有自己的栈空间,但是共享数据段,彼此使用的是相同的地址空...

2018-08-03 21:43:50 187

原创 Rabbit MQ 面试题相关

项目中的MQ:#rabbitmqspring.rabbitmq.host=127.0.0.1 主机spring.rabbitmq.port=5672 端口spring.rabbitmq.username=guest 用户名spring.rabbitmq.password=guest 密码spring.rabbitmq.virtual-host=/#\u6D88\u8D...

2018-08-03 20:48:26 9529

原创 【Redis】相关的面试问题

1.什么是Redis?一款高性能的key-value缓存数据库。优势:一款基于内存的key-value数据库,整个数据库都在内存中运行操作,每秒可以支持10W左右的读写操作,而且支持数据持久化,还可以支持多种数据结构。缺点:容量受到物理内存的限制。不能做海量数据的高性能读写。适合较少数据的高性能读写。Redis的数据类型及底层数据结构二、数据类型数据类型 可以存储的值...

2018-08-03 20:02:37 917

原创 项目中遇到的bug及面试问题总结

1.Redis服务器 can not get resource from pool. 1000个线程并发还能跑,5000个线程的时候出现这种问题,查后台debug日志,发现redis 线程池不够。刚开始设置的是:# redis 配置文件#redisredis.host=127.0.0.1redis.port=6379redis.timeout=300 等待时间 1...

2018-08-03 15:50:09 49444 5

原创 项目的亮点和难点

Sanno限时秒杀抢票系统亮点:在高并发情况下的秒杀优化,我们知道当并发数达到一定量的时候,会对数据库服务器带来很大的压力,那么如何缓解这些压力以及提高并发的QPS就是整个项目的重点。(不断的提高QPS)。亮点3个:1.利用缓存减少数据库的压力,以及读取缓存的速度远远快于数据库(网络时延+IO)2.页面静态化技术加快用户访问速度,提高QPS,异步下单增强用户体验,以及内存标记减少R...

2018-08-03 15:15:00 43931 3

原创 Spring的IOC 和 AOP

spring框架相关: 1.为什么使用springboot?使用springboot,带有spring框架的优秀特性,IOC和aop。 大量简化了spring的配置过程,无需使用xml配置开发过程,Bean的注入,使用注解加上一个application.properties就可以完成大部分的配置工作。 整合第三方框架的时候 也不需要过多的配置,只需要在maven中导入相关的jar包...

2018-08-03 11:25:26 227

原创 进程间的通信方式及区别

1.无名管道(pipe)特点:最古老的IPC(进程间通信方式)1.只能用于有血缘关系的进程之间信息传递2.半双工的信息传递,同一时间只能读或者写,一个方向。固定的读端和写端。3.独立于文件系统之外,不属于文件系统,特别的方式存在于内存中。 2.命名管道(FIFO)1.克服了无名管道的只能有血缘关系进程之间的通信,无关进程之间也可以通信。2.以一种特殊的文件格式存在于...

2018-08-02 15:31:39 1150

原创 JVM垃圾回收算法以及对应的垃圾收集器

JVM中的垃圾:GC中的垃圾,指的是存在于内存中的、不会再被使用的对象。而垃圾回收就是把那些不再被使用的对象进行清除,收回占用的内存空间。如果不及时对内存中的垃圾进行清理,那么这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。如果大量不会被使用的对象一致占着空间不放,如果应用程序需要内存空间,没有多余的内存空间供其使用的话,就会导致内存溢出。因此,对内存空间的...

2018-08-01 15:20:15 1362 1

转载 Java IO流框架

2018-07-31 13:59:14 977

原创 java数据转型

数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中 “ 悄然 ” 进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。自动数据类型转换自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下: 低 ---------------------------------------------> 高 ...

2018-07-31 10:50:55 650

原创 switch用法

switch (x) { case 1: System.out.println("Test1"); case 2: case 3: System.out.println("Test2"); default: ...

2018-07-31 10:42:11 3087

原创 map的几种遍历方式及性能

Map 遍历的几种方式:1.只要key 或 values的时候2.同时需要key和values第一种:只需要key 或者 values for (Integer i :map.keySet()){ if (map.get(i)>num) index = i; } retur...

2018-07-30 17:45:30 829

转载 java内部类

内部类分为:成员内部类,局部内部类,匿名内部类,静态内部类。 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。  1.成员内部类  成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: 1 ...

2018-07-30 15:26:05 125

原创 缓存更新策略以及缓存击穿、雪崩、穿透

本项目使用的更新策略是:cache aside ;简而言之,就是1. 首先尝试从缓存读取,读到数据则直接返回;如果读不到,就读数据库,并将数据会写到缓存,并返回。2. 需要更新数据时,先更新数据库,然后把缓存里对应的数据失效掉(删掉)。 首先要确定的是使用先更新数据库,再更新缓存的方法(最好淘汰缓存),防止多线程情况下,更新缓存和更新数据库不一致,存在脏数据。原因:先更新数...

2018-07-27 21:19:05 1086

转载 Java集合框架

 

2018-07-27 15:38:20 123

转载 java运算符的优先级

2018-07-27 09:51:41 718

转载 一张图让你看懂JAVA线程间的状态转换

 线程间的状态转换:  1. 新建(new):新创建了一个线程对象。2. 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3. 运行(running):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序...

2018-07-26 14:23:41 132

转载 java常量池概念,String,Integer等包装类对常量池的应用

https://blog.csdn.net/chen1280436393/article/details/51768761 1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;         int a = 220;         Integer b = 2...

2018-07-26 11:05:29 365

原创 java关键字

2018-07-26 10:14:11 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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