所有由zhufenghua发布的文章

百度学术快速引用参考文献

打开百度学术,百度学术 – 保持学习的态度 (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 supportenabled
Version2.9.6
Support Xdebug on Patreon, GitHub, or as a business
Debuggerenabled
IDE KeyDESKTOP-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,取消勾选即可