java
文章平均质量分 56
拿了桔子跑啊1
美人鱼的眼泪是一个连伤心都透明的世界
展开
-
java中的反射应用
反射我们先创建一个Student类出来。注意类中的成员变量、构造方法、成员方法公共还是私有package com.reflect;public class Student { //成员变量 public String name;//公共 private int age;//私有 //构造方法 public Student() { super(); // TODO Au...原创 2019-09-23 11:46:23 · 3563 阅读 · 12 评论
-
@Configuration的代理保证bean单例
AppConfig是一个配置类,任何一个类都可以被指定成为配置类,但是这个类并不一定需要加@Configuration注解,这个注解的作用就是能够是AppConfig能够产生一个代理对象,确保AppConfig类中@Bean创建的bean是单例的,如果没有AppConfig没有@Configuration就不是代理对象,那么出现@Bean方法相互调用会使单例原则被破坏。有了思路去看看,到底是怎么做的,其实就是在ConfigurationClassPostProcessor bean工厂后置处理器中进行的。原创 2023-04-10 10:20:00 · 568 阅读 · 0 评论 -
spring解决循环依赖思路
第三级:singletonFactories Map原创 2023-03-27 10:46:48 · 836 阅读 · 0 评论 -
redis使用大概问题链
突发性热点缓存重建导致系统压力暴增(例如:冷门商品321上连接大量请求到缓存没有查到,同时去查数据库,又同时设置缓存(缓存重建))–设置、更新 缓存数据时,也去加分布式锁(设置说明肯定是查询了没有才设置哦,所以这个就是让查询和更新串行了)有个数据数据库也被干掉了,大量请求过来后,穿透缓存和数据库(缓存穿透巧记:缓存和数据库都被穿‘透’了)大量数据同时设置缓存,那么会同时失效,此时会击穿数据库 (缓存击穿(巧记:只打穿了缓存))–重建缓存时加锁(但是锁中要先查一遍缓存,DCL机制)缓存没有过期时间资源耗尽。原创 2023-03-20 09:51:07 · 205 阅读 · 0 评论 -
线程池源码和CompletableFuture使用总结
线程池源码和CompletableFuture使用总结原创 2023-02-28 19:06:15 · 764 阅读 · 0 评论 -
AQS、ReentrantLock源码解读
AQS、ReentrantLock源码解读原创 2023-02-28 18:53:37 · 89 阅读 · 0 评论 -
订单技改-模版方法模式
模版方法原创 2023-02-24 18:29:42 · 100 阅读 · 0 评论 -
我自己的抛异常的工具类
我自己的抛异常的工具类原创 2022-08-18 17:24:35 · 182 阅读 · 0 评论 -
【写福字】
写福字素材代码import java.awt.*;/*字体工具类*/public class FontUtil { public static void drawWord(Graphics g, String str, Color color, int size, int x, int y, String font) { g.setColor(color); g.setFont(new Font(font, Font.BOLD, size));原创 2022-02-11 10:47:26 · 279 阅读 · 0 评论 -
AQS实现原理-AbstractQueuedSynchronizer原理解析
文章目录模板方法模式AQS中的模板方法模式AQS是什么自己实现一个独占式的AQS的Lock锁AQS结构同步队列中的Node节点主要内容如下节点加入和退出同步队列过程Condition的原理和作用独占式AQS-获取锁源码解析独占式AQS-释放锁源码解析ReentrantLock原理可重入实现原理公平锁实现原理模板方法模式由于AQS是采用了模板方法模式,所以先了解学习设计模式中的模板方法模式。官方解释模板方法模式:定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定原创 2020-08-10 19:47:55 · 431 阅读 · 0 评论 -
深入理解单例模式
本文主要介绍java的单例模式,以及详细剖析静态内部类之所以能够实现单例的原理。OK,废话不多说,进入正文。首先我们要先了解下单例的四大原则:1.构造私有。2.以静态方法或者枚举返回实例。3.确保实例只有一个,尤其是多线程环境。4.确保反序列换时不会重新构建对象。我们常用的单例模式有:饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式,我们来逐一分析下这些模式的区别。1.饿汉模式:public class SingleTon{ private static SingleT转载 2020-07-27 14:25:18 · 408 阅读 · 0 评论 -
java线程池学习总结
利用Executors创建不同的线程池满足不同场景的需求newFixedThreadPool(int pThreads)指定工作线程数量的线程池newCachedThreadPool()处理大量短时间工作任务的线程池,(1) 试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;(2) 如果线程闲置的时间超过阈值,则会被终止并移出缓存;(3) 系统长时间闲置的时候,不会消耗什么资源newSingleThreadExecutor()创建唯一的工作者线程来执行任务,如果线程异常结束,原创 2020-07-27 11:49:15 · 316 阅读 · 0 评论 -
synchronized深入理解和探究
synchronized线程安全问题的主要原因是:➢ 存在共享数据(也称临界资源)➢ 存在多条线程共同操作这些共享数据解决问题的根本方法:同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作互斥锁的特性互斥性:即在同一时间只允许一个线程持有某 个对象锁,通过这种特性来实现多线程的协调机制,这样在同-时间只有一个线程对需要同步的代码块(复合操作)进行访问。互斥性也称为操作的原子性。可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的原创 2020-07-26 10:42:00 · 415 阅读 · 0 评论 -
再谈java多线程
线程与进程进程正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。线程是进程中的单个顺序控制流,是一条执行路径一个进程如果只有一条执行路径,则称为单线程程序。一个进程如果有多条执行路径,则称为多线程程序。关系➢Java对操作系统提供的功能进行封装,包括进程和线程➢运行一个程序会产生一个进程,进程包含至少一个线程➢每个进程对应一个JVM实例,多个线程共享JVM里的堆➢Java采用单线程编程模型,程序会自动创建主线程➢主线程可以创建子线程,原创 2020-07-11 20:13:56 · 425 阅读 · 0 评论 -
day09(二)-ConcurrentHashMap原理-CAS
文章目录ConcurrentHashMap原理细节初始化添加元素扩容源码执行图ConcurrentHashMap原理我们都知道HashMap不是线程安全的,所以在处理并发的时候会出现问题。而HashTable虽然是线程安全的,但是是通过整个来加锁的方式,当一个线程在写操作的时候,另外的线程则不能进行读写。而ConcurrentHashMap则可以支持并发的读写。跟1.7版本相比,1.8版本又...转载 2020-04-12 18:38:42 · 564 阅读 · 0 评论 -
day09-HashMap原理-1.8优化
文章目录Hashmap底层数据结构HashMap原理初始化添加元素扩容机制源码执行图Hashmap底层数据结构jdk1.7之前,Hashmap底层数据结构是数组+链表实现的,1.8之后采用了红黑树对Hashmap进行了优化。jdk1.8后HashMap采用数组+链表+红黑树的数据结构。HashMap原理在1.7之前,HashMap底层采用数组加链表的数据结构,当在数据量大的时候,出现ha...原创 2020-04-12 14:21:05 · 247 阅读 · 0 评论 -
day08-ConcurrentHashMap原理-1.7
文章目录背景分段锁SegmentConcurrentHashMap原理初始化参数添加元素源码执行图背景HashMap线程不安全:在https://blog.csdn.net/ym15229994318ym/article/details/105436994中提到多线程环境下,使用HashMap进行put操作时存在丢失数据、死锁的情况,为了避免这种bug的隐患,官方建议使用Concurrent...原创 2020-04-11 18:15:30 · 150 阅读 · 0 评论 -
day07-HashMap原理-1.7死锁
Hashmap底层数据结构jdk1.7之前,Hashmap底层数据结构是数组+链表实现的,1.8之后采用红黑树对Hashmap进行了优化。数组使用一-段连续存储单元存储数据。对于指定下标的查找,时间复杂度为O(1),对于一般的插入删除操作, 涉及到数组元素的移动,其平均复杂度为O(n)链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的...原创 2020-04-10 18:10:05 · 1018 阅读 · 0 评论 -
java代码实现批量修改文件名称
今天一个同学在群里说让改500张图片的名称,要求名称不能重复,这种大分量,烦杂的操作,可以用学过的代码实现一下,代码很简单,但是确实是在生活中用到了程序。这是源文件下的文件写一个方法,获取文件夹下的文件,为每个文件重新命名,名称要求不重复采用uuid工具类实现。public class Demo { //获得不重复的文件名 public static String getUUID...原创 2020-03-05 18:28:58 · 843 阅读 · 0 评论 -
jdbc、反射
十七. jdbcjdbc & 增删改查 基础:参考博文:https://blog.csdn.net/ym15229994318ym/article/details/100853889jdbc、连接池、事务:参考博文:https://blog.csdn.net/ym15229994318ym/article/details/103059218十八. 反射参考博文:https...原创 2019-11-17 20:31:34 · 167 阅读 · 1 评论 -
java中的网络编程
十六. 网络编程网络编程三要素:IP地址、端口、协议IP地址的组成:网络号段+主机号段A类:第一号段为网络号段+后三段的主机号段一个网络号:256256256 = 16777216B类:前二号段为网络号段+后二段的主机号段一个网络号:256*256 = 65536C类:前三号段为网络号段+后一段的主机号段一个网络号:256IP地址的分类:A类 1.0.0.1—127.25...原创 2019-11-17 20:19:03 · 245 阅读 · 1 评论 -
java中的多线程
十五. 多线程多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。程序的执行其实都是在抢CPU的资源,CPU的执行权。多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。我们是不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随机性。进程和线程进程:正在运行的程序,是系统进行资源分配和调用的独立单位。 每一...原创 2019-11-17 18:43:46 · 390 阅读 · 2 评论 -
java文件操作与IO流
十三.文件操作1.构造方法:File(String pathname):根据一个路径得到File对象File(String parent, String child):根据一个目录和一个子文件/目录得到File对象File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象创建功能:public boolean crea...原创 2019-11-17 18:24:51 · 268 阅读 · 0 评论 -
java面向对象猜奖游戏编程
系统概述任务:模拟注册登录幸运抽奖的全过程主要功能:注册登录幸运抽奖技术点:变量、数组的使用面向对象基本操作电脑类这里注意一个生成范围型随机数的方法。生成随机幸运数字的类(生成min–max之间的随机数nextInt(MAX - MIN + 1) + MIN)import java.util.Random;/** * 生成随机幸运数字的类(生成min--max之...原创 2019-10-15 16:54:53 · 530 阅读 · 4 评论 -
面对对象和数组学习——学生管理系统
面对对象和数组学习——学生管理系统定义学生类一个类,包含成员变量、构造方法和成员方法(属性对应的set/get方法和其他成员方法)/** * 定义一个Student类{学号、姓名、年龄、性别} * * @author * */public class Student { private int sid;//编号 private String sname;//姓名 pri...原创 2019-10-02 16:32:05 · 295 阅读 · 0 评论 -
快速排序、插入排序、冒泡排序、选择排序
排序算法总结我们先写一个交换方法,减少代码量private static void swap(int a, int b) { int swap = a; a = b; b = swap;}冒泡排序原理形象的把排序过程比喻成水中的泡泡向上冒,它重复的走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序不符合我们的规定,那么进行交换。重复的走访直到没有相邻元素要进行交换...原创 2019-09-28 00:10:06 · 300 阅读 · 6 评论 -
java中的集合总结
集合总结单列结合(Collocation)List 有序可以重复ArrayList:ArrayList是查询快,增删改慢的一种集合,线程不安全,所以效率较高,底层数据结构是数组Vector:Vector是查询快,增删改慢的集合,线程安全,但是效率低,底层数据结构是数组LinkedList:LinkList是查询慢,增删改快的集合,线程不安全,效率高,底层数据结构是链表set 无序不...原创 2019-09-18 00:25:15 · 825 阅读 · 4 评论
分享