![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习
唯有一片炙热
永远不要停下前进的脚步。
联系方式:
QQ:1534974002
邮箱:xatu_lc@163.com
展开
-
Java8新特性-Stream流
参考博客https://www.cnblogs.com/CarpenterLee/p/6545321.html https://www.cnblogs.com/CarpenterLee/p/6550212.htmlhttps://zhuanlan.zhihu.com/p/92976229前两篇是很仔细的原理和用法,很好!写在最前面:stream并不是某种数据结构,它只是数据源的一种视图。这里的数据源可以是一个数组,Java容器或I/O channel等。正因如此要得到一个stream通常不原创 2020-09-10 15:31:45 · 396 阅读 · 0 评论 -
RestTemplate的常见使用
1.配置(注入) 由于RestTemplate没有被自动注入到容器中,所以需要自己注入。选其一就可以。@Configurationpublic class ConfigBean{ @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); }}@Configurationpublic class RedisConfig { @Bean ...原创 2020-06-28 15:40:04 · 862 阅读 · 0 评论 -
SpringBoot学习——MD5加密(DigestUtils工具类)
在使用Spring框架的时候,我们会对一些重要的密码进行加密可以使用MD5,其工具类是DigestUtils;DigestUtils相同名字的工具类有两个:1. Spring框架继承的:import org.springframework.util.DigestUtils; String inputMD = "deqwfdeqe"; DigestUtils.md5DigestA...原创 2020-02-25 23:42:49 · 15466 阅读 · 0 评论 -
前后端分离的发展
转载自:https://www.cnblogs.com/gdjk/p/11507690.html前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是...转载 2020-02-23 22:41:14 · 419 阅读 · 0 评论 -
Java并发编程实战读书笔记——第二章线程安全性
645132原创 2019-10-26 13:13:30 · 211 阅读 · 0 评论 -
Java 参数传参机制
Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”。也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。·基本数据类型参数的传值传递的是值的副本。副本改变不会影响原件。引用类型参数的传值传递的是值的副本。但是引用类型指的是“对象的地址“因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的...原创 2018-09-25 22:28:02 · 231 阅读 · 0 评论 -
Java继承树追溯
继承树追溯属性/方法查找顺序:(比如:查找变量h)1.查找当前类中有没有属性h2.依次上溯每个父类,查看每个父类中是否有h,直EeJObject到3.如果没找到,则出现编译错误。4.上面步骤,只要找到h变量,则这个过程终止。构造方法调用顺序:构造方法第一句总是: super()来调用父类对应的构造方法。所以,流程就是:先向上追溯到 Object,然后再依次向下执行类的初...原创 2018-09-26 13:43:57 · 1702 阅读 · 0 评论 -
变字符序列和不可变字符序列使用陷阱
package cn.liu.test;/** * 测试可变字符序列和不可变字符序列使用陷阱 * @author Dick * */public class StringBuilder3 { public static void main(String[] args) { /*使用String进行字符串的拼接*/ String str8 = ""; //本质上...原创 2018-11-19 16:13:37 · 328 阅读 · 0 评论 -
常见的三种排序:冒泡,选择,插入
1.冒泡排序:假设有一个大小为 N 的无序序列。冒泡排序就是要每趟排过程中通过两两比较,找到第 i 个小(大)的元素,将其往上排。package cn.liu.made;public class BubbleSort { public void BubbleSoft1(int[] a) { int temp=0; for(int i=0;i<a.length-1;i...原创 2018-11-17 23:40:02 · 215 阅读 · 0 评论 -
手工实现ArrayList功能
主要是参照JDK10的源码加了一些自己的理解,手动实现其底层代码逻辑。只是实现了其主要函数逻辑。package cn.liu.mycollection;import java.util.Arrays;/** * * 自定义实现一个ArrayList,体会底层原理。 *自己完善其他功能 * @author Dick * */public class MyArr...原创 2019-01-15 21:58:46 · 283 阅读 · 0 评论 -
手工实现HashMap
HashMap是Map接口的实现类。它的底层实现是:采用了哈希表。即:数组+单链表。类似这样的: 写在前面:1.HashMap中的主要变量: Node<k,v>[] table; //桶数组 ,Node<K,V>类型的数组,里...原创 2019-01-26 21:58:59 · 299 阅读 · 0 评论 -
手工实现LinkedList
https://blog.csdn.net/qq_40301026/article/details/86773133参照其底层代码,按照自己的理解实现了LinkedList的一些基本功能。如果对c和c++指针了解一下,理解起来非常快。package cn.liu.MyLinkedList;//结点public class Node { Node prevoius;//上一个节...原创 2019-01-16 16:38:58 · 234 阅读 · 0 评论 -
java异常机制Exception
java是采用面对对象来处理异常的。主要是: 1、抛出异常。在跑程序时,发生异常则把发生异常的方法生成一个对象,停止当前路径,并把异常对象交给JRE。 2、捕获异常。JRE在得到该异常后,寻找相应的代码来处理该异常。JRE从生成异常的方法开始回溯,直到找到相应的异常处理代码位置。 我们常用的是Exception。也是我们常遇到的,例...原创 2019-02-14 19:38:31 · 126 阅读 · 2 评论 -
java IO流——四大抽象类
IO所谓的四大抽象类就是: InputStream、OutputStream、Reader、Writer InputStream:字节输入流的父类,数据单位为字节。 常用方法:int rea...原创 2019-02-21 21:42:57 · 6779 阅读 · 0 评论 -
IO流的输入输出操作
IO流的所谓输入输出是站在程序的角度去看。文件数据到程序就是输入,反之就是输出。最基本(基础)的写法套路: 1.创建源(源文件) 2.选择流(FileInputStream、FileOutputStream) ...原创 2019-02-21 22:27:06 · 425 阅读 · 1 评论 -
IO文件拷贝
利用java的IO流实现文件的拷贝。思路:以程序为中转站的作用,对接输入流和输出流。便实现了文件的拷贝。也就是对上一篇博客两种流的结合。https://blog.csdn.net/qq_40301026/article/details/87869205 源文件存放在study02下,命名为:ta....原创 2019-02-22 12:14:17 · 448 阅读 · 0 评论 -
java容器(集合类)
主要是总结前一段时间自己对容器的学习。首先明白什么叫容器是干嘛的? 在Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 。(你可以把它想象成一个大的木桶里面装了有一定联系的很多东西。)一张构思图来说明一些基本常用的容器类。一、Map:一组成对的“键值对”对象,允许你使用键来查找值。它是映...原创 2019-02-17 18:37:05 · 595 阅读 · 0 评论 -
java泛型详解
泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍、总结了关于泛型的知识。先看下面的代码:List list = new ArrayList(); list.add("CSDN_SEU_Calvin"); list.add(100); for (int i = 0; i < list.size(); i++) { ...转载 2019-02-22 21:45:43 · 115 阅读 · 0 评论 -
java命名规范
一、命名规范1、 项目名全部小写2、 包名全部小写3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。如:public class MyFirstClass{}4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。如:int index=0; public void toString(){}5、 常量名全部...转载 2019-02-24 14:40:30 · 100 阅读 · 0 评论 -
IO流常用类的总结
主要对常用的相关IO进行总结,如果哪里不懂仔细查看API。可以从三个方面去看待IO流。 第一个从处理数据的类型去看可分为:字节流,字符流,转换流。 第二是从流向去看分为:输出和输入流 ...原创 2019-03-05 20:14:18 · 370 阅读 · 0 评论 -
RandomAccessFile——分割文件
遇到如下问题,源文件流大小为88888byte,缓冲数组大小为1024byte,就意味着每次可以得到源文件的1024个byte。但我要对文件分块,想多个地方下载,只要记住每次的位置最后就可以拼接回去。 我每次实际想要拿1088个byte 。 如何解决?只要第一次把缓冲数组1024byte拿走,缓冲数组再去缓冲,第二次再去缓冲数组拿1088-1024个,...原创 2019-03-05 22:57:57 · 922 阅读 · 0 评论 -
Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码:1 String str1 = new String("hello");2 String str2 = new String("hello");3 4 System.out.println(str1==str2);5 System.out.println(str1.equals(st...转载 2019-03-02 21:44:20 · 130 阅读 · 0 评论 -
No enclosing instance of type ObjectTest is accessible. Must qualify the allocation with an enclosin
刚刚写代码运行出错, 报的问题:No enclosing instance of type ObjectTest is accessible. Must qualify the allocation with an enclosing instance of type ObjectTest (e.g. x.new A() where x is an instance of ObjectTest...原创 2019-02-27 12:24:08 · 611 阅读 · 0 评论 -
commons-io的下载和使用
我们常常要用到许多jar,如何获取和使用?以commons-io为例。首先上网址:http://www.apache.org/ 往下拉: 点击commons,选择IO 点击Download: ...原创 2019-03-06 21:09:24 · 12168 阅读 · 2 评论 -
java中创建线程常用的三种方式
在java中一般比较常用的创建线程的方式有三种:1.Thread class -------->继承Thread类2.Runnable接口 -------->实现Runnable接口3.callable接口 -------->实现callable接口接下来一一介绍和对比-----------------------------------...原创 2019-03-09 21:16:18 · 355 阅读 · 0 评论 -
多线程的五大状态
线程的五大状态: 线程从创建、运行到结束总是处于下面五个状态之一 1.新生状态: 对象一旦建立就处于新生状态(Thread st = new Thread();)。当一个线程处于新生状态时,程序还没有开始运行线程中的代码2.就绪状态: 线程建立后处于新生状态,后就...原创 2019-03-10 09:06:56 · 1003 阅读 · 0 评论 -
线程的优先级
Java里面可以自己设定线程的优先级,注意的是此处的优先级和操作系统里面的优先级有些区别。操作系统里面学的线程优先级是可以按优先级高和低去被CUP调用,但JAVA里面的线程优先级只是让此线程获得CPU调度的概率增加。举一个例子就像买彩票一样,你的优先级高只是你中奖概率大,并不代表你能中奖的道理一样。 1.优先级可以自己在1到10的范围去指定,数字越高代表优先级越高。其中...原创 2019-03-10 23:33:41 · 222 阅读 · 0 评论 -
线程和进程的基础概念
现在的大多系统都支持同时运行多个任务,比如我们的windows系统电脑可以登qq的同时听网易音乐,我们还可以愉快的码字。一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含多个顺序执行流,每个顺序执行流就是一个线程。 进程是表示资源分配的基本单位。而线程则是进程中执行运算的最小单位,即执行处理机调度的基本单位。关于“线程”和“进程”的区...原创 2019-03-11 12:14:46 · 97 阅读 · 0 评论 -
java线程同步问题
多线程运行会出现许多问题,这是由于CPU对线程的调度具有一定的随机性。看一个最经典的取钱的例子:如果是同一个账户,夫妻两个人共有的,妻子去Atm取钱,丈夫去柜台取钱。假设没有任何安全处理,两人都是同时取钱。就会出现安全问题。package cn.liu.syn;/** * 线程不安全:取钱 * @author Administrator * */public class U...原创 2019-03-11 13:01:35 · 251 阅读 · 0 评论 -
Java中遍历ConcurrentHashMap的四种方式
转载:https://blog.csdn.net/bruceleenumberone/article/details/74017923package other; import java.util.Iterator;import java.util.Map;import java.util.concurrent.ConcurrentHashMap; /** * Java中遍历M...转载 2019-03-19 23:04:30 · 2368 阅读 · 0 评论 -
任务定时调度——quartz
转载为:https://www.cnblogs.com/drift-ice/p/3817269.html废话的前言以前凭借年轻,凡事都靠脑记。现在工作几年后发现,很多以前看过、用过的东西,再次拿起的时候总觉得记不牢靠。"好记性不如烂笔头"应该是某位上了年纪的大叔的切肤之痛(仅次于上了年纪的难言之瘾)。我觉得这事得怪怪中国的应试教育,中国的考试方式就是要求把脑袋当数据库,以前中学那点知识...转载 2019-03-12 10:13:20 · 466 阅读 · 0 评论 -
深入Java内存模型——happenBefore
转载为:http://blog.csdn.net/ns_code/article/details/17348313happen—before规则介绍Java语言中有一个“先行发生”(happen—before)的规则,它是Java内存模型中定义的两项操作之间的偏序关系,如果操作A先行发生于操作B,其意思就是说,在发生操作B之前,操作A产生的影响都能被操作B观察到,“影响”包括修改了内...转载 2019-03-12 10:16:05 · 96 阅读 · 0 评论 -
TCP/IP四层模型与OSI参考模型
在上计算机网络时老师重点的讲解了OSI参考模型,这就是很明显的将一个比较难得问题把它分割为很小的一个一个的问题去解决。这是一个理想化的理论模型。本层给上层提供服务。它长这样:1、物理层: 主要功能:利用传输介质为数据链路层提供屋里连接,实现比特流的透明传输。 作用:实现相邻计算机节点之间比特流的透明传输,尽可能屏蔽掉具体传输介质与物理设备的差异。使其上面的数据链路层不必考虑...原创 2019-03-16 20:33:28 · 2289 阅读 · 1 评论 -
IP地址和InetAddress
首先要明确IP地址是IP地址,IP协议是一种协议协议,两个不一样。IP 地址IP 地址(Internet Protocol address, IP address)用来标识网络中的一个通信实体的地址,通信实体可以是计算机、路由器等等。互联网中每个服务器都要有自己的IP地址,而每个局域网的计算机要通信也要配置IP地址。IP地址分类: IPV4:32位...原创 2019-03-16 20:52:42 · 2936 阅读 · 0 评论 -
网络端口
IP地址是用来区分和识别一台计算机或是网络节点的。在一台计算机上有多款的应用软件,是如何区分这些软件或是应用程序?那就是端口了。此端口并不是说像USB接口一样在电脑上开了许许多多的端口,而是此端口是虚拟的一种概念。端口的范围:0--------65535端口的分类:(1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常...原创 2019-03-16 21:06:01 · 232 阅读 · 0 评论 -
传输协议TCP和UDP
UDP相当于写信,我只管写信,写好地址后就投递出去,不管对面收到不收到。TCP相当于打电话,A先拨打,B表实接到电话,A知道拨通后开始给B说话。TCPTCP是一种面向连接的,可靠的基于字节流的运输层的通信协议。特点: *面向连接 *点到点的通信 *高可靠 *占用系统资源多,效率低。三...原创 2019-03-17 18:20:13 · 407 阅读 · 0 评论 -
基于UDP协议实现一个简陋的一对一的聊天室
首先明白UDP相关知识:https://blog.csdn.net/qq_40301026/article/details/88623353https://blog.csdn.net/qq_40301026/article/details/88605688首先先实现一方接受,一方发送的能力:这是发送方:思路: 1.使用DatagramSocket指定端口,...原创 2019-03-17 18:46:15 · 1539 阅读 · 7 评论 -
设计模式——>单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。设计步骤:1.私有构造器2.提供私有的静态属性3.提供一个静态的共有方法...原创 2019-03-13 13:04:06 · 84 阅读 · 0 评论 -
Socket编写一个简易的聊天室
首先实现的功能:1.群聊。一个服务器端可以承载多个客户端(用户)来请求访问。服务器端对其请求做出处理,并转发给其他的客户端(用户)。2.私聊。因为是控制台输入输出,所以私聊格式为:@xxx: 。而且自己给私发服务器端不响应。思路:1.用ServerSocket模拟服务器端,并且开启多线程的调用accept()等待客户端连接。 2.Socket模拟客户端...原创 2019-03-21 23:24:05 · 3190 阅读 · 5 评论 -
基于TCP原理Socket编程模拟多个客户端访问服务端
利用TCP原理来模拟C/S模型,实现多个客户端访问服务器端。主要是通过在服务端实现多线程来实现。主要步骤: 服务器端:1.创建服务器端,指定端口。2.调用accept方法,.阻塞式等待客户端连接3.通过IO流拿到服务端的请求数据,并且对其分析。4.再通过IO流把分析好后的数据发送出去。(对客户端的响应)5.释放此次和这个客户端有关的资源。...原创 2019-03-18 20:57:09 · 4003 阅读 · 0 评论