- 博客(205)
- 资源 (1)
- 收藏
- 关注
原创 基本排序算法
public class Sort { public static void main(String[] args) { int[] arr={6,8,5,4,2,1,0,9,0,7,3}; int[] tmp = new int[arr.length]; quickSort(arr,0,arr.length-1); for (int i : arr) { System.out.print(i+" "); .
2022-05-02 11:59:15
439
原创 桶排序
public static void bucketSort(int[] arr,int bucketSize){ if(arr.length < 2) return; // 数组最小值 int minValue = arr[0]; // 数组最大值 int maxValue = arr[1]; for(int i = 0;i<arr.length;i++){ if(arr[i] < minValue){
2020-07-29 00:26:36
265
原创 归并排序、快速排序
//归并排序public static void mergeSort(int[] a,int n){ mergeSortInternally(a,0,n-1);}public static void mergeSortInternally(int[] a, int p, int r){ if(p >= r) return; int q = p + (r-p)/2; mergeSortInternally(a,p,q); mergeSortInterna
2020-07-26 22:29:23
200
原创 冒泡排序、插入排序、选择排序
//冒泡排序public static void bubbleSort(int[] arr,int n){ if(n<=1) return; for(int i = 0;i<n;i++){ boolean flag = false; for(int j = 0;j<n-i-1;j++){ if(arr[j] > arr[j+1]){ int tmp = arr[j];
2020-07-26 11:00:19
211
原创 链表(上):如何实现LRU缓存淘汰算法?
链表是一种最基础的数据结构,学习链表有什么用?为了回答这个问题,先来讨论一个经典的链表应用场景,那就是 LRU 缓存淘汰算法。缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决定。常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Us.
2020-07-25 19:20:03
347
原创 数组:为什么很多编程语言中数组都从0开始编号?
每一种编程语言中,基本都有数组这种数据类型,它是一种最基础的数据结构,在大部分编程语言中,数组都是从0开始编号的,但你是否想过,为什么数组要从0开始编号,而不是从1开始呢?从1开始不是更符合人类的思维习惯吗?目录如何实现随机访问?低效的“插入”和“删除”容器能否完全替代数组?解答开篇如何实现随机访问?什么是数组,专业的解释在这里。数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 通过里面的几个关键词来对数组进行详细的介绍。第一是线性表(Linear .
2020-07-25 18:53:59
521
原创 解析SpringMVC的执行过程
Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。Spring MVC框架像许多其他的MVC框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet(它继承自HttpServlet基类)。Spring MVC的原理如下图所示:当发
2020-07-19 01:00:13
228
原创 Kafka入门:消息队列、消费模式、基础架构
定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。使用消息队列的好处:1) 解耦允许你独立的扩展或修改两边的处理过程,只要确保他们遵守同样的接口约束。2)可恢复性系统的一部分组件失效时,不会影响到整合系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。3)缓冲有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。4)灵活性 &
2020-07-12 23:48:30
540
原创 JUC学习(3)集合的并发安全解决方案、JUC常用辅助类
并发下ArrayList是不安全的,多线程操作同一个集合会出现java.util.ConcurrentModificationException 并发修改异常解决方案:1. List<String> list = new Vector<>();2. List<String> list = Collections.synchronizedList(new ArrayList<>());3. List<String> list = new C
2020-07-12 01:21:17
209
原创 JUC学习(2)8锁现象彻底理解锁
线程休息使用JUC包下的TimeUnit。/***8锁,就是关于锁的8个问题*1、标准情况下,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话*1、sendSms延迟4秒,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话*/public class Test1 { public static void main(String[] args) { Phone phone = new Phone();//锁的存在 new Thread(()-&
2020-07-12 00:13:13
176
原创 JUC学习(1)生产者消费者问题
线程有哪些状态?NEW:新生RUNNABLE:运行BLOCKED:阻塞WAITING:等待TIMED_WAITING:超时等待TERMINATED:终止wait / sleep的区别来自不同的类:wait来自Object,sleep来自Thread。关于锁的释放:wait会释放锁,sleep睡眠不会释放锁使用的范围不同:wait必须在同步代码块中,sleep可以在任何地方睡是否需要捕获异常:wait不需要捕获异常,sleep必须要捕获异常。Lock三部曲// 1. new
2020-07-11 22:18:55
200
原创 Docker学习(8)DockerFile
DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。构建步骤:手动编写一个dockerfile文件,必须要符合file的规范有这个文件后,直接docker build命令执行,获得一个自定义的镜像3.docker runDocker执行DockerFile的大致流程:docker从基础镜像运行一个容器执行一条指令并对容器做出修改执行类似docker commit的操作提交一个新的镜像层docker在基于刚提交的镜像运行一个新容器执行docker
2020-07-10 22:14:49
125
原创 Docker学习(7)docker commit、容器数据卷
docker run -it -p 8888:8080 tomcat-p 主机端口:docker容器端口-p 随机分配端口i:交互t:终端docker commit提交容器副本使之成为一个新的镜像docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然也没有了。为了能保存数据,在docker中我们使
2020-07-10 01:10:51
884
原创 Docker学习(6)镜像原理
镜像是什么?镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。UnionFS(联合文件系统)Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像)可以制作各种具体的应用镜像。
2020-07-10 00:13:47
261
原创 Docker学习(5)容器命令(下)
启动交互式容器docker run -it 容器名启动守护式容器docker run -d 容器名查看容器日志docker logs -f -t --tail 容器ID-t:是加入时间戳-f:跟随最新的日志打印–tail:数字显示最后多少条查看容器内运行的进程docker top 容器ID查看容器内部细节docker inspect 容器ID进入正在运行的容器并以命令行交互docker exec -it 容器ID bashShell重新进入docker attac.
2020-07-09 01:03:08
188
原创 Docker学习(4)容器命令(上)
有镜像才能创建容器,这是根本前提(下载一个centos镜像:docker pull centos)新建并启动容器docker run [OPTIONS] IMAGE [COMMAND] [ARG..]OPTIONS说明:–name=“容器新名字”:为容器指定一个名称-d:后台运行容器,并返回容器ID,也即启动守护式容器-i:以交互模式运行容器,通常与-t同时使用*-t:为容器中心分配一个伪输入终端,通常与-i同时使用*-P:随机端口映射-p:指定端口映射,有以下四种格式:① ip:.
2020-07-09 00:30:36
185
原创 Docker学习(3)镜像命令
① docker images:列出本地主机上的镜像各个选项说明:REPOSITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像IDCREATED:镜像创建时间SIZE:镜像的大小同一个仓库源可以有多个TAG,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubuntu:latest镜像OPTIONS说明:-a:列出本地所有的镜像(含中间
2020-07-08 22:24:31
222
原创 Docker学习(1)docker三要素
docker与传统虚拟化方式的不同之处:传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。每个容器之间相互隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。Docker的基本组成镜像docker镜像(Image)就是一个只读的模板。镜像可以用来创建docker容器,一个镜像可以创建很多容器。容器
2020-07-08 00:19:59
332
原创 Nginx学习(1)Nginx是什么及相关概念
简介:什么是nginxNginx(“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。Nginx专为性能优化而开发,性能是其最重要的考量,事实上非常注重效率,能经受高负载的考验,有报告表名能支持高达50000个并发连接数。反向代理Nginx不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。(1)正向代理如果把局域网外的Internet想象成一个巨大的资源库,则局
2020-07-07 00:00:03
299
原创 前端学习(15)相对定位、绝对定位、固定定位、z-index
相对定位:position:relative;top:100px;left:100px;right:100px;botton-100px;相对于原来的位置,进行指定的偏移,相对定位的话,它仍然在标准文档流中,原来的位置会被保留。绝对定位:基于xxx定位,上下左右~没有父级元素定位的前提下,相对于浏览器定位假设父级元素存在定位,我们通常会相对于父级元素进行偏移在父级元素范围内移动相对于父级或浏览器的位置,进行指定的偏移,绝对定位的话,它不在标准文档流中,原来的位置不会被保.
2020-07-05 21:21:01
241
原创 前端学习(14)解决父级边框塌陷的问题
clearclear:right; 右侧不允许有浮动元素clear:left; 左侧不允许有浮动元素clear:both; 两侧不允许有浮动的元素clear:none; 解决方案:增加父级元素的高度#father{ border:1px #000 solid; height:800px;}增加一个空的div标签,清除浮动<div class="clear"></div>.clear{ clear:both; margin:0; paddi
2020-07-05 19:09:14
2138
原创 前端学习(13)超链接伪类
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><style> /*默认的颜色*/ a{ text-decoration: none; color: aqua; } /*鼠标悬浮的颜色*/ a
2020-07-05 17:09:33
2457
原创 前端学习(12)文本样式
颜色:color、rgb、rgba文本对齐的方式:text-align=center首行缩进:text-indent:2em行高:line-height超链接去下划线:text-decoration:none
2020-07-05 16:25:22
197
原创 前端学习(11)选择器(基本、层次、结构伪类、属性)
选择器作用:选择页面上的某一个或者某一类元素基本选择器标签选择器:选择一类标签: 标签{}类选择器 class:选择所有class属性一致的标签,跨标签: .类名{]Id选择器:全局唯一! #id名{}优先级:id > class > 标签层次选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器<!DOCTYPE html><html lang="en"><head> <meta charset="UTF
2020-07-05 15:55:31
201
原创 前端学习(10)CSS
四种CSS导入方式:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <!--内部样式--> <style> h1{ color: green; } </style> <!
2020-07-05 14:12:44
109
原创 前端学习(9)搜索框滑块和简单验证
<!--邮箱验证--><p> 邮箱: <input type="email" name="email"></p><!--URL--><p> URL: <input type="url" name="url"></p><!--数字--><p> 数字: <input type="number" name="num" max="
2020-07-04 23:22:40
200
原创 前端学习(8)下拉框、文本域、文件域
<!--下拉框--> <p> 国家: <select name="列表名称"> <option value="china">中国</option> <option value="us">美国</option> <option value="eth">瑞士</option> ...
2020-07-04 23:04:00
2570
原创 前端学习(7)文本框、单选框、多选框
表单元素格式属性1说明type指定元素的类型。text、password、checkbox、radio、submit、reset、file、hidden、image和button,默认为textname指定表单元素的名称value元素的初始值。type为radio时必须指定一个值size指定表单元素的初始宽度。当type为text或password时,表单元素的大小以字符为单位。对于其他类型,宽度以像素为单位maxlengthtype为text或pas
2020-07-04 22:30:43
1547
原创 前端学习(6)iframe内联框架
<body><!--iframe内联框架 src:地址 w-h:宽度高度--><iframe src="https://www.baidu.com" frameborder="0" width="1000px" height="800px"></iframe></body>
2020-07-04 21:46:35
539
原创 前端学习(5)页面结构分析
元素名描述header标记头部区域的内容(用于页面或页面中的一块区域)footer标记脚部区域的内容(用于整个页面或页面的一块区域)sectionweb页面中的一块独立区域acticle独立的文章内容aside相关内容或应用(常用于侧边栏)nav导航类辅助内容header、footer、nav重要,其他了解即可。...
2020-07-04 21:35:55
297
原创 前端学习(4)媒体元素
<!--音频和视频 src:资源路径 controls:控制条 autoplay:自动播放 --> <video src="" controls autoplay></video> <audio src="" controls autoplay></audio>
2020-07-04 21:24:52
175
原创 前端学习(3)表格
<!--表格table 行tr,列td--> <table border="1px"> <tr> <!--colspan跨列--> <td colspan="4">1-1</td> </tr> <tr> <!--rowspan跨行--> &l...
2020-07-04 21:20:11
133
原创 前端学习(2)列表
块元素:无论内容多少,该元素独占一行(p、h1-h6)行内元素:内容撑开宽度,左右都是行内元素的可以排在一起(a、strong、em)<!--有序列表--> <ol> <li>Java</li> <li>Python</li> <li>前端</li> <li>运维</li> <li>C
2020-07-04 21:11:19
139
原创 前端学习(1):HTML标签
开一个前端学习的头,虽然已经开始工作了,知道学习的时间不会像以前一样那么多,但还是要挤出时间学习,事在人为!加油!网页基本标签:<!DOCTYPE html><html lang="en"><head> <!--描述--> <meta charset="UTF-8"> <!--标题标签--> <title>Title</title></head><body&
2020-07-04 20:59:18
204
原创 Oracle数据库精讲(十一)闪回
DML操作数据后commit,不能使用rollback回退,可以使用闪回。闪回:跨越commit,回退,需要时间点。//查看当前时间点select timestamp_to_scn(sysdate) scn from dual; //闪回表flashback table 表名 to scn 时间点;//如果此间表结构发生变化不能闪回。//报错:因为未启用行移动功能,不能闪回表 解决方法:alter table 表名 enable row movement;要闪回:必须知道 时间点闪回
2020-06-29 23:45:24
218
原创 Oracle数据库精讲(十)触发器、DBCA
触发器:与表相关联的,PLSQL程序,当执行DML,自动执行触发器。//创建语法create or replace trigger 触发器名before | afterdelete | insert | update [of 列名]on 表for each row [when 条件]...plsql代码/无论修改多少行,触发器只执行一次。原因:默认是 语句级触发器,作用于表,只执行一次。还有行级触发器:for each row [when 条件]。作用于每一行,每满足一次条件,都执
2020-06-28 23:43:03
238
原创 Oracle数据库精讲(九)存储过程、存储函数
存储过程//创建存储过程语法:create [or replace] procedure 过程名(参数列表) as PLSQL语句;//具体语法://无参:create procedure 过程名asbeginend;//有参create or replace procedure 过程名(参数 in 参数类型)asbeginend;//输入参数in,输出参数out调用存储过程:1.exec 过程名();2.begin 过程名(); 过程名(); 过程名();
2020-06-28 00:46:04
200
seata-server-1.0.0.zip.xltd
2020-06-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人