Flatbuffers: Aplicações de alta performance

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

Full Cycle

Full Cycle

Күн бұрын

Пікірлер: 27
@alcancebrasil4467
@alcancebrasil4467 Жыл бұрын
100k merecido!!! Muito conhecimento compartilhado ao longo destes anos. Saúde e Paz a toda equipe FullCycle.
@marcosradix1
@marcosradix1 Жыл бұрын
Os conteúdos dessa canal são incríveis!!!
@djmaiuka
@djmaiuka Жыл бұрын
Descobri este canal recentemente e estou achando os videos sensacionais. Agora dou like antes de começar a ver.
@Fenderoutside
@Fenderoutside Жыл бұрын
Que saudade do response.json() já kkk
@douglasbordignon
@douglasbordignon Жыл бұрын
Ótimo vídeo! Parabéns Wesley Willians!
@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
@leonardosimoes283
@leonardosimoes283 Жыл бұрын
Muito bom, obrigado
@evandrokumasaka
@evandrokumasaka Жыл бұрын
Muito interessante, veio em boa hora!
@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.
@ariand.sialajulio7506
@ariand.sialajulio7506 Жыл бұрын
Aula muito boa! 100 Mil Inscritos parabens FC.
@AngeloMigueldaSilvaHank
@AngeloMigueldaSilvaHank 2 ай бұрын
Como o flatbuffer trata o caso de falha na comunicação? o buffer é limpo ou é passada a informação conforme ele recebeu em partes? Isso num contexto de threads, etc
@caduluzan
@caduluzan Жыл бұрын
Aula matinal 😊
@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.
@rrogovski
@rrogovski Жыл бұрын
Fiquei curioso para uma implementação no client-side em uma aplicação frontend web.
@ThiagoLuizRodrigues
@ThiagoLuizRodrigues Жыл бұрын
Estou utilizando em
@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).
@rogeriocassares4111
@rogeriocassares4111 Жыл бұрын
Como envio estes dados para um server? Obrigado!
@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á.
Microsserviços: O que restou. Erros e acertos
22:57
Full Cycle
Рет қаралды 58 М.
Vim Tips I Wish I Knew Earlier
23:00
Sebastian Daschner
Рет қаралды 87 М.
Counter-Strike 2 - Новый кс. Cтарый я
13:10
Marmok
Рет қаралды 2,8 МЛН
Wednesday VS Enid: Who is The Best Mommy? #shorts
0:14
Troom Oki Toki
Рет қаралды 50 МЛН
Lightning Talk: FlatBuffers
5:49
Google for Developers
Рет қаралды 19 М.
Protocol Buffers Crash Course
36:07
Hussein Nasser
Рет қаралды 258 М.
Go Lang: Go routines e channels. O que você precisa que saber
1:04:24
SOLID fica FÁCIL com Essas Ilustrações
19:46
Filipe Deschamps
Рет қаралды 345 М.
Microsserviços, banco de dados e relatórios
28:41
Full Cycle
Рет қаралды 14 М.
Melhorando a performance de uma API em Go #rinhaDeBackend
24:40
Filho da nuvem
Рет қаралды 31 М.
x86 Assembly: Hello World!
14:33
John Hammond
Рет қаралды 1,4 МЛН
Fast Inverse Square Root - A Quake III Algorithm
20:08
Nemean
Рет қаралды 5 МЛН
Game On! - Flatbuffers
4:51
Google for Developers
Рет қаралды 36 М.
Design Pattern: Como arquitetar uma aplicação multi-tenant
15:28
Counter-Strike 2 - Новый кс. Cтарый я
13:10
Marmok
Рет қаралды 2,8 МЛН