202108-31 Java实战之用Swing实现通讯录管理系统 一、系统介绍 1.系统功能登录系统查询信息新增信息修改信息删除信息2.环境配置JDK版本:1.8Mysql:8.0.133.数据库/*NavicatPremiumDataTransferSourceServer:MySQLSourceServerType:MySQLSourceServerVersion:80013SourceHost:localhost:3306SourceSchema:swing_addressTargetServerType:MySQLTargetServerVersion:80013FileEncod... 继续阅读 >
202108-31 在Java中Collection的一些常用方法总结 Java中Collection的常用方法1、add()向中添加元素add(100)自动装箱操作,实际上是放进去的一个对象,Integern=newInteger(100),实际上是把n放进了Collectionco=newArrayList();co.add(1);2、addAll(Collectionc)将指定集合中的所有元素添加到从集合中因为ArryList类中重写了equals()方法,所以两个集合比较相等。publicclasslxc{publicstaticvoidmain(String[]args){Collectionc=newArray... 继续阅读 >
202108-31 Java 将PPT幻灯片转为HTML文件的实现思路 本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件。这里的PPT幻灯片可以是.ppt/.pptx/.pps/.ppsx/.potx等格式。代码实现思路:【加载PPT幻灯片文件】-【保存为目标文件格式HTML】。代码比较简单。加载PPT文件时,可通过以下方法来加载不同格式的PPT文件,如图:关于jar导入:编辑代码前,在Java程序中引入freespire.presentation.jar文件,如图效果:**注意这里导入的是免费版的jar包。Java代码:im... 继续阅读 >
202108-26 浅谈Java实现分布式事务的三种方案 目录一、问题描述二、分布式事务2.1、什么是分布式系统2.2、什么是事务2.3、什么是本地事务2.4、什么是分布式事务三、如何进行分布式事务控制3.1、CAP理论3.2、分布式系统如果兼顾CAP四、分布式事务一致性解决方案4.1、两阶段提交协议(2PC)4.2、事务补偿TCC4.3、消息队列实现最终一致性一、问题描述用户支付完成会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库。由库存服务去维护库存数据库的信息。下图是... 继续阅读 >
202108-26 为什么在foreach循环中JAVA集合不能添加或删除元素 目录1.编码强制规约2.原因分析3.相关知识介绍3.1.什么是快速失败(fail-fast)?3.2.什么是安全失败(fail-safe)呢?1.编码强制规约在《阿里巴巴Java开发手册》中,针对集合操作,有一项规定,如下:【强制】不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。publicclassSimpleTest{publicstatic... 继续阅读 >
202108-26 教你用Java Swing实现自助取款机系统 一、系统介绍系统功能1.登录系统2.查询余额3.取款4.存款5.转账6.修改密码7.退出系统JDK版本:1.8存储数据形式:TXT存储数据二、系统展示1.登录页2.主页3.取款4.存款5.转账6.修改密码三、部分代码LoginJFrame.javapackageatmJFrame.myJFrame;importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;//登录界面继承MyJFramepublicclassLog... 继续阅读 >
202108-26 解析java中的condition 目录一、condition介绍及demo二、Condition接口 三、condition实现分析3.1、等待队列3.2、等待3.3、通知一、condition介绍及demoCondition是在java1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,阻塞队列实际上是使用了Conditi... 继续阅读 >
202108-26 分析java并发中的wait notify notifyAll 目录一、前言二、常见的同步场景2.1、设置一个判断的标志位2.2、线程的join方法2.3、使用闭锁CountDownLatch2.4、利用wait/notify优化标志位方法三、理解wait/notify/notifyAll3.1、锁池3.2、等待池3.3、notify和notifyAll的区别3.3.1、wait()3.3.2、notify()3.3.3、notifyAll()四、生产者与消费者模式五、总结一、前言java面试是否有被问到过,sleep和wait方法的区别,关于这个问题其实不用多说,大多数人都能... 继续阅读 >
202108-26 分析java中全面的单例模式多种实现方式 目录一、单例模式的思想二、单例模式的N种实现方式2.1、饿汉式(线程安全,可用)2.2、常量式(线程安全,可用)2.3、懒汉式(线程不安全,并发场景不可用)2.4、同步的懒汉式?(线程安全,可用,不建议使用)2.5、双重检查锁DCL(线程安全,大多数场景满足需求,推荐使用)2.6、静态内部类(线程安全,推荐使用)2.7、枚举单例(线程安全,不建议使用)2.8、另类实现——利用容器实现单例2.9、防止反射破坏单例2.10、防止序列... 继续阅读 >
202108-26 详解Java并发包基石AQS 目录一、概述二、基本实现原理2.1、如何使用2.2、设计思想三、自定义同步器3.1、同步器代码实现3.2、同步器代码测试四、源码分析4.1、Node结点4.2、独占式4.3、共享式五、总结一、概述AQS是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如ReentrantReadWriteLock,SynchronousQueue,FutureTask等等皆是基于AQS的。当然,我们自己也能利用... 继续阅读 >
202108-26 浅析从同步原语看非阻塞同步以及Java中的应用 目录一、从硬件原语上理解同步(非特指Java)1.1、基本硬件原语1.2、用一致性实现锁1.3、使用上面的旋转锁实现我们一个同步原语——栅栏同步二、Java中的原子性操作概述三、Java中的CAS操作概述3.1、模拟ABA问题3.2、使用AtomicStampedReference重新实现四、Java中的Unsafe类4.1、Unsafe类中的重要方法介绍4.2、Unsafe类的使用五、JUC中原子操作类AtomicLong的原理探究5.1、原操作类概述5.2、AtomicLong的源码一、从硬件原语上理解... 继续阅读 >
202108-25 详解Java并发包中线程池ThreadPoolExecutor 目录一、线程池简介二、ThreadPoolExecutor类2.1、ThreadPoolExecutor成员变量以含义2.2、ThreadPoolExecutor的参数以及实现原理2.3、关于一些线程池的使用类型2.4、ThreadPoolExecutor中的其他成员三、execute(Runnablecommand)方法实现四、工作线程Worker的执行4.1、工作线程Worker类源码分析4.2、runWorker方法的源码分析4.3、执行清理工作的方法processWorkerExit五、补充(shutdown、shutdownNow、awaitTermination方法)5.1... 继续阅读 >
202108-25 详解Java中的锁Lock和synchronized 目录一、Lock接口1、Lock接口和synchronized内置锁2、lock接口使用的一般形式3、Lock接口的方法4、相比于synchronized,Lock接口所具备的其他特性二、重入锁1、重入锁的概念2、ReentrantLock三、Synchronized1、Synchronized作用对象2、synchronized的实现原理3、锁的种类、升级和对比4、关于synchronized的其他说明一、Lock接口1、Lock接口和synchronized内置锁a)synchronized:Java提供的内置锁机制,Java中的每个对象都可以用... 继续阅读 >
202108-25 java内存优化的方法总结 1、不必要的自动装箱。自动装箱是将基础数据类型转换为相应的复杂类型,在HashMap的追加删除调查中充满了自动装箱问题,因此尽量避免HashMap代替SparseArray和ArrrayMap等问题。2、内存复用。资源复用:通用字符串、颜色、布局。视图复用:类似于RecyclerView的优化再利用。目标池:创建目标池,无需重复创建目标,类似于线程池,messae享受元模式。Bitmap对象复用:使用inBitmap属性,Bitmap解码器可以通知Bitmap解码器使用已经存... 继续阅读 >
202108-25 详解Java并发编程基础之volatile 目录一、volatile的定义和实现原理1、Java并发模型采用的方式2、volatile的定义3、volatile的底层实现原理二、volatile的内存语义1、volatile的特性2、volatile写-读建立的happens-before关系3、volatile的写/读内存语义三、volatile内存语义的实现1、volatile重排序规则2、内存屏障3、内存屏障示例四、volatile与死循环问题五、volatile对于复合操作非原子性问题一、volatile的定义和实现原理1、Java并发模型采用的方式a)线... 继续阅读 >
202108-25 详解Java中的反射机制和动态代理 目录一、反射概述二、反射之Class类2.1、初识Class类2.2、Class有下面的几个特点2.3、获取Class类实例2.4、关于包装类的静态属性2.5、通过Class类的其他方法获取三、Class类的API3.1、创建实例对象3.2、获取构造器3.3、获取成员变量并使用Field对象的方法3.4、获取方法并使用method3.5、获得该类的所有接口3.6、获取指定资源的输入流四、反射的应用之动态代理4.1、静态代理4.2、JDK中的动态代理五、动态代理与AOP简单实现5.1、AOP... 继续阅读 >