自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数组-4-LeetCode 15题 ->最接近的三数之和

LeetCode 15题 -> 最接近的三数之和1. 题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2 (-1 + 2 + 1 = 2) 2. 解题思路排序+双指针:思路与15题类似。3. 代码实现import java.util.Arra

2020-11-30 23:32:07 98

原创 数组-3-LeetCode 15题 -> 三数之和

LeetCode 15题 -> 三数之和1. 题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4]满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]2. 解题思路排序+双指针:①如果数组为空或数组元素小于3,返回数组;②排序,③遍历

2020-11-30 22:53:14 278

原创 数组-2-LeetCode 11题 ->盛最多水的容器

LeetCode 11题 -> 盛最多水的容器1. 题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。来自LeetCode2. 解题思路双指针:一开始,双指针分别指向数组开始和结尾的两端边界,即left = 0; right = height.length - 1;盛最多水的容

2020-11-29 22:18:32 95

原创 数组-1-LeetCode 03题 -> 无重复字符的最长子串

LeetCode 03题 -> 无重复字符的最长子串1. 题目描述给定一个字符串,找出其中不含有重复字符的最长子串的长度。示例:s = "abcabcbb"返回 3s = "bbbbb"返回 1 s = "pwwkew"返回 3无重复字符的最长子串是 "wke"//注意: 是 子串 的长度,不是子序列。2. 解题思路滑动窗口法:①定义一个滑动窗口,窗口内无重复元素,所以需要定义一个HashSet集合;②滑动窗口的左右边界left、right,

2020-11-29 20:39:21 236

原创 HTML-8-表单初级验证

HTML -> 表单初级验证placeholder 提示信息required:非空判断pattern 正则表达式<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录注册</title></head><body><h1>注册</h1><!--表单form

2020-11-28 17:03:17 89

原创 HTML-7-表单及表单应用

HTML -> 表单及表单应用1. 表单语法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>登录注册</title></head><body><h1>注册</h1><!--表单form action:表单提交的位置,可以是网站,也可以是一个请求处理地

2020-11-28 16:42:43 151

原创 HTML-6-iframe内联框架

HTML -> iframe内联框架 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>内联框架iframe学习</title></head><body><!--iframe内联框架 src:地址 w-h :宽度和高度 name--><!--&lt

2020-11-28 16:40:59 230

原创 HTML-5-页面结构分析

HTML -> 页面结构分析元素名描述header标题头部区域的内容(用于页面或页面中的一块区域)footer标记脚部区域的内容(用于整个页面或页面的一块区域)sectionWeb页面中的一块独立区域article独立的文章内容aside相关内容或用于(常用于侧边栏)nav导航类辅助内容<!DOCTYPE html><html lang="en"><head> <meta cha

2020-11-28 16:38:53 547

原创 HTML-4-列表、表格、媒体元素

HTML -> 列表、表格、媒体元素1. 列表标签无序列表有序列表定义列表<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>列表标签学习</title></head><body><!--无序列表应用范围:导航、侧边栏...--><ul> <

2020-11-28 10:41:43 121

原创 HTML-3-图像、超链接、网页布局

HTML -> 图像、超链接、网页布局1. 图像标签常见的图像格式JPGGIFPNGBMP(位图)<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>图像标签学习</title></head><body><!--img学习src : 图片地址(必填)

2020-11-26 22:34:50 231

原创 HTML-2-网页基本标签

HTML -> 网页基本标签1. 标题标签2. 段落标签3. 换行标签4. 水平线标签5. 字体样式标签6. 注释和特殊符号<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>基本标签学习</title></head><body><!--标题标签--><h1&gt

2020-11-24 23:25:41 82

原创 HTML-1-初识HTML

HTML -> 初识HTML1. 什么是HTMLHTML:Hyper Text Markup Language(超文本标记语言)超文本包括:文字、图片、音频、视频、动画等HTML 5,提供了一些新的元素和一些有趣的新特性,同时也简历了一些新的规则。这些元素、特性和规则的建立,提供了许多新的网页功能,如使用网页实现动态渲染图形、图表、图像和动画,以及不需要安装任何插件直接使用网页播放视频等。HTML 5的优势:世界知名浏览器厂商对HTML5的支持,如微软、Google、苹果、Opera、

2020-11-24 23:24:18 97

原创 JUC详解-19-各种锁的理解

JUC 详解 -> 各种锁的理解1. 公平锁、非公平锁公平锁:非常公平,不能插队,必须先来后到非公平锁:非常不公平,可以插队,(默认都是非公平锁)java的ReenTrantLock就是用队列实现的公平锁和非公平锁。公平锁中,如果有另一个线程持有锁或者有其他线程在等待队列中等待这个锁,那么新发出请求的线程将被放入到队列中。而非公平锁上,只有当锁被某个线程持有时,新发出请求的线程才会被放入队列中(此时和公平锁是一样的)。所以,它们的差别在于非公平锁会有更多的机会去抢占锁。public

2020-11-24 00:08:12 374 1

原创 JUC详解-18-CAS及ABA问题的解决

JUC 详解 -> 深入理解CAS及ABA问题的解决1. CAS什么是CASimport java.util.concurrent.atomic.AtomicInteger;public class CASDemo { //CAS:compareAndSet 比较并交换! public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInte

2020-11-22 23:31:07 221

原创 JUC详解-17-单例模式- 四种实现方式&反射破坏及解决办法

JUC详解 -> 单例模式 - 四种实现方式&反射破坏及解决办法Volatile --> 单例模式!饿汉式 DCL懒汉式枚举为什么可以避免单例模式被破坏?1. 什么是单例模式当需要某个类只能被实例化一次的时候,就要使用单例模式。单例模式是比较简单的一种设计模式。一个类如何才能只被实例化一次? 一般实例化对象时,都会调用类的构造方法,因此将该类的构造方法private,就不能向外界提供,即保证了该类对象的唯一性。但这样的话,就无法调用这个类的构造方法了,也就无法实例化

2020-11-22 17:39:11 756

原创 JUC详解-16-JMM及Volatile三大特性

JUC 详解 -> JMM及Volatile谈谈对Volatile的理解Volatile是Java虚拟机提供轻量级的同步机制保证可见性不保证原子性禁止指令重排可见性 ——>JMM1. JMM:Java Memory ModelJMM(Java Memory Model)即为JAVA 内存模型。作用:缓存一致性协议,用于定义数据读写的规则。JMM定义了JVM在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的

2020-11-21 17:53:44 220

原创 JUC详解-15-异步回调

JUC详解 -> 异步回调Future 设计的初衷:对将来的某个事件的结果进行建模CompletableFuture代码测试没有返回值的异步回调 runAsyncimport java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;import java.util.concurrent.TimeUnit;/** * 异步调用:Ajax * //异

2020-11-21 17:50:50 171

原创 JUC详解-14-ForkJoin详解

JUC详解 -> ForkJoin详解什么是ForkJoin?JDK 1.7后并行执行任务,提高效率,大数据量!大数据:Map Reduce,把大任务拆分为小任务ForkJoin特点:工作窃取这个里面维护的都是双端队列ForkJoin操作//求和计算的任务import java.util.concurrent.RecursiveTask;/** * 如何使用ForkJoin * 1.ForkJoinPool 通过它来执行 * 2.计算任务forkjoin

2020-11-18 23:55:52 361

原创 JUC详解-13-Stream流式计算

JUC详解 -> Stream流式计算什么是Stream流式计算?存储+计算!集合、MySQL等,本质就是存储东西的;计算都应该交给流来操作!代码测试import java.util.Arrays;import java.util.List;/** * 题目要求:一分钟完成此题,只能用一行代码实现! * 现在有5个用户!筛选: * 1.ID必须是偶数 * 2.年龄必须大于23岁 * 3.用户名转为大写字母 * 4.用户名字母倒着排序 * 5.只能出一个用户! *

2020-11-18 22:12:43 151

原创 JUC详解-12-4大函数式接口

JUC 详解 -> 四大函数式接口新时代的程序员:lambda表达式、链式编程、函数式接口、Stream流式计算函数式接口:只有一个方法的接口,如Runnable接口@FunctionalInterfacepublic interface Runnable { public abstract void run();}超级多FunctionalInterface简化编程模型,在新版本的框架底层大量应用!foreach(消费者类的函数式接口)四大原生的函数式

2020-11-17 23:55:32 192

原创 JUC详解-11-线程池-3大方法&7大参数&4种拒绝策略&CPU密集型/IO密集型

JUC 详解 -> 线程池线程池:三大方法、七大参数、四种拒绝策略池化技术:​ 程序的运行,本质就是占用系统资源,为了优化CPU资源的使用,–> 池化技术;​ 如:线程池、连接池、内存池、对象池…​ 创建、销毁时十分浪费资源​ 池化技术:事先准备好一些资源,有人要用,就来这里拿,用完还回去线程池的好处:降低资源的消耗;提高响应的速度;方便线程管理。总结:线程复用、可以控制大量并发数、管理线程1. 三大方法阿里巴巴Java开发手册中对线程池的编程规约imp

2020-11-16 01:01:42 264 4

原创 JUC详解-10-同步队列SynchronousQueue

JUC 详解 -> SynchronousQueue同步队列SynchronousQueueimport java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;import java.util.concurrent.TimeUnit;/** * SynchronousQueue同步队列 * 与其他的BlockingQueue不同,SynchronousQueue不存储元素 *

2020-11-15 20:26:49 372

原创 JUC详解-9-阻塞队列BlockingQueue及BlockingQueue四组API

JUC 详解 -> BlockingQueue1. BlockingQueue阻塞队列阻塞队列 FIFO写入:如果队列满了,就必须阻塞等待取:如果队列是空的,必须阻塞等待生产什么情况下使用阻塞队列?多线程并发处理;线程池!使用队列?添加;移除2. BlockingQueue四组API方式抛出异常不会抛出异常,有返回值阻塞等待超时等待添加add(E e)offer(E e)put()offer(E e, long ti

2020-11-15 19:47:37 166

原创 JUC详解-8-ReadWriteLock

JUC详解-> ReadWriteLock读的时候可以被多个线程同时读!写写的时候只能有一个线程去写!代码测试import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 独占锁(写锁) * 共享锁(读锁) * Read

2020-11-14 23:59:56 115

原创 JUC详解-7-juc常用辅助类-CountDownLatch+CyclicBarrier+Semaphore

JUC详解 -> 常用辅助类(必会)1. CountDownLatch减法计数器代码测试:import java.util.concurrent.CountDownLatch;//减法计数器public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { //倒计时,总数是6 CountDownLa

2020-11-14 22:21:08 243

原创 JUC详解-6-Callable

JUC详解 -> CallableCallable接口可以有返回值可以抛出异常方法不同,call()new Thread().start();如何启动CallableThread只接收Runnable代码测试import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;p

2020-11-14 00:26:21 412

原创 JUC详解-5-集合类不安全

JUC详解 -> 集合类不安全1. CopyOnWriteArrayList并发下 ArrayList不安全ConcurrentModificationExceptionimport java.util.*;import java.util.concurrent.CopyOnWriteArrayList;//ConcurrentModificationException 并发修改异常!public class ListTest { public static void ma

2020-11-13 00:23:03 177

原创 JUC详解-4-八锁现象彻底理解锁

JUC详解 -> 八锁现象如何判断锁的是谁?import java.util.concurrent.TimeUnit;/** * 八锁:就是关于锁的八个问题 * 1.标准情况下,两个线程先打印发短信还是打电话? 1 发短信 -> 2 打电话 * 2.sendSms()延迟4秒,两个线程先打印发短信还是打电话? 1 发短信 -> 2 打电话 */public class Test01 { public static void main(String[] args)

2020-11-11 23:45:25 240

原创 JUC详解-3-生产者消费者问题(Synchronized&Lock-Condition)

JUC详解 -> 生产者消费者问题面试必问:单例模式、排序算法、生产者消费者问题、死锁1. Synchronized版生产者消费者问题/** * 线程之间的通信问题:生产者和消费者问题! * 线程交替执行 * 线程A、B 操作同一个变量 +1/-1 * 等待唤醒、通知唤醒 */public class Demo01 { public static void main(String[] args) { Data data = new Data();

2020-11-10 23:12:58 158

原创 JUC详解-2-Synchronized和Lock

JUC详解 -> 锁1. Synchronized锁 (传统)//基本的卖票例子/** * 真正的多线程开发,降低耦合性 * 线程就是一个单独的资源类,没有任何的附属的操作! * 1.属性 * 2.方法 */public class SaleTicketDemo01 { public static void main(String[] args) { //并发:多线程同时操作同一个资源类,把资源类丢入线程 Ticket ticket = new

2020-11-09 22:15:57 200

原创 JUC详解-1-回顾多线程

JUC 并发编程 -> 回顾多线程多线程的进阶 = JUC1. 什么是JUC业务:普通的线程代码 ThreadRunnable 没有返回值 ;效率相比于Callable较低!Lock2. 线程和进程线程、进程,如果不能用一句话说出来,就不扎实!进程:一个程序,如QQ.exe Music.exe;程序的集合一个进程往往可以包含多个线程,至少包含一个!Java默认有几个线程? 2个! main、GC线程:开了一个进程Typora

2020-11-09 22:11:48 153 1

原创 JVM详解-GC-总结

JVM详解 -> GC总结1. 内存效率复制算法 > 标记清除算法 > 标记压缩算法本质是时间复杂度问题2. 内存整齐度复制算法 = 标记压缩算法 > 标记清除算法3. 内存利用率标记压缩算法 = 标记清除算法 > 复制算法思考:难道没有最优算法?没有最好的算法,但是只有最合适的。因此,GC 被称为 分代收集算法(Generational Collection)新生代:存活率低复制算法!老年代:区域大,存活率高标记清除(内存

2020-11-07 23:30:53 114

原创 JVM详解-GC-标记压缩算法

JVM详解 -> GC -> 标记清除压缩算法标记清除优点:不需要额外的空间!缺点:两次扫描,严重浪费时间,会产生内存碎片标记压缩再优化:标记-清除-压缩先标记清除几次后,再进行压缩~...

2020-11-07 23:30:31 382

原创 JVM详解-GC-复制算法

JVM详解 -> GC -> 复制算法新生区的GC主要用复制算法。好处:没有内存的碎片坏处:浪费了内存空间 – 多了一半空间永远是空的(to)。假设对象100%存活(极端情况)!复制算法最佳使用场景:对象存货度较低的时候(新生区)...

2020-11-07 23:27:12 423

原创 JVM详解-GC-引用计数法

JVM详解 -> GC -> 引用计数法1. GC概述GC:垃圾回收机制作用区域:JVM在进行GC时,并不是对堆中的三个区域(新生代、幸存区、老年区)进行统一回收。大部分时候,回收都是在新生代区域。新生代幸存区:from 、to老年区GC两种类型:轻GC (普通GC)重GC(全局GC/Full GC)GC题目:JVM的内存模型和分区?详细到每个区放什么?堆里面的分区有什么?说说它们的特点GC的算法有哪些?怎么用?标记清除法标记压缩

2020-11-07 19:13:35 560

原创 JVM详解-堆-使用JProfiler工具分析OOM原因

JVM详解 -> 使用JProfiler工具分析堆内存OOM原因在一个项目中,突然出现了OOM故障,那么该如何让排除?研究为什么出错?能够看到代码第几行出错:内存快照分析工具——MAT,JProfilerDebug,一行行分析代码MAT,JProfiler作用:分析Dump内存文件,快速定位内存泄漏获得堆中的数据获得大的数据…-Xms1m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError-Xms 设置初始化内存分配大小 1/64-Xmx

2020-11-07 18:22:30 491

原创 JVM详解-新生区、永久区、堆内存调优

JVM详解 -> 新生区、永久区、堆内存调优1. 新生区类:诞生和成长的地方,甚至死亡;伊甸园区:所有的对象都是在 伊甸园区 new出来的!幸存者区0区1区经过研究,99%的对象都是临时的对象!因此很少见到OutOfMemoryError。2. 老年区从上面三个区幸存下来的3. 永久区这个区域常驻内存,用来存放JDK自身携带的Class对象。如Interface元数据。存储的是Java运行时的一些环境或类信息,这个区域不存在垃圾回收!关闭虚拟机就会释放这个区域的

2020-11-07 18:18:45 904 1

原创 JVM详解-HotSpot和堆

JVM详解 -> 3种JVM、堆1. 三种JVMSun公司 **HotSpot ** Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)BEA JRockitIBM2. 堆Heap一个JVM只有一个堆内存堆内存中细分为三个区域:新生区(伊甸园区)养老区永久区GC垃圾回收,主要在伊甸园区和养老区假设内存满了,报错OutOfMemoryError,堆内存不

2020-11-05 00:10:35 248

原创 JVM详解-栈

JVM详解 -> 深入理解栈数据结构栈:先进后出、后进先出队列:先进先出(FIFO:First Input First Output)思考一个问题:为什么main()先执行,最后结束?栈:栈内存,主管程序的运行,生命周期和线程同步,线程结束,栈内存也就释放,对于栈来说,不存在垃圾回收问题栈里面存放的:8大基本类型、对象引用、实例的方法栈的运行原理栈满了:StackOverflowError栈+堆+方法区 的交互关系对象实例化在内存中的

2020-11-04 23:35:25 210

原创 JVM详解-native 方法区

JVM详解 -> native & 方法区1. native 关键字native :凡是带了native关键字的,说明Java的作用范围达不到了,会调用底层C语言的库进入本地方法栈;调用本地方法接口JNI,JNI作用:扩展Java的使用,融合不同的编程语言为Java所有,最初是为了融合C C++在内存区域中专门开辟了一块标记区域:Native Method Stack,登记native方法在最终执行的时候,在执行引擎中通过JNI加载本地方法库中的方法目前该方法的使用越来越少了

2020-11-03 22:15:21 639

空空如也

空空如也

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

TA关注的人

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