- 博客(57)
- 资源 (2)
- 收藏
- 关注
原创 Android Studio——登录页面、跳转页面、Item适配与显示
由于在学习手机软件开发,因此开一个分享Android Studio的坑。本篇博客将分享Android Studio中登录页面制作,跳转以及在一个layout中如何适配多个layout。本项目的代码我已分享在我的分享中,想要的可以自行下载。项目界面如下:开始之前先来介绍一下本项目的项目结构,项目截图如下:这里是项目Java代码的部分,先来看manifest文件夹,该文件夹中只有一个AndroidMainfest.xml文件,该文件作用主要是设置该项目的名字,项目图标以及项目中的Activities。很多
2022-04-19 17:28:57
3468
原创 使用javaFx实现多线程的网络通信小程序——互联网程序设计基础(3)
上一篇博客,我们通过多线程,将主线程和接受信息的线程分开,实现了客户端和服务器的自由交流。本篇博客将分享文件传输以及服务端的多线程。首先是文件传输,文件传输就讲解客户端怎么请求和下载文件。文件传输其实分为两个部分,一个是负责与服务器通信的8008端口,另外一个是负责接收文件内容的2020端口(具体端口多少其实都可以自己设置,只要不占用一些重要的端口就好)先来说一下界面,界面如下图,其实和上一篇博客的界面差不多,就是多了一个下载按钮。按照之前的操作,我们先要建立一个文件传输的类,负责接收文件的流。//
2021-10-09 23:35:13
1292
原创 使用javaFx制作简单的网络通信小程序——互联网程序设计基础(2)
上一篇博客我们介绍了javaFx制作一个小窗口,今天我们将用该小窗口实现网络之间的通信。首先网络通信需要一定的计网知识,所谓网络通信其实分为很多层,比如网络层,链路层,物理层等,而我们使用java编写的程序主要是在应用层这个层面。在该层中,计算机与计算机之间的通信,其实可以概括为ip地址标识一台独一无二的主机,而程序与程序之间通信又需要对应的端口,因此要与一台计算机通信,需要ip和端口号。在java中有socket这个封装的方法,自动帮我们实现建立连接的三次握手和断开连接的四次握手。要实现建立连接,断开连
2021-09-21 16:31:26
1502
原创 HTML入门——标签,链接,图片,表格,输入框和选择框
本篇博客将初步讲解HTML的基本标签内容,由于HTML相对比较简单,因此很多东西就不展开说说了。先来说一下什么是HTML,HTML就是超文本标记语言(HyperText Markup Language)是一种用于创建网页的标准标记语言。所有的网站都是由HTML经过浏览器的内核渲染后看到的,因此HTML可以理解为网站的底层代码。HTML不是编程代码,而是一种标记语言,有着严格的格式,下面会跟大家展开说说。先来说一下HTML最基本的框架。下面是html的基本格式,后续都是在body中改动。<html
2021-09-13 21:19:46
711
原创 使用javaFX的TextField实现简单对话框设计——互联网程序设计基础(1)
本学期选修了互联网程序设计,因此博客开始分享关于互联网程序设计的内容。本篇为基础篇,先来复习巩固javaFX的内容,往后将使用java实现简单的网络通信和包抓取以及分析。先来说一下本次要实现的目标:实现一个静态窗口界面,要求有一个输入的文本框和一个显示内容的文本框,输入文本框可以实现按Enter发送信息到内容文本框,文本框不可编辑。同时要设计几个按钮,包括存储,加载和退出等。大概样式如下图:先来展示一下界面的简单代码:import javafx.application.Application;im
2021-09-07 12:34:21
2238
原创 Linux shell编程之条件判断
过了好久好久,终于舍得发博客了。今天给大伙讲一下Linux的shell中判断条件的语句。先来看第一种,判断文件类型其中黑色字体的文件均为特殊文件,一般不太常用,而蓝色字体的三个判断非常常见。[root@centos-7 tmp]# [ -d /tmp ] //注意,中括号两端一定要有空格不然会报错[root@centos-7 tmp]# echo $? //该命令一般不直接输出的,可以通过$?来查看执行结果,0
2021-07-23 17:19:19
805
原创 Packet Tracer模拟综合实验——RIP协议,OSPF协议以及NAT协议的综合运用
本篇博客将讲解计算机网络的综合实验,先来看看实验拓扑图。其中R1和R2的器械选择:电脑ip,默认网关和子网掩码,我就提供代码了,注意,所有主机的默认网关为网络号的第一个主机号,比如192.168.1.2主机的默认网关为192.168.1.1下面来配置二层交换机s1:Switch>enSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(config)#vlan 10
2021-05-31 12:01:55
1469
7
原创 Linux shell基础之变量声明和处理
本篇博客将讲解shell编程语言中最基础的变量声明和处理。先来说一下set:声明变量set:查看变量,可以看到有很多是系统提前设置好的变量,比如系统环境变量PATH,ls命令中颜色的变量LS_COLOR等unset 变量:比如unset sex,删除sex变量export sex=man:设置了一个环境变量sex,该变量会在接下来建立的子shell中存在,当我们输入bash命令后,我们会进入一个shell中,当我们输入exit,会退出当前shell,回到父shell中。可以发现,子shel
2021-05-31 00:27:23
1542
1
原创 史上最详细的计网实验——packet tracer模拟配置vlan和静态路由
本篇博客将总结计算机网络实验在packet tracer中模拟的集体操作流程。nl:类似于cat命令,但是自带行号,并且空行不在会计算到行中
2021-05-22 23:23:08
3529
5
原创 MySQL 语法整理(5)——函数,存储过程以及触发器
本篇讲解函数,存储过程和触发器的创建和基本使用。MySQL的函数用于实现一定功能,受返回参数只能单个的限制,实现的功能相对有限。/*返回单个查询值的函数,MySQL 只能使用这种函数给定一个系的名字,返回该系的教师人数*/USE university; SET GLOBAL log_bin_trust_function_creators = 1; -- 没有开启主从复制 DELIMITER // -- 设置命令段的结束符号为// CREATE FUNCTION dept_count( dept
2021-05-19 17:12:08
371
1
原创 Linux 常见的文本输出命令
本篇博客将介绍egrep,awk,sed等文本编辑命令。nl:类似于cat命令,但是自带行号,并且空行不在会计算到行中命令选项介绍nl -b指定行号指定的方式,主要有两种nl -b a表示无论是否为空行,也同样列出行号(类似 cat -n)nl -b t表示有空行,空的那一行不要列出行号(默认值)nl -n列出行号表示的方法,主要有三种nl -n ln行号在萤幕的最左方显示nl -n rn行号在自己栏位的最右方显示,且不加 0nl -n
2021-05-15 20:36:10
3259
10
原创 Linux 挂载与Shell基础(1)
今天打算讲完挂载并初步讲述shell的入门。上一篇博客我们讲了mount命令,用户挂载外部设备或者硬盘,现在我们讲解虚拟机中硬盘的挂载,真实机也类似。fdisk分区:用于添加硬盘后将硬盘分区,步骤操作如下:先添加硬盘到虚拟机中用 fdisk -l 来查看硬盘情况fdisk /dev/sdb 用命令将硬盘分区,这个/dev/sdb。执行该命令后会进入编辑该硬盘的界面,里面的如何创建分区,给分区分配内存之类的内容大火可以去看看其他大佬写的博客,我就不多说说了partprobe :重新读取分区信息,
2021-05-12 17:05:07
492
2
原创 MySQL 语法整理(4)
本篇博客讲解MySQL一些基本的插入删除更新语句,以及讲解内外左右连接。delete:删除语句,会删除满足条件的记录或者表/*delete:删除语句,where指定删除对象,会把所有满足的记录全部删除*/DELETE FROM instructorWHERE dept_name='Finance';/*常见的两个表之间进行删除*/DELETE FROM instructorWHERE dept_name IN (SELECT dept_name FROM department WHE
2021-05-12 00:16:50
1106
6
原创 MySQL 语法整理(3)
继续接着上一篇博客,今天终于终于要讲比较复杂的多表查询啦!in:查询表的元素是否在另一个表中。听着是不是觉得很简单,我们来看一个例子/*我想找出满足semester='Fall' AND YEAR = 2009并且semester='Spring' AND YEAR=2010的课程id此时,我们会想起上一篇博客中讲到的集合交运算,这里in同样可以实现*/SELECT DISTINCT course_id FROM section WHERE semester='Fall' AND YEAR =
2021-04-24 00:46:29
250
原创 MySQL 语法整理(2)
接着上一篇博客,我们继续来学习MySQL的语法。本篇重点讲多表查询,包括嵌套多层的查询,大家做好心里准备哈!废话不多说,我们先来讲第一个语句,union:将查询结果合并在一起并去重。前面我们学了自然连接,是横向增加表的键,那么这个union就是纵向增加结果表的记录。/*比如我想查询2009年秋季和2010年春季开课的course_id,以及该课上课的房间号*/( SELECT course_id , room_number FROM section WHERE semester='Fall' A
2021-04-12 23:40:26
2192
8
原创 MySQL 语法整理
最近学了几个星期的MySQL,这篇博客专门来梳理一下MySQL的基本语法,本博客中出现的两个数据库university和world均在我的资源中,大家可以免费下载。先来看一下MySQL的最基本三大段语句,举个例子:我想将下面instructor表中salary大于80000的教师名字找出select name -- 这是最后筛选的元素,注意,在MySQL中一切结果都是以表的形式,哪怕这个表只有一个记录from instructor -- from语句表示从哪个表中进行查询where salary
2021-04-12 00:16:15
426
原创 Linux 权限管理(2)与挂载
今天接着上一篇,讲完Linux中的权限管理命令,并简单讲一下挂载命令。SBIT:粘着位。只对目录有用,且普通用户对目录有w和x权限,即普通用户可以对目录有写入权限当一个目录赋予了粘着位,除了root可以删除所有文件外,普通用户就算拥有w权限,也不能删除其他用户的文件,只能删除自己建立的文件。设置粘着位:chmod 1755 目录名:给目录赋予755权限并且设置了粘着位chmod o+t 目录名:同样[user1@centos-7 tmp]$ mkdir dir_1[user1@centos-
2021-04-08 22:43:54
507
1
原创 Linux 权限管理(1)
今天来学习Linxu的权限管理,主要学习的是ACL权限。ACL权限:当某个用户的权限不在所属者,所属组和其他人的时候,需要额外分配权限时候,可以通过ACL权限来使用,但是要与文件同一个分区。而·Centos7默认支持acl权限,所以其实也不必去查询哈哈哈。当然,当有需要的时候,可以使用一下命令来查询。dumpe2fs -h 分区目录:查询该分区内容,要使用命令:xfs_growfs /dev/sda3接下来是手动打开分区ACL权限,如果觉得没必要的可以直接跳过了。手动挂载:mount -o r
2021-03-24 11:35:18
166
原创 Linux 及用户管理(3)
今天来学习一些管理用户密码和登录信息的命令。List item用户密码管理命令:passwd普通用户只能修改自己的密码,直接输入passwd即可,超级用户可以修改任何用户的密码,格式:passwd 用户名,且修改用户密码的格式不必遵循Linux的密码格式查看密码状态:passwd -S 用户名依次对应:用户名 密码设定时间 密码修改间隔时间 密码有效期 警告时间 密码不失效锁定用户:passwd -l 用户解锁用户:passwd -u 用户使用字符串作为用户的密码,例子:e
2021-03-16 22:09:10
125
原创 Linux 用户管理(2)
今天继续学习Linxu用户管理命令,先来说说存储用户真正密码的文件影子文件:/etc/shadow打开后文件内容如下,每一行储存一个用户的密码等信息第一字段:用户名第二字段:加密用户密码。加密算法升级为SHA512散列加密算法。如果密码位是“!!”或“*”代表没有密码,不能登录,我们可以在某个用户密码前加入感叹号,这样无论怎么样,该用户都无法输对密码,即用户账号被封停第三字段:密码最后一次修改时间,其中显示的时间使用1970年1月1日作为标准时间,每过一天时间搓加1第四字段:两次密码的修改间
2021-03-08 16:47:50
219
原创 Linux yum命令学习以及用户管理(1)
今天来讲讲yum命令和RPM剩下的内容。先来说一下光盘yum源搭建步骤挂载光盘让网络yum源文件失效,具体方法是将该文件的后缀不再是.repo,变成其他任意都行修改光盘yum源文件,将地址baseurl改成光盘挂载地址,并且注释不存在的地址和将enabled改成enabled = 1接下来说一下RPM包的安装位置/etc/:配置文件安装目录/usr/bin/:可执行的命令安装目录/usr/lib/:程序所使用的函数库保存位置/usr/share/doc/:基本软件使用手册保存位置/
2021-03-06 16:03:25
163
原创 Linux RPM命令学习(2)
今天学习Linux中RPM包的检验和提取命令。其实这些命令相对于前面的命令没有那么重要,了解和简单掌握就好了。先介绍一下RPM包中的检验命令,其实检验命令就只有一个rpm -V 包名:校验指定RPM包中的文件,检查RPM包中是否有文件进行修改输入命令后,如果包没修改不会返回任何信息,否则将出现提示信息。信息含义S文件大小是否改变M文件类型是否改变或者文件权限是否被改变5文件MD5校验和是否修改,可以看成文件内容是否改变D设备中,从代码是否改变L
2021-02-06 21:06:41
214
原创 Linux RPM命令学习(1)
今天学习Linux中RPM包的安装升级和查询命令。先介绍一下Linux中常见的两类包源代码包二进制包直接发源代码过来,需要编译后才能运行RPM包,是系统编译过的文件可以自由选择所需功能,软件是编译安装,更加稳定,效率更高,卸载方便。包管理系统简单,安装速度比源码包快安装步骤较多,编译过程时间较长,由于编译安装,一旦报错新手很难解决看不到源代码,功能选择不如源码包灵活,依赖性这里重点先说说二进制包,也就是RPM包的依赖性,依赖性分为三种树形依赖:a ->
2021-01-31 22:38:34
130
原创 Linux文本编辑vim学习
今天开始全新的Linux命令学习,本篇博客开始学习vim编辑命令。vim分为三个模式,命令模式,插入模式,编辑模式。首先通过vi命令加文件名打开一个文件。打开文件后,进入的便是命令模式。在此模式中直接敲相应的命令就可以实现控制。当我们按:冒号就可以进入编辑模式此时可以输入一串命令来进行操作。按ESC可以退出编辑模式回到命令模式,当我们按i,a或o可以进入insert模式,也叫输入模式,插入模式可以直接修改文本内容。按ESC同样可以退出输入模式,回到命令模式。接下来将介绍一些常用命令。插入命
2021-01-29 23:16:46
193
原创 Linux常用命令学习(6)——终章
今天是常用命令学习的第六天,也是常用命令学习的最后一天,接下来将学习文本编辑命令。第一个是write:给用户发信息,以Ctrl + D保存结束这里可能不支持中文传输,但是英文传输还是成功的。接下来是wall:write all,给所有用户发广播信息可以发现,不仅给了用户linzhiling发送信息,自己也会收到信息。接下来是ping:测试网络连通性ping -c 10:ping某个服务器十次之后是ifconfig:查看网卡名称 IP地址,这个命令在centos7之后就不默认有了,
2021-01-27 22:30:17
451
原创 Linux常用命令学习(5)
今天是常用命令学习的第五天,今天主要学习一些用户管理和压缩命令第一个是useradd:添加新用户。观察路径可以发是在/usr/sbin/useradd,意味着只有root才能调用该命令。其次与之类似的是passwd:设置密码。Linxu设置的密码必须是八位以上且最好包含字母数字和符号这里我建立了一个叫liming的用户并给该用户设置了密码who:查看登录者以及终端等信息第一个时用户,tty是本地终端,pts远程终端,然后是登录时间,登录的主机ip地址,没有写则本机登录最后介绍的用户管理命令是
2021-01-27 12:16:08
2583
7
原创 Linux常用命令学习(4)
今天是常用命令学习的第四天第一个是find:文件搜索,所有用户都可以搜索。find命令有许多常用的选项,下面将一个一个介绍find / :在根目录下查找;find . :在当前目录下查找。find命令要在某个目录下寻找。find /etc -name:-name是一个选项,表示要查找的名字什么。find /etc -name init:这个操作是在/etc目录下找名叫init的文件,注意这里查找是只会找到名叫init的文件,且区分大小写。这里顺便说一下,根据正则表达式,*:可以匹配任意字符;?:
2021-01-26 00:26:06
419
原创 Linux常用命令学习(3)
今天是常用命令学习的第三天首先是第一个命令chmod:change the permissions mode of a file,改变文件和目录权限。这里再说一下,u:所有者,g:所属组,o:其他人,a:所有人(前三类的集合);r:可读,w:可写,e:可执行我这里通过:chmod u+x,o-r,g=rw Japanlovestory.list这个命令,把Japanlovestory.list的权限修改了,给所有者加上了可执行权限,给其他人减少了可读权限,给所属组操作为读和写权限。除了这种方式外还
2021-01-23 22:50:47
457
原创 Linux常用命令学习(2)
今天是学习Linux常用命令的第二期。首先是创建文件的命令:touch这里我是创建了一个名叫Japanlovestory.list的文件,我们可通过文件的颜色来区分文件类型,白色的是二进制文件(源代码),深蓝色的列表,天蓝色的软链接,绿色是可执行文件,黄色是设备文件,红色是有问题的文件。注意,一般来说文件名都尽量不要带空格,如果文件名带空格的话,要用引号括起来:‘program file’,不然系统误以为创建多个文件,而且再后续的查找,删除都要用引号括起来,十分麻烦。这里演示如果不加入双引号就
2021-01-22 21:44:46
654
原创 Linux常用命令学习(1)
这个寒假打算学习Linux操作系统,这个博客系列将记载我学习的过程的心得。第一篇博客讲一下Linux对于文件和目录最基本的操作。这是我在b站学习的视频资料:https://www.bilibili.com/video/BV1mW411i7Qf?t=1862&p=13首先是显示列表的命令:lsls / 查询指定目录的文件(这里是根目录)ls -a 显示所有文件(包括隐藏文件) 记忆方法:all-ls -ld 查看目录属性 记忆方法:directoryls -l 长格
2021-01-21 22:20:57
203
原创 Scrapy框架的个人理解和总结
Scrapy作为一个强大的爬虫框架,具有强大的爬取网站和信息传输能力。Scrapy框架主要是分目录的形式,逐层对信息进行爬取。网页的目录一般分为三个。以中国新闻网为例子:https://www.chinanews.com/在新闻网的首页中,我们看到有这样的一栏。这就是一级目录。通过网页解析器,我们发现这个ul标签下麦呢有很多的li标签,而li中包含的a标签中的href属性就是对应着某个类别新闻的列表。我们随便跳转一个href,就进入了第二目录。这个网站的二级目录是属于动态网页,具体爬取的时候要
2021-01-18 12:22:32
328
原创 爬虫总结——(2)页面信息解析
很多时候,我们爬取了一整张页面后,我们只会截取一部分的内容。比如我可能只要页面某个栏目的图片,或者只要文章的开头。通过看网页的html内容,我们可以发现,其实其结构属于层层包含,而我们所需要的通常在,某个class或者div的目录下。因此我们就可以使用正则表达式,bs4或者xpath。先来看一下正则。正则涉及到正则表达式。大家可以来练习一下正则。#提取python key = "javapythonc++php" print( re.findall('python' , key)[0
2020-12-03 23:47:55
320
原创 爬虫总结——(1)request使用以及文件存储
爬虫的基本概念就是通过程序来模拟上网冲浪,通过获取整个页面的所有信息,然后用正则表达式或者bs4进行解析,部分获取信息。在python中,爬虫的很多模块已经构建好了。先来看几个最基本的概念。url:通俗来说就是要爬取的页面,但由于有些网页是动态加载的,里面的数据不一定是由显示的网址加载的,具体得看该数据的urlUA伪装:我们都基本上使用浏览器来浏览网页,UA就相当于一个浏览器的代号,有些服务器为了防止恶意爬虫,如果不使用UA伪装,会无法爬取该网站的数据数据类型:如:text , json 和 co
2020-12-02 22:55:01
615
原创 C++并查集——食物链
并查集是一种用来维护集合的简单算法。因为其实现算法很简单,经常用于面试题。其实现原理是构造一棵树,其中在一个集合的元素都会储存在一棵树中。如果两个集合合并,可以将集合A放在集合B的节点,达到两个集合合并后所有元素的根节点都为同一个值即可。算法关键是构建一个函数find(),该函数用来找出该点的根节点的值。如果将A点加入到集合B中,只需将A点的根节点值修改成B集合根节点的值即可。#include<iostream>using namespace std;const int N
2020-11-20 23:00:34
2178
原创 C++Trie——最大异或数
Trie树其实就是将字符串或一串东西存储在一棵树上。举个栗子。假如我们存入了两串字符。会发现我们存储在这个树,其实有很多好处。Trie树最多的两个操作就是插入和查询。先来说说插入的好处,这里先上一道经典例题。我们这里是通过一个数组son[ ]来维护这棵树。这里我们用idx这个索引来标记,具体用途看下面代码。int cnt[N] , son[N][26];//idx相当于一个指引,如果没有到达最后的字符,那么就引导到第idx行//如果已经到达最后一个字符,那么久引导到cnt[idx],记录该字
2020-11-20 21:50:25
494
原创 C++算法——BFS
BFS我们称之为宽搜,通常可以用于解决最短,最小问题。不同于深搜,宽搜每次先把同一层的遍历一遍,若无正确答案再去遍历下一层,因此不需要用到递归,只需要用到循环即可。先来看一道经典例题:走迷宫解决走迷宫问题,我们可以用程序来模拟一下走迷宫,但不同人走迷宫,我们通过程序可以在一个位置从上下左右去尝试,直到找到正确答案。解决走迷宫问题,我们可以用程序来模拟一下走迷宫,但不同人走迷宫,我们通过程序可以在一个位置从上下左右去尝试,直到找到正确答案。但前提是向该方向走一步后,到达的点是否合法,因此要进行判断
2020-11-14 00:40:51
2523
原创 C++算法——DFS
DFS我们称之为深搜,通常解决一些最大最长或者所有可能的问题,一般用递归来实现。因为深搜基本上会遍历每一个结果,但暴力法不同在于,深搜可以通过递归中不满足条件,实现剪枝。我们先来看一道例题,感受一下深搜。思路其实比较简单,有点类似于穷举法。我们构建一棵数,每一层依次增加一个没有枚举的数,当到达底层的时候就是一个答案。比如我们先将第一个数填1,然后由于还有数未填入,继续深入到达下一层。下一层由于第一个数1已经枚举,我们枚举第二个数2。然后继续进入第三层,枚举第三个数3,由于已经把所有的数都枚举完,我
2020-11-14 00:05:23
16625
6
原创 贪心算法——区间合并以及覆盖问题
贪心算法的核心在于,只是注意当前的最优解情况,每次依次选择最优解,使得最终问题得到最优解。一般来说,贪心算法只能解决单峰问题。我们先来看一下题目。
2020-10-30 00:08:50
763
原创 动态规划——状态压缩DP——蒙德里安的梦想
状态压缩DP是我现阶段学的比较难的DP问题,其主要思想就是利用一个数来表示一种状态(通常使用二进制来表示)。我们先来看一下题目。根据做DP题的步骤,先进行状态表示。这里非常巧妙,我们设立一个 f[N][M] 的数组,其中 M 为 2^n 次方。f[i][j] 表示 i-1列的方案数已经确定,从i-1列伸出,并且第i列的状态是j的所有方案数。举个简单的例子,比如我们有5行,则我们用二进制表示5行中的空格和填充部分(0表示空格,1表示填充),则有 00000 , 00001 , 00100 … 。至于为什
2020-10-26 00:25:32
342
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人