mysql

详细分析 Java 中实现多线程的方法有几种?(从本质上出发)

独自空忆成欢 提交于 2021-02-16 13:07:01
目录 详细分析 Java 中实现多线程的方法有几种?(从本质上出发) 正确的说法(从本质上出发) 经典错误说法(从本质上出发) 详细分析 Java 中实现多线程的方法有几种?(从本质上出发) 正确的说法(从本质上出发) 实现多线程的官方正确方法: 2 种。 Oracle 官网的文档说明 方法小结 方法一: 实现 Runnable 接口。 方法二: 继承 Thread 类。 代码示例 /** * <p> * 实现 Runnable 接口的方式创建线程 * </p> * * @author 踏雪彡寻梅 * @version 1.0 * @date 2020/9/7 - 00:34 * @since JDK1.8 */ public class RunnableStyle implements Runnable { @Override public void run () { System.out.println( "用 Runnable 方式实现线程~~~" ); } public static void main (String[] args) { Thread thread = new Thread( new RunnableStyle()); thread.start(); } } /** * <p> * 继承 Thread 类的方式创建线程 * </p> * * @author

how to use WHERE IN mysql stored procedure

时光怂恿深爱的人放手 提交于 2021-02-16 13:04:00
问题 How do I pass an array and use WHERE IN inside stored procedure? Do i need to concatenate input string or something ? Lets say DELIMITER $$ DROP PROCEDURE IF EXISTS `abc`.`table1`$$ CREATE PROCEDURE `abc`.`test` (IN somestring VARCHAR(255)) BEGIN SELECT * FROM abc.table1 WHERE flight_type IN somestring END $$ DELIMITER ; 回答1: You can use the string concatenation and the PREPARE statement to run dynamically built queries. somestring must be constructed in a valid SQL format like '1','2','3'

how to use WHERE IN mysql stored procedure

元气小坏坏 提交于 2021-02-16 13:02:44
问题 How do I pass an array and use WHERE IN inside stored procedure? Do i need to concatenate input string or something ? Lets say DELIMITER $$ DROP PROCEDURE IF EXISTS `abc`.`table1`$$ CREATE PROCEDURE `abc`.`test` (IN somestring VARCHAR(255)) BEGIN SELECT * FROM abc.table1 WHERE flight_type IN somestring END $$ DELIMITER ; 回答1: You can use the string concatenation and the PREPARE statement to run dynamically built queries. somestring must be constructed in a valid SQL format like '1','2','3'

信安周报-第04周:系统函数与UDF

亡梦爱人 提交于 2021-02-16 12:32:55
信安之路 第04周 前言 这周自主研究的任务如下: 附录解释: SQLi的时候应对各种限制,可以使用数据库自带的系统函数来进行一系列变换绕过验证 eg:字符串转换函数、截取字符串长度函数等 注入的时候需要利用数据库来执行系统命令,不同数据库采用不同方式 eg:MySQL的 udf 、SQLServer的 xp_cmdshell 可以手动构造一些可以利用数据库执行命令的场景,然后进行渗透,从而理解这个提权过程 1.系统函数 参考文档: MySQL函数 https://dev.mysql.com/doc/refman/5.7/en/functions.html 1.1.字符串函数 在MySQL中最常用的当属字符串相关的函数了: PS: 哪个用法不清楚就直接 help xx 函数名 说明 lower(str) 把字符串转换为小写 upper(str) 把字符串转换为大写 ltrim(str) 去除字符串左边空格 rtrim(str) 去除字符串右边空格 trim([remove_str from ]str) 去除字符串两端空格或指定字符 reverse(str) 反转字符串 length(str) 返回字符串的存储长度 char_length(str) 返回字符串的字符个数 instr(str,substr) 返回substr第一次出现的位置 left(str,n) 返回字符串前n个字符

安装完 MySQL 后必须调整的 10 项配置

狂风中的少年 提交于 2021-02-16 12:26:50
当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议。许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项。这篇文章的目的在于给你一份非常重要的配置项清单。 我们曾在几年前在博客里给出了这样的 建议 ,但是MySQL的世界变化实在太快了! 写在开始前… 即使是经验老道的人也会犯错,会引起很多麻烦。所以在盲目的运用这些推荐之前,请记住下面的内容: 一次只改变一个设置!这是测试改变是否有益的唯一方法。 大多数配置能在运行时使用SET GLOBAL改变。这是非常便捷的方法它能使你在出问题后快速撤销变更。但是,要永久生效你需要在配置文件里做出改动。 一个变更即使重启了MySQL也没起作用?请确定你使用了正确的配置文件。请确定你把配置放在了正确的区域内(所有这篇文章提到的配置都属于 [mysqld]) 服务器在改动一个配置后启不来了:请确定你使用了正确的单位。例如,innodb_buffer_pool_size的单位是MB而max_connection是没有单位的。 不要在一个配置文件里出现重复的配置项。如果你想追踪改动,请使用版本控制。 不要用天真的计算方法,例如”现在我的服务器的内存是之前的2倍,所以我得把所有数值都改成之前的2倍“。 基本配置 你需要经常察看以下3个配置项。不然,可能很快就会出问题。 innodb

Mycat高可用解决方案三(读写分离)

心不动则不痛 提交于 2021-02-16 11:51:23
Mycat高可用解决方案三(读写分离) 一、系统部署规划 名称 IP 主机名称 配置 Mycat 主机 01 192.168.199.112 mycat01 2 核 /2G Mysql 主节点 192.168.199.110 mysql01 2 核 /2G Mysql 从节点 192.168.199.111 mysql02 2 核 /2G 二、软件版本: 进入下载列表地址: http://dl.mycat.io MySQL 版本:mysql- 5.7. 9 下载地址: https://downloads.mysql.com/archives/get/file/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz JDK版本:jdk1. 7 下载地址: http://dl.mycat.io/jdk-7u79-linux-x64.tar.gz 备用jdk1.8 下载地址: http://dl.mycat.io/jdk-8u20-linux-x64.tar.gz mycat版本: 1.6. 5 下载地址: http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz https://github.com/MyCATApache/Mycat-Server

MySQL主从复制与主主复制

你离开我真会死。 提交于 2021-02-16 11:38:31
阅读目录 1、简介 2、环境说明 3、主从复制 3.1、MySQL 3.2、配置文件 3.3、开始构建主从复制 3.4、测试主从复制 4、MySql主主复制 4.1、实现原理 4.2、配置文件 4.3、开始构建主主复制 4.4、测试主主复制 5、注意事项 回到顶部 1、简介 MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一。但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器(这篇博客暂时不涉及)。在此之前我们必须要保证每台MySQL服务器里的数据同步。数据同步我们可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。 回到顶部 2、环境说明 两台linux虚拟主机 Linux版本CentOS6.6、MySQL 5.5 ip:192.168.95.11、192.168.95.12 回到顶部 3、主从复制 回到顶部 3.1、MySQL 已经安装好,并且没有任何数据 回到顶部 3.2、配置文件 一般Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件为mysql.ini) log-bin=mysql-bin 开启二进制日志 注意:二进制日志必须开启

Mysql 5.7 主从复制

与世无争的帅哥 提交于 2021-02-16 11:38:12
Mysql 5.7 版本主从复制 准备事项 确保两台服务器的Mysql版本一致 (本文是5.7); 明确两台服务器IP master : 192.168.33.10 slave : 192.168.33.11 要保证防火墙3306端口开放 配置master 修改配置文件 /etc/mysql/mysql.conf.d/mysql.cnf (根据自己安装的路径 如: /etc/my.cnf) 1 [ mysqld ] 2 log - bin = mysql - bin 3 server - id = 1 4 binlog - ignore - db = information_schema 5 binlog - ignore - db = performance_schema 6 binlog - ignore - db = sys 7 binlog - ignore - db = mysql 8 binlog - do - db = test 其中 log -bin 是日志类型(前缀) server -id = 1 是用于标识唯一的数据库,在从库必须设置为不同的值 binlog -ignore -db 表示同步的时候忽略的数据库    binlog -do -db 指定需要同步的数据库 重启Mysql sudo service mysql restart 进入mysql,mysql

MySQL 5.7主从复制

*爱你&永不变心* 提交于 2021-02-16 11:37:29
https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-howto.html GTID(GlobalTransaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。 设置gtid模式,在my.cnf里面的mysqld选项卡里面设置,设置完后,重启mysql服务生效: [mysqld] gtid_mode=ON log-slave-updates=ON enforce-gtid-consistency=ON mysql> change master to master_host=‘主库IP', master_port=主库端口, master_user='repl', master_password=‘repl密码', master_auto_position=1 ; mysql> start slave; PS:其中这里有差别,以前非gtid的是用master_log_file='mysql-bin.000009',master_log_pos=154;而gtid就采用了master_auto_positon=1;来自动同步主库的binlog了。

让mysql支持emoji表情

好久不见. 提交于 2021-02-16 11:07:32
什么是emoji emoji就是表情符号 emoji的创造者是日本人栗田穰崇(Shigetaka Kurita) 在数据库的编码不为 utf8mb4 ,利用java mysql驱动保存含有表情符号的数据会出现异常 java.sql.SQLException: Incorrect string value: '\xF0\x9F\x94\xA5' for column mysql中存储emoji表情符号 以前做应用软件的时候 通常把 mysql 的字符编码设置为 utf-8 ,但是这个编码却不支持 emoji 表情 是因为 utf-8 编码的一个字符最多只能存储3个字节,但一个emoji表情为4个字节,所以utf8不支持存储emoji表情。 mysql中的 utf8mb4 却能支持 emoji 表情符号 所以我们只需要更改mysql的数据库编码格式为 utf8mb4 就能支持了。 当然了表和字段也需要是这个编码的,在不手动设置表/字段编码的情况下,会默认继承数据库的编码格式 。如果手动修改为字段或者表的编码 也需要手动把表和字段修改为 utf8mb4 物理机安装的数据库数据字符编码修改方式 修改 mysql 的配置文件 /etc/mysql/my.cnf 并重启数据库 如果是编译安装 有可能不是这个目录噢~ [mysql] default-character-set=utf8mb4