- 博客(66)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 多线程知识汇总
思维导图一、认识多线程——要点解析1、多线程的创建方法(1)继承Thread重写run()class MyThread extends Thread {@Overridepublic void run() {System.out.println("这里是线程运行的代码"); }}MyThread t = new MyThread();t.start(); // 线程开始运行...
2020-03-24 21:31:27
247
转载 SQL优化
转载:https://blog.csdn.net/qq_39390545/article/details/107020686?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162746039916780262526626%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162746039916780262526626&biz_i
2021-07-28 16:43:19
166
原创 设计模式1
一、七大原则开闭原则:对代码扩展开放,对修改关闭。单一职责原则:一个类负责单一的职责。里氏代换原则:子类重写父类方法应尽可能的扩展父类功能,但不能修改原有功能。依赖倒转原则:面向接口变成,依赖于抽象而不是具体实现。二、单例模式三、工厂方法模式...
2021-07-09 21:59:19
173
原创 Nginx进程模型
一、 Epoll多路复用java bio模型,阻塞进程式有发送缓冲区,当写的时候发送缓冲区被塞满,阻塞,要等到缓冲区传输完,才能直接返回。linux select模型,变更触发轮询查找等到发现100个连接有变化,遍历这个连接,找有变化的,说明有空间可以读或写。epoll模型,变更触发100个连接如果有变化,那么直接执行回调函数进行执行,不需要遍历这100个链接。 单线程且没有阻塞,这也是nginx具有高效I/O操作的原因。二、master-worker进程模型父子进程关系——maste
2021-06-28 17:07:33
317
1
原创 Redis——前置
一、NoSQL1.概念NoSQL = Not Only SQL,泛指非关系型数据库。因为随着web2.0互联网的诞生,传统的关系型数据库(表格、行和列)已很难应对web2.0时代,尤其是超大规模的高并发社区。因为很多用户个人信息,社区网络,地理位置。这些数据储存不需要一个固定的格式,不需要多余的操作就可以横向扩展。2.特点1) 方便扩展——数据之间没有关系,易于扩展2)大数据量高性能——读写性能好,缓存是细粒度的缓存3)数据类型多样型——不需事先设计数据库,随去随用3.四大分类二、Red
2021-06-22 21:30:36
157
原创 SpringBoot——优势与自动装配原理
一、SpringBoot自动装配原理二、SpringBoot的配置1. SpringBoot推荐使用.yaml来配置,与properties不同在于yml除了存储键值对外还可以存储对象。三、
2021-05-27 22:29:30
698
3
原创 Mysql——引擎、索引、事务、锁
一、索引索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。索引的作用:更加快速的检索到需要的数据从使用上:定义索引;条件查询的时,where条件使用创建的索引字段注意:1)Mysql默认引擎使用innodb,索引和数据都保存在本地同一文件2)索引的效率问题:为了提高数据检索效率,但是修改索引字段,插入删除数据效率低。二、事务事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。在不同的.
2021-05-20 17:56:17
110
原创 Mysql——CRUD进阶
一、表的设计1. 数据库的约束NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 唯一约束,保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。NOT NULL - 和 UNIQUE 的结合。确保某列(或两个列多个列的结 合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。FOREIGN KEY - 外键约束,保证一个表中的数据匹配另一个表中的值的参照完整性。例子:一个学生对应一个班级,一个班级对应多个学生。classes_id
2021-05-18 21:03:25
235
2
原创 算法——动态规划
特点把原来问题分解成相似的子问题。所有子问题只解决一次。储存子问题的解。本质对问题 状态的定义和 转移方程的定义(状态与状态之间的递推关系)思考方式定义状态状态间转移方程的定义状态的初始化返回结果典型问题斐波那契数列变态青蛙跳台阶最大连续子数组和 https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/字符串分割https://leetcode-cn.com/problems/wor
2021-04-14 21:53:56
68
原创 JavaSE——深入集合
一、集合框架体系1.单列集合2. 双列集合(键值对 K-V 形式)二、单列集合接口及常用方法1.Collection接口1)特点①Collection实现子类可以存放多个元素,每个元素可以是Object。②有些Collection的实现类可以存放重复的元素,有些不行。③有些Collection的实现类,是有序的,也有的是无序的。④Collection接口没有直接的实现子类,是通过他的子接口Set和List来实现的。2)遍历元素的方式——Iterator(.
2021-04-10 13:51:10
181
原创 SpringMVC——初识(MVC与执行流程)
一、MVC1.什么是MVCMVC的理念就是把数据处理、数据展示(界面)和程序/用户的交互三者分离开的一种编程模式。它是一种新的软件架构模式。M——Model模型,用于封装和映射数据(比如javaBean)。承载数据,并对用户提交请求进行计算。分为两类:数据承载Bean(实体类),业务处理Bean(Service或Dao对象)V——View视图,用于界面的显示工作(比如.jsp)。C——Controller控制器,控制整个网站的业务逻辑(比如Servlet)。将用户的请求转发给Model进行处理。
2021-03-24 17:38:10
208
原创 JVM——类加载
一、概述java源码的运行会在编译期被编译成.class字节码文件,然后再运行期由类加载器加载到内存,最终形成虚拟机直接使用的Java类二、类的生命周期三、类的加载过程1)加载2)
2021-03-22 23:23:58
149
原创 Spring框架——入门3(动态代理、AOP、SpringAOP)
一、动态代理二、AOP的概念三、Spring中AOP的相关术语四、Spring中基于XML和注解的AOP配置
2021-03-18 01:33:34
131
1
原创 Spring框架——入门2(SpringIOC注解开发)
一、Spring中Ioc的常用注解1.用于创建对象作用与xml中编写bean标签实现的功能相同1)@Component("value")作用:用于把当前类对象存入Spring容器中,其属性value用于指定bean的id,不写时他的默认值是当前类名首字母改小写。出现位置:类对象2)@Controller()、@Service()、@Repository()作用: 同Component,是Spring为我们提供明确的三层使用的注解,使三层对象(表现层,业务层,持久层)更清晰。2.用于注入数据(
2021-03-17 20:43:38
115
原创 Spring框架——入门1(耦合解耦、SpringIOC、xml配置)
一、程序的耦合及解耦1.概念耦合:耦合是指程序间的依赖关类,其中包括类之间的依赖和方法之间的依赖。解耦合: 降低程序间的依赖关系,有些耦合可以避免,有些不可避免。2.耦合的例子1)类与类之间的耦合:实际开发中应该做到,编译期不依赖,运行期才依赖,比如在JDBC编程中,第一步注册驱动环节,采取如下方式。DriverManager.registerDriver(new com.mysql.jdbc.Driver());如果没有导入com.mysql.jdbc.Driver包,是无法注册驱动的,
2021-03-15 19:09:57
121
原创 Spring框架——概述
一、Spring是什么Spring是分层的JavaSE/EE 应用全栈结构的轻量级开源框架,以IOC 和 AOP为内核,提供了表现层SpringMVC 和 持久层 SpringJDBC及业务层事务管理等众多的企业级应用技术。二、Spring的两大核心1.IOC与DI1)IOCIoc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。IoC对编程带来的最大改变不是
2021-03-15 16:09:13
206
原创 Mybatis框架——入门1(框架的概念,概念,xml实现)
一、预知识1、什么是框架?是软件开发中的一套解决方案,不同的框架解决的是不同的问题。框架封装了很多细节,使开发者使用极简的方式实现功能。大大提高开发效率。2、三层架构表现层:展示数据业务层:处理业务需求持久层:与数据库交互3、持久层技术解决方案JDBC技术:Connection、PrepareStatement、ResultSetSpring的JDBCTemplate:Spring中对JDBC的封装Apache的DBUtils:对JDBC的简单封装。但以上都不是框架。其中JDBC是规
2021-03-13 22:35:37
160
原创 JavaWeb——静态资源与动态资源
1.静态资源和动态资源的概念静态资源:一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来。动态资源:一般客户端请求的动态资源,先将请求交于web容器,web容器连接数据库,数据库处理数据之后,将内容交给web服务器,web服务器返回给客户端解析渲染处理。2.静态资源和动态资源的区别a.静态资源一般都是设计好的html页面,而动态资源依靠设计好的程序来实现按照需求的动态响应;b.静态资源的交互性差,动态资源可以根据需求自由实现;c.在服务器
2021-03-04 21:28:03
603
1
转载 算法:数据流中的中位数
题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。理解:要实现一个动态的数据结构,实时给该结构添加数据,实时获取该结构中数据的中位数思路:需要注意的是,使用两个堆,利用两个堆的堆顶解题。思路如下: 将读入的数据分为几乎数量相同的两部分,一部分数字小,另一部分大
2021-02-18 17:34:21
175
原创 数据结构——平衡搜索树(AVL、红黑树、B树)
一、搜索数据结构1. 概述1)搜索/查找:①遍历查找 O(n)②二分查找 O(log(n))③哈希表 O(1)④搜索树(平衡搜索树)几种查找方式的比较:哈希表实现线程安全还算容易,但树要实现线程安全不太容易2. AVL树1)节点结构:必须是二叉树,必须是搜索树,任取树上节点且该节点的左右子树高度差不超过1(BF∈(-1,0,1))。是二叉搜索树的一种进化版本。class AVLTreeNode{ Key key; Value value; AVLTreeNode left;
2021-01-13 03:12:07
667
原创 SpringMVC——初识2(boot+注解)
Spring项目目录控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。@Controller@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。@Controller 只是定义了一个控制器类。@RequestMapping可用于类或方
2021-01-06 17:12:09
106
原创 JavaWeb——HTML,CSS,JS
一、HTML超文本标记语言(HTML),是一种用于创建网页的标准标记语言。你可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器来解析。一个完整的html标签的组成:<!DOCTYPE html><html><head><meta charset="utf-8"><title>你好</title></head><body> 。。。要写的的内容</body&
2020-12-21 02:40:57
387
转载 JavaSE——包装类(转载)
一、什么是包装类Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。二.基本数据和包装类之间的转换装箱:基本数据类型转换为包装类。拆箱:包装类转换为基本数据类型。package com.swpu;public class WrapperTestOne { public static void main(String[] args){ //1.自动装箱 int t1=1; Integer t2=
2020-12-01 17:34:43
66
原创 算法题——求输入A和B的最小公倍数
题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。思路:最小公倍数等于两个数之积除以两个数的最大公约数,所以首先要求其最大公约数,求最大公约数使用辗转相除法或更相减损法。辗转相除法(欧几里得算法)::两个数的最大公约数等于它们中较小的数和两数之差的最大公约数。假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:1997
2020-11-30 21:34:32
1311
原创 JavaWeb——前端如何定位后端资源?
1、从前端后端的角度来说,用户在浏览器输入url例如:http://ip:port / 应用上下文路径 / 服务路径发生了什么。ip:port :对应着服务器的IP地址与端口应用上下文路径:在web服务器中,可能有多个web项目,每个项目都有自己的应用上下文路径,该路径是在项目部署阶段需要配置的(可以自己设置)。以tomcat为例部署过程如下:每个应用上下文路径下拥有静态资源(HTML文件),servlet程序资源。服务路径:每个web应用拥有多个服务路径,对应着一个web应用实现,服务路径是敏
2020-11-26 14:50:32
1721
原创 JavaWeb中Maven的简单配置与使用
1.Maven的优势Maven 优势一:相同的项目结构使用Maven管理的Java 项目都有着相同的项目结构如下图所示:有一个pom.xml 用于维护当前项目都用了那些jar包所有的java代码都放在 src/main/java所有的测试代码都放在src/test/javaMaven 优势二:统一维护jar包:比如说有3个Java 项目,这些项目都不是maven风格。那么这3个项目,就会各自维护一套jar包。 而其中有些jar包是相同的。而maven风格的项目,首先把所有的j
2020-11-24 17:27:58
990
1
转载 算法题——二进制中1的个数
思路:1.利用一个结论:一个二进制数n减1后与原二进制数进行 & 运算( 即n&(n-1) )会消去最右边的1。2. 这个结论怎么来的?假设二进制数101进行减1运算,刚好最右边是1,则得到100,此时用100跟101做&运算,得到的是100,故消去了101左右边的1。1 0 0减1呢?最低位是0,跟十进制减法一样,向高位借。(可以脑补一下十进制100减1的过程)所以二进制1 0 0减1的运算过程如下:最右边的0向右数第二位借1得:2-1=1,右数第二位还是0,却要借给
2020-11-24 16:35:50
123
原创 链表中环的入口节点
题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点(结论1)。**接着让两个指针分别从相遇点和链表头出发,两者都改为每次走一步,最终相遇于环入口(结论2)。**以下是两个结论证明:证明结论1:设置快慢指针fast和low,fast每次走两步,low每次走一步。假如有环,两者一定会相遇(因为low一旦进环,可看作fast在后面追赶low的过程,每次两者都接近一步,最后一定能追
2020-11-15 00:25:53
154
原创 网络原理——TCP/IP协议概述
一、概述TCP/IP协议在OSI七层模型的基础上,将网络分为,物理层,数据链路层,网络层,传输层,应用层。每一层都有各自的职责,所以每一层上都会有一个或多个标准协议,每个协议是完成一项职责的一种方式。以下为数据在传输中的三个场景在局域网内部,结点到结点—广播域所有数据都带着物理地址(MAC地址),保证数据发到指定的节点。比如:在局域网中有A,B,C,D四方,A方想发送数据a至c,A现将数据及MAC发送至交换机,交换机广播a与MAC,BD因为MAC地址不匹配故未收到A。数据的传递如下图描述在局域
2020-11-12 21:30:12
154
转载 MySQL—关于GROUP BY的用法和原理
先来看下表1,表名为test:表1执行如下SQL语句:SELECT name FROM testGROUP BY name你应该很容易知道运行的结果,没错,就是下表2:表2可是为了能够更好的理解 “group by”多个列“和”聚合函数“的应用 ,我建议在思考的过程中,由表1到表2的过程中,增加一个虚构的中间表:虚拟表3。下面说说如何来思考上面SQL语句执行情况:1.FROM test:该句执行后,应该结果和表1一样,就是原来的表。2.FROM test Group BY
2020-11-10 21:58:17
195
原创 网络原理—传输层TCP协议(重点)
一、TCP/IP 的分层二、传输层传输层都是端对端的传输——进程对进程的IP:标识网络上的唯一主机。port:标识主机上的唯一进程。ip + port :标识网络上唯一主机上的唯一进程。四元组:端(IP + port) 对 端(IP + port)四个信息标识了唯一的端对端通信。五元组信息:四元组 + 协议(TCP或UDP),是TCP/IP协议栈内部用来标识传输层上唯一一个端对端通信。1. UDP协议1)特点⭐:不可靠,无连接,面向数据报(对比TCP)不可靠:没有确认机制,也没有重
2020-11-09 21:59:00
582
原创 多线程知识汇总2
一、锁策略乐观锁: 假设认为数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会正式对数据是否产生并发冲突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做。并不总是能处理所有问题,所以会引入一定的系统复杂度。悲观锁: 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。总是需要竞争锁,进而导致发生线程切换,挂起其他线程;所以性能不高。读写锁: 一个读写锁同时只能有一个写者或多个读者(与C
2020-11-08 02:59:28
78
原创 关于重写与重载的对比(转载侵删)
- 重载:重载是在编译器通过方法中形参的静态类型确定调用方法版本的过程。重载是在多态在编译期的表现形式。重载的判定只有两个条件:1)方法名一致2)形参列表不同- 重写:重写在方法运行时,通过调用者的实际类型来确定调用的方法版本。(具体来说,就是子父类中的重写方法在对应的class文件常量池的位置相同,一旦子类没有重写,那么子类的实例就会沿着这个位置往上找,直到找到父类的同名方法)重写只发生在可见的实例方法中:1)静态方法不存在重写,形式上的重写只能说是隐藏。2)私
2020-11-02 16:46:49
72
原创 Mysql——数据库JDBC
基本套路1.注册驱动2.获取连接,循环:查询或非查询操作3.关闭连接public class JDBCtest { public static void main(String[] args) throws ClassNotFoundException, SQLException { //基本套路:1.注册驱动 2.获取连接 循环:查询操作或非查询操作 3.关闭连接 //Tip:一次连接,多次操作 //目的:连接数据库并发送SQL语..
2020-10-29 21:56:42
121
原创 JVM——JVM区域划分与GC
一、JVM1.区域划分JVM在执行java程序时会把它所管理的内存划分为若干个不同的数据区域,这些区域各有各的用途。根据《Java虚拟规范》的规定,Java虚拟机所管理的内存会包含如下几个运行时数据区域。2.JVM的工作二、GC(垃圾收集器)对于程序计数器、虚拟机栈、本地方法栈这三部分区域而言其生命周期与相关线程有关,随线程而生,随线程而灭。并且这三个区域的内存分配与回收具有确定性。 所以GC管理内存,主要管理堆上的内存,并且以对象为单位进行管理。 所以,GC对内存的回收问题就转换为GC回收"
2020-10-29 13:30:25
464
转载 如何将一棵树转化成二叉树
要点:从这棵树的根结点开始,从上到下,看每一个结点,把你正在看的结点的孩子放在左子树,兄弟放在右子树。口诀:将 节点的孩子 放在左子树;将 节点的兄弟 放在右子树。关于这个问题,最好的办法就是记住一道例题了,因为语言不是很好描述,也不容易看懂描述。例题:或者有另一种理解方法:步骤:1.在所有兄弟结点之间加一连线2.对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。如下图所示:...
2020-10-29 11:27:12
897
原创 MySQL——CRUD基础
1.查SELECT 子句——必须有,对列做筛选FROM 子句——可选,代表数据来源WHERE 子句——可选,对行做筛选ORDER BY 子句——可选,对结果排序LIMIT 子句——可选,最终分页注意点:1) * 表示全部列,结果按定义顺序给出。2) SELECT后面可以跟表达式、函数。3) WHERE 条件为真的进行显示,①NULL:如果与 "="配合,值为false;如果想判断一个值是否为null,要配合 is,不能用=。②BETWEEN…AND…:一个左闭右闭的区间。③IN(
2020-10-29 01:24:01
87
原创 JavaWeb-HTTP知识点
1.HTTP协议是一种应用层协议,主要工作在TCP协议之上。2.HTTP协议是目前使用的“主要协议”。3.HTTP协议主要分为请求(Request)+响应(Response)。4.请求类比民众给政府要资源,响应类比政府给民众拨资源。5.格式请求:请求行(请求方法+URL+协议版本) + 请求头(key:value) + 请求体响应:状态行(版本+状态码+状态码描述)+响应头(key:value)+响应体6.常见的请求方法和状态码请求方法状态码...
2020-10-24 16:53:58
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人