网络编程
1.1、概述引入
信件的格式:对方邮编、对方地址、对方姓名、自己的地址
网络中包的格式:对方的信息、对方地址、自己的地址
网络中的两种连接方式(TCP,UDP)就类似于打电话和发短信:
打电话:连接、接通了、通话(通话结束前一直保持联系)
发短信:发送出去就完事了
计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及**网络通信协议(类似于http、tcp、udp等)的管理和协调下,实现资源共享和信息传递**的计算机系统。
网络编程的目的类似于无线电台:用以传播交流信息,数据交换,通信。
想达到效果需要什么
如何准确的定位网络上的一台主机 192.168.26.1(主机ip地址):8080(端口号),定位到计算机上的某个资源
找到了这个主机,如何传输数据呢?
1.2、网络通信的要素如何实现网络的通信?
通信双方地址:
ip
端口号
192.168.26.1:8080
规则:网络通信的协议
小结
网络编程中有两个主要的问题
如何准确的定位到网络上的一台或者多台主机
找到主机后如 ...
cmd操作
打开cmd的方法
开始+系统+命令提示符
Win键+R 输入 cmd 打开控制台(推荐使用)
在任意的文件夹下面,按住 shift 键+鼠标右键点击,”在此处打开命令行窗口“
资源管理器的地址栏前面加上 cmd 路径
等等
管理员方式运行
开始——Windows系统——命令提示符——更多——选择以管理员方式运行
常用的Dos命令盘符切换
1命令行输入: 硬盘名+英文冒号
查看当前目录所有文件
1命令行输入: dir
切换目录
123跨盘跳转到指定目录: cd /d 盘名:\文件夹名返回上一级: cd ..跳转指定目录: cd 文件夹名
清理屏幕(clear screen)
1清理命令行窗口之前操作的命令: cls
退出终端1退出命令行窗口: exit
查看电脑ip1查看电脑ip相关信息的命令: ipconfig
打开其他程序123打开计算器: calc打开画图工具: mspaint打开记事本: notepad
ping命令
1用ping命令ping地址或者网站,用以检查网络是否联通(通畅),或者查看输入网站的ip信息等
创建及删除文件或者文件夹1234创建目录 ...
较大分组的位置(java实现)
力扣 830. 较大分组的位置题目说明在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。
例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。
分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。
我们称所有包含大于或等于三个连续字符的分组为 较大分组 。
找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。
1 <= s.length <= 1000
s 仅含小写英文字母
示例例11234输入:s = "abbxxxxzzy"输出:[[3,6]]解释:"xxxx" 是一个起始于 3 且终止于 6 的较大分组。
例21234输入:s = "abc"输出:[]解释:"a","b" 和 "c" 均不是符合要 ...
字符串中的第一个唯一字符(java实现)
力扣 387 字符串中的第一个唯一字符题目说明给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。假设字符串中只存在小写字母。
示例例112s = "leetcode"返回 0
例212s = "loveleetcode"返回 2
例312s = "lloovv"返回 -1
笔者理解此题是一道字符串判定算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,觉得此题等于“求首个出现次数唯一的字母所在位置”,此题中的字符串又只存在小写字母,所以我们可以把字符串中26个字母出现的次数记录下来,再依次判断字符串各位字母出现的次数等不等于一即可,就让我们看看具体如何实现吧。
123456789101112131415161718public int firstUniqChar(String s) { int []dict = new int [26]; //定义字母数组用来记录各个字母出现的次数 char []ch = s.toCh ...
删除排序链表中的重复元素(java实现)
力扣 83 删除排序链表中的重复元素题目说明给定一个排序链表(已经按顺序排序好的链表),删除所有重复的元素,使得每个元素只出现一次。
示例例112输入: 1->1->2输出: 1->2
例212输入: 1->1->2->3->3输出: 1->2->3
笔者理解此题是一道排序链表算法问题,在力扣题库中被定义为简单题。
解法此题中的链表为排序链表,要求为去除重复节点,所以不需要多余思考,直接依链判断即可,就让我们看看具体如何实现吧。
1->1->2->3->3↑temp所在位置
因为1==1,所以链表的第一个1的next要指向第二节点的下一个节点2;链表变为:1->2->3->3
因为1!=2,所以链表从下一个2开始判断,也就是中间值temp移向下一个节点2;链表变为:1->2->3->3
因为2!=3,所以链表从下一个3开始判断,也就是中间值temp移向下一个节点3;链表变为:1->2->3->3
因为3==3,所以链表的第一个3的next要指向最后 ...
使用最小花费爬楼梯(java实现)
力扣 746 使用最小花费爬楼梯题目说明数组的每个索引作为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i] (索引从0开始)。
每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。
您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。
示例例1123输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即可到阶梯顶,一共花费15。
例2123输入: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]输出: 6解释: 最低花费方式是从cost[0]开始,逐个经过那些1,跳过cost[3],一共花费6。
笔者理解此题是一道走楼梯算法问题,在力扣题库中被定义为简单题。
解法当笔者看见此题时,上台阶步骤可选择且为求最少消耗体力,笔者一下子就想到了动态规划法,就让我们看看具体如何实现吧。
123456789101112131415161718public int minCostClimbingStairs ...
丑数(java实现)
剑指 Offer 49 丑数此题与力扣264题相同丑数II
题目说明我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
1 是丑数。
n 不超过1690。
示例例1123输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
笔者理解此题是一道数学规律问题,在力扣题库中被定义为中等题。
解法1笔者思考此题时,考虑过递归及暴力求解等方法,但效果欠佳,这是通过暴力法预先将2,3,5的多种组合放入结果数组中,然后排序再去相应位置的丑数出来。
1234567891011121314151617public int nthUglyNumber(int n) { List <Integer>result = new <Integer>ArrayList(); //定义一个动态数组用来存储丑数 int num; for(int i=0;i<31;i++){ ...
检查单词(java实现)
力扣1455题:检查单词是否为句中其他单词的前缀题目说明给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。
请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。
如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1 。字符串 S 的 「前缀」是 S 的任何前导连续子字符串。
示例例1123输入:sentence = "i love eating burger", searchWord = "burg"输出:4解释:"burg" 是 "burger" 的前缀,而 "burger" 是句子中第 4 个单词。
例2123输入:sentence = "this pr ...
旋转二维数组(java实现)
力扣48题:旋转图像题目说明给定一个n × n 的二维矩阵表示一个图像,将图像顺时针旋转 90 度。
说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵,请不要使用另一个矩阵来旋转图像。
示例例112345678910111213给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]
例2123456789101112131415给定 matrix =[ [ 5, 1, 9,11], [ 2, 4, 8,10], [13, 3, 6, 7], [15,14,12,16]], 原地旋转输入矩阵,使其变为:[ [15,13, 2, 5], [14, 3, 4, 1], [12, 6, 8, 9], [16, 7,10,11]]
笔者理解此题是一道比较经典的二维数组题,在力扣题库中被定义为中等题,说明还是需要一定的思考的。
二维数组顺时针翻转90度,此时无法借助另一个二维数组,所以无法通过简单的替换来实现,笔者思考这个问题也思考了好一会 ...







