自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (8)
  • 收藏
  • 关注

原创 Mysql的事务特性,四种隔离级别及原理

一、事务的基本要素(ACID)1、原子性(Atomicity)事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。2、一致性(Consistency)事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。3、隔离性(Isolation)同一时间,只允许一个事务请求同一数据,不同的事务之间

2021-11-20 17:05:34 1681 1

原创 RabbitMQ基础总结

RabbitMQ目录RabbitMQ1.对MQ的介绍2.RabbitMQ的六种模式 及工作原理3.hello world队列4.工作队列模式5.消息应答机制自动应答手动应答消息自动进行重新入队6.RabbitMQ的持久化,不公平分发及预取值7.发布确认8.交换机<1>交换机的认识1.1 概念1.2Exchanges 的类型1.3无名Exchange1.4临时队列1.5队列和交换机之间的绑定<2>交换机具体介绍9.死信队列<1>认识死信队列<2>死信实战2.1

2021-08-19 12:29:29 4122 1

原创 Linux常用命令总结

Linux常用命令总结目录Linux常用命令总结服务器关机相关命令2.系统目录结构介绍3.文件操作相关命令4.文件的基本属性5.文件的内容查看6.Vim7.进程相关命令服务器关机相关命令关机指令为:shutdown ;sync # 将数据由内存同步到硬盘中。shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机shutdown –h now # 立马关机

2021-08-15 21:32:52 35378 40

原创 Redis详解

Redis目录Redis1.Redis的简单概述2.Redis的常用命令<1>对Redis库操作的命令<2>对key的常用操作命令<3>Redis的五大数据类型<4>五大数据类型的常用操作命令3.1 String类型3.2List类型3.3 set类型3.4Hash类型3.5Zset类型3.Redis的内存分配4.Redis的淘汰策略5.Redis的持久化方式<1>为什么需要持久化<2>RDB<3>AOF6.Redis的主

2021-08-14 21:15:11 9336 3

原创 基于SpringBoot + MyBatis的前后端分离实现在线办公系统

在线办公系统(Yeb)1.开发环境的搭建及项目介绍本项目目的是实现中小型企业的在线办公系统,云E办在线办公系统是一个用来管理日常的办公事务的一个系统使用SpringSecurity做安全认证及权限管理,Redis做缓存,RabbitMq做邮件的发送,使用EasyPOI实现对员工数据的导入和导出,使用WebSocket做在线聊天使用验证码登录页面展示:添加依赖使用MyBatis的AutoGenerator自动生成mapper,service,Controller2.登录

2021-08-14 12:28:17 30715 36

原创 四万字长文总结多线程,一篇就够了!

1.认识线程及线程的创建<1>.线程的概念线程和进程的区别:进程是系统分配资源的最小单位,线程是系统调度的最小单位。一个进程内的线程之间是可以共享资源的。每个进程至少有一个线程存在,即主线程。注:每个进程至少有一个线程存在,即主线程(系统级别的,C语言的主线程)java级别的主线程(自己写的入口函数main方法(可以没有这个线程)对java进程来说,至少有一个非守护线程还没终止,进程就不会结束<2>.线程的特性在后面线程的安全性会详细介绍1.原子性:即一个操作

2021-08-07 12:54:19 5992 16

原创 直接拿下操作系统!!

目录操作系统1.进程和线程1.1进程和线程的区别1.2进程的状态转换1.3进程间的通信1.4进程的调度和处理机调度2. 内存管理1.1内存管理的功能1.2内存分配方式1.2.1连续分配管理方式1.2.2分配策略算法1.2.3非连续分配管理方式1.2.4 页面置换算法(追求最少的缺页率)3.文件管理3.1文件的分配方式(物理结构)3.2文件存储空间管理4.IO管理4.1磁盘调度算法5.死锁5.1 对死锁的理解5.2死锁的避免->银行家算法5.3死锁的解除操作系统1.进程和线程1.1进程和线程的区

2021-08-07 12:38:47 2024 2

原创 仿Tmocat的简易版HTTP服务器

目录HTTP项目(MyTomcat)1.项目总览2.Servlet容器3.HTTP服务器<1>TCP连接的理解<2>正式项目(1)初始化工作(2)处理HTTP请求-响应(单次的请求响应处理逻辑)(3)销毁所有的Servlet对象,结束生命周期<3>自定义登录逻辑进行测试4.项目总结5.项目的不足HTTP项目(MyTomcat)1.项目总览流程图:流程:初始化工作扫描所有的Context读取并解析各子的web配置文件加载需要的ServletClass,

2021-08-04 16:59:19 1125

原创 JVM基础详解

目录JVM1.类加载<1>.父子类执行的顺序<2>类加载的时机<3>类的生命周期<4>类加载的过程<5>类加载器<6>类加载机制——双亲委派模型2.Java内存模型(JMM)<1>线程私有的内存区域<2>线程共享的内存区域<3>内存模型<4>对常量池的说明3.垃圾回收前置知识<1>对创建对象,内存,GC的笼统理解<2>垃圾回收策略(如何判断对象已死)(1)**引用计

2021-07-29 14:56:06 2579 6

原创 Java类加载

目录1.类加载<1>.父子类执行的顺序<2>类加载的时机<3>类的生命周期<4>类加载的过程<5>类加载器<6>类加载机制——双亲委派模型1.类加载<1>.父子类执行的顺序1.父类的静态变量和静态代码块(书写顺序)2.子类的静态变量和静态代码块(书写顺序)3.父类的实例代码块(书写顺序)4.父类的成员变量和构造方法5.子类的实例代码块6.子类的成员变量和构造方法<2>类加载的时机如果类没有进行

2021-07-28 14:08:22 1216

原创 面试官都震惊,你这网络基础可以啊!

目录网络1.对网络的基础认识<1>.组网方式<2>.OSI七层模型<3>.TCP/IP五层(四层模型)<4>.对封装分用的理解2.网络数据传输<1>局域网(1)认识IP和MAC(2)网络数据传输的特性(3)网络数据传输流程1)网络互联的方式2).局域网交换机组网的方式3)局域网交换机+路由器组网的方式<2>广域网传输流程3.UDP和TCP<1>UDP协议<2>TCP协议(可靠的传输协议)(1)TCP相关概念(2)

2021-07-10 15:52:44 482866 248

原创 还不了解后端资源拦截和权限认证?过滤器,拦截器,AOP,SpringSecurity教教你

一.过滤器过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理Filter:拦截请求,过滤响应如图所示:通过filterChain.doFilter(request,response)交给下一个过滤器链处理主要使用场景: 统一的资源管理(如用户会话的统一管理,编码格式的统一设置等等)使用方式: 如果不满足条件,不要执行doFilter,不往下执行(跳转页面或直接输出内容),

2021-07-10 15:25:48 3387 2

原创 轻松上手SpringSecurity,OAuth,JWT

目录学习目标一.SpringSecurity1.SpringSecurity简介及快速入门<1>.SpringSecurity简介<2>.SpringSecurity快速入门2.SpringSecurity基本原理<1>.UserDetailsService详解<2>.PasswordEncoder 密码解析器详解3. SpringSecurity自定义登录逻辑及权限控制<1>.自定义逻辑登录<2>.自定义登录页面<3>.自

2021-06-07 22:43:39 2699 1

原创 java项目——CRM客户管理系统(SpringBoot+MyBatis)

目录CRM客户管理系统一.对CRM的项目的简单描述1.什么是CRM2.CRM开发环境和技术<1> 项目业务介绍<2>开发环境<3>开发技术二.项目准备及模块分析1.模块分析总览2.项目前期环境的搭建三.项目的正式开发1.用户管理模块<1>.表结构分析<2>.用户登录<3>全局统一的异常处理及非法请求的拦截(1)统一的异常处理(2)非法请求拦截<3>记住我功能2.营销管理模块(CRUD操作,见源码)<1>功能开发及

2021-06-01 23:56:25 44732 46

原创 Java集合框架详解

Java集合框架详解集合框架总览分为两大类:Collection和MapCollection 接口存储一组不唯一,无序的对象List 接口存储一组不唯一,有序(索引顺序)的对象Set 接口存储一组唯一,无序的对象Map 接口存储一组键值对象,提供 key 到 value 的映射,Key 唯一 无序,value 不唯一 无序一.Collection集合1.Collection集合的遍历(这里以ArrayList为例)package org.example.data_structure.co

2021-05-27 17:10:35 4981 24

原创 反射和注解

一.反射反射:将类的各个组成部分封装为其他对象,这就是反射机制好处:1.可以在程序运行的过程中,操作这些对象2.可以解耦,提高程序的可扩展性1.Java代码在计算机中经历的阶段:三个阶段1.Source源代码阶段:将Person.java对象编译为Person.class字节码文件(还在硬盘上,未进入内存中)2.通过类加载器(Class Loader,创建出对象,并加载到内存中)注意: class类对象中,将Person类的成员变量,构造方法,成员方法等也封装成了对象数组3.Runtime

2021-04-23 23:12:36 1183

原创 网路基础5——>MTU,IP,HTTPS

一.MTU协议MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片不同的数据链路层标准的MTU是不同的;二.IP协议1.协议头格式简单了解:4位版本号(version):

2021-04-04 23:39:07 1406

原创 网络基础4------>UDP和TCP

目录一.UDP协议二.TCP协议(可靠的传输协议)1.TCP相关概念2.确认应答机制ACK(安全机制)3.超时重传机制(安全机制)4.连接管理机制(安全机制)<1>.建立连接---->TCP三次握手<2>.断开连接----->TCP四次挥手一.UDP协议UDP协议端格式:16位UDP校验和作用:类似于藏头诗,双方约定好的校验数据,进行数据校验UDP的特性:1.无连接:没有建立连接就发数据2.不可靠:没有类似TCP保证数据传输的安全机制,(连接管理机制,确认应答

2021-04-01 17:00:20 1107

原创 网络基础3----->广域网传输流程

广域网传输流程结合上图,理解广域网传输流程首先:主机1发送http://www.baidu.com网络流程传输流程1首先主机1发送http请求,使用DNS协议:进行域名转IP域名转IP:首先在本机DNS缓存表找,如果找不到---->向上查找------>如果根域名服务器也找不到,表示公网上没有该域名的主机2....

2021-03-31 20:33:39 1446

原创 网络基础2---->网络数据传输(局域网)

一.认识IP和MAC1.IPIP的格式:xxx.xxx.xxx.xxxIP由四个部分组成,每个部分都是0-255.网络号:前三个部分组成(用来标识网段),前三个部分相同,标识在一个网段主机号:最后一个部分用来标识主机号IP分为A-E五大类,部分范围是局域网IP,部分是广域网IP,可以根据规范,直到莫格IP是局域网IP还是公网IP注意: 局域网内(局域网IP):网段唯一,同一个网段,主机号唯一公网(公网IP):公网IP是唯一的2.MAC和网卡硬件绑定的,全球唯一作用:网络数据传输定位网卡

2021-03-30 22:06:26 2145

原创 网路基础1----OSI/TCP/IP模型,封装分用,网络传输

一.组网1.网络互联使用集线器将少量主机连在一起2.局域网使用交换机和路由器将主机连接,可以自由组合三种方式3.广域网广域网和局域网只是相对的概念组网方式:公网上,网络结点组成每一个结点,可以是:二.OSI七层模型对协议的简单理解:本质上是数据格式的定义,知名的数据格式,大家都遵循的规范,属于“协议”OSI七层模型:一种网络分层的设计方法论,比较复杂且不实用,落地机会都是TCP/IP四层,五层模型三.TCP/IP五层(四层模型)五层模型:除去OSI模型的表示层和会话层

2021-03-28 23:57:09 1101

原创 IO基础

目录一.认识IO1.IO的分类2.IO的方式3.IO读写的方式4.IO的特性二.文件操作1.文件的构成2.文件的创建3.文件操作的API使用三.IO流1.流的分类2.流的创建2.流的使用<1>输入流<2>输出流<3>实例:文件的复制一.认识IO1.IO的分类(1)BIO:同步阻塞IO(2)NIO:同步非阻塞IO(3)AIO:异步阻塞IO注意: 这里主要介绍BIO2.IO的方式IO本质就是对数据的操作(1)网络IO(2)本地IO3.IO读写的方式4

2021-03-23 15:24:52 1217

原创 多线程4------>多线程案例

目录一.生产者消费者问题二.单例模式三.阻塞式队列四.线程池一.生产者消费者问题示例:面包店10个生产者,每个每次生产3个20个消费者,每个每次消费一个进阶版需求面包师傅每个最多生产30次,面包店每天生产10303=900个面包消费者也不是一直消费。把900个面包消费完结束隐藏信息:面包店每天生产面包的最大数量为900个 消费者把900个面包消费完结束代码示例:/** * 面包店 * 10个生产者,每个每次生产3个 * 20个消费者,每个每次消费一个

2021-03-23 14:36:50 940

原创 多线程3------>线程安全

1.

2021-03-23 09:36:30 768 1

原创 多线程2——>线程的常用方法及线程间的通信

一.线程的常用方法1.构造方法和属性的获取方法构造方法:属性的获取方法:2.常用方法<1>.run()和start()start();方法:启动线程run();方法:覆写 run 方法是提供给线程要做的事情的指令清单注意:run和start的区别:public class Thread_Run_VS_Start { public static void main(String[] args) { new Thread(new Runnable()

2021-03-23 00:38:52 746

原创 多线程1——>进程,线程

一.进程1.冯诺依曼体系结构计算机的五个组成部分:输入设备,输出设备,存储器,运算器,控制器注:cpu包含运算器和控制器操作系统的概念:计算机系统的一个基本的程序集合包含:内核(进程管理,内存管理,文件管理,驱动管理)其他程序(例如函数库,shell程序等等)2.进程<1>.初步认识对于操作系统来说,一个任务就是一个进程。进程是担当分配系统资源(CPU时间,内存)的实体<2>.内核态和用户态操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态,

2021-03-20 09:33:38 724

原创 深拷贝和浅拷贝

一.clone对象的使用1.对象的复制和引用的复制 Person p = new Person(23, "zhang"); Person p1 = p; System.out.println(p); System.out.println(p1);对象未改变,复制的是引用,都指向同一个对象new Person(23, “zhang”)2.clone的使用Person p = new Person(23, "zhang");Person p1 = (Person) p.clone();S

2021-03-17 23:31:01 779

原创 哈希表,LIst,Set,Map

一.哈希表举例:代码实现: class Node { public Integer key; Node next; public Node(Integer key) { this.key = key; }//元素类型,使用Integer//使用拉链法解决冲突public class MyHashTable { //1.数组(存储链表的头节点) private Node[] array=new Node[11];

2021-02-24 21:15:53 883

原创 二叉搜索树

一.概念二叉搜索树又称二叉排序树若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树**特点:**二叉搜索树的中序遍历是有序的二.二叉搜索树的操作1.查找思路:代码实现: //查找 public boolean search(Integer key) { Node current = root; while (current != null) {

2021-02-23 15:06:48 947

原创 七种基于比较的排序,基于Java实现,还不点赞收藏?

一.简单插入排序原理:一组数据array[],认为以下标i为分界,[0,i+1)认为有序,[i+1,array.length)无序,从无序数据中每次取出一个数据,插入有序数据中代码实现: public static void insertSort(long []array){ //数据一共有array.length个 //所以,子操作需要执行array.length次 //减不减一都可以,减一认为第一个数已经有序 for (int i

2021-02-21 22:47:37 782

原创 堆和优先级队列

堆和优先级队列目录堆和优先级队列一.二叉树的顺序存储方式1.存储方式2.下标关系二.堆1.概念2.向下调整<1>思路<2>代码示例3.向上调整<1>思路<2>代码示例3.建堆<1>思路<2>代码示例三.优先级队列1.概念2.优先级队列的实现四.TopK问题一.二叉树的顺序存储方式1.存储方式2.下标关系已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标

2021-02-17 23:33:34 748

原创 二叉树

二叉树目录二叉树一.二叉树的概念二.二叉树的基本形态三.两种特殊的二叉树1.满二叉树2.完全二叉树四.二叉树的性质五.二叉树的存储1.顺序存储2. 链式存储六.二叉树的基本操作1.二叉树的遍历<1>前序遍历<2>中序遍历<3>后序遍历<4>层序遍历2.二叉树求结点个数<1>解题思路<2>代码实列3.求二叉树第K层结点个数<1>解题思路<2>代码实列4.求二叉树叶子结点的个数<1>解题思路<2&

2021-02-17 19:38:40 1458

原创 Leetcode110:判断平衡二叉树

判断平衡二叉树题目解题思路代码示例class Solution { public boolean isBalanced(TreeNode root) { if(root==null){ return true; } if(root.left==null&&root.right==null){ return true; } if(maxDepth(root)<=2){

2021-02-17 13:10:40 686

原创 栈和队列

栈和队列目录栈和队列一.栈1.概念2.栈的实现二.队列1.概念2.实现三.循环队列四.双端队列一.栈1.概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。2.栈的实现public class MyStack{ private int[]a

2021-02-16 23:31:51 710

原创 Leetcode572:判断另一棵树的子树

Leetcode572:判断另一棵树的子树题目解题思路判断二叉树是否相等代码示例class Solution { public boolean isSubtree(TreeNode s, TreeNode t) { return Find(s, t); } public static boolean isSameTree(TreeNode p, TreeNode q) { if (p == null && q == nul

2021-02-16 23:15:05 659 1

原创 Leetcode:100相同二叉树,101对称二叉树

相同二叉树和对称二叉树目录相同二叉树和对称二叉树1.Leetcode100:相同二叉树<1>题目<2>解题思路<3>示例代码2.Leetcode101:对称二叉树<1>题目<2>解题思路<3>代码示例1.Leetcode100:相同二叉树<1>题目<2>解题思路<3>示例代码class Solution { public boolean isSameTree(TreeNode

2021-02-16 22:22:55 654

原创 Leetcode:二叉树的遍历(前中后)(递归)

二叉树的遍历采用List将遍历的值保存1.前序遍历题目代码示例class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list=new ArrayList<Integer>(); preorder(list, root); return list; } publ

2021-02-16 14:47:07 733

原创 Leetcode155:最小栈

最小栈题目解题思路代码示例import java.util.Deque;import java.util.LinkedList;public class MinStack { /** initialize your data structure here. */ Deque<Integer> StackA;//普通栈 Deque<Integer> StackB;//存放最小数的栈 public MinStack() {

2021-02-15 20:00:24 645

原创 Leetcode232:用栈实现队列

用栈实现队列题目解题思路代码示例import java.util.Deque;import java.util.LinkedList;public class MyQueue { /** Initialize your data structure here. */ private Deque<Integer> StackA;//入 private Deque<Integer> StackB;//出 public MyQueue(

2021-02-15 19:33:07 642

原创 leetcode225:用队列实现栈

用队列实现栈题目解题思路代码示例package com.example;import java.util.LinkedList;import java.util.Queue;public class MyStack { /** Initialize your data structure here. */ private Queue <Integer> queue; public MyStack() { queue= new LinkedList

2021-02-15 18:05:56 668

在线办公系统源码(全)

在线办公系统项目源码,前后端分离,里面包含了前端和后端的代码,sql文件和开发文档, 视频资料

2021-08-13

CRM客户管理系统开发文档.zip

CRM客户管理系统开发文档

2021-08-13

xftp.zip 无序密钥

免费版

2021-08-12

xshell.zip 无需密钥

免费版

2021-08-11

仿Tomcat的HTTP项目.zip

仿Tmocat的HTTP服务器开发,看完对Tomcat能更深理解,内附开发文档

2021-08-07

从头搭建CRM客户管理系统

CRM客户管理系统源码, 有清楚的注释,数据库使用Mysql8,需要详细开发文档或有开发问题的加qq2690534598

2021-08-07

Java从入门到精通.pdf

十四万字总结,PDF包含了十四个大模块:Java基础知识,数据结构,算法,Java集合框架,Java8新特性,操作系统,网络原理,Java多线程及并发编程,Java的IO模型及网络编程,JVM,Mysql,JavaWeb和一个仿Tomcat实现的简易版HTTP服务器项目。适合小白及Java初中级开发工程师。面试必备.(一直会更新)

2021-08-07

空空如也

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

TA关注的人

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