Successfully reported this slideshow.
Your SlideShare is downloading. ×

Go meetup 2015 04-23

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
mri ruby GC
mri ruby GC
Loading in …3
×

Check these out next

1 of 29 Ad
Advertisement

More Related Content

Recently uploaded (18)

Advertisement

Go meetup 2015 04-23

  1. 1. Go в Спутник.Картах В бою
  2. 2. Go в Спутник.Картах В бою
  3. 3. Тайловый бэкенд Gopnik =)
  4. 4. Тайловый бэкенд - Карта состоит из тайлов
  5. 5. Тайловый бэкенд
  6. 6. Тайловый бэкенд - Карта состоит из тайлов - Используются различные источники данных
  7. 7. Тайловый бэкенд
  8. 8. Тайловый бэкенд - Карта состоит из тайлов - Используются различные источники данных - Используется специализированная библиотека Mapnik (написана на C++) - Генерация тайлов занимает существенное время
  9. 9. Тайловый бэкенд - Часть тайлов генерируется заранее в пакетном режиме - Часть - по требованию
  10. 10. Тайловый бэкенд
  11. 11. Open Source http://sputnik-maps.github.io/
  12. 12. Поиск объектов реального мира
  13. 13. Особенности :-) - Учитывает особенности строения адресного пространства (вложенность объектов) - “Угадывает мысли” (учитывает подразумеваемый контекст) - Различает “близко” и “далеко”, “большой” и “маленький”
  14. 14. Особенности :-( - Много деталей, специфичных только для России
  15. 15. Обратный геокодер - Преобразует координаты в адрес - Используется порт библиотеки S2 https://github.com/golang/geo
  16. 16. Архитектура
  17. 17. Архитектура - Относительно небольшая коллекция данных (входит в оперативную память) - Компоненты – простые веб-сервисы - MVC-like (✿◠‿◠)
  18. 18. Что нам дает Go
  19. 19. Что нам дает Go - Скорость разработки - Простота обучения - Тестируемый код
  20. 20. Что нам дает Go - Скорость выполнения - Скорость компиляции - Стандартная библиотека - Tools gofmt, gorename, cover, pprof, expvar gotype, golint, vet, errcheck
  21. 21. Трудности (╯°□°)╯︵ ┻━┻
  22. 22. Gob - gob http://blog.golang.org/gobs-of-data http://golang.org/pkg/encoding/gob - не быстрый - const tooBig = 1 << 30
  23. 23. Сторонние библиотеки :-( - писать биндинги С++ ↔ Go непросто - segfault безжалостен :-) - изолированные процессы - RPC
  24. 24. Данные в памяти и GC - Хранишь миллионы объектов – GC придет за тобой - длительность stop-the-world пропорциональна количеству указателей в heap
  25. 25. Данные в памяти и GC
  26. 26. Данные в памяти и GC Где прячутся указатели - указатели - мапы - слайсы - строки - интерфейсы - ...
  27. 27. Данные в памяти и GC Как уменьшить длительность stop-the-world - индекс массива вместо указателей - строки положить в один большой []byte type PString struct { Offset: uint32 Lenghth: uint32 }
  28. 28. Данные в памяти и GC Как уменьшить длительность stop-the-world - mmap - генерация кода с константами var data = map[string]int{ "a":1, "b":2, ...
  29. 29. package main import "fmt" func main() { c := []struct { name string email string }{ { name: "Константин Черкасов", email: "k.cherkasoff@gmail.com", }, { name: "Максим Дементьев", email: "max@orofarne.ru", }, } fmt.Println(c) }

×