Diário DSA e Jornal de Design de Sistemas – 3

Olá, continuo minha jornada de aprendizado diário, concentrando -me nos conceitos de design do sistema (através do roteiro de design do roteiro. Este é o dia 3! 🏗 Design do sistema: Latência vs. Taxa de transferência O conceito de design do sistema hoje mergulha em duas métricas cruciais para entender o desempenho do sistema: latência e taxa de transferência. ⚡ Latência Este é o tempo que leva para um sistema responder a uma única solicitação. Pense como: “Quanto tempo leva para obter uma resposta?” Geralmente medido em milissegundos (ms) ou microssegundos (µs) alta latência → tempos de resposta mais lentos causas: atrasos na rede, consultas de banco de dados lentas, código ineficiente 📊 Taxa de transferência Este é o número de solicitações que um sistema pode lidar em um determinado período. Pense em ele como: “Quantas perguntas você pode responder a um minuto?” Medido em solicitações por segundo (RPS) ou transações por segundo (TPS) de baixa taxa de transferência → Sistema que não lida com muitas solicitações limitadas por: largura de banda, CPU/capacidade de memória, algoritmos ineficientes 🔄 Relação entre eles melhorando a taxa de transferência nem sempre reduz a latência e vice-versa. Às vezes, otimizar para um pode afetar negativamente o outro. O equilíbrio certo depende dos requisitos do seu sistema. ☕ Exemplo: Latência da cafeteria: o tempo que leva para um barista fazer uma xícara de café. Tribunal: O número de xícaras de café que a loja pode servir por hora. Reduza a latência → Compre uma máquina de café expresso mais rápida. Aumente a taxa de transferência → Contrate mais baristas. 💭 Meus pensamentos Estou começando a ver como esses conceitos moldam sistemas eficientes e escaláveis. Não se trata apenas de fazer as coisas “rápido”, mas também garantir que os sistemas possam lidar com grandes volumes de solicitações sem quebrar. Ser capaz de identificar gargalos e trade-offs é essencial no design do sistema! 💻 Desafio DSA: Combinação regular de expressão depois de envolver minha cabeça em torno da latência e taxa de transferência, troquei de engrenagens para um desafio de código de leetcode: 10. correspondência regular de expressão. ⏳ Tempo gasto: ~ 3 horas Esse problema definitivamente me estendeu – Recursão + Regex correspondência não é brincadeira! 🔎 Entendendo o problema. → corresponde a qualquer caractere único * → corresponde a zero ou mais do elemento anterior que a correspondência deve cobrir toda a string 🧩 Minha abordagem: Recursão Eu usei a recursão para simular o processo de correspondência. Função auxiliar: corresponder (i, j) → verifica se s[i:] corresponde p[j:]

Caso base: se o padrão p estiver vazio, s também deve estar vazio casos recursivos: se o próximo padrão char for *, duas opções: 1. Pule ` *` (zero corresponda) 2. Se primeiro char corresponde, consuma um char de `s` s ‘e recorde a solução de tela inteira: o modo de tela full stract (stract stract) e stract): sstmatt sstrats sstrip string string string string: o modo de tela full: sstmat: sstmatch sstrat): o modo de linha full: Match (i, j): se j == len (p): retornar i == len (s) primeiro_match = i Fonte

Você pode ter perdido