- 博客(24)
- 资源 (1)
- 收藏
- 关注
原创 堆和堆排序详解
手写堆与堆排序Heap堆堆是一棵完全二叉树,因此我们可以用数组来存储堆,而不是用链表存储。从数组的下标0开始存储元素,nums[0]存储的是这棵二叉树的root节点,nums[1]存储root节点的左子树节点,nums[2]存储root节点的右子树节点。那么针对元素 nums[x],它的左子树是nums[2x+1],右子树是nums[2x+2]。class Heap{ private int size=0; private int max_size; private in
2022-05-07 23:20:37 471
原创 聊一聊CMS垃圾回收器
CMS垃圾回收器的名字是(Ccrrent Mark Sweep并发标记清除),是一款采用标记清理算法回收老年代的垃圾回收器!并发性cms与其他回收器的不同是cms只有在根节点枚举阶段的时候会stop the world,其他阶段可以和用户线程并发执行,极大的降低了用户线程的暂停时间。特别适用于互联网网站或者B/S系统的服务端上,这类重视服务响应速度的,给用户良好的体验的情况。清理过程cms回收垃圾分为四个步骤:初始标记:根节点枚举,枚举全部的GC Roots对象。此阶段会stw,但是耗时极短。
2022-01-16 16:26:19 3417 8
原创 SpringBoot简单集成WebSocket
WebSocket概述websocket协议是一个基于TCP/IP的应用层协议,用于实现服务端和客户端的全双工通信。WebSocket与http的不同我们平时用的http协议,是由客户端请求服务器的数据,然后服务器收到客户端的请求后响应数据给客户端。而websocket不仅客户端可以主动向服务端发送数据,服务端也能主动向客户端发送数据。WebSocket应用场景一些等待轮询查询的业务,比如其他人给你点赞,在你的客户端进行点赞通知。如果是http协议,你只能不停的轮询向服务端访问有没有新的点赞,如
2022-01-05 22:30:52 1067 1
原创 Springboot集成腾讯云服务器redis
1.在云服务器放行端口redis默认端口是6379,我们需要在云服务器上进行端口放行。点击添加规则点击确认。如果你的云服务器配置了宝塔,同样需要在宝塔里进行放行。如果没有的话,可以进入下一步。进入宝塔后台管理页面放行端口2.修改redis配置文件进入redis.conf 配置文件,修改两个配置 bind 127.0.0.1 改为 #bind 127.0.0.1protected-mode yes 改成 protected-mode no修改后输入 :wq
2021-11-02 11:30:58 477
原创 MySQL的四种隔离级别及实现原理
Read Uncommitted(未提交读)在RU级别下,所有的事务都可以看到其他未提交事务所修改的数据,也就是说,在这个隔离级别下会产生脏读和幻读的问题。该级别性能也并不比其他隔离级别好多少,因此很少实际使用。Read Committed(提交读)在RC级别下,一个事务开始执行后,只能看到其他已经提交的事务造成的修改, 不能看到未提交事务对数据的修改,解决了脏读的问题。但仍然没有解决不可重复读的问题。很多DBMS默认隔离级别都是RC。(MySQL除外)实现原理: MVCC多版本并发控制在每一
2021-10-28 23:01:20 1081
原创 斐波那契数列的五种实现方式
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。暴力递推class Solution { public int fib(int n) { if(n==0)return 0; else if(n==1)return 1;
2021-10-22 21:20:43 2844
原创 狂神SpringBoot静态资源文件
链接:https://pan.baidu.com/s/1URaFmN6rt2AzDOwVogWBNQ提取码:bruc好兄弟们点个赞!
2021-10-19 21:59:37 17604 77
原创 使用navicat连接腾讯云mysql数据库
第一步:配置防火墙连接服务器的mysql数据库,我们首先需要在服务器上放行3306端口(MySQL服务对应的端口),进入服务器管理页面防火墙,点击添加规则,放行3306端口。如果你的服务器配置了宝塔页面,那么还需要在宝塔页面对3306端口进行放行(我就是只在腾讯防火墙放行,没在宝塔放行一直连不上)第二步:开启MySQL的远程访问权限我们在服务器上的mysql默认只能本地访问,需要开启访问权限。在服务器命令行输入mysql -uroot -p然后输入密码登录mysql,输入以下命令。查询
2021-09-11 20:58:30 4286 6
原创 Java内存区域模型
JAVA内存区域模型JVM虚拟机在执行java字节码文件时会把他所管理的内存划分为几个不同的区域。(在JDK1.8和1.8之前有些改变)JDK1.8之前:JDK1.8及之后:其中线程共享的区域有:堆内存方法区元空间(JDK1.8后出现)线程私有的区域有:虚拟机栈(java方法栈)本地方法栈(native修饰的方法栈)程序计数器虚拟机栈虚拟机栈是线程私有的,每个线程都有它自己的虚拟机栈。它的生命周期和线程相同。虚拟机栈就像数据结构中的栈,栈里保存的元素是一个个的
2021-07-30 22:20:20 188
原创 java中的finalize()方法
在java虚拟机的垃圾回收机制中:如果一个对象在可达性分析算法中被判定为不可达,那么垃圾回收器将会回收这个对象的内存。但在回收之前会执行一次对象的finalize()方法,如果在这个方法中对象被新的变量引用,那么垃圾回收器会放过这个对象对象逃逸的演示过程:class Solution { static Solution t=null; public static void main(String[] args) { //new 出一个对象 t= new
2021-07-11 21:43:42 591
原创 分享单例模式的几种写法
/* 单例模式最基本的写法:饿汉式 缺点:在load到内存时就会加载,无论是否使用这个类都会实例化*/class Bruce01{ public static Bruce01 INSTANCE=new Bruce01(); //私有构造器 private Bruce01(){} //提供接口访问 public static Bruce01 getInstance(){ return INSTANCE; }}/.
2021-07-06 18:05:08 105 2
原创 雪花算法详解
标题使用#+空格表示标题,一个#是一级标题两个#是二级标题,以此类推二级标题三级标题四级标题字体粗体 使用两个*包围字会加粗斜体 使用一个*包围字会斜体斜体加粗 以此类推,三个*包围字是斜体加粗废弃样式 用两个~包围字,字体会出现横线引用使用>+空格可以引用分割线使用三个-或者三个*表示分割线,前者非全屏,后者全屏。图片使用!+[图片名]+(url)可以使用本地路径,也可以使用网络路径超链接点击跳转到我的主页使用[链接名]+(url)可以使用本地路径
2021-06-02 00:00:11 11857 1
原创 路径压缩加权并查集模板
public class UF { private int[] id;//连通分量id private int[] sz;//分量权重 private int count;//分量数量 public UF(int n){ id=new int[n]; sz=new int[n]; count=n; for (int i = 0; i <n; i++) { id[i]=i;//每个分.
2021-05-20 22:12:59 129
原创 Mybatis学习笔记——基本配置
什么是MyBatisMyBatis是一款持久层框架,与JDBC相比,它省略很多获取连接设置参数和获取结果集的重复代码,提高了程序员使用数据库的效率。通过简单的XML配置便可以使用它。什么是持久化在我们使用计算机时,运行程序获得的数据都保存在内存中,而内存断电后数据便会消失,因此我们需要将储存在内存中的数据储存到磁盘中。这种将程序数据在持久状态和瞬时状态之间转换的机制便称为持久化Mybatis配置过程导入依赖文件进入Maven官网选择对应版本的MyBatis jar包和JDBC jar包以我自己
2021-04-11 22:22:11 215 3
原创 一秒解决java中没有out目录
解决java中没有out目录有时候在我们部署好的idea项目上,左侧的项目树上没有out目录。但是查看磁盘中的项目却发现有根目录。解决方法点击项目右上角的齿轮按钮!选择show Excluded Files3.大功告成...
2021-04-05 09:30:08 3066 3
原创 蓝桥杯真题:合根植物(并查集)JAVA实现
题目描述ww 星球的一个种植园,被分成 m \times nm×n 个小格子(东西方向 mm 行,南北方向 nn 列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入描述第一行,两个整数 m,nm,n,用空格分开,表示格子的行数、列数(1 \leq m,n \leq 10001≤m,n≤1000)。接下来一行,一个整数 kk (0 \leq
2021-03-23 22:25:51 238
原创 在“D:/mydat“目录下有一个学生名单文件(文本)“student2018.txt“,里面记载了若干学生信息, 每个学生信息单独一行,每行信息共有五列,每列之间用逗号分开, 其每列含义按顺序是:学
在"D:/mydat"目录下有一个学生名单文件(文本)“student2018.txt”,里面记载了若干学生信息,每个学生信息单独一行,每行信息共有五列,每列之间用逗号分开,其每列含义按顺序是:学号 姓名 出生日期 性别 专业,要求:将所有专业为"MATH"的学生专业改为"APMA",并重新保存为"student2018-1.txt"文件。(1) 201807012,张华,1999.07.23,M,CS(2) 201807016,王海,1999.08.11,M,MATH(3) 201807078
2020-12-03 14:26:35 3571
原创 Java中Stream流基本用法
JAVA8中,得益于Lambda表达式所带来的函数式编程,引入了一个新的Stream流概念,用于高效简洁的处理集合类库的对象。获取Stream流要想使用stream流,首先我们要获取Stream流对象集合类获取Stream流Collection接口中实现了stream()方法,用来获取集合类对象的stream流对象,因此我们在各种集合框架中可以使用stream()方法获取流对象 。 List<String> list=new ArrayList<>();
2020-11-19 00:05:23 964
原创 Java实现插入排序
插入排序是一种非常直观的排序方法插入排序的排序方法就像我们玩扑克牌一样,游戏开始,每人摸一张牌,之后继续摸牌,并将摸到的牌插入到对应的位置,直至摸牌结束。排序原理1.把整个数组分成两个部分,前面部分是已经排序好的,后面部分是还没有排序的。2.找到未排序部分的第一张牌,插入到已经排序的部分牌中。3.倒叙遍历已经排序的部分的牌,依次和待插入的牌进行比较。直至找到一张比插入的牌小的牌,然后将待插入牌插入此位置,其他牌向后移一位4.重复n-1次,排序完成代码public class Insertio
2020-11-05 22:34:05 150
原创 Java实现选择排序(图解+详情)
选择排序是一种基础简单的排序方法。原理1.遍历数组,假设第一个索引处的元素为最小元素,用min来标记该索引。之后依次和其他索引处的元素进行比较,如果当前索引处元素小于min索引处元素,则修改min值为当前索引。最后可以找到最小值元素的索引2.交换当前数组中min索引处元素和第一个索引处元素的位置3.假设数组的大小为n,重复步骤1和步骤2 (n-1)次,可以完成排序...
2020-10-28 19:02:55 532
原创 Java实现冒泡排序
冒泡排序是一种不断交换相邻的元素的排序,一些元素在不断得被交换中,就像水中冒泡一样,因此得名冒泡排序。算法原理1.比较相邻的元素,如果前面元素比后面元素要小,那么则交换这两个元素。2.对每一组相邻的元素都进行比较,从开始的第一对元素到结尾的最后一对元素依次进行比较,叫做一次冒泡。经过一次冒泡后,能保证最大的元素在最后3.如果说数组有n个元素,进行1次冒泡后能保证最后1个元素是最大的,也就是说进行1次冒泡能保证排完最后1个元素。那么进行n-1次冒泡后,能保证排完n-1个元素,n-1个元素排序完成,那么
2020-10-28 15:44:47 430 4
原创 杭电OJ1232畅通工程Java实现并查集
最近在读《算法第四版》学习了并查集算法,通过一道题来巩固自己的知识。也希望能帮助到刷这道题的人。题目链接题目描述Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路
2020-10-20 23:28:50 335
原创 浅谈Java中==和equals()方法
==运算符Java中测量两个变量是否相等有两种方式:第一种时利用==运算符,第二种时利用equals()方法。基本数据类型使用==来判断变量是否相等,当变量是四类八种基本数据类型时,并且都是数值类型,则只要两个变量的值相同,就可返回true。public class Test { public static void main(String[] args) { char a='A'; int b =65; double c=65.0d;
2020-10-18 23:38:44 565
C++课设复数计算器
2020-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人