Java
文章平均质量分 74
摸金青年v
帮助值得帮助的人
展开
-
Java学习笔记2—集合框架—2.1概述特点
Java集合框架,即保存数据的容器,设计容器的目的为了针对不同的应用场景,更高效的保存数据,查询,添加和删除数据。各容器操作数据的特点和其底层实现的算法密切相关,不同的算法时间和空间复杂度不同,我们都需要了解。...原创 2022-06-26 09:54:25 · 421 阅读 · 0 评论 -
Java学习笔记1—JVM虚拟机—1.1运行时数据区
java虚拟机Jvm运行时数据区的介绍原创 2022-06-19 15:12:16 · 347 阅读 · 0 评论 -
Java学习笔记1—JVM虚拟机—1.2垃圾回收机制
虚拟机的垃圾回收机制介绍原创 2022-06-19 15:55:41 · 338 阅读 · 0 评论 -
Java高并发秒杀视频学习笔记
大神学习视频:https://www.imooc.com/video/11822学习笔记:高并发秒杀延迟的真正原因: 1. java程序与mysql交互的网络延迟,耗时1ms 2. java程序GC(java垃圾回收),耗时50ms而Mysql语句执行同一行(同一商品)的减库存update操作,耗时仅有0.025m...原创 2020-05-03 11:21:18 · 648 阅读 · 0 评论 -
Java Threadlocal多线程应用场景学习
推荐学习慕课网视频:https://www.imooc.com/video/21051视频学习后总结:从应用场景思考Threadlocal实用价值 1)场景1:海量请求下采用多线程处理,如何保持数据一致性的问题 模拟1万请求,100线程,如果采用同步(排队),一定会宕机(绝对不可行) 解决思路:海量同步——>Th...原创 2020-04-29 18:35:53 · 271 阅读 · 0 评论 -
【java面试】equals()与“==”的使用
转载自:https://blog.csdn.net/qq_27760433/article/details/72871274equals()方法equals()方法是对象比较函数,按照对象比较,系统默认四个类覆写该方法:Integer , String,Date,file没有覆写equals()方法的类会调用Object的equals()方法,Object类的equals()方法直接...转载 2019-06-16 21:22:05 · 175 阅读 · 0 评论 -
【java面试】面向对象三大特性:封装、继承、多态
1.封装封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方式。 类、方法其实也是封装的体现;2.继承继承:子类重用父类代码。继承的特点:java只支持单继承。不支持多继承,但是保留了这种多继承机制,可以多重继承。转载:https://blog.csdn.net/yy471101598/article/details/889768961)不支持多继承的原因:因为当一个...转载 2019-06-16 21:17:09 · 1057 阅读 · 0 评论 -
Java程序员面试必考点——提升面试表现
大牛面试官经验(提升面试表现)引用:https://www.cnblogs.com/JavaArchitect/p/10011253.htmlJava基础Java基础知识点总结:https://blog.csdn.net/sinat_41144773/article/details/890530621)Java内存:栈内存和堆内存https://blog.csdn.ne...原创 2019-06-03 11:11:57 · 270 阅读 · 0 评论 -
Java后端开发知识点总结 2019(涉及前沿:微服务)
一、java基础1、基本类型——》内存分配——》虚拟机(GC机制)2、java特性——》关键字——》java容器(散列表)——》底层3、多线程——》锁——》底层——》实际场景多线程问题4、设计模式(单例、代理)二、算法和数据结构1、数字——》字符串——》数组——》链表2、动态规划、分治法、双指针法、利用(栈和hashmap)数据结构3、排序算法(快速排序(递归...原创 2019-07-18 15:24:38 · 1114 阅读 · 0 评论 -
Reentrantlock和synchronized的区别
synchronized是Java关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。1、synchronized修饰方法 更加准确的说法应该是修饰实例方法,而不包括静态方法。关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法当作锁。原因在于,要调用一个实例方法必须要new一个对应的实例对象,通过此...转载 2019-04-21 08:26:33 · 226 阅读 · 0 评论 -
【java并发】AQS学习
AQS的全称为(AbstractQueuedSynchronizer)这个类在java.util.concurrent.locks包。AQS作为一个核心的处理框架,他提供了大量的同步操作,同时用户还可以在此类的基础上进行自定义,实现自己的同步器。其主要框架如下:AQS是JUC同步器的基石,下面就AQS涉及的技术原理简单阐述:转载:https://www.cnblogs.com/c...转载 2019-06-17 13:20:01 · 184 阅读 · 1 评论 -
SpringMvc学习整理
SpringMVC-顾名思义,是一个MVC框架。即可以处理View,Model,controller的一个框架。基本流程-View层,发出请求,controller处理逻辑,并调用Model处理Dao层相关操作。SpringMVC处理流程SpringMVC处理流程如下图所示:1.jsp靠解析?2.SpringMvc的渲染是什么?3.Struts2和Spri...转载 2019-06-12 09:01:42 · 133 阅读 · 0 评论 -
JAVA中值传递和引用传递
java中数据类型分为基本数据类型和引用数据类型基本数据类型整型:byte,short,int,long浮点型:float,double字符型:char布尔型:boolean引用数据类型数组类接口方法的参数分为实际参数,和形式参数。形式参数:定义方法时写的参数。实际参数:调用方法时写的具体数值。一般情况下,在数据做为参数传递的时候,基本数据类型是值传递,引用数据...转载 2019-06-12 09:05:25 · 275 阅读 · 0 评论 -
Java设计模式 单例模式
单例模式单例模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。意图:单例类必须自己创建自己的唯一实例,并必须提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的...原创 2019-07-02 07:28:14 · 175 阅读 · 0 评论 -
Java设计模式 代理模式
代理模式1、代码设计的代理模式 代理模式属于构建型模式(Proxy),提供了对目标对象的一种访问方式; 即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。转载:https://zhuanla...转载 2019-07-23 07:23:14 · 242 阅读 · 0 评论 -
进程和线程的区别
进程和线程进程:进程就是一段程序的执行过程,代表一个“正在运行”的应用程序。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。进程有三个状态:就绪(获取除CPU的...转载 2019-04-05 17:25:13 · 130 阅读 · 0 评论 -
多线程sleep()和wait()的区别
Java多线程是一种抢占式的机制,线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。当有多个线程访问共享数据的时候,就需要对线程进行同步。每个对象都有一个机锁来控制同步访问。Synchronized关键字可以和对象的机锁交互,来实现线程的同步。线程中的几个主要方法的比较:Thread类的方法:sleep(),yi...转载 2019-04-26 10:32:27 · 21475 阅读 · 2 评论 -
多线程死锁原因和避免方法
死锁定义 在申请锁时发生了交叉闭环,即线程在获得了锁A并且没有释放的情况下去申请锁B,这时,另一个线程已经获得了锁B,在释放锁B之前又要先获得锁A,因此闭环发生,陷入死锁循环。引用:https://blog.csdn.net/lyabc123456/article/details/81060477死锁例子代码(引用)public class DeadLockA e...转载 2019-04-23 17:40:00 · 5447 阅读 · 0 评论 -
CountDownLatch多线程同步辅助工具
CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。CountDownLatch的两种常见用法1、某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化,每当一个任务线程执行完毕,就将计数器减1,当计数器的值变为0时,在CountDownLatch上await()的线程就会被唤醒。...转载 2019-04-30 17:56:24 · 243 阅读 · 0 评论 -
TreeMap 红黑树源码分析
TreeMap基本使用 TreeMap<String,Integer> treeMap = new TreeMap<String,Integer>(); //添加单个键值对 treeMap.put("a",5); treeMap.put("c",3); treeMap.put("d",6); ...原创 2019-04-03 08:13:47 · 202 阅读 · 0 评论 -
多线程生产者消费者模式的三种方法
生产者和消费者模式是线程模型中的经典问题:生产者就是生产数据的线程,消费者就是消费数据的线程。生产者和消费者在同一时刻共享的有界缓冲区,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。为了使这个过程可以无休止的执行,不能因缓冲区满生产者放不进产品而终止,也不能因缓冲区空消费者无产品可取而终止,有很多方法.........转载 2019-03-26 21:17:32 · 266 阅读 · 0 评论 -
Java设计模式—工厂模式、观察者模式、装饰器模式
java设计模式总体来说分为三大类:引用:https://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html创建型模式,共五种:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模...转载 2019-03-26 22:42:13 · 1284 阅读 · 1 评论 -
Java运行时数据区
Java虚拟机(JVM),java源文件(.java)通过编译器生成字节码文件(.class),字节码文件(.class)通过JVM(Java虚拟机)中的解释器再翻译成特定机器上的机器码。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。当一个程序从开始运行一个程序,这时虚拟...转载 2019-04-05 11:06:31 · 188 阅读 · 0 评论 -
静态代理和JDK、Cglib动态代理区别
代理模式:由被代理对象(业务类)和代理类组成,代理类通常包括日志代理类、权限代理类。代理源代码分析,转载此篇博客:https://blog.csdn.net/fanrenxiang/article/details/81939357静态代理被代理对象和代理类都确定时可以采用静态代理。静态代理有两种方式继承和聚合, 聚合较为常用。动态代理被代理对象多,代理类多的情...转载 2019-03-18 20:41:23 · 489 阅读 · 0 评论 -
SpringMVC架构原理流程
SpringMVC原理图SpringMVC运行原理客户端请求(Request)提交到DispatcherServlet(总控制) DispatcherServlet通过HandlerAdapter处理器适配器,调用处理器Controller Controller调用业务逻辑处理(Service层)后,返回ModelAndView HandlerAdapte...转载 2019-03-20 10:12:26 · 175 阅读 · 0 评论 -
Spring核心:依赖注入IOC
控制翻转IoC(Inversion of Control),依赖注入DI(Dependency Injection)引用:https://www.cnblogs.com/JavaArchitect/p/7513803.html 概念名 含义 表现形式 控制翻转(IoC,控制反转) 类之间的关系,...转载 2019-03-20 10:06:29 · 150 阅读 · 0 评论 -
Java基础知识点总结
1、Java的基本数据类型引用:https://blog.csdn.net/Frank_Adam/article/details/794878731)基本数据类型:整数型:byte,short,int(默认),long字符型:char浮点型:float,double(默认)布尔型:booleanFloat和long类型必须加后缀:float a=3.5f、long b...转载 2019-04-06 17:19:12 · 493 阅读 · 0 评论 -
Java虚拟机—GC垃圾回收机制
GC(Gabage Collection)垃圾回收器,释放对象占用的内存空间。Java中一个对象的内存分配是在虚拟机的自动内存分配,不容易出现内存泄露和内存溢出问题,但是,如果出现了内存泄露和内存溢出问题,而开发者又不了解虚拟机是怎么分配内存的话,那么定位错误和排除错误将是一件很困难的事情。几种垃圾收集算法引用:https://www.cnblogs.com/w...转载 2019-04-20 18:41:06 · 377 阅读 · 0 评论 -
Java线程池ExecutorService介绍
普通new Thread线程(未用线程池)的弊端每次都要new Thread新建对象,性能差。 线程缺乏统一管理,不断的新建线程,占用过多的系统资源,内存溢出。线程池的优点:重用存在的线程,减少对象创建、消亡的开销,性能佳。 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。 提供定时执行、定期执行、单线程、并发数控制等功能。 四种常用的线程...转载 2019-05-02 13:36:11 · 176 阅读 · 0 评论 -
两个线程同时执行i++100次
i++这种操作并不是原子性的, 实际上它的操作是首先从内存中取出数据放在cpu寄存器中进行计算, 然后再将计算好的结果返回到内存中。转载:https://blog.csdn.net/qq_41594146/article/details/87433065可能的结果:最小为2,最大为200最小为2线程执行过程A线程和B线程都是第一次执行i++,cpu1和cpu2寄存...转载 2019-05-31 23:25:49 · 2961 阅读 · 1 评论 -
Java并发编程volatile关键字
并发编程中的三个概念原子性:原子是世界上的最小单位,具有不可分割性。原子性意味着一个线程一次只能执行由一个指定监控对象(lock)保护的代码,从而防止多个线程在更新共享状态时相互冲突。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。 可见性:是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的,即当多个线程访问同一个变量时,一个...转载 2019-04-28 17:50:26 · 136 阅读 · 0 评论 -
悲观锁synchronized、乐观锁CAS
1、悲观锁乐观锁、悲观锁是一种思想在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 一个线程持有锁会导致其它所有需要此锁的线程挂起 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。 synchronized属于悲观锁,JDK1.5之前都是靠synchronized关键字保证同步的,可以确保无论哪个线程持有...转载 2019-04-28 10:56:29 · 1258 阅读 · 0 评论 -
ConcurrentHashMap如何保证线程安全【解释】
1、put操作的线程安全 当有多个线程同时进行put操作,在初始化数组时使用了乐观锁CAS操作来决定到底是哪个线程有资格进行初始化,其他线程均只能等待。用到的并发技巧:volatile变量(sizeCtl):它是一个标记位,用来告诉其他线程这个坑位有没有人在,其线程间的可见性由volatile保证。 CAS操作:CAS操作保证了设置sizeCtl标记位的原子性,保证了只有一个线...转载 2019-04-23 16:46:58 · 540 阅读 · 0 评论 -
栈内存和堆内存Java(详细实例讲解)
定义栈内存:存放基本类型的变量、对象的引用(引用变量)。(如何回收?) 在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间:当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存:存放new创建的对象和数组。(GC垃圾回收)GC垃圾回收:https://blog.csdn.net/sinat_4114477...原创 2019-05-02 10:29:19 · 2081 阅读 · 0 评论 -
程序员必备的网站推荐
一、前端网页界面设计1)网页原型设计工具:Axure RP 8.0 官网: https://www.axure.com/2)前端框架:Bootstrap 中文官方文档: http://v3.bootcss.co静态网页样式设计,优点是问题使用者居多,官方使用指南文档资料多,出了问题容易找到解决办法。3)前端插件:jQuer...原创 2018-02-19 09:23:10 · 488 阅读 · 0 评论 -
JAVA ListNode链表
链表结构,在Java中用需要自己定义一个ListNode类来生成链表对象。自定义的ListNode链表类如下:public class ListNode { int val; ListNode next; // 下一个链表对象 ListNode(int x) { val = x; } //赋值链表的值 }leetcode第2题...原创 2019-03-06 12:33:04 · 70256 阅读 · 18 评论