自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中创建多线程的三种方式 及其区别

1.什么是线程?区分进程与线程?(1)线程:一个程序同时执行多个任务。通常,每一个任务就称为一个线程,线程是OS任务执行的基本单位;(2)进程:操作系统中一个程序的执行周期称为一个进程,进程是资源分配的基本单位;(3)线程与进程的区别: a) 线程比进程更轻量级,本质区别在于,每个进程拥有自己的一整套变量,而线程则是共享数据; b)撤销一个线程比启动一个进...

2019-04-27 10:19:44 474

原创 青蛙跳台阶问题(正常跳与变态跳)

正常跳台阶:题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)解决思路:n=1时,则只有一种跳法(1)n=2时,跳法为(1),(2) 2种跳法,n=3时,跳法为(1,1,1),(1,2),(2,1) 3种跳法n=4时,跳法为(1,1,1,1),(2,2),(1,2,1),(1,1,2...

2019-04-26 22:15:39 842

原创 【牛客网】求超过数组长度一半的元素

题目简述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。设计思路:1.先判断数组,如果数组的长度小于1,直接返回。2.否则,就假设这个数存在, (1)就先将该数组排序,则最中间的数一定是出现次数超过数组...

2019-04-18 00:05:56 417

原创 详述TCP三次握手和四次挥手的过程。

1.TCP的介绍: TCP(传输控制协议),位于OSI模型中的传输层,与它经常一块被提及的协议为UDP。2.TCP的首部格式:注解:(1)源/目的端口号:表示数据是从哪个进程来到哪个进程去;(2)序号:([0,2^32-1]),TCP连接中传送的字节流,每一个字节都按需编号,当序号增加到2^32-1之后,下一个又回到0.(3)确认号:期望收到对方下一个报文段的第一个数...

2019-04-17 23:31:51 681

原创 Java中集合框架的总结

在学习这块知识的时候觉得内容很多,还有很多比较底层的东西需要理解,当时就觉得头都大了,这几天静下心来,翻了翻书,也查了一些资料,对这块的知识体系,也有了自己的一个框架,所以对此做以总结,此文主要从以下几个方面进行阐述:1.为什么要使用集合框架? 数组是Java提供的随机访问对象序列的最有效方法,访问元素较快,缺点就是数组的大小自创建之后就固定了,所以集合框架的出现就是为了解...

2019-04-13 12:27:00 285

原创 Java实现判断一个序列是否为某二叉搜索树的后序遍历(加图解)

题目描述: 输入一个整数数组,判断该数组是不是某二叉树的后序遍历 的结果。如果是则输出“YES”,否则输出“NO”。假设输入的数组的任意两个数字都互不相同。在解决这个问题之前,首先要弄清楚两个问题: (1)简单了解什么是二叉搜索树? (2)后序遍历的方法1.二叉搜索树的定义:二叉搜索树又叫二叉排序树也叫二叉查找树(Binary Search Tree),二叉排序树...

2019-04-12 00:30:29 993 1

原创 Java中抽象类与接口(结合例子)

最近回顾了一下有关抽象类与接口部分的知识,所以对这块儿的知识做了一下小小的总结,此文从两者的定义,使用原则和使用限制作以总结。1.抽象类的定义: 抽象类只是在普通类的基础上扩充了一些抽象方法而已,而抽象方法指的是只进行了声明,而没有实现的方法(即就是没有方法体)。抽象类和抽象方法使用关键字 abstract 来定义。举个栗子:abstract class A{ ...

2019-04-11 15:14:07 3688 1

原创 Java实现大整数排序

题目描述:对N个长度最长可达1000的数进行排序。输入描述:输入第一行为一个整数N,(1<=N<=100).接下来的N行每行有一个数,数的长度范围为1<=len<=1000.每个数都是一个正数,并且保证不包含前缀0.输出描述:可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。示例1:输入输出示例仅供调...

2019-04-08 13:48:45 1116

原创 重建二叉树

输入某二叉树的前序建立和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字,例如:输入前序遍历序列{1,2,4,7,3,5,6,8}和中序序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:前序遍历二叉树的顺序是:根--->左---->右;中序遍历二叉树的顺序是:左---->根---->右前序序列中第一个...

2019-04-07 21:11:44 224

原创 e起聊的项目文档

目录1.项目名称:2.项目背景:3.项目描述:4.项目需求list:5.项目实现:5.1相关技术:5.2实现思路5.2.1服务端实现5.2.2客户端具体实现:7.功能BugList:8.项目总结:1.项目名称:e起聊2.项目背景:将JavaSE的所学知识应用于实践,完成一个聊天工具的实现。3.项目描述:创建客户端和服务端,客...

2019-04-02 22:07:33 442

原创 Java常用设计模式

此文全篇围绕“是什么”和“为什么”在列举设计模式之前,我们首先要明白两个问题:(1)什么是设计模式?(2)为什么要用设计模式?以下内容为详解?1.什么是设计模式?设计模式值软件开发人员在软件开发过程中面临的一般问题的解决方案,这些解决方案是众多软件开发人员经过相当长的的一端时间的实验和错误总结出来的。2.为什么要用设计模式?设计模式是一套被反复使用的、多数人知晓的、...

2019-03-26 14:30:33 367

原创 单链表的基本操作图解表示

   单链表就是链式存取的数据结构(也是线性表的一种),使用一组地址任意的存储单元存放的线性表中的数据元素,这些地址可以连续也可以不连续。  链表的表示方法:结点表示:如下图所示:data域:存放该节点的数据next域:存放后继结点的地址单链表结构的定义:typedef struct ListNode{ struct ListNode *next; Datatype d...

2019-02-16 18:00:11 1559

原创 打印一个整数的每一位

例如:1234 打印出来是 4 3 2 1,这里采用模10,除10的思路int Print(int value){ if (value &lt; 9){ return value; } while (value&gt;9){ printf("%d ", value % 10); value /= 10; } return value;}int main(){ ...

2019-02-15 11:12:11 304

原创 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1 程序原型: int count_one_bits(unsigned int value)

方法一:利用位运算,先定义一个计数器count,让value的二进制的每一位与1进行按位与,若与的结果是1,则count++,value右移,高位补0,若与的结果为0,只需将value右移移位,一直重复该步骤,直到value的每一位都与1进行按位运算用题中所给的例子来演示:32位平台下一个整型占4个字节代码:int count_one_bits(unsigned ...

2019-02-14 21:52:10 352

原创 静态顺序表顺序表的基本操作

顺序表:是用一段地址连续的存储单元一次存储数据元素的线性结构,是线性表的一种一般采用数组表示顺序表,数组有静态数组和动态数组之分,在此我们采用静态数组表示静态顺序表,如图为线性表的结构:下面实现顺序表的基本操作:初始化;销毁;尾插、头插;尾删、头删;根据指定元素删除指定位置插入和删除;查找;静态顺序表的结构定义:#define MAXSIZE ...

2019-02-13 20:45:40 659

原创 求第N个菲波那契数(递归和非递归实现)

斐波那契数列:形如:1 1 2 3 5 8  13  21...即有n个数当 n 小于等于 2 时是1,当 n 大于 2时,从三项开始,每一项等于其前两项之和#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;//1.实现斐波那契数列//方法一,利用迭代实现int fib1(int n){ int fir...

2019-02-13 15:24:09 411

原创 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。

实现思路:与之前打印九九乘法口诀表的思路一样,只是这次将具体的实现过程定义在函数内,然后在主函数中调用该函数即可#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include &lt;math.h&gt;int Print_Mul(int n){ int i = 0; int j = 0; int t =...

2019-02-05 12:26:46 588

原创 .编写一个程序,可以一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。

这里我们用getchar()读取从键盘输入的字符,其中大小写字符的转换是通过ASSII码的运算来进行转换的:如果是大写字符:转化成对应的小写字符要+32,反之则减32;#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include &lt;math.h&gt;int main(){ int ch;...

2019-02-03 14:15:21 540

原创 c语言完成简单的猜数字游戏

电脑通过rand()随机产生数字,通过与人输入的数字进行比较大小,并给出提示直到猜对为止。#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include &lt;math.h&gt;void game(int c){ int n = 0; while (1){ printf("请输入数字:"); sca...

2019-02-03 13:17:45 709

原创 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字, 例如:2+22+222+2222+22222

解题思路:(以例题)首先将这个多项式拆分:第一项:2第二项:22第三项:22第四项:2222第五项:22222可以观察到后一项都是在前一项的基础上乘以10再加上2所得出来的,其求和的过程也是一个累加的过程,由此可以编写出源代码:#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include...

2019-02-02 22:41:09 1135

原创 求出0~999之间的所有“水仙花数”并输出。

求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。/*在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。例如153、370、371及407就是...

2019-02-02 22:20:00 394

原创 编程计算1-100的整数中出现了多少次数字9

int main(){ int i = 0; int k = 0; for (i = 1; i &lt; 100; i++) { if (i % 10 == 9) { k++; } if (i / 10 == 9) { k++; } } printf("%d\n", k); system("pause"); return 0;}运...

2019-02-01 13:21:41 425

原创 Linux系统目录结构总结

在Linux或Unix操作系统中,所有的文件和目录都被组织成以一个根节点(/)开始的倒置的树状结构。文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录,在根目录下的既可以是目录,也可以是文件。而每一个目录中有包含子目录文件,以此反复构成一个庞大的系统文件Linux下的目录结构为树状的,如图:下面是对这些目录的解释:/root: 该目录为系统管理员,也叫作超级权限者的用...

2019-01-31 17:35:57 395

原创 GCC编译C程序的步骤

GCC编译器其实也是 Linux GCC命令,它以命令的形式在终端(Shell)中使用,有很多选项。GCC 是一个交叉平台的编译器,目前支持几乎所有主流 CPU 处理器平台(例如 i386、ix86_64、SPARCE、ARM、MIPS 等),它可以完成从 C、C++、Objective-C 等源文件向运行在特定 CPU 硬件上的目标代码的转换。GCC 不仅功能非常强大,结构也异常灵活,便携...

2019-01-29 21:22:46 863

原创 c语言实现经典小游戏-----简易版扫雷

扫雷游戏对我们来说并不陌生设计思路:1)初始化雷阵;2)打印雷阵;3)设置雷的位置(有系统调用rand()函数产生)4)统计点击处雷的个数5)排雷;具体步骤:1.初始化雷阵的时候需要初始化两个矩阵,如下://初始化雷盘//mine 为进行扫雷的矩阵//show 为显示某点周围雷个数的矩阵void Init_Mine(char mine[ROWS][COL...

2019-01-23 21:01:52 3709 3

原创 C语言实现三子棋小程序

三子棋就是我们所说的" 一条龙",如图:只要横、纵、斜三个方向中的任意一个方向满足三个棋相同,则游戏结束。实现思路:1)打印菜单;2)选择是玩家先走还是电脑先走;3)开是游戏:        i)初始化键盘;       ii)打印键盘;       iii)玩家走,电脑走        iV)是否满盘;        Vi)判输赢;4)测试代码分析...

2019-01-21 19:56:14 359

原创 java语言简单实现网上购物

因为大多软件网上购物的流程都差不多,所以这里采用模板模式,将购物作为一个模板抽象类,而各款软件的购物方式作为其子类,继承父类,父类不希望子类修改它的购物流程所以用关键字final修饰abstract class TemplateShopping{ final void shoppingMethod(){ this.scanning();//浏览 this.choose();/...

2018-12-02 17:03:13 3057

原创 java中对内部类的小结

刚开始学java,学习内部类这块的时候,就感觉有点混乱,现在就内部类这块的知识整理了一下:1.内部类的定义:     内部类(Inner class)也称为嵌入类,它把一个类定义在一个类的类体中,即就是在类内部进行其他类结构的嵌套操作。      首先这是一个静态内类的例子:class Outer{ private string msg="hello world"; //...

2018-11-25 21:38:49 348

原创 复杂链表的复制(C 语言 和 Java 语言)

所谓的复杂链表指的是一个链表有若干各节点,每一个节点右移个数据域专门用来存放数据,还有两个指针域其中一个纸箱下一个结点,还有一个随机指向当前复杂链表中的任意一个结点或者是一个空节点。如下图所示,就是一个复杂链表:解题思路:1.定义链表结构:2.把要拷贝的结点插入该链表在完成该操作之后,新链表的random就在原来链表的random之后了3...

2018-11-15 23:22:16 317

原创 gdb调试器中的常用快捷键

Gdb调试器的小结: 1.gdb &lt;program&gt;输入gdb &lt;program&gt;方式启动gdb后,gdb会在PATH路径和当前目录中搜索&lt;progma&gt;的源文件,如果要确认gdb是否读到源文件,可使用l或list命令,看看是否能够列出代码,使用 r/run 命令可以运行程序。2.寄存器对于调试来说寄存器中的值也很重要,可以查看到当前正在执行...

2018-11-15 01:07:50 1840

原创 java语言求数组最大值、最小值、总和,打印,翻转、截取等操作

//Java数组章节练习题public class ArrayUtils{ //1.计算数组中最大值 public static int arrayMaxElement(int[] data){ int max=data[0]; for(int i=0;i&lt;data.length;i++){ if(max&lt;data[i]){ ...

2018-11-14 10:12:34 623

原创 栈的基本操作

栈:一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除的一端称为栈顶,另一端称为栈底。不含任何元素的栈成为空栈,栈的特点是先入栈的元素后出栈,即先进后出。栈的功能:将数据从一种序列改变到另一种序列下面为数据入栈、出栈的简单示意图下面给出栈的基本操作的代码:#pragma once #include &lt;assert.h&gt;#includ...

2018-11-08 20:59:36 270

原创 除了gcc外,还有哪些牛逼的编译器。为什么调试的时候需要在编译选项中添加-g,调研readelf命令

Clang:是一个c语言、c++、Objective-C语言的轻量级编译器,基于LLVM、发布于LLVM BSD许可证下的c语言、c++、Objective-C、Objective-c++编译器。它与GNU C语言规范几乎完全兼容,它能够快速编译和较少占用内存,有诊断功能,并且兼容Gcc,允许集成到各种IDE中使用LLVM’BSD’协议。IBM XL C/C++:用于开发大型且复杂的C和C++...

2018-10-26 10:00:56 748

原创 进程间的通信-------管道

管道是进程间的通信方式之一,在学习管道之前,首先了解一下进程间为什么要通信?进程间为什么要进行通信?因为进程的独立性,使得进程的交流变得困难、复杂,因此就产生了进程间的各种通信方式。 进程间通信的目的:数据传输:一个进程需要将它的数据发送给另外一个进程 资源共享:多个进程之间共享同样的资源 通知事件:一个进程需要向另一个或另一组进程发送消息,通知它(它们)发生了某事件 进程控制:...

2018-10-22 16:41:56 309

原创 对进程的小结

对进程的小结:什么是进程?进程就是正在运行的程序。站在操作系统的角度上讲,进程就是pcb,linux下的pcb是task_struct     2. 进程的管理(从描述和组织两个角度讲)描述:使用结构体描述进程的属性(这里的结构体值得是task_struct)Task_struct里面的主要内容:1):标识符,即就是pid(或id),是描述进程的唯一 标示符,用来区别其他...

2018-10-08 22:19:05 232

原创 vim常用的快捷键

vim:   i:从光标所在位置插入   a:从光标所在位置的下一个位置插入   I:将光标移动到行首进行插入   A:将光标移动到行尾进行插入   o:在光标所在行的下方新建一行进行插入   O:在光标所在行的上方新建一行进行插入   s:删除光标所在字符并进行插入模式 普通模式下的常用操作:(Esc进入普通模式)  h:向左移动光标  l:  向右移...

2018-10-08 16:31:57 183

原创 Linux基础命令练习

Xshell 5 (Build 1339)Copyright (c) 2002-2017 NetSarang Computer, Inc. All rights reservType `help' to learn how to use Xshell prompt.[c:\~]$ Connecting to 192.168.18.128:22...Connection establ...

2018-09-15 13:33:24 379

原创 模拟实现strcpy,strcat,strstr函数

#define _CRT_SECURE_NO_WARNINGS 1#include&lt;stdio.h&gt;#include&lt;assert.h&gt;////方法一:创建临时变量计数器int my_strlen(char *s){ int count=0; while (*s != '\0'){ count++; s++; } return count;...

2018-08-16 12:56:16 226

原创 模拟实现strlen函数

#define _CRT_SECURE_NO_WARNINGS 1//方法一:创建临时变量计数器int my_strlen(char *s){ int count=0; while (*s != '\0'){ count++; s++; } return count;}//方法二:利用递归的方式int my_strlen(char *str){ if (*str...

2018-08-16 11:03:13 241

原创 .编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。 如: 在32位机器上2

#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;unsigned int reverse(unsigned int a){ unsigned int flag = 0x1; unsigned int ret = 0; int i = 0; while (i &lt; 32){ if (a&amp;(flag &l...

2018-08-10 09:22:05 241

空空如也

空空如也

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

TA关注的人

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