自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库基本操作

代码】数据库基本操作。

2022-07-24 17:16:33 289 1

原创 Redis简介与基本数据类型

Redis文章目录Redis一、简介1.Redis简介2.安装与使用二、Redis数据类型1.string类型2.hash类型3.list类型4.set类型5.sorted_set类型一、简介1.Redis简介Redis是一种非关系型数据库,作为关系型数据库的补充。使用关系型数据库,主要存在两方面问题,难以解决海量用户以及高并发的场景。第一个是其性能瓶颈,即磁盘IO性能低下。第二个是扩展的瓶颈,即数据关系复杂,扩展性差,不便于的规模集群。于是出现非关系型数据库Nosql:内存:降低磁盘IO次数

2021-12-05 17:44:23 202

原创 Dubbo概念及使用

文章目录Dubbo一、分布式系统1 互联网项目架构目标2 集群和分布式的概念3 架构演进1.引入库2.读入数据总结Dubbo一、分布式系统1 互联网项目架构目标互联网项目区别于传统项目,其用户多,流量大,并发高,海量数据,易受攻击。而对于用户体验最重要的是网站的速度与稳定性。因此大型互联网项目的架构目标即为:高性能。衡量网站的性能指标:响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。并发数:指系统同时能处理的请求数量。并发连接数:指的是客户端向服务器发起请求,并建立了T

2021-11-20 15:34:06 226

原创 经典排序算法

排序算法文章目录排序算法前言一.冒泡排序二.选择排序三.插入排序四.希尔排序五.快速排序六.归并排序七.堆排序八.计数排序九.桶排序前言基本排序算法(java)一.冒泡排序每次比较,将大值向后两两交换//冒泡 public int[] BubbleSort(int[] array){ for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length-i-1

2021-11-16 17:13:12 413

原创 leetcode(十)---双指针

文章目录前言一、盛水最多的容器二、三数之和三、 删除有序数组中的重复项四、 实现strStr()五、颜色分类总结前言双指针相关题解一、盛水最多的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。class Solution { public int maxAre

2021-09-07 21:12:02 373

原创 leetcode(九)---动态规划

前言动态规划相关题解一、最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。class Solution { public String longestPalindrome(String s) { if(s==null||s.length()<2){ return s; } int start=0; int end=0; int len=1; int n=s.

2021-09-05 16:56:31 171

原创 leetcode(八)---二分查找

文章目录前言一、搜索旋转排序数组二、在排序数组中查找元素的第一个和最后一个位置2.读入数据总结前言二分查找一、搜索旋转排序数组整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2

2021-09-03 20:01:27 409

原创 leetcode(七)---回溯

文章目录前言一、电话号码的组合二、括号生成三、全排列四、子集五、单词搜索总结前言回溯算法一、电话号码的组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。class Solution { List<String> list = new ArrayList<>(); String[] letter_map = {" ","*","abc",

2021-08-17 21:37:54 81

原创 leetcode(六)----递归

文章目录前言一、两数相加二、合并两个有序链表三、Pow(x,n)四、反转链表五、回文链表前言递归一、两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头class Solution { public ListNode addTwoNumbers(ListNode l1, ListNod

2021-08-16 21:53:16 77

原创 leetcode(五)---贪心

文章目录前言一、盛水最多的容器二、跳跃游戏三、买卖股票的最佳时机II四、加油站五 、最大数六 、递增的三元子序列前言贪心算法相关题解一、盛水最多的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。class Solution { public int maxArea(int[] heig

2021-08-16 16:45:16 149

原创 leetcode(四)---排序

前言提示:排序相关题解一、三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。public class Solution { public static List<List<Integer>> threeSum(int[] nums){ List<List<Integer>

2021-08-07 20:53:46 131

原创 leetcode(三)----链表

文章目录链表相关题解一、两数相加二、删除链表的倒数第N的节点三、合并两个有序链表四、复制带随机指针的链表总结链表相关题解一、两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。class Solution{ public ListNode addTwoNumbers(ListNode l1,ListNode

2021-07-22 21:40:07 130

原创 leetcode(二)----dfs与bfs

文章目录前言一、被围绕的区域二、使用步骤1.引入库2.读入数据总结前言深度优先与广度优先相关题解一、被围绕的区域给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。class Solution { public void solve(char[][] board) { int m = board.length; int n = bo

2021-07-07 11:26:37 64

原创 leetcode(一)--- 树

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、验证二叉搜索树二、判断二叉树是否对称三、填充每个节点的下一个右侧节点指针四、二叉树的最大深度五、二叉树最近的公共祖先六、二叉搜索树的第K小的元素前言题解记录,TOP面试题,树相关。一、验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。class S

2021-06-22 20:36:44 196

原创 MyBatis注解开发

文章目录一、MyBatis的常用注解2 MyBatis的增删改查二、复杂映射开发1.一对一查询2.一对多查询3.多对多查询一、MyBatis的常用注解这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作。@Insert:实现新增@Update:实现更新@Delete:实现删除@Select:实现查询@Result:实现结果集封装@Results:可以与@Result 一

2021-06-21 22:21:04 68

原创 MyBatis的多表操作

文章目录一、一对一查询1.一对一查询的模型2.测试环境二、一对多查询1.User对Order2.测试三、多对多查询1.多对多查询模型2.环境搭建总结一、一对一查询1.一对一查询的模型用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户2.测试环境首先根据orde表r创建order实体。创建对应接口创建orderMapper.xml文件在核心配置文件中引入在orderMapper.xml写出对应得

2021-06-21 21:03:58 55

原创 MyBatis核心配置文件深入

文章目录一、typeHandlers标签二、使用步骤1.引入库2.读入数据总结一、typeHandlers标签无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器(截取部分)你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现 org.apache.ibatis.type.TypeHandler 接

2021-06-19 20:45:43 59

原创 MyBatis映射文件深入

文章目录一、动态sql语句1. 动态sql语句概述2. 动态 SQL 之 < if >3. 动态 SQL 之< foreach>二、SQL片段抽取总结一、动态sql语句1. 动态sql语句概述Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL是动态变化的,此时在前面的 SQL 就不能满足要求了。2. 动态 SQL 之 < if >我们根据实体类的不同取值,使用不同的 SQL语句来进行查询。比如在 id如果

2021-06-18 20:38:15 122

原创 MyBatis的Dao层的实现方式

文章目录一、传统开发方式1. 编写UserDao接口2 编写UserDaoImpl实现3 测试传统方式一、代理开发方式1.代理开发方式介绍2.编写UserMapper接口总结一、传统开发方式1. 编写UserDao接口public interface UserDao { List<User> findAll() throws IOException; }2 编写UserDaoImpl实现public class UserDaoImpl implements Us

2021-06-18 20:08:49 155

原创 MyBatis入门操作

文章目录一、什么是Mybatis?二、MyBatis开发步骤1.引入坐标2.创建实体类3.创建UserMapper.xml文件4.编写SqlMapConfig.xml文件5.编写测试类6. 总结三、MyBatis的映射文件概述四、MyBatis增删改查1 插入操作2 修改和删除五、MyBatis核心配置文件层级类型1. environments标签2. mapper标签3. Properties标签4. typeAliases标签六、MyBatis相应API1.SqlSession工厂构建器SqlSessi

2021-06-14 20:48:03 1202 1

原创 SpringMVC的异常处理机制

文章目录一、异常处理的思路二、异常处理的两种方式1.SimpleMappingExceptionResolver2.自定义异常处理器总结一、异常处理的思路系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,如下图:二、异

2021-06-08 19:55:49 66

原创 SpringMVC拦截器

文章目录一、拦截器的作用二、拦截器与过滤器的区别三、拦截器的基本使用3.1 创建相应项目配置3.2 创建相应的拦截器3.3 在spring-mvc.xml文件中进行相应的配置四、拦截器链五、拦截器方法说明一、拦截器的作用Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调

2021-06-08 18:52:35 45

原创 Spring JdbcTemplate的基本使用

文章目录一、 JdbcTemplate概述二、开发步骤1.导入相关坐标2.创建数据库表和实体3.创建JdbcTemplate对象4.执行数据库操作2.读入数据三 Spring产生JdbcTemplate对象三 JdbcTemplate常用操作总结一、 JdbcTemplate概述它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nos

2021-06-01 21:34:23 111

原创 SpringMVC(二)--数据响应

文章目录一、SpringMVC的数据相应方式1.1 页面跳转1.2 回写数据1.3 要点总结二、SpringMVC获得请求数据2.1 获得请求参数2.2 获得基本类型参数2.3 获得POJO类型参数2.4 获得数组类型参数2.5 获得集合类型参数2.6 乱码问题解决2.7 参数绑定注解@requestParam2.8 获得Restful风格的参数2.9 自定义类型转换器2.10 获得Servlet相关API2.11 获得请求头2.12 文件上传准备2.13 文件上传总结一、SpringMVC的数据相应

2021-05-31 22:34:36 104

原创 Spring框架(三)--注解开发与junit整合

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录一、Spring注解开发1.1 Spring原始注解二、使用步骤1.引入库2.读入数据总结一、Spring注解开发1.1 Spring原始注解Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开

2021-05-27 22:24:33 80

原创 Spring(二) API与配置数据源

Spring框架(二)文章目录Spring框架(二)一、Spring相关API1.1 ApplicationContext的继承体系1.2 ApplicationContext的实现类1.3 getBean()的实现类二、使用步骤1.引入库2.读入数据总结一、Spring相关API1.1 ApplicationContext的继承体系applicationContext:接口类型,代表应用上下文,可以通过其实例获得 Spring 容器中的 Bean 对象1.2 ApplicationCont

2021-05-22 21:34:21 146

原创 Spring框架(一)---入门

Spring框架文章目录Spring框架前言一、Spring简介1.Spring是什么?1.Spring发展历程3.Spring优势3.Spring体系结构二、spring开发简介1.开发步骤2.读入数据总结前言记录spring框架相关内容一、Spring简介1.Spring是什么?Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming

2021-05-16 19:03:18 106

原创 python并发编程(四)

python并发编程(四)文章目录python并发编程(四)一 GIL全局解释锁二 协程一 GIL全局解释锁1 概念GIL全局解释锁:在cpython解释器中,同一个进程下开启多线程,同一时刻只能有一个线程执行,无法利用多核优势gil并不是python的特性,而是在实现python解释器(cpython是大部分环境下默认的python执行环境)时所引入的一个概念。2 介绍GIL的本质也是一把互斥锁,其本质也是将并发编程串行,以此来控制同一时间内共享数据只能被一个任务修改,进而保证数据安全

2021-02-09 18:57:03 316

原创 python并发编程(三)

python并发编程(三)文章目录python并发编程(三)一 线程二 python中线程的开启三、多线程socket服务端:客户端:四 线程的其它方法五 守护线程六 信号量七 Event一 线程进程是用来把资源整合在一起的,而线程才是cpu上的执行单位。多线程的概念就是,在一个进程中存在多个控制线程,多个线程共享该进程的地址空间,相当于一个车间内的多条流水线。整死因为线程是共用一个地址空间的,因此在开辟新的线程时,无需再次申请新的内存空间,相对于进程而言,开销更小。进程之间是竞争关系,线程

2021-02-08 20:52:05 59

原创 python并发编程(二)

python并发编程(二)一 进程隔离是为了保护操作系统中进程互不干扰的一组不同的硬件和软件技术这个技术是为了避免进程A写入进程B的情况发生。进程的隔离实现,使用了 虚拟地址空间。进程A的虚拟地址和进程B不同,这样就防止进程A将数据信息写入进程B。禁止进程间内存相互访问。二 守护进程守护进程会随着主进程的结束而结束。为主进程创建守护进程后守护进程会在主进程代码执行结束后终止。守护进程内无法再开子进程。import osimport timefrom multiprocessing impo

2021-02-08 19:37:23 120

原创 python并发编程(一)

python并发编程(一)记录并发编程相关知识一 进程进程:正在进行的一个过程或者任务,负责执行任务的是cpu。同一个程序进行两次,则是两个进程。一个cpu在一个时刻只能执行一个任务,而不论进程还是线程都是一种任务而已****进程的调度:1.先来先服务调度算法:先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)。

2021-02-06 16:26:34 54

原创 python装饰器

python装饰器简单来说装饰器是用来给被装饰对象添加新功能的装饰器可以分为有参装饰器和无参装饰器两种,函数嵌套+函数闭包+函数对象无参装饰器模板def outter(func): def wrapper(*args,**kwargs): #1 调用原函数 #2 为其增加新功能 res=func(*args,**kwargs) return res return wrapper 有参装饰器模板def deco(x,y,z):

2021-01-17 14:57:28 96

原创 python 迭代器和生成器

一 迭代python中‘’万物皆可迭代‘’ 字符串 列表 元组 字典。 只要是可迭代对象都可迭代内置__iter__方法的都是可迭代对象{'name':'小明'}.__iter__{1,2,3}.__iter__……# 1、迭代字符串for char in 'python' : print ( char , end = ' ' )# p y t h o nprint('\n')# 2、迭代 listlist1 = [1,2,3,4,5]for num1 in list1

2021-01-15 17:32:20 85

原创 python匿名函数

用lambda定义匿名函数基本语法lambda [arg1 [,arg2,.....argn]]:expression例sum = lambda num1 , num2 : num1 + num2;print( sum( 1 , 2 ))#结果为 3 尽管 lambda 表达式允许你定义简单函数,但是它的使用是有限制的。 你只能指定单个表达式,它的值就是最后的返回值。也就是说不能包含其他的语言特性了, 包括多个语句、条件表达式、迭代以及异常处理等等num2 = 100sum1 = l

2021-01-15 14:27:44 73

原创 python爬虫bs4 xpath数据解析

数据解析在爬取网页后,通常需要将爬取到的内容进行分割提取,拿到我们想要的文本内容或者相应的地址url。bs4数据解析安装bs4模块,并导入from bs4 import BeautifulSoup步骤详情见注释fp =open('/.test.html','r',encoding='utf-8')#将本地的html文档中的数据记载到该对象中soup =BeautifulSoup(fp,'lxml')print(soup.a)# 结果拿到a标签内容 soup.tagn

2021-01-15 13:16:29 157

原创 python正则表达式

python正则表达式笔记学习正则表达式笔记代码如下:import re#match 匹配以xxx开头的字符串,第一个参数是正则,第二个是所需要匹配的字符串strdata='python is best'res=re.match('y',strdata,re.I)#re.I忽略大小写print(res)#对象res.group()#匹配的值res.groups()#元组形式直接输出(不支持索引)res.group(1)#如果有多个匹配结果以元组的形式存放在哪group对象中r

2021-01-12 20:06:15 67

空空如也

空空如也

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

TA关注的人

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