易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
上月北京游时的一些小吃

上月北京游时的一些小吃

北京游时的小吃:

某天的早饭,骨头汤馄饨,包子是按两卖的,不是按个的。豆腐脑(好奇怪,与南方的完全不一样)

ec28b4182b50f43247efb8ebc1918a93

d0ff82b20647ac85ccc2cf39d462fff8

efb326b0a7b888465d47bb686c312289

石头带我去的特色,说是豆汁相对比较正宗,认为我喝不下,结果我喝大半碗,觉得还OK。小吃是大杂烩,每样买了点,正好是吃了上述的早饭,然后实在撑不下了。不过我还是吃了好多

eeebb8e293c9ed8466842f344dd0463d

d9095cd04c8b40b3a774b25630bcac39

4b7a36f887e41df79ec7cf84b00faa07

6063e028c964bb5e40b600ea7c3aae36

吃的特色馄饨店的馄饨。。(盘子上有字:馄饨候)

05bb4f3a30ece211e5e9e1714752cfb8

e21a3eda7d473306b911bd9624c9d799
说这个是玫瑰酥?我一看就觉得是月饼嘛。。上海这种N种花样的月饼太多了,吃了一个,好吧,不太习惯吃这种月饼,上海的月饼我也只吃肉的,比如老大坊的鲜肉月饼,黑黑

全文索引的苦逼记事一

全文索引的苦逼记事一

这是一篇未完成的博客,在这里面做了一点记录

场景:需要做一个关于标题的模糊查询,只是记录有点多,而且需要相对精确,比如搜索:ac, 不能出现abc,可以接受acb,bac,之类。
测试:
1、100万数据,mysql / mongo ,在这种情况下。无论是查询什么数据,基本上都在0.00x秒级,
mysql的查询是like '%xxxx%' , mongo 是 {title:/xxxx/i}
一般情况下,两者速度真心差不多,但如果查询一下不数据库中不存在的关键字,一般都在0.2秒至2秒左右,mongo会相对好一点,在0.5秒
2、500万~1000万数据
查询条件如上
mysql 查询的时候 cpu 占40%左右,20多秒 (mysql 1100万数据)
mongo 查询的时候 CPU占50%左右,10秒/8秒左右 (mongo 550万)
这种性能没法用啊
---下一步
1、xunsearch / coreseek(sphinx)
2、mysql 全文索引
需要再次测试一下。关键mysql虽然100万只有0.00x或者0.0x秒左右。但是如果多个并发的时候就会卡死了。
所以需要再次考虑 场景的复杂性
Shanghai PHP conference 2013(ThinkInLamp)

Shanghai PHP conference 2013(ThinkInLamp)

早上锅巴在群里发了个链接(http://www.php.net/conferences/)。一看,大为震惊,这真是很难得的事情:

ThinkInLAMP is pleased to announce the first Shanghai PHP conference 2013. This event will be held on Sunday June 30th 2013 in Shanghai, China. A community oriented conference which is organized by an excellent line up and socials.

This event will concentrate on PHP languages and web based technologies used today; extension, latest dynamics and new applications within the increased demand for developers and everyone who is interested in PHP language.

There will be more than 500 developers owned over 3 year’s experiences andsenior technical persons come for learning and networking. Register soon as the Early Bird discount rate expires on May 30.

Go to http://php.thinkinlamp.com/2013 for more information, we are looking forward to seeing you in June!

看到这个,你还有什么好犹豫的?赶紧拿起手中的电话,拨打thinkinlamp的参与热线吧

MySQL STRAIGHT_JOIN 与 NATURAL JOIN

MySQL STRAIGHT_JOIN 与 NATURAL JOIN

这是一篇文档的简要介绍,本来没有想过要提的,因为我以前真没用过straight join,看到这个名词其实是老王的一句话,他说,利用这个优化了SQL,于是就看了一下。果然发到了这句话:

STRAIGHT_JOIN 实际上与内连接 INNER JOIN 表现完全一致,不同的是使用了 STRAIGHT_JOIN 后,table1 会先于 table2 载入。
提示
MySQL 在执行 INNER JOIN 的时候,会根据自己内部的优化规则来决定先载入 table1 还是 table2,如果您确认 MySQL 载入表的顺序并不是最优化的时候,就可以使用 STRAIGHT_JOIN 以替代 INNER JOIN。

我参考的这页,说是关于mysql 的join有五篇:

本章节内容共分 5 部分:

  1. 1. MySQL JOIN 语法说明与 INNER JOIN 语法用法实例
  2. 2. MySQL LEFT JOIN 语法用法与实例
  3. 3. MySQL RIGHT JOIN 语法用法与实例
  4. 4. MySQL JOIN 多表连接
  5. 5. MySQL STRAIGHT_JOIN 与 NATURAL JOIN
  6. 确实 是值得一看。
关于APNS的一些事(是以前的补充)

关于APNS的一些事(是以前的补充)

在之前也写过一些关于apns的事情,不过都没有深究。都是抄抄改改,写写弄弄,近日 在与人讨论时,人说纯中文可以发76个汉字左右。当时我就想了,这不应该啊。apns总长度不能超过256字节,76个汉字。json_encode一下。一个汉字8个字节,早就超了不知道多少了。还要组成payload。。难道不超吗?

然后看了一下别人的函数,原来是用了一个自定义的json_encode。看了他的自定义json_encode之后,突然想起,风雪之隅在他的博客上提到过,5.4的json_encode加了一些参数(参考: 让Json更懂中文(JSON_UNESCAPED_UNICODE)),于是看了一下。json_encode($str,JSON_UNESCAPED_UNICODE)。计算下来的长度与那个自定义的json_encode一样了。

自此,记录下来。推送的时候也可以多推几个汉字了。(仅限php5.4,之前的版本还是网上找自定义的json_encode函数吧,关键字:中文自定义 php json_encode ,或者直接看:http://yige.org/p/458)

早期关于APNS的文章 :

type ttt struct{} var t ttt; 与 t := New(ttt) 有什么区别?

type ttt struct{} var t ttt; 与 t := New(ttt) 有什么区别?

在实际中遇到了标题的问题,即:

type ttt struct{}
var t ttt;
与
t := New(ttt)
有什么区别?
包括手册上都说好象没啥区别( 我记得好象是《go 云动力》)
但是我在测试jsonrpc的时候,用 var t ttt的方式 时:
2013/05/31 12:46:35 rpc.Register: type Arith has no exported methods of suitable type (hint: pass a pointer to value of that type)
换成t:=New(ttt),就OK了
------
新手,暂时不知其所以然,先记录和备份一下
golang将byte的int转换

golang将byte的int转换

在使用golang做数据传输的时候,会经常遇到byte与int的互转,但golang并没有现成的方法,因此只能通过binary包来解决

所以,需要 :import "encoding/binary",又因为是byte的转换,所以还涉及到了bytes:import "bytes"

代码如下:

package main

import (
"bytes"
"encoding/binary"
"fmt"
"strings"
)

func main() {
b := []byte{0x00, 0x00, 0x03, 0xe8}
b_buf := bytes.NewBuffer(b)
var x int32
binary.Read(b_buf, binary.BigEndian, &x)
fmt.Println(x)

fmt.Println(strings.Repeat("-", 100))

x = 1000
b_buf = bytes.NewBuffer([]byte{})
binary.Write(b_buf, binary.BigEndian, x)
fmt.Println(b_buf.Bytes())
}
基本上就这么解决了。其实下面不赋值x也无所谓。因为本来就是1000

golang的json处理

golang的Json处理还算是比较方便的吧?

比如:json.Marshal就完成了处理。
OK,开始说事儿:
1、
var s = make(map[string]interface{})
s["userid"] = "123"
s["time"] = "12345"
result , _ = json.Marshal(s);
println(string(result))
这时候你会发现,打印出来的json数据。。。time居然在前面。。。map没有顺序,果然是这样的。
那怎么把userid放在最前面呢?
2、type JsonData struct{
UserId string `json:"userid"`
Time string `json:"time"`
}
j := JsonData{UserId:"123",Time:"12345"} result,_ = json.Marshal(j); println(result); 这时候出来的才是按顺序的json数据
这两种情况根据需要写吧。其实我自己是比较偏向于第一种,json要顺序干嘛。不过有些程序写的比较硬编码,不是按JSON解析的话,就只能用第二种,定义标准的输出了。。
再加上之前我也记录过,json.Marshal,只针对struct中的首字符大写的KEY进行encode,小写直接就忽略,所以还必须得写上tag。好痛苦的事情啊
win7下提示文件名过长,无法删除

win7下提示文件名过长,无法删除

今天在备份移动硬盘的时候,突然提示我文件名过长,无法删除。
按F2也无法重命名,一直提示:文件名过长
这个文件名是我的Sandbox中自动生成的IE的缓存文件。

网上找了很多资料都说这个无法避免
1、命令行move无效,命令行Ren无效,命令行rd无效,命令行Delete无效
2、最后看资料,说这有两种情况,1是本身文件名确实很长,2是全路径很长,即所有路径加起来,导致超过N个字节(3xxxx字节),这明显不可能嘛 。于是我尝试将这些Content.IE的目录一级级的往外拷贝,直到根目录。然后重命名成任意目录,再执行删除,成功

备份一下这次的操作过程。下次可以做参考