Flatbuffers: Aplicações de alta performance

  Рет қаралды 12,370

Full Cycle

Full Cycle

Күн бұрын

Пікірлер: 26
@alcancebrasil4467
@alcancebrasil4467 Жыл бұрын
100k merecido!!! Muito conhecimento compartilhado ao longo destes anos. Saúde e Paz a toda equipe FullCycle.
@Fenderoutside
@Fenderoutside Жыл бұрын
Que saudade do response.json() já kkk
@hmstiago
@hmstiago Жыл бұрын
vim por conta da licença do game Final Fantasy XVI, PS5, que consta em seu desenvolvimento. interessantíssimo pra quem é apenas frontend flutter igual eu
@djmaiuka
@djmaiuka Жыл бұрын
Descobri este canal recentemente e estou achando os videos sensacionais. Agora dou like antes de começar a ver.
@marcosradix1
@marcosradix1 Жыл бұрын
Os conteúdos dessa canal são incríveis!!!
@douglasbordignon
@douglasbordignon Жыл бұрын
Ótimo vídeo! Parabéns Wesley Willians!
@leonardosimoes283
@leonardosimoes283 Жыл бұрын
Muito bom, obrigado
@evandrokumasaka
@evandrokumasaka Жыл бұрын
Muito interessante, veio em boa hora!
@ThiagoLuizRodrigues
@ThiagoLuizRodrigues Жыл бұрын
Estou utilizando em
@deploydesexta
@deploydesexta Жыл бұрын
Flatbuffers FTW! Genial!
@ariand.sialajulio7506
@ariand.sialajulio7506 Жыл бұрын
😍😍😍
@academicobrina
@academicobrina Жыл бұрын
Interessantíssimo para acessar informações em tempo real! Sou iniciante e queria saber como funciona com imagens, ou arquivos svg, na questão da tipagem, porque acho que vou precisar muito.
@rogeriocassares4111
@rogeriocassares4111 Жыл бұрын
Como envio estes dados para um server? Obrigado!
@rrogovski
@rrogovski Жыл бұрын
Fiquei curioso para uma implementação no client-side em uma aplicação frontend web.
@ariand.sialajulio7506
@ariand.sialajulio7506 Жыл бұрын
Aula muito boa! 100 Mil Inscritos parabens FC.
@atauadoederlein
@atauadoederlein Жыл бұрын
pô, eu tou patinando pra aprender protocol buffers e gRPC e tu me vem com mais essa kkk! Tá louco! Mas é brincadeira, pareceu bem simpĺes.
@hanterique
@hanterique Жыл бұрын
Achei muito interessante, fiquei me questionando como seria para gerenciar cenários onde precisamos lidar com muitos objetos. Exemplo: Criar 100 objetos de uma entidade produto, iterar sobre eles para verificar se o estoque é menor que 2 e depois retornar todos esses produtos com estoque menor que 2. Teríamos que criar um buffer para cada um desses 100 objetos? ou se fosse o caso desses 100 objetos forem uma resposta de uma query de banco de dados, teriamos que iterar sobre o resultando convertendo buffers? me parece que ficaria muito verboso, ou tem uma forma/padrão para lidar com esses pontos ? 🤔🤔🤔🤔🤔 outra coisa, como não tem alocação de memória se foi necessário criar uma variável buf para acessar os dados? além de ter criado um builder. o builder guarda por um indice de referencia qualquer modelos que definirmos?
@ThiagoRafaelFerreira
@ThiagoRafaelFerreira Жыл бұрын
O buffer em si não deixa de ser um memória, é uma área dentro da memória RAm, mas ela tem alto desempenho, pois a finalidade é para troca de informação. O que ele quer dizer é que não a parte da memória ram que tem mais capacidade e é um pouco mais lenta assim por dizer. Os objetos voce teria caso serializasse do json para os teus objetos, o que teria a mais seria os namespaces a serem criados acho eu que para todos os objetos.
@LucasRodriguesInkeliz
@LucasRodriguesInkeliz Жыл бұрын
(Nota: cai nesse vídeo por que estava pensando outra coisa, não assisti o vídeo). O Flatbuffers é um serializador "in-place", o fato de "não alocar memoria" é porque você consegue ler os dados em criar novos dados. Por exemplo, imagina esta estrutura de dados: {"a": 123, "b": [1,128,52]}. Tipicamente um decodificador de JSON não vai lhe permitir acessar o valor "128" diretamente, porque? (ignorando que JSON é string, isto é outro problema), mas, o motivo é que não há um alinhamento padrão na estrutura, isso indica que você tem duas opções: iterar por tudo e tentar buscar o que quer ler, ou deserializar tudo para uma outra estrutura. Ou seja, no final, você vai criar um Objeto/Class/Struct equivalente à struct { a: u8 b: []u8}. Agora, para ler esse struct/class/objeto você teve que copiar as informações do JSON para lá. O Flatbuffers, Karmem, Cap'n'Proto (...) funcionam diferente, sendo "in-place". Ou seja, o local de memoria que alocou para carregar a estrutura de dados (considere: 123, 3, *3, 1, 128, 52). Se quiser ler o segundo item do vetor basta ir até o "ponteiro"/offset (neste caso *3), logo poderá fazer 3+2 e pegar o 5 item do vetor (128). E como você sabe onde está o ponteiro? Porque no IDL descreve a estrutura, e ele está num local conhecido antecipadamente (sem decodificar nada). PS: Eu considerei que tudo é u8, para simplificar, na realidade a codificação é mais complexa, mas a ideia é a mesma. Ou seja: você leu sem alocar memoria adicional. Em relação a ser "verboso" isso é "normal", afinal você está lendo dados de forma distinta de como a sua linguagem qualquer representa os dados da memoria (diferentes ABIs, basicamente).
@caduluzan
@caduluzan Жыл бұрын
Aula matinal 😊
@hugoleo2000
@hugoleo2000 Жыл бұрын
Não vi Object Pascal nas opções de compilação :(
@leovibeart
@leovibeart Жыл бұрын
Akita
@ciroformenton
@ciroformenton Жыл бұрын
Pqp!
@jricardoprog
@jricardoprog Жыл бұрын
O louco meu! Não tem lógica nenhuma isso. Só vai ser mais rápido se você não usar todos os dados do objeto. Afinal, tudo que você lê sai da memória do buffer e foi transformado para a memória da variável.
@LucasRodriguesInkeliz
@LucasRodriguesInkeliz Жыл бұрын
Depende do que considere como "transformado". Ele de fato é muito mais rápido para leituras parciais e random-access. Mas, mesmo se ler todos os campos você não terá que recriar uma estrutura auxiliar. Se você tem, por exemplo, um json de `[1,2,3,4,5.....]`, se você desearializar você tem criar um vetor auxiliar, TIPICAMENTE, ou seja, agora você tem na memoria o json original e um outro []u64. Daqui você já se fudeu duas vezes: converteu string para int e teve que usar mais memoria (ou alocar, que é pior). E depois, poderá fazer operação sobre tais valores. Com o Flatubuffers, Cap'n'Proto, Karmem (...), você ler valor a valor, ou seja, você pode fazer GetAt(i) e irá copiar apenas 8bytes para o stack (que pode ser otimizado) ou, em outros sistemas (Karmem), você vai ter um []uint64, mas esse vetor é literalmente um ponteiro para onde está o dado serializado, sem qualquer copia ou transformação. Logo, mesmo que nos dois cenários você leia todos os numeros, o "zero-copy" evita todas as transformações e uso de memoria auxiliar. Ou seja, "ele não sai de la", ele é lido de lá.
CQRS + Event Sourcing: A introdução que você precisava
30:18
Full Cycle
Рет қаралды 12 М.
Learn React Router v6 In 45 Minutes
46:20
Web Dev Simplified
Рет қаралды 565 М.
Smart Sigma Kid #funny #sigma
00:14
CRAZY GREAPA
Рет қаралды 93 МЛН
бабл ти гель для душа // Eva mash
01:00
EVA mash
Рет қаралды 6 МЛН
HELP!!!
00:46
Natan por Aí
Рет қаралды 33 МЛН
Миллионер | 2 - серия
16:04
Million Show
Рет қаралды 1,9 МЛН
Go Lang: Go routines e channels. O que você precisa que saber
1:04:24
Backend for Frontend (BFF) em 20 minutos
19:17
Full Cycle
Рет қаралды 14 М.
Protocol Buffers Crash Course
36:07
Hussein Nasser
Рет қаралды 250 М.
React Query Full Course (With Common Patterns & Best Practices)
32:42
Youssef Benlemlih
Рет қаралды 1,1 М.
Lightning Talk: FlatBuffers
5:49
Google for Developers
Рет қаралды 19 М.
Server-Sent Events (SSE): Comunicação em tempo real
34:39
Full Cycle
Рет қаралды 16 М.
Microsserviços: O que restou. Erros e acertos
22:57
Full Cycle
Рет қаралды 58 М.
Trabalhe com mensageria do jeito certo. Rabbit, Kafka, etc...
30:29
Smart Sigma Kid #funny #sigma
00:14
CRAZY GREAPA
Рет қаралды 93 МЛН