Java语言系列教程
java基础
叶巨岩
自律是成功的必要因素
展开
-
JVM基础到实战05-垃圾收集器
1.serial垃圾收集器(串行)运行过程:特点:1,是一个单线程的垃圾回收器,stop the word,进行垃圾回收时,必须暂停其他所有的用户线程2,使用场景,多用于桌面应用,client的垃圾回收器3. 桌面应用内存小,进行垃圾回收的时间比较短,只要不频繁的停顿就可以2.ParNew垃圾回收器是什么?ParNew仅仅是serial回收器的多线程版本运行过程:...原创 2019-07-31 23:38:02 · 210 阅读 · 0 评论 -
JVM基础到实战08-图形化分析工具jconsole
jconsole是JDK自带的一个图形化的jvm分析工具我们启动一个项目,直接在cmd窗口下输入jconsole,发现会跳出一个jconsole的程序界面可以看到,他直接提供了可选择的本地进程,以及需要输入账号密码的远程进程,而不是像前面使用jmap,和jstack分析的时候,需要我们先用jps列出进程pid,我们选择本地应用 pid2976连接成功后,进入jconsole的主...原创 2019-08-15 13:27:02 · 309 阅读 · 0 评论 -
JVM基础到实战09-图形化分析工具jvisualvm
jvisualvm是jdk1.6之后提供的一个图形化的vm内存分析工具1.在IDEA中安装visualvm Launcher,方便我们启动项目的时候直接启动jvisualvm程序。在插件中搜索visualvm Launcher,如果没有,就去插件仓库搜索安装,然后重启IDEA2.配置visualVM3.应用配置退到主界面会发现,上方出现两个带橘黄色图标的启动和debug按钮...原创 2019-08-15 13:39:19 · 355 阅读 · 0 评论 -
JVM基础到实战03-垃圾回收概念
1.为什么要进行垃圾回收?不回收会造成内存泄漏2.什么时候执行回收?达到一定的比例,或者申请的内存超出了空闲内存,触发回收3.如果是你,如何设计垃圾回收算法?就是回收哪些类型的对象回收栈中没有指针指向对象,断开连接的对象4.如何判定对象存活呢?引用计数法:堆中的每个对象实例都一个引用计数器,每当一个对象被创建时,且将该对象分配给一个变量,该变量数设置为1,当任何变量...原创 2019-07-31 00:29:01 · 117 阅读 · 0 评论 -
JVM基础到实战04-垃圾回收算法
上一章讲了对象的存活分析,分析完对象是否存活后,我们就需要执行相应的垃圾回收过程,至于选择哪种垃圾回收算法呢,目前主要有以下三种垃圾回收算法:1.标记清除算法过程:标记--》清除产生的问题:1.标记和清除的过程效率都不高2.空间问题,标记清除后会产生大量的不连续内存碎片,空间碎片越多会导致以后程序在在分配较大的对象实,无法找到足够的连续内存二不得不提前出发一次垃圾收集动作。...原创 2019-07-31 00:37:01 · 142 阅读 · 0 评论 -
JVM基础到实战01-JVM内存区域分布概述
思考:java优势巨大,为什么?1.java一次编译到处运行2.java具有完整的内存管理机制,不需要每new一个对象,写相应的内存回收代码JVM运行时数据区1.程序计数器是什么?程序计数器是一块较小的内存空间,可以看做是当前线程字节码的行号指示器线程是一个独立的执行单元,由cpu执行字节码解释器通过改变这个计数器的值来选取下一条需要执行的字节码指令,指令的循环,跳转...原创 2019-07-30 00:01:16 · 142 阅读 · 0 评论 -
JVM基础到实战02-java对象加载,结构,访问
思考:java对象是什么?java对象是类的一个实例,类是java对象模板java对象的加载顺序:一、Java对象如何申请内存呢?1.指针碰撞:使用区扩大,空闲区3缩小 步骤:分配内存,移动指针2.空闲列表:由于内存空间的占用情况并非均匀的,并不能按照指针平移的方式分配内存空闲列表中维护了内存中不连续的空闲内存的地址步骤:分配内存,修改空闲列表以上两种...原创 2019-07-12 00:30:08 · 94 阅读 · 0 评论 -
JVM基础到实战06-jvm内存自动分配原则
一、java堆的基本分配规则1.-对象主要分配在新生代的Eden区-如果启动了本地线程分配缓冲,按线程优先在TLAB上分配-少数情况下也可能直接分配在老年代中,比如较大的对象2.GC参数指定垃圾回收-Xms20M jvm初始内存-Xmx20M jvm最大内存-Xmn10M jvm年轻代大小这三个参数限制了java堆大小为20MB不可拓展,其中10MB分配给新生代...原创 2019-08-01 00:01:21 · 379 阅读 · 0 评论 -
JVM基础到实战07-JDK自带的jvm分析工具
java虚拟机自带的工具,将jdk的lib下的tools包解压后可以发现工具的源码,或者直接在bin目录下也能看到工具.exe执行文件1. jps这个命令和ps -ef |grep java有相似的用处jps是典型的jvm工具,查看jvm当前运行的项目的进程pid实践:运行一个springboot项目jps -v 展示当前的jvm环境jps -l 展...原创 2019-08-14 13:16:30 · 734 阅读 · 0 评论 -
类的实例化----工厂模式
一.静态工厂: 说明:工厂方法为static,直接生产对象实例 <!-- 静态化工厂的配置 -->a.新建一个工厂类StaticFactoryDemo,维护一个获取日期对象的方法getCalendarpackage com.jorian.demo;import java.util.Calendar;public class StaticFactoryDemo { pu...原创 2018-07-10 19:05:32 · 806 阅读 · 0 评论 -
java中,i = i++; 打印出i=0
解释:jvm在计算i++时会产生临时变量来接收i++的结果,此时相当于将i++的结果赋值到i,i的值被重新赋值了。测试代码:/** * @author: jorian * @date: 2020/1/13 22:32 * @description: this is description for the class */public class TestPrintf {...原创 2020-01-14 08:51:47 · 455 阅读 · 0 评论 -
使用IO流将指定目录下的指定格式文件导出到目标目录下的指定格式
/** * 场景:汇总某个路径下的指定格式的文件到一个统一的路径下,便于统一查看 * * 需求分析: * 读取指定目录下的文件列表, * 找出其中符合条件的所有文件, * 写入到指定的目标目录下 * * 思路: * 1.文件有深度,必须进行深度遍历 * 2.遍历的过程...原创 2018-07-23 16:17:41 · 2423 阅读 · 1 评论 -
javaday45_IO流5_装饰者模式、lineNember、字节流
1.内容:/** * 定义:装饰着设计模式: * 当堆一组对象的功能进行增强时,就可以使用该模式进行问题的解决,实质上是基于原来对象的,只是一种增强 * * * 装饰和继承都能实现一样的特点: * 进行功能的拓展增强 * * 有什么区别呢? * * Writer * |--TxtWriter原创 2017-04-10 23:09:17 · 213 阅读 · 0 评论 -
javaday49_IO流_深度遍历文件夹,递归手法的使用
一. 创建给定路径下的文件package com.jorian.text.httpClient;import java.io.File;import java.io.IOException;/** * 创建一个给定路径下的文件 * */public class creatFolder{ //定义 地址,文件名 private String path=nul...原创 2017-05-10 19:48:33 · 660 阅读 · 0 评论 -
javaday47_IO流_转换流的规律,指定编码表
一,转换流:InputStreamReader :字节到字符的桥梁 解码OutputStreamWriter:字符到字节的桥梁 编码流的操作规律:之所以要弄清楚这个规律,是因为开发时流对象太多,开发是不知道用哪个对象合适。想要知道开发时用到哪些对象,只要通过四个明确即可:1.明确源和目的(汇)四大体系选择源:Inp原创 2017-04-22 00:18:15 · 298 阅读 · 0 评论 -
javaday03_基本语法_条件体,循环体
1.if语句的学习package if_Demo;import java.util.Scanner;public class biaodashi {public static void main(String[] args) {int x=1;if(x>1){System.out.println("yes");}else{System原创 2017-03-22 21:15:46 · 234 阅读 · 0 评论 -
javaday50_IO流_Properties学习与应用场景
一.Properties基础方法学习package java_Studing_day50_IO流10;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.Fil原创 2017-05-10 23:36:52 · 412 阅读 · 0 评论 -
javaday51_IO流_IO综合练习
package java_Studing_day51_IO流11_综合练习;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.FilenameFilter;import jav原创 2017-05-17 20:42:10 · 482 阅读 · 0 评论 -
javaday01_Helloworld
1.永远的Helloworldpackage tarne.day0101;public class Helloworld {public static void main(String[] args){System.out.println("Helloworld");}}原创 2017-03-22 21:06:28 · 250 阅读 · 0 评论 -
javaday48_IO流_File类的使用,File过滤器,遍历文件目录
一.文件或者文件目录的封装package java_Studing_day48_IO流8_file;import java.io.File;public class fileDemo { public static void main(String[] args) {// TODO Auto-generated method stub原创 2017-05-09 23:51:02 · 319 阅读 · 0 评论 -
javaday53_IO流_文件分割与文件合并的综合应用
1.文件分割package java_Studing_day53_IO流13practice;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IO原创 2017-05-17 21:00:19 · 244 阅读 · 0 评论 -
javaday46_IO流6_字节流与设备录入
1.字节流复制文件的4中方式:package java_Studing_day46_IO流6_Byte;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundExcep原创 2017-04-12 23:15:38 · 187 阅读 · 0 评论