室友
所有由zhufenghua发布的文章
in at on表示地点的区别
in表示大地点
at表示小地点
on表示在物体上
Do you work with…
你和…一起工作吗?
百度学术快速引用参考文献
打开百度学术,百度学术 – 保持学习的态度 (baidu.com)
可以直接搜索,推荐使用高级搜索,输入条件搜索后,得到数据列表
选中一篇,点击“引用”,出现多种格式,一般使用国标格式gb/t 7714
复制后出现一个[1]……
这个1是指排序,第二个引用就是[2],需要手动修改,如果希望批量,可以使用批量引用,会自动生成序号。
phpStorm收缩与展开方法
如果方法太多,可以使用ctrl+shift+”-“收缩
或者使用ctrl+shift+”+”展开,
也可以使用ctrl+f12以弹出窗的形式快速浏览方法
使用ctrl+shift+”-“时可能会收缩为一个类,点一下{}就可以显示所有的方法了,它比ctrl+f12的好处是有注释。
对于单个方法的收缩与展开,就是少了shift,即收缩快捷键ctrl+”-“。
mysql修复表
1> 用”repair table”方式修复
语法:repair table 表名 [选项]
选项如下:
QUICK 用在数据表还没被修改的情况下,速度最快
EXTENDED 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用
USE_FRM 用在.MYI文件丢失或者头部受到破坏的情况下。利用.frm的定义来重建索引
多数情况下,简单得用”repair table tablename”不加选项就可以搞定问题。但是当.MYI文件丢失或者头部受到破坏时,这样的方式不管用,例如:
For example:
mysql> REPAIR TABLE mytable;
+————————-+——–+———-+
| sports_results.mytable | repair | error | Can’t find file: ‘mytable.MYI’ (errno: 2) |
+————————-+——–+———-+
修复失败的原因时索引文件丢失或者其头部遭到了破坏,为了利用相关定义文件来修复,需要用USE_FRM选项。例如:
mysql> REPAIR TABLE mytable USE_FRM;
+————————-+——–+———-+
| Table | Op | Msg_type | Msg_text |
+————————-+——–+———-+
| sports_results.mytable | repair | warning | Number of rows changed from 0 to 2 |
| sports_results.mytable | repair | status | OK |
+————————-+——–+———-+————————————————————————————+
我们可以看到Msg_test表项的输出信息”ok”,表名已经成功修复受损表。
2> 用mysql内建命令mysqlcheck来修复
当mysql服务在运行时,也可以用mysql内建命令mysqlcheck来修复。
语法:mysqlcheck -r 数据库名 表名 -uuser -ppass
Command: %mysqlcheck -r sports_results mytable -uuser -ppass
Result: sports_results.mytable OK
利用mysqlcheck可以一次性修复多个表。只要在数据库名后列出相应表名即可(用空格隔开)。或者数据库名后不加表名,将会修复数据库中的所有表,例如:
Command: %mysqlcheck -r sports_results mytable events -uuser -ppass
Result: sports_results.mytable OK
Result: sports_results.events OK
Command: %mysqlcheck -r sports_results -uuser -ppass
Result: sports_results.mytable OK
Result: sports_results.events OK
3>用myisamchk修复
用这种方式时,mysql服务必须停掉,或者所操作的表处于不活动状态(选项skip-external-locking没被使用)。记着一定要在相关.MYI文件的路径下或者自己定义其路径。
语法:myisamchk [选项] [表名]
下面是其选项和描述
–backup, -B 在进行修复前作相关表得备份
–correct-checksum 纠正校验和
–data-file-length=#, -D # 重建表时,指定数据文件得最大长度
–extend-check, -e 试图去恢复每个数据行,会产生一些垃圾数据行,万般无奈的情况下用
–force, -f 当遇到文件名相同的.TMD文件时,将其覆盖掉。
keys-used=#, -k # 指定所用的keys可加快处理速度,每个二进制位代表一个key.第一个key为0
–recover, -r 最常用的选项,大多数破坏都可以通过它来修复。
如果你的内存足够大,可以增大参数sort_buffer_size的值来加快恢复的速度。但是遇到唯一键由于破坏而不唯一的表时,这种方式不管用。
–safe-recover -o 最彻底的修复方式,但是比-r方式慢,一般在-r修复失败后才使用。
这种方式读出所有的行,并以行为基础来重建索引。它的硬盘空间需求比-r方式稍微小一点,因为它没创建分类缓存。你可以增加key_buffer_size的值来加快修复的速度。
–sort-recover, -n mysql用它类分类索引,尽管结果是临时文件会非常大
–character-sets-dir=… 包含字符集设置的目录
–set-character-set=name 为索引定义一个新的字符集
–tmpdir=path, -t 如果你不想用环境变量TMPDIR的值的话,可以自定义临时文件的存放位置
–quick, -q 最快的修复方式,当数据文件没有被修改时用,当存在多键时,第二个-q将会修改 数据文件
–unpack, -u 解开被myisampack打包的文件
myisamchk应用的一个例子
% myisamchk -r mytable
- recovering (with keycache) MyISAM-table ‘mytable.MYI’
Data records: 0
http的options请求
options请求出现在跨域中,是一种安全的请求,不会修改服务器中的资源。
这是一种浏览器预检行为,预先检测服务器是否支持复杂请求。
简单请求的定义如下,不满足的就是复杂请求:
1.请求方式只能是:GET、POST、HEAD
2.HTTP请求头限制这几种字段(不得人为设置该集合之外的其他首部字段):
Accept、Accept-Language、Content-Language、Content-Type(需要注意额外的限制)、DPR、Downlink、Save-Data、Viewport-Width、Width
3.Content-type只能取:application/x-www-form-urlencoded、multipart/form-data、text/plain
4.请求中的任意XMLHttpRequestUpload 对象均没有注册任何事件监听器;XMLHttpRequestUpload 对象可以使用 XMLHttpRequest.upload 属性访问。
5.请求中没有使用 ReadableStream 对象。
非简单请求 会在正式通信之前,增加一次HTTP请求,称之为预检请求。浏览器会先发起OPTIONS方法到服务器,以获知服务器是否允许该实际请求。
目前所有主流浏览器(IE需要10)都支持跨域请求(cors),而跨域请求的关键在于服务器返回的响应头。
“预检”请求用的请求方法是OPTIONS
,表示这个请求是用来询问的。头信息里面,关键字段是Origin
,表示请求来自哪个源。
如果服务器允许任意跨域,则返回如下字段:
Access-Control-Allow-Origin: *
可以看出options请求是cors请求的一个副产品,如果确定不需要options,可以禁止该请求。以apache为例,可以使用如下伪静态禁止:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^(OPTIONS) RewriteRule .* - [F] </IfModule>
phpstorm配合宝塔面板使用xdebug
首先,安装了宝塔面板,并配置了一个普通的php站点(zfh.215000.com)
修改网站对应的php.ini如下:
[XDebug] xdebug.profiler_append = 0 xdebug.profiler_enable = 1 xdebug.profiler_enable_trigger = 0 xdebug.profiler_output_dir ="C:\BtSoft\temp\xdebug" xdebug.trace_output_dir ="C:\BtSoft\temp\xdebug" xdebug.profiler_output_name = "cache.out.%t-%s" ; 上面几个一般不用改,查看下面几个设置 xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "zfh.215000.com" xdebug.remote_port = 9018 zend_extension="C:\BtSoft\php\74\ext\php_xdebug.dll"
这里有必要说明一下,有些目录是已经默认配置了的,对比没配置的才需要添加并设置。(remote host 表示ide的服务器,断点流程为:浏览器插件 –> 服务器xdebug –> ide开发工具,也就是如何让 xdebug 找到并发送数据到 ide)
修改完毕后,重载php配置,否则ini配置不生效。
此时,先使用phpinfo查看是否存在xdebug,如果存在一般可以看到类似字样:
xdebug
xdebug support | enabled |
---|---|
Version | 2.9.6 |
Support Xdebug on Patreon, GitHub, or as a business |
Debugger | enabled |
---|---|
IDE Key | DESKTOP-LR8M2TK$ |
只要存在xdebug,以及显示版本号,一般就说明已经正确安装了xdebug,也就是php.ini设置正确。
接下来,在phpStorm中断点。
在phpStorm中打开该站点目录环境(依然是本机,不同服务器未尝试过,理论上应该也可以)。
1.在settings找到php配置,配置php以及debug的位置(和上面php.ini一致)
2.在php配置的子项debug配置,编辑端口9018(与php.ini一致)
3.新建一个测试文件,打断点,并点击监听(无需启动,直接访问宝塔中的网站)。(需要安装浏览器插件,请使用edge以及扩展 xdebug helper并在该需要调试的页面打开)
4.访问页面时,phpStorm自动提示是否监听bedug。确认后即可自动监听该网站debug,可在settings ==》 php ==》 server中删除,或关闭phpStorm右上角的监听。
5.如果不生效,在phpstorm 找到 php –> server –> 添加一个 server,name随意,host为域名、port按实际填写,后面的 debugger 为 xdebug,保存即可。
基本按键:
f7(Step into):进入子函数
f8(Step over):下一步
shift+f8(Step Out):退出子函数
alt+f9(Run to Cursor):到下一个断点(如果没有断点,终止)
alt+f8(Evaluate Expression):提供表达式计算(下方已提示出所有可用变量与对应值)
没打断点也一直自动debug?点击顶部菜单的run==》Break at first line in PHP Scripts,取消勾选即可
phpstorm全局搜索字符串
快捷键:ctrl+shift+f
一些输入法已占用此快捷键,设置并修改输入法的快捷键
或者,也可以修改phpStorm的快捷键,在settings找到keymap,接着找到Find in Files…,设置此快捷键即可(默认ctrl+shift+f)
使用phpinfo查看php是否为ts版本
使用phpinfo函数,查看php设置
<?php phpinfo();
在浏览器搜索Thread Safety项,如果显示“enable”则说明是ts版本(一般使用ts版本)。