网络安全基础技术扫盲篇 — 名词解释之“数据包“
用通俗易懂的话说:
数据包就像是一个信封。当你写信给某个人时,你将内容写在一张纸上,然后将纸叠起来并放入信封中,就形成了一个完整要发送的数据内容。信封上有发件人和收件人的详细地址,还有一些其他必要的信息,如邮戳。
在网络通信中,你的数据被分割成小块并放入每个数据包中。每个数据包都包含了一部分你要传输的数据,以及一些控制信息,如源地址、目标地址、校验和等。这些数据包具有类似于信封的结构。
类比于信件的传递,数据包也会经过一系列的网络设备,就像邮局、分拣中心等。每个网络设备都会查看数据包的地址信息,并选择最佳的路径将其转发到目标设备。当数据包到达目标设备时,它们被重新组装成完整的数据,就像打开一封信封并阅读信件的内容。数据包就像是内容写在纸上的信件,通过邮递员(网络设备)在网络中传输,最终抵达目标设备,并被重新组装成完整的数据。
从专业领域视角理解:
数据包是计算机网络中的基本单位,用于在网络中传输数据。它是将大块的数据分割成小块,每个小块都被封装在独立的数据包中,并携带了一些必要的控制信息。
数据包通常由首部、有效载荷和尾部组成。
首部(Header):首部包含了数据包的控制信息,如源IP地址、目标IP地址、协议类型、端口号等。这些信息帮助网络设备正确地转发和处理数据包。
有效载荷(Payload):有效载荷是数据包中实际携带的数据内容。这可以是任何形式的数据,如文本、图片、音频或视频等。
尾部(Trailer):尾部通常包含了用于错误检测和校验的字段,比如校验和。校验和可以用于验证数据包在传输过程中是否发生了错误,以确保数据的完整性。
SSH会话数据包
下图是一个SSH建立远程会话大致的数据包
例如我们SSH密钥协商key过程中的相关数据包
其中就包含了时间、源IP、目的IP、源端口、目的端口及协商密钥等主要内容
这里可以简单看一下对应的数据包,主要是告诉对方自己支持的相关加密算法列表、MAC算法列表等。
kex_algorithms:密钥交换算法,用于生成会话密钥
server_host_key_algorithms:服务器主机密钥算法,可以采用的有哪些
encryption_algorithms_client_to_server:对称加密算法,可以采用的有哪些
mac_algorithms_clien_to_server: MAC 算法,主要用于保证数据完整性
HTTP请求数据包
接着我们再看一下比较常见的HTTP请求数据包,HTTP协议的数据包一般包含以下内容:
1. 首部(Header):HTTP数据包的首部包含了控制信息,它们是以键值对的形式组织的。常见的首部字段有:
- 请求行字段(Request Line):包括请求方法(GET、POST等)、URL和HTTP协议的版本号。
- 响应行字段(Response Line):包括状态码、状态短语和HTTP协议的版本号。
- 请求头字段(Request Headers):包括可选的请求头,用于传递附加的信息,如Host、Accept、Content-Type等。
- 响应头字段(Response Headers):包括可选的响应头,用于传递附加的信息,如Server、Content-Type、Content-Length等。
2. 空行:在首部和有效载荷之间,存在一个空行。空行用于分隔首部和有效载荷。
3. 有效载荷(Payload):HTTP数据包的有效载荷是请求或响应的实际数据内容。对于GET请求,有效载荷通常为空;而对于POST请求,有效载荷通常包含要传输的数据。
例如下图是一张访问百度主页的请求数据包
通过左边的请求,右边给出的响应包,经过解析后其实就是百度的首页面
抓包
抓包是指在计算机网络中通过截获、重发、编辑、转存等操作,分析网络数据包的过程。网络数据包是计算机之间进行通信时发送和接收的信息单元。通过抓包,可以查看和分析网络通信中传输的数据,以便诊断网络问题、监控网络流量或进行安全审计。
一、 burp — 抓包分析软件
1. 常用模块介绍
本文仅介绍抓包,剩余内容会在应用系统测评篇中放出,(例如利用burp暴力破解攻击,通过抓包查看前端使用了哪种算法等内容)
1.1 Proxy模块
Proxy代理模块作为 BurpSuite 的核心功能,拦截HTTP/HTTPS的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
这个版本的burp可不设置代理,我们直接点击 Open Browser
打开浏览器输入网址后,即可抓到对应的数据包
点击放包后,浏览器才能访问到对应的页面
当然,如果觉得自带的不太好用,想用其他的浏览器抓包,那么一般是浏览器上安装对应的插件,这里我们以firefox 举例
打开firefox浏览器,点击右边的扩展菜单栏,选择管理扩展
然后在寻找更多附加组件处输入:foxyProxy 回车
第一个就是,将它安装
安装完毕后,直接点击打开
选择“选项”
点击 Proxies
burp如果设置未进行修改的话,为8080,如做了修改,则将上面的端口号改为修改后对应的端口
完成后点击 save 保存,然后鼠标点击一下,应用burp这个规则
此时我们的burp工具就能拦截到对应的数据包了
2. http数据包简介
例如我们抓取一个后台登陆的数据包,进行简单分析一下
POST /?m=admin&c=index&a=check HTTP/1.1
Host: 172.17.200.25
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 64
Origin: http://172.17.200.25
Connection: close
Referer: http://172.17.200.25/?m=admin&c=index&a=login
Cookie: PHPSESSID=sm571fs1h3ngkf1dfo96bkkv45
t0=admin&t1=admin&t2=spxc&token=1660f5b3f4493aa51e0a19fa788df146
下面对每个部分进行简单解释:
① 请求行:POST /?m=admin&c=index&a=check HTTP/1.1
- POST:表示这是一个POST请求方法,用于向服务器提交数据。
- /?m=admin&c=index&a=check:表示请求的路径和参数。在这个例子中,路径为根目录下的admin,控制器为index,方法为check。
- HTTP/1.1:表示所使用的HTTP协议版本。
② 请求头部:
- Host: 172.17.200.25:表示服务器的主机名。
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0:表示浏览器或客户端的相关信息,这里显示的是使用Firefox浏览器版本。
- Accept: application/json, text/javascript, */*; q=0.01:表示客户端能够接受的响应内容类型。
- Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2:表示客户端所支持的语言偏好。
- Accept-Encoding: gzip, deflate:表示客户端能够接受的压缩编码方式。
- Content-Type: application/x-www-form-urlencoded; charset=UTF-8:表示请求主体的数据格式为URL编码形式,字符集为UTF-8。
- X-Requested-With: XMLHttpRequest:表示该请求是由XMLHttpRequest对象发起的。
- Content-Length: 64:表示请求主体的数据长度。
- Origin: http://127.17.200.25:表示请求的来源。
- Connection: close:表示请求完成后关闭连接。
- Referer: http://172.17.200.25/?m=admin&c=index&a=login:表示请求的来源网页。
- Cookie: PHPSESSID=sm571fs1h3ngkf1dfo96bkkv45:表示客户端发送的Cookie数据,这里包含了名为PHPSESSID的会话ID。
③ 请求主体:
t0=admin&t1=admin&t2=spxc&token=1660f5b3f4493aa51e0a19fa788df146:表示具体的表单数据,以URL编码形式展示。其中t0、t1、t2和token为参数名,后面的值为具体的参数值。t0表示输入的用户名、t1表示输入的密码、t2表示输入的验证码。
总结:该POST请求的目的是向服务器提交一些表单数据。请求头部提供了一些附加信息,如请求的主机名、浏览器信息、接受的响应类型等。请求主体中包含了具体的表单数据,也就是我们输入的帐号密码。这整一个数据包就是登录过程的请求。
二、Wireshark 网络抓包分析软件
Wireshark 使用 WinPCAP 作为接口,直接与网卡进行数据报文交换。
打开Wireshark后,我们第一步要做的就是选择对应的网卡,一般正常情况下,笔记本选择"WLAN",有线连接选择对应的"本地连接"。如果是与虚拟机交互的,那么就要选择对应的虚拟机网卡。
选择完对应的网卡后,会直接抓取数据包,点击红色的按钮可关闭
这里我们演示去抓一个MySQL连接的数据包,在Wireshark捕获的状态下,使用Navicat 远程连接mysql
此时Wireshark界面会有非常多的数据,我们需要在过滤器内输入相应的命令,对数据包进行过滤
下面是一些常用的过滤条件示例:
① 过滤特定IP地址:
- 显示源IP地址为 192.168.1.100 的数据包:ip.src == 192.168.1.100
- 显示目的IP地址为 192.168.1.200 的数据包:ip.dst == 192.168.1.200
- 显示源或目的IP地址为 192.168.1.100 的数据包:ip.addr == 192.168.1.100
② 过滤特定协议:
- 显示所有TCP数据包:tcp
- 显示所有UDP数据包:udp
- 显示所有ICMP数据包:icmp
③ 过滤端口号:
- 显示源或目的端口号为 80 的数据包:tcp.port == 80 or udp.port == 80
④ 组合多个条件:
- 显示源IP地址为 192.168.1.100 并且目的端口号为 80 的TCP数据包:ip.src == 192.168.1.100 and tcp.dstport == 80
像上述 抓取MySQL登录过程的数据包,则需要筛选目的地址为172.17.200.13,端口号为3306的数据包,可以使用以下过滤条件进行过滤:
ip.addr == 172.17.200.13 and tcp.dstport == 3306
通过过滤,我们很快就能找到在这个登录过程中传输了哪些数据
例如我再抓取一个查询表的数据包
由于数据包比较多,我们进行筛选后,可以 右键 → 追踪流→ TCP流
Wireshark中的"追踪流"功能是用于分析和展示特定协议或会话的整个数据流的功能。当观察特定协议或会话时,Wireshark会将相关的数据包按照时间顺序进行排序并展示整个通信过程。通过"追踪流"功能,您可以按照报文的传输顺序,一次性地查看发送和接收的数据包,从而更好地理解协议的交互过程。
在这里我们可以直观的看到刚刚输入的数据,以及数据库返还给我们的数据,均是明文传输,统统被抓取到了
所以要设置SSL连接来保证数据传输过程中的保密性,如果Mysql开启了SSL,不采用SSL则会被拒绝
以上简单介绍了一下常用的抓包工具,仅作为介绍了解使用,更深入的用法需要自行搜索相应资料研究。
相关文章:
网络安全基础技术扫盲篇 — 名词解释之“数据包“
用通俗易懂的话说: 数据包就像是一个信封。当你写信给某个人时,你将内容写在一张纸上,然后将纸叠起来并放入信封中,就形成了一个完整要发送的数据内容。信封上有发件人和收件人的详细地址,还有一些其他必要的信息&…...
26 _ 虚拟DOM:虚拟DOM和实际的DOM有何不同?
虚拟DOM是最近非常火的技术,两大著名前端框架React和Vue都使用了虚拟DOM,所以我觉得非常有必要结合浏览器的工作机制对虚拟DOM进行一次分析。当然了,React和Vue框架本身所蕴含的知识点非常多,而且也不是我们专栏的重点,…...
C语言(内存函数)
Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记,在这里撰写成文一…...
JVM之【执行引擎】
执行引擎 执行引擎是JVM的核心组件之一,它负责将Java字节码文件转换为机器指令并执行。这一过程涉及多个组成部分,各部分协同工作来完成字节码到机器指令的转换和执行。以下是执行引擎的主要组成部分及其作用: 1. 解释器(Interp…...
maven部署到私服
方法一:网页上传 1、账号登录 用户名/密码 2、地址 http://自己的ip:自己的端口/nexus 3、查看Repositories列表,选择Public Repositories,确定待上传jar包不在私服中 4、选择3rd party仓库,点击Artifact Upload页签 5、GAV Definition选…...
Android精通值Fragment的使用 —— 不含底层逻辑(五)
1. Fragment 使用Fragment的目标:根据列表动态显示内容,更简洁显示界面、查找界面 eg. 使用新闻列表动态显示新闻 1.1 Fragment的特性 具备生命周期 —— 可以动态地移除一些Fragment必须委托在Activity中使用可以在Activity中进行复用 1.2 Fragmen…...
apache大数据各组件部署搭建(超级详细)
apache大数据数仓各组件部署搭建 第一章 环境准备 1. 机器规划 准备3台服务器用于集群部署,系统建议CentOS7+,2核8G内存 172.19.195.228 hadoop101 172.19.195.229 hadoop102 172.19.195.230 hadoop103 [root@hadoop101 ~]# cat /etc/redhat-release CentOS Linux rele…...
Servlet搭建博客系统
现在我们可以使用Servlet来搭建一个动态(前后端可以交互)的博客系统了(使用Hexo只能实现一个纯静态的网页,即只能在后台自己上传博客)。有一种"多年媳妇熬成婆"的感觉。 一、准备工作 首先创建好项目,引入相关依赖。具体过程在"Servlet的创建"中介绍了。…...
NextJs 渲染篇 - 什么是CSR、SSR、SSG、ISR 和服务端/客户端组件
NextJs 渲染篇 - 什么是CSR、SSR、SSG、ISR 和服务端/客户端组件 前言一. 什么是CSR、SSR、SSG、ISR1.1 CSR 客户端渲染1.2 SSR 服务端渲染1.3 SSG 静态站点生成① 没有数据请求的页面② 页面内容需要请求数据③ 页面路径需要获取数据 1.4 ISR 增量静态再生1.5 四种渲染方式的对…...
Python 二叉数的实例化及遍历
首先创建一个这样的二叉树,作为我们今天的实例。实例代码在下方。 #创建1个树类型 class TreeNode:def __init__(self,val,leftNone,rightNone):self.valvalself.leftleftself.rightright #实例化类 node1TreeNode(5) node2TreeNode(6) node3TreeNode(7) node4Tre…...
计算 x 的二进制表示中 1 的个数
计算 x 的二进制表示中 1 的个数 代码如下: int func(int x){int countx 0;while (x>0){countx;x x & (x - 1);}return countx;} 完整代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat…...
基于Vue的前端瀑布流布局组件的设计与实现
摘要 随着前端技术的不断演进,复杂业务场景和多次迭代后的产品对组件化开发提出了更高的要求。传统的整块应用开发方式已无法满足快速迭代和高效维护的需求。因此,本文将介绍一款基于Vue的瀑布流布局组件,旨在通过组件化开发提升开发效率和降…...
WinSW使用说明
WinSW使用说明 Windows系统下部署多个java程序 场景: 多个java的jar程序,通常来说一个程序使用一个cmd窗口,通过java -jar xxx.jar 命令来运行。这样如果程序多了打开cmd窗口也就多了。 解决: 通过使用WinSW程序,把ja…...
SpringBoot 多模块 多环境 项目 单元测试
环境描述 假设项目中有以下三个yml文件: application.ymlapplication-dev.ymlapplication-prod.yml 假设项目各Module之间依赖关系如下: 其中,D依赖C,C依赖B,B依赖A,D对外提供最终的访问接口 现在要想采…...
网络安全法中的网络安全规定和措施
《中华人民共和国网络安全法》是中国首部全面规范网络空间安全管理的基础性法律,旨在加强网络安全,保障国家安全和社会公共利益,保护公民、法人和其他组织的合法权益,促进互联网的健康发展。以下是该法律中关于网络安全的一些核心…...
一、搭建 Vue3 Admin 项目:从无到有的精彩历程
在前端开发的领域中,Vue3 展现出了强大的魅力,而搭建一个功能丰富的 Vue3 Admin 项目更是充满挑战与乐趣。今天,我将和大家分享我搭建 Vue3 Admin 项目的详细过程,其中用到了一系列重要的依赖包。 首先 让我们开启这个旅程。在确…...
Qt | Qt 资源简介(rcc、qmake)
1、资源系统是一种独立于平台的机制,用于在应用程序的可执行文件中存储二进制文件(前面所讨论的数据都存储在外部设备中)。若应用程序始终需要一组特定的文件(比如图标),则非常有用。 2、资源系统基于 qmake,rcc(Qt 的资源编译器,用于把资源转换为 C++代码)和 QFile …...
对boot项目拆分成cloud项目的笔记
引言:这里我用的是新版本的技术栈 spring-boot-starter-parent >3.2.5 mybatis-spring-boot-starter >3.0.3 mybatis-plus-boot-starter >3.5.5 spring-cloud-dependencies …...
CTF本地靶场搭建——基于阿里云ACR实现动态flag题型的创建
接上文,这篇主要是结合阿里云ACR来实现动态flag题型的创建。 这里顺便也介绍一下阿里云的ACR服务。 阿里云容器镜像服务(简称 ACR)是面向容器镜像、Helm Chart 等符合 OCI 标准的云原生制品安全托管及高效分发平台。 ACR 支持全球同步加速、…...
【面试经典150题】删除有序数组中的重复项
目录 一.删除有序数组中的重复项 一.删除有序数组中的重复项 题目如上图所示,这里非严格递增排序的定义是数字序列,其中相邻的数字可以相等,并且数字之间的差值为1。 这题我们依旧使用迭代器进行遍历,比较当前的数据是否与下一个数…...
太阳能辐射整车综合性能环境试验舱
产品别名 步入式恒温恒湿试验箱、步入式温湿度试验箱、温度试验室、模拟环境试验室、大型恒温恒湿箱、步入式高低温湿热交变试验箱、大型高低温箱、步入式老化箱、恒温恒湿试验房、步入式高低温试验箱. 整车综合性能环境试验舱:整车综合性能环境试验舱:主要用于整车高低温存放…...
JS脚本打包成一个 Chrome 扩展(CRX 插件)
受这篇博客 如何把CSDN的文章导出为PDF_csdn文章怎么导出-CSDN博客 启发,将 JavaScript 代码打包成一个 Chrome 扩展(CRX 插件)。 步骤: 1.创建必要的文件结构和文件: manifest.jsonbackground.jscontent.js 2.编写…...
js事件对象
js事件对象概念说明 在JavaScript中,事件对象是在事件触发时由浏览器自动创建的一个对象。它包含了与事件相关的信息,例如触发事件的元素、事件类型、鼠标的坐标等。 可以通过事件处理函数的第一个参数来访问事件对象。例如,在一个鼠标点击…...
希捷硬盘怎么恢复数据? 5 个免费希捷数据恢复软件
希捷已迅速成为全球最大的数字存储提供商。许多人选择并使用希捷外置硬盘来存储他们的媒体文件、学校或工作文件以及其他重要数据。有时,希捷硬盘中的数据会丢失。 如果您丢失了希捷硬盘上的数据,请不要惊慌。在专业的希捷数据恢复软件的帮助下…...
Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:京东无人配送机器人
电商巨头京东已选用NVIDIA Jetson AGX Xavier 平台,作为下一代自主配送机器人核心AI算力。 在过去的几十年中,中国占据了全球40%以上的电商交易——每年约为千亿美元。根据麦肯锡全球研究院的数据,这一数字已经高于法国、德国、…...
STM32作业实现(七)OLED显示数据
目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…...
elementui el-tooltip文字提示组件弹出层内容格式换行处理
1、第一种 1.1 效果图 1.2、代码 <template><div class"wrapper"><el-tooltip class"content" effect"dark" placement"top"><div slot"content"><div v-html"getTextBrStr(text)"&…...
Python3 笔记:每天一个函数——str.join()
join() :连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串。 语法:sep.join(seq) 参数说明: sep:分隔符。可以为空。 seq:要连接的元素序列、字符串…...
深入解析Python中的None与null:它们真的不同吗?
标题:深入解析Python中的None与null:它们真的不同吗? 摘要 在Python编程中,None是一个常见的概念,而null则通常与Python之外的语言相关。尽管None和null在某些语言中可以互换使用,但在Python中࿰…...
论文作图之高压缩比导出PDF
笔者使用Adobe Illustrator 2023创建可编辑pdf图,按照默认的导出设置保存pdf文件时,得到的图存储很大。为了解决存储过大且还保留一定编辑功能的问题,作者实践出了一种导出pdf的设置方法。 首先在AI中点击文件->存储为,点击保…...
SpringBoot的启动流程
SpringBoot的启动流程 主要包括初始化配置、创建应用程序上下文、刷新上下文以及通知监听者等步骤。 下面将详细探讨SpringBoot的启动流程,以了解其背后的工作原理和机制: 初始化配置:当main方法被调用时,首先通过类加载器读取cla…...
Kubernetes资源调度策略及实现机制
目录 一、资源调度策略 1.默认调度器(Default Scheduler) 2.自定义调度器(Custom Scheduler) 3.亲和性与反亲和性(Affinity and Anti-Affinity) 4.污点与容忍(Taint and Tolerations&#…...
finetuning大模型准备(基于Mac环境)
为finetuning进行的热身准备,涉及周边的软件工具,方法。 问题1:finetuning过程较长,采用系统自带命令行没有后台,前台被杀后,容易造成训练失败。 解决方法: tmux可以开启后台训练 问题2&…...
js检验一个字符串是否是正确时间格式的工具方法
js检验一个字符串是否是正确时间格式的工具方法 (()> {/*** 检验字符串是否为时间格式* param {String} date 需要检验的时间格式* returns true 为时间格式,false 为非时间格式*/const isTimaFormat (date) > {if(!date) return false;try{const tempTime …...
大型制造业集团IT信息化总体规划方案(65页PPT)
方案介绍: 本大型制造业集团IT信息化总体规划方案旨在通过构建先进、高效、稳定的IT信息化系统,支撑集团各业务领域的运营和管理需求,促进集团整体运营效率和竞争力的提升。通过实施本项目,集团将能够更好地应对市场变化和客户需…...
【LIN】STM32新能源汽车LIN通信实现过程
【LIN】STM32新能源汽车LIN通信实现过程 文章目录 前言一、软件二、接线图三、硬件原理图四、上位机五、PICO示波器串行解码1.软件中的LIN波特率设置-192002.PIC设置3.PIC串行解码 六.引用总结 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 使用工具:…...
【LeetCode:575. 分糖果+ 哈希表】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
全文检索-ElasticSearch
1.基本概念 1.Index索引 动词:相当于MySQL中的insert; 名词:相当于MySQL中的DataBase; 2.Type(类型) 在Index(索引)中,可以定义一个或多个类型 类似于MySQL中的Tab…...
C编程惯用法:深入剖析与实战指南
C编程惯用法:深入剖析与实战指南 在C语言编程的浩瀚海洋中,掌握一些惯用法对于提升代码质量、增强可读性以及降低出错率至关重要。本文将从四个方面、五个方面、六个方面和七个方面,详细剖析C编程中的惯用法,帮助您更好地理解和应…...
MySQL数据表的设计
实际工程中, 对于数据表的设计和创建, 我们遵循以下步骤: 首先确定实体, 找到关键名词, 提取关键信息, 设计表有哪些列, 每一列是什么. (有几个实体, 一般就创建几个表, 一般一个表对应一个实体) 实体之间的关系: 1. 一对一关系 例如: 一个学生, 只能有一个账号; 一个账号只…...
Flutter开发效率提升1000%,Flutter Quick教程之对写好的Widget进行嵌套
通常写代码的时候,我们是先写好外面的Widget,再写里面的Widget。但是,也有的时候,我们写好了一个Widget,但是我们觉得有必要再在外面嵌套一个Widget,这时候应该怎么做呢?(还有其他方…...
2020编程语言排序:探索编程界的热门与趋势
2020编程语言排序:探索编程界的热门与趋势 在数字时代的浪潮中,编程语言作为构建数字世界的基石,其流行度和影响力不容忽视。2020年,各大编程语言在各自的领域里展现出独特的魅力和实力。本文将从四个方面、五个方面、六个方面和…...
提高工作效率的招数
自己的工作效率为啥比别人低,因为不会使用工具,这就是一个大冤种。 1.血泪教训,写代码调用第三方接口的时候已经要打印调用日志,不然扯皮真的难搞。 2.pg 上测试或的时候由于schema 错误mybatis会给你报空指针一样,还…...
css特殊效果和页面布局
特殊效果 圆角边框:div{border-radius: 20px 10px 50px 30px;} 四个属性值按顺时针排列,左上的1/4圆半径为20px,右上10,右下50,左下30。 div{border-radius: 20px;} 四角都为20px。 div{border-radius: 20px 10…...
JavaScript中对象的增删改查
1. 增(添加属性) let obj {}; // 添加一个属性 obj.name John Doe; // 或者使用方括号语法添加属性(这对于动态属性名很有用) let propName age; obj[propName] 30; console.log(obj); // 输出: { name: John Doe, …...
技术周总结 2024.05.27~06.02(java bean冲突 软件工程)
文章目录 一、05.28 周二1.1)问题01:java 引用的jar包中bean名称冲突了,怎么解决?1.2)问题02:使用SparkSession将json字符串转成 DataFrame 二、06.01 周六2.1)问题01:系统架构师考试…...
「前端+鸿蒙」核心技术HTML5+CSS3(八)
1、网站布局详解 网站布局是前端开发中的核心概念之一,它决定了网页的视觉结构和用户浏览的逻辑顺序。以下是几种常见的布局方式及其代码示例: 固定布局: 固定布局通常具有固定的宽度和高度,适用于传统的桌面视图。 <!DOCTYPE html> <html> <head><…...
15届蓝桥杯决赛,java b组,蒟蒻赛时所写的题思路
这次题的数量是10题,初赛是8题,还多了两题,个人感觉java b组的题意还是比较清晰的(不存在读不懂题的情况),但是时间感觉还是不够用,第4题一开始不会写,后面记起来写到结束也没调出来…...
2024蓝桥杯国赛C++研究生组游记+个人题解
Day0 开始复习,过了一遍大部分板子 本来打算再学一遍SAM,但是想到去年考了字符串大题今年应该不会再考了吧。。 过了一遍数据结构和图论,就1点了 两点的时候还没睡着,舍友打游戏好像打到2点过。。 Day1 相当困 第一题&…...
C#WPF数字大屏项目实战07--当日产量
1、第2列布局 第2列分三行,第一行分6列 2、当日产量布局 3、产量数据布局 运行效果 4、计划产量和完成度 运行效果 5、良品率布局 1、添加用户控件 2、用户控件绘制圆 2、使用用户控件 3、运行效果 4、注意点 这三个数值目前是静态的,可以由后台程序项…...