自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小枫哥的博客

驻马处皆故里 深巷卖杏花

  • 博客(144)
  • 资源 (2)
  • 收藏
  • 关注

原创 CSP 2019-12-2 回收站选址

Java代码import java.util.Scanner;import java.util.Set;import java.util.TreeSet;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); Set<String> set = new Tree

2020-08-18 22:01:19 320 1

原创 UML简介(没写完

统一建模语言(Unified Modeling Language,UML)是“绘制软件蓝图的标准化语言。UML 用来可视化、描述、构造和文档化软件密集系统的 人工制品”[Boo05]。如果了 解 UML 的词汇(图示元素和它们的含义),就可以很轻松地理解和描述一 个系统,并向他人解释该系统的设计。Grady Booch、Jim Rumbaugh 和 Ivar Jackson 在 20 世纪90 年代中期 开发出了UML 语言。目前的标准是 UML 2.3 ,也是 ISO 标准。因为这个标准很新,所以

2020-05-31 15:14:57 3754 1

原创 随机选择算法

问题如何从一个无序数组中求出第 K 大的数(为了简化讨论,假设数组中的数各不相同)。例如,对数组 { 5,12,7,2,9,3 }来说,第三大的是 5,第五大的是 9随机选择算法概念最直接的想法是对数组排序,然后取出第 K 个。这样做法时间复杂度 O(nlogn),虽然看起来很好,但是还有更优的算法。随机选择算法,对任何输入都可以达到 O(n)的期望时间复杂度随机选择算法的原理类似于 随机快速排序假设主元为 A[p],当对 A[left,right] 执行一次 randPartition 函

2020-05-25 13:53:36 4122 2

原创 活用递推

许多题目需要细心考虑是否可能用到递推关系例如就一类涉及序列的题目来说。假如 序列的每一位所需要计算的值 都可以通过 该位左右两侧的计算结果得到,那就可以考虑所谓的“左右两侧的结果”是否可以通过递推进行预处理来得到,这样在后面的使用中就可以不必反复求解例题:PAT B1040/A1093 有几个PAT题目描述字符串 APPAPT 中包含了两个单词“PAT”,其中第一个PAT是由第二位(P)、第四位(A)和第六位(T)组成的;第二个PAT是由第三位(P)、第四位(A)和第六位(T)组成的。现给定字符串,

2020-05-23 12:40:36 214

原创 打表

打表是典型的 空间换时间,一般指将所有可能需要用到的结果事先计算出来存入表,后面如果需要就直接查表。常见方法有以下几种:程序中一次性计算所有需要用到的结果,之后需要用到直接取最常用的方法如一个大量查询 Fibonacci 数 F(n) 的问题中,如果每次查询都要计算是很耗时的,假设查询 Q 次,时间复杂度即为 O(nQ)。如果进行预处理,即把所有的 Fibonacci 数预先计算并存在数组中,每次查询就只要 O(1),Q 次查询的时间复杂度 O(n+Q)在程序 B 中事先算好需要用到的

2020-05-23 12:39:48 1323

原创 PAT-B1035/A1089-Insert or Merge(25)

题目根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?输入输出输入格式:输入在第一行给出正整数 N (≤100);随后一行给出原始序列的

2020-05-20 16:52:08 165

原创 Two Pointer:快速排序

首先解决的问题快速排序平均时间复杂度 O(nlogn)它的实现要先解决解决了这样的一个问题:对一个序列 A[1]、A[2]、……、A[n]。调整序列中元素的位置,使得 A[1](原序列的 A[1],下同)的左侧所有元素都不超过 A[1]、右侧所有元素都大于 A[1]。例如序列 { 5,3,9,6,4,1 } 来说,可以把 A[1]=5 调整到满足条件的位置,如序列 { 3,1,4,5,9,6 },这样 5 的左侧元素都不超过它,右侧元素都超过它,如图 4-10这个问题很多方案解决,下面给出速度

2020-05-19 07:16:49 311

原创 Two Pointer:归并排序

归并排序是一种基于“归并”思想的排序方法,本节主要介绍其中最基本的2-路归并排序。2-路归并排序的原理是,将序列两两分组,将序列归并为 n/2 个组,组内单独排序;然后将这些组再两两归并,生成 n/4 个组,组内再单独排序;以此类推,直到只剩下一个组为止。归并排序的时间复杂度为O(nlogn)。例子将序列 { 66,12,33,57,64,27,18 }进行2-路归并排序① 第一趟排序:两两分组,得到四组:{ {66,12}、{33,57}、{64,27}、{18} }。组内单独排序,得到新序列

2020-05-17 15:08:57 161

原创 Two Pointer

很少有教材拿出来讲,因为Tow Pointer不像是一种算法,更像是一种编程思想广义上的 Two Pointer 是利用问题本身与序列的特性,使用下标 i, j 对序列进行扫描,以较低复杂度(一般是O(n))解决问题给出以下两个例子找出递增序列中满足a+b=M的a和b的位置问题给定一递增正整数序列和一正整数M,求序列中两个位置的数:a 和 b,满足:a+b=M比如给定序列 { 1,2,3,4,5,6 },M = 8,就存在 2+6=8、3+5=8一般解法直观解法是二重循环for(int

2020-05-17 13:47:47 220

原创 二分:快速幂

问题给定三个正整数 a、b、m( a<109,b<106,1<m<109),求 ab % m 的值一般写法为了防止溢出使用long,Java代码,long为64位,等同于 C语言 的 long longpublic long binaryPow(long a, long b, long m){ long ans = 1; for(int i = 0; i < b; i++){ ans = ans * a % m; }

2020-05-15 13:42:03 254

原创 单进程死锁示例

当无 IO Buffer 时有可能出现单进程死锁进程1 向 IO 请求数据,并告诉IO设备 返回的数据 应该送到 进程1 的哪个地址IO设备去IO数据了,进程1就会阻塞等待,这时如果 进程1 被挂起,IO设备并不知道 进程1 被挂起了,IO设备还是会返回数据到 刚才进程1规定的地址因为数据没有被 进程1 接收到,所以数据就丢失了之后 进程1 被换回,这种情况下 IO设备认为自己返回了数据,就不会再返回数据;进程1 没有接受到数据,他就会一直阻塞,这就造成了 单进程死锁...

2020-05-15 12:54:09 1507 1

原创 PAT-A1044-Shopping in Mars (25)

无代码题目描述Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the payment, the chain can be cut at any position for only once and some of the diamonds are t

2020-05-13 13:44:42 175

原创 PAT-B1030/A1085-完美数列 (25分)

题目描述给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入格式输入第一行给出两个正整数 N 和 p,其中 N(≤105)是输入的正整数的个数,p(≤109)是给定的参数。第二行给出 N 个正整数,每个数不超过 109。输出格式在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。输入样例10 82 3 20 4 5 1 6 7 8 9输.

2020-05-12 14:49:33 250

原创 二分:寻找有序数列第一个满足某条件的元素的位置

问题有这样的问题:如果递增序列 A 中的元素可能重复,那么如何对给定的欲查询元素x,求出序列中第一个大于等于x的元素的位置L以及第一个大于x 的元素的位置R。序列中第一个大于等于x的元素的位置先看第一问例如对下标从0开始、有5个元素的序列 {1,3,3,3,6}来说,如果要查询 3,则应当得到 L=1、R=4;如果查询 5,则应当得到L=R=4;如果查询 6,则应当得到 L=4、R=5;而如果查询8,则应当得到L=R=5。显然,如果序列中没有x,那么L和R也可以理解为假设序列中存在x,则x应当在的

2020-05-12 14:39:18 687

原创 偏向锁的两次竞争

使用 synchronized() 时,括号中的对象就是我们所谓的 锁其实真正的 锁 的信息,存在与括号中对象的对象头中对象头的组成:内容说明Mark Word存储对象的 Hashcode、锁信息、分代年龄Class Metadata Address存储对象类型数据的指针Array length数组的长度(如果对象是数组的话)主要看 MarkWor...

2020-05-06 16:37:49 523

原创 oauth2密码模式流程-获取token

2020-04-14 20:10:54 1176

原创 笔记:2020-04-13

2020-04-14 20:08:41 128

原创 笔记:2020-04-11

2020-04-12 20:23:57 101

原创 哲学家进餐问题:阻塞第五人预防死锁伪代码

Program diningphilosophers;Var fork:array [0...4] of semaphone (:=1); room : semaphore (:=4);i: Integer;procedure philosopher (i: Integer);begin repeat think; /*哲学家正在思考*/ wait(room); /*第5位哲学...

2020-04-10 11:58:35 472

原创 笔记:2020-04-09

文章目录Class ThreadLocal< T >Class Instantepoch-secondsSimpleDateFormat 是线程不安全的类……必须回收自定义的ThreadLocal变量(try-catch)考虑锁的性能损耗,能不用就不用阻塞上锁要在try之外,try和lock之间不可抛异常尝试获取锁后,进入业务代码要判断是否获取到Optimistic Locking(乐...

2020-04-09 21:36:05 148

转载 什么是一方库、二方库、三方库

一方库、二方库、三方库说明:一方库:本工程中的各模块的相互依赖二方库:公司内部的依赖库,一般指公司内部的其他项目发布的jar包三方库:公司之外的开源库, 比如apache、ibm、google等发布的依赖...

2020-04-07 20:23:16 312

原创 PaaS/IaaS/SaaS

简单理解为:IaaS:基础设施即服务某公司提供硬件,你在硬件之上自己开发,这家公司提供的就是IaaSPaaS:平台即服务某公司提供了一些软件的解决方案,这家公司提供的就是PaaSSaaS:软件即服务某公司做好了软件你用,这家公司提供的就是SaaS...

2020-04-05 15:15:19 208

原创 TCP三次握手四次挥手

TCP数据报为了理解TCP握手和挥手,我们可以简单的认为,数据报就是每次握手/挥手时相互传送的信息,每次都传送一个数据报,需要传送的信息就存在数据报当中,其中比较重要的字段有这样的几个:序号:随即生成的,用来唯一标志当前数据报,可以理解成数据报的ID确认号:确认号=刚才接收到的对方的序号+1,具体功能通过下面的握手/挥手过程就可以明白标志位:用来标志当前数据报的功能,可以同时标志很多功能...

2020-04-05 12:55:35 97

原创 自增主键如何插入新的数据

设为自动增加以后就不用管他了,插入的时候只用插入其他内容比如你有个学生(student )表,ID自增,他还有姓名(name)和年龄(age)属性那么插入的时候只要insert into student (name,age) values('张三',25) ;...

2020-04-04 21:43:08 2081

原创 计算机本科阶段网课推荐

操作系统:中国大学Mooc《计算机操作系统》蒲晓蓉数据库:Bilibili《数据库原理及其应用》东南大学 徐立臻数字逻辑:Bilibili《数字电路与数字系统》西安电子科技大学 任爱锋软件工程:Bilibili 《软件工程》清华大学 刘强数据结构:中国大学Mooc《数据结构》 浙江大学 陈越、何钦铭计算机组成原理:Bilibili《计算机组成原理》哈尔滨工业大学 刘宏伟模...

2020-04-04 11:46:30 2203

原创 进程调度:生产者/消费者问题(消息传递方式)伪代码

代码参考来源:中国大学Mooc《计算机操作系统》蒲晓蓉

2020-04-03 18:39:51 630

原创 进程调度:读/写者问题-读者优先(信号量方式)伪代码

代码参考来源:中国大学Mooc《计算机操作系统》蒲晓蓉

2020-04-03 15:14:38 1422

原创 进程调度:生产者/消费者问题(信号量方式)伪代码

代码来源:中国大学Mooc《计算机操作系统》蒲晓蓉

2020-04-03 14:32:34 1176

原创 Maven报错:setting.xml模板(带镜像)

这个方法能解决很多莫名其妙的瞎Jer报错方法就是配置镜像,我知道你们可能是配置过镜像发现不管用我之前遇到问题也是,但是不知道为什么把镜像替换成这样就真的管用……这个镜像治好了我多年的小脑萎缩<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> &lt...

2020-04-02 21:42:47 1033 2

原创 oauth2授权码模式流程

以第三方应用请求QQ资源为例

2020-03-31 15:09:16 626

原创 Spring上下文配置

请先了解Spring的两个上下文两个上下文的配置方法都一样,这里以DispatcherServlet为例默认按名字找DispatcherServlet配置文件程序清单7.3:ContextLoaderListener和DispatcherServlet各自都会加载一个Spring应用上下文。上下文参数contextConfigLocation就是用来指定要被加载的XML文件的地址这个...

2020-03-21 00:47:12 2243

原创 CAS

简介简单来说,CAS是一种操作,Java的很多方法实现了这种操作,我们通常习惯性把这些方法也叫做CAS那么,CAS具体指的是什么操作呢?操作CAS全称是比较并替换(Compare and Swap),它的名字其实就是它的操作:读取地址Ad所存的值B我们给定三个值:地址Ad,这个地址可以存数据我们认为这个地址应该存放的值B要替换的值C比较Ad处所存的值和B,如果相等,就把...

2020-03-20 10:49:35 168

原创 ABA问题

多图警告!文章目录简介具体问题出现的情况ABA问题的后果解决方法简介CAS会出现ABA问题CAS如果比较发现B和Ad所存的值相等,他就认为Ad所存的值没有发生变化,但是其实很有可能,在比较时,Ad所存的值是变成了其他的值又变回来的这就叫ABA问题,ABA这个名字就是说A先变成B,又变回A具体问题出现的情况线程1进行CAS操作,首先线程1读取到地址Ad存的值是D2. 线程1的CAS...

2020-03-20 10:49:04 225

原创 Vue/React为什么会出现两个花括号

不论React还是Vue,初学都会遇到类似这样的东西写在DOM中{{item.message}}这两个括号意义不同,可以简单的理解为:外面的花括号是说:我这里面写的是js语句内部的花括号是说:我里面的不是要显示的文字,而是变量,我要把变量的值解析放在这...

2020-03-19 17:37:48 2557 1

原创 REST架构

什么是REST架构详细的解释在网上大家都能搜到,我就不多说了通俗的来说,REST是一种风格,而不是规范,它不强制你必须使用什么样的格式,只是建议你使用什么样的格式它提出了一系列的想法,按照这些想法来组织软件,按照这些想法来请求资源REST提出的想法都是现有技术的运用,没有提出新的技术请求资源时,它也提供了关于API格式的想法,也就是我们所说的RESTfulAPI这些想法、这种风格,叫做...

2020-03-19 14:08:38 686

原创 URL的查询参数和路径参数如何选择

我的观点是:主键使用路径变量,其他字段的用查询变量例如// 学生类class Student{ String id; //主键 String name; Integer age; String sex;}这时获取学生信息的API设计为【GET】 /{version}/students/{student_id}[?name={field}][&age={field}]...

2020-03-18 21:55:57 2893

原创 解决同源策略跨域问题:Spring注解@CrossOrigin

解决方法不多BB,先放解决方案在Controller上加个Spring的注解@CrossOrgin即可(其实也可以通过添加代理来解决,最初我写React时的解决方案是为前端添加了代理)什么是同源策略会有人在自己写前后端的时候,前端后端运行在自己电脑的不同端口,前端向后端发请求时就会出现由于“同源策略”而请求失败问题(我刚学前端写React的时候就遇到过)那么什么是同源策略呢网上的解释...

2020-03-18 19:59:33 506

原创 解决Maven依赖冲突:IDEA插件MavenHelper

Maven原生解决版本冲突方案使用Maven命令maven dependency:tree来查看依赖。使用mvn dependency:tree -Dverbose -Dincludes=:只查看关心的jar包,但是这个mvn tree还要从下载,国内可能下载不下来,用起来也很不方便MavenHelper一款IDEA免费插件,IDEA内安装即可,安装之后,打开POM文件下方会有Depen...

2020-03-18 19:31:14 989

原创 长程、中程、短程调度

简述方式解释短程调度从准备队列中选择线程送到CPU执行中程调度从将外存中挂起的线程中选择线程送到内存长程调度从外存中选择一个任务(作业)送到内存中,为之创建线程,并将这个线程加入准备队列简单结构短程调度又叫低级调度,习惯上所说的进程调度指的就是短程调度,短程调度是指将准备队列(Ready)中的进程调度到CPU中执行中程调度挂起有两个队列,就...

2020-03-18 19:20:11 4717

原创 二 打入内部1

二打入内部1 “行行行”男生贱兮兮的推了下眼镜,“我叫小枫”。 我开始仔细的打量这个男生,怎么说呢,长得有点狂野。学校里标准的男生卡尺,蓝黑色的半透明树枝眼镜架在高高的鼻梁上,眼镜片的后面是一双狭……有一点点长的眼睛,嘴唇微微抿着,一副思索的样子。至于为什么说他狂野,大抵是眉毛太过肆意妄为了些。但是整个人看起来还是眉清目秀的,如果不说话的话,应该...

2020-03-12 20:12:08 189 1

Chapter_05.zip

《Spring in action》:构建SpringWeb应用程序这篇博文的配套源码,其实就是《Spring in action》第五章的代码

2020-02-10

Spring入门笔记.pdf

这篇笔记是本人零基础看Spring入门网课时整理的笔记,同时加入了一些自己的理解,方便大家学习和使用,内容可能存在错误或者在理解上有一定问题,如果有任何问题、意见、见解或关于侵权请联系我

2020-01-29

空空如也

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

TA关注的人

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