今天一个同事和我说,她在做Define.xml时碰到一个奇怪的问题:最后要生成Define.xml的数据集中已经去除了各种特殊字符,但是生成的Define.xml文件有些地方仍然会有空格(经查询为‘ODOA...接着看了下她的程序: ?...发现以上程序没有问题,一开始我也觉得奇怪,仔细想了下,发现原来是PUT语句搞的鬼,原来PUT语句一行最多可以写255个字符串,所以对于长度超过255的行会自动PUT成多行,这样就会导致最后的Define.xml...有回车和换行符了。...对于这个问题,又要用到强大的正则表达式了,即将变量LINE每隔固定的长度(这里取200)插入一个分隔符,然后生成多行,这样再PUT就不会出问题了。
已经被这个问题困扰了很久了,先说下这个问题的来源及现象吧。 这个问题得从上次换服务器之后说起。...这是公司的服务器,用于手机相关的服务器,为手机业务提供APP的升级、收集手机用户基本信息及为手机APP提供相应的指令。...因为业务原因,手机用户的相关请求在时间上会比较集中,从数据上来说,高峰的时候并发也就几千个吧。...之前的服务器配置比较差一些,4核8G的机器,访问量大的时候响应会比较慢,最慢的时候几十秒才能给返回,服务器的资源也吃满,所以就换成新服务器。...换到新机器之后,资源剩余比较多,但是却时不时的出现访问的时候秒断的情况。
if(in_array('0E372031',$arr)){ echo "true"; } else{ echo "false"; } 按正常来说,这个肯定不在数组中...我又把代码改成如下: $arr = array('0F372033','0F372034','0F372035','0F372036','0F372037','0F372038','0F372039')...百思不得其解,到处请教和询问,终于找到了答案,原来0E372031这样的字符串在php的弱类型中会当着是科学计数法,所以就是0,这个时候判断in_array,和0E372033这样的值就相等了,解决方法就是如以下代码...,强制判断其类型,这个时候输出false了,如果需要直接判断相等,请用’0E372031′ === ’0E372033′这样的判断才准确! ...以上是我自己在开发过程中遇到的问题,以记之。
今天在进行SQL审核的时候,遇到了一个奇怪的SQL,SQL如下: create table datatype10 (d_tinyint int not null default 1 comment...我去,还真是,看人品啊,人家跑就可以,我自己跑就报警告,为什么呢,当时很不理解这个问题,但是读者们看到这里,可能心里已经有了答案,那就是我给同事的SQL和我自己跑的那个SQL肯定不是一样的!!!...果然是这样的,到底是什么原因导致这种问题呢,肯定是两者的内容有不一样的地方,于是将两个SQL语句放在一个文件里面,利用: cat -v 文件名 命令,查看文件中的隐藏字符,结果如下: ?...一个小小的问题,疑惑和很久,于是想着,既然有问题,就直接把这个奇怪的字符换成一个可见的字符处理一把,看看结果有什么差异,于是有了下面的SQL: create table datatype10 (d_tinyint...到这里,问题已经和明确了,确实是因为两个SQL不一样导致的,我的SQL可能因为中英文切换的原因,夹杂进来一个不需要的字符,导致整个SQL报警告,但是也证明了一点,timestamp不会对这种警告进行处理
前言 链接是代码生成可执行文件中一个非常重要的过程。我们在使用一些库函数时,有时候需要链接库,有时候又不需要,这是为什么呢?了解一些链接的基本过程,能够帮助我们在编译时解决一些疑难问题。...比如,下面就有一种奇怪的现象。 一个奇怪的链接问题 程序功能很简单,计算e的n次方。...分析 虽然最后终于成功编译运行,但是不免产生了几个疑问: 两段代码同样都调用了exp函数,为什么一个需要链接,一个不需要链接呢? 到底什么时候需要链接呢? 为什么链接的时候放在前面就不行呢?...1.为什么一个需要链接,一个不需要? 我们可以观察到,代码一调用exp传入的参数是常量2,代码二调用exp传入的参数是变量b,那么对于代码一会不会在运行之前就计算好了呢?...而对于变量型的参数,其值在运行时确定,因此需要调用。我们还可以通过ldd命令来看它们链接的库有什么不同。
php的数组排序函数有很多。有按键排序,有按值排序。有升序,有降序。有的排序后改变原数组索引,有的不改变。 关于PHP的排序函数,官方文档给出了下面的一个总结表: ?...以上函数排序结果都是通过引用传递到原数组中去,而不是返回一个新的有序的数组。 一维数组排序 其实PHP内部对于数组排序的实现都比较相似,都是一个模子刻出来的。...用户自定义函数其实是在php_array_user_key_compare,和php_array_user_compare中调用的。...array_multisort是一个比较奇葩的函数,它的调用形式有很多 比如: array_multisort( $volume, SORT_DESC, $edition, SORT_ASC, $data...如果是数组,都当做排序数组。所以array_multisort可以排序不定个数个数组。顺序,以及排序方式都是通过获取数组之后的整形参数得到。如果没有,那就都默认。
我把crontab里面的命令复制出来,手工执行,依然可以正常执行,但是在crontab中执行了一部分,没有任何报错。 所以这几个现象让我感到很郁闷,看起来是多么简单的一个需求,竟然这么纠结。...我试了几种方式来排查这个问题,首先第1,2步通过输出日志验证是没有问题的。 所以我们的焦点就集中在了第3点和第4点。...在scp的部分我做了不下20次调试,最后肯定就是这个scp的命令部分存在问题,让我纠结的,还不知道是什么原因导致的,我们做了如下的排除工作。...这个问题让我调试的有些心力憔悴,明白了缘由,一鼓作气把脚本的其他逻辑都补充好了。...至此我对scp命令不会存在阴影了,也不会怀疑人生了,而反推这个过程,我依旧不能肯定自己能够快速定位到这个问题,所做的就是遵守一些基本的规范。
问题一:为什么React事件处理函数会丢失this?...这是因为,在React(或者说JSX)中,传递的事件参数不是一个字符串,而是一个实实在在的函数。...也就是说,在做onClick={this.handleClick}赋值操作后,React真正调用的是onClick(),而onClick是dom事件,并不是类中的方法,此时的this其实指向的是全局作用域...所以,这是一个JS本身的问题,而不是React的问题。可参考官方解释。 Handling Events 我们再看一下JS中this本身的陷阱,对比上面的例子,就更好理解了。...修改一个版本再看看。 let obj = { tmp:'Yes!'
在平时的工作中,desc这个命令可谓短小精悍,可以很方便的查看表结构和not null的情况。 今天在生产环境中碰到一个有些奇怪的desc问题。 首先是数据迁移组说有一个表的constraint丢了。...这种问题有两种可能,一种就是constraint确实丢了。...得到了对应的ddl语句,查看constraint是没有问题的。但是可以看到有一个奇怪的地方,就是constraint是disable的。...,发现这是一个数据字典中的信息不匹配造成的,应该是oracle的一个bug,查看metalink没有找到相关的bug id....我采用的步骤如下: 从生产的备份库中导出这个表的dump,然后导入另外一个测试环境中,可以看到在测试环境这个问题可以复现。 修复之前使用desc查看。
,和本文无关的我先抹去了。...奇怪之处不止在这里,第一个 buf 使用new分配空间并无不妥,在于第二个 buff,使用 new 申请空间,则会在第三次接收数据时出现脏数据,稳稳的,测了十几次,就是第三个数据包接收出问题(每个数据包内容都一样...诡异的不止于此,当第二个 buff 恢复正常之后,我想是不是堆区太乱了啊?于是就想把第一个 buf 也换成 char[8],但是又出现了脏数据的问题,这回更快,第一个数据包就出现了脏数据,无语得很。...我又想,不会是内存串了吧?于是我打印出地址,二者之间差了80个字节,有什么串不串的,而且我还 memset 了,依旧无济于事。 所以,这个 bug 是解决了吗?...我觉得没有,虽然能跑起来,但是我不知道为什么会这样,那就是没有解决。
今天一个dba交给我一个问题,让我帮忙查一下。说有个脚本运行的时候有错,让我看看是什么原因。 脚本的思路如下: 先drop PK,FK之类的constraint....然后把表改个名 然后重新创建一个表 然后加上PK,FK和其他的constraint 根据报错,貌似是primary key创建失败导致的。...这样我就看不懂了。 都已经drop了怎么index还没删除,我把脚本copy到本地,找了个测试环境试了下,脚本还是没有问题。 drop primary key的时候 index会自动删除。...我查了下Index的情况,结果index还是unique的。 这种情况貌似有些解释不清了,到底使我们的脚本有问题还是本来环境就有问题。 我大胆的假设了一下,假设环境本来有问题。...所以可以基本推论,可能是以上的情况导致的。 然后得到一些信息,之前这些表有一些问题,是手工修复的。很可能是以上的步骤导致的。 我提供了修复的脚本,这个问题就基本告一段落了。
在PHP开发过程中,可能有朋友经常会遇到Session所产生的文件无法自动清除的问题,其实并非真的无法清除,而是有一个概率问题,只要你的站点访问量足够大,那些文件就可以自动被清除掉。...如果访问量比较少,又看那些文件不顺眼的话,只要在php.ini里的配置一下即可实现Session文件自动清除的功能,具体配置如下: 找到 session.gc_probability = 1 session.gc_divisor...1000 上面这两项参数其实就是这个概率,默认情况下是1/1000 将 session.gc_divisor = 1000 改为 session.gc_divisor = 100 即可 如果想达到完全的实时
先上结论 , php的索引数组不是传统的从0开始的整数索引数组 , 而是一个关联数组 , 是一个有序的键值对 ,这个序就是定义时候的顺序 $arr=array('a','b') $arr[0] 这个的输出肯定是...a $arr=array(1=>'a',0=>'b') $arr[0] 输出b 说明php的索引数组 , 也是一个键值对 , 键是0 , 值是b 当用foreach循环的时候 , 顺序是按照插入时的顺序遍历...输出 1====>a 0====>b 所以从这个里面我们就很可能会出现一个错误 , 当我们想要第一个数组元素的时候 $arr[0] 实际上不是真正的第一个元素 可以使用reset()来方便地获取数组的第一个值...,或者用end()获取最后一个值。...reset()将内部指针会重置到数组的开头 first=reset(arr);
后来发现原因很扯竟然是 父父级div 设置了 overflow: hidden;
关于PHP数组Key的强制类型转换 PHP是弱类型语言,就像JavaScript一样,在定义变量时,不需要强制指定变量的类型。...同时,PHP又有着强大的数组功能,数组的Key即可以是普通的数字类型下标,也可以是字符串类型的Hash键值,那么,当一个数组的Key同时拥有字符串和数字时,会产生什么情况呢?...我们定义的"1"、1下标的值都变成了1.1的"aaa"了? 没错,PHP中的数组Key值只接受数字和字符串类型,当Key是字符串时,会强制转换为数字类型,遵守类型强制转换的规则。...它当然也不是一个标准的十进制数值。这里是违背了字符串转型数字的强制类型转换原则的,在变量的强制转换中,这两种字符串都会被转换为0,但在数组中则不会,这里会是一个坑,也是需要注意的地方。...在PHP官方文档中给出的Key值转换说明如下: 包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
这个过程中发现有一个主从复制的问题值得研究一下,虽然最后我解决了,但是具体的原因没有找到,还请大家帮忙看看,也算是集思广益了,如果某一天找到原因了,再回来更新一下。...但是细细一想,不可能,因为在服务器宕机之前连接是没有问题的,于是我仔细的查看了一下,使用stop slave ,start slave的方法进行复制关系重启,结果发现报错如下: mysql--root@...当时忘了查询一个地方,就是mysql系统数据库中的slave_relay_log_info表,这个表里面的信息本身应该存了relay_log_name的位置,这是一个值得怀疑的点,由于没有查看,这个问题...当时看到上面这些信息,我想着可能是没发通过常规的办法来解决这个问题了,所以就索性重新搭建主从复制关系,这个数据库上的数据大概有50G左右,万一复制关系断开了,其实修复起来还挺麻烦的,但是当时也没有更好的办法了...关于这次故障,跟系统那边聊过,他们也在评估中,目前排除机房断电的可能,关于硬件方面的问题排查,目前还在进行中,后续看看结果吧。
String时,可以使用以下方式指定字符集编码: // byteRequest为byte[]类型 String request = new String(byteRequest, "UTF-8"); 今天遇到一个问题...,同样的程序在Eclipse里面运行和打成Jar包用cmd运行,一个在解析请求会报错,另一个正常。...经检查发现是因为没有指定字符串的字符集导致的,操作系统默认的字符集和Eclipse可能是不一样的,所以会有这样的现象。 在序列化和反序列化的过程中要特别注意字符集的问题,尽量明确指定。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 多线程,作为一个开发者,这个名词应该不陌生。我在《对进程和线程的一些总结》中也有介绍,这里就不详述。...同样的,如果有一个任务特别耗时,而这个任务可以拆分为多个任务,那么就可以让每个线程去执行一个任务,这样任务就可以更快地完成了。 代价 听起来都很好,但是多线程是有代价的。...由于它们“同时”进行任务,那么它们任务的有序性就很难保障,而且一旦任务相关,它们之间可能还会竞争某些公共资源,造成死锁等问题。...在《一个奇怪的链接问题》中提到,对于非glibc库中的库函数,都需要显式链接对应的库。...也就是说,创建线程的时候,传入的参数必须确保其使用这个参数时,参数没有被修改,否则的话,拿到的将是错误的值, 总结 本文通过一些小例子,简单介绍了线程概念,对于绑核,多线程同步等问题均一笔带过,将在后面的文章中继续介绍
数据库中的浮点数会自动转成字符串,这个是正常的,特别注意不要直接通过json传递浮点数,会出现精度丢失或错乱的问题,所以还是转字符串后传递为好。...空数组转json不会自动转为对象,有数据才会转成对象,解决办法 法1 if(empty(arr)){arr=new \StdClass(); } 法2 echo json_encode( 未经允许不得转载...:肥猫博客 » PHP数组转json遇到的问题汇总
简单写一个递归函数: echo '运行前内存:' . round(memory_get_usage() / 1024 / 1024, 2) . ...'MB', PHP_EOL; recursive(); function recursive($i=1000){ if ($i<=0){ return false; }...'MB', PHP_EOL; recursive($i-1); } 可看到,内存占用将一直上升,直到运行完毕或者内存溢出强制退出,那么为什么会出现这样的情况呢?...主要是因为php的内存回收机制: php的垃圾回收机制 php只有在该函数执行完毕后才会进行回收,而该函数需要调用新的函数(递归),导致$data一直没有回收,直到执行完毕之后才会进行回收,所以造成了内存溢出...解决方案 解决方案也很简单,在使用完data之后,递归调用之前,进行unset销毁data即可: 本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn
领取专属 10元无门槛券
手把手带您无忧上云