今天用rtrim()函数时遇到了一个奇怪的问题:
echo rtrim('</div>', '</div>'); // 输出为 <p echo ltrim('www.cnblogs.com','www.'); // 输出为 cnblogs.com
以上的输出结果有点出人意料,本来我想第一行应该输出
,第二行会输出cnblogs.com。
今天用rtrim()函数时遇到了一个奇怪的问题:
echo rtrim('</div>', '</div>'); // 输出为 <p echo ltrim('www.cnblogs.com','www.'); // 输出为 cnblogs.com
以上的输出结果有点出人意料,本来我想第一行应该输出
,第二行会输出cnblogs.com。
今天本来是想测试一下在使用触发器的情况下在一个表中插入1百万条数据和用代码实现有多大差别。但没想到插入语句一直执行不完,而观察安装MySQL的服务器CPU使用才5%左右。
这么慢的速度实在等不下去了,于是把innodb_flush_log_at_trx_commit参数调整为2.哈,好家伙,CPU占用马上跳到了70%左右,果然变快了。而且我的数据一会儿就插入完成了。于是深刻地明白了,以前在innodb_flush_log_at_trx_commit为1的时候,大多数时间CPU都在等待日志的读写。
Lua 具有一项与众不同的特性,允许函数返回多个值。Lua 的库函数中,有一些就是返回多个值。
介绍注册中心的功能的小节,我们曾经说过,注册中心要有持久化的操作,将一些服务的审核信息放到硬盘上,这样做的原因就是因为我们所有的服务信息都是放在内存里面的,如果注册中心的实例宕掉,或者服务器因为某种原因停止的时候,这样某些服务的审核记录就无法找回,为了避免这样的问题,我们需要做的事情就是把这些服务审核信息定时刷盘,把这些信息保存到硬盘上去,然后每个注册中心服务启动的时候,去硬盘上去恢复这些信息,这样就可以规避这样的问题了
Go 语言里面定义变量有多种方式。
使用 var 关键字是 Go 最基本的定义变量方式,与 C 语言不同的是 Go 把变量类型放在变量名后面:
// 定义一个名称为“variableName”,类型为"type"的变量 var variableName type
对于比较底层的模块,内部使用到的非本地函数,都需要 local 本地化,这样做的好处:
如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器(如:Tomcat)所有的请求,包括静态资源(js/css/image)的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误。
为什么要有引用计数器
Netty里四种主力的ByteBuf,其中UnpooledHeapByteBuf 底下的byte[]能够依赖JVM GC自然回收;而UnpooledDirectByteBuf底下是DirectByteBuffer,如 Java堆外内存扫盲贴 所述,除了等JVM GC,最好也能主动进行回收;而PooledHeapByteBuf 和 PooledDirectByteBuf,则必须要主动将用完的byte[]/ByteBuffer放回池里,否则内存就要爆掉。所以,Netty ByteBuf需要在JVM的GC机制之外,有自己的引用计数器和回收过程。
一下又回到了C的冰冷时代,自己malloc对象要自己free。 但和C时代又不完全一样,内有引用计数器,外有JVM的GC,情况更为复杂。