Java
111
张小飘
这个作者很懒,什么都没留下…
展开
-
单元测试学习
一、Junit51.1 Maven<dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.6.2</version> <scope>test</scope></dependency>1.2注解学习@Te原创 2020-07-17 15:52:08 · 127 阅读 · 0 评论 -
Java内存模型
1 内存模型保证从Java语言到JVM执行class文件的标准1.1 jvm内存结构java虚拟机运行时数据区线程公共 : 方法区和堆线程私有 : 虚拟机栈、本地方法栈、程序计数器1.2 java 对象模型对象本身的存储模型包含 mark word 、对象头、实例数据1.2 java内存模型 (Java Memory Model JMM)1.2.1 为什么需要JMM是一组...原创 2020-05-04 11:48:33 · 118 阅读 · 0 评论 -
多线程详解
1 多线程1.1 实现多线程方式继承多线程和实现Runnable接口。1.2 启动线程start(),run()只是调用方法;start()重复调用将会抛出异常原创 2020-04-30 10:48:20 · 125 阅读 · 0 评论 -
Java正则表达式
一、概述Java.util.regex包中只有三个类 Matcher、Pattern、PatternSyntaxException二、简单使用import java.util.regex.Pattern;public class Test { public static void main(String[] args) { String content = "I ...原创 2019-12-03 13:08:57 · 201 阅读 · 0 评论 -
深入理解JVM二(拓展篇): 虚拟机性能监控与调优
一、JDK的命令行工具jps(jvm Process Status) : 虚拟机进程状况工具,列出正在运行的虚拟机进程,并显示执行主类名及唯一ID(LVMID)jps [options] [hostid-q 只输出ID,省略主类的名称-m 输出虚拟机进程启动时传递给主类main()函数的参数-l 输出主类的全名,如果是jar包,输出Jar路径-v 输出JVM启动时JVM参数j...原创 2019-10-16 19:04:07 · 170 阅读 · 0 评论 -
深入理解JVM五:线程安全与锁优化
并发处理的广泛应用使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因。一、线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以得到正确的结果,那这个对象时线程安全的。·1.1Java语言中的线程安全不可变final修饰的不可变对象(如果是一个对象,则需要...原创 2019-03-13 16:28:33 · 149 阅读 · 0 评论 -
深入理解JVM三:虚拟机执行子系统
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言的一大步一、无关性的基石实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Java在内的任何语言绑定,它只与Class语言这种特定的二进制文件格式所关联。任一门功能性语言都可以表示为一个能被Java虚拟机所接受的有效的Class文件。1.1 Class类文件的结构Class文件是一组以8位字节...原创 2019-03-25 20:00:33 · 206 阅读 · 0 评论 -
Redis
转载一、简介redis就是一个数据库,不过是在内存中的,存取速度快,被广泛用于缓存,分布式锁,支持事务,集群。高性能,高并发。1.1 为什么用redis缓存分为本地缓存和分布式缓存,以java为例,使用自带的map或者guava实现的是本地缓存,最主要特点是轻量和快速,声明周期随着jvm的销毁而结束。redis或memcached被称为分布式缓存,缓存具有一致性,缺点是要保持redis...原创 2019-03-27 10:45:11 · 172 阅读 · 0 评论 -
部署JavaWeb项目
一、软件与硬件环境spring mvc ssm,前端是饿了么框架Ubuntu 16.04 32位 1核 1GB 腾讯云服务器二、后台部署2.1 安装ftp参考自链接用于本地主机与云服务器传输文件安装 apt-get install vsftpd ftp备份配置文件 cp /etc/vsftpd.conf /etc/vsftpd_bk.conf修改配置文件 sudo vim /...原创 2019-05-29 19:38:55 · 384 阅读 · 0 评论 -
深入理解JVM四:Java内存模式与线程
并发处理的广泛应用是人类充分利用计算机运算能力的最有力武器。一、概述计算机的运算速度与它的存储和通信子系统速度出具太大,容易浪费。一个服务端同时对多个客户端提供服务则是另一个并发应用场景。二、硬件的效率与一致性如果存在一个计算任务依赖另外一个计算任务的中间结果,其顺序性并不能靠代码的先后顺序来保正——因为指令重排序优化三、Java内存模型Java虚拟机规范试图定义一种Java内存模型...原创 2019-03-06 21:50:28 · 214 阅读 · 0 评论 -
深入理解JVM二:垃圾收集器与内存分配策略
一、概述垃圾收集器(Garbage Collection, GC), 大部分人把这项技术当做Java语言的伴生产物,实际上,GC的历史更加久远。在Java语言中,线程隔离的三个区域内的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为会随着线程的结束而回收。Java堆和方法区则不一样,GC关注的也是这部分内存...原创 2019-02-24 15:58:30 · 190 阅读 · 0 评论 -
深入理解JVM一:Java内存区域与内存溢出异常
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人想出来一、运行时数据区域数据区分为两大类由所有线程共享的数据区:方法区和堆线程隔离的数据区:虚拟机栈,本地方法栈,程序计数器1.1 程序计数器程序计数器是一块小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。由于Java虚拟机的多线程是通过线程轮流并分配处理器执行时间的方式来实...原创 2019-02-21 14:36:20 · 162 阅读 · 0 评论 -
JAVA笔记二:对象与类
一、 对象类之间关系:依赖、聚合、继承。对象与对象变量(c++指针)更改器方法与访问器方法(不修改对象)java.time.LocalDate 8static LocalTime now()static LocalTime of(int year, int month, int day)int get Year()int getMonthValue()int getDayOf...原创 2018-10-27 14:30:00 · 121 阅读 · 0 评论 -
JAVA笔记三:继承
超类与子类继承格式public class Manager extends Emplyee{...}调用同名超类方法super.getSalary()原创 2018-11-07 11:28:44 · 160 阅读 · 0 评论 -
JAVA笔记四:接口、lambda表达式与内部类
一、接口1.接口不是类,而是对类的一组需求描述java.lang.Comparable&amp;amp;amp;amp;lt;T&amp;amp;amp;amp;gt;1.0int compareTo(T other) //小于other则返回负值,相等返回0,大于返回正值。java.util.Arrays 1.2static void sort(Object[] a)//数组中的元素必须属于实现了Comparable接口的类。java.lan...原创 2018-11-26 11:58:17 · 255 阅读 · 0 评论 -
JAVA笔记五:异常、断言、日志
一、异常1、异常分类异常对象都是派生于Throwable的一个实例。Java中异常层次结构如下图所示1.1 ErrorError类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。1.2 Exception在设计Java程序时,需要关注Exception层次结构:1.2.1 RuntimeException由程序错误导致的异常属于Runt...原创 2018-12-04 16:27:51 · 148 阅读 · 0 评论 -
JAVA笔记六:泛型程序设计
一、简单泛型类1.1 为什么要使用泛型程序设计泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。使得程序具有更好的可读性和安全性。1.2 定义简单泛型类一个泛型类就是具有一个或多个类型变量的类。public class Pair&amp;amp;amp;lt;T, U&amp;amp;amp;gt;{...}private T first;//类型变量使用大写形式且比较短,使用变量E表示集合的元素类型,K和V分别表示表的...原创 2018-12-07 19:31:10 · 216 阅读 · 0 评论 -
JAVA笔记七:集合
一、Java集合框架1.将集合的接口与实现分离2.Collection接口pubilc interface Collection&amp;amp;amp;amp;lt;E&amp;amp;amp;amp;gt;{ boolean add(E element); Iterator&amp;amp;amp;amp;lt;E&amp;amp;amp;amp;gt; iterator();}public interface Iterato原创 2018-12-19 11:17:22 · 126 阅读 · 0 评论 -
设计模式
策略模式策略模式定义了算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。多用组合,少用继承针对接口编程,不针对实现编程接口绑定实现类观察者模式观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。出版社 + 订阅者 = 观察者模式为了交互对象之间的松耦合设计而努力松耦合的设计之所以能让我们建...原创 2019-01-12 16:36:29 · 86 阅读 · 0 评论 -
JAVA笔记八:并发
多线程在较低的层次上拓展了多任务的概念:一个程序同时执行多个任务。多进程与多线程本质区别在于每个进程拥有自己的一整套变量,而线程则共享数据。一、线程多线程Thread(Runnable target)void start()//创建新线程应该调用该方法void run()中断线程中断线程并不意味着终止线程Runnable r = () -&amp;amp;amp;amp;amp;gt; { try{ wh...原创 2019-01-10 10:48:14 · 178 阅读 · 0 评论 -
JAVA笔记一:基础知识
基础知识一、注释1. //2. /* */3. /**XXXX自动生成文档*/二、JAVA数据类型原创 2018-10-24 16:47:20 · 266 阅读 · 0 评论