- 博客(49)
- 资源 (1)
- 收藏
- 关注
原创 JAVA向上转型和向下转型
并不是所有的对象都可以向下转型,只有当这个对象原本就是子类对象通过向上转型得到的时候才能够成功转型,在向下转型前,通过instanceof 判断某对象是否是某类的实例。[2]: https://www.runoob.com/w3cnote/java-transformation-problem.html “Java 转型问题.菜鸟教程”向上转型后的父类引用只能调用父类的属性,若子类重写了父类的方法,则通过父类引用调用的是子类重写后的方法(即 override),该调用过程即为“动态绑定”。
2022-09-20 15:39:07
384
原创 后端_项目搭建
1.5创建文件结构,创建maven module时,可能没有这些文件结构,需要自己创建,与idea 版本有关系。1.6 子工程中引入父工程的坐标信息,如果子工程没有自动引用,需要手动添加。1.2 删掉 pom 文件中的dependence 和 build 标签。1.12 创建逆向工程genretor 模块,创建如下结构。1.1 创建springboot项目,删掉这些文件。1.10 子工程添加pom依赖和yml 配置。1.11 创建项目框架包,创建启动类。1.3 pom文件中添加 pom。
2022-09-19 09:17:15
229
原创 单例设计模式
单例模式保证了系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用new单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session 工厂等)
2022-09-13 17:17:14
117
原创 kafka理论
定义Kafka目前主要作为一个分布式的发布订阅式的消息系统使用。Kafka作为一个集群,运行在一台或者多台服务器上.通过 topic 对存储的流数据进行分类。每条记录中包含一个key,一个value和一个timestamp(时间戳)。基础架构及术语Producer:消息的产生者,是消息的入口。Broker:Broker是kafka实例,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中
2021-11-08 12:05:08
1839
原创 RabbitMQ理论
一般的消息中间件两种模式消息队列中间件,也可以称为消息队列。有两种传递模式:点对点(P2P, Point-to-Point) 模式和发布/订阅 (Pub/Sub) 模式。点对点模式基于队列的,先进先出,消息的生产和消费是异步的。许多个生产者往同一个队列发送消息。但是,如果有多个消费者,实际上是竞争的关系,也就是一条消息只能被其中一个消费者接收到,读完即被删除。发布订阅模式解决需要将一份消息数据发给多个消费者,并且每个消费者都要求收到所有的消息。存放消息的容器变成了 “主题”,订阅
2021-11-01 14:41:01
1151
原创 1.WIN10下安装RabbitMQ
第一步:下载安装erlang原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。下载地址:http://www.erlang.org/downloads安装完后,新建系统环境变量 ERLANG_HOME将%ERLANG_HOME%\bin加入到path中cmd 验证版本 输入命令 erl第二步:下载安装RabbitMQ下载地址:https://www.rabbitmq.com/install-wind
2021-10-11 20:11:02
238
原创 git相关
文章目录1、git框架介绍2、列举工作中常用的几个git命令?3、提交时发生冲突,如何解决?4、新建git功能分支的步骤?5、 说明GIT合并的两种方法以及区别。6、Git提交代码的步骤1、git框架介绍Workspace:开发者工作区Index / Stage:暂存区/缓存区Repository:仓库区(或本地仓库)Remote:远程仓库2、列举工作中常用的几个git命令?新增文件的命令:git add file或者git add .提交文件的命令:git commit –m或者git
2021-08-20 11:06:56
124
原创 软件测试相关
1. 测试的生命周期1、测试计划任务的安排与制定测试的方法2、测试的分析到底如何测试用什么方法测试3、测试的执行行动4、测试报告测试执行结果的总结5、测试总结项目上线后测试人员本次的测试总结测试方法的不足地方,为下次做准备2.测试的过程单元测试UT单元测试是针对软件基本组成单元(软件设计的最小单元)来进行正确性检验的测试工作,单元测试的目的是检测软件模块《详细设计说明》(LLD)的符合程度。集合测试IT集合测试是在单元测试的基础上,将所有模块按照概要设计要求组装成子系统或
2021-08-19 22:26:03
227
原创 WEB相关
1.常用的状态码2XX 成功200 ok(请求成功)是最常见的成功状态码,表示一切正常。如果是非 HEAD 请求,服务器返回的响应头都会有 body 数据。204 no content (请求成功,但是没有结果返回)206 partial content (客户端请求一部分资源,服务端成功响应,返回一范围资源)3XX 重定向类状态码表示客户端请求的资源发送了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。301 move permanently (永久性重定向)说明请求的资
2021-08-19 09:29:59
1712
原创 Servlet
Servlet1.Servlet的生命周期?2.Servlet和JSP的区别?3.Servlet的基本架构4.什么情况下调用doGet()和doPost()?5.页面间对象传递的方法6.四种会话跟踪技术7.Request对象的主要方法8.如何配置Servlet的初始化参数?9.如何读取Servlet的初始化参数?10.init(ServletConfig)方法执行次数11.init(ServletConfig)方法与异常参考链接1.Servlet的生命周期?—根据Servle
2021-08-19 09:05:31
178
原创 微服务(springcloud)
微服务1.微服务有哪些优缺点?2.作为注册中心,Zookeeper和Eureka有什么区别?3.Service Mesh了解过吗?4.微服务有哪些特点?5.单片,SOA 和微服务架构有什么区别?6.Spring Cloud 解决了哪些问题?7.服务注册和发现是什么意思?Spring Cloud 如何实现?8.Spring Cloud 和dubbo的区别?9.什么是微服务?10.微服务之间是如何通讯的?11.请谈谈对SpringBoot 和SpringCloud的理解12.什么是服务
2021-08-19 09:00:06
451
原创 linux命令
文章目录1.vim有几种工作模式?2.find 命令如何使用?3.如何在 /usr 目录下找出大小超过 10MB 的文件?4.如何在 /var 目录下找出 90 天之内未被访问过的文件?5.如何在 /home 目录下找出 120 天之前被修改过的文件?6.在整个目录树下查找文件 “core” ,如发现则无需提示直接删除它们?7.ls 命令8.df 命令9.rm 命令10.mv 命令11.cp 命令12.tail 命令13.grep 命令14.sed 命令15.用 sed 命令将指定的路径 /usr/loca
2021-08-14 16:51:18
1011
原创 一致性hash算法
1.hash算法哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。2.普通的hash算法在分布式应用中的不足在分布式的存储系统中,要将数据存储到具体的节点上,如果采用普通的hash算法进行路由,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。3.一致性hash
2021-08-07 11:25:10
176
原创 LRU原理及实现
最近最少使用页面置换算法已经很久没有使用的页面有可能在未来一段时间内仍不会被使用。这个思想揭示了一个可以实现的算法:在缺页中断时,置换未使用时间最长的页面。方法一:哈希表 + 双向链表算法双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久未使用的。哈希表(HashMap),通过缓存数据的键映射到其在双向链表中的位置。先使用哈希表进行定位,找出缓存项在双向链表中的位置,随后将其移动到双向链表的头部,即可在 O(1)的时间内完成 get 或者
2021-08-06 21:23:21
230
原创 数据结构2
数据结构与算法1.什么是算法?2.TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?3.如何知道二叉树的深度?4.介绍一下,堆排序的原理是什么?5.数组和链表的区别6.二分查找了解过吗?7.说下你熟悉的排序算法8.布隆过滤器了解过吗?9.一致性hash算法了解过吗?10.如何在一个1到100的整数数组中找到丢失的数字?11.请你讲讲LRU算法的实现原理?12.为什么要设计后缀表达式,有什么好处?13. 什么是B树?
2021-08-04 16:52:13
1221
原创 二叉树算法
题目:分别按照二叉树先序,中序和后序打印所有的节点。牛客网:分别按照二叉树先序,中序和后序打印所有的节点。import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode
2021-08-04 16:50:01
663
原创 消息队列kafka
文章目录1.什么是消息队列2. 消息队列优缺点?队列的消息传递模式?Kafka的特性:Kafka的使用场景:Kafka 基础架构5.kafka follower如何与leader同步数据?分区中的HW、LW、LEOkafka中leader挂掉后重新选举leader过程简介ISR、AR又代表什么?ISR的伸缩又指什么HW、LEO、LSO、LW等分别代表什么?有哪些情形会造成重复消费?那些情景下会造成消息漏消费?流程如何保存数据消息的结构对于旧数据的删除策略如何消费数据14.Kafka中的消息是否会丢失和重复消
2021-07-25 22:35:10
2220
1
原创 Nginx
Nginx1.请解释一下什么是 Nginx ?2.为什么要用Nginx?3.Nginx怎么处理请求的?4.Nginx的优缺点?5.Nginx应用场景?6.使用“反向代理服务器”的优点是什么?7.列举Nginx服务器的最佳用途。8.请解释Nginx如何处理HTTP请求。9.在Nginx中,如何使用未定义的服务器名称来阻止处理请求?10.在Nginx中如何在URL中保留双斜线?11.ngx_http_upstream_module的作用是什么?12. fastcgi 与 cgi 的区别
2021-07-23 14:48:15
199
原创 springboot
Spring Boot1.什么是springboot2.Spring Boot 有哪些优点?3. 创建一个 Spring Boot Project 的最简单的方法是什么?4.Spring 和 SpringBoot 有什么不同?5.如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?6.Spring Boot 中的监视器是什么?7.如何在 Spring Boot 中禁用 Actuator 端点安全性?8.怎么使用 Maven 来构建一个 SpringBoot 程序?9.S
2021-07-21 20:24:19
509
原创 搭建cas服务器
-1. 创建证书keytool -genkey -alias cas -keyalg RSA -keystore D:\cas.keystore这里秘钥是1234562.导出证书keytool -export -alias cas -keystore D:\cas.keystore -file D:\cas.crt -storepass 1234563. 客户端JVM导入证书keytool -import -trustcacerts -alias tomcat -file D:\cas.crt
2021-07-18 19:13:33
304
转载 spring
Spring1.什么是spring?2.使用Spring框架的好处是什么?3.Spring由哪些模块组成?4.Spring是怎么解决循环依赖的?5.Spring Boot手动装配有哪几种方式?6.Spring Boot自动配置原理7.谈谈自己对于Spring IOC的理解8.谈谈自己对于Spring AOP的理解9.Spring AOP和AspectJ AOP有什么区别?10.Spring中的bean的作用域有哪些?11.Spring中的单例bean的线程安全问题了解吗?12.Sp
2021-07-13 17:49:57
114
转载 操作系统复习
1.用户态和内核态的区别在计算机系统中,通常运行着两类程序:系统程序和应用程序,为了保证系统程序不被应用程序有意或无意地破坏,为计算机设置了两种状态:系统态(也称为管态或核心态),操作系统在系统态运行——运行操作系统程序用户态(也称为目态),应用程序只能在用户态运行——运行用户程序在实际运行过程中,处理机会在系统态和用户态间切换。相应地,现代多数操作系统将 CPU 的指令集分为特权指令和非特权指令两类。特权指令——在系统态时运行的指令对内存空间的访问范围基本不受限制,不仅能访问用户存储空
2021-07-11 11:23:43
823
转载 Netty
零拷贝传统 IO 问题传统的 IO 将一个文件通过 socket 写出File f = new File("helloword/data.txt");RandomAccessFile file = new RandomAccessFile(file, "r");byte[] buf = new byte[(int)f.length()];file.read(buf);Socket socket = ...;socket.getOutputStream().write(buf);内部工
2021-07-11 11:23:16
645
原创 设计模式复习
设计模式1.接口是什么?为什么要使用接口而不是直接使用具体类?2.设计模式六大原则?3.Java怎么实现单例模式?4.什么是代理模式?什么是动态代理?Java中动态代理有哪些实现方式?5.设计模式的类型6.说说你所熟悉或听说过的 j2ee 中的几种常用模式?7.简述一下你了解的 Java 设计模式(总结)8.适配器模式是什么?什么时候使用?9.适配器模式与装饰器模式有什么区别?10.适配器模式和代理模式之间有什么不同?11.什么是模板方法模式?试举例说明。12.OOP中的组合、聚合
2021-07-11 11:22:47
459
原创 Shiro
Shiro1.什么是shiro2.解释下Shiro的核心概念:Subject、SecurityManager、Realm3.Shiro的优点4.Shiro有哪些组件?5.说下Authentication 身份验证的流程6.Authorization 授权的方式和流程是怎样的?7.Cryptography 加密的过程是这样的?8.Realm 域如何使用?9.shiro拦截器的执行流程10.Session Manager 会话管理介绍一下参考资料1.什么是shiroShiro是一个
2021-07-11 11:22:05
246
原创 计算机网络
1.OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。1.1 物理层在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特
2021-07-11 11:21:01
292
原创 10大排序算法
1.常见排序算法复杂度2.冒泡排序步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。重复步骤1~3,直到排序完成。最快 :正序最慢:逆序public int[] sort(int[] arr){ for (int i = 1; i < arr.length; i++) { // 设定一个标记
2021-06-25 16:49:32
283
原创 B树和B+树
1、B-树1.1 B-树概述B-树,这里的 B 表示 balance( 平衡),B-树是一种多路自平衡的搜索树。B-树允许每个节点有更多的子节点。B-树是专门为外部存储器设计的,如磁盘,它对于读取和写入大块数据有良好的性能,所以一般被用在文件系统及数据库中。一个m阶的B树具有如下几个特征:根结点至少有两个子女。每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m所有
2021-06-24 11:59:43
748
原创 堆排序问题
NC随时找到数据流的中位数思路:1、准备一个大根堆,一个小根堆2、一个新进来的数,如果比大根堆堆顶大,进小根堆;比大根堆堆顶小,进大根堆3、如果两个堆长度差2,弹出堆顶进对面堆4、最后中位数必在两个堆顶中//创建小根堆 PriorityQueue <Integer> minHeap = new PriorityQueue<>(); //创建大根堆 PriorityQueue<Integer> maxHeap = new PriorityQueue<
2021-06-20 20:15:04
155
原创 Redis
1.什么是RedisRedis(Remote Dictionary Server) ,即远程字典服务,开源的高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来
2021-06-20 10:56:49
306
原创 逆波兰式计算器实现
1、中缀表达式转为后缀表达式将中缀表达式“9+(3-1)×3+10÷2”转化为后缀表达式 "9 3 1 - 3 * + 10 2 /+"的过程:2、解题思路逆波兰计算器的计算是在逆波兰表达式(也叫做后缀表达式)的基础上。 逆波兰计算器的计算过程为:从左到右扫描后缀表达式,遇到数字就入栈,遇到操作符就从栈弹出两个数字,然后计算得到的值继续入栈,继续扫描表达式,直到扫描完毕得到结果。 从逆波兰计算器的扫描过程可以看到,过程特别简单,代码写起来也比较容易。但现在的难点在于:如何把中缀表达式转成后缀
2021-06-17 17:55:00
668
原创 java中的位运算
1)左移( << )将5左移2位:5<<2 ,结果是20首先会将5转为2进制表示形式(java中,整数默认就是int类型,也就是32位):0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为205 * 2^22)右移( >> )将5左移2位:5>>2 ,结果是
2021-06-08 09:53:37
850
原创 Springboot中使用yml
1.Springboot引入多个yml方法SpringBoot默认加载的是application.yml文件,所以想要引入其他配置的yml文件,就要在application.yml中激活该文件。定义一个application-xlsx.yml文件(注意:必须以application-开头)application.yml中:spring: profiles: active: xlsx以上操作,xml自定义文件加载完成,接下来进行注入。application-xlsx.yml配置文件代
2021-05-12 19:52:05
1003
原创 Mybatis
1.什么是Mybatis1)MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,它内部封装了JDBC,开发时只需要关注sql语句本身,不需要花费精力去处理驱动,创建连接,创建statement等繁复过程。2)MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录,避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。3)通过xm文件或注
2021-05-12 14:35:06
538
原创 Mysql
1.SQL注入所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。举例:正常情况下username='test'且password='test'时,执行了sql语句select count(*) from admin where username = 'test' and password = 'test'但是当输入username="'or 1=1--"时,在java程序中String类型变量sql 为" selec
2021-05-07 17:44:01
944
原创 贪心算法
贪心算法的基本要素:1.贪心选择性质。所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。2. 当一个问题的最优解包含其子问题.
2021-05-07 17:42:23
226
GradyBooch_TheHistoryOfSoftwareEngineering.pdf
2020-06-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人