в данный момент я не справляюсь с интегралами, диференциаламиМожно написать калькулятор, который умеет высчитывать интегралы, чтобы упростить себе жизнь, но это не особо легкий путь, но зато неплохо можно разобраться с алгоритмами. Большинство просто зазубривает математику, т.к. многим она и правда будет не нужна в целом почти везде такие первые курсы.
Windows 3.0про 3.0 не скажу, но во время обучения пару раз приходилось работать в ME и 2000 сервере(запускали на виртуалках), там было конечно несколько пар, сейчас не думаю что что-то поменлось, но в целом те пары для исследования чего-то были, но в целом и правда довольно сомнительная инфа что на постоянной основе работают в 3.0. Т.к. автор также пишет про компас, довольно сомнительно что там используется настолько древняя версия.
Так вот, потоки я так понял работают асинхроннозагуглите разницу между горутинами,параллельностью и асинхронностью.
Так вот, потоки я так понял работают асинхронно, а смысл тогда их юзать, если они не синхронно обрабатывают данные?js например однопоточный, т.е. если вы дадите ему просчитать 25 примеров, то он их будет считать условно 16 секунд, если использовать 16 ядер и многопоточный язык, то расчеты займут 1 секунду на каждом ядре, но будет вероятность того, что программа непотокобезопасна.
в голанге нет коллизий на почве кросс-платформенности?Со стандартной библиотекой не должно быть проблем, пользовательские пакеты иногда пишут только под определенную ОС.
Какие библиотеки/пакеты/фреймворки в "мете" в этом году?Думаю gin и fiber, первый просто обертка над стандартным http пакетом, второй над fasthttp, на мой взгляд не стоит использовать fiber просто так, т.к. вероятность ошибок немного выше, на мой взгляд стоит поглядывать в исходники пакетов, т.к. иногда внутри может быть то что вас не устраивает и иногда лучше обновить пакет под свои нужды, с популярными пакетами обычно такого не нужно делать.
Cpp не безопасным называют из-за этого?Небезопасный он из-за того, что уязвим к различным атакам по переполнению буфера и т.д. И из-за того, что нужно очищать память самому, в c++ эти уязвимости встречаются довольно часто. Железу в целом можно как угодно навредить, но в современном мире это не очень просто сделать.
package main
import (
"encoding/json"
"fmt"
"log"
)
type Entry struct {
ID string `json:"id"`
Name string `json:"name"`
}
type City struct {
ID string `json:"id"`
Name string `json:"name"`
Childrens []City `json:"childrens"`
}
func main(){
var parent = Entry{ID:"1",Name:"test"}
var child1 = Entry{ID:"1.1",Name:"test1"}
var child2 = Entry{ID:"1.2",Name:"test2"}
var AllCity []City
var NewCity City
NewCity.ID = parent.ID
NewCity.Name = parent.Name
var NewCityChild1 City
NewCityChild1.ID = child1.ID
NewCityChild1.Name = child1.Name
var NewCityChild2 City
NewCityChild2.ID = child2.ID
NewCityChild2.Name = child2.Name
NewCityChild2.Childrens = []City{{ID: "t", Name: "r", Childrens: []City{{ID: "1", Name: "1", Childrens: nil}}}}
NewCity.Childrens = append(NewCity.Childrens,NewCityChild1)
NewCity.Childrens = append(NewCity.Childrens,NewCityChild2)
AllCity = append(AllCity,NewCity)
AllCity = append(AllCity,NewCity)
b,err := json.MarshalIndent(AllCity,""," ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(b))
}
К тому же в ltree варианте гораздо дешевле и проще делать различные выборки.Если такое нужно то можно вполне сделать что-то на таком дереве https://gist.github.com/mchirico/5941451, в целом поиск можно по префиксу сделать, но сильно зависит от того какие выбрки нужно делать, если небольшие до 1к объектов, то скорее всего будет достаточно быстро работать, если больше то нужно тестить и скорее всего использовать более специализорованный алгоритм.
package main
import (
"encoding/json"
"fmt"
"log"
)
type Entry struct {
ID string `json:"id"`
Name string `json:"name"`
}
type City struct {
ID string `json:"id"`
Name string `json:"name"`
Childrens []City `json:"childrens"`
}
func main(){
var parent = Entry{ID:"1",Name:"test"}
var child1 = Entry{ID:"1.1",Name:"test1"}
var child2 = Entry{ID:"1.2",Name:"test2"}
var AllCity []City
var NewCity City
NewCity.ID = parent.ID
NewCity.Name = parent.Name
var NewCityChild1 City
NewCityChild1.ID = child1.ID
NewCityChild1.Name = child1.Name
var NewCityChild2 City
NewCityChild2.ID = child2.ID
NewCityChild2.Name = child2.Name
NewCity.Childrens = append(NewCity.Childrens,NewCityChild1)
NewCity.Childrens = append(NewCity.Childrens,NewCityChild2)
AllCity = append(AllCity,NewCity)
AllCity = append(AllCity,NewCity)
b,err := json.MarshalIndent(AllCity,""," ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(b))
}