![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
以实战为线索,逐步深入Java开发各个环节,提升工程化编码能力和思维能力。
木头的木
这个作者很懒,什么都没留下…
展开
-
Java网络编程详解
第一章 网络编程入门1.1软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。1.2 网络通信协议**...原创 2020-04-13 21:31:49 · 141 阅读 · 0 评论 -
并发编程之线程基础
一、基础概念CPU核心数和线程数的关系:核心数:线程数 = 1:1;对于英特尔发布的超线程技术–>1:21.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)3.逻辑cpu数:一般情况下,逻辑cpu=物理CPU个数×每颗核数...原创 2020-04-10 21:29:34 · 141 阅读 · 0 评论 -
JVM调优
JVM调优主要就是调整下面两个指标停顿时间:垃圾收集器做垃圾回收中断应用执行的时间。-XX:MaxGCPauseMillis吞吐量:垃圾收集的时间和总时间的占比:1/(1+n),吞吐量为1-1/(1+n), -XX:GCTimeRatio = nGC调优步骤打印GC日志-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDat...原创 2020-04-09 17:29:25 · 2397 阅读 · 0 评论 -
缓冲流、转换流、序列化流
第一章 缓冲流1.1 概述缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次...原创 2020-04-08 21:39:41 · 97 阅读 · 0 评论 -
字节流、字符流
第一章 IO概述1.1 什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流...翻译 2020-04-07 22:37:45 · 92 阅读 · 0 评论 -
稀疏数组简单介绍及其处理方法的实现
1.定义稀疏矩阵可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组。如下图所示:2.稀疏数组的处理方法记录数组一共有几行几列,有多少个不同的值。把具有不同值得元素得行列及值记录在一个小规模的数组中,从而缩小程序得规模。3.应用实例3.1 二维数组转稀疏数组遍历原始的二维数组,得到有效数据的个数根据个数就可以创建稀疏数组将二维数组的有效数据存...原创 2020-04-07 19:01:42 · 909 阅读 · 0 评论 -
Lambda表达式
1 函数式编程思想概述面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想: 只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程2 冗余的Runnable代码传统写法当需要启动一个线程去完成...原创 2020-04-06 21:55:23 · 204 阅读 · 0 评论 -
线程池简介及基本运用
1 线程池思想概述我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。今天我们...原创 2020-04-06 21:51:19 · 147 阅读 · 0 评论 -
线程等待唤醒机制
1.1 线程间通信**概念:**多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。为什么要处理线程间通信:多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望...原创 2020-04-06 21:49:50 · 156 阅读 · 0 评论 -
线程安全、线程状态
第一章 线程安全及其实现方法1.1线程安全如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。以下将会以卖票作为示例:public class Thread_Safe_Demo implements Runnable { private static int ticket = ...原创 2020-04-05 23:09:54 · 125 阅读 · 0 评论 -
线程
第一章 多线程我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决.1.1 并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CP...原创 2020-04-04 23:40:43 · 92 阅读 · 0 评论 -
异常
第一章 异常1.1 异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异...原创 2020-04-03 20:25:34 · 92 阅读 · 0 评论 -
Map集合
第一章 Map集合1.1 概述Java提供了专门的集合类用来存放映射对象关系的对象,即java.util.Map接口。我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同。Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的(理解为夫妻)。每个元素...原创 2020-04-02 17:59:31 · 83 阅读 · 0 评论 -
JVM基本结构
1.JVM 基本架构2.区域作用tips:*Jdk1.6及之前:有永久代,常量池1.6在方法区*Jdk1.7:有永久代,但已经逐步“去永久代”,常量池1.7在堆*Jdk1.8及之后:无永久代,常量池1.8在元空间3.堆内存分代基本结构新生成的对象首先放到年轻代Eden区,当Eden空间满了,触发Minor GC,存活下来的对象移动到Survivor From区,Surviv...原创 2020-03-31 20:11:04 · 288 阅读 · 2 评论 -
JDBC简单介绍及其基本运用
JDBC:1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。2. 快速入门: * 步骤: 1. 导入...翻译 2020-03-27 19:25:21 · 179 阅读 · 0 评论 -
使用 Spring Cloud 搭建微服务 Demo
一、为什么要引入微服务首先我们先讲一下应用模式的演变过程:1. 单体应用在没有提出微服务的概念的时候,一个软件应用,往往会将应用所有功能都开发和打包在一起,那时候的一个B/S应用架构一般为:但是,当用户访问量变大导致一台服务器的时候,便添加加负载均衡,架构如下:后面发现把静态文件独立出来,通过CDN等手段进行加速,可以提升应用的整体相应,单体应用的架构就变成:对此可发现单体应用的...原创 2020-03-27 09:43:14 · 1057 阅读 · 0 评论 -
Linux上安装tomcat
1.Tomcat上传到linux上在Tomcat官网下载tar.gz压缩包,使用上传工具将文件上传到服务器(笔者采取的是sftp,sftp相较于ftp进行了一层加密处理,更为安全)。2.将上传的tomcat解压tar -zxcf apache-tomcat-8.5.53.tar.gz3.在tomcat/bin目录下执行 startup.sh./startup.shtip:注...原创 2020-03-22 22:56:51 · 73 阅读 · 0 评论 -
Java Collections的简单介绍与运用
1 常用功能java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序:打乱...翻译 2020-03-22 10:20:12 · 449 阅读 · 1 评论 -
Java List、Set集合的简单介绍与运用
这里将简单介绍Collection中的常用几个子类(java.util.List集合、java.util.Set集合)。一、List接口1.1 List接口简介java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过...翻译 2020-03-22 10:15:59 · 294 阅读 · 1 评论 -
Java 常见的数据结构
数据存储的常用结构有:栈、队列、数组、链表和红黑树。此处将进行简单介绍:栈栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。基本结构如下图所示:简单的说:采用该结构的集合,对元素的存取有如下的特点先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹夹,...原创 2020-03-22 09:52:47 · 329 阅读 · 1 评论 -
Java 泛型的简单介绍与运用
泛型1 泛型概述泛型:可以在类或方法中预支地使用未知的类型。在JDK5之后,新增了泛型(Generic)语法,让你在设计API时可以指定类或方法支持泛型,这样我们使用API的时候也变得更为简洁,并得到了编译时期的语法检查。tips:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。2 使用泛型的好处泛型的优点:将运行时期的Cla...翻译 2020-03-22 09:38:57 · 77 阅读 · 1 评论 -
Iterator迭代器的简单介绍与使用
1 Iterator接口集合遍历接口java.util.Iterator,Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。想要遍历Collection集合,那么就要获取该集合迭代器完...原创 2020-03-21 18:15:49 · 353 阅读 · 1 评论 -
Java Collection集合的简单介绍与运用
1 集合概述集合:集合是java中提供的一种容器,可以用来存储多个数据。集合与数组的区别:数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。2 集合框架集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集...原创 2020-03-21 17:43:56 · 400 阅读 · 1 评论 -
包装类的简单介绍与运用
概述Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:基本类型对应的包装类(位于java.lang包中)byteByteshortShortintIntegerlongLongfloatFl...翻译 2020-03-19 11:52:21 · 231 阅读 · 1 评论 -
Java StringBuilder类的简单介绍与运用
字符串拼接问题由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如: String str = "Hello"; str += "World"; System.out.println(s); //HelloWorld在API中对String类有这样的描述:字符串是常量,它们的值在创建后不能被更改。根据这句话分析我们的代码,其实总共产生...原创 2020-03-19 11:50:04 · 454 阅读 · 1 评论 -
Java System类的简单介绍与运用
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:public static long currentTimeMillis():返回以毫秒为单位的当前时间。public static void arraycopy(Object src, int srcPos, Object dest, int des...原创 2020-03-19 11:41:35 · 419 阅读 · 1 评论 -
Java 日期时间类的简单介绍及运用
Date类1.简介java.util.Date类 表示特定的瞬间,精确到毫秒。构造方法public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。tips...原创 2020-03-19 11:28:14 · 647 阅读 · 2 评论 -
Java Object类toString()、equals(Object obj)方法的使用
在此处对Object类中的toString()、equals(Object obj)进行简单记录:Object类1.简介java.lang.Object类是Java语言中的根类,即所有类的父类。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类, 那么默认则继承自Object类:public class TheClass/*extends Object*/ {...原创 2020-03-19 10:27:54 · 598 阅读 · 1 评论 -
类的加载、连接和初始化
本文将会介绍JAVA类的加载、连接和初始化知识,并且重点介绍Java反射的相关内容。1.类的加载、连接和初始化 系统课程在第一次使用某个类的时候加载该类,也可能采取预加载机制来加载某个类。1.1JVM和类注意:当调用Java命令启动运行某个Java程序时,该命令将会启动一个Java虚拟机进程,不管该Java程序有多么复杂,改程序启动了多少个线程,他们都处于该Java虚拟机进程里。...原创 2019-12-17 17:21:50 · 112 阅读 · 1 评论 -
java 队列的实现
1.循环顺序队列1.1接口package com.QueueArray.Inter;public interface QueueArrayInter { public boolean isEmpty(); public boolean isFull(); public void Enqueue(Object obj); public Object Dequeue()...原创 2019-11-13 11:35:00 · 246 阅读 · 0 评论 -
java 栈的实现
1.顺序栈的实现1.1接口package com.stack.inter;public interface OrderStack { public boolean isEmpty(); public boolean isFull(); public boolean Push(Object obj); public Object pop(); public Ob...原创 2019-11-13 11:29:16 · 305 阅读 · 1 评论 -
java 链表的实现
1.单链表的实现1.1 接口package com.LinkList.inter;public interface List { public boolean isEmpty() throws Exception; public int getLength() throws Exception; public void addNodeByIndex(int ...原创 2019-10-28 10:17:42 · 121 阅读 · 0 评论 -
java 实现顺序表结构
通过java实现顺序表1.接口类package com.listArray.inter;public interface List { public boolean isEmpty(); public void insert(int index,Object element) throws Exception; public Object remove (int i) t...原创 2019-10-28 10:10:54 · 825 阅读 · 2 评论 -
java环境配置
首先介绍一种常规方式:单击“计算机-属性-高级系统设置”,单击“环境变量”。在“系统变量”栏下单击“新建”,创建新的系统环境变量。(1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径(2)编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”(3...原创 2019-10-26 02:22:52 · 167 阅读 · 1 评论