自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

haobing的博客

本博客旨在分享技术,和大家共同进步

  • 博客(18)
  • 收藏
  • 关注

原创 KMP算法实现

import java.util.Scanner;//KMP算法, T(n)=O(N+M)public class Main{ public static void main(String []args){ Scanner sc=new Scanner(System.in); String s=sc.nextLine(); String t=

2017-09-08 17:20:41 312

原创 排列与组合的JAVA通用算法

排列算法1.例如,输入n,求1-n的全排列。一共有n*(n-1)*(n-2)…*1种排列(n个数两两不相同)//采用递归地方式实现,就是回朔法public class Rank { private static Set<Integer>set=new HashSet<Integer>();//用于判断数字是否已经用过 private static int n=0;//输入的n,求1

2017-07-30 00:47:01 811

原创 快速幂算法和大整数求模

** 1.快速幂的算法**(1)当我们求一个数的n次方的的结果时,若直接选择for循环,来累乘的话,效率很低,时间复杂度位O(n),而当我们选择快速幂来计 算时,时间复杂度能达到O(logn),快了很多。快速幂的基本方法基于二进制,将n次方分解,每次计算平方。如下: 假设我们要求5^23(5的23次方),因为23换为二进制为:10111。即2^4*1+2^3*0+2^2*1+2^1*1+2^0*

2017-07-24 16:14:53 5088

原创 Window网络编程之TCP通信

实验四 TCP通信实验面向连接的Socket通信流程: 1 实验类型 设计型实验 2 实验目的 1. 掌握TCP 服务器程序和客户程序的编程流程; 2. 熟悉面向连接的C/S 程序使用的winsock API。 3 背景知识 1. 流套接字编程模型 流式套接字的服务器进程和客户端进程在通信前必须创建各自的套接字并建立连接,然 后才能对相应的套接字进行“读”、“写”等操作,实现数

2017-04-09 16:59:21 1645

原创 Windows网络编程之端口扫描实验

实验三 端口扫描实验1 实验类型 验证型实验 2 实验目的 1.了解端口扫描的基本概念和工作原理; 3 背景知识 1. 端口扫描原理 在“计算机网络”课程中,我们知道完成一次TCP 连接需要完成三次握手才能建立。端 口扫描正是利用了这个原理,通过假冒正常的连接过程,依次向目标主机的各个端口发送连 接请求,并根据目标主机的应答情况判断目标主机端口的开放情况,从而分析并对一些重要 端口

2017-04-08 22:38:42 4897

原创 Windows网络编程之UDP通信

实验二 UDP 通信实验通信模型: 1 实验类型 验证型实验 2 实验目的 1. 进一步理解Winsock API 的调用方法 2. 了解UDP 协议的工作原理 3. 掌握UDP 服务端程序和客户端程序的编写流程 4. 熟悉程序的调试方法。 3 背景知识 1. Winsock 编程模型 Winsock 编程的主要模型分为流套接字编程模型和数据报套接字编程模型两类,主要区 别在于

2017-04-08 16:50:14 14481 2

原创 Windows网络编程之Winsock 编程接口实验

实验一 Winsock 编程接口实验1 实验类型 验证型实验 2 实验目的 1. 掌握Winsock 的启动和初始化; 2. 掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。 3 背景知识 (1)Winsock 基本概念 Winsock 即Windows Sockets 的简称,是在Windows 操作

2017-04-08 13:25:36 3634

原创 Java之IO流

摘要Java数据在输入/输出时会做连续传递,这点有点像水流,所以Java把数据流称为流(Stream)。最常见的流是在文本模式下,用户输入资料以后。经过处理再将结果打印在屏幕上。另一种流是发生在文件存取:先将文件内容读取到内存,然后再将结果写回文件。输入和输出时相对内存而言: 如图: 由图可知,数据流分为输入输出流,当然,Java函数库内相应的处理类也分为输入输出两种。除此之外,若以数据处理

2017-04-07 23:26:33 360

原创 深入解析JAVA的Class文件

深入解析JAVA-Class文件我们都知道,计算机只认识1和0,所以我们写的程序需要经过编译器翻译为1和0的二进制格式才能被计算机执行。这么多年过去 了,计算机仍然只能识别1和0,但由于最近这些年来,虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现,将我们编写的程序编译为二进制本地机器码(Native code)已不再是唯一的选择,越来越多的的程序语言选择了与操作系统和机器指令集无关的,平

2017-04-02 21:02:43 785

原创 最短路径之Dijkstra算法

最短路径之Dijkstra算法(看到i,j,k三个变量可以理解为需要三个for循环,方便记忆)本节来学习指定一个点(源点)到其余各个顶点的最短路径,也称为”单源最短路径”。与上篇的Floyed-Warshall算法一样,这里仍然使用二维数组a来存储顶点之间边的关系。如图:(假设我要求的是1号顶点到其余顶点的最短距离) 当然,我们还需要一个dis数组来存储1号顶点到其余顶点的当前距离,如图:

2017-03-23 14:07:18 15495 6

原创 最通俗易懂的背包问题

对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢! —-第一节—-初识动态规划——– 经典

2017-03-21 00:33:06 8489 2

原创 最短路径之Floyd-Warshall

最短路径之Floyd-Warshall1.算法思路:若要求两个点的最短路径,可以通过引入第三个点来间接到目的地,若距离缩短了,那么我们可以继续找第四个点…知道所有的点找完了即是最短距离。假设我们点与点的距离如下图: 由图可知,4->3的距离为12,假设我们通过1这个顶点来中转,这时,4->3的距离就缩短为4->1->3,共11。而如果通过1和2来中转的话,4->3就缩短为10(a[4][1]

2017-03-19 19:39:12 614

原创 二分查找算法

二分查找 时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 请写一个二分查找算法查找一个数最先出现的index,如果数不在集合中需要返回(-1)-当前数应该出现的位置。例如 [1,3,6],查找5,5应该是在index=2的位置但并不在集合中。返回(-1)-2 = -3。 输入 第一行读入一个

2017-03-19 16:45:35 504

原创 排序算法之交换排序

交换排基本思想:两两比较待排序元素的关键字,发现两个元素的次序相反时即进行交换,知道没有反序的元素为止。本节介绍两种交换排序,即冒泡排序和快速排序。 冒泡排序:每次只能和相邻的位置数进行交换,效率低#include<stdio.h>int a[100];void quickSort(int left,int right);//假设按照递增输出void maopaoSort(int a[10

2017-03-18 16:39:04 1777

原创 插入排序讲解

插入排序思路插入排序的基本思想是:每次将一个待排序的元素,按照其关键字大小插入到已经排好的字表中的和合适位置,知道全部的元素插入完成为止。插入排序种类: 基本的插入排序主要分为两种,一种是直接插入排序,一种为折半插入排序,下面将使用C语言讲解两种插入排序实现的思路和算法。 1.直接插入排序:假设待排序的元素存放在数组R[0..n-1],中,排序过程中的某一时刻,R被划分成两个子区间R[0..

2017-03-16 23:12:05 513

原创 Git 基本命令之本代码库

目前市面上的版本控制工具主要分为两个板块,一个是集中式版本控制工具,另外一个就是分布式版本控制工具了,而主流的集中版本控制工具主要以CVS和SVN为代表,分布式版本控制工具呢,主要以Git为代表(Git可是大名鼎鼎的Linux创建者Linus花了两周写出来的,注意,仅仅用了二周!!!)。这里有的同学可能会问,集中式和分布式版本控制工具有什么区别呢。好吧,简要介绍下,集中式版本控制工具是将版本库是集中

2017-01-22 23:54:48 346

原创 Java设计模式之组合模式

概述:本文继续探究Java设计模式,本次给大家带来的是java设计模式中的组合模式。故事是这样的:假设你在公司上班,因为你的公司是大公司,所以旗下有很多子公司,到年终了,公司希望在年会上汇总各个子公司的销售情况,好根据利润在年会上奖励给优秀的子公司,派发给各个员工。好的,现在老板让你计算出这些利润,把数值汇总给他,一再叮嘱你不能出错。老板交给你的事,肯定不能马虎,所以你小心翼翼的写起了代码….

2017-01-20 21:11:37 1040

原创 JAVA设计模式之观察者模式

概述:JAVA观测者模式是23种设计模式中比较常用的设计模式之一,在实际项目开发中都或多或少的见到过他的身影,今天,我们就一起来聊聊观测者模式是怎样实现的吧。举个栗子:大家应该都玩过网游吧,记得我以前玩的一个网游(名字就不说了,怕被笑....),每到了节假日,都有这样的活动,游戏规则是这样的。到了游戏活动开始的时候,游戏的美女GM就会随机出现在游戏的地图,然后一个游戏广播就会以红名的消息提示告

2017-01-20 11:57:50 442

空空如也

空空如也

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

TA关注的人

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