自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 知识梳理(2)—JAVA集合

1、接口继承关系和实现集合类存放于Java.util包中,主要有三种:set、list、mapCollection:集合List、Set、Queue的最基本接口Iterator:迭代器,可以通过迭代器遍历集合中的数据Map:映射表的基础接口2、ListJava的List是非常常用的数据类型,List是有序的CollectionList一共有三个实现类:ArrayList、Vector、LinkedList2.1 ArrayList(数组实现)ArrayList是最常使用的Li

2020-09-18 09:17:19 192

原创 知识梳理(1)JVM—内存区域、运行时内存、垃圾回收与算法、JAVA的四种引用类型、GC垃圾收集器、类文件结构、JVM类加载机制

基本概念JVM是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法区,JVM运行在操作系统之上,与硬件没有直接交互运行过程1、Java源文件 ——> 编译器 ——> 字节码文件(.class 二进制文件)2、字节码文件 ——> JVM(类加载器) ——> 机器码这也是为什么Java可以跨平台,一个程序启动,虚拟机就开始实例化,多个系统启动则有多个虚拟机实例。程序退出,虚拟机消亡,多个

2020-09-09 17:09:08 363

原创 SpringMVC(1)—MVC、Servlet、SpringMVC原理、实例及执行流程

一、MVC模型(Model)、视图(View)、控制器(Controller)Model:数据模型,提供要展示的数据,因此包含数据和行为,一般分离开:Value Object(数据Dao)和服务层(行为Service),也就是说Mode提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务View:负责进行模型的展示,一般就是用户界面,客户看到的东西Controller:接受用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给试图,由视图负责展示。也就是说控制器做了调度

2020-09-01 10:26:20 261

原创 Spring(3)—Spring-Mybatis、整合Mabatis配置、声明式事务管理

一、Spring-Mybatis1、Mybatis实现数据库操作的思路回顾与数据库属性一致的实体类,如User用于实现数据库操作的Mapper接口以及Mapper接口的配置文件Mapper接口中可以添定义数据库的增删改查等方法Mapper接口的配置文件中对接口的方法进行配置Mapper接口和配置文件是进行数据库操作的主要文件Mybatis配置文件,配置Mytis的属性,如数据库连接池、Mapper映射的路径、别名日志等相应的,为了简化数据库的连接,将数据库的相关属性定义在一个prop

2020-08-31 11:01:59 140

原创 Spring(2)—自动装配Bean、Spring注解开发、使用java的方式配置Spring、AOP的实现

1、自动装配Bean自动装配Bean是指Spring会在上下文中自动寻找,来给Bean装配属性Spring由三种装配方式:XML中显示装配java中显式装配隐式的自动装配Bean自动装配Bean的测试(1)环境public class Cat { public void shot(){ System.out.println("miao~"); }}public class Dog { public void shot(){

2020-08-26 10:36:39 96

原创 Spring(1)—maven依赖、IOC、Spring配置说明、依赖注入、bean的作用域

一、搭建环境1、maven spring依赖<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>

2020-08-22 21:25:14 935

原创 mybatis(5)—复杂查询、动态SQL

一、复杂查询1、复杂查询环境搭建Mysql代码以及对应的表结构student与teacher是一个一对多的关系,student表中的tid作为外键连接teacher中的idUSE `mybatis`;DROP TABLE IF EXISTS teacher CREATE TABLE `teacher`( id INT(10) NOT NULL PRIMARY KEY, `name` VARCHAR(30) DEFAULT NULL)ENGINE=INNODB DEFAULT C

2020-08-20 14:37:03 503

原创 Mybatis(4)—日志工厂

1、日志工厂mybatis中的标准日志输出是STDOUT_LOGGING核心配置文件mybatis-config中配置 <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>此时运行test文件,会有日志Logging initialized using 'class org.apache.ibatis.logging.stdout.S

2020-08-17 17:53:25 249

原创 Mybatis(3)—配置优化

1、环境配置Mybatis可以配置成适用多种环境,但每个SqlSessionFactory实例只能选择一种环境 <!--default的环境才是默认使用的环境,如果想要更换环境,需要改变其值--> <environments default="development"> <!--第一个环境--> <environment id="development"> <transactionM

2020-08-13 11:32:20 127

原创 Mybatis(2)—增删改查

1、对于MySql的增删改查只需要修改接口及对应的配置文件,及测试类接口:public interface UserMapper { //查询全部用户 List<User> getUserList(); //根据id查询用户 User getUserById(int id);}配置文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLI

2020-08-12 20:49:48 83

原创 Mybatis(1)—maven工程搭建Mybatis

1、maven配置文件中导入依赖新建maven工程,配置文件pom.xml,空白的父工程:<?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.apa

2020-08-12 10:49:54 148

原创 MySQL笔记

1、关于SQL基本指令创建表CREATE TABLE IF NOT EXISTS `teacher`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名', `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', `sex` VARCHAR(2) NOT

2020-08-09 20:55:30 82

原创 JVM——1、Class类文件结构

Class文件描述Class文件是一组以8个字节为基础单位的二进制流文件格式 采用类似于C语言结构体的伪结构存储数据,这种伪结构只有两种数据类型:无符号数、表无符号数:以u1、u2、u4、u8来分别代表1个字节、2个、4个和8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或按照UTF-8编码构成字符串值表是由多个无符号数或其他表作为数据项构成的符合数据类型,都以“-info”结尾。表用于描述有层次关系的符合结构的数据,整个Class文件本质上可以视作一张表,由下表所示的数据项按照严格

2020-07-29 11:21:23 210

原创 leetcode—99. 恢复二叉搜索树

题目描述:二叉搜索树中的两个节点被错误地交换,请在不改变其结构的情况下,恢复这棵树。示例 1:输入: [1,3,null,null,2] 1 / 3 \ 2输出: [3,1,null,null,2] 3 / 1 \ 2示例 2:输入: [3,1,4,null,null,2] 3 / \1 4 / 2输出: [2,1,4,null,null,3] 2 / \ 1

2020-07-19 11:22:52 79

原创 leetcode—105. 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) {

2020-07-18 11:18:51 77

原创 leetcode—124、二叉树的最大路径和

124、给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3 输出: 6示例 2:输入: [-10,9,20,null,null,15,7]-10 / \ 9 20 / \ 15 7输出: 42/** * Definition for a binary tree node. *

2020-07-17 10:21:13 79

原创 HashMap底层实现、线程安全问题

一、HashCode原理1、HashCode特性HashCode的存在主要是用于查找的快捷性,主要用于HashMap、Hashtable中,用来确定对象的存储地址如果两个对象相同,equals()一定返回true,并且两个对象的HashCode一定相同两个对象的HashCode相同,并不一定表示两个对象就相同,只能说明这两个对象在一个散列存储结构中equals()重写也需要同时重写HashCode()2、Hash算法(散列算法)Hash常用于java集合中,Set作为一种无序且无重复元素

2020-07-09 16:54:56 749

原创 JAVA中引用类型——强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)

1、强引用(Strong Reference)People p=new People();经常使用的创建一个对象就是强引用。如果对象是一个强引用,JVM绝对不会回收,如果内存满了则抛出OutOfMemoryError异常2、软引用源码,构造器public class SoftReference<T> extends Reference<T> { public SoftReference(T referent) { super(referen

2020-07-08 21:55:13 290

原创 输入网址后,会经历哪些步骤

一.域名解析,DNS解析通过主机名,最终得到该主机对应的IP地址的过程,叫做域名解析DNS的解析步骤?参考文章:https://blog.csdn.net/Lammonpeter/article/details/813583871、检查浏览器缓存是否缓存过该域名对应的IP地址用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的IP地址,当用户再次访问的时候,浏览器就会从缓存中查找该域名对应的IP地址,因为缓存不仅是有大小限制,而且还有时间限制(域名被缓存的时间通过TTL属性来

2020-07-08 20:50:19 808

原创 注解和反射(1)——注解(Annotation)、内置注解、元注解、自定义注解

一、注解(Annotation)1、Annotation的作用不是程序本身,但可以对程序作出解释可以被其他程序(比如编译器)读取2、Annotation的格式以“@注释名”在代码中存在,还可以添加一些参数值,例如:@SuppressWarnings(value=“unchecked”)3、Annotation在哪里使用附加在package、class、method、field上面,添加额外的辅助信息,可以通过反射机制编程实现对这些元数据的访问二、内置注解1、@Override,

2020-07-08 10:49:12 97

原创 网络编程(4)——多线程实现Udp两人互相聊天

一、创建实现Runnable接口的信息发送和接收类1、sendTalkSend类中属性为Socket套接字包、字符流BufferedReader、发送给目标的ip及端口号ip和端口号在构造方法中作为参数传入,另两个在构造方法中实现对象的创建run()方法中即为Udp方式套接字发送packet的方法,可以参考网络编程(3)public class TalkSend implements Runnable { DatagramSocket datagramSocket = null;

2020-07-07 20:14:24 819 1

原创 网络编程(3)——Udp通信基础、Udp实现聊天

一、Udp通信基础1、客户端//不需要连接服务器public class UdpClientDemo1 { public static void main(String[] args) throws IOException { //1、创建套接字,用于通信 DatagramSocket socket = new DatagramSocket(); //定义包的内容 String msg="Udp练习"; Inet

2020-07-07 11:42:30 182

原创 网络编程(2)——java实现TCP聊天、文件上传

一、客户端给服务端发送信息关于io部分知识遗忘,后续重新学习补充1、客户端public class TcpClientDemo1 { public static void main(String[] args) throws IOException { //1、定义服务器的ip和端口 InetAddress inetAddress=InetAddress.getByName("127.0.0.1"); int port=9999;

2020-07-07 09:38:57 266

原创 网络编程(1)——ip地址、网络端口、通信协议

一、网络编程网络编程的主要问题:1、如何准确定位到网络上的一台或多台主机(ip+端口),2、找到主机之后如何进行通信网络编程的要素:1、IP和端口号,2、网络通信协议(udp、tcp等)二、IP地址1、ip(InetAddress)地址基础:唯一定位一台网络上的计算机127.0.0.1:本机localhostip地址的分类:ipv4/ipv6、公网-私网ipv4:127.0.0.1 ,4个字节组成,每个字节(如127)范围0~255ipv6: 2001:0bb2:aaaa:0015

2020-07-05 13:55:12 1010 1

原创 linux(1)——linux的目录结构及远程连接

1、 linux的目录结构只有一个根目录,然后是子目录,与树相似,linux中,一切均是文件/bin (/user/bin、/usr/local/bin),Binary的缩写,存放着最近常使用的命令/sbin (/user/sbin、/usr/local/sbin),Super User Binary,存放系统管理员使用的系统管理程序home,存放普通用户的主目录,linux中每个用户都有自己一个目录,目录名是用户账号/root,系统管理员,超级权限者的用户主目录/lib,系统开机所需要

2020-07-01 22:49:31 288 1

原创 机试时Scanner常见问题

nextInt()、next()和nextLine()next+Int/double/short…()等用对应数据类型接受,其余返回输入均为StringnextInt(): it only reads the int value, nextInt() places the cursor in the sameline after reading the input.读取int值后,将cursor放在同一行输入值之后next(): read the input only till the

2020-06-20 15:52:01 232

原创 多线程(6)——线程通信、管程法、信号灯法、线程池

[学习视频B站狂神java多线程:https://www.bilibili.com/video/BV1V4411p7EF?]线程通信让不同线程之间进行交流,而不是独自执行自己的任务,会传递一些信息Java提供的用于解决线程之间通信问题的方法wait():表示线程一直等待,知道其他线程通知,与sleep不同,wait会释放锁wait():指定等待的毫秒数notify():唤醒一个处于等待状态的线程notifyAll():唤醒同一个对象上所有调用wait()方法的线程,优先级高的线程优先调

2020-06-03 11:36:22 224

原创 多线程(5)——死锁、Lock锁、synchronized和Lock的对比

死锁多个线程各自占有一个共享资源(同步监视器),并且都在等待对方释放,会导致死锁问题比如线程A拿到了锁1,线程B拿到了锁2,但是A需要再拿到锁2,B需要再拿到锁1,才能完成各自的线程,这样就导致了死锁所以最直观避免死锁的方法是,一个线程一次只能拿到一个共享资源,并且执行完该部分的方法后立即释放锁死锁案例public class TestDeadLock { public static void main(String[] args) { Ticket t1=new

2020-06-02 21:27:22 140

原创 多线程(4)——线程同步、线程不安全案例、同步方法及同步块

线程同步“同一个资源,多个人都想使用”的问题,解决方法:排队多线程问题中,多个线程访问同一个对象,并且某些线程还想修改对象,就需要线程同步线程同步本质上是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用多线程的同步问题中,线程访问对象中加入锁机制:synchronized,当一个线程获得对象的排他锁,其他线程必须等待,使用后释放锁即可,但也会带来一些问题:1、一个线程持有锁会导致其他所有需要此锁的线程挂起2、多线程竞争下,加锁释放锁会导

2020-06-01 21:48:34 129

原创 多线程(3)——线程的五大状态、线程优先级、守护线程

学习视频B站狂神java多线程:https://www.bilibili.com/video/BV1V4411p7EF?线程方法setPriority(int newPriority):更改线程优先级static void sleep(long millis):在指定的毫秒数内让当前正在执行的线程休眠void join():等待该线程终止static void yield():暂停当前正在执行的线程对象,并执行其他线程boolean isAlive():测试线程是否处于活动状态线程停止不

2020-06-01 11:40:52 175

原创 多线程(2)——Lambda表达式的推导过程

多线程的底层实现——静态代理Lambda表达式

2020-05-28 11:37:02 108

原创 多线程(1)——线程与进程、并发编程、Thread的底层实现—静态代理

线程(Thread)与进程(Process)程序:指令和数据的有序集合,静态进程:执行程序的一次执行过程,动态线程:一个进程中包含若干个线程,一个进程中至少一个线程真正的多线程通过多个cpu进行,模拟的多线程在一个cpu中不断切换线程线程的创建继承Thread类1、自定义线程类继承Thread类2、重写run()方法,编写线程执行体3、创建线程对象,调用start()方法启动线程class TestThread extends Thread { @Override

2020-05-27 11:32:05 85

原创 Leecode经典题目1——根据字符出现频率排序

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例 2:输入:“cccaaa”输出:“cccaaa”解释:'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:“Aabb”输出:“bbAa”解释:

2020-05-25 21:57:25 118

原创 Comparator接口、Lambda表达式和PriorityQueue优先队列

Comparator接口接口重写方法Comaparator接口用于实现排序,通常作为排序的参数输入,如Collections.sort(array,Comparator),接口中包含compare(Object obj1,Object obj2)和equals(Object obj)方法,compare方法用于比较obj1和obj2,obj1>obj2,return 大于0的数,相等return0,小于则return小于零的数接口的实现方法接口实现方法:类实现(重写compare方法,

2020-05-25 21:13:08 6645 1

原创 数据结构复习—堆排序

二叉树的顺序存储顺序存储只能存储完全二叉树完全二叉树:除二叉树最后一层,其余各层均满,并且最后一层元素全集中在左侧将二叉树存储在数组中,即二叉树的顺序存储,图示中二叉树的存储顺序,与数组中元素下标一致,因此,二叉树的顺序存储中,根节点下标为0,第n个元素的左子节点:2n+1,第n个元素的右子节点:2n+2,第n个元素的父节点:(n-1)/2顺序存储二叉树的遍历public class Main { public static void main(String[] args) {

2020-05-20 19:00:48 130

原创 基础复习—String

String类的常用方法及刷题中遇到的问题1、String常量对象与引用对象**1.1 String是一个final类,代表不可变的字符序列一个字符串对象一旦被配置,则内容不可变String源码: @Stable private final byte[] value;1.2 String的内存解析String的底层使用char[]实现,char[]初始化时需要给定数组长度,初始化之后长度不可变String s1="Hello";//常量池 String s2=

2020-05-18 20:20:41 133

原创 刷题基础复习—Map

Map接口的实现类:HashMap(主要实现类)、LinkedHashMap、TreeMap

2020-05-14 22:06:22 199

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除