随笔分类 -  Java

算法 - 螺旋矩阵 II
摘要:59. 螺旋矩阵 II 这道题困扰了我很久,一些边界值控制比较繁琐,但是偶然发现按照以下方法写,在Leetcode可以AC。 class Solution { public static int[][] generateMatrix(int n) { int num = 1; int x = 0;
28
0
0
@Required 注解的作用
摘要:@Required注解作用于Bean的setter方法上,用于检查一个Bean的属性的值在配置期间是否被赋值
297
0
0
JVM架构
摘要:Class Loader:类加载器,把类加载到JVM内部的JMM区域 Runtime Data Area: JMM内存空间结构模型 Execution Engine:执行引擎 Native Interface:融合多种开发语言的库,提供接口给执行引擎使用
34
0
0
JVM哪些区域可能发生OutOfMemoryError?
摘要:1. 堆内存区域 当堆内存不足时会抛出java.lang.OutOfMemoryError:Java heap space异常 2. 虚拟机栈和本地方法栈 当递归深度过深时会抛StackOverFlowError异常 当扩展栈空间的失败时会抛出OutOfMemoryError异常 3. 元空间 元空
93
0
0
如何设计一个秒杀系统?
摘要:如何设计一个秒杀系统?秒杀系统主要是有三个特点高性能、高并发、高可用。 从一次秒杀的流程出发,考虑秒杀系统的三个特点,那么就可以设计一个秒杀系统。 1. 秒杀页面获取 优化方案: 动静分离。将页面的静态资源等部署到Nginx或者CDN,这样可以加快秒杀页面获取。 静态资源合并获取。通过将多个请求合并为单个请求,一次获取多
1704
6
3
Lombok - 快速入门
摘要:1. val 自动识别循环变量类型 本地变量和foreach循环可用。 import java.util.ArrayList; import java.util.HashMap; import lombok.val; public class ValExample { public String e
122
0
0
谷粒商城 - 项目笔记
摘要:本项目gitee地址 一、 环境搭建 1. 虚拟机安装 1.1 安装 Vmware,并在其基础上安装 CentOS7 2. 安装Docker 2.1 安装Docker参考我的博文 Docker搭建大数据集群 2.2 docker 容器开机自启 (可选 always、no) docker update
655
0
0
Java - 四种引用类型及应用场景
摘要:## 1. 强引用 new 一个对象的时候,就是强引用 ```java Object object = new Object(); ``` 只要强引用存在,垃圾回收就不会回收该对象,内存不足时会抛出OOM。 ## 2. 软引用 定义:非必须,但仍有用的对象。内存不足时才会回收。 软引用的使用 ```
355
0
0
Java - volatile
摘要:Java - volatile 1. volatile的特性 可见性。对于 volatile 变量的读和写,任意线程总是能够看到该volatile变量最新的值。 原子性。对于 volatile 变量的读和写操作具有原子性。(复合操作除外,如:num++)。 2. volatile的内存语义 当写一个
47
0
0
Java - happens-before
摘要:Java - happens-before JSR-133对 happens-before 关系的定义如下: 如果一个操作 happens-before 另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。 两个操作之间存在 happens-befor
47
0
0
JAVA - 如何判断一个类是无用的类
摘要:JAVA - 如何判断一个类是无用的类 方法区主要回收的是无用的类,那么如何判断一个类是无用的类的呢? 判定一个常量是否是“废弃常量”比较简单,而要判定一个类是否是“无用的类”的条件则相对苛刻许多。类需要同时满足下面 3 个条件才能算是 “无用的类” : 该类所有的实例都已经被回收,也就是 Java
139
0
0
JAVA - 死锁
摘要:JAVA - 死锁 死锁示例 public class LockTest { public static void main(String[] args) { Object resource1 = new Object(); Object resource2 = new Object(); new
33
0
0
JAVA - 类的加载过程
摘要:JAVA - 类的加载过程 JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。 加载 加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从ZIP
44
0
0
JAVA - error(错误)和exception(异常)有什么区别?
摘要:JAVA - error(错误)和exception(异常)有什么区别? error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
116
0
0
JAVA - 序列化的方式
摘要:JAVA - 序列化的方式 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 序列化是为了解决在对对象流进行读写操作时所引发的问题。 序
181
0
0
JAVA - 启动线程有哪几种方式
摘要:JAVA - 启动线程有哪几种方式 一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来
1391
0
0
JAVA - 线程从创建到死亡的几种状态都有哪些?
摘要:JAVA - 线程从创建到死亡的几种状态都有哪些? 新建( new ):新创建了一个线程对象。 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取 cpu 的使用权 。 运行
77
0
0
JAVA - 线程同步和线程调度的相关方法
摘要:JAVA - 线程同步和线程调度的相关方法 wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁
184
0
0
JAVA - 线程池
摘要:JAVA - 线程池 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁
29
0
0
JAVA - 启动一个线程是用run()还是start()?
摘要:JAVA - 启动一个线程是用run()还是start()? 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 start方法是多线程的、同步的 run方
354
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起