自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

转载 Synchronized实现原理

1. 应用方式:2. synchronized代码块底层原理3.synchronized方法底层原理1. 应用方式:主要有以下3种应用方式:修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁...

2019-05-08 16:43:08 301

转载 并发关键字volatile(重排序和内存屏障)

参看:并发关键字volatile、 JAVA 基础系列之 重排序和Volatile指令重排是指处理器为了提高程序运行效率,可能会对输入代码进行优化,它不保证各个语句的执行顺序同代码中的顺序一致,但是它会保证程序最终执行结果和代码顺序执行的结果是一致的。指令重排序不会影响单个线程的执行,但是会影响到线程并发执行的正确性。程序执行到volatile修饰变量的读操作或者写操作时,在其前面的操作肯...

2019-05-08 14:18:01 1342

转载 集合进行排序的两种方式

目录方法1:实现comparable接口方法2:自定义排序(Comparator接口、compare方法)参考:https://www.cnblogs.com/huangjinyong/p/9037588.htmljava集合的工具类Collections中提供了两种排序的方法,分别是:Collections.sort(List list) Collections.sort...

2019-05-07 22:17:12 3946

转载 ArrayList扩容机制

https://blog.csdn.net/u010890358/article/details/80515284 ArrayList实现了List接口,它是一个可调整大小的 Object[] 数组可以用来存放各种形式的数据。并提供了包括CRUD在内的多种方法可以对数据进行操作但是它不是线程安全的,外ArrayList按照插入的顺序来存放数据。ArrayList的主要成员变量:...

2019-05-07 21:26:57 611

转载 Spring IOC 容器源码分析 - 循环依赖的解决办法

请见:https://segmentfault.com/a/1190000015221968

2019-05-06 11:40:20 256

原创 数组算法题

1.求一个数组中的出现次数最多的元素的个数思路:使用HashMap存储,key是每个元素,value是一个LinkedList,这个链表存储了key对应所有的元素(即相同的元素),最后遍历找出LinkedList对应size最大的;public class GetMostFrequentInArrayList { public static <T> int getMo...

2019-05-03 20:50:43 133

原创 字符串算法题

1. url字符串反转:将www.baidu.com转化成www.udiab.moc参考:https://www.jianshu.com/p/30054f432d60解题思路:1)先将字符串URL用“.”进行分割,产生一个字符串数组 2)对字符串中的数组中的每一个数组元素进行反转坑点 :“.”在正则表达式中,“.”是具有特殊意义的元字符,能够...

2019-05-02 21:41:28 410

原创 LeetCode | reverse-integer(反转整型)

题解:https://blog.csdn.net/five0918/article/details/52673653题目:https://leetcode-cn.com/problems/reverse-integer/给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。思路:先将有符号整数反转: while(x!=0){ result = res...

2019-04-27 21:51:36 185

原创 LeetCode | Median of Two Sorted Arrays

题目连接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/给定两个大小为 m 和 n 的有序数组nums1和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3...

2019-04-27 21:23:29 111

原创 LeetCode | Add Two Numbers

题目连接:https://leetcode-cn.com/problems/add-two-numbers/题目:Input:(2 -> 4 -> 3) + (5 -> 6 -> 4)Output:7 -> 0 -> 8思路:思路非常简单,利用两个指针分别遍历两个链表,并且用一个变量表示是否有进位。某个链表遍历结束之后再将另一个链表连接在结果...

2019-04-26 12:57:38 281

转载 多线程同步

目录1. 为什么引入同步机制2.竞态条件和内存可见性2.1 竞态条件2.2 内存可见性3. 线程同步方法3.1synchronzied3.2JDK1.5的锁 Lock3.3volatile关键字1. 为什么引入同步机制多线程为什么要采用同步机制,因为不同的线程有自己的栈,栈中可能引用了多个对象,而多个线程可能引用到了堆中的同一个或多个对象,而线程的栈...

2019-04-26 10:29:37 179

原创 线程间通信

1. 管道输入/输出流2. Thread.join()的使用3. 等待/唤醒机制3.1synchronied关键字等待/通知机制3.2ReentrantLock类加锁的线程的Condition类的await()/signal()/signalAll()3.3Lock的condition的await/singal 和 Object的wait/notify ...

2019-04-26 09:51:36 116

原创 死锁---转账问题

1. 转账死锁场景场景:简单的银行转账,将资金从一个账户(fromAccount)转到另一个账户(toAccount),当并发执行的时候,可能会出现死锁的情况;死锁的场景:多线程执行,线程1:账户A转账给账户B;线程2:账户B转账给账户A;线程1和线程2同时转账时,就可能会发生 死锁: 线程1:new TransferAccount(fromAccount,toAccou...

2019-04-25 21:42:46 3306

原创 死锁的四个必要条件、预防和避免办法

死锁1. 四个必要条件2. 死锁预防3. 死锁的避免死锁概念:多个并发进程因争夺系统资源而产生相互等待的现象。1. 四个必要条件互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。 占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。 不可抢占:别人已经占有了某项...

2019-04-25 21:17:02 11738

转载 Redis---面试相关

参考:Redis面试总结、面试中关于Redis的问题看这篇就够了1. 什么是redis?Redis是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正)2. Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上...

2019-04-23 16:53:52 131

原创 java.util.concurrent包

请见:https://juejin.im/entry/5b39bc776fb9a00e5c5f9407、https://juejin.im/post/5a093ff551882531bb6c4ee3#heading-12java.util.concurrent Java 并发工具包是 Java5 添加的一个并发工具包。这个包包含了一系列能够让 Java 的并发编程变得更加简单轻松的类。...

2019-04-23 15:42:28 187

原创 牛客网中级项目笔记

目录1. 项目实现功能2. 项目整体架构2.1 架构及内容2.2 功能:2.3 业务逻辑2.3.1 注册、登录、登出2.3.2 拦截器2.3.3 图片上传2.3.4 发布news和comment2.3.5 Redis实现点赞点踩2.3.6 异步处理1. 项目实现功能用户注册、登录 资讯发布、资讯排序、咨询分类 图片上传及管理 资讯首页分页展...

2019-04-21 21:31:04 3712 2

原创 字符串—判断IP地址的合法性(Java)

IP地址通常是类似:10.221.105.225的格式,不能以0开头,每个字段最大不超过255,不小于0;思路:字段只有1位时:只能是1-9中的一个数字; 字段有2位时:开头不能是0,所以开头数字是1-9,而个位数字可以是0-9; 字段3位时: 百位是1:十位和个位没有要求; 百位是2:十分位只能是 0-4,个位无要求;如果百位、十位分别是2、5,则个位只能是0...

2019-04-18 15:23:51 2489

转载 常用linux命令

目录1.查找文件2.查看一个程序是否运行3.终止线程4.查看文件,包含隐藏文件5.当前工作目录6.复制文件7.创建目录8.删除目录9.移动文件10.重命名11.切换用户12.修改文件权限13.压缩文件14.列出压缩文件列表15.解压文件16.查看文件头10行17.查看文件尾10行18.查看日志类型文件19.使用超级管理员身...

2019-04-16 21:00:18 120

转载 JUC 中的 Atomic 原子类总结

转载:JUC 中的 Atomic 原子类总结1. Atomic 原子类介绍Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。根据操作的数据类型,可以将JUC包中的原子类分为4类1.1 基本类型使用原子的方式更新基本类型AtomicInt...

2019-04-16 14:54:44 464

转载 悲观锁与乐观锁

转载:面试必备之乐观锁与悲观锁.md目录悲观锁-多写场景乐观锁-多读场景两种锁的使用场景乐观锁常见的两种实现方式1. 版本号机制2. CAS算法乐观锁的缺点1. ABA 问题2. 循环时间长开销大3. 只能保证一个共享变量的原子操作CAS与synchronized的使用情景悲观锁-多写场景总是假设最坏的情况,每次去拿数据的时候都认为别人会修改...

2019-04-16 14:29:33 132

转载 一个URL请求的过程

具体详见:一文读懂一个URL请求的过程是怎样的前言当我们在浏览器中输入一个URL访问地址,然后浏览器返回给我们一个响应页面,这内部过程到底是怎样的呢?下面我将从以下几个方面阐述一个 WEB请求过程到底是怎样:浏览器缓存 DNS域名解析 TCP连接 HTTP请求与响应...

2019-04-14 13:02:17 571

转载 Springboot---实现跨域请求(CORS)

1. CORS介绍2. 实现 CORS 跨域请求的方式2.1返回新的 CorsFilter(全局跨域)2.2 重写 WebMvcConfigurer(全局跨域)2.3 使用注解@CrossOrigin(局部跨域)2.4 手动设置响应头(局部跨域)1. CORS介绍跨域资源共享向来都是热门的需求,我们可以使用 CORS 来快速实现 跨域访问,只需要在服务...

2019-04-14 12:37:43 1320

转载 Springboot---过滤器

1. 拦截器与过滤器区别  AOP不是一种具体的技术,而是一种编程思想。过滤器和拦截器都属于面向切面编程的具体实现。而两者的主要区别包括以下几个方面:规范不同Filter是在Servlet规范中定义的,依赖于Servlet容器; 拦截器是在Spring容器中,是Spring框架支持的;使用范围不同Filter是Servlet规范定义的,只能应用在web程序中; 拦截器既可以...

2019-04-13 21:45:47 238

原创 Springboot---分页

参考:springboot 中 分页实现、SpringBoot分页插件PageHelper目录1. sql分页2. 插件分页-PageHelper2.1 插件依赖2.2 配置application.yml文件2.3 使用2.3.1 UserMapper接口2.3.2Map.xml文件2.3.3 UserController1. sql分页 语句样式:...

2019-04-13 15:22:32 734

转载 Java中创建对象的4种方式

转载:java创建对象的5中方式new关键字 反射 Class类的newInstance方法 Constructor类的newInstance方法 克隆 发序列化使用new关键字 }→调用了构造函数 使用Class类的newInstance方法 } →调用了构造函数 使用Constructor类的newInstance方法 }→调用了构造函...

2019-04-12 11:09:26 99

原创 线程安全的使用HashMap

目录1. java.util.Hashtable类:2. 使用 java.util.concurrent.ConcurrentHashMap 类:3. Collections.synchronizedMap()多线程环境下HashMap线程不安全的体现1. 添加元素(put)时,存在数据覆盖的问题2. resize的时候,会出现死循环(jdk1.7)HashMap 是非线程...

2019-04-11 21:59:15 556

转载 Spring---Bean的作用域和生命周期

前言1. bean的作用域1.1 singleton——唯一 bean 实例1.2 prototype——每次请求都会创建一个新的 bean 实例1.3 request——每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效1.4 session——每一次HTTP请求都会产生一个新的 bean,该bean仅在当前 HTTP session...

2019-04-11 20:38:01 902

转载 Redis---缓存穿透、缓存雪崩

目录1. 缓存穿透如何避免?如何选择?2 缓存击穿如何解决3. 缓存雪崩如何解决?1. 缓存穿透缓存穿透:一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力,或导致数据库异常。这就叫做缓存穿透。如何避免?缓存空值之所以会...

2019-04-10 15:37:14 110

转载 Redis---架构模式

参见:Redis面试题、高可用redis服务架构分析与搭建目录单机版主从复制主从复制+哨兵(sentinel)集群(proxy 型)集群(直连型): redis cluster 架构简单总结单机版特点:简单 问题: 1、内存容量有限 2、处理能力有限 3、无法高可用。主从复制Redis 的复制(replication)功能允许用户根据一个 ...

2019-04-09 21:37:51 285

转载 Springboot---定时任务

目录1. 简介2. 基本使用2.1 pom引用2.2 启动类启用定时2.3 创建定时任务2.4@Scheduled参数说明3. 多定时任务串并行分析1. 简介spring-boot项目中,想添加一个定时任务,可以怎么办?Timer:java自带的java.util.Timer类;允许你调度一个java.util.TimerTask任务。使用这种方式可以让你...

2019-04-09 20:04:34 269

转载 Springboot---Mybatis的使用

Mybatis的使用https://www.cnblogs.com/ityouknow/p/6037431.htmlMabitis中的#与$符号区别及用法介绍https://blog.csdn.net/qq_39781497/article/details/78125318mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数;sel...

2019-04-09 18:28:44 302

转载 Redis应用---Redis实现点赞点踩功能

为什么使用Redis而不是MySQL实现?Redis 和 MySQL应用场景不同。从效率来说:Redis的数据存放在内存,所以速度快但是会受到内存空间限制。MySQL存放在硬盘,在速度上肯定没有Redis快,但是存放的数据量要多的多。从功能来说:Redis是一个K-V数据库,同时还支持List/Hash/Set/Sorted Set等几个简单数据结构,所以只能以这些数...

2019-04-07 16:14:31 6500 2

原创 Redis---持久化方式RDB、AOF

目前Redis持久化的方式有两种: RDB 和 AOF首先,我们应该明确持久化的数据有什么用?答案是用于重启后的数据恢复。Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢复的措施。所以Redis在利用RDB和AOF进行恢复的时候,都会读取RDB或AOF文件,重新加载到内存中。1.1 RDBRDB就是Snapshot快照存储,是默认的持久化方式。可理解为半持久化...

2019-04-04 21:11:06 667

转载 SpringBoot---WebMvcConfigurer详解

目录1. 简介2. WebMvcConfigurer接口2.1 addInterceptors:拦截器2.2addViewControllers:页面跳转2.3addResourceHandlers:静态资源2.4configureDefaultServletHandling:默认静态资源处理器2.5configureViewResolvers:视图解析器...

2019-04-04 11:45:56 186379 16

转载 数据库面试相关

参考:https://juejin.im/post/5a9ca0d6518825555c1d1acd#heading-10目录1. MySQL的语句执行顺序2.数据库的乐观锁和悲观锁是什么?3. SQL 约束有哪几种?(列属性-列约束)4. 数据库锁5. Mysql存储引擎6. 最左匹配原则1. MySQL的语句执行顺序MySQL的语句一共分为11步,如...

2019-03-31 15:35:17 106

转载 Spring---消息

Spring消息之JMS.请见:https://www.cnblogs.com/jmcui/p/8906803.htmlSpring消息之RabbitMQ,请见:https://www.jianshu.com/p/79ca08116d57AMQP 与 JMS 的区别:1、AMQP为消息定义了线路层(wire-level protocol)的协议,而JMS所定义的是API规范...

2019-03-30 21:29:20 249

转载 Spring---远程过程调用(RPC)

https://juejin.im/post/58720e8c1b69e6005ca6e306#heading-1RMI 不考虑网络限制时使用(PS:因为RMI使用任意端口来交互,有时无法穿越防火墙);同时,RMI是基于Java 的,意味着客户端和服务端必须都是java开发的。因为RMI使用了java的序列化机制,所以通过网络传输的对象类型必须要保证在调用两端的java运行时是完全相同的版...

2019-03-30 20:37:57 1198

转载 Spring---缓存数据-Redis

目录0. 简介0.1 缓存收益和场景0.2 缓存更新策略1. 概述2. Spring Cache2.1 Spring与缓存实现进行集成2.1.1 启用对缓存的支持2.1.2 缓存管理器2.1.3 为方法添加注解以支持缓存3. 使用Redis缓存3.1 添加依赖3.2 配置连接池3.3 Redis连接工厂3.4 配置RedisTemplate...

2019-03-30 20:15:10 227

转载 Spring---事务管理

转载:https://juejin.im/post/5b00c52ef265da0b95276091#heading-0声明式和编程式事务请看:https://juejin.im/entry/59b49220f265da06456d4725目录1. 简介2.1PlatformTransactionManager接口2.2TransactionDefinition接口a...

2019-03-30 17:14:37 127

JAVA垃圾回收个人总结

JAVA垃圾回收个人总结

2017-03-25

Java I/O详细笔记

Java I/O详细笔记

2017-03-19

空空如也

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

TA关注的人

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