Илья
перконовские?
Alexey
Нет, это не мы контрибьютили
Anonymous
https://github.com/go-sql-driver/mysql#load-data-local-infile-support
дык я вроде так и делаю.
db, _ = sql.Open("mysql", "root:123@/test")
stmtIns, _ = db.Prepare("INSERT t1 (с1, с2, с3, с4, с5) values (?,?,?,?,?) on duplicate key upс1 с4 = с4 + values(с4), с5 = с5 + values(с5);")
а потом читаю циклом файл построчно и делаю
stmtIns.Exec(c1,c2,c3,c4,c5)
Alexey
Эта ссылка на конкретный раздел LOAD DATA LOCAL INFILE
Alexey
А предыдущая описывает что это
Anonymous
ааа.. вот оно как.. я не то делаю.
Je
дык я вроде так и делаю.
db, _ = sql.Open("mysql", "root:123@/test")
stmtIns, _ = db.Prepare("INSERT t1 (с1, с2, с3, с4, с5) values (?,?,?,?,?) on duplicate key upс1 с4 = с4 + values(с4), с5 = с5 + values(с5);")
а потом читаю циклом файл построчно и делаю
stmtIns.Exec(c1,c2,c3,c4,c5)
как минимум нужно batch, если это нужно в приложении постоянно, а так файлом как предлагают, если единоразово
Vadim
Я тоже самое сделал после 10 минут в go flood.
Petr
Vadim
Там начали говорить про хрыча, а потом начали гробить какого-то человека. Мне не понравилось.
Vadim
Может быть я зашёл не в тот чат.
Petr
Какого? Или тебе Хрыч не понравился? )
Michael
и правда какого лешего об этом тут
Stepan
Можете пожалуйста объяснить разницу между
x := structName{} и x := &structName{}
Stepan
Я понимаю что такое указатели и как они работают
Petr
Это в туториале есть
Stepan
Меня интересует в каких случаях может быть нужен 1й вариант
Petr
с примером
Stepan
Почему мы не можем всегда ссылаться на адрес структуры
Stepan
с примером
Я возможно невнимательно смотрел, это в указателях?
Stepan
Je
стек работает быстрее кучи
Stepan
Просто я все пытаюсь в это вникнуть и что-то никак не выходит
Stepan
Смотрю сейчас на курсейре курс и они постоянно указателями обращаются
Je
Что значит напрямую? По значению можно небольшие структуры передавать, это также гарантия, что они не будут изменены
Stepan
Je
Выделяем память, кладем, сохраняем в переменную указатель, это много сложее и создает нагрузку на GC. Избегай указателей где этого можно
Vadim
Почему мы не можем всегда ссылаться на адрес структуры
Когда ты шлешь в функцию структуру или делаешь метод структуры, если ты сделал первый вариант при вызове метода/функции туда будет копироваться вся структура. А если ты записал в переменную аддрес структуры, в метод/функцию будет слаться этот адрес и после будет происходить взаимодействие с полями исходной структуры.
Stepan
Je
В го не очень любят shred state и стараются этого избегать где можно, так как это способствует трудноуловимым багам с гонками в условиях конкурентности, которую мы любим
Stepan
Vadim
С поинтерами сложнее работать gc. Также, зачем хранить ещё адрес структуры, если ты к ней будешь обращаться только локально.
Vadim
Stepan
type structName struct {
Name string
ID int
}
Stepan
Vadim
Обращение к структуре без поинтера: 1. Нашел переменную 2. Делаешь грязные дела Обращение к структуре через поинтер: 1.Обратился к переменой, которая хранит адрес. 2. Переходишь по адресу 3. Делаешь грязные дела.
Je
Stepan
Просто я хочу на пальцах понять, чтобы быть уверенным
Stepan
Stepan
Кроме офф документации
Je
Кроме офф документации
Хз, я начинал с ассемблера, может тебе стоит пройти экскурс ассемблер-Си перед го, тогда ты точно начнешь понимать цену работы с кучей
Vladimir
смотри на примере твоей структуры:
если ты передашь структуру как есть в функцию - считай что это будет копия ее
Vladimir
изменишь в рамках функции - ничего не произойдет с основной
Vladimir
если в структуре указатели - то изменится значение и в оригинальной. Если указатель на структуру - также изменится значение в оригинальной
Vladimir
почитай про указатели в учебнике по Си
Vladimir
они точно такие же везде
Stepan
Vladimir
а в чем вопрос?
Stepan
Вопрос был именно в указательном методе
Vladimir
ну и?
Stepan
Спасибо)
Stepan
ну и?
Да я не могу понять понял я или нет
Vladimir
объясни как понял
Stepan
Сейчас на всякий почитаю еще
Stepan
Ну обращение без указателя - работа с копией на стэке
Stepan
Верно?
Stepan
Это и безопаснее и быстрее как я понимаю
Je
Стек используется для передачи при вызове, далее снимается со стека и работается, не нужно говорить "работа с копией на стеке" - нет там никакой работы
Je
быстрее, если там десяток байт и входит в один регистр
Vadim
Скорость зависит от размера структуры.
Vadim
Алексей
Stepan
Как я понимаю так выгодно работать с небольшим количеством информации, верно?
Stepan
Ладно, пойду читать сишную литературу
Алексей
Вообще по указателю надо передавать только в двух случаях:
1) если надо изменить данные
2) если структура очень большая
Anonymous
Всем привет
http.DetectContentType(buffer)
для файла формата xlsx - возвращает application/zip
как еще можно проверить формат файла?
Aleksandr
так правильно показывает
Anonymous
а как проверить что это именно xlsx ?
Aleksandr
по расширению
Stepan
Stepan
Stepan
Вроде elf называлась либа, которая тебе нужна