写点什么

ARTS 打卡第四周

  • 2023-09-08
    北京
  • 本文字数:3550 字

    阅读完需:约 12 分钟

ARTS打卡第四周

1、A 算法题


题目:


有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。


例如:"0.1.2.201" 和"192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效 IP 地址。


给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 '.' 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。


示例 :


输入:s = "25525511135"输出:["255.255.11.135","255.255.111.35"]
复制代码


解题


使用回溯(Bachtracking)求解。


class Solution:def restoreIpAddresses(self, s: str) -> List[str]:if not s or len(s) < 4:return []res = list()self.dfs(s, 0, '', res)return res


def dfs(self, s: str, idx: int, path: str, res: List[str]):    if idx > 4:        return     if idx == 4 and not s:        res.append(path[:-1])        return    for i in range(len(s)):        if s[:i+1] == '0' or (s[0] != '0' and 0 < int(s[:i+1]) < 256):            self.dfs(s[i+1:], idx+1, path+s[:i+1]+'.', res)
复制代码

2、R 阅读英文文章


英文原文:Top 10 tips for becoming a proficient JavaScript developer

成为一名熟练的 JavaScript 开发人员的十大技巧


1. 掌握作用域和闭包


理解作用域和闭包对于高级 JavaScript 开发至关重要。闭包允许函数在执行之后“记住”它们的外部作用域。这是一个强大的功能,可以产生优雅的解决方案。


2. 使用 ES6+特性

拥抱 ECMAScript 6 (ES6)及以后版本中引入的现代语法和特性。像箭头函数、解构和类这样的特性可以极大地提高代码的可读性和可维护性。


3.掌握异步编程

理解异步 JavaScript 是构建响应式应用程序的关键。使用 Promises、async/await 和回调来有效地管理异步操作。


4. 函数式编程范式

JavaScript 支持函数式编程原则。学习如何使用 map、filter 和 reduce 等高阶函数来编写更简洁、更模块化的代码。


5. 优化性能

效率很重要。了解如何优化代码以获得更好的性能。记忆、解封和节流等技术可以显著提高应用程序的响应能力。


6. 掌握 DOM 操作

使用文档对象模型(DOM)是 web 开发人员的基本技能。了解如何有效地操作 DOM,而不会导致不必要的回流或重绘。


7. 测试与调试

有效的调试和测试对于维护代码质量至关重要。学习如何使用浏览器开发人员工具、调试技术和自动测试框架(如 Jest)。


8. 代码组织和模块捆绑器

将代码库组织成模块化组件可以提高可维护性。使用像 Webpack 或 Parcel 这样的工具来捆绑你的模块用于生产,优化性能并减少加载时间。


9. 安全性和最佳实践

通过遵循最佳实践来确定安全性的优先级。清理用户输入,尽可能避免直接的 DOM 操作,并正确地实现身份验证和授权。


10. 保持好奇心,不断学习

JavaScript 发展迅速。及时了解最新的趋势、库和框架。探索新的工具和实践,永远不要停止学习,成为一个全面发展的开发人员。

3、T 学习技术技巧


Wireshark 常用过滤器表达式汇总

3.1 抓包过滤器语法和实例

抓包过滤器类型 Type(host、net、port)、方向 Dir(src、dst)、协议 Proto(ether、ip、tcp、udp、http、icmp、ftp 等)、逻辑运算符(&&与、|| 或、!非)

1.  协议过滤

比较简单,直接在抓包过滤框中直接输入协议名即可。

只显示 TCP 协议的数据包列表


tcp
复制代码


只查看 HTTP 协议的数据包列表


http
复制代码


只显示 ICMP 协议的数据包列表


icmp
复制代码


2.  IP 过滤

过滤主机为 192.168.1.104 的数据包


host 192.168.1.104
复制代码


过滤源主机为 192.168.1.104 的数据包


src host 192.168.1.104
复制代码


过滤目的主机为 192.168.1.104 的数据包


dst host 192.168.1.104
复制代码


3.  端口过滤

过滤端口为 80 的数据包


port 80
复制代码


过滤源端口为 80 的数据包


src port 80
复制代码


过滤目的端口为 80 的数据包


dst port 80
复制代码


4.  逻辑运算符 &&与、|| 或、!非

抓取主机地址为 192.168.1.80、目的端口为 80 的数据包


src host 192.168.1.104 && dst port 80 
复制代码


抓取主机为 192.168.1.104 或者 192.168.1.102 的数据包


host 192.168.1.104 || host 192.168.1.102 
复制代码


不抓取广播数据包


!broadcast 
复制代码


3.2 显示过滤器语法和实例
1.  比较操作符

比较操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于

2.  协议过滤

比较简单,直接在 Filter 框中直接输入协议名即可。注意:协议名称需要输入小写。

只显示 TCP 协议的数据包列表


tcp
复制代码


只查看 HTTP 协议的数据包列表


http
复制代码

只显示 ICMP 协议的数据包列表


icmp
复制代码



3.  ip 过滤

显示源地址为 112.53.42.42 的数据包列表


ip.src ==112.53.42.42 
复制代码


显示目标地址为 112.53.42.42 的数据包列表


ip.dst==112.53.42.42
复制代码


 显示源 IP 地址或目标 IP 地址为 112.53.42.42 的数据包列表


ip.addr == 112.53.42.42
复制代码



4.  端口过滤

 显示源主机或者目的主机端口为 80 的数据包列表

tcp.port ==80
复制代码


只显示 TCP 协议的源主机端口为 80 的数据包列表


tcp.srcport == 80
复制代码


只显示 TCP 协议的目的主机端口为 80 的数据包列表


tcp.dstport == 80
复制代码



5.  http 模式过滤

  只显示 HTTP GET 方法的

http.request.method=="GET"
复制代码



6.  逻辑运算符为 and/or/not

过滤多个条件组合时,使用 and/or。

比如获取 IP 地址为 192.168.0.104 的 ICMP 数据包表达式为


ip.addr == 192.168.0.104 and icmp
复制代码



7.  按照数据包内容过滤

假设我要以 ICMP 层中的内容进行过滤,可以单击选中界面中的码流,在下方进行选中数据。



右键单击选中后出现如下界面



选中后在过滤器中显示如下



后面条件表达式就需要自己填写。如下我想过滤出 data 数据包中包含"abcd"内容的数据流。关键词是 contains,完整条件表达式为


data contains "abcd"
复制代码


3.3 常见用显示过滤需求及其对应表达式
1.  数据链路层

筛选 mac 地址为 04:f9:38:ad:13:26 的数据包


eth.src == 04:f9:38:ad:13:26
复制代码

筛选源 mac 地址为 04:f9:38:ad:13:26 的数据包-


eth.src == 04:f9:38:ad:13:26
复制代码


2.  网络层

筛选 ip 地址为 192.168.1.1 的数据包


ip.addr == 192.168.1.1
复制代码


筛选 192.168.1.0 网段的数据


ip contains "192.168.1"
复制代码


3.  传输层

筛选端口为 80 的数据包


tcp.port == 80
复制代码


筛选 12345 端口和 80 端口之间的数据包


tcp.port == 12345 && tcp.port == 80
复制代码

筛选从 12345 端口到 80 端口的数据包


tcp.srcport == 12345 && tcp.dstport == 80
复制代码


4.  应用层

特别说明: http 中 http.request 表示请求头中的第一行(如 GET index.jsp HTTP/1.1) http.response 表示响应头中的第一行(如 HTTP/1.1 200 OK),其他头部都用 http.header_name 形式。

筛选 url 中包含.php 的 http 数据包

http.request.uri contains ".php"
复制代码


筛选内容包含 username 的 http 数据包


http contains "username"
复制代码

4、S 分享技术文章


企业上云是指企业通过互联网将企业的基础设施、管理及业务部署到云端上,即可利用网络便捷地获取云计算服务商提供的计算、存储、软件、数据等服务,从而提高资源配置效率、降低信息化建设成本、促进共享经济发展、加快新旧转换。


企业应用上云,按其使用云产品的深入程度分为云托管模式(IaaS 上云)云原生模式(PaaS 上云)两种类型。IaaS 解决了物理机资源的资源管理和资源供给问题,通过对计算、存储和网络的统一和抽象化实现基础资源的统一化供给。IaaS 没有跨越开发和运维之间的鸿沟,开发人员仍然需要关注运行在操作系统上的各种基础中间件。PaaS 的目标是为应用提供运行所需的各种基础软件,提供实际业务的开发运行环境,从而让业务系统的开发更加简便、高效。


对于基础设施上云,我们一般称之为“云托管模式”,企业只是把原本部署在 IDC 机房服务器上的应用改为部署在云上虚拟机(或容器)中,应用的架构基本没有发生任何改变,上云的改造成本低、风险低。与传统的自建 IDC 机房相比,企业直接利用云厂商提供的基础设施具有更高的成本优势,以及高可用性、安全性和弹性等优势,云托管极大地简化和降低了提供 IT 服务的复杂性和成本,减少企业的 IT 运维人员投入。


业务应用在云上的演进方向是,通过云上现有的服务构建系统,基于云产品来做技术选型,使应用开发、工具链、CI/CD、运行托管、运维诊断都在云上完成。


PaaS 云为我们完成了除应用本身之外几乎所有的配置管理工作,我们所关心的只是与自身应用相关的开发部署运维管理,对应用的管理也变成了只是一条指令或者一个按钮就可以完成的事情。PaaS 云平台也都将其作为服务提供给我们,开箱即用。其次,PaaS 云还将系统冗余变成了常规功能。


PaaS 云将底层的基础运行环境标准化为容器,缩短了代码开发到应用部署所花费的时间,降低了软件开发运维的成本


云原生的架构平台,增加了高可用性,更好的扩展性,同时打造了一体化的监控体系。基于微服务的业务设计,将基础服务原子化,部署方式灵活且响应速度快、迭代周期短。


发布于: 刚刚阅读数: 7
用户头像

InfoQ签约作者 2018-11-30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
ARTS打卡第四周_ARTS 打卡计划_穿过生命散发芬芳_InfoQ写作社区