摘要: JVM的运行数据区 方法区 不止是存“方法”,而是存储整个class文件的信息,JVM运行时,类加载器子系统将会提取class文件里面的类信息,并将其存放在方法区中。例如类的名称、类的类型(枚举、类、接口)、字段、方法等等。 堆(Heap) 每个应用都唯一对应一个JVM实例,而每一个JVM实例唯一对 阅读全文
posted @ 2023-03-18 22:23 残城碎梦 阅读(23) 评论(0) 推荐(0) 编辑
摘要: J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心。 Concurrent包下所有类底层都是依靠CAS操作来实现,而sun.misc.Unsafe为我们提供了一系列的CAS操作。 AQS框架是J.U.C中实现锁及同步机制的基础,其底层是 阅读全文
posted @ 2023-03-18 21:29 残城碎梦 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 策略模式 工厂方法模式 Builder模式 策略模式 策略模式就是一个接口下有多个实现类,而每种实现类会处理某一种情况。 比如我们在抽奖系统中,有多种奖励方式可供选择,比如积分,虚拟币和现金等。在存储时,我们必然会使用一个类似于type的字段用于表征这几种发放奖励的,那么这里我们就可以使用多态的方式 阅读全文
posted @ 2023-03-18 21:21 残城碎梦 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 单一职责原则——SRP 开闭原则——OCP 里式替换原则——LSP 依赖倒置原则——DIP 接口隔离原则——ISP 迪米特原则——LOD 单一职责原则 单一职责原则的定义是就一个类而言,应该仅有一个引起它变化的原因。也就是说一个类应该只负责一件事情。如果一个类负责了方法M1,方法M2两个不同的事情, 阅读全文
posted @ 2023-03-18 19:31 残城碎梦 阅读(24) 评论(0) 推荐(0) 编辑
摘要: MySQL的优化,是每一个程序员在做数据查询处理的时候,经常有的步骤。 那么SQL的优化有很多种,它可以是在硬件方面的,可以是在代码层面的,可以是在数据库方面的优化。下面就详细整理一下30种优化MYSQL的方案: 1)在读表的时候,尽可能的避免全表扫描,合理的根据业务需求,在where及order 阅读全文
posted @ 2023-03-18 19:30 残城碎梦 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 常犯的错误 public static void main(String[] args) { List<String> platformList = new ArrayList<>(); platformList.add("博客园"); platformList.add("CSDN"); platf 阅读全文
posted @ 2023-03-18 19:15 残城碎梦 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 为什么使用线程池 为每个请求创建一个新线程的开销很大 容易引起资源不足,造成浪费 使用线程池的风险 死锁、资源不足和线程泄漏。 死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死 阅读全文
posted @ 2023-03-18 19:12 残城碎梦 阅读(39) 评论(0) 推荐(0) 编辑
摘要: volatile的作用 通常情况下我们可以通过synchronized关键字来解决可见性、有序性及原子性问题,synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用synchronized来解决问题。 volatile关键字就是Jav 阅读全文
posted @ 2023-03-18 15:42 残城碎梦 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态)。 New:新建状态,当线程创建完成时为新建状态,即new Thread(…),还没有调用start方法时,线程处于新建状态。 R 阅读全文
posted @ 2023-03-18 13:21 残城碎梦 阅读(29) 评论(0) 推荐(0) 编辑
摘要: synchronized的基本使用 synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。 作用主要有三个: 确保线程互斥的访问同步代码 保证共享变量的修改能够及时可见 有效解决重排序问题 从语法上讲,synchronized总共有三种用法: 修饰普通方法 修饰静 阅读全文
posted @ 2023-03-18 12:08 残城碎梦 阅读(19) 评论(0) 推荐(0) 编辑
摘要: MySQL常用引擎有MyISAM和InnoDB,而InnoDB是mysql默认的引擎。MyISAM不支持行锁,而InnoDB支持行锁和表锁。 如何加锁 MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉 阅读全文
posted @ 2023-03-18 11:57 残城碎梦 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 普通索引:没有任何限制条件的索引,该索引可以在任何数据类型中创建。 唯一索引:使用UNIQUE参数可以设置唯一索引。创建该索引时,索引列的值必须唯一,但允许有空值。通过唯一索引,用户可以快速地定位某条记录,主键索引是一种特殊的唯一索引。 全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文 阅读全文
posted @ 2023-03-18 11:21 残城碎梦 阅读(11) 评论(0) 推荐(0) 编辑
摘要: MyISAM 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作对整个表加锁; 存储表的总行数; 一个MyISAM表有三个文件:索引文件、表结构文件、数据文件; 采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。 InnoDB 支持A 阅读全文
posted @ 2023-03-18 11:18 残城碎梦 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中的学号。 为经常需要排序、分组和联合操作的字段建立索引 经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。 阅读全文
posted @ 2023-03-18 10:24 残城碎梦 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计。 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程获取锁的顺序 阅读全文
posted @ 2023-03-18 09:55 残城碎梦 阅读(29) 评论(0) 推荐(0) 编辑
摘要: BeanFactory和FactoryBean的区别 BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。 但对FactoryBean而言,这个Bean 阅读全文
posted @ 2023-03-18 09:37 残城碎梦 阅读(18) 评论(0) 推荐(0) 编辑