Skip to content

Commit

Permalink
lecture #3 added
Browse files Browse the repository at this point in the history
  • Loading branch information
Zhannur Diyas committed Jul 7, 2019
1 parent 3825044 commit 25868ac
Show file tree
Hide file tree
Showing 7 changed files with 255 additions and 25 deletions.
47 changes: 22 additions & 25 deletions content/lecture_2/01_primitive_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,35 +23,33 @@ var (
ii interface{}
)

//todo: этот файл будет обновляться в субботу
func main() {
//format your code using this shortcut
//Ctrl + Alt + L
// Cmd + Alt + L
//
//i32 = 1<<31 - 1
//ui32 = 1<<32 - 1
//
//var array = []int{5, 2, 2, 4}
//
//fmt.Printf("this is my integer: %v, %v, %v", array, 123, 123)
//
//fmt.Println("this is my unsigned int:", ui32)

i32 = 1<<31 - 1
ui32 = 1<<32 - 1

var array = []int{5, 2, 2, 4}

fmt.Printf("this is my integer array : %v", array)
fmt.Println("this is my unsigned int:", ui32)

//slice
//var runes []rune

//for i := 0; i < 100; i++ {
// runes = append(runes, 's')
//}
//
//s := "Almas"
//
//fmt.Println([]rune(s))
//
//var arr1 = []int{1, 3, -31, 5, 0}
//
//fmt.Println("initial capacity is : ", cap(arr1))
var runes []rune

for i := 0; i < 100; i++ {
runes = append(runes, 's')
}

s := "Almas"

fmt.Println([]rune(s))

var arr1 = []int{1, 3, -31, 5, 0}

fmt.Println("initial capacity is : ", cap(arr1))

i := 0
cap0 := cap(arr1)
Expand All @@ -70,7 +68,6 @@ func main() {

jar := 1233

fmt.Printf("jar is: %1000v", jar)

//Ctrl + Space (Пробел) - предложение аргументов, функций, пакетов
fmt.Printf("jar is: %1000v", jar)
}
53 changes: 53 additions & 0 deletions content/lecture_3/01_structs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package main

import (
"fmt"
)

const (
zero = 1 << (8 + iota)
one
two
three
nine
)

func main() {
d := Dog{}

d.name = "Mukhtar"
d.isReal = true
d.sound = "woof woof"

fmt.Println(d)

d.makeSound()

fmt.Println(zero)
fmt.Println(one)
fmt.Println(two)
fmt.Println(three)
fmt.Println(nine)
}

type Animal struct {
name string
sound string
isReal bool
}

type Dog struct {
Animal
}

func (a *Animal) makeSound() {
fmt.Println(a.sound)
fmt.Println(a.sound)
fmt.Println(a.sound)
}

func (d *Dog) makeSound() {
fmt.Println(d.sound + " POLYMORPHISM " + d.sound)
fmt.Println(d.sound + " POLYMORPHISM " + d.sound)
fmt.Println(d.sound + " POLYMORPHISM " + d.sound)
}
27 changes: 27 additions & 0 deletions content/lecture_3/02_map.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package main

import "fmt"

//maps in go are hashmaps

func main() {
m := make(map[string]string)
//декларация #2
//var m2 = map[string]string{}

m["vasya"] = "123213"
m["kolya"] = "321321"
m["petya"] = "424242"
m["egor"] = "000000"

//foreach
for key, value := range m {
fmt.Println(key + " " + value)
}

//проверка есть ли значение в map
if val, ok := m["kolya"]; ok {
fmt.Println("val is : ", val)
}

}
55 changes: 55 additions & 0 deletions content/lecture_3/03_pool.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package main

import "fmt"

func main() {
//аллоцировали память для структуры ConnectionPool
connectionPool := ConnectionPool{}

//проинициализировали его пятью соединениями
connectionPool.init(5)

userId1 := "qwe123"
userId2 := "qwe124"
userId3 := "qwe125"

//3 наших юзера с разными userId забрали по соединению
connectionPool.getConnection(userId1)
connectionPool.getConnection(userId2)
connectionPool.getConnection(userId3)

//print должен показывать 2 свободных и 3 занятых соединения
fmt.Println(connectionPool)

connectionPool.returnConnection(userId1)

//print должен показывать 3 свободных и 2 занятых соединения
fmt.Println(connectionPool)
}

type ConnectionPool struct {
//connection -> user_id
connections map[Connection]string
// Connectionx1 -> "qwe123"
// Connectionx2 -> "qwe124"
// Connectionx3 -> "qwe125"
}

type Connection struct {
Id string

//"50" - 50 секунд
Timeout string
}

func (c *ConnectionPool) getConnection(userId string) Connection {
panic("implement me!")
}

func (c *ConnectionPool) returnConnection(userId string) {
panic("implement me!")
}

func (c *ConnectionPool) init(size int) {
panic("implement me!")
}
38 changes: 38 additions & 0 deletions content/lecture_3/bubble_sort.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package main

import (
"fmt"
"math/rand"
"time"
)

func main() {
var sortThis []int

n := 400

for i := 0; i < n; i++ {
sortThis = append(sortThis, rand.Intn(100))
}

fmt.Println(sortThis)

bubbleSort(sortThis)

fmt.Println(sortThis)
}

func bubbleSort(values []int) {
startTime := time.Now()

for i := 0; i < len(values)-1; i++ {
for j := i + 1; j < len(values); j++ {
if values[j] < values[i] {
values[j], values[i] = values[i], values[j]
}
}
}

dif := time.Since(startTime)
fmt.Println(dif)
}
39 changes: 39 additions & 0 deletions content/lecture_3/deck_of_cards.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package main

import (
"fmt"
"math/rand"
)

func main() {
deck := Deck{
cards: []Card{
{"Туз", "Пики"},
{"Дама", "Треф"},
{"Король", "Буби"},
{"Шестерка", "Черви"},
},
}

fmt.Println(deck)

deck.shuffle()

fmt.Println(deck)
}

type Card struct {
value string
colour string
}

type Deck struct {
cards []Card
}

func (d *Deck) shuffle() {
for i := len(d.cards) - 1; i > 0; i-- {
j := rand.Intn(len(d.cards) - 1)
d.cards[i], d.cards[j] = d.cards[j], d.cards[i]
}
}
21 changes: 21 additions & 0 deletions content/lecture_3/homework.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
### Домашка #3

------------------------

* Закончить [connection pool](03_pool.go)

Что произойдет если пользователь запрашивает соединение, а пул соединений пуст?

Что произойдет если для пользователя в данный момент нет свободного соединения?

Добавить возможность расширять пул __динамически__. К примеру, если все 5 соединений заняты в данный момент, увеличить пул соединений в 2 раза.

Что произойдет если 2 пользователя одновременно запросят соединение?

----------------------------
* Задача на композицию.

Создать структуру птицы. Для птицы структуру крыла и хвоста. Крыло должно иметь поле длина и площадь. Хвост должен иметь длину и ширину. Помимо этого, у птицы должны быть поля окрас и вес.

Создать несколько птиц с разными характеристиками используя разные инициализации.
______

0 comments on commit 25868ac

Please sign in to comment.