自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Redis】Client端下的基本操作以及五大基础数据类型中List与String的常用操作

Client下的各种命令进入client端的步骤切换到对应redis所安装的目录,这里安装在/usr/local下切换至其bin目录中通过redis-server [配置文件]启动服务器端通过redis-cli进入客户端这里的配置文件指的是在etc目录下自己定义的redis.conf文件,一般可以自己配置redis选项。其中为了让服务端能在后台启动,注意这里一个配置这里将daemonize设置为yes 则可以通过该配置文件让redis服务端在后台运行。而不需要总是卡在默认条件下的时候那种

2021-09-11 17:08:14 437

原创 【SpringBoot】 - 【8】Junit5

Junit注解使用方法@DisplayName位置:标注在类上,或测试方法上@BeforeEach和@AfterEach放在单独开的两个方法@BeforeAll与@AfterAll注意标注方法需要加static 修饰,而且他的作用只会被执行一次,而BeforeEach和AfterEach则会执行多次@Disabled标注后对应的方法将不会被运行@TimeOut标注后设定value的值,表示该方法超过这个value代表的时间后表示超时,unit可以设定为秒或者毫秒...

2021-08-11 21:10:18 100

原创 【SpringBoot】 - 【7】Springboot整合ORM框架与Druid数据源

整合在使用Springboot开发Web应用的时候一般需要使用MVC架构,而其中设计三个层分别用Springboot的三个注解代表Controller层Service层Dao层(mapper)第一步:导包导包在maven中进行,在项目中要注意项目成员的mysql版本要一致,否则会导致出现版本不一致的问题。特别是在Springboot的开发背景下。springbootStarter包会对mysql的驱动进行版本仲裁。特别明显的是mysql8与mysql5之间会出现驱动不一样的问题。也可以自

2021-08-11 16:41:25 251

原创 【SpringBoot】 - 【6】原生组件注入

方法一:Servlet第一步:定义一个原生的Servlet并且让他标注注解 @WebServlet。在@WebServlet注解中有一个urlPatterns表示能映射的路径如@WebServlet(urlPatterns = "/xxx")public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse

2021-08-10 23:24:44 113

原创 【SpringBoot】 - 【5】拦截器应用,文件上传以及异常处理

拦截器应用配置一个配置类。在配置类中通过重写addInterceptors方法添加拦截器@Configurationpublic class AdminConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new loginIntercepter())

2021-08-08 00:43:18 104

原创 【SpringBoot】 -【4】 请求参数注解

@PathVariable用途:放在处理器方法的参数表中先看看源码的字面描述第一行表示这个方法的参数应该被绑定到URL的模板变量(好像翻译的有点奇怪 )中。这指的就是上述{name}和{pwd},就是所谓的模板变量。而可以通过这个注解实行绑定。在第二段话表示,如果方法参数是一个Map<String,String>类型,这个map就会被所有的路径变量的<名字:值>所构成。用法1:如: @RequestMapping("/user/{name}/{pwd}")

2021-08-03 22:12:17 228

原创 【SpringBoot】 - 【3】静态资源配置

配置1.spring.mvc.static-path-pattern该配置属性默认为/**假设修改为:spring.mvc.static-path-pattern=/static/**则表示所有的静态资源访问必须以static作为前缀2.spring.resources.static-locations修改为spring.resources.static-locations=classpath:/static表示只有在类路径下的static文件夹下的静态资源才可被识别为静态资源,其他路

2021-08-01 17:41:51 260

原创 【SpringBoot】- 【2】基本注解

指定包可以通过在入口中@SpringBootApplication配置对应路径的包@SpringBootApplication(scanBasePackages = "ccc.xxx")或者使用@ComponentScan("")@Configuration与@Bean@Configuration是标记在一个类上,使其成为配置类。在配置类内部可以通过定义public方法,并在上面标注 @Bean 从而使得IOC容器中注入进一个名字为方法名,返回值类型是方法类型,值是返回的对象的一个

2021-07-30 23:26:32 59

原创 【SpringBoot】- 【1】通过parent做依赖管理

依赖管理maven一般是通过parent标签做依赖管理,如果子项目继承了父项目就不需要再写版本号了在自定义pom.xml中 <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.4.5</version

2021-07-29 22:44:58 345

原创 SpringMVC【3】拦截器使用方法

拦截器(HandlerInterceptor)使用步骤:1.定义一个普通类,并实现HandlerInterceptor接口2.重写里面三个方法:preHandle,postHandle,afterCompletion3.声明该拦截器(可以有0/多个) <mvc:interceptors> <mvc:interceptor><!-- 指定拦截地址 **表示任意的字符,文件或多级目录 --&

2021-07-27 17:59:03 103

原创 SpringMVC 【2】有关静态资源的小细节

前几天在整理SSM项目的时候发现了一大堆BUG。发现都是静态资源访问惹的祸。在今晚准备睡觉的时候突然想起需要记录一下,避免以后忘记。事发原因:在JSP中无法访问到JQuery文件。静态无法访问的情况由于习惯于在web.xml中将DispatcherServlet的映射路径设置为/所以遇到了很多的问题。以下均是建立在映射为”/“的情况下。直接说结论。如果遇到静态资源无法访问的情况有两种解决方案1.配置在Spring配置文件中的default servlet加入<mvc:default-

2021-07-24 23:45:44 68

原创 【Leetcode】 - 95 不同的二叉搜索树

95.不同的二叉搜索树题面:给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。示例:先代码class Solution { public List<TreeNode> generateTrees(int n) { if(n==0)return new ArrayList<TreeNode>(); return generate(1,n);

2021-07-24 12:21:39 92

原创 SpringMVC 【1】 基础应用笔记

配置配置是基本固定的。配置web.xml <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name&gt

2021-07-19 09:42:16 59

原创 【Spring】 事务管理【8】声明式事务管理

事务管理事务管理又分为两种声明式事务管理编程式事务管理实现方式分为两种:注解式配置文件式声明式事务管理使用步骤步骤1:配置Datasource以及JdbcTemplate <context:component-scan base-package="Day12"/> <context:property-placeholder location="db.properties"/> <bean id="dataSource

2021-07-16 17:42:52 99

原创 【Spring】 IOC应用 【7】自动配置和开启注解以及完全注解开发

自动配置在bean属性里头有一个属性叫autowire,常用的值有以下几种取值:byName,byTypebyName表示该bean的属性(property)根据其他bean的名字进行自动装入。byType表示该bean的属性根据其他bean的类型进行自动装入限制:在一个容器中同一类型的bean只能有一个,否则报错。开启注解的配置在对应的ApplicationContext中引入context引用在xml文件中加入:<context:component-scan base-p

2021-07-13 15:17:28 114

原创 【Spring】 IOC应用 【6】bean的作用域与生命周期

IOC应用概念:单例:通俗来说通过IOC容器获得的多次获取的对象是单例的。(默认情况下)检测:定义一个Apple类并且set注入进IOC容器,如以下代码:public class Apple { public String getAppName() { return appName; } public void setAppName(String appName) { this.appName = appName; } p

2021-07-12 15:05:01 62

原创 《OS:PV操作 - 读者写者问题》

经典同步问题读者写者问题背景:有多个读者,也有多个写者。要保证其互斥性。要求应用对应的PV操作实现。定义:P,V操作均为原子操作原子操作是在执行的过程中,要么全做,要么全不做,不可被CPU打断P操作:简单说就是对一个信号量进行减一,如果小于零,表示当前无资源可用。等待V操作:简单说就是对一个信号量进行加一。信号量:一定程度上表征资源(不可抢占)的数目。假设题目:有多个人正在写文件,而在同一个系统给下有多个用户在读文件。试用PV操作模拟,并保证之间的互斥性。注:与上篇文章生产者消费者

2021-07-05 18:55:04 1611

原创 《OS:PV操作 - 生产者消费者问题》

经典同步问题生产者消费者问题背景:有多个生产者,也有多个生产者。要保证其互斥性。要求应用对应的PV操作实现。定义:P,V操作均为原子操作原子操作是在执行的过程中,要么全做,要么全不做,不可被CPU打断P操作:简单说就是对一个信号量进行减一,如果小于零,表示当前无资源可用。等待V操作:简单说就是对一个信号量进行加一。信号量:一定程度上表征资源(不可抢占)的数目。假设题目:桌子上有个能放得下10个糖果的空盘子,爸爸不停地向盘中放牛奶糖与酥糖,儿子不停地从盘中取出牛奶糖吃,女儿不停地从盘中

2021-07-05 17:30:21 657 1

原创 《OS:调度》

调度处理机调度分为三种类型1. 高级调度2. 中级调度3. 低级调度高级调度高级调度,又叫作业调度。目的是为了从一批输入的作业中选出若干作业,分配必要的资源。最后将这些作业调入内存,形成一个一个的进程(OS也会创建对应的PCB用来标识他们的存在,而PCB也会在低级调度中有所发挥)。作业表示的是用户的计算任务。作业从提交到完成任务吼退出系统,中间历经四个状态提交后备执行完成提交状态:例如以前输入程序是通过读卡器读取作业卡片读入的。这个时候被读取的作业叫做提交状态。简单一点说

2021-07-03 19:11:51 321

原创 《OS:死锁预防与死锁避免》

死锁预防法1:破坏进程间的互斥条件这个方法简单粗暴,由于死锁产生的原理即是因为不可抢夺的资源而产生的。程序之间存在互斥性。该方法就是让不可抢夺变成可抢夺。这样看起来有效,但是实际上因为某些资源本身具有不可抢占性而往往不能被抢占。该方法也不能被使用。例如在刻光盘的时候,我们难道去剥夺他的占有权吗,这会导致灾难性的后果,就像我在刻录一个计算机网络的资料,突然被剥夺了,刻到一半刻去了操作系统的内容,这显然是不合理的。这就是因为资源本身具备不可抢占性。法2:破坏占有且等待条件有两个实施方案:预分配资源策

2021-07-03 15:51:37 288

原创 《OS:死锁产生及其概念》

死锁在生活中也有体现:在一条窄巷子中,小明与小红相向而行。小明想去小红身后的冰淇淋店买雪糕;小红想去小明身后的水果店买荔枝。小明和小红关系不好,都不肯退让。结果他们如果没有外人的协助下他们就堵在那了。产生原因在计算机中,产生死锁的原因是由于资源分配不合理或者是资源总量不足而导致的。而资源又分为两种可抢占式资源不可抢占式资源1.可抢占式资源这类资源即使是被进程所占用时,也能被剥夺。故称为可抢占式2.不可抢占式资源这类资源是被进程所占用时,不能够被剥夺。故称为不可抢占式进程对资源的利

2021-07-01 15:21:40 90

原创 【Spring】 IOC应用 【5】 工厂Bean

Bean的种类普通Bean我们之前写的Bean都是普通Bean特点都是:写的Class类型,返回类型就是这个类型。说白就是:普通Bean定义什么类型,返回就是什么类型工厂Bean特点是:写的Class类型,可以和返回类型不一样用法:对应类实现一个FactoryBean的接口,并且实现三个方法待补充...

2021-06-19 11:01:31 60

原创 【Spring】 IOC应用 【4】注入集合属性

注入集合属性环境:定义一个Mul类数组配置文件中,关于数组的注入如下:<bean id="Mul" class="Day7.Bean.Mul"> <property name="set"> <null/> </property> <property name="map"> <null/> </property&

2021-06-19 10:47:42 72

原创 【Spring】 IOC应用【3】外部Bean与内部Bean与级联赋值

外部Bean先创建环境,这里创建了一个UserDao类和一个UserService类后面的样例都采用这两个类public class UserService { private UserDao userDao; public void add(){ userDao.add(); System.out.println("userservice : add "); }}public class UserDao { publi

2021-06-19 10:01:35 219

原创 【Spring】IOC应用 【2】 名称空间与注入空值以及特殊符号的注入

名称空间在上文中,DI的方式有两种,一种是通过无参构造先创建对象,然后通过set方法注入到对象中;还有一种是通过有参构造创建对象。分别对应的标签是以及<constructor -arg>下面提供另外一种写法(不常用)p名称空间注入使用方法:在标签中加入xmlns:p="http://www.springframework.org/schema/p"这样就能正常使用p名称空间为了让示例更具说服力,修改了一下注入对象的属性在xml中依然可以使用以及<constructo

2021-06-18 16:12:20 104

原创 【Spring]】IOC应用【1】 - 创建对象与DI的初接触

IOC概念:控制反转:目的是为了降低程序的耦合度。IOC容器可以存放多个Bean,而Bean的注入又有两种实现方法实现:XML注解应用场景当一个在一个类中的一个方法,需要调用到另外一个对象中的方法。传统的方法是在方法内部new 一个对象出来,然后通过这个对象调用目的方法。而这种耦合度过于高。所以才需要IOC来降低程序的耦合度。如代码段class Book{ public getBook(){ ... }}class BookStore{ public void add(

2021-06-18 15:36:54 79

原创 【Leetcode 877. 石子游戏】DP求解

题面:亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。在本题中,由于本题的博弈性质,可以直接先手必胜,所以答案必然为true可以

2021-06-16 11:42:05 203

原创 《OS:TLB与多层级页表》

TLB是什么?TLB是基于cache思想的一个设备,目的是为了增加访存速度。在上文中,由于页表本身也是存放在内存中的数据,如果要通过逻辑地址->物理地址的转换。那么整个访存过程应该是:可见,在整个程序通过逻辑地址访存的过程中其实是经过了两次内存的访问。由于CPU本身速度大于内存速度。所以执行的效率就变慢了。解决的方案的思路是计组中内存与CPU之间的处理方案。我们在CPU上提供一个TLB,这个TLB是由相关存储器实现的,由于其靠近CPU,速度很快,所以访存速度一定程度上得到了减少TLB的结

2021-06-15 16:34:48 802

原创 《OS:分段分页机制》

《非连续的地址管理机制》概念一 页帧 页帧是物理地址的表现形式,用一个二元组<f,s>表达,页帧的大小一般是2的指数幂。 f表示的是该页帧的页帧号,s表示的是该访问地址在该页帧中的偏移量。 *注意:页帧号是从0开始计算的。* 例:要求<3,6>代表的物理地址。设地址空间用16bit表示,9bit表示页帧的大小。 答:该二元组表示,页帧号为3,在该页帧中的偏移是6。也就是说在该页前有(0,1,2)三个页帧, 每个页帧占据的空间用9个bit表示,也就是说:

2021-06-13 10:49:26 197

原创 《面向实验编程》-《图论》-<Kruskal与Prim>

针对我们学校的实验报告,写了这篇"日记"我直接放题#include<iostream>#include<vector>#include<set>#include<unordered_set>#define autor_congCongcong#define MAX_INTEGER_OF_GRAPH 99999using namespace std;typedef struct Graph { int edge[100][100]; in

2020-12-20 22:38:00 206 3

原创 【DP1】钢条分割详解

[DP]原文再续,书接上一回,上一篇文章的背包讲的有点过于狭义了,我就某一类问题解释一种算法的思想:动态规划(Dynamic Programming)。简称DP。我们在生活中不免会遇到一类问题,求什么什么的最大,什么什么的最小。在这类问题中,如果有算法基础的同学可能会知道贪心算法,但是贪心算法是无法在所有的情况下保证最优解的,而DP是可以的。那么DP是什么?我们直接用一道题目来举例子去解释DP。这里采用的例子引用自CLRS中的钢条分割问题。我只做一个概括性复述。有兴趣的同学可以去看看原著*(这里强

2020-11-20 19:50:58 1324 1

原创 DP的开端【 01背包问题】

【背包】今天来讲讲背包问题背包问题是DP问题的一种。而DP问题离不开三个特性:最优子结构无后效性重叠子问题在讲背包问题之前,我们先讲讲斐波那契数列。总所周知斐波那契数列的递推公式是F(n)=F(n-1)+F(n-2)但是我们可以画个图看看,在使用递归求解斐波那契数列第N项的时候会发生什么问题写到这里应该就很清楚了。我们要求F(n)一定要递归求得F(n-1)和F(n-2),但是我们在求F(n-1)的时候,我还需要再递归求一个F(n-2),那么时间的开销就变大了许多许多。这就是上面DP

2020-10-18 13:32:57 1039 5

原创 浅谈【KMP算法】

KMP算法谈到KMP需要先说一下BF算法。BF算法是一种暴力匹配的算法。BF算法的核心步骤1. 回溯2. 校验#include<iostream>using namespace std;int BF(string mainString, string modelString) { int index = -1; int lenMain = mainString.size(); int lenModel = modelString.size(); int pMain =

2020-10-17 14:26:17 192

原创 ArrayList慢慢更

ArrayList这也是我写的第一篇文章,以后估计也会写一下Arraylist之类的文章,主要是为了方便很多学完C++然后去学Java的同学去学习。各位带佬轻点喷。首先,ArrayList本身是集合中的一种容器所以我们先往上溯源到Collection类,Collection底下有两个主要的子类,分别是Set以及List,两个子类最大的区别是,能否存储相同的对象。Set代表了不能存储相同对象的集合的超类。List则相反。这里只要说List。List是ArrayList的父类。而ArrayList

2020-10-13 20:30:26 147 1

空空如也

空空如也

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

TA关注的人

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