- 博客(140)
- 收藏
- 关注
原创 Redis面试题总结
Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理信息)、Stream(流),并且对数据类型的操作都是原子性**的,因为执行命令由单线程负责的,不存在并发竞争的问题。
2022-09-09 10:02:13 1076 1
原创 集合源码学习笔记
集合顶层接口Iterable、Collection:List、Queue、Set接口都实现了Collection接口,Collection接口实现了Iterable接口。Iterable接口中只有iterator()一个接口方法,Iterator也是一个接口,其主要有如下两个方法hasNext()和next()方法。也就是说,实现了Iterable接口的方法,就能使用迭代器了。Collection 则包含了集合类常
2022-09-08 10:18:00 510
原创 SpringCloud面试题总结
Spring Cloud是一系列框架的有序集合。它利用Spring Boot简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽...
2022-07-08 23:03:39 1193
原创 Shiro学习笔记
Shiro参考视频: 【狂神说Java】SpringBoot整合Shiro框架_哔哩哔哩_bilibili参考博客: SpringBoot-狂神(17. SpringBoot整合Shiro)学习笔记_yuan_404的博客-CSDN博客_狂神shiro笔记一、简介Apache Shiro是一个强大且易用的Java安全框架。可以完成身份验证、授权、密码和会话管理。Shiro 不仅可以用在 JavaSE 环境中,也可以用在 JavaEE 环境中。二、快速开始三、springboot整合1.m
2022-05-11 14:27:01 166
原创 SpringSecurity学习笔记
SpringSecurity参考视频: 【狂神说Java】SpringBoot整合SpringSecurity_哔哩哔哩_bilibili参考博客: 狂神说SpringBoot18:集成SpringSecurity (qq.com)一、简介 Spring Security是一个框架,侧重于为Java应用程序提供身份验证和授权。 在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP
2022-05-09 11:57:59 224
原创 SpringBoot源码学习笔记
SpringBoot源码版本:spring-boot-2.6.6参考资料:Spring源码全家桶教程56集IDEA版+mybatis源码精讲 哔哩哔哩_bilibiliSpringBoot基础-refresh方法解析_silly8543的博客-CSDN博客_refresh方法一、流程图二、流程1.启动类@SpringBootApplicationpublic class SpringbootstudyApplication { public static void main(S
2022-04-30 09:00:00 810
原创 【学习笔记】JVM
typora-root-url: img\JVM_imgJVM1.常见问题●请你谈谈你对JVM的理解? java8虚拟机和之前的变化更新? ●什么是OOM,什么是栈溢出StackOverFlowError? 怎么分析? ●JVM的常用调优参数有哪些? ●内存快照如何抓取,怎么分析Dump文件? ●谈谈JVM中,类加载器你的认识2.JVM的位置 JVM 上承开发语言,下接操作系统,它的中间接口就是字节码。 与硬件没有直接交互。3.JVM的体系结构99%的JVM调优都是在堆(方法区、堆).
2021-12-22 13:50:39 653
原创 SQL刷题笔记
SQL刷题笔记day12021/11/30175.组合两个表表1: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键表2: Address+--
2021-11-30 14:18:52 11779
原创 java刷题笔记
Java刷题笔记day1-二分查找2021/11/3034.在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,
2021-11-30 14:05:48 885
原创 读者-写者问题(读者优先、写者优先、公平竞争)
教材中提供的读者-写者问题的解决方案存在读者优先问题,即当有一个读进程比较活跃时,随后而来的读进程都将被允许访问资源。这样,会导致写进程可能长时间等待。而这种情况往往与实际应用需求相背。请认真分析、研究读者-写者问题,给出对读者和写者都较为公平的同步解决方案。...
2021-10-15 22:17:45 8312 3
原创 Go 协程
Go 协程Go 协程1.进程和线程2.Go协程和Go主线程3.channel3.1 问题3.2 channel3.3使用细节和注意事项(1)只读或只写(2)阻塞和select(3)panic和recoverGo 协程1.进程和线程进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。线程是进程的一个执行实例,是程序执行的最小单位,是比进程更小的能单独执行的基本单位。一个进程可以创建和销毁多个线程,同一个进程中的线程可以并发执行。一个程序至少有一个进程,一个进程
2021-10-06 20:58:04 1018
原创 Go 数组和切片
数组和切片1.数组(1)数组的定义var arr1 [3]int = [3]int{1,2,3}var arr2 = [3]int{1,2,3}var arr3 = [...]int{1,2,3}var arr4 = [...]int{0: 1, 1: 2, 2: 3}(2)数组的遍历func main() { arr := [...]int{1,2,3} //法一 for i:=0;i<len(arr);i++ { fmt.Println(arr[i]) } //法二
2021-09-26 20:44:18 144
原创 Go 字符串常用系统函数
字符串常用系统函数1.统计长度len(str)2.字符串遍历r := []rune(str)例:func main() { s := "hello world" r := []rune(s) for i := 0; i < len(s); i++ { fmt.Printf("%c",r[i]) }}3.字符串转整数str := strconv.Atoi(s)例:func stringAtoi(s string) { n, err := strconv.Ato
2021-09-24 18:24:36 168
原创 Go defer延时机制
defer延时机制为了在函数执行完毕后,及时释放资源,Go提供了defer延时机制。案例1:func Add(n1 int, n2 int) int{ defer fmt.Println("n1 =",n1) defer fmt.Println("n2 =",n2) sum := n1+n2 fmt.Println("sum1 =",sum) return sum}func main() { sum := Add(2,3) fmt.Println("sum2 =", sum)}
2021-09-23 22:29:42 132
原创 Go匿名函数和闭包
Go匿名函数和闭包1.匿名函数匿名函数即没有名字的函数,一般用于只使用一次的函数,或者直接用变量调用的函数。方法一:在定义函数时直接调用,此函数只能调用一次。func main() { a := func(n1 int, n2 int) int{ return n1 + n2 }(2,3) fmt.Println(a)}方法二:将匿名函数赋给一个变量(函数变量),再通过变量调用匿名函数。func main() { a := func(n1 int, n2 int)
2021-09-23 22:13:34 394
原创 Go指针简单理解
指针简单的例子:func main() { var a int = 10 var b *int = &a fmt.Println("a=", a) fmt.Println("&a=", &a) //fmt.Println("*a=", *a) fmt.Println("b=", b) fmt.Println("&b=", &b) fmt.Println("*b=", *b)}/* a= 10 &a= 0xc0000160
2021-09-22 21:33:32 131
原创 Go基本数据类型和String转换
基本数据类型和String转换1.基本类型 -> string法一:fmt.Sprintf()func main() { func main() { var t1 int = 1 var t2 float64 = 1.1 var t3 bool = false var t4 byte = 't' var str string //int str = fmt.Sprintf("%d", t1) fmt.Printf("%T %v\n", str, str) //float
2021-09-22 20:43:18 579
原创 【学习笔记】多线程
【学习笔记】多线程多线程一、多线程二、线程创建1.三种方式(1)Thread类【案例】网图下载(2)Runnable接口【案例】买火车票【案例】龟兔赛跑(3)Callable接口(了解)2.静态代理三、线程状态1.五大状态2.线程方法3.停止线程4.线程休眠5.线程礼让6.线程强行执行7.观测线程状态8.线程的优先级9.守护线程四、线程同步1.同步方法2.死锁3.Lock(锁)五、线程协作1.问题与方案2.管程法3.信号灯法4.线程池学习视频:【狂神说Java】多线程详解多线程一、多线程多线程:多条
2021-09-20 22:28:18 140
原创 静态代码块的执行顺序
静态代码块的执行顺序public class demo { private static int num = 1; // 1 static { num = 10; // 2 number = 50; // 3 System.out.println(num); // 4 //System.out.println(number);
2021-09-18 21:24:42 496
原创 【学习笔记】设计模式
【学习笔记】设计模式设计模式一、分类二、UML1.概述2.类图表示法2.1类的表示法2.2类与类的关系1.关联关系2.聚合关系3.组合关系4.依赖关系5.继承关系6.实现关系三、软件设计原则1.开闭原则设计模式一、分类创建型模式用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。结构型模式用于描述如何将类或对象按某种布局组成更大的结构。代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。行为
2021-09-17 20:43:35 256
原创 7-2 堆中的路径 (25分)
7-2 堆中的路径 (25分)将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346
2020-12-18 12:39:15 1358
原创 7-1 0-1背包 (20分)
7-1 0-1背包 (20分)给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包中
2020-12-18 12:38:08 2586
原创 7-1 凑零钱 (30分)
7-1 凑零钱 (30分)输入样例 1:8 95 9 8 7 2 3 4 1输出样例 1:1 3 5输入样例 2:4 87 2 4 3输出样例 2:No Solution样例解答:动态规划,先对硬币价值升序排序,从左向右依次选取硬币,对于每个硬币都有两种情况,取或不取,当所取硬币总额等于所需总额时,输出(因为已经升序排序,所得的第一组数据就是最小序列),以此进行递归。测试点6运行超时:当所有硬币总额小于所需硬币总额时,直接输出"No Solution"即可。#
2020-12-09 20:50:46 708 1
原创 7-1 0-1背包 (50分)
7-1 0-1背包 (50分)给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包中
2020-12-06 16:26:13 1292
原创 7-1 抢红包 (30分)
7-1 抢红包 (30分)输入样例:103 2 22 10 58 8 1255 1 345 3 211 5 233 7 13 8 1011 7 88002 1 1000 2 10002 4 250 10 3206 5 11 9 22 8 33 7 44 10 55 4 21 3 88002 1 23 2 1231 8 2504 2 121 4 516 7 112 9 10输出样例:1 11.632 3.638 3.633 2.117 1.696 -1.679
2020-12-06 15:38:52 790
原创 7-1 装箱问题 (50分)
7-1 装箱问题 (50分)假设有N项物品,大小分别为s1 、s2 、…、si 、…、sN,其中si为满足1≤si ≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入格式:输入第一行给出物品个数N(≤1000);第二行给出N个正整数si(1≤si≤100,表示第i项物品的大小)。输
2020-12-06 14:39:56 441
原创 L1-8 刮刮彩票 (20分)
L1-8 刮刮彩票 (20分)“刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示:(图略)每次游戏玩家会拿到一张彩票,上面会有 9 个数字,分别为数字 1 到数字 9,数字各不重复,并以 3×3 的“九宫格”形式排布在彩票上。在游戏开始时能看见一个位置上的数字,其他位置上的数字均不可见。你可以选择三个位置的数字刮开,这样玩家就能看见四个位置上的数字了。最后玩家再从 3 横、3 竖、2 斜共 8 个方向中挑选一个方向,方向上三个数字的和可根据下列表格进行兑奖,获得对应数额的金币。数字合计
2020-11-29 18:24:32 1206
原创 L1-7 前世档案 (20分)
L1-7 前世档案 (20分)网络世界中时常会遇到这类滑稽的算命小程序,实现原理很简单,随便设计几个问题,根据玩家对每个问题的回答选择一条判断树中的路径(如下图所示),结论就是路径终点对应的那个结点。(图略)现在我们把结论从左到右顺序编号,编号从 1 开始。这里假设回答都是简单的“是”或“否”,又假设回答“是”对应向左的路径,回答“否”对应向右的路径。给定玩家的一系列回答,请你返回其得到的结论的编号。输入格式:输入第一行给出两个正整数:N(≤30)为玩家做一次测试要回答的问题数量;M(≤100)为
2020-11-29 18:19:45 1995 2
原创 L1-6 吃火锅 (15分)
L1-6 吃火锅 (15分)以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。输入格式:输入每行给出一句不超过 80 个字符的、以回车结尾的朋友信息,信息为非空字符串,仅包括字母、数字、空格、可见的半角标点符号。当读到某一行只有一个英文句点 . 时,输入结束,此行不算在朋友信息里。输出格式:首先在一行中输出朋友信息的总条数。然后对朋友的
2020-11-29 18:18:41 1530 1
原创 L1-5 胎压监测 (15分)
L1-5 胎压监测 (15分)小轿车中有一个系统随时监测四个车轮的胎压,如果四轮胎压不是很平衡,则可能对行车造成严重的影响。让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序,随时监测四轮的胎压,并给出正确的报警信息。报警规则如下:如果所有轮胎的压力值与它们中的最大值误差在一个给定阈值内,并且都不低于系统设定的最低报警胎压,则说明情况正常,不报警;如果存在一个轮胎的压力值与它们中的最大值误差超过了阈值,或者低于系统设定的最低报警胎压,
2020-11-29 18:17:25 1389
原创 L1-4 调和平均 (10分)
L1-4 调和平均 (10分)N 个正数的算数平均是这些数的和除以 N,它们的调和平均是它们倒数的算数平均的倒数。本题就请你计算给定的一系列正数的调和平均值。输入格式:每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (≤1000);第 2 行给出 N 个正数,都在区间 [0.1,100] 内。输出格式:在一行中输出给定数列的调和平均值,输出小数点后2位。输入样例:810 15 12.7 0.3 4 13 1 15.6输出样例:1.61样例解答:#include
2020-11-29 18:16:14 1361
原创 L1-3 洛希极限 (10分)
L1-3 洛希极限 (10分)科幻电影《流浪地球》中一个重要的情节是地球距离木星太近时,大气开始被木星吸走,而随着不断接近地木“刚体洛希极限”,地球面临被彻底撕碎的危险。但实际上,这个计算是错误的。洛希极限(Roche limit)是一个天体自身的引力与第二个天体造成的潮汐力相等时的距离。当两个天体的距离少于洛希极限,天体就会倾向碎散,继而成为第二个天体的环。它以首位计算这个极限的人爱德华·洛希命名。(摘自百度百科)大天体密度与小天体的密度的比值开 3 次方后,再乘以大天体的半径以及一个倍数(流体对应
2020-11-29 18:15:10 2066
原创 L1-2 猫是液体 (5分)
L1-2 猫是液体 (5分)测量一个人的体积是很难的,但猫就不一样了。因为猫是液体,所以可以很容易地通过测量一个长方体容器的容积来得到容器里猫的体积。本题就请你完成这个计算。输入格式:输入在第一行中给出 3 个不超过 100 的正整数,分别对应容器的长、宽、高。输出格式:在一行中输出猫的体积。输入样例:23 15 20输出样例:6900样例解答:#include<bits/stdc++.h>using namespace std;int main(){ int
2020-11-29 18:13:19 1308 1
原创 L1-1 嫑废话上代码 (5分)
L1-1 嫑废话上代码 (5分)Linux 之父 Linus Torvalds 的名言是:“Talk is cheap. Show me the code.”(嫑废话,上代码)。本题就请你直接在屏幕上输出这句话。输入格式:本题没有输入。输出格式:在一行中输出 Talk is cheap. Show me the code.。输入样例:无输出样例:Talk is cheap. Show me the code.样例解答:#include<bits/stdc++.h>us
2020-11-29 18:11:27 830
原创 7-1 月饼 (25分)(c++)
7-1 月饼 (25分)月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 9
2020-11-26 22:47:08 456
原创 L2-004 这是二叉搜索树吗? (建树+遍历)
L2-004 这是二叉搜索树吗? (25分)一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,·其左子树中所有结点的键值小于该结点的键值;·其右子树中所有结点的键值大于等于该结点的键值;·其左右子树都是二叉搜索树。·所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入格式:输入的第一行给出正整数 N(≤1000)。随后一行给出 N 个整数键值,其间以空格分隔。
2020-11-24 23:07:37 108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人