王新阳

wangxinyang

MYSQL变量的查看与修改

mysql变量存储位置:
information_schema.GLOBAL_VARIABLES
information_schema.SESSION_VARIABLES

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

以下来源:https://wenku.baidu.com/view/f1a28bfa5322aaea998fcc22bcd126fff7055d69.html

MySQL的变量分为以下两种:
1)系统变量:配置MySQL服务器的运⾏环境,可以⽤show variables查看
2)状态变量:监控MySQL服务器的运⾏状态,可以⽤show status查看
系统变量系统变量按其作⽤域的不同可以分为以下两种:
1)分为全局(GLOBAL)级:对整个MySQL服务器有效
2)会话(SESSION或LOCAL)级:只影响当前会话
有些变量同时拥有以上两个级别,MySQL将在建⽴连接时⽤全局级变量初始化会话级变量,但⼀旦连接建⽴之后,全局级变量的改变不会影响到会话级变量。
查看系统变量的值
可以通过show vairables语句查看系统变量的值:
[sql]
mysql> show variables like 'log%';
mysql> show variables where Variable_name like 'log%' and value='ON';
注意:show variables优先显⽰会话级变量的值,如果这个值不存在,则显⽰全局级变量的值,当然你也可以加上GLOBAL或SESSION关键字
区别:
[sql]
show global variables;
show session/local variables;

修改系统变量的值:
在MySQL服务器启动后,如果需要修改变量的值,可以通过SET语句:
SET GLOBAL var_name = value;
SET @@GLOBAL.var_name = value;
SET SESSION var_name = value;
SET @@SESSION.var_name = value;
如果在变量名前没有级别限定符,表⽰修改会话级变量。
注意:和启动时不⼀样的是,在运⾏时设置的变量不允许使⽤后缀字母'K'、'M'等,但可以⽤表达式来达到相同的效果,如:
[sql] SET GLOBAL read_buffer_size = 2*1024*1024
这⾥⼀个容易把⼈搞蒙的地⽅是如果查询时使⽤的是show variables的话,会发现设置好像并没有⽣效,这是因为单纯使⽤show variables的话就等同于使⽤的是show session variables,查询的是会话变量,只有使⽤show global variables,查询的才是全局变量。
⽹络上很多⼈都抱怨说他们set global之后使⽤show variables查询没有发现改变,原因就在于混淆了会话变量和全局变量,如果仅仅想修改会话变量的话,可以使⽤类似set wait_timeout=10;或者set session wait_timeout=10;这样的语法。
状态变量
状态变量可以使我们及时了解MySQL服务器的运⾏状况,可以使⽤show status语句查看。
状态变量和相同变量类似,也分为全局级和会话级,show status也⽀持like匹配查询,⽐较⼤的不同是状态变量只能由MySQL服务器本⾝设置和修改,对于⽤户来说是只读的,不可以通过SET语句设置和修改它们。

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

以下来源:
mysql查看和修改系统参数 http://chn520.cn/article_detail/1646102666592358

mysql 参数

MySQL提供了相当多的系统参数,涉及方方面面。我们可以使用show关键字来查看:

  1. show variables like '%autocommit%';
  2. 或者
  3. show status like '%xxx%';

修改参数值

mysql有一些参数是可以直接修改的,比如mysql的自动提交是默认开启,我们修改为关闭自动提交

  1. set autocommit = 1;

当然也有些系统参数不能直接修改里面的值,当我们修改时会报错,就像这样:

  1. mysql> set @@ft_max_word_len = 1;
  2. ERROR 1238 (HY000): Variable 'ft_max_word_len' is a read only variable

所以只能在配置文件中配置,配置参数后必须重启mysql方可生效

  • windows版本的mysql配置文件为 my.ini文件
  • linux版本的mysql配置文件为my.cnf 文件

[mysql] 参数说明

以下参数需要加到[mysql]下面

参数说明
datadir=/xxx/xxx数据文件存放目录
socket=/xx/xx/mysql.socket本地连接文件,通过localhost来连接mysql需要用到的文件
pid_file存储mysql的pid,可通过此id杀死mysql进程
port=3306mysql的端口号
default_storage_engine=Innodb存储引擎
skip_grant_tables使登录时跳过权限检查;登录mysql时,不需要密码就可以登录了:mysql -u root -p

字符相关

参数说明
character_set_client=GBK客户端字符集
character_set_connection处理客户端发来信息的编码格式
character_set_database数据库默认的字符集
character_set_filesystem文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的
character_set_resultsmysql发送给客户端所用的字符集
character_set_servermysql server 默认字符集,这个变量建议由系统自己管理,不要人为定义。
character_set_system数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式。

连接相关(connection)

参数说明
max_connectionsmysql最大连接数,默认151,可通过命令:show processlist查看连接数量,一行就是一个连接
max_user_connections限制每个用户的连接个数,默认为0,0表示不限制
back_log注意这不是日志,这是用来暂存连接的数量大小,默认是80个,当mysql线程在一个很短时间内得到非常多的连接请求时,就会起作用,连接数量超过 max_connections所设置的值,多出来的连接就会存放到back_log中,当back_log也存不下时,就会拒接掉新的连接;
wait_timeoutmysql在关闭一个长连接(非交互式连接)之前需要等待的时长
interactive_timeout关闭一个短连接(交互式连接)需要等待的秒数

日志相关(log)

参数说明
log_error指定错误日志文件名称和存放路径,用于记录mysql启动和停止时、以及服务器在运行中出现严重错误时的相关信息
log_bin指定二进制日志文件名称和路径,用于记录所有对数据更改的sql语句;默认是关闭的,使用主从复制时,这个开关一定要开启。另外,如果数据丢失了,可通过此文件恢复数据,所以说,建议随时开启这个开关;只要配上路径就会自动打开:log-bin=/bin/mysql.bin
binlog_do_db指定更新到二进制日志的库,比如我指定binlog_do_db=test,就只会将test库中的数据记录到二进制日志中,其他库都不记录,如果要设置多个库,就得分2行来配置:binlog_do_db=test,binlog_do_db=xx
binlog_ignore_db指定不记录到二进制日志的库,
sync_binlog指定多少次写日志后同步磁盘,用户修改数据后,会先将日志存在缓存中,每隔一段时间将缓存中的数据同步到磁盘中进行持久化存储;
general_log是否开启查询日志记录,默认关闭
general_log_file查询日志记录文件存放地址;记录所有的查询语句
slow_query_log是否开启慢查询日志记录
slow_query_log_file指定慢查询日志文件名称, 用于记录耗时比较长的查询语句
long_query_time设置慢查询的时间,超过这个时间的查询语句就会被记录到show_query_log指定的文件中,
log_show_admin_statements是否将管理语句写入慢查询日志

缓存相关(cache)

参数说明
key_buffer_size索引缓存区大小,只对myisam起作用,默认8M,一般情况下,默认值够用了
query_cache_size查询缓存大小,mysql8.0以上版本已被删除<br>  show status like '%Qcache%'查看缓存的相关属性<br>  Qcache_free_blocks:缓存中相邻内存块的个数,如果值比较大,那么查询缓存中碎片比较多<br>  Qcache_free_memory:查询缓存中剩余的内存大小<br>  Qcachae_hits:表示有多少次命中缓存<br>  Qcache_inserts:表示多少次未命中而插入<br>  Qcache_lowmen_prunes:多少条query因为内存不足而被移除出cache<br>  Qcache_queries_in_cache:当前cache中缓存的query数量<br>  Qcache_total_blocks:当前cache中block的数量
query_cache_limit超过此大小将不被缓存
query_cache_min_res_unit缓存块最小值
query_cache_type缓存类型,决定缓存什么样的查询,默认是关闭的,一共有三个值 <br>0:禁用<br>1:将缓存所有的结果,除非sql中使用sql_no_cache禁用查询缓存<br>2:只缓存select语句中通过sql_cache指定需要缓存的查询
sort_buffer_size每个线程需要排序的线程分配该大小的缓冲区
max_allowed_packet=32M限制server接收的数据包大小
join_buffer_size=2M表示关联缓存的大小,join连表没有索引的时候会使用的缓存
thread_cache_size这个和java的线程池很像,就是线程在用完之后不会马上销毁,而是先存起来,下次可以直接使用,省去了开启线程的开销<br>Threads_cached:代表当前此时此刻线程缓存中有多少空闲线程<br>Threads_connected:代表当前已建立连接的数量<br>Threads_created:代表最近一次服务驱启动,已创建线程的数量,如果该值比较大,那么服务器会一直再创建线程;<br>Threads_running:代表当前激活的线程数

innodb相关

参数说明
innodb_buffer_pool_size该参数可以设置指定大小的内存来缓冲数据和索引,最大可以设置为物理内存的80%
innodb_flush_log_at_trx_commit主要控制innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,值分别为:0,1,2
innodb_thread_concurreney设置innodb线程的并发数,设为0表示不限制,如果要设置建议设为cpu核心数一直,或者是cpu核心数的2倍
innodb_log_buffer_size此参数确定日志文件所用的内存大小,单位:M
innodb_log_file_size此参数确定数据日志爱文件的大小,单位:M
innodb_log_files_in_group以循环方式将日志文件写入到多个文件中
read_buffer_sizemysql读入缓冲区大小,对表进行顺序扫描的请求将分配到一个读入缓冲区
read_md_buffer_sizemysql随机读的缓存区大小
innodb_file_per_table此参数确定为每张表分配一个新的文件;默认开启,如果关闭了,创建表之后,将不会产生后缀为.ibd的文件,他的数据会存储到ibdata1这个表空间文件中;最好是一张表一张文件;



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

以下转自:https://blog.csdn.net/weixin_28938171/article/details/113148529

MySQL数据库自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途。


第一个数据库INFORMATION_SCHEMA:


提供了访问数据库元数据的方式。


元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括"数据词典"和"系统目录"。


INFORMATION_SCHEMA是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。


每位MySQL用户均有权访问这些表,但仅限于表中的特定行,在这类行中含有用户具有恰当访问权限的对象。


第二个数据库mysql:


这个是mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。不可以删除,如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息。


第三个数据库是test:


这个是安装时候创建的一个测试数据库,和它的名字一样,是一个完全的空数据库,没有任何表,可以删除。


大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库。information_schema数据库是做什么用的呢,使用WordPress博客的朋友可能会想,是不是安装模板添加的数据库呀?看完本片文章后,你就会对information_schema数据库有所了解。


information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括"数据词典"和"系统目录"。


在 MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。


information_schema数据库表说明:


SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。


TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。


COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。


STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。


USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。


SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。


TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。


COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。


CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。


COLLATIONS表:提供了关于各字符集的对照信息。


COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。


TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。


KEY_COLUMN_USAGE表:描述了具有约束的键列。


ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为"mysql.proc name"的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。


VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。


TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表。

检查/禁用服务器端口

检查:

服务器本地检查:dos下执行 netstat -na ,可查看所有开启的端口

远程检查:windows检查端口是否关闭,在dos下执行命令 telnet ip地址或域名 端口号 ,如果能进入就说明端口是开放的,如果出现"不能打到开主机的链接,端口xxx失败"就说明端口没有开启。

禁用:

打开“控制面板”→打开“系统和安全”→打开“系统和安全”→打开“windows防火墙”→高级设置→选中“入站规则”→鼠标右点击“新建规则”→选择“端口” →下一步 →特定本地端口 输入要屏蔽的端口,多个用逗号分隔,如:135,139,445  →下一步→点击 “阻止连接”→ 全选域、专用、公用→名称自定,如:禁用端口 → 完成。记得要开启防火墙

如果用的阿里云ECS,除了云服务器ECS》网络与安全》安全组中开启的端口,其他本部默认封闭。

关闭WPS弹窗广告

C:\Users\Administrator\AppData\Local\kingsoft\WPS Office\11.1.0.12358\office6\ksomisc.exe

双击进入高级设置

或者在桌面wps图标上点右键》打开文件所在位置进入目录找到 ksomisc.exe 》双击运行》高级》其他选项》关闭广告弹窗推送,确定

抓包工具charles

https://www.charlesproxy.com/download/

js 字符和unicode互转

fromCharCodecharCodeAt

String.fromCharCode(97); //a
String.fromCharCode(97,97); //aa
String.fromCharCode(20013); //中
'中国'.charCodeAt(0); //20013

PHP文件系统函数

  • basename — 返回路径中的文件名部分
  • chgrp — 改变文件所属的组
  • chmod — 改变文件模式
  • chown — 改变文件的所有者
  • clearstatcache — 清除文件状态缓存
  • copy — 拷贝文件
  • delete — 参见 unlink 或 unset
  • dirname — 返回路径中的目录部分
  • disk_free_space — 返回目录中的可用空间
  • disk_total_space — 返回一个目录的磁盘总大小
  • diskfreespace — disk_free_space 的别名
  • fclose — 关闭一个已打开的文件指针
  • fdatasync — Synchronizes data (but not meta-data) to the file
  • feof — 测试文件指针是否到了文件结束的位置
  • fflush — 将缓冲内容输出到文件
  • fgetc — 从文件指针中读取字符
  • fgetcsv — 从文件指针中读入一行并解析 CSV 字段
  • fgets — 从文件指针中读取一行
  • fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
  • file_exists — 检查文件或目录是否存在
  • file_get_contents — 将整个文件读入一个字符串
  • file_put_contents — 将一个字符串写入文件
  • file — 把整个文件读入一个数组中
  • fileatime — 取得文件的上次访问时间
  • filectime — 取得文件的 inode 修改时间
  • filegroup — 取得文件的组
  • fileinode — 取得文件的 inode
  • filemtime — 取得文件修改时间
  • fileowner — 取得文件的所有者
  • fileperms — 取得文件的权限
  • filesize — 取得文件大小
  • filetype — 取得文件类型
  • flock — 轻便的咨询文件锁定
  • fnmatch — 用模式匹配文件名
  • fopen — 打开文件或者 URL
  • fpassthru — 输出文件指针处的所有剩余数据
  • fputcsv — 将行格式化为 CSV 并写入文件指针
  • fputs — fwrite 的别名
  • fread — 读取文件(可安全用于二进制文件)
  • fscanf — 从文件中格式化输入
  • fseek — 在文件指针中定位
  • fstat — 通过已打开的文件指针取得文件信息
  • fsync — Synchronizes changes to the file (including meta-data)
  • ftell — 返回文件指针读/写的位置
  • ftruncate — 将文件截断到给定的长度
  • fwrite — 写入文件(可安全用于二进制文件)
  • glob — 寻找与模式匹配的文件路径
  • is_dir — 判断给定文件名是否是一个目录
  • is_executable — 判断给定文件名是否可执行
  • is_file — 判断给定文件名是否为一个正常的文件
  • is_link — 判断给定文件名是否为一个符号连接
  • is_readable — 判断给定文件名是否可读
  • is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
  • is_writable — 判断给定的文件名是否可写
  • is_writeable — is_writable 的别名
  • lchgrp — 修改符号链接的所有组
  • lchown — 修改符号链接的所有者
  • link — 建立一个硬连接
  • linkinfo — 获取一个连接的信息
  • lstat — 给出一个文件或符号连接的信息
  • mkdir — 新建目录
  • move_uploaded_file — 将上传的文件移动到新位置
  • parse_ini_file — 解析一个配置文件
  • parse_ini_string — 解析配置字符串
  • pathinfo — 返回文件路径的信息
  • pclose — 关闭进程文件指针
  • popen — 打开进程文件指针
  • readfile — 输出文件
  • readlink — 返回符号连接指向的目标
  • realpath_cache_get — 获取真实目录缓存的详情
  • realpath_cache_size — 获取真实路径缓冲区的大小
  • realpath — 返回规范化的绝对路径名
  • rename — 重命名一个文件或目录
  • rewind — 倒回文件指针的位置
  • rmdir — 删除目录
  • set_file_buffer — stream_set_write_buffer 的别名
  • stat — 给出文件的信息
  • symlink — 建立符号连接
  • tempnam — 建立一个具有唯一文件名的文件
  • tmpfile — 建立一个临时文件
  • touch — 设定文件的访问和修改时间
  • umask — 改变当前的 umask
  • unlink — 删除文件

【严重】程序开发中"删除"功能需要特别注意的地方

请输入查看密码:

js下载文件

普通的jQuery中的ajax请求后台,并不能处理Blob类型的数据,这里用的原生的XMLHttpRequest请求后台

转自:https://blog.csdn.net/lf1934305268/article/details/123401275

     var xhr = new XMLHttpRequest();
            xhr.open("get",url, true);
            xhr.responseType = "blob";
            xhr.onload = function() {

                if (this.status == 200) {
                    $.unblockUI();
                    var blob = this.response;
                    if(blob.type == "text/html"){
                        return false
                    }
                    var fileName = "aaaa.xlsx";
                    if(window.navigator.msSaveOrOpenBlob){            // IE浏览器下
                        navigator.msSaveBlob(blob, fileName);
                    } else {
                        var  link = document.createElement("a");
                        link.href = window.URL.createObjectURL(blob);
                        link.download = fileName;
                        link.click();
                        window.URL.revokeObjectURL(link.href);
                    }
                }else{
                }
            }

另:IE浏览器已不再使用,可以删除对IE浏览器的判断

我的代码:

	var xhr = new XMLHttpRequest();
	xhr.timeout = 600000; //设置超时毫秒数(0为永不超时)
	xhr.open('GET', url, true);
	xhr.responseType = 'blob';
	xhr.onload = function(){
		if(this.status != 200){
			return;
		}
		var blob = this.response;
		if(blob.type == "text/html"){
			console.log('error');
			return false;
		}
		var allow_type=['video/quicktime','video/mp4'];
		if(allow_type.indexOf(blob.type)==-1){
			console.log('content-type not allowed');
			return false;
		}

		console.log(filename+' 下载完成,大小'+blob.size+'字节');

		var url = window.URL.createObjectURL(blob);
		var a = document.createElement('a');
		a.href = url;
		a.download = filename;
		a.click();
		window.URL.revokeObjectURL(a.href);
	}
	xhr.onerror = function(){
		console.log('error');
		console.log(this.status);
		console.log(this);
	}
	xhr.ontimeout = function(){
		console.log('timeout');
		console.log(this.status);
		console.log(this);
	}
	xhr.send();


localStorage简明教程

localStorage API(属性和方法):

length:返回 localStorage 中的键值对的数目
setItem():增加一个键值对到 localStorage 中
getItem():从 localStorage 中查询指定 key 的值
removeItem():从 localStorage 中删除指定的键值对
clear():清空 localStorage 中所有键值对
key(): 传入一个数字 n,用于返回指定第 n 个键的名字


PHP常用header状态

转自:https://www.cnblogs.com/limeng951/p/5634107.html

<?php
//200 正常状态
header('HTTP/1.1 200 OK');
// 301 永久重定向,记得在后面要加重定向地址 Location:$url
header('HTTP/1.1 301 Moved Permanently');
// 重定向,其实就是302 暂时重定向
header('Location: http://www.maiyoule.com/');
// 设置页面304 没有修改
header('HTTP/1.1 304 Not Modified');
// 显示登录框,
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="登录信息"');
echo '显示的信息!';
// 403 禁止访问
header('HTTP/1.1 403 Forbidden');
// 404 错误
header('HTTP/1.1 404 Not Found');
// 500 服务器错误
header('HTTP/1.1 500 Internal Server Error');
// 3秒后重定向指定地址(也就是刷新到新页面与 <meta http-equiv="refresh" content="10;http://www.jb51.net/ /> 相同)
header('Refresh: 3; url=http://www.jb51.net/');
echo '10后跳转到http://www.jb51.net';
// 重写 X-Powered-By 值
header('X-Powered-By: PHP/5.3.0');
header('X-Powered-By: Brain/0.6b');
//设置上下文语言
header('Content-language: en');
 // 设置页面最后修改时间(多用于防缓存)
$time = time() - 60; //建议使用filetime函数来设置页面缓存时间
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
// 设置内容长度
header('Content-Length: 39344');
// 设置头文件类型,可以用于流文件或者文件下载
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"');
header('Content-Transfer-Encoding: binary');
readfile('example.zip');//读取文件到客户端

//禁用页面缓存
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Pragma: no-cache');

//设置页面头信息
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain');
header('Content-Type: image/jpeg');
header('Content-Type: application/zip');
header('Content-Type: application/pdf');
header('Content-Type: audio/mpeg');
header('Content-Type: application/x-shockwave-flash');
//.... 至于Content-Type 的值 可以去查查 w3c 的文档库,那里很丰富
?>
2024-12-04 星期三 农历冬月初四