- 博客(51)
- 收藏
- 关注
原创 Redis简单学习
有序集合:string类型元素的集合,不允许重复的成员。每个元素都会关联一个double类型的分数,通过这个分数来从小到大排序。Redis是一个基于内存的key-value结构数据库。列表:是简单的字符串类型,并且是按照插入顺序排序的。
2023-08-09 15:28:24 428
原创 linux脚本
关闭指定端口:firewall-cmd --zone=public --remove-port=8080/tcp --permanent。开放指定端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent。chmod 755 bootStart.sh 为文件拥有者赋予读、写、执行权限,同组用户和其他用户授予读、执行权限。查看开放的端口:firewall-cmd --zone=public --list-ports。5、执行shell脚本。
2023-08-09 14:20:38 678
原创 linux打包和解压
tar -zxvf hello.tar.gz -C /usr/local 将hello.tar.gz进行解压,并将解压后的文件放在/usr/local目录。tar -zcvf hello.tar.gz ./* 将当前目录下所有文件打包并且压缩,打包之后的文件名为hello.tar.gz。tar -zxvf hello.tar.gz 将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录。
2023-08-09 09:27:41 161
原创 P4学习——Basic Tunneling
文章目录一、介绍二、实现一、介绍在这次实验中,要对上一个实验中完成的IP路由器添加对基本隧道协议的支持。交换机根据目的IP地址进行转发,我们的任务是定义一个新的报头类型来封装IP数据包并修改交换机代码,以便它使用一个新的隧道报头来决定目的端口从而指导转发新的报头类型包括:协议ID(protocol ID):指示被封装的包的类型目的地ID(destination ID):用于路由开始的代码文件为badic_tunnel.p4,这里面只是基于IP转发,和上次basic_forwading实验差
2022-06-25 09:45:17 661
原创 java解压缩
package c4_test;import javax.crypto.;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import java.io.;import java.net.HttpURLConnection;import java.net.URL;import java.nio.charset.Charset;import java.nio.charset.Stand
2022-05-26 22:44:17 701
原创 excel读取
Person类:读取7-12月份数据时,对于excel表格中每一行数据都封装成为一个Person对象public class Person { private int roomNumber; //房间号 private String name; //主播名 private double income; //主播这个月的收入 public Person(int roomNumber, String name, double income) { this.roomNumbe
2022-05-26 17:18:54 170
原创 P4学习——Basic Forwarding
文章目录一、实现基本的转发https://github.com/p4lang/tutorials/tree/master/exercises/basic一、实现基本的转发为了简便,只实现IPv4的转发。对于IPv4的转发,交换机必须对每一个数据包执行以下的操作:更新源和目的MAC地址减少IP头中的生存时间TTL将数据包从适当的端口转发出去交换机会有一个表,控制平面使用静态规则填充该表。每个规则将一个IP地址映射到一个MAC地址和下一跳的输出端口。我们已经定义了控制平面规则,所以只需要实现
2022-05-14 11:12:22 836
原创 网络协议编程——TCP/UDP
文章目录一、TCP编程1、客户端发送信息给服务端,服务端将数据显示在控制台上2、客户端发送文件给服务器,服务端将文件保存在本地二、UDP编程1、发送方给接收方发消息2、连续发送多个消息一、TCP编程1、客户端发送信息给服务端,服务端将数据显示在控制台上客户端:package TcpDemo1;import jdk.net.Sockets;import java.io.IOException;import java.io.OutputStream;import java.net.Inet
2022-04-05 16:37:13 1752 1
原创 算法15——动态规划专题
文章目录一、动态规划的递归和递推写法1、递归写法2、递推写法3、分治、贪心与动态规划二、最大连续子序列和一、动态规划的递归和递推写法动态规划: 将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。需要注意的是,动态规划会将每个求解过的子问题的解记录下来,这样当下一次碰到同样的子问题的时候就可以不用重复计算。1、递归写法以斐波拉契数列为例:int F(int n){ if(n == 0 || n == 1) return 1; else
2022-02-19 18:20:41 1280
原创 DFS、BFS遍历图(领接矩阵、邻接表)
一、DFS遍历图(领接矩阵存储)#include<cstdio.h>const int MAXV = 1000;//最大定点数const int INF = 1000000000;//设置INF为一个很大的数int n,G[MAXV][MAXV];//n为顶点数bool vis[MAXV]={false};//如果顶点i被访问,则为truevoid DFS(int u , int depth){ vis[u] = true; //如果需要对顶点u进行操作,可以在这里
2022-02-12 11:47:59 1169
原创 算法14——patA1020 根据二叉树的后序和中序遍历求出该二叉树的层序遍历
题目描述: 假设二叉树中的所有键都是不同的正整数。给定后序和中序遍历序列,你应该输出相应二叉树的层序遍历序列。输入格式: 每个输入文件包含一个测试用例。对于每种情况,第一行给出一个正整数N(≤30),即二叉树中的节点总数。第二行给出后序序列,第三行给出中序序列。一行中的所有数字用一个空格隔开。输出格式: 对于每个测试用例,在一行中打印相应二叉树的层次顺序遍历序列。一行中的所有数字必须用一个空格隔开,并且行尾不能有多余的空格。样例输入:72 3 1 5 7 6 41 2 3 4 5 6
2022-02-10 14:35:03 725
原创 算法13——求解走出迷宫最小步数(队列实现BFS问题)
问题描述: emsp;给定一个n*m大小的迷宫,其中 * 代表不可通过的墙壁,.代表平底,S表示起点,T代表终点。移动过程中,如果当前位置是(x,y)(下标从0开始),且每次只能前往上下左右(x+1,y)(x-1,y),(x,y+1),(x,y-1)四个位置的平地,求S到T的最小步数。......*.*..*S*..***....T*上述案例中,S为(2,2),T为(4,3)思路: 由于求的是最小步数,而BFS是通过层次的顺序来遍历的,因此可以从S开始记录遍历的层数,那么在到达T时层数
2022-02-10 10:02:57 1158
原创 算法12——背包问题(DFS)
问题描述: 有n件物品,每件物品的重量为w[i],价值为c[i]。现在需要选出若干件物品放入一个容量为V的背包中,使得在选入背包的物品总重量不得超过V的前提下,让背包中物品的价值之和最大,求最大价值。(1<=n<=20)分析: 对于每件物品,都有选或者不选两种选择。每次都要对物品做出选择,因此DFS参数中需要记录当前处理的物品编号index。题中涉及了物品的重量和价值,因此也要有参数记录在处理这个物品之前,背包中物品的总重量sumW和总价值sumCvoid DFS(int index
2022-02-09 23:27:48 798
原创 算法11——patA1032寻找公共节点(静态链表的使用、静态链表解题步骤总结)
一、算法题目描述:要存储英语单词,一种方法是使用链表,一个字母一个字母地存储一个单词。为了节省一些空间,如果单词共享相同的后缀,可以让它们共享相同的子列表。例如,加载和正在加载的存储方式如图1所示。您应该找到公共后缀的起始位置(例如,图1中i的位置)。输入格式:每个输入文件包含一个测试用例。对于每种情况,第一行包含两个节点地址和一个正整数N(≤10^5),其中两个地址是这两个单词的第一个节点的地址,N是节点总数。节点地址为5位正整数,NULL用−1表示。接下来N行,每一行描述一个节点,格式如下:
2022-02-09 18:49:22 677
原创 算法10——c++实现中缀表达式计算
题目描述: 读入一个只包含+,-,x,/的非负整数计算表达式,计算该表达式的值输入格式: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不用输出输出格式: 对每个测试用例输出一行,即该表达式的值,精确到小数点后两位样例输入:30/90-26+97-5-6-13/88*6+51/29+79*87+57*920样例输出:12178.21思路:中缀表达式转后缀表达式对后
2022-02-07 16:32:32 2020 1
原创 C++标准模板库(STL)——queue、priority_queue、stack、pair、algorithm头文件下的常用函数
文章目录一、queue二、priority_queue一、queuequeue为队列,具有先进先出的特性。使用queue,需要添加#include< queue >和using namespace std;1、queue的定义:queue<typename> name;//typename可以是任意基本数据类型或容器queue元素的访问:由于queue本身就是一种先进先出的限制性数据结构,所以STL只能够提供front()来访问队首元素,用back()来访问队尾元素
2022-02-07 14:50:36 1543
原创 C++标准模板库(STL)——vector、set、string、map
文章目录一、vector二、set三、string四、map一、vectorvector是“长度根据需要而自动改变的数组”。在算法中,有时会碰到使用普通数组就会超内存的情况,这种情况下可以使用vector数组。另外,vector数组还可以用来以邻接表的方式存储图,这对于无法使用邻接矩阵、又害怕使用指针实现邻接表的题目是非常友好的。使用vector,需要添加头文件#include< vector >。除此之外,还要添上一句“using namespace std”。1、vector的定义
2022-02-06 16:59:19 1171
原创 java基础知识——流式计算Stream API
文章目录一、基本概念二、创建流一、基本概念为了能够让工程师更方便地处理集合数据,Java8 中新增了一大特性,那就是 Stream (也就是流,也叫做流式计算)。利用新提供的 Stream API,可以让 Java 以声明性地迭代方式处理集合,它也类似于真正的流水线生产那样:流 = 工序 + 节点 + 数据。为了更直观的比对传统集合或者数组操作的方式以及流式计算的方式,做了如下的准备工作:定义Author类:package StreamAPI;import java.util.List;p
2022-02-04 15:20:13 2186
原创 Java基础知识——lamda表达式和函数式接口
文章目录一、Lambda表达式一、Lambda表达式函数式接口:任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。对于函数式接口,可以通过Lambda表达式节创建该接口的对象
2022-02-03 15:16:54 2280
原创 算法09——patA1033 加油站问题(贪心)
问题描述: 已知起点与终点的距离为D,油箱的最大油量为Cmax,单位汽油能够支持前进Davg,给定N个加油站的单位油价和离起点的距离(所有加油站都在一条线上),汽车初始时刻处于起点位置,油箱为空,且可以在任意加油站购买任意量的汽油(前提是不超过油箱容量),求从起点到终点的最小花费。如果无法到达终点,则输出能够行驶的最远距离。输入格式: 第一行输入四个正整数,分别为Cmax(<=100)、D(<=30000)、Davg(<=20)、N(<=500),紧接着N行分别给出N个加油
2022-02-02 13:52:23 1059
原创 区块链原理及核心技术
文章目录前言一、运作机制1.1 比特币系统运作机制1.1.1 比特币核心数据结构——账本1.1.2 比特币运作机制1.2 区块链系统运作机制1.2.1 区块链核心数据结构1.2.1.1 链式结构1.2.1.2 树状结构1.2.2 区块链系统角色1.2.3 区块链运作机制二、核心技术2.1 区块链密码学2.1.1 Merkle树2.1.2 数字签名2.2 区块链共识机制2.2.1 区块链共识框架2.3 区块链网络三、区块链前沿热点3.1 区块链隐私保护3.2 针对区块链网络的攻击方式3.3 区块链拓展架构四.
2022-02-01 13:42:43 12808
原创 算法08——patB旧键盘打字(散列)
题目描述: 旧键盘上有几个键坏了,于是在输入一段文字时,对应的字符就不会出现。现在给出应该输入的一段文字以及坏掉的那些键,结果出现的文字会是怎样?输入格式: 在两行中分别给出坏掉的那些键以及该输入的文字。其中对应英文字母的坏键以大写字母给出。每段文字是不超过10^5个字符的串。可用字符包括[a ~ z ,A ~ Z]、数字0~9、下划线"_“代表空格,”,",".","-",以及"+"(上档键)。题目保证第二行输入的字符串非空。注意:如果上档键坏了,那么大写的英文字母将无法出现。输出格式:
2022-01-31 21:34:27 570
原创 算法07——patA1080 研究生入学
题意: 有N位考生,M所学校,每位考生都有K个志愿学校,每个学校也有招生人数限制。现在给出所有考生的初试成绩GE,面试成绩GI以及K个志愿学校的编号,要求模拟学校录取招生的过程,并给出每个学校录取的考生编号(按从小到大排序)。下面是录取规则:先按考生的总分(GE+GI)/2从高到低排序,总分相同的按照GE从高到低排序。如果仍然相同,则按相同排名处理按排名先后顺序考虑每个考生最终录取的学校。对每个考生,按K个志愿先后顺序考虑:如果当前志愿学校的已招生人数未到达该校的招生人数...
2022-01-31 20:18:37 410
原创 Java基础知识——NIO
文章目录一、NIO1.1 缓冲区(Buffer)一、NIONIO支持面向缓冲区的、基于通道的IO操作。NIO以更高效的方式进行文件的读写操作。传统的IO的read和write只能阻塞执行,线程在读写IO期间不能干其他事情,比如调用socket.read()时,如果服务器一直没有数据传输过来,线程就一直阻塞,但NIO中可以配置socket为非阻塞模式。NIO的三大核心:Channel(通道)、Buffer(缓冲区)、Selector(选择器)。NIO基于通道和缓冲区进行操作,数据总是从通道读取到缓冲.
2022-01-29 21:52:54 936
原创 JavaScript
一、JavaScript基础JavaScript是运行在客户端的脚本语言。浏览器有渲染引擎和JS引擎。浏览器本身并不会执行JS代码,而是通过JS引擎来执行JS代码。JS引擎执行代码时逐行解释每一句代码,然后由计算机去执行。JavaScript由三部分组成:ECMAScript(JS基础)、DOM页面文档对象模型(对页面中各种元素进行操作)、BOM浏览器对象模型(对浏览器窗口进行操作)JS三种写法:内嵌式、行内式、外部 (script中src引入)多行注释:shift+alt+a1.输入输出语句
2022-01-25 16:44:02 415
原创 前端学习——html、css
一、HTML1.简单的HTML结构介绍<!DOCTYPE html>//说明用HTML5来显示网页<html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial
2022-01-25 16:43:20 412
原创 Java基础知识——BIO模式
文章目录一、Java的I/O总述1、I/O模型2、应用二、BIO模式1、传统的服务器、客户端通信(一对一):2、服务器和客户端的通信(一对多)一、Java的I/O总述I/O模型:就是用什么样的通道或者通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能,包括BIO、NIO、AIO1、I/O模型BIO: 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即用户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情就会造成不必要的线程开销NIO: 同步非阻
2022-01-25 16:38:25 2944
原创 Java基础知识——File类与IO流
文章目录一、File类1、File类的静态成员变量2、File类的构造方法3、File类的常用方法4、过滤器二、IO概述1、字节输出流一、File类1、File类的静态成员变量static String pathSeparator:与系统有关的路径分隔符,为了方便,它被表示成一个字符串。window:分号 linux:冒号static String separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。windows:反斜杠\ linux:正斜杠/.
2022-01-24 23:02:51 942
原创 算法06——patA1016电话账单问题(配对排序求和)
题目描述: 给出24h中每个小时区间的资费(cents/minute),并给出N个通话记录点,每个通话记录点都记录了姓名、当前的时刻(月:日:时:分)以及其属于通话开始(on-line)或是通话结束(off-line)。现在需要对每个人的有效通话记录进行资费计算,有效通话记录是指同一个用户能够配对的所有on-line和off-line,且这样配对需要满足:在按时间顺序排列后,两条配对的on-line和off-line对应的时间内不允许出现其他的on-line和off-line的记录。输出要求: 按
2022-01-24 19:09:18 277
原创 Java基础知识——多线程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、线程简介二、线程创建1、继承Thread类2、实现Runnable接口三、线程状态1、停止线程一、线程简介多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程,这些线程可以同时存在,同时运行,一个进程可 能包含多个同时执行的线程。线程就是独立的执行路径在程序运行时,及时没有自己创建线程,后台也会有很多线程main()成为主线程,为系统的入口,用于执行整个程序在一个进程中,如果开辟了多个
2022-01-20 17:16:42 230
原创 Java基础知识-泛型、反射、注解
一、泛型泛型是 Java 中另一个使用非常广泛的特性,泛型中的「泛」指的是参数类型不固定, 也就是说什么数据类型都可以,它还有另一个名字,就是「参数化类型」——也就是说不仅 数据本身是参数,数据类型也可以被指定为参数——类、接口或者方法可以被不同类型的参数所重用。...
2022-01-16 17:00:25 911
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人