Java
何同学coding
加油!!!!!!
展开
-
实现Comparable接口的作用
文章目录Comparable接口的作用Comparable接口的作用API文档解释:此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。所有具有自然排序实现的Java类Comparable<T>有String,包装类,BigInteger测试Integer包装类:Integer类源码:public final class Integer extends Number implements Compara原创 2020-12-29 22:41:57 · 882 阅读 · 0 评论 -
Java枚举
文章目录Java枚举自定义枚举方法在 switch 中使用枚举类Java枚举Java 枚举是一个特殊的类,一般表示一组常量,使用 enum 关键字来定义。实际使用中,会用枚举替代常量,这样有什么好处:枚举方式定义的常量可以增强代码的可读性,允许进行编译时检查,预先记录可接受值的列表,并避免由于传入无效值而引起的意外行为。举例:Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色。我们统一将常用的颜色的常量放在一个枚举类型里面,避免了定义了常量。publ原创 2020-12-17 21:39:33 · 164 阅读 · 0 评论 -
栈
文章目录栈队列链表散列表栈队列链表散列表原创 2020-11-14 15:03:08 · 92 阅读 · 0 评论 -
负载均衡
文章目录负载均衡四层负载均衡与七层负载均衡对比四层负载均衡七层负载均衡负载均衡算法轮询均衡权重轮询均衡随机均衡权重随机均衡响应速度均衡最少连接数均衡处理能力均衡DNS响应均衡散列算法均衡IP地址散列URL散列LVS的原理及应用LVS的原理LVS数据转发LVS NAT模式LVS DR模式LVS TUN模式LVS FULLNAT模式Nginx反向代理与负载均衡upstream_moduleproxy_pass负载均衡什么是负载均衡?负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展原创 2020-11-06 18:46:28 · 382 阅读 · 1 评论 -
网络
文章目录网络OSI七层网络模型物理层数据链路层网络层传输层会话层表示层应用层TCP/IP四层网络模型网络接口层网络层传输层应用层网络在计算机领域中,网络是信息传输、接收、共享的虚拟平台,将各个点、面、体的信息联系到一起,从而实现这些资源的共享。在大型分布式系统中,网络起着至关重要的作用。相关知识点(a)网络7层架构(b)TCP/IP、HTTP和CDN的原理OSI七层网络模型网络的七层架构从下到上主要包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。物理层主要定义物理原创 2020-11-04 09:39:32 · 270 阅读 · 0 评论 -
什么是AQS
文章目录AQSAQS的原理state:状态AQS共享资源的方式AQSAQS(Abstract Queued Synchronizer)是一个抽象的队列同步器,通过维护一个共享资源状态(Volatile Int State)和一个先进先出(FIFO)的线程等待队列来实现一个多线程访问共享资源的同步框架。AQS的原理AQS为每个共享资源都设置一个共享资源锁,线程在需要访问共享资源时首先需要获取共享资源锁,如果获取到了共享资源锁,便可以在当前线程中使用该共享资源,如果获取不到,则将该线程放入线程等待队列原创 2020-11-01 10:40:13 · 571 阅读 · 0 评论 -
ABA问题
文章目录什么是CAS什么是ABA问题什么是CASCAS(Compare And Swap)指比较并交换。CAS算法CAS(V, E, N)包含3个参数,V表示要更新的变量,E表示预期的值,N表示新值。在且仅在V值等于 E值时,才会将V值设为 N,如果 V值和 E值不同,则说明已经有其他线程做了更新,当前线程什么都不做。最后,CAS返回当前V的真实值。CAS的特性:乐观锁CAS操作采用了乐观锁的思想,总是认为自己可以成功完成操作。在有多个线程同时使用CAS操作一个变量时,只有一个会胜出并原创 2020-10-29 12:22:00 · 692 阅读 · 0 评论 -
Java中的线程调度
文章目录抢占式调度协同式调度Java线程调度的实现线程让出 CPU 的情况抢占式调度抢占式调度指每个线程都以抢占的方式获取CPU资源并快速执行,在执行完毕后立刻释放CPU资源,具体哪些线程能抢占到CPU资源由操作系统控制,在抢占式调度模式下,每个线程对CPU资源的申请地位是相等,从概率上讲每个线程都有机会获得同样的CPU执行时间片并发执行。抢占式调度适用于多线程并发执行的情况,在这种机制下一个线程的堵塞不会导致整个进程性能下降。协同式调度协同式调度指某一个线程在执行完后主动通知操作系统将CP原创 2020-10-28 12:12:00 · 380 阅读 · 0 评论 -
Java并发关键字
文章目录CountDownLatch(线程计数器)CyclicBarrier(循环屏障)CountDownLatch(线程计数器)CountDownLatch 类位于 java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执行,此时就可以利用 CountDownLatch来实现这种功能了。CountDownLatch基于线程计数器来实现并发访问控制,主要用于主线程等待其他子线程都执行完毕后执行相关操作。其使原创 2020-10-27 18:35:31 · 399 阅读 · 0 评论 -
如何在两个线程之间共享数据
文章目录前言方法一方法二前言Java 里面进行多线程通信的主要方式就是共享内存的方式。共享内存主要有三个关注点:可见性、有序性、原子性。Java内存模型(JVM)解决了可见性和有序性的问题,而锁解决了原子性的问题。在理想情况下,我们希望做到同步和互斥来实现数据在多线程环境下的一致性和安全性。常用的实现多线程数据共享的方式有将数据抽象成一个类,并将对这个数据的操作封装在类的方法中;将Runnable对象作为一个类的内部类,将共享数据作为这个类的成员变量。方法一将数据抽象成一个类,并将对这个原创 2020-10-26 21:52:39 · 6941 阅读 · 3 评论 -
Java并发编程(Java阻塞队列)
文章目录Java阻塞队列Java阻塞队列队列是一种只允许在表的前端进行删除操作,而在表的后端进行插入操作的线性表。阻塞队列和一般队列的不同之处在于阻塞队列是“阻塞”的,这里的阻塞指的是操作队列的线程的一种状态。在阻塞队列中,线程阻塞有如下两种情况。...原创 2020-10-25 17:03:26 · 353 阅读 · 0 评论 -
Java并发编程(线程上下文切换)
文章目录线程上下文切换进程上下文寄存器程序计数器PCB:切换桢上下文切换引起线程上下文切换的原因线程上下文切换巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务,任务的状态保存及再加载, 这段过程就叫做上下文切换。时间片轮转的方式使多个任务在同一颗 CPU 上执行变成了可能。进程(有时候也称做任务)是指一个程序运行的实例。在一个进程内部可以有多个线程在同时运行,并与创建它的进程共享同一地址空间(一段内存区域)原创 2020-10-24 23:15:10 · 788 阅读 · 0 评论 -
Java并发编程(Java中的锁)
文章目录Java锁乐观锁悲观锁自旋锁自旋锁的优缺点自旋锁的时间阈值synchronizedsynchronized的作用范围Synchronized 核心组件synchronized的用法简介Java锁Java锁的作用?Java中的锁主要用于保障多并发线程情况下数据的一致性。怎样保障数据的一致性?在多线程编程中为了保障数据的一致性,我们通常需要在使用对象或者方法之前加锁,这时如果有其他线程线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会进入阻塞队列等待原创 2020-10-24 00:04:15 · 1098 阅读 · 1 评论 -
Java并发编程(线程 的生命周期和基本方法)
文章目录线程的生命周期(状态)新建状态(NEW)就绪状态(RUNNABLE)运行状态(RUNNING)阻塞状态(BLOCKED)线程死亡(DEAD)终止线程的4种方式线程的生命周期(状态)当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead) 5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 独自运行,所以 CPU 需要在多条原创 2020-10-21 16:00:53 · 311 阅读 · 1 评论 -
Java并发编程(线程池原理)
文章目录线程池的工作原理线程复用线程池的核心组件和核心类线程池工作流程线程池拒绝策略1.AbortPolicy2.CallerRunsPolicy3.DiscardOldestPolicy4.DiscardPolicy5.自定义拒绝策略5种常用的线程池线程池的工作原理为什么要有线程池?Java线程池主要用于管理线程组及其运行状态,以便Java虚拟机更好地利用CPU资源。什么是线程池?线程池其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作, 无需反复创建原创 2020-10-19 21:27:04 · 222 阅读 · 0 评论 -
Java并发编程(线程)
文章目录并发与并行进程与线程线程的创建方式继承Thread类实现Runnable接口通过ExecutorService和Callable并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的。而在多个 CPU 系统中,原创 2020-10-18 22:11:25 · 146 阅读 · 2 评论 -
Java集合
文章目录前言一、List集合:可重复1.ArrayList集合2.LinkedList集合3.Vector集合二、Queue三、Set集合:不可重复1.HashSet 集合:HashTable实现,无序2.TreeSet集合:二叉树实现3.LinkedHashSet集合:HashTable实现数据存储,双向链表记录顺序四、Map集合1.HashMap:数组+链表存储数据,线程不安全2.ConcurrentHashMap:分段锁实现,线程实现3.HashTable:线程安全4.TreeMap:基于二叉树数据结原创 2020-10-16 09:15:01 · 315 阅读 · 1 评论 -
数据库连接池
数据库连接池前言一、 DBCP连接池使用步骤1.导入jar包2.具体实现代码二、总结前言数据库连接是一种关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。一、 DBCP连接池DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池。DBCP可以直接的在应用程序中使用。使用步骤1.导入jar包commons-dbcp-1.4.原创 2020-09-06 09:15:15 · 369 阅读 · 0 评论 -
JavaSE 复习总结
JavaSE 复习总结:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200830182627886.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNDY2Nzg4,size_16,color_FFFFFF,t_70#pic_center)...原创 2020-08-30 18:37:26 · 126 阅读 · 0 评论 -
注解和反射
注解和反射一、注解1.常见内置注解2.元注解3.自定义注解二、反射1.引入库2.读入数据总结一、注解Annotation是从JDK5.0开始引入的新技术1.常见内置注解@Override 重写的注解//@Override 重写的注解 @Override public String toString() { return super.toString(); }@Deprecated 不推荐程序员使用,但是可以使用,或者存在更好的方式//@原创 2020-08-27 22:33:03 · 359 阅读 · 0 评论 -
Java 版贪吃蛇小游戏
贪吃蛇小游戏简述实现思路1.绘制静态游戏界面2.绘制可以移动的蛇3.随机生成食物,判断失败条件,积分系统代码分享游戏图片项目打包简述实现思路1.绘制静态游戏界面需要用到Java的GUI编程,用到JFrame类,它是一个容器,允许程序员把其他组件添加到它里面。如下图所示,就是我们简易的游戏界面。2.绘制可以移动的蛇首先,可以把贪吃蛇运动的区域看成一个网格,蛇头可以上下左右移动,身体朝原来蛇头位置移动。运动起来的话,需要用到Timer类来进行定时调用,不停的移动蛇的坐标和重新绘制蛇来达到蛇可以运原创 2020-08-20 12:44:25 · 474 阅读 · 0 评论