自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java BufferWriter写文件写不进去或缺失数据

Java BufferWriter写文件之后文件是空的或者数据不全在编程的过程中,读写文件是非常常见的操作,在这里我问介绍一下最近我遇到的集中写文件写不进去的情况。首先给出完整的代码。import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class Main { public static void main(String[] args) throws IOExcept

2021-04-03 09:46:04 4476 1

原创 LeetCode 374 猜数字大小(关于二分法在解决问题过程中存在的问题)

现在已经有很多博客已经对LeetCode374的解决思路与方法做了详细的讲解,我在这里只简单的说一下,我在做这个题目时遇到的问题!解决办法的原理就是使用二分法来找到给定的那个数字,每次都是缩减一半的空间中搜索!在计算中间值的时候,mid会有两个计算公式:mid = (low + high) / 2;mid = low + (high - low) / 2;这两个公式的区别就是:当寻找的...

2020-01-13 12:33:29 664 1

原创 Java Boolean 初始化方式

Java Boolean 初始化方式1、Boolean(String boolString); 以字符串的方式初始化,只有当字符串是“true”(不区分大小写,也可以是tRue之类的)的时候是true;其他的字符串来完成初始化都是false。Boolean dpBoolean = new Boolean("ok");System.out.println(dpBoolean);结果:fals...

2020-01-10 16:28:17 8518 4

原创 剑指offer: 字符串中第一个只出现一次的字符

题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).基本的解题思路都是使用Hash结构或者是类似于Hash结构来辅助解题。A、遍历一遍字符串,并记录下每一个字符出现的次数,然后再遍历一遍,找到字符只出现一次的位置,返回即可。B、遍历一遍字符串,在遍历的过程中,Hash结构...

2019-12-06 20:07:34 160

原创 剑指offer:求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)

题目描述求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。思路分析1、暴力求解法:这是最容易想到的,即从1到n遍历一遍,...

2019-12-06 08:51:44 302

原创 B-树完整项目代码 Java版实现

B-树完整项目代码 Java版实现B-树结点定义public class BTreeNode { public int keyNum; // 结点中关键字的个数 public int[] data; // 存储关键字的数组 public BTreeNode parent; // 双亲结点 public BTreeNode[] childNodes; //指向孩子结点 s...

2019-10-14 19:49:15 780

原创 Java 代码 实现B-树

Java代码实现B-树B-树的定义在前面已经介绍过了,在这里就跳过这一部分,直接看代码的实现!在学习B-树的过程中,基本的理论都已经了解了!用人的大脑来插入,寻找,删除是很简单的,一目了然,但是真正实现起来却一点也不简单!为了实现这个数据结构,我百度搜索了一下,但是大多数都是介绍理论,很少有人真正用Java代码实现的,在这里我按照自己的思路实现了一下,大家觉得有神问题的,欢迎留言评论!!B...

2019-10-14 19:36:01 763

原创 含有n个关键码的m阶B-树最坏情况下深度是多少

B-树的定义:一颗m阶的B树,或者为空,或者是满足下列特性的m叉树:若根节点不为空,那么根结点最少有两棵子树;树中每个结点最多含有m棵子树;所有非叶子结点至少含有m/2取上整棵子树;每个非叶子结点含有如下信息:n,A0,K1,A1…Kn,An,其中Ki<=Ki+1n为结点的关键字个数,且有关键字个数=子树个数-1.K1的值大于A0所指向的结点的所有值,小于A1所指向的结点的所有...

2019-10-10 21:51:24 2656

原创 Java 代码实现平衡二叉树(插入、删除、查找、遍历操作)

Java 代码实现平衡二叉树最近一直在看数据结构的相关内容,对于平衡二叉树这一节,理论看起很简单,无非是判断结点的平衡因子是否绝对值小于2。在插入或者删除之后进行相应的旋转调整。我已开始试着按照书上所讲的内容进行编程,但是书上的代码皆是伪代码,只是告诉你一个思路,按照书上是实现不出来的,所以我决定在已有理论的情况下,试着按照自己的想法编程。因为在前面的博客中,我已经介绍过了一般的二叉树的插入...

2019-10-10 21:16:18 838 1

原创 Java 代码实现并查集

Java 代码实现并查集并查集表示:用树的形式表示,采用双亲表示法。根结点的双亲节点设置为-1.那么整个集合就可以用一个数组表示,数组中的元素可以设置为数组的下标。1、并查集结点类/* * 并查集结点的实现 */public class UFSetNode { int parent; // 当前结点的双亲节点,初始化为-1 int number; // 以当前结点为根的子树的结...

2019-10-08 10:57:20 215

原创 回溯法 集合A的r组合

集合A的r组合问题问题说明:从集合中的所有元素中取出r个元素所组成的集合。例如A={2,4,7}, r=2,那么就有:{2,4}、{2,7}、{4,7}1、基本思路:将该问题看作是r行n列的棋盘布局问题。约束条件是:第i行的元素所在的列要大于前i-1行元素所在的列,即x[i]>x[k],k=1,2,…i-1。2、Java代码实现public class SetAofR { int...

2019-10-07 16:27:00 280

原创 回溯法 集合A的全排列

回溯法 集合A的全排列1、基本思路:将问题看作是n行n列的棋盘布局问题,这里的约束条件是:在任何时刻不能有两个元素位于同一行或者同一列。2、Java 代码实现public class FullPermutation { int n; int ct; int[] x; // 构造函数 public FullPermutation (int n) { this.n = n; ...

2019-10-07 16:19:22 294

原创 求解集合A的所有子集,使用回溯方法解决

假设集合A={a1,a2,…an}有n个元素。1、基本思路:求解的基本思路与前面介绍的皇后问题的思路基本相同。在这里只需将问题看作是n行2列的棋盘布局问题。第i行的第1列表示子集中包含元素ai,第2列表示不包含元素ai。在这里没有什么约束条件,只需要往前寻找合适的解,然后回溯一步,再向前进找下一个解,直到找到所有的解。2、Java代码实现public class Subset { int...

2019-10-07 16:09:15 673

原创 回溯法解决8皇后问题

1、皇后问题解决思路:使用回溯法解决,也就是通常所说的利用树的深度优先搜索求解。即沿着一条路径往下走,如果走不通,那就往回走,尝试另一条路径。皇后问题的求解过程中,每一个树结点都可以看做是棋局的局部布局或者是完整布局。根结点表示棋局的原始状态,没有任何棋子。之后的层与层之间表示一种状态转换,状态转换的过程就是构造树的过程,也就是树的深度优先搜索的过程。在状态转换的任何时刻,都需要满足约束条件:任...

2019-10-07 15:56:41 724

原创 哈夫曼树实现:统计文本信息,构造哈夫曼树,并对其进行编码与解码

哈夫曼树的大部分内容都在上一篇博客中讲解了,在这里重点说一下如何统计的文本数据。基本思想:首先从文件中读取数据,按行读取,保存在String类型的遍历中。在统计信息的时候,使用的数据结构是HashMap,字符作为key,个数作为value。为了能与我之前写的程序相结合,需要将HashMap的数据转换成Huffman结点类型数据。然后按照之前的程序就可以操作了!读取文本:在public S...

2019-10-06 22:24:45 2867

原创 简单实现哈夫曼树的建立、编码与解码

哈夫曼树建立、编码、解码1、哈夫曼树的建立Huffman树是根据元素的权重建立的,权重较小的离根结点较远,而权重较大的离根结点较近,从而使得整个Huffman树有着最小的带权路径长度。Huffman树的具体特性请参考《数据结构》一书或者是其他博客。首先给出Huffman树的结点类:public class HuffmanNode { int weight; char c; Huffm...

2019-10-06 22:03:59 5856 2

原创 找到数组中两个最小的元素

找到数组中两个最小的元素基本思路:设置两个min1、min2变量,分别存储第一个最小的数据,第二个的数据。先将其初始化为一个相当大的值,然后依次与数组中的每一个元素比较,只有当比min1大的时候才会去比较min2,如此比较下来便可以得到数组中两个最小的元素。如果初始化的时候只是设置为第一个元素的值,在特殊情况下,第一个元素就是当前数组中的最小值,那么得到的便是min1=min2=(数组的最小值...

2019-10-06 08:43:45 2675

原创 二叉树操作:增、删、查、(非递归)遍历

二叉树基本操作树结点public class MyTreeNode { public int data; public MyTreeNode left; public MyTreeNode right; // 构造函数 public MyTreeNode () { left = null; right = null; } public MyTreeNode (in...

2019-10-03 11:47:48 158 1

原创 桶排序、计数排序、基数排序浅谈

今天我们来讨论一下三种排序方法:桶排序、计数排序、基数排序。因为计数排序、基数排序都可以看作是桶排序的变形,所以在这里先给出桶类:BucketNode解释说明:numbers表示桶中有多少个有效数据list用于存储桶中的数据有序插入是指在把数据放入桶的同时对数据进行排序,使之插入之后是有序的。无序插入就是一般的情况,依次插入即可。public class BucketNode { ...

2019-10-01 10:12:16 166

转载 LInux C mknod函数

mknod()函数原文:linux mknod函数 | 学步园 https://www.xuebuyuan.com/3193575.htmlmknod() 是用来创建文件的,其原型是:int mknod(const char *path, mode_t mode, dev_t dev);第一个参数表示你要创建的文件的名称,第二个参数表示文件类型,第三个参数表示该文件对应的设备文件的设备号...

2019-09-13 20:12:54 2609

转载 【Linux】tee命令

tee命令主要被用来向standout(标准输出流,通常是命令执行窗口)输出的同时也将内容输出到文件,下面是tee的man 信息 read from standard input and write to standard output and files下面我们通过几个应用场景来熟悉tee命令。场景1: 如何使用tee命令tee命令格式是:tee [OPTION]... [FILE]...

2019-09-13 16:23:00 160

原创 Linux C sigsuspend()详解

关于sigsuspend()函数,我百度了好久终于找到一个可以说的明白的了!有例子,很好理解!在这里附上链接:http://blog.sina.com.cn/s/blog_6af9566301013xp4.html...

2019-09-12 16:12:43 407

原创 Linux waitpid函数

waitpid()版权声明:本文为CSDN博主「寇浩哲」的原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接及本声明。函数原型:pid_t waitpid(pid_t pid, int *status, int options);函数参数:1、pidpid>0 :只等待进程ID等于pid的子进程,不管其它已经有多少子进程运行结束退出了,只要指定的子进程还没有结束,...

2019-09-12 11:57:06 459

转载 Linux进程间通信——信号集函数

我们已经知道,我们可以通过信号来终止进程,也可以通过信号来在进程间进行通信,程序也可以通过指定信号的关联处理函数来改变信号的默认处理方式,也可以屏蔽某些信号,使其不能传递给进程。那么我们应该如何设定我们需要处理的信号,我们不需要处理哪些信号等问题呢?信号集函数就是帮助我们解决这些问题的。有关Linux进程间使用信号通信的更多内容,可以参阅我的另一篇文章——Linux进程间通信——使用信号下面是...

2019-09-11 22:08:51 76

转载 linux中pthread_join()与pthread_detach()详解

前言:1.linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态,如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符(总计8K多)。只有当你调用了pthread_join之后这些资源才会被释放。若是unjoinable状态的线程,这些资源在线程函数退出时或pthread_...

2019-09-09 20:37:51 127

原创 wait函数返回的宏

wait函数返回的宏宏说明WIFEXITED(status)当子进程正常结束时返回为真WEXITSTUTAS(status)当WIFEXITED(status)为真时调用,返回状态码的低8位WIFSIGNALED(status)当子进程异常结束时返回为真WTERMSIG(status)当WIFSOGNALED(status)为真时调用,返回引起终止的...

2019-09-09 16:52:20 315

原创 perror()函数

perror()函数函数原型:void perror ( const char * str );perror(str) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 str 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno的值来决定要输出的字符串。在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些...

2019-09-09 16:40:37 475

原创 Linux shell 间接变量引用(Indirect variable References)

Linux shell 间接变量引用实例:脚本名称711.sh#!/bin/bashPARAMETER (){ echo "$1"}message="parameter"parameter="This is the first parameter."PARAMETER "$message"PARAMETER "${!message}"echoparame...

2019-07-21 11:03:39 599

原创 Linux shell $* $# $? $0 $$等

Linux shell $* $# $? $0 $$$0:!脚本本身的名字;$#:传给脚本的参数个数;$@:传给脚本的所有参数的列表;$1: 传递给脚本的第一个参数,$2、$3依次类推...$*:是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个,即被扩展成"$1c$2c$3",其中c是IFS的第一个字符;$$:是脚本运行的当前进程ID号;$?:是显示最后命令的...

2019-07-21 09:20:14 129

原创 Linux shell /dev/null

/dev/null/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。所以,>/dev/null 表示标准输出被重定向到/dev/null,而不是屏幕!/dev/null 代表空设备文件,被定向到这里的输出将什么也不显示!!...

2019-07-20 21:13:43 157

转载 Linux Shell 重定向详解

Linux shell 重定向命令1、标准输入,标准输出与标准错误输出Linux下系统打开3个文件,标准输入,标准输出,标准错误输出。标准输入:从键盘输入数据,即从键盘读入数据。标准输出:把数据输出到终端上。标准错误输出:把标准错误输出到终端上。默认的标准输入指的是键盘,默认的标准输出与标准错误输出指的是屏幕或者是终端。系统为这三个文件分配了文件标识符fd(file descript...

2019-07-20 21:02:30 220

原创 Linux shell dirname与basename命令

dirname 与 basename1、dirname 实例:lishixin@lishixin:~/桌面$ dirname /etc/passwd/etclishixin@lishixin:~/桌面$ dirname /etc//lishixin@lishixin:~/桌面$ dirname /etc/passwd/shssh/ssjj.sh/etc/passwd/shsshli...

2019-07-20 20:50:09 1013

原创 Linux shell tar 打包压缩命令

Linux shell tar 打包压缩命令tar命令可以用来将将多个文件打包压缩进行备份。一般来说,tar是用来打包的,但是在实际的使用中,会结合压缩命令一起使用!tar 命令在使用的时候会带有许多参数,下面将列举其中常用的一些!具体的更多命令参数可以查看菜鸟教程Linux tar命令链接:https://www.runoob.com/linux/linux-comm-tar.html...

2019-07-20 16:14:49 4646

转载 Linux shell 比较运算符 -f -e -lt -gt等

Linux shell 各种比较运算汇总一、文件比较运算符e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ]-f filename 如果 filename为常规文件,则为真 如: [ -f /usr/bin/grep ]-L f...

2019-07-20 09:03:01 1258

原创 Linux shell IFS 设置为换行符

IFS设置为换行设置方式:IFS=''验证:lishixin@lishixin:~/桌面$ IFS='> 'lishixin@lishixin:~/桌面$ echo "shshhshshshs> shjahsjha> shajshahsj> sahjsha"shshhshshshsshjahsjhashajshahsjsahjshalishi...

2019-07-19 19:23:05 3438

转载 shell转义,单引号与双引号,反撇号

参考博客: https://www.cnblogs.com/mydomain/archive/2011/10/15/2213017.html1、转义单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反撇号③反斜杠,这3种特殊字符不被忽略;不忽略美元符号意味着shell在...

2019-07-19 18:59:28 4096

翻译 CSDN编辑器使用方法存档

CSDN博客编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作...

2019-07-17 21:15:42 251

原创 Linux 算术扩展 expr 使用误区

Linux 算术扩展算术扩展使用反引号(``)进行,通常会与expr命令结合使用!例如:var=expr $i + 3其中,expr负责执行这个扩展运算,并将结果赋予变量var。注意在使用的时候,运算符“+”左右都有一个空格,否则会得到意料之外的结果!...

2019-07-17 21:15:17 216

原创 Linux shell 变量引用

Linux shell 变量引用样例代码:3-7.sh需要注意的是variable3赋值的字符串中the后是两个空格!#!/bin/bash#variable="this is the first variable."echo $variable#variable2="this is the second variable."echo $variable2#variable3...

2019-07-17 10:49:13 679

原创 Linux shell脚本程序 if语句无法识别命令

Linux shell if 语句无法识别命令这两天看了一些shell编程的东西,在按照书上的代码编写运行的时候出现了意想不到的错误,明明很简单的if else语句硬是搞了一天才搞明白!shell 版本:bash 5.0 + vi文本编辑器这里先给出正确的代码!脚本命名为test.sh#!/bin/bash# #set -xecho -n "are you a student?"r...

2019-07-17 09:12:50 3836 2

空空如也

空空如也

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

TA关注的人

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