在建立PHP开发调试环境时,经常会遇到xdebug无法成功安装的问题,其实主要原因有两点:

1. xdebug版本和php版本不匹配

2.xdebug和 zend不能同时运行,需要在php.ini中禁掉zend配置

针对第一个问题的解决方案,可是使用xdebug官方提供的URL来自动检查与您server php环境相匹配的xdebug版本。

  1.  首先确保web server可以正常运行
  2.  在Browser中查看phpinfo,URL:http://127.0.0.1/phpinfo
  3.  在Browser中右键,查看源代码,拷贝phpinfo的源代码
  4. 将phpinfo源代码全部copy到上面的页面里的输入框中
  5. 最后点击页面最下方的"Analyse my phpinfo() output" 按钮
  6. 最后将会看到我们的系统环境中需要安装哪个版本的php xdebug dll的版本

php.ini文件中关于xdebug的配置如下:

 
  1. [Xdebug]
  2. zend_extension="xbug dll路径"
  3. xdebug.auto_trace = On
  4. xdebug.show_exception_trace = On
  5. xdebug.remote_autostart = On
  6. xdebug.remote_enable = On
  7. xdebug.remote_host = 127.0.0.1
  8. xdebug.remote_port = 9000
  9. xdebug.remote_handler = dbgp
  10. xdebug.profiler_enable = on
  11. xdebug.profiler_output_dir="日志路径"

完整配置及解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
xdebug.auto_trace=1
xdebug.default_enable = 1
 
;最大递归数
xdebug.max_nesting_level=100
;重写var_dump()
xdebug.overload_var_dump = On
;当这个参数被设置为1时,即使捕捉到异常,xdebug仍将强制执行异常跟踪当一个异常出现时
xdebug.show_exception_trace=1
xdebug.show_local_vars = 1
 
xdebug.collect_params=On
xdebug.collect_return=On
xdebug.collect_vars=On
 
xdebug.profiler_enable_trigger=On
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
 
xdebug.dump_once = On
xdebug.dump_globals = On
xdebug.dump_undefined = On
xdebug.dump.REQUEST = *
;xdebug.dump.SERVER = *
xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT

所有配置文件
xdebug.auto_trace
类型: boolean(布尔型), 默认值: 0
当开启这项配置时,在脚本运行之前,对函数调用的追踪就会启用.这使得开发者可以在auto_prepend_file文件中追踪脚本.


xdebug.cli_color
类型: integer(整型), 默认值: 0, 在Xdebug 2.2
如果这项被设置为1, 当使用CLI模式并且输出端是打字机时,Xdebug将会为变量信息和堆栈轨迹输出添加颜色. 在Windows系统下, ANSICON工具需要被安装.
如果这项被设置为2, Xdebug将始终为变量信息和堆栈轨迹输出添加颜色, 不管它是否连接到一台打字机也不管ANSICON是否被安装. 在这种情况下, 你可能会停止转义代码.
查看这篇文章以获取更多细节.


xdebug.collect_assignments
类型: boolean(布尔型), 默认值: 0, 在Xdebug 2.1
此项,默认为0, 控制Xdebug是否应该对函数轨迹添加变量分配追踪.


xdebug.collect_includes
类型: boolean(布尔型), 默认值: 1
此项,默认为1, 控制Xdebug是否应该将在include(), include_once(), require()或require_once()函数中使用的文件名写入追踪文件。


xdebug.collect_params
类型: integer(整型), 默认值: 0
此参数,默认为0,当在函数轨迹或堆栈轨迹中记录一个函数调用时,控制Xdebug是否应该搜集传递给函数的参数
默认值为0,因为对于大脚本来说,它可能消耗大量的内存而使脚本无法运行。启用该选项是安全的,但是如果脚本中含有大量函数调用或者有大数据结构作 为参数的话,可能会遇到一些问题。 Xdebug 2改进了内存使用,此问题不再存在,因为它不再将这些信息存储在内存中。相反,Xdebug会将这些信息写入硬盘,这意味着你得留意硬盘使用量。
此参数用4个不同的可选值,每个不同的值都会对应显示不同的信息。以下你将看到每个参数值所提供显示的信息,查看章节堆栈轨迹以获取详细介绍。.

显示的信息
0
1 变(常)量类型和长度(大小)(如string(6), array(8))。
2 变(常)量类型和长度(大小), 含有用以显示完整信息的帮助工具1
3 完整变量内容(包括通过xdebug.var_display_max_children, xdebug.var_display_max_data和xdebug.var_display_max_depth参数设置的限制信息。
4 完整变量内容和名称。

1 在带有CLI的PHP版本中,将不会拥有帮助工具,在输出文件中同样也没有。


xdebug.collect_return
类型:boolean(布尔型), 默认值:0
此设置,默认值为0,控制Xdebug是否应该将函数调用的返回值写入轨迹文件。


xdebug.collect_vars
类型: boolean(布尔型), 默认值: 0
这个设置告诉Xdebug来搜集在一定范围内使用的变量的信息。这一过程很慢,因为Xdebug必须对PHP的opcode数组进行反向工程。这个设置不会记录不同变量的变量值,如果需要记录变量值,可以使用xdebug.collect_params。只有当你希望使用xdebug_get_declared_vars()参数时,xdebug.collect_params才需要被启用。


xdebug.coverage_enable
类型:boolean(布尔型), 默认值: 1, 在Xdebug 2.2 版中引进
如果此项设置为0,Xdebug将不会建立内部结构来支持代码作用域。这将使Xdebug的运行速度稍微加快,当然 代码作用域分析也将不起作用。


xdebug.default_enable
类型: boolean(布尔型), 默认值: 1
如果这项被设置为1, 在发生错误事件时,将默认显示堆栈轨迹. 你可以通过在代码中使用xdebug_disable()来禁用显示堆栈轨迹. 由于这是Xdebug的基本函数之一,所以最好使用其默认值。


xdebug.dump.*
类型: string(字符串), 默认值: Empty

* = COOKIE, FILES, GET, POST, REQUEST, SERVER, SESSION。这7个参数控制当错误情况发生时,显示哪些超全局变量。在php.ini设置中,要显示的超全局变量之间用逗号隔开,但是要确保没有添加 空格。如果要在错误发生时显示REMOTE_ADDR和REQUEST_METHOD,添加如下设置:

xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD

xdebug.dump_globals
类型: boolean(布尔型), 默认值: 1
控制是否显示由xdebug.dump.* 参数指定的超全局变量的值。


xdebug.dump_once
类型: boolean(布尔型), 默认值: 1
控制是对所有的错误情况(设置为0)都显示超全局变量的值还是只对第一个发生的错误情况(设置为1)显示超全局变量的值。


xdebug.dump_undefined
类型: boolean(布尔型), 默认值: 0
如果你想显示超全局变量中未定义的值,你应该将此项设置为1,否则使用默认值。


xdebug.extended_info
类型:integer(整型), 默认值: 1
控制Xdebug是否应该为PHP语法解析强制使用’extended_info’模式; 这将允许Xdebug使用远程调试器设置文件/行断点.当对脚本进行追踪或者效能分析时,你通常会想要关闭该选项,因为PHP生成的op数组将 不断增大,而它作为你脚本的第三方将降低脚本的执行效率。此设置项不能通过ini_set()函数进行设置, 而只能通过php.ini.


xdebug.file_link_format
类型: string(字符串), 默认值: , 在Xdebug 2.1 版中引进

此设置控制在堆栈轨迹显示中的超链接格式,堆栈轨迹中使用了文件名称。它将允许IDE来建立一个链接协议,通过点击Xdebug显示在堆栈轨迹中的文件名能够直接跳转到指定的行和文件。 链接格式可能是这种形式:

myide://%f@%l

可用的格式操作符有:

操作符 意义
%f 文件名
%l 行号

如果要在linux下使用火狐浏览器,请遵循以下步骤:

  • 打开about:config
  • 添加一个boolean(布尔型)设置”network.protocol-handler.expose.xdebug”
  • 将下面的代码写入一个shell脚本”~/bin/ff-xdebug.sh”:
    #! /bin/sh
    
    f=`echo $1 | cut -d @ -f 1 | sed 's/xdebug:\/\///'`
    l=`echo $1 | cut -d @ -f 2`

    再添加以下的其中一行(取决与你用komodo还是gvim):

    • komodo $f -l $l
    • gvim --remote-tab +$l $f
  • 使用chmod +x ~/bin/ff-xdebug.sh命令让脚本可执行
  • 将xdebug.file_link_format设置为xdebug://%f@%l

Windows and netbeans

  • 创建一个名为netbeans.bat的文件并且将其保存到你的路径中(如:C:\Windows):

    @echo off
    setlocal enableextensions enabledelayedexpansion
    set NETBEANS=%1
    set FILE=%~2
    %NETBEANS% --nosplash --console suppress --open "%FILE:~19%"
    nircmd win activate process netbeans.exe

    注意: 如果你没有nircmd,移除最后一行.

  • 将一下的代码保存为netbeans_protocol.reg文件:
    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\netbeans]
    "URL Protocol"=""
    @="URL:Netbeans Protocol" [HKEY_CLASSES_ROOT\netbeans\DefaultIcon]
    @="\"C:\\Program Files\\NetBeans 7.1.1\\bin\\netbeans.exe,1\"" [HKEY_CLASSES_ROOT\netbeans\shell] [HKEY_CLASSES_ROOT\netbeans\shell\open] [HKEY_CLASSES_ROOT\netbeans\shell\open\command]
    @="\"C:\\Windows\\netbeans.bat\" \"C:\\Program Files\\NetBeans 7.1.1\\bin\\netbeans.exe\" \"%1\""

    注意: 确保你将路径修改到Netbeans的安装目录 (两次),同时也要 修改netbeans.bat补丁文件的路径,如果你将其保存在C:\Windows\之外的目录.

  • 双击netbeans_protocol.reg文件来将其导入注册表.
  • 将xdebug.file_link_format的值设置为xdebug.file_link_format = "netbeans://open/?f=%f:%l"

xdebug.idekey
类型:string(字符串), 默认值: *complex*
控制Xdebug应该将哪个IDE键传递给DBGp调试器助手. 默认值是基于环境变量的. 首先会查询环境变量的DBGP_IDEKEY设置, 然后是USER,最后是USERNAME.默认被设置为第一个被找到的 环境变量的值. 如果没有查询到任何值,默认值为”.如果此项被设置,它通常会覆盖环境变量的值.


xdebug.manual_url
类型: string(字符串), 默认值: http://www.php.net
xdebug信息中有关函数和错误信息的超链接将直接链接到PHP帮助手册中的函数页面。最好将此项设置为最近的镜像。


xdebug.max_nesting_level
类型: integer(整型), 默认值: 100
用来控制对无限递归的保护机制。 此项的值限制了在脚本中断之前,运行嵌套执行的函数的最大数目(即最大递归次数,超过这个数,php脚本将中断执行)。


xdebug.overload_var_dump
类型: boolean(布尔型), 默认值: 1, 在Xdebug 2.1 版中引进
默认情况下,当php.ini的html_errors设置为1时,Xdebug将使用重载的var_dump()函数来显示变量信息。如果你不想这样,那么你可以把此项设置为0,但是在此之前你有必要先检查,确保没有关闭html_errors。


xdebug.profiler_append
类型:integer(整型), 默认值: 0
当此选项设置为1, 在一个新的请求被映射到相同的文件(依赖于xdebug.profiler_output_name的设置)时,效能分析文件的内容不会被覆盖。新的内容将会被追加到原文件的最后。


xdebug.profiler_enable
类型:integer(整型), 默认值: 0
启用Xdebug的效能分析器,效能文件被创建在 profile output directory目录. 这些文件可以被 KCacheGrind读取以呈现在你面前。此指令不能在脚本中通过ini_set()来设置,如果你想有选择的启用效能分析, 请设置xdebug.profiler_enable_trigger为1,不要使用此指令。


xdebug.profiler_enable_trigger
类型:integer(整型), 默认值: 0
当此选项设置为1,通过使用XDEBUG_PROFILE作为GET/POST参数,或者以XDEBUG_PROFILE作为名称来设置一个cookie,你可以触发生成效能分析文件。 这样,效能数据将会被写入defined directory目录. 如果不想为每一个请求都生成效能分析文件,你需要将 xdebug.profiler_enable设置为0.


xdebug.profiler_output_dir
类型:string(字符串), 默认值: /tmp
效能分析器的输出信息将被写入的目录,确保执行PHP脚本的用户拥有对目录的写权限。这条指令不能通过 ini_set()函数设置。


xdebug.profiler_output_name
类型:string(字符串), 默认值: cachegrind.out.%p
这项设置决定被用来转存效能信息文件的名称。它通过格式操作符来鉴别名称格式,跟 sprintf()和strftime()函数类似。有若干格式操作符可以被用来格式化文件名称。
查看xdebug.trace_output_name的介绍来详细了解格式操作符。


xdebug.remote_autostart
类型:boolean(布尔型), 默认值: 0
通常,你需要使用一个指定的HTTP GET/POST变量来启动远程调试 (s查看远程调试). 当此项被设置为1时,Xdebug将会尝试启动远程调试会话并且连接一个客户端 , 即使GET/POST/COOKIE变量不存在.


xdebug.remote_connect_back
类型:boolean(布尔型), 默认值: 0, 在Xdebug 2.1 版中引进
如果启用该配置, xdebug.remote_host设置将被忽略, Xdebug将尝试连接至发起HTTP请求的客户端 .它会检查$_SERVER[‘REMOTE_ADDR’]变量来查找该使用哪个IP地址. 请注意不能使用no值来过滤 , 任何能够连接到web服务器的人都可以启动调试会话,即使他们的地址跟 xdebug.remote_host的设置不匹配.


xdebug.remote_cookie_expire_time
类型:integer(整型), 默认值: 3600, 在Xdebug 2.1 版中引进
该设置可以用来增加(或减少)远程调试会话的存活时间。


xdebug.remote_enable
类型:boolean(布尔型), 默认值: 0
该设置控制Xdebug是否应该尝试连接一个调试客户端,该调试客户端监听的主机和端口通过 xdebug.remote_host和 xdebug.remote_port配置项来设置. 如果不能建立到调试客户端的连接,脚本将继续执行,就像该设置被设置为0一样.


xdebug.remote_handler
类型:string(字符串), 默认值: dbgp
可以是’php3’,它将选择较老的PHP 3 风格调试器 输出;’gdb’,启用类似于GDB的调试器接口或者’dbgp’ – 调试器协议. DBGp协议被各种客户端广泛支持 查看远程调试以获取更多细节.
注意: Xdebug 2.1和以后的版本只支持’dbgp’协议.


xdebug.remote_host
类型:string(字符串), 默认值: localhost
选择运行调试客户端的主机, 你可以使用一个主机名或者一个IP地址. 如果xdebug.remote_connect_back被启用,此设置将被忽略.


xdebug.remote_log
类型:string(字符串), 默认值:
如果该项被设置为一个值, 它将被用作一个文件名,所有的远程调试通信信息将被记录在该文件中. 文件通过以追加模式打开因此先前的记录不会被覆盖. 没有提供并发保护机制. 文件的格式形如:

Log opened at 2007-05-27 14:28:15
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/x ... ight></init> <- step_into -i 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/db ... ></response>

xdebug.remote_mode
类型:string(字符串), 默认值: req
当调试连接被初始化时选择调试模式.该设置有2个不同的值:

req
一旦脚本开始执行,Xdebug就将尝试连接到调试客户端。
jit
只有当错误发生时,Xdebug才会尝试连接到调试客户端。

xdebug.remote_port
类型:integer(整型), 默认值: 9000
Xdebug尝试连接的远程主机的端口. 默认情况下,第三方调试客户端和绑定的调试客户端 的端口都是9000.由于有许多客户端都使用这个端口号,最好不要修改默认值.


xdebug.scream
类型: boolean(布尔型), 默认值: 0, 在Xdebug 2.1版中引进
如果此项设置为1,Xdebug将禁用@操作符,那么php的错误提示信息将无法被隐藏。


xdebug.show_exception_trace
类型: integer(整型), 默认值: 0
当此项设置为1时, 不关什么时候发生异常,Xdebug都将显示一个堆栈轨迹-即使已经捕捉到了异常。


xdebug.show_local_vars
类型: integer(整型), 默认值: 0
当此项设置为不等于0的值时,Xdebug在错误发生时生成的堆栈信息仍然将在最顶层显示所有变量的信息。注意,使用这个选项可能会生成很多信息,所以此参数默认是关闭的。


xdebug.show_mem_delta
类型: integer(整型), 默认值: 0
当此项设置为不等于0的值时,Xdebug生成的人类可读的轨迹文件将会显示函数调用间不同的内存使用情况。如果Xdebug被设置为生成机器可读的轨迹文件,那么将始终显示此信息。


xdebug.trace_enable_trigger
类型: boolean(布尔型), 默认值: 0, 在Xdebug 2.2
当此参数设置为1时, 你可以使用XDEBUG_TRACE GET/POST参数或者使用XDEBUG_TRACE参数设置一个cookie来触发轨迹文件的生成。 这会将轨迹数据写入轨迹文件目录。 如果要阻止Xdebug生成轨迹文件,你需要设置 xdebug.auto_trace参数为0。


xdebug.trace_format
类型:integer(整型), 默认值:0

轨迹文件的格式。

描述
0 显示人类可读的轨迹文件内容: 时间索引内存使用内存增量 (如果xdebug.show_mem_delta参数被启用), 层级函数名函数参数 (如果xdebug.collect_params被启用), 文件名 和 行号.
1 写入含有两种不同记录的计算机可读的格式。 有很多不同的记录可以用来进入或离开一个堆栈结构。下面的表格列出了每种类型的记录的相关栏目,栏目之间通过制表位隔开。
2 写入HTML格式的轨迹。

计算机可读格式的记录栏目:

记录类型 1 2 3 4 5 6 7 8 9 10
入口 level function # always ‘0’ time index memory usage function name user-defined (1) or internal function (0) name of the include/require file filename line number
出口 level function # always ‘1’ time index memory usage empty

查看函数轨迹章节的例子。


xdebug.trace_options
类型:integer(整型), 默认值:0
当设置为1时,后来的请求所产生的轨迹信息将会被附加至之前轨迹信息之后,而不会覆盖原信息。


xdebug.trace_output_dir
类型:string, 默认值:/tmp
轨迹输出文件所在目录,确保当前执行PHP脚本的用户拥有对该目录的写入权利。


xdebug.trace_output_name
类型:string, 默认值:trace.%c
轨迹文件的文件名。此设置使用特定的格式来命名轨迹文件,和sprintf()与strftime()十分类似。有若干格式可以用来命名轨迹文件,’.xt’后缀通常会自动添加。
可用的格式操作符有:

操作符 意义 示例格式 示例文件名
%c crc32 of the current working directory trace.%c trace.1258863198.xt
%p pid trace.%p trace.5174.xt
%r random number trace.%r trace.072db0.xt
%s script name 2 cachegrind.out.%s cachegrind.out._home_httpd_html_test_xdebug_test_php
%t timestamp (seconds) trace.%t trace.1179434742.xt
%u timestamp (microseconds) trace.%u trace.1179434749_642382.xt
%H $_SERVER[‘HTTP_HOST’] trace.%H trace.kossu.xt
%R $_SERVER[‘REQUEST_URI’] trace.%R trace._test_xdebug_test_php_var=1_var2=2.xt
%U $_SERVER[‘UNIQUE_ID’] 3 trace.%U trace.TRX4n38AAAEAAB9gBFkAAAAB.xt
%S session_id (from $_COOKIE if set) trace.%S trace.c70c1ec2375af58f74b390bbdd2a679d.xt
%% literal % trace.%% trace.%%.xt

2 此操作符对轨迹文件名无效。
3 2.2版中引进,此操作符通过Apache的mod_unique_id module来设置。


xdebug.var_display_max_children
类型: integer(整型), 默认值: 128
此参数用于当使用xdebug_var_dump(), xdebug.show_local_vars或函数轨迹来显示变量时,控制数组子节点和对象属性的显示数量。
如果要取消限制,使用-1作为参数值。
此参数对通过原程调试功能发送给客户端的子节点的数量没有任何影响。


xdebug.var_display_max_data
类型:integer(整型), 默认值:512

此参数用于当使用xdebug_var_dump(), xdebug.show_local_vars或函数轨迹来显示变量时,控制被显示的字符串的最大长度。
如果要取消限制,使用-1作为参数值。
此参数对通过原程调试功能发送给客户端的数据的数量没有任何影响。


xdebug.var_display_max_depth
类型: integer(整型), 默认值: 3
此参数用于当使用xdebug_var_dump(), xdebug.show_local_vars或函数轨迹来显示变量时,控制数组元素和对象属性的最大嵌套层数。
你能选择的最大值是1023,你也可以设置参数值为-1,这样Xdebug将会自动选择1023。
此参数对通过远程调试功能发送给客户端的子节点的深度(译者注:深度是数据结构上的概念)没有任何影响。

PHP debug 环境配置的更多相关文章

  1. HC32L110(五) Ubuntu20.04 VSCode的Debug环境配置

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  2. NDK配置debug环境时:Error:FAILURE: Build failed with an exception

    Error:FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:ex ...

  3. NDK开发,如何配置 debug环境

    刚开始做NDK 开发的时候,Android Studio 还没提供了 native C/C++ 设置断点 调试,我们都是通过输出 日志来调试,这样费时耗力.Android Studio 应该是在 2. ...

  4. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  5. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

  6. Visual studio 通用开发环境配置:SDL,FFMPEG为例

    引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 下载库文件,这里假定是已经预先编译完成的. 配置库文件的包含目录(include)和库 ...

  7. windows 7下React Native环境配置

    React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,它可以做到实时热更新 .FaceBook 也号称这们技术是 “Le ...

  8. AndroidStudio开发环境配置-Windows

    Android Studio开发环境配置-Windows 最近突发奇想,开始研究Android开发.开始时使用Eclipse作为开发IDE,结果各种不好使,首先下载和安装SDK,以及不同版本的Imag ...

  9. 2013 duilib入门简明教程 -- VS环境配置(2)

        既然是入门教程,那当然得基础点,因为搜索duilib相关资料时,发现有些小伙伴到处都是编译错误,以及路径配置错误等等,还有人不知道SVN,然后一个个文件手动下载的.     其实吧,duili ...

随机推荐

  1. 为ASP.NET配置IIS7服务器支持十万个同时请求

    1. IIS7中应用程序池队列长度调整为65535(默认为1000) 打开IIS7管理器,选择应用程序池,右键选择应用程序池,选择高级设置,把1000改为65535

  2. 从零开始学Python04作业思路:模拟ATM电子银行

    标签(空格分隔):Python 一,程序文件说明 程序分为5个组成部分 bin:放置Python程序的启动接口文件 通过Python命令启动文件夹内文件即正常执行Python程序 例如:ATM_sta ...

  3. 第 13 章 CSS 选择器[上]

    学习要点: 1.选择器总汇 2.基本选择器 3.复合选择器 4.伪元素选择器 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 选择器,通过选择器定位到想要设置样式的元素.目前 CSS 选择器的 ...

  4. Guava学习笔记:Guava新集合-Table等

    Table 当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现.为此Guava ...

  5. C#实现jQuery的方法连缀

    jQuery的方法连缀使用起来非常方便,可以简化语句,让代码变得清晰简洁.那C#的类方法能不能也实现类似的功能呢?基于这样的疑惑,研究了一下jQuery的源代码,发现就是需要方法连缀的函数方法最后返回 ...

  6. Nibbler – 免费的网站测试和指标评分工具

    Nibbler 是一款免费的工具,用于测试网站的各个方面指标.输入任意网站的地址,Nibbler 会给你一份报告,列出网站的10个关键领域的分数,包括可访问性,用户体验,搜索引擎优化,社交媒体和技术等 ...

  7. 苹果浏览器和uc浏览器在移动端的坑(日常积累,随时更新)

    先mark 1 .  移动端uc浏览器不兼容css3 calc() 2 .  ie8下a标签没有内容给宽高也不能触发点击跳转 3 . safari输入框加上readOnly="ture&qu ...

  8. PyInstaller 安装方法 及简单的编译exe (python3)

    安装PyInstaller //地址 https://github.com/pyinstaller/pyinstaller/tree/python3 //上面的链接已经失效,新的(20160809更) ...

  9. 使用animate()的时候,有时候会出现移进移出的闪动问题

    怎么解决这种问题呢?在animate()前面需要加上stop() 例如: $(".nav_list").hover(function(){ $(".div1") ...

  10. mysql支持IOS的Emoji表情

    原因: UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去. 解决办法: 将Mysql的编码从utf8转换成utf8mb4 ...