解题思路
思路
滑动窗口问题主要可以解决子数组的问题,比如寻找某刻条件的最长或最短的子数组。维护一个窗口,不断滑动,考虑好扩充窗口和缩小窗口的条件,一般向右边界用于扩充,左边界用于缩小。这样时间复杂度是O(N),因为可以通过一次遍历所有窗口的数据
12345678910left = 0right = 0whil...
背景双指针法基本都是应用在数组,字符串与链表的题目上,通过两个指针减少算法复杂度。将部分题目和解法放在下面,作为回顾
09-字符串-回文数
题目描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 1...
前言由于重度拖延症,设计Logo的计划一直没有付诸实践。现在重新开始写博客,我决定以博客的favicon作为第一个设计Logo的尝试。
图标网格步骤
创建一个24x24的画布。
使用钢笔工具画出对角线。
绘制一个18x18的正方形和两个16x20的矩形,并将圆角调整为2。
画一个19x19圆,并与矩形对齐。
画两条中线,统一调整宽度为0.05,颜色设为红色。
画一个10x10的小圆。
画两条...
1. 数据结构和算法1.1 在微服务架构中遇到过哪些挑战?
服务间通信的问题:在微服务架构中,各个服务之间要进行相互的通信,服务间通信的可靠性,延迟和错误处理都需要考虑
解决方案:
通过API网关来进行路由请求的管理
消息队列:通过消息队列进行异步通信
通信失败后的重试机制
数据一致性:在分布式的系统中保证数据一致性比较复杂
解决方案:
最终一致性:而不是强一致性,通过异步处...
什么是系统设计
系统设计是一个定义系统架构,模块,接口和数据满足特定需求的过程
比如设计一个短网址服务,评论服务,Feed流系统,抢红包服务
微服务架构很多系统被按照业务拆分,需要单独设计一个系统服务
系统设计需要掌握哪些知识
需要具备相关领域,算法的经验,有一定的架构设计能力
熟悉后端技术组件,比如消息队列,缓存,数据库,框架
具备文档撰写,流程图绘制,架构设计,编码实现等综合能力
系...
WSGI(Python Web Server Gateway Interface)PEP 3333 – Python Web Server Gateway Interface v1.0.1
描述了Web Server(gunicorn/uWSGI)如何与web框架交互(Flask, Django),web框架如何处理请求
123456789def application(en...
MySQL的事务(Transaction)
事务是数据库并发控制的基本单位
事务可以看作是一系列SQL语句的集合
事务必须全部执行成功,或者全部执行失败
事务的四个基本特性ACID
原子性(Atomicity):一个事务中所有的操作全部完成或失败
一致性(Consistency):事务开始和结束之后的数据完整性没有被破坏
隔离性(Isolation):允许多个事务同时对数据库进行修改和读写...
浏览器输入一个url中间经历的过程
中间涉及到了哪些过程
包含哪些网络协议
每个协议都干了什么
URL 解析
浏览器解析用户输入的 URL,拆分出协议、主机名、端口、路径、查询参数等部分。
检查浏览器缓存
浏览器首先检查本地缓存是否有对应的资源,如果有且未过期,直接返回缓存内容。
DNS 解析
DNS 缓存检查:浏览器检查本地 DNS 缓存、操作系统缓存、路由器缓存等。
H...
Linux命令查询命令的用法
man命令
1man tar
–help参数
1pip --help
tldr
tldr-pages
文件/目录操作命令
chown/chmod/chgrp
ls/rm/cd/cp/mv/touch/rename/ln(软链接和硬链接)
loc...