Целую неделю вынашивал в голове идею закрыть его, написать всем пользователем мол извините, сайт закрывается.
bot = telebot.TeleBot("")
# создаем пулл из 3 соединений например
cnxpool = mysql.connector.pooling.MySQLConnectionPool(pool_name = "mypool",
pool_size = 3,
host="localhost",
user="root",
passwd="root",
port="3307",
database="youtube")
@bot.message_handler()
def route(message):
# достаем соединение из пулла
db = cnxpool.get_connection()
cursor = db.cursor();
sql = "SELECT * users"
cursor.execute(sql)
result = cursor.fetchall()
db.commit()
# закрываем соединение. оно вернется обратно в пулл
db.close()
bot.send_message(message.chat.id, "Hello world!")
ALTER TABLE table_name MODIFY column_name .....
которая уже заполнять не куда.....
да, вы можете отправить тело с GET, и нет, это никогда не полезно.
package main
import (
"fmt"
"github.com/streadway/amqp"
)
type (
IConsumer interface {
Consume() (<-chan interface{}, error)
}
AmqpConsumer struct {
conn *amqp.Connection
topic string
channel *amqp.Channel
}
)
func (pr *AmqpConsumer) Consume() (<-chan interface{}, error) {
var msgs <-chan interface{}
ch, err := pr.conn.Channel()
if err != nil {
return msgs, err
}
defer ch.Close()
amqp_msgs, err := ch.Consume(
pr.topic, // queue
"", // consumer
true, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
if err != nil {
return msgs, err
}
var castCh chan interface{}
go func() {
for msg := range amqp_msgs {
castCh <- msg
}
}()
return castCh, nil
}
func main() {
fmt.Println("Hello, playground")
}
arr = [1 , 3 , 10 , 11 , 18 , 5];
x = 2;
arr.sort((a,b) => a > b);
result = [];
currentResultIndex = 0;
result.push([]);
result[currentResultIndex].push(arr[0]);
for(let i in arr) {
if(i == 0) {
continue;
}
if(arr[i] - arr[i-1] > x) {
currentResultIndex++;
result.push([]);
}
result[currentResultIndex].push(arr[i]);
}
console.log(result);
Так что никогда не доверяйте точности чисел с плавающей запятой до последней цифры и не проверяйте напрямую их равенство. Если вам действительно необходима высокая точность, используйте математические функции произвольной точности и gmp-функции.
POST /books
Entity body
{ "title": "Ipsum", "year": 2017 }
Headers
X-HTTP-Method-Override: GET
— Оставить GET, но передавать данные (ну или их часть) не в query string, а в body запроса
<?php if (isset($login)): ?>
<div class='col-xs-6' id='login_text'>
<p class='login_text'>Здравствуйте, <?= $login ?>!</p>
</div>
<?php else: ?>
<div class='col-xs-6' id='login_text'>
<form action='' method='post' class='login' id='login'>
<label>Логин</label>
<input type='text' name='login'
value='<?= $_COOKIE[' gyppi_login'] ?? $_COOKIE['gyppi_login'] ?>' required>
<label>Пароль</label>
<input type='password' name='password'
value='<?= $_COOKIE[' gyppi_password'] ?? $_COOKIE['gyppi_password']?>'
required>
<input name='button' type='submit' value='Войти'>
</form>
<button onclick='window.location="registration.php"' class='registration' id='regbutton'>Регистрация</button>
<?php if (isset($error_message)): ?>'
<div>
<p class="error_message"><?=$error_message?></p>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
onclick='window.location="registration.php"'
package main
import (
"fmt"
"time"
)
func main() {
// задачи
tasks := make(chan int, 2)
// канал для расчета количества работающих воркеров
working := make(chan int)
// канал для остановки скрипта
done := make(chan struct{})
for i := 0; i < 2; i++ {
go func(i int) {
for x := range tasks {
working <- 1
fmt.Println(i, x)
if x >= 5 {
tasks <- x - 1
}
working <- -1
}
}(i)
}
// счетчик работающих горутин
go func() {
ticker := time.NewTicker(time.Second)
// количество работающих воркеров
var count int
for {
select {
case w := <-working:
count += w
case <-ticker.C:
if count == 0 && len(tasks) == 0 {
close(done)
}
}
}
}()
tasks <- 1
tasks <- 3
tasks <- 2
tasks <- 5
tasks <- 3
tasks <- 9
<-done
}