自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue3实现简易的音乐播放器组件

前言用Vue3实现一个简易的音乐播放器组件其效果图如下所示:实现这个组件需要提前做的准备:引入ElementUI引入字节跳动图标库一张唱见图片将要播放的音乐上传到文件服务器上,并提供一个能在线访问的链接【这里使用的是阿里云的OSS服务】准备ElementUIElementUI的引入可以参照其官网的引入方式;字节跳动图标库组件的【上一首】【播放】【下一首】【音量】等图标都是来源自这个图标库,这是其安装文档在main.js中,我是这样引入的://引入字节跳动图标库im

2022-05-06 10:55:31 9489 2

原创 【LeetCode 2】两数相加

题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路题目提供两条链表,将每条链表的对应位置上的值相加,

2022-05-05 17:23:28 110

原创 Unity--Floyd画出最短的路径

1,前言给定一个场景:有两个点:A和B若干个辅助点一些障碍物(层级为WallLayer,标签为Wall)在辅助点的帮助下,将A和B用线连起来,同时画出来的线不能穿过墙壁。求怎么画才能画出最短的路线2,脚本实现person代表A点target代表B点secondaryParent代表所有辅助点的父物体所有的障碍物,其层级为WallLayer,且障碍物的标签为Wallusing System;using System.Collections;using System.Coll

2022-01-20 21:09:47 2867

原创 intern()的使用

1,前言关于在JDK6和7/8下使用intern()若有不当之处,请您指出,您的指点是我的荣幸……2,正文在JDK6之中,将这个字符串对象尝试放入字符串常量池。如果串池中有,则并不会放入字符串常量池中,并返回已有的字符串常量池中的对象的地址;如果没有,会把此对象复制一份,放入字符串常量池中,并返回字符串常量池中的对象地址JDK7开始,将这个字符串对象尝试放入串池中。如果串池中有,则并不会放入。返回已有的字符串常量池中的对象的地址;如果没有,则会把对象的引用地址复制一份,放入字符串常量池中,并返回

2021-11-02 23:45:23 208

原创 JVM(2)类加载器

前言学习康师傅的JVM视频所作记录,不当之处,请您指出……正文概述类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识【模数】ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine决定加载的类信息存放于一块称为方法区的内存空间,除了类的信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)【这里值得一提的是,存放在方法区

2021-10-31 20:08:37 155

原创 JVM(1)初识

1,前言学习康师傅的JVM视频所作记录,不当之处,请您指出……2,正文2.1,整体架构2.2,Java代码执行过程虚拟机的启动Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的(这个类不同的虚拟机指定的是不同的类)虚拟机的执行一个运行中的java虚拟机有着一个清晰的任务:执行java程序程序开始执行时他才运行,程序结束他就停止了执行一个所谓的java程序的

2021-10-26 22:52:58 115

原创 LRU页面置换算法--基于栈

前言使用栈实现LRU页面置换算法的代码LRU页面置换算法可以使用基于计数器,或者基于栈两种方式进行实现基于计数器若有不当之处,请您指出,您的指点是我的荣幸代码实现import java.util.Scanner;/** * LRU页面置换算法--基于栈 */public class LRUStack { public static void main(String[] args) { //当链表未达到指定长度时,用来表示链表的长度 in

2020-09-13 17:21:27 2075

原创 LRU页面置换算法--基于计数器

1,前言有关LRU页面置换的学习记录若有不当之处,请您指出,您的指点是我的荣幸2,LRULRU页面置换,也称为最近最少使用算法每个进程运行时会被分配一定数量的帧,这是进程所占有的空间。程序的代码一般是存于外存(一般理解为磁盘)中执行代码的时候,只有当代码所在的页被操作系统从外存调入内存,并放置在进程所占有的空间中,代码才能执行而进程逻辑上占有的页数是远远大于分配到的帧数的(页是逻辑概念上的,帧是物理概念上的)就比如:进程A逻辑上占有的页数为20页,但执行的时候分配到的帧数只有3帧(对应

2020-09-08 21:13:33 1881

原创 死锁避免----银行家算法实现

前言有关银行家算法的记录因为这篇博客写的很棒,所以就不班门弄斧了,就不介绍基础概念了。直接放码过来!若有不当之处,请您指出,您的指点是我的荣幸实现给定4个进程,每个进程3个资源类型,每种资源的数量也是给定的/** * 银行家算法 */public class Banker { //统计有多少个进程执行完成了 public static int count=0; //每次用Available跟Need比较的时候,记录是否还有能执行的进程 public

2020-09-06 14:24:24 305

原创 同步问题----优先级反转

1,同步问题1.2,优先级的反转当一个高优先级的进程通过信号量机制访问共享资源时,发现这个资源正在被低优先级的进程所持有。而且因为内核数据通常是用锁保护起来的,所以高优先级的进程不得不等待低优先级的进程用完资源。这也就造成了高优先级进程被低优先级进程阻塞。1.3,示例假如有这么三个进程:A,B,C它们的优先级顺序:A<B<CC进程需要使用一个共享资源:X,但此时A进程正持有X资源,C进程不得不等待A进程完成任务释放资源;但此时,B进程到达了,抢占了A进程;间接的,B进程影响了

2020-09-04 13:38:40 300

原创 Peterson解答

前言有关Peterson解答的记录;若有不当之处,请您指出,你的指点是我的荣幸!Peterson解答Peterson解答是一个经典的基于软件的临界区问题的解决方案Peterson算法适用于两个进程交错执行临界区与剩余区在本文中,这两个进程分别是P0和P1Peterson解答要求两个进程共享两个数据项int turn;boolean flag[2];变量turn表示哪个进程可以进入临界区;即如果turn==i,那么进程Pi允许在临界区内执行。数组flag表示哪个进程准备进入临界区。例

2020-09-04 09:57:07 496

原创 进程调度----FCFS,SJF,优先级调度,RR

1,FCFS先服务先调度FCFS策略可以通过FIFO队列容易的实现。当一个进程进入就绪队列时,它的PCB会被连接到队列尾部。当CPU空闲时,它会分配给位于队列头部的进程,并且这个运行进程从队列中移去。缺点:平均等待时间往往很长。假设有这么三个进程P1,P2,P3按顺序到达,并且按FCFS顺序进行处理进程执行时间P124P26P36[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6fa29zs7-1599115297171)(

2020-09-03 14:42:56 3682

原创 Spring容器创建原理解析

1,前言学习雷老师的Spring注解版视频所做的学习笔记温馨提示----本文含有大量代码,已经省略了一些代码,请尽量关注有中文注释的地方若有不当之处,请您指出,您的指点是我的荣幸本文的一些方法并未进行深入的记录,若有兴趣可以查看这些文章相关链接:AOP工作原理(上)AOP工作原理(下)Spring事务原理解析BeanDefinitionRegistryPostProcessor原理解析BeanFactoryPostProcessor原理解析Spring事件监听-ApplicationL

2020-08-20 22:38:55 263 1

原创 Spring事件监听--ApplicationListener原理

1,前言学习雷老师的Spring注解版所做的笔记若有不当之处,请您指出,您的指点是我的荣幸2,ApplicationListener2.1,示例MyApplicationListener类//这里除了实现ApplicationListener接口外,还可以在方法上使用@EventListener注解,效果是相同的@Componentpublic class MyApplicationListener implements ApplicationListener<ApplicationE

2020-08-01 12:43:41 438

原创 BeanDefinitionRegistryPostProcessor原理解析

1,前言学习Spring注解的笔记若有不当之处,请您指出,您的指点是我的荣幸2,BeanDefinitionRegistryPostProcessor我们也可以通过BeanDefinitionRegistryPostProcessor给容器注册bean2.1,示例自定义BeanDefinitionRegistryPostProcessor类值得注意的是MyBeanDefinitionRegistryPostProcessor实现了BeanDefinitionRegistryPostProces

2020-07-31 17:56:26 579

原创 BeanFactoryPostProcessor原理解析

1,前言若有不当之处,请您指出,您的指点是我的荣幸2,BeanFactoryPostProcessor配置类@ComponentScan("com.cb414.ext")@Configurationpublic class ExtConfig { @Bean public Blue blue(){ return new Blue(); }}Blue类//Bluepublic class Blue { public Blue(){

2020-07-31 13:41:03 560

原创 Spring声明式事务原理解析

前言学习雷老师的Spring注解版所做的笔记若有不当之处,请您指出,您的指点是我的荣幸温馨提示:本文含有较多代码,已经做了一些省略,请尽量关注中文注释的地方事务要使用事务就离不开:@EnableTransactionManagement注解所以本文就@EnableTransactionManagement做了什么进行探究。@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented//可以看到@Enabl

2020-07-30 16:29:08 326

原创 AOP原理解析(2)AOP怎么工作的

1,前言学习雷老师的Spring注解版之后所做的的笔记有关AOP工作原理的上文–》AnnotationAwareAspectJAutoProxyCreator的创建若有不当之处,请您指出,您的指点是我的荣幸温馨提示:本文涉及大量代码,但是一些无关的代码已经简略了,请尽量关注有中文注释的地方!1.1,上文上一篇博客写到了@EnableAspectJAutoProxy是给容器中注册了一个后置处理器–AnnotationAwareAspectJAutoProxyCreator创建完之后就需要探究容器

2020-07-28 23:41:48 743

原创 AOP原理解析(1)@EnableAspectJAutoProxy

前言有关AOP原理的初步学习,做此记录AOP什么是AOPAOP:【动态代理】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式步骤导入aop模式:Spring AOP(要导入aop依赖)定义一个业务逻辑类(MathCaculator);在业务逻辑运行的时候将日志进行打印(方法之前,方法结束之后)定义一个日志切面类,(logAspects),切面类里面的方法需要动态的感知MathCaculator.div方法运行到哪里了,并执行对应的方法给切面类的目标方法去标注何时

2020-07-27 21:29:35 583

原创 (四)组件注册--@ComponentScan--Filter属性

1,前言有关@ComponentScan的Filter属性的记录2,Filter@ComponentScan中还有一些属性: //扫描的时候只扫描哪些指定的组件 ComponentScan.Filter[] includeFilters() default {}; //扫描的时候按照哪些规则排除指定的组件 ComponentScan.Filter[] excludeFilters() default {};2.1,excludeFiltersMainConfig主配置类/*

2020-07-26 12:07:59 6285

原创 (二)安装Redis

1,前言服务器安装Redis及过程中的一些问题记录2,步骤2.1,下载安装包进入官网 下载安装包下载完之后可以通过Xftp传到服务器上2.2,解压下载之后得到的是一个.tar.gz文件,将其解压并放到/opt目录下在这里可以cd redis-6.0.5ls记住这里的redis.conf,后续要用到2.3,环境安装Redis是用C编写的,所以先进行一下环境安装# 进入解压出来的redis-6.0.5cd redis-6.0.5yum install gcc-c++# 查看

2020-07-25 00:29:42 123

原创 (一)Jedis远程访问阿里云服务器Redis服务出错

1,前言学习Jedis远程连接阿里云服务器Redis服务出错,浏览了一些博客,得以解决,仅此记录,若有不当之处请您指出。参考–这位博主2,配置2.1,编写代码public class TestConn { public static void main(String[] args) { Jedis jedis = new Jedis("ip地址", 6379); System.out.println(jedis.ping()); }}2.2,修

2020-07-20 09:12:01 396 4

原创 (二)逻辑覆盖

1,逻辑覆盖法有这么一个程序1.1,语句覆盖基本思想:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。所以只需要设计一个测试用例:a=2,b=2,c=2即可达成语句覆盖语句覆盖的优缺点:优点:可以直观的从源代码得到测试用例缺点:仅仅针对程序逻辑中显式存在的语句,无法针对隐藏的条件进行测试。语句覆盖是最弱的逻辑覆盖1.2,判定覆盖基本思想:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即:判断真假值均曾被满足a=2,b=1

2020-07-14 21:52:59 18313 9

原创 (七)文件系统--基础篇(1)

1,前言有关文件系统的学习记录,若有不当之处,请您指出,您的指点是我的荣幸。参考自–鸟哥的Linux私房菜2,Ext2文件系统2.1,文件系统特性在Linux中,当我们新建一个文件的时候,文件的权限,创作者等相关属性该如何存储?文件中的数据该如何存储?实际上,文件系统会将权限等相关属性存储到inode中,文件中的数据会存到data block块中。而inode和block的数量自然不能只有一个,实际上有很多的inode和block,还有一个数据叫super block用来记录文件系统的相关信息。

2020-07-14 13:11:19 449

原创 (三)组件注册--(2)@ComponentScan

1,前言有关@ComponentScan的基础介绍若有错误请您指出,您的指点是我的荣幸2,@ComponentScan2.1,准备@ComponentScan包扫描会自动去扫描那些指定的包下面用@Controller,@Service,@Repository,@Component四个注解所标示的组件,并将其导入容器中!!!用这些注解所标识的组件代表是需要被容器进行导入的给项目增加一些@Controller…等注解@Controllerpublic class BookController

2020-07-07 23:41:53 123

原创 (二)组件注册--(1)@Configuration&@Bean

1,前言学习Spring注解的记录2,@Configuration&@Bean2.1,实体类Person实体类public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = n

2020-07-06 20:51:43 137

原创 (六)磁盘--基础篇(1)磁道&扇区&柱面

1,前言有关磁盘的几个基础名词的记录若有错误,请您指出,您的指点是我的荣幸2,磁盘注:左图是俯视图2.1,磁道当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道 (摘自百度百科)如左图的黑色圆环就是其中的一个磁道2.2,扇区磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)(摘自百度百科)如左图的红色区块就是一个扇区2.3,柱面在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆

2020-07-05 16:45:59 994

原创 (九)坦克大战--(7)刷怪器

1,前言制作一个简易的刷怪器–纯粹好玩2,步骤2.1,新建模型新建一个Cube,并命名为BrushMonster为了让BrushMonster悬空,不受到伤害,所以不用加Rigibody和Collider由于我没有刷怪器的模型,所以就简单的使用一些飞船模型摆放一下(也挺帅的,个人感觉…)2.3,新建RefreshPoint刷怪器的逻辑与发射炮弹其实是相似的但是实例化的不再是炮弹,而是EnemyTank而且一样需要一个刷新点(RefreshPoint)2.4,编写脚本接下来就是编写

2020-06-27 12:51:26 248

原创 (八)坦克大战--(6)自动炮台

1,前言制作自动炮台其实就是一个自动旋转但是不会移动的敌人2,步骤2.1,下载模型炮台的模型可以从AssetStore进行下载导入下图是我所下载的炮台模型2.2,新建Cube接下来新建一个Cube,并命名为GunTurrent-Green(因为这里使用的是绿色的炮台)添加相应的组件Rigibody和Box Collider2.3,挂载模型然后就是调整一下GunTurrent-Green和模型的位置调整过程参照之前的即可2.4,创建ShootPoint我这里设定一个炮台一次可

2020-06-26 21:39:27 992

原创 (七)坦克大战--(5)敌方发射炮弹

1,前言制作敌方坦克的武器系统2,步骤2.1,创建ShootPoint跟制作玩家坦克的发射炮弹一样,需要给敌方坦克(EnemyTank的Prefab)新建一个空的子物体,并命名为ShootPoint2.2,编写脚本然后就需要进行脚本的编写,大体逻辑与玩家坦克的发射逻辑差不多,但细节部分需要进行调整:敌方坦克与玩家距离过远,不会进行开火距离合适的时候,每隔一定的时间就会进行开火新建一个脚本名为EnemyTankWeaponusing System.Collections;using

2020-06-26 20:35:44 446

原创 (六)坦克大战--(4)炮弹爆炸与生命值

1,前言参考自–b站视频2,步骤2.1,粒子效果爆炸的粒子效果可以去Asset Store搜索Explosion进行下载导入。我下载的粒子效果的Prefab名为:BigExplosion(后续会用到)2.2,触发器与标签接下来需要做一些小的调整:当炮弹碰撞时需要执行一些脚本,这些脚本在炮弹与某些物体发生碰撞的时候就会被触发执行。所以打开Shell1,然后将isTrigger勾选上然后新建两个标签–Player和Enemy再点击PlayerTank,让PlayerTank的标签为Pla

2020-06-26 10:13:55 984

原创 (五)坦克大战--(3)敌人自动追踪

1,前言敌方坦克的脚本参考自–这位博主2,步骤2.1,新建Cube新建一个Cube,并命名为EnemyTank然后给EnemyTank添加Box Collider和刚体属性注意:这里的Tag和Mass暂时不用理会2.2,添加模型然后将本地的敌方坦克的模型添加给EnemyTank,并调整一下模型和Cube的位置。我这里的坦克模型是从Asset Store下载的2.3,挂载脚本然后将脚本挂载到EnemyTank上using System.Collections;using Syst

2020-06-26 00:26:07 541

原创 (四)坦克大战--(2)发射炮弹

1,前言制作坦克发射炮弹参考自–b站视频2,思路发射炮弹的思路其实就是:实例化一个炮弹出来,然后给这个炮弹添加一个向前的力,使其发射3,步骤3.1,发射位置首先需要给PlayerTank(玩家坦克)创建一个空的子物体(Empty Child)命名为ShootPoint,这个ShootPoint就是实例化炮弹的位置,炮弹会在这个位置被实例化出来,然后通过脚本给它一个力。创建完之后就需要调整一下这个发射点的位置,使它在坦克的炮管发射口的正前方即可(又或者调整到你想要的位置和角度)3.2,

2020-06-24 14:25:51 831

原创 (三)坦克大战--(1)坦克移动

1,前言自制一个坦克大战的小游戏本章参考了–b站视频2,步骤2.1,新建Cube新建一个Cube并重命名为PlayerTank,用来搭载坦克模型,并在后期会将一些相关的脚本挂载在这个Cube上。2.2,坦克模型首先去Unity的Asset Store下载一些坦克模型,或者是使用本地就有的模型。然后将模型拖拽给PlayerTank,使之成为PlayerTank的子物体之后给PlayerTank添加上一些组件由于游戏里的地形平坦,我就直接将x,z轴方向的旋转"锁"起来了2.3,细节调整

2020-06-23 13:39:13 453

原创 (三)Linux命令--基础篇(1)

1,前言学习Linux基础篇的笔记,若有错误,请您指出,您的指点是我的荣幸。2,命令2.1,在线学习在线学习手册不过在看之前,可以看看这个关于2.2,什么是命令命令:应用程序执行的入口例如一个大型的游戏安装目录下,有多个可执行文件,这些文件就可以理解成应用程序执行的入口,这些入口就是我们理解的命令任何一个命令基本都能对应一个文件:例如vi命令,对应的是:/bin/vi文件2.3,格式命令 选项 参数2.4,类型命令的类型可分为两类:内置命令和外部命令内置命令:bash里面的命

2020-06-03 18:47:24 195

原创 小白的算法之路(二) ----实现螺旋矩阵

前言实现螺旋矩阵,浏览了一些博客之后,有了一点想法…参考:这位博主实现/** *   对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。 *   例如,一个 4 行 5 列的螺旋矩阵如下: *   1 2 3 4 5 *   14 15 16 17 6 *   13 20 19 18 7 *   12 11 10 9 ...

2020-04-20 18:50:43 313

原创 (一)IO流----字节流

1,前言对于IO流的学习记录;若有错误,请您指出,您的指点是我的荣幸。2,IO流2.1,分类按流向分:输入流与输出流​ 输入流可以看成一个输入通道,终点是程序​ ----FileInputStream,FileReader​ 输出流可以看成一个输出通道,起点是程序​ ----FileOutputStream,FileWriter按处理的数据分:字节流和字符流​ ...

2020-04-16 12:09:33 179

原创 (二)遥杆控制小球

前言今天卡在一个奇奇怪怪的地方,用摇杆控制小球,仅此记录这个耻辱~步骤1,先导入EastTouch插件导入过程中会遇到api升级的问题,按错误报告说的走即可2,创建一个基础的场景3,导入EasyTouch的摇杆4,将球和摇杆关联起来选择上一步中创建的摇杆,在他的组件列表中找到为了通过摇杆来控制小球的移动…勾上Trun & Move direction Actio...

2020-04-11 00:06:44 378

原创 (一)ResultMap

1,前言在使用mybatis出现了数据库列名与实体类中属性名不一致的问题,特此记录2,错误报告2.1,Mapper.xml文件 <select id="queryRootById2" resultType="root"> select root_Id ,root_Pwd from root where root_Id=#{rootId} </...

2020-04-07 20:43:27 211

原创 连接表查询

1,前言在此之前对于多表查询并未花精力去了解,近来才有机会重新学习,本文仅此记录。如有错误,请您指出,您的指点是我的荣幸!2,连接表2.1,建表student表:student1表:institute表:2.2,内连接等值连接,自然连接属于内连接2.2.1,等值连接-- 等值连接-- student表和institute表-- 等值连接SELECT * FROM `...

2020-04-07 16:27:54 1055 1

空空如也

空空如也

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

TA关注的人

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