自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 希尔排序算法(基于Java实现)

title: 希尔排序算法(基于Java实现)tags: 希尔排序算法希尔排序算法的原理与代码实现:一、希尔排序算法的原理因为在简单插入排序中可能会存在这样的问题,例如,我们将数组arr=[2, 3, 4, 5, 6, 1]进行排序,如果我们采用的是简单直接插入排序算法,就会发现最后一位的数字1需要移动的次数就是arr.length - 1次。这样明显就会降低排序的效率。因此,希尔排序就是为了解决这样的问题,提高直接插入排序算法的效率,应运而生的。希尔排序的原理:希尔排序也是一种插入排序,它.

2020-12-26 10:30:46 187

原创 基数排序算法(基于Java实现)

title: 基数排序算法(基于Java实现)tags: 基数算法基数排序算法原理及代码实现:一、基数排序算法的原理基数排序属于“分配式排序”,又称“桶子法”。顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,最终达到排序的作用。基数排序的基本思想: 将所有带比较的数值统一为同样的数位长度,数位较短的数前面补零。然后从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成了一个有序序列。举例说明:第一轮排序的时候,是将每个元素的个位数取出.

2020-12-24 15:21:54 172

原创 冒泡排序算法(基于Java实现)

title: 冒泡排序算法(基于Java实现)tags: 冒泡排序算法冒泡算法原理及代码实现:一、冒泡算法的原理冒泡算法只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。这样一来,一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序工作。例如,我们要对一组数据4,5,6,3,2,1从小到大进行排序。第一次的冒泡操作的详细过程就是这样:可以看出,经过一次冒泡操作之后,6个元素已经存储在正确的位置上。要想.

2020-12-23 11:21:54 6731 5

原创 选择排序算法(基于Java实现)

title: 选择排序算法(基于Java实现)tags: 选择算法选择排序算法原理及代码实现:一、选择排序算法的原理选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。二、选择排序算法的代码实现package com.company;import java.util.Arrays;public class SelectionSort { public static int[] sel.

2020-12-23 11:17:13 240 3

原创 插入排序算法(基于Java实现)

title: 插入排序算法(基于Java实现)tags: 插入算法插入排序算法原理及代码实现:一、插入排序算法的原理首先,我们将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素。插入算法的核心思想是取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间数据一直有序。重复这个过程,直到未排序区间中元素为空,算法结束。如图所示,要排序的数据是 4,5,6,1,3,2,其中左侧为已排序区间,右侧是未排序区间。插入排序也包.

2020-12-23 11:07:02 3112 1

原创 归并排序算法(基于Java实现)

title: 归并排序算法(基于Java实现)tags: 归并算法归并排序算法的原理与代码实现:一、归并排序算法的原理其核心思想其实蛮简单的,就是如果我们要排序一个数组,我们先数组从中间分成前后两部分,然后对前后两部分分别排序,然后再将排好序的两部分合并在一起,这样整个数组就都有序了。总而言之,归并排序使用的就是分治思想,顾名思义,就是分而治之,将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。而分治算法一般都是用递归来实现的,分而治之是一种解决问题的处理思想,递归则是一种.

2020-12-22 10:00:00 241 1

原创 桶排序算法(基于Java实现)

title: 桶排序算法(基于Java实现)tags: 桶排序算法桶排序算法的原理和代码实现一、桶排序算法的原理桶排序,顾名思义,会用到“桶”,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算.

2020-12-19 23:02:20 289 3

原创 生产者/消费者模型详解(基于Java)

title: 生产者消费者模型tags: 多线程 synchronized 锁 wait() notify()生产者/消费者模型原理以及代码实现一、生产者/消费者模型原理所谓的生产者消费者模型,是通过一个容器来接解决生产者和消费者的强耦合的问题。通俗地将,就是生产者在不断地生产,而消费者在不断地消费,可是生产者不可能一直生产,因为用来装生产者生产的东西的容器容易装满,而此时,生产者就不能够一直去生产,消费者此时就可以从该容器中消费该产品,但是呢,容器中的东西也终会被消耗殆尽的一刻的,在这一刻呢,.

2020-12-19 14:47:32 421 1

原创 快速排序算法(基于Java以及golang实现)

title: 快速排序算法(基于Java实现)tags: 快速排序算法快速排序算法的原理与代码实现:一、快速排序算法的原理快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们选择p到r之间的任意一个数据作为pivot(分区点)。我们遍历p到r之间的数据,将小于pivot的放到左边,将大姨pivot的放在右边,将pivot放到了中间。经过这样的操作之后,数组中的数据就被分成了三个部分了,前面的p到q-1之间的都是小于pivot的,中间是pivot,后面的q+1到r之间是大于piv.

2020-12-17 22:03:53 230 1

原创 一文教会你什么线程安全以及如何实现线程安全

title: 一文教会你什么线程安全以及如何实现线程安全tags: 线程安全 Java并发 Java内存模型 synchronized volatile Lock文章目录一、线程安全的概念二、导致线程不安全的原因三、线程安全问题3.1 原子性3.2 可见性3.3 有序性案例:抢票四、如何确保线程安全?4.1 synchronized关键字4.1.1 同步代码块4.1.2 同步函数4.1.3 多线程死锁线程4.2 Lock4.3 volatile关键字解决办法:4.4 synchronized、vol.

2020-12-16 13:59:49 2618 6

原创 基于数组实现循环队列(基于Java实现)

title: 基于数组实现循环队列(基于Java实现)tags: 数组 循环队列基于数组实现循环队列的方法原理:我们在用数组实现队列的时候,发现当tail = n时,就会有数据搬移的操作,这样一来入队操作的性能就会受到影响。那我们可以使用循环队列来解决这一问题。循环队列,顾名思义,它长得像一个环。如下图所示:我们可以看到,图中这个队列的大小为 8,当前 head=4,tail=7。当有一个新的元素 a 入队时,我们放入下标为 7 的位置。但这个时候,我们并不把 tail 更新为 8,而是将.

2020-12-14 21:23:17 397

原创 基于链表实现队列(基于Java实现)

title: 基于链表实现队列(基于Java实现)tags: 链表 队列基于链表的队列实现方法的原理:基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针。它们分别指向链表的第一个结点和最后一个结点。如下图所示,入队时,tail->next = new_node,tail = tail->next; 出队时,head = head->next。具体代码如下:package com.company;//基于链表实现队列public .

2020-12-14 21:20:05 429 1

原创 基于数组实现队列(基于Java实现)

title: 基于数组实现队列(基于Java)tags: 数组 队列基于数组实现队列的原理:基于数组实现的队列,使用两个指针,一个是head指针 ,指向的是队头;一个是tail指针,指向队尾。可以通过下面这张图片来进行理解,当a,b,c,d依次入队之后,队列中的head指针指向下标为0的位置,而tail指针指向的是下标为4的位置。当需要入队操作时,先进行判断一下该队列是否已满,判断的条件为:tail等于队列的长度n。如果队列已满,就返回fasle,否则,进行入队操作,同时tail进行自加,往后退一.

2020-12-14 12:33:06 272 1

原创 java集合框架史上最详解(list set 以及map)

title: Java集合框架史上最详解(list set 以及map)date: 2020-12-13 11:09:39tags: 集合框架 list set map文章目录一、集合框架总体架构1.1 集合框架在被设计时需满足的目标1.2 所有的集合框架需要包含的内容1.3 Java集合框架图1.4 常用的集合在系统中的区别二、主要分析一下Set、List以及Map三个接口以及实现它们类的方法2.1 Set接口及其实现类方法2.1.1 Set接口a.HashSet中存放null值b.HashSe.

2020-12-13 21:09:54 564

原创 位映射--解决大数据排序与排重问题

文章目录一、问题提出二、问题分析三、位映射的详细阐述四、将int[] 数组转化为byte[] 数组方案4.1 实现bit索引与int数值之间的映射关系4.2 计算转化为byte[]数组的索引4.3 计算bitIndex在byte[]数组索引index中的具体位置4.4 引入位运算将byte[] 数组索引index 的各个位按权值相加五、读取byte[] 数组以及对其排序5.1 读取byte[]数组5.2 完整源码一、问题提出M(比如有10亿)个int整数,只有其中N个数重复出现过,读取至内存中并将重复的

2020-12-12 14:43:02 709

原创 手把手教你利用hexo搭建自己的博客网站----史上完整详细版(基于GitHub for mac)

文章目录一、安装Node.js1.1 下载完该安装包,直接进行安装即可。1.2 打开终端,切换至root用户。1.3 查看一下node的版本1.4 查看npm的版本二、安装hexo2.1 安装cnpm2.2 查看cnpm2.3 查看cnpm的版本2.4 利用cnpm来全局安装hexo博客框架2.5 验证hexo是否安装成功了三、使用hexo正式搭建博客框架3.1 建立一个空的文件夹,名为:LyfdeBlog3.2 进入LyfdeBlog目录3.3 真正使用hexo来生成博客!3.4 部署博客至GitHub上

2020-12-07 14:20:26 1871 4

原创 Git安装与Github基本使用(完整版 for mac)

文章目录一、安装Git1.1 通过homebrew安装git1.2 通过Xcode安装二、创建ssh key、配置git2.1 设置username和email(github每次commit都会记录他们)2.2 通过终端命令创建ssh key2.3 添加`ssh key`三、提交本地项目到Github3.1 在Github上创建一个repository或者Start a Project3.2 填写项目信息3.3 Clone工程到本地3.4 在Xcode中新建工程3.5 提交修改一、安装Git首先,需要检

2020-12-06 00:19:48 1076

原创 Java编写飞机大战(超级详细的完整版)--附源码及图片

文章目录一、基本介绍二、源码分析三、总结一、基本介绍首先,先想想要完成一个飞机大战,需要完成那些步骤呢?①是不是需要有个界面去显示飞机和子弹之类的组件呢?这个时候是不是需要去绘制一个界面类呢? 答案是必须的!!!②既然画完了界面,那界面的上的飞机、子弹、敌机啥的是不是也需要创建一个类去绘制呢?答案也是必须的!!!在绘制子弹和敌机的时候,需要去考虑敌机遇到子弹爆炸的场景,以及每击毁一架飞机,怎么算我的得分的情况,这些都是需要去考虑的。二、源码分析①先绘制飞机大战的界面类GameMain类

2020-12-04 10:26:45 34068 22

原创 Linux学习(十五)---Python定制篇---apt软件管理和远程登录

文章目录一、apt介绍二、Ubuntu 软件操作的相关命令三、更新 Ubuntu 软件下载地址3.1 原理示意图3.2 寻找国内镜像源3.3 备份 Ubuntu 默认的源地址3.4 更新源服务器列表四、Ubuntu 软件安装,卸载的最佳实践4.1案例说明五、使用 ssh 远程登录 Ubuntu5.1 ssh 介绍5.2 原理示意图六、使用 ssh 远程登录 Ubuntu6.1 安装 SSH 和启用6.2 在 Windows 使用 XShell5/XFTP5 登录 Ubuntu6.3 从 linux 系统客户

2020-12-01 21:28:21 440

原创 Linux学习(十四)---大数据定制篇Shell编程

文章目录一、为什么要学习shell编程二、Shell 是什么三、shell 编程快速入门-Shell 脚本的执行方式3.1 脚本格式要求3.2 编写第一个 Shell 脚本3.3 脚本的常用执行方式四、shell 的变量4.1Shell 的变量的介绍4.2 shell 变量的定义4.3 定义变量的规则4.4 将命令的返回值赋给变量(重点)五、设置环境变量5.1 基本语法六、位置参数变量6.1 介绍6.2 基本语法6.3 位置参数变量应用实例七、预定义变量7.1 基本介绍7.2 基本语法7.3 应用实例八、运

2020-12-01 20:50:56 830

原创 Linux学习(十三)---搭建JavaEE环境

文章目录一、概述1.1 示意图二、安装 JDK2.1 安装步骤2.2 测试是否安装成功三、安装 tomcat3.1 安装步骤3.2 测试是否安装成功四、Eclipse 的安装4.1 安装步骤一、概述1.1 示意图如果需要在 Linux 下进行 JavaEE 的开发,我们需要安装如下软件:二、安装 JDK2.1 安装步骤0)先将软件通过 xftp5 上传到 /opt 下1)解压缩到 /opt2)配置环境变量的配置文件 vim /etc/profileJAVA_HOME=/opt/jdk

2020-12-01 16:23:01 328

原创 Linux学习(十二)---RPM和YUM

文章目录一、rpm 包的管理1.1 基本介绍1.2 rpm 包的简单查询指令1.3 rpm 包名基本格式1.4 rpm 包的其它查询指令1.5 卸载 rpm 包1.6 安装 rpm 包二、yum2.1 基本介绍2.2 yum 的基本指令2.3 yum 应用实例一、rpm 包的管理1.1 基本介绍  一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有.RPM 扩展名的文件。  RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩

2020-12-01 15:44:19 117

原创 Linux学习(十一)---进程管理

文章目录一、进程的基本介绍二、显示系统执行的进程2.1 说明2.2 ps 指令详解2.3 应用实例2.4 思考题三、终止进程 kill 和 killall3.1 基本介绍3.2 基本语法3.3 常用选项3.4 最佳实践四、查看进程树 pstree4.1 基本语法4.2 常用选项4.3 应用实例五、服务(Service)管理5.1 基本介绍5.2 service 管理指令5.3使用案例5.4细节讨论5.5 查看服务名5.6 服务的运行级别(runlevel)5.7 开机的流程说明5.8 chkconfig 指

2020-12-01 14:53:01 105

原创 Linux学习(十)---网络配置

文章目录一、Linux 网络配置原理图(含虚拟机)二、查看网络 IP 和网关2.1 查看虚拟网络编辑器2.2 修改 ip 地址(修改虚拟网络的 ip)2.3 查看网关2.4 查看 windows 环境的中 VMnet8 网络配置 (ipconfig 指令)三、ping 测试主机之间网络连通3.1基本语法3.2 应用实例四、linux 网络环境配置4.1第一种方法(自动获取)4.2第二种方法(指定固定的 ip)一、Linux 网络配置原理图(含虚拟机)目前我们的网络配置采用的是 NAT。二、查看网络

2020-12-01 11:21:22 105

原创 Linux学习(九)---磁盘分区、挂载

文章目录一、分区基础知识1.1 分区的方式:1.2 windows 下的磁盘分区二、Linux分区2.1原理介绍2.2 硬盘说明2.3 使用 lsblk 指令查看当前系统的分区情况三、挂载的经典案例3.1如何增加一块硬盘四、具体的操作步骤整理4.1虚拟机增加硬盘步骤 14.2虚拟机增加硬盘步骤 24.3虚拟机增加硬盘步骤 34.4虚拟机增加硬盘步骤 44.5虚拟机增加硬盘步骤 5五、磁盘情况查询5.1查询系统整体磁盘使用情况5.2 查询指定目录的磁盘占用情况六、磁盘情况-工作实用指令一、分区基础知识1.

2020-12-01 10:40:01 203

原创 Linux学习(八)---crond 任务调度

文章目录一、Crond任务调度原理图二、概述三、基本语法四、快速入门4.1任务的要求4.2 步骤如下4.3 参数细节说明五、任务调度的几个应用实例5.1 案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件 中5.2 案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中5.3 案例 3: 每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件中 mydb.bak。六、crond 相关指令一、Crond任务调度原理图二、概述

2020-12-01 00:26:00 402

空空如也

空空如也

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

TA关注的人

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