Java
文章平均质量分 53
非Fan的维森
四年外企后端开发工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring之手动配置bean和自动装配bean讲解
传统的手动配置bean相关的准备类Cat类代码public class Cat { public void action(){ System.out.println("miao~"); }}Dog类代码public class Dog { public void action(){ System.out.println("wang~"); }}Person类代码import org.springframewor原创 2020-06-24 10:43:07 · 921 阅读 · 0 评论 -
JavaWeb之三种创建Servlet方式讲解
本文介绍使用IDEA来实现Servlet的三种方法管理pom.xml依赖jar包<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http原创 2020-06-20 22:21:37 · 1013 阅读 · 0 评论 -
JDBC编程之连接Mysql数据库实现和SQL注入问题讲解(超详细!!!)
1.数据库驱动2.JDBCSUN公司为了简化开发人员对数据库的统一操作,提供了一个Java操作数据库的规范,俗称JDBC。这些规范的实现由具体的数据库生产商去做,开发人员只需要掌握JDBC接口的操作即可。1.所需要的包:java.sqljavax.sql需要导入一个数据库驱动包:mysql-connector-java-8.0.20.jar2.jdbc代码:package jdbcProject;//第一步:导入必须的包import java.sql.*;public cl原创 2020-06-14 21:32:25 · 420 阅读 · 0 评论 -
Java开发工具-lombok的介绍和使用
Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO),通过注解实现这一目的。在一般情况下,我们通常将一个类中的各个属性设置getter和setter等函数,如下所示(getter和setter):public class User { private int id; private String name; private String pwd; public int getId() {原创 2020-06-14 10:50:44 · 255 阅读 · 0 评论 -
数据结构学习之并查集
“并查集”是一种常见的数据结构,在互联网大厂的笔试题中也能看到它的身影。在刷LeetCode每日一题过程中,发现这种数据结构的妙处,参考LeetCode官方题解,写了这篇博文,供各位小伙伴们学习使用。并查集的相关知识并查集用于判断一对元素是否相连,它们的关系是动态添加的,这一类问题叫做【动态连通性】问题;支持【合并】与【查询是否在同一集合】的操作;底层结构为【数组】或者【哈希表】,用于表示【结点】指向【父结点】,初始化时指向自己;【合并】就是把一个集合的根结点指向另一个集合带的根结点,只要根结点原创 2020-06-08 10:29:02 · 219 阅读 · 0 评论 -
JVM-获取最大堆内存
public class Test { public static void main(String[] args) { //返回jvm试图使用的最大堆内存 long max=Runtime.getRuntime().maxMemory(); //返回jvm的总内存 long total=Runtime.getRuntime().totalMemory(); System.out.println("max="+max+"原创 2020-05-28 21:26:54 · 484 阅读 · 0 评论 -
Java网络编程之TCP文件上传
服务器类-TcpServerDemo02import java.io.*;import java.net.ServerSocket;import java.net.Socket;//TCP文件上传实现-服务器端public class TcpServerDemo02 { public static void main(String[] args) throws Exception { //1.创建服务 ServerSocket serverSocket=n原创 2020-05-22 20:04:58 · 237 阅读 · 0 评论 -
Java线程协作之线程通信问题
应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者生产出来的产品放入仓库。消费者从仓库中取走消费。如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止。如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,直到仓库中再次放入产品为止。这里的仓库我们可以理解为一个缓冲区,如下图所示:这种问题可以归为线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为条件。对于生产者,没有生产产品之前,要通知消原创 2020-05-22 16:13:03 · 208 阅读 · 0 评论 -
Java中的复制机制详讲
1. 什么是复制?复制就是将一个对象的引用复制给另外一个对象,目的是进行对象拷贝。通常有以下三种方式:直接赋值浅拷贝深拷贝2. 直接赋值复制直接赋值。在Java 中,A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是说a1 和a2 指向的是同一个对象。因此,当a1 变化的时候,a2 里面的成员变量也会跟着变化。3. 浅复制(复制引用但不复制引用的对象)创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字段执行复制;如果该字段是引用类型的话原创 2020-05-21 21:24:20 · 389 阅读 · 0 评论 -
Spring反转控制(IoC)原理详解
1.IoC 概念Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。两种实现: 依赖查找(DL)和依赖注入(DI)。IOC 和 DI 、DL 的关系如下:DL 已经被抛弃,因为他需要用户自己去是使用 API 进行查找资源和组装对象。即有侵入原创 2020-05-19 22:32:58 · 632 阅读 · 0 评论 -
Java内部类详讲
Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类。根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种。1. 静态内部类定义在类内部的静态类,就是静态内部类。public class Out { private static int a; private int b; public static class Inner { public void print() { System.out.println(a); }原创 2020-05-18 15:29:28 · 186 阅读 · 0 评论 -
关于Java守护线程(Daemon)必须知道的7点知识
定义:守护线程,也称“服务线程”,他是后台线程。守护线程有一个特性,即为用户线程提供“公共服务”,在没有用户线程可服务时会自动离开。优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。设置:通过setDaemon(true)来设置线程为“守护线程”。将一个用户线程设置为守护线程的方式是在 线程对象创建 之前 用线程对象的setDaemon 方法。在Daemon 线程中产生的新线程也是Daemon 的。线程则是JVM 级别的,以Tomcat 为例,如果你在Web 应用中启动一个线程.原创 2020-05-18 09:26:39 · 273 阅读 · 0 评论 -
Java线程基本方法详解
线程基本方法线程相关的基本方法有wait,notify,notifyAll,sleep,join,yield 等。1. wait()函数-线程等待调用该方法的线程进入WAITING 状态,只有等待另外线程的通知或被中断才会返回,需要注意的是调用wait()方法后,会释放对象的锁。因此,wait 方法一般用在同步方法或同步代码块中。2. sleep()函数-线程睡眠sleep 导致当前线程休眠,与wait 方法不同的是sleep 不会释放当前占有的锁,sleep(long)会导致线程进入TIMED原创 2020-05-17 20:50:24 · 1375 阅读 · 0 评论 -
深入讲解Java Map集合
Map集合概述:将键映射到值的对象,一个映射不能包含重复的键每个键最多只能映射到一个值。Map接口和Collection接口的区别:Map是双列的,而Collection则为单列。Map中的键唯一,而Collection子体系Set是唯一的。Map集合的数据结构针对键有效,跟值无关。而Collection集合的数据结构是针对元素有效。1. HashMap(线程不安全)1.1 Java7实现HashMap结构如图所示:Java7中的HashMap 类里面是一个数组,数组中每个元素是一个原创 2020-05-16 15:50:44 · 399 阅读 · 0 评论 -
JVM类加载机制详讲
1. 类加载机制JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。加载: 类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class 对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class 文件获取,这里既可以从ZIP 包中读取(比如从jar 包和war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将JSP 文件转换成对应的Class 类)。验证: 这一阶段的主要目的是为了确保Class 文件的字节原创 2020-05-16 10:49:41 · 262 阅读 · 0 评论 -
全面讲解Java NIO(Channel、Buffer和Selector)
1. Java NIONIO的缓冲区Java IO 面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。NIO 的缓冲导向方法不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。NIO的非阻塞IO 的各种原创 2020-05-15 19:35:19 · 549 阅读 · 1 评论 -
全面讲解Java引用
1.什么是引用?简单的说,引用是一个对象别名,与被引用的对象共享同一块内存区域。例如“鹿晗”这个对象,他的原名是“刘壮实”,但两者其实都是指同一个人(内存)。对象在创建时会请求一块内存空间来保存数据,会根据对象大小分配存储空间大小不等的内存区域。在Java中,访问对象时,不会直接访问对象在内存中的数据,而是通过引用去访问。因此,引用也是一种数据类型,类似于C/C++ 语言中的指针。引用定义时在栈中分配内存,引用变量在程序运行到作用域外释。注意:引用可以独立存在,并不一定依赖于一个对象,例如:Strin原创 2020-05-15 10:03:59 · 2555 阅读 · 0 评论 -
Java位运算的应用(异或运算)-求数组中唯一只出现一次的元素(LeetCode136)
在算法题中,异或运算是一种常用的位运算方法,本文将介绍利用异或运算来求数组中唯一只出现一次的元素。异或运算的三点重要性质如下:任何数与0的异或运算结果等于他本身,即a⊕0=a;任何数与其本身的运算结果等于0,即a⊕a=0;异或运算满足交换律和结合律,即a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例原创 2020-05-14 15:20:47 · 629 阅读 · 0 评论 -
JVM内存管理机制详讲
一、JVM的内存区域1.基本概念JVM是可运行Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。2.运行过程我们都知道Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过Java 虚拟机中的解释器,编译成特定机器上的机器码 。也就是如下:① Java 源文件—->编译器—->字节码文件② 字节码文件—->JVM原创 2020-05-14 11:39:45 · 418 阅读 · 0 评论 -
二叉树的层序遍历(Java版)-LeetCode102题(每日一题)
二叉树的层序遍历本文更新一种二叉树的遍历方式(层序遍历),来自LeetCode102题,题目来源:LeetCode102题传送门其他二叉树遍历方法传送门如下:遍历二叉树(前序、中序和后续的递归和非递归遍历,绝对简单易懂!!!)二叉树的广度优先遍历和深度优先遍历(Java版)题目详情如下:package LeetCode102;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;原创 2020-05-13 10:24:46 · 225 阅读 · 0 评论 -
Java数组转为二叉树-由LeetCode236题(求二叉树的最近公共祖先)引出的问题拓展
直接上题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]下图是该数组转换成二叉树的形状来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lowest-原创 2020-05-10 17:31:04 · 231 阅读 · 0 评论 -
Java中Arrays.sort()函数几种常见的用法
Java中Arrays.sort()函数,常用于对数组进行快速排序,原理就是基于快速排序的算法思想快速排序快速排序使用的是分治思想,将原问题分成若干个子问题进行递归解决。选择一个元素作为轴(pivot),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比轴元素小,另外一部分的所有数据都比轴元素大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。基础知识点:若是基本类型,需要转化为对应的对象类型(如:int转化为Integer原创 2020-05-09 22:25:01 · 1694 阅读 · 0 评论
分享