JAVA
文章平均质量分 81
ThetaQing
我不懒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CAS原理、应用和缺点
文章目录一、基本原理二、基本应用2.1 Atomic类2.2 Lock系列锁的底层实现三、缺点3.1 CPU开销较大3.2 不能保证代码块的原子性3.3 ABA问题一、基本原理CAS 被认为是一种乐观锁,乐观锁,会以一种更加乐观的态度对待事情,认为自己可以操作成功。当多个线程操作同一个共享资源时,仅能有一个线程同一时间获得锁成功,在乐观锁中,其他线程发现自己无法成功获得锁,并不会像悲观锁那样阻塞线程,而是直接返回,可以去选择再次重试获得锁,也可以直接退出。CAS,( Compare And Swap)原创 2021-03-23 10:25:39 · 606 阅读 · 0 评论 -
Redis单线程原因、数据类型及分布式锁
Redis是C语言开发的一个开源的高性能键值对(key-value)的内存数据库。Redis作为一个内存数据库具有以下特点:性能优秀,数据在内存中,读写速度非常快,支持并发10w QPS;单进程单线程,是线程安全的,采用的是IO多路复用技术;丰富的数据结构,支持字符串strings、散列hashes、列表lists、集合sets、有序集合sorted sets等;支持数据持久化;主从复制,哨兵,可高用;可以用作分布式锁;可以作为消息中间件使用,支持发布订阅。1、Redis为什么这么快却还原创 2021-03-18 21:57:28 · 441 阅读 · 0 评论 -
分布式锁的三种实现(数据库+ZooKeeper+Redis)
文章目录一、概述1.1 锁的分类1.2 由来1.3 特点二、实现2.1 基于数据库乐观锁2.1.1 基于数据库表实现2.1.2 基于数据库排他锁2.2 基于ZooKeeper的分布式锁2.3 基于Redis的分布式锁大概这是我这段时间以来面试官问得最多的一个问题吧,是时候系统整理一下了~一、概述1.1 锁的分类和分布式锁对应的主要有线程锁、进程锁。线程锁主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在原创 2021-03-18 21:44:44 · 396 阅读 · 0 评论 -
代理模式
一、什么是代理代理的目的是为其他对象提供一个代理以控制对某个对象的访问。代理类和委托类通常回实现相同的接口,代理类负责为委托类预处理消息、过滤消息并转发消息,隐藏和保护委托类对象。1.1 代理模式的主要优点代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性1.2 代理模式的主要缺点代理模式会造成系统设计中类的数量增加在客户端和目标对象之间增加一个代理对象,会原创 2021-03-12 12:47:35 · 222 阅读 · 0 评论 -
Spring的相关重点
文章目录一、概述1.1 什么是Spring1.2 Spring的优缺点1.3 Spring框架用到的设计模式二、Spring控制反转IOC2.1 IOC的作用2.2 IOC的优点2.3 IOC的实现2.4 什么是依赖注入2.5 依赖注入实现方式一、概述1.1 什么是SpringSpring是一个轻量级Java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,为开发Java应用程序提供全面的基础架构支持。Java开发者专注于应用程序的开发,而Spring负责基础架构,这些功能的底层原创 2021-03-09 17:20:24 · 206 阅读 · 0 评论 -
单例模式的四种实现
文章目录一、单例模式概念二、应用场景三、实现方式3.1 懒汉模式3.2 饿汉模式3.3 静态内部类3.4 枚举一、单例模式概念Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。二、应用场景单例模式的应用场景主要有以下几个方面:需要频繁创建的一些类,使用单例可以降低系统的内存压力,减少 GC。某类只要求生成一个对象的时候,如一个班中的班长、每个人的身份证号等。某些类创建实例时占用资源较多,或实例化耗时较长,且经常使用。某类需要频繁实例化,而创建的对象又频繁被销毁的原创 2021-03-07 19:54:28 · 11521 阅读 · 1 评论 -
Java的Final关键字
1. 基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括局部变量和成员变量)。1.1 修饰类当用final修饰一个类时,表明这个类不能被继承。final类中的成员变量可以根据需要设为final,但是final类中的所有成员方法都会被隐式地指定为final方法。因此,除非这个类真的以后不会被用来继承或出于安全考虑,尽量不要将类设计为final类。1.2 修饰方法使用final方法的原因有两个:把方法锁定,以防任何继承类修改它的含义;效率,在早期的Java实现版原创 2021-03-02 20:16:17 · 296 阅读 · 0 评论 -
List、Set、Map详解
文章目录ListArrayListArrayList的动态扩容SetHashSet不允许重复值的原因TreeSetTreeSet元素排序MapHashMap哈希值计算TreeMap红黑树ListList集合是有序的,可以对其中每个元素的插入位置进行精确地控制,通过索引来访问元素,遍历元素。常用地主要有ArrayList和LinkedList这两个类。其中ArrayList底层是通过数组实现,随着元素的增加而动态扩容;而LinkedList底层是通过链表实现,随着元素的增加不断向链表的后端增加节点。原创 2021-02-27 22:27:23 · 5400 阅读 · 2 评论 -
socket编程
网络编程1 基本知识1.1 概述计算机网络:利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统。网络编程的目的:传播交流信息,数据交换,通信想要达到这个目的需要什么:1、如何准确地定位网络上地一台主机 192.168.16.124:端口,定位到该计算机上的某个资源;2、找到了这个主机,如何传输数据呢?传输介质1.2 网络通信的要素如何实现网络的通信:通信双方的地址:ip+端口号规则1.3原创 2021-02-06 10:06:54 · 246 阅读 · 0 评论 -
多线程
多线程主要内容线程简介线程实现,重点线程状态线程同步,重点线程通信问题高级主题,应用一、进程与线程多任务:看起来是多个任务都在做,本质上大脑在同一时间依旧只做了一件事情多线程:类似于多个车道,普通方法调用只有主线程一条执行路径,而多线程是多条执行路径,主线程和子线程并行交替执行。进程Process:在操作系统中运行的程序就是进程,一个进程可以有多个线程,一个进程至少有一个线程(main线程),进程是执行程序的一次执行过程,是一个动态的概念,是系统资源分配的单位。线程Threa原创 2021-02-06 10:06:01 · 191 阅读 · 0 评论 -
IO流
IO流1、 基本概念流:内存与存储设备之间传输数据的通道。输入流:将<存储设备>的内容读入到<内存>(程序)中。输出流:将<内存>(程序)中的内容写入到<存储设备中>。流的分类:按单位:字节流:以字节为单位,可以读写所有数据;字符流:以字符为单位,只能读写文本数据。按功能:节点流:具有实际传输数据的读写功能;过滤流:在节点流的基础上增强功能。2、字节流字节流抽象类InputStream:表示输入字节流的所有类的超类;ab原创 2021-02-06 10:04:58 · 206 阅读 · 0 评论 -
Java实现贪食蛇GUI
一、分类1、游戏启动类;2、游戏面板类;3、数据中心类。二、分步骤1、先出框架:界面绘制,先把面板上的静态内容整理,比如广告位之类的;2、再添元素:静态小蛇绘制;3、开始运动:让小蛇能走固定方向运动;4、让键盘控制小蛇运动:添加键盘监听事件;5、吃食物长大:随机生成食物,并判断是否吃掉食物,小蛇长大;6、失败判定,积分系统:设置坐标,绘制,监听...原创 2021-02-06 10:04:24 · 218 阅读 · 0 评论 -
常用类小结
常用类1 内部类概念:在一个类的内部再定义一个完整的类。特点:编译之后可以生成独立的字节码文件(class文件);内部类可以直接访问外部类的私有成员,而不破坏封装;可为外部类提供必要的内部功能组件。1.1 成员内部类在类的内部定义,与实例变量、实例方法同级别的类。作为外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象。当外部类、内部类存在重名属性时,会优先访问内部类属性,如果仍然需要访问外部类(OuterClassName)的属性(attributeName)需要加Out原创 2021-02-06 10:03:33 · 221 阅读 · 0 评论 -
集合框架知识点
文章目录集合框架1 概述2.1 遍历集合2.2 集合元素为引用类的对象3 List接口3.1 列表迭代器 listIterator3.2 集合存储包装类3.3 List实现类4 泛型4.1 泛型类定义4.2 泛型接口4.3 泛型方法4.4 泛型集合5 Set接口5.1 HashSet 重点补充:(重点)5.2 TreeSet补充 Comparator接口6 Map集合6.1 Map父接口6.2 HashMap实现类6.3 HashTable实现类Properties子类6.4 TreeMap类7 Colle原创 2020-12-10 21:32:40 · 382 阅读 · 0 评论 -
注解与反射知识点
1. 注解概论Annotation的作用:不是程序本身,可以对程序作出解释(与注释Commet类似);可以被其他程序(比如编译器等)读取。Annotation的格式:注解以"@注解名"在代码中存在,还可以添加一些参数值,例如@SuppressWarnings(value=“unchecked”).Annotation在哪里使用:可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,通过反射机制编程实现对这些注解的访问。1.1 内置注解@Ov原创 2020-12-10 21:30:32 · 219 阅读 · 0 评论 -
图解java类实例化时内存中发生的变化
以People类为例public class People{ String name; // 定义一个成员变量 name int age; // 成员变量 age Double height; // 成员变量 height void sing(){ System.out.println("人的姓名:"+name); System.out.println("人的年龄:"+age); System.out.println("人的身原创 2020-12-03 16:41:09 · 548 阅读 · 0 评论 -
JVM16个知识点梳理&JMM重点
文章目录JVM0 面试题0.0 知识点JVM0 面试题1、请你谈谈对JVM的理解2、java8虚拟机和之前的变化更新?3、什么是OOM,什么是栈溢出StackOverFlowError?怎么分析4、JVM的常用调优参数有哪些?5、内存快照如何抓取,怎么分析Dump文件?知道吗?6、谈谈JVM中,类加载器你的认识?rt-jar等7、补充:new一个对象的内存分析0.0 知识点1、JVM的位置2、JVM的体系结构3、类加载器作用:加载原创 2020-12-01 16:17:52 · 470 阅读 · 0 评论 -
从面向过程到面向对象到内部类的代码优化
补充1、类的组合:class A{public B b; // 这就是组合,在A中就可以直接使用B的方法}计算器面向过程package GUI.demo1;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;public class Calculator { // 计算器类原创 2020-08-27 19:51:53 · 326 阅读 · 0 评论 -
JAVA面向对象要点记录
一、面向过程&面向对象面向过程思想:步骤清晰简单,第一步、第二步……适合处理一些较为简单的问题。面向对象思想:物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后,才对某个分类下的细节进行面向过程的思索。适合处理复杂问题,处理需要多人协作的问题。总的来说,从宏观上把握、整体上合理分析,需要面向对象的思路来分析整个系统,但是,具体到微观操作,仍然需要面向过程的思路来处理。二、什么是面向对象面向对象编程(Object-Oriented原创 2020-08-25 18:06:05 · 281 阅读 · 0 评论
分享