自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL-如何实现的索引机制

MySQL-如何实现的索引机制

2022-12-11 09:36:16 481 1

原创 计算机网络-计算机网络的定义及分类

计算机网络的最简单的定义是:一些互相连接的、自治的计算机的集合

2022-09-26 00:59:08 568

原创 计算机网络-三种交换方式

计算机网络-三种交换方式

2022-09-26 00:26:19 854

原创 业务-复核

复核相关逻辑

2022-09-20 01:02:04 651

原创 计算机网络-因特网概述

因特网概述

2022-09-19 23:10:40 496

原创 Git-常用功能

Git快速入门

2022-06-26 04:45:53 3443

原创 算法-分治和回溯

分治和回溯

2022-06-26 04:36:44 167

原创 算法-泛型递归、树的递归

递归

2022-06-26 04:33:29 139

原创 数据结构-数、二叉树、二叉搜索树

树二叉树二叉搜索树

2022-06-26 04:31:08 93

原创 Linux-虚拟机相关配置

Linux虚拟机相关配置

2022-06-20 23:02:10 252

原创 JVM-类加载过程

类加载过程三大步骤:1.加载 2.连接 2.1验证 2.2准备 2.3解析 3.初始化

2022-06-10 18:37:52 101

原创 ECMAScript6简单入门

ECMAScript 6 简单入门概念ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现let声明变量1.let声明变量作用域的问题: 报错:b is not defined 原因:ECMAScript 6中用let声明的变量是有作用域的,但是js中的var是没有作用域的限制的 2.let重复

2022-05-16 18:35:10 265

原创 Mybatis_Plus-简单应用

Mybatis-plus简单应用开发步骤搭建开发环境: a.本地仓库 b.创建项目 c.pom.xml添加相关依赖Mybatis-plus简单应用: a.编写启动类 MyBatisPlusApplication b.编写配置文件 application.properties c.创建一个数据库 mybatis_plus d.编写一个实体映射类 User e.编写一个mapper操作数据库UserMapper f.测试搭建开发环境<?xml

2022-05-15 19:37:13 332

原创 计算机组成与体系结构-数据的表示

数据的表示进制转换1)R进转十进制使用按权展开法: 将R进制数的每一位数值用Rk形式表示,即幂的底数是R,指数为k,k与该位和小数点之间的距离有关。当该位位于小数点左边,k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码的个数加1。 例如二进制10100.01=1×2^4+1×2^2+1×2^-2例如七进制604.01=6×7^2+4×7^0+1×7^-2 2)十进制转R进制使用短除法: 例如将94转换为二进制数

2022-05-14 19:50:05 440

原创 GoF23-题目整理

GoF23-题目整理(后续会持续更新)一、原型设计模式问题:1)请使用UML类图画出原型模式核心角色2)原型设计模式的深拷贝和浅拷贝是什么,并写出深拷贝的两种方式的源码(重写clone方法实现深拷贝、使用序列化来实现深拷贝) 3)在Spring框架中哪里使用到原型模式,并对源码进行分析beans.xml<bean id="ido1" class="com.tan.spring.bean.Monster" scope="prototype"/>4)Spring中原型be

2022-04-27 22:21:14 327

原创 GoF23-单例模式

单例设计模式概述 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法) 例如:Hibernate中的SessionFactory,它作为数据存储源的代理,并且负责创建Session对象,SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就足够了,因此SessionFactory可以使用单例模式八种单例设计模式单例模式有八种方式:1.饿汉式:静态常量

2022-04-26 14:03:57 548

原创 UML-UML类图

UML类图UML类图概述1)UML--Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果2)UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等3)使用UML来建模,常用的工具有Rational Rose,也可以使用一些插件来建模UML类图术语解释Entity:1.Clas

2022-04-12 18:57:26 663

原创 GoF23-合成复用原则

合成复用原则(Composite Reuse Principle)合成复用原则(Composite Reuse Principle) 原则是尽量使用合成/聚合的方式,而不是使用继承场景描述 假设现在有A类,A类中有method1()、method2(),B类想要去使用A类中的method1(),按照我们平时的想法就是让B类去继承A类,进而去调用A类中的method1() 但是使用继承的方式会让A类和B类具有较高的耦合性改进方案方案一: B类去依赖A类。B类中编写

2022-04-11 17:48:09 390

原创 GoF23-迪米特法则

迪米特法则基本介绍1)一个对象应该对其他对象保持最少的了解2)类与类关系越密切,耦合度越大3)迪米特法则(Demeter Principle)又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的Public方法,不对外泄露任何信息4)迪米特法则还有个更简单的定义:只与直接的朋友通信5)直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多

2022-04-09 08:15:28 190

原创 GoF23-开闭原则

开闭原则基本介绍1.开闭原则 Open Closed Principle是编程中最基础、最重要的设计原则2.一个软件实体如类、模块、函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节3.当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化4.编程中遵循其他原则,以及使用设计模式的目的就是遵循开闭原则实际场景(传统方式)实现画图形的功能传统方式去实现:分析:1.优点:比较好理解,容易想到该实现方法2.缺

2022-04-08 19:13:37 106

原创 GoF23-里氏替换原则

里氏替换原则存在问题面向对象思想中的继承性的一些思考:1) 继承包含这样一层含义:父类中凡是已经实现好的方法,实际上是在设定规范和契约,虽然它不强制要求所有的子类必须遵循这些契约,但是如果子类对这些已经实现的方法任意修改,就会对整个继承体系造成破坏。2) 继承在给程序设计带来便利的同时,也带来了弊端。比如使用继承会给程序带来侵入性,程序的可移植性降低,增加对象间的耦合性,如果一个类被其他的类所继承,则当这个类需要修改时,必须考虑到所有的子类,并且父类修改后,所有涉及到子类的功能都有可能产生故障

2022-04-07 07:13:03 148

原创 GoF23-依赖倒置原则

依赖倒置原则依赖倒置原则概念依赖倒置原则(Dependence Inversion Principle)是指: 1.高层模块不应该依赖低层模块,二者都应该依赖其抽象 2.抽象不应该依赖细节,细节应该依赖抽象 3.依赖倒置的中心思想是面向接口编程 4.依赖倒置原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定得多。以抽象为基础搭建的架构比以细节为基础的架构要稳定得多。在Java中,抽象指的是接口或抽象类,细节就是具体的实现类 5.使用接口或抽象类的目的是

2022-04-01 23:57:43 166

原创 GoF23-接口隔离原则

接口隔离原则 Interface Segregation Principle接口隔离原则概述客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上先看一张图:类A通过接口Interface1依赖类B,类c通过接口Interface1依赖类D,如果接口Interface1对于类A和类c来说不是最小接口,那么类B和类D必须去实现他们不需要的方法按隔离原则.应当这样处理:将接口Interface1拆分为独立的几个接口,类A和类C分别它们需要的接口建立依赖关系,也就是采用接口隔离原

2022-03-31 23:55:51 155

原创 GoF23-建造者模式

建造者模式建造者模式概述建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节建造者模式原理建造者模式的四个角色: 1)Product(产品角色):一个具体的产品对象 2)Builder(抽象建造者):创建一个

2022-03-30 23:13:32 105

原创 GoF23-单一职责原则

单一职责原则单一职责原则概述对类来说的,即一个类应该只负责一项职责。如类Cola负责两个不同职责:职责1:生产可乐,职责2:销售可乐当职责1:生产可乐需求变更而改变类Cola时,可能造成职责2:销售可乐执行错误,所以需要将类Cola的粒度分解为:类ProductionCola,类SaleCola单一职责原则:各司其职单一职责原则实际应用应用背景描绘出一些人正在使用的交通工具的情况解决方法一package com.tan.principle.singleresponsibility;

2022-03-29 23:43:46 502

原创 Jvm-堆和栈

栈错误:程序 = 框架 + 业务逻辑正确: 程序 = 算法 + 数据结构栈的特点:先进后出队列的特点:先进后出(FIFO:First Input First Output) 方便记忆:喝多了吐是栈,吃多了拉是队列 为什么main方法先执行,最后结束? 因为栈的特点,先进后出 栈:栈内存,管控程序的运行,生命周期和线程同步线程结束,栈内存就释放,对于栈来说,不存在垃圾回收问题栈:八大基本类型、对象引用、实例的方法栈运行原理:栈帧栈满:StackOv

2022-03-28 00:50:14 207

原创 Jvm-Native以及方法区

Native和方法区NativeNative概述Native:凡是带了Native关键字,则说明超过了Java的作用范围,进而去调用底层C语言的库Native修饰的东西都会进入本地方法栈,然后调用本地方法接口(Java Native Interface,JNI),非Native修饰的进入Java栈 本地方法接口(JNI)的作用:扩展Java的功能,能够调用不同的编程语言提供给Java去使用Java在内存区域中专门开辟了一块标记区域:本地方法栈Native Method Stack,记

2022-03-27 08:00:35 265

原创 Jvm-沙箱安全机制

沙箱安全机制沙箱安全机制概述沙箱安全机制Java安全模型的核心就是Java沙箱(sandbox)什么是沙箱?沙箱是一个限制程序运行的环境。沙箱机制就是将Java代码限定在虚拟机JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么?CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。所有的Java程序运行都可以指定沙箱,可以定制安全策略。在Ja

2022-03-26 23:26:26 1113

原创 Jvm-类加载器及双亲委派机制

类加载器类加载器概述作用: 加载Class文件 加载Class文件是Java的核心标识举例:1)new Cola();都有什么操作? 1.有一个实体类Cola,该类是抽象的,当我们进行new Cola()就会有具体的实例了,具体实例的引用在java栈里面,具体的实例在堆里面(名称在栈里面,真正的数据在堆里面,根据内存地址去找到堆里面的数据) 类是模板(抽象的),对象是具体的 2)Cola.class文件都会在JVM经历什么过程?1.Cola.class进入到Class Loade

2022-03-25 18:03:30 278

原创 JavaWeb-请求参数中文乱码问题

请求参数中文乱码问题出现原因请求参数中文乱码出现的原因: 浏览器中的编码格式为:utf-8,当有中文数据的时候,会将中文数据以utf-8编码为字节,得到的字节将会存储在请求正文发送给服务器, 但是服务器中的解码格式为:iso8859-1,因此请求正文的字节会被解码成一串乱码不同版本tomcat中请求参数中文乱码问题tomcat7中: 1.GET请求 有请求参数中文乱码问题 其对应的两种解决方案:

2022-03-08 19:23:32 1385

原创 MySQL-多表查询的应用

多表查询的应用练习前的准备 #部门表 CREATE TABLE dept ( id INT PRIMARY KEY PRIMARY KEY, -- 部门id dname VARCHAR(50), -- 部门名称 loc VARCHAR(50) -- 部门所在地 ); -- 添加4个部门 INSERT INTO dept(id,dname,loc) VALUES (10,'教研部','北京'), (20,'学工部','上海')

2022-02-28 18:20:40 144

原创 MySQL-多表查询

多表查询补充知识: 笛卡尔积:(相当于就是组合的意思) 有两个集合A,B,取这两个集合的所有组成情况 要完成多表查询,需要消除无用的数据查询语法: select 列名列表 from 表名列表 where...多表查询的分类1.内连接查询2.外连接查询3.子查询内连接查询1.内连接查询: 1)隐式内连接:使用where条件消除无用的数据 样例: 查询所有员工信息和对应的部门信息: select * from emp

2022-02-27 20:00:30 97

原创 LeetCode-225.用队列实现栈

问题描述简单而言,就是去实现栈,并实现出栈的四种操作: 1.压栈 2.移除并返回栈顶元素 3.返回栈顶元素 4.判断栈是否为空,为空则返回true,反之则返回false详细题目中文版题目: 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并

2022-02-26 09:50:50 173

原创 MySQL-多表及范式概念

多表及范式概念多表之间的关系分类:1.一对一 例如:人和身份证2.一对多/多对一 例如:部门和员工 -->一个部门有多个员工,一个员工只能对应一个部门 3.多对多 例如:学生和课程 -->一个学生可以选择很多个课程,一个课程也可以被很多学生选择 实现方式:1.一对多/多对一 在多的一方建立外键,指向一的一方的主键 2.多对多 需要借助第三张中间表去实现,中间表至少包含两个字段,这两个字段作为第三张表的外键(联合主键),分别指向两张表的主键 3.一

2022-02-25 15:03:15 466

原创 Java进阶- Stream流

Stream流Stream流概述Java中的Stream并不会存储元素,而是对数据进行计算操作当使用一个流的时候,通常包括三个基本步骤: 1.获取一个数据源(source) 2.数据转换 3.执行操作获取想要的结果 每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换),这就允许对其操作可以像链条一样排列,如同链式操作一般创建Stream流Stream流的创建方式一创建Stream方式1:通过集合创建 集合.stre

2022-02-21 18:33:44 812

原创 Java进阶-线程的体系结构及创建方法

线程的体系结构根节点: Runnable接口(线程的任务接口,其只有一个抽象方法:void run(),而run方法就是线程需要执行的任务代码) 实现类: Thread类(只有Thread类和Thread类的子类的对象才是线程对象,且Thread类中存在着启动线程的方法start())线程的创建方法线程的第一种开启方式第一种:使用继承1. 创建一个类MyThread类,继承Thread类2. 重写父类中的run方法: 编写线程对象的任务4. 创建MyThraed类的对象,

2022-02-17 23:37:09 311

原创 Java进阶-线程池及创建线程池对象的两种方法

线程池线程池的概述线程池:装线程对象的容器线程池的应用场景: 如果在一个应用程序中需要多次使用一些线程,不使用线程池的话,咱就需要多次创建并销毁这些线程,而创建又销毁又创建...线程的过程会不断消耗内存 为此产生了线程池这个概念,把这些线程放到线程池中,当有线程任务来的时候,这些线程就出线程池去完成这些线程任务,当线程任务完成了之后,这些线程就再回到线程池中等待下一次的线程任务的到来,线程池规避了创建又销毁又创建线程这些过程,节省了内存损耗,提高了效率创建线程池对象的两种方法面向对象的方式

2022-02-16 17:58:32 1257

原创 Java进阶-File类

File类File类概述File类 : 计算机中所有文件和文件夹的类背景知识绝对路径 vs 相对路径:1.绝对路径:是完整的路径,以盘符开头!(可以这么记:因为是完整的路径,所以“绝对”能找到-->绝对路径) 2.相对路径:以参照物为原点,从原点的路径内寻找文件或者文件夹 --->不以盘符开头! 注意: 1)IDEA和Eclipse软件的相对路径起点是Project 2)IDEA和Eclipse软件因为项目结构有区别,所以使用相对路径的方式也不同:

2022-02-15 09:49:20 323

原创 Java进阶-递归算法

递归算法递归概述递归:递进回归代码中的体现:方法内部调用方法本身递归的注意事项递归的注意事项:1.定义一个方法且该方法必须有形参2.必须要有程序出口且递归的次数最好不要太多了 --->避免发生栈溢出StackOverflowError3.在该方法内部调用方法自身的时候,传入的参数要朝着出口方向变化递归的关键写递归最重要的是找到规律递归的简单应用求1-n的和问题描述求1~n的和,用递归去实现问题分析对于该问题,比如说求1~7的和:1~7的和() = 7

2022-02-14 18:48:50 518

原创 线程与进程

线程与进程进程进程: 进程的不同定义: 1)是程序的一次执行过程,是系统运行程序的基本单位 2)是一个程序及其数据在处理机上顺序执行时所发生的活动 3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位 “进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位” -->进程实体 = 程序段 + 相关数据段 + PCB 注意:PCB是进程存在的唯一标志! 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个

2022-02-13 17:48:26 267

空空如也

空空如也

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

TA关注的人

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