0%

Other

我连的是MySQL数据库,但是在服务器下运行jsp文件时会出现如下的状况:

控制台报错:com.mysql.jdbc.Driver

即不能找到驱动程序,通过我的一次次试验,终于得到解决

首先我的代码编写是没有问题的,而且我已经在eclipse下的jar库中导入了jdbc驱动文件。直接运行java应用程序

运行java应用程序,结果如图所示,成功连接上数据库并打印输出了teacher表中所有数据。

jsp中的代码如图所示:即引用了该java文件并打印输出

但是通过tomcat运行程序,控制台报错:com.mysql.jdbc.Driver

可以说明没有找到该驱动程序,说明我们放在改project下的驱动程序是没有应用上的。

内部原理是:jsp文件先转化成java文件,再编译成class文件在tomcat下执行,所以调用的驱动程序应该置于tomcat根目录下。然后

我把这个jdbc驱动程序放在了tomcat的lib目录下,再次运行。

继续报错:com.mysql.jdbc.Driver

仍然没有找到驱动程序,最后发现是忘记了配置环境变量,这个很重要。

打开环境变量配置页面,在CLASSPATH中,加入

D:tomcat 6.0apache-tomcat-6.0.29libmysql-connector-java-5.0.8-bin.jar

注:读者路径不一定和我一样,我把tomcat放在了D盘

如图:

接下来运行,测试

成功!!没有报错,运行结果如图:

成功解决!有问题的可以评论,看到后我会及时回复的!希望对大家有帮助!

Other

声明:本文章参考中国派论坛,尊重版权,本文章予以整理。

一、【刷机准备】

1、备份你手机上的重要资料 2、下载MIUI刷机包 金立ELIFE E6刷机MIUI ROM

http://yun.baidu.com/s/1jGp2QQ6

3、将刷机包放进手机U盘的根目录下,保存备用。

二、【刷入第三方Recovery】 必须先刷入第三方Recovery,具体刷入教程请参看:

1、首先下载这三个文件:

刷机驱动:

http://pan.baidu.com/s/1kThZnE3

刷机工具: http://pan.baidu.com/s/1qWIwRco

金立中文恢复系统(第三方Recovery):

http://pan.baidu.com/s/1kTHRdcV

放到同一个文件夹解压备用。

2、安装驱动:

刷机驱动下载解压,打开后见下图所示

点击刷机驱动-自动安装,再点击InstallDriver安装驱动。

成功后如图所示:

3、刷机:

请注意刷机前一定要备份好自己的重要资料,联系人,短信备份,否则刷机完毕后会丢失。

然后关闭手机,取出SIM卡,以免造成损坏。先不要用USB线连接手机!下载解压刷机工

具,然后打开见下图所示,点击

Flash_tool.exe

下图是打开后的刷机界面:

按照下面的操作步骤操作,图片上标有序号.点击Scatter-loading,然后选择刚才下载的中文恢复系统文件夹,

选择图片所示文件,点击打开。

然后点击Download,这时会出现一个提示框,点击是。在此前一定不要连接手机!

上面的操作执行结束后,手机关机连接电脑即可开始识别。识别后自动开始刷入,识别过程红色进度条,刷入过程黄色进度条。

最后刷机成功后会显示绿色的圆圈。

如果你看到如下界面恭喜你刷机成功。

三、【获取超级权限(root)】

注意:这是必要的一步,刷入系统需要获取手机最高权限,好多网友会担心相机丢失和卡顿问题,此方法完全不会出现此情况,请放心使用。

也就是说这也是完美ROOT的方法。但该步操作会全部清空手机数据,请在此之前一定备份好联系人和其他重要资料!

1、成功刷入后,手机关机,然后同时按住音量上键和电源键,等待手机界面出现ELIFE时,同时松开音量上和电源键 手机进入Recovery模式如下

如下图:

2、选择第一项重启手机,进入如下界面

3、选择第一项【取消—返回】,进入如下界面,这时如果你的手机未ROOT,它会提示你是否需要ROOT,

请选择【Root device】即可,这时手机会自动重启,你的手机已成功ROOT

4、重启开机,为了使你的手机更安全,建议你手动安装超级授权管理,下载地址如下:

http://yun.baidu.com/s/1gd7PQON

导入到SD卡中,将其安装.

四、【刷入MIUI】

1、再次关机,然后同时按住音量上键和电源键,等待手机界面出现ELIFE时,同时松开音量上和电源键 手机进入Recovery模式如下如下图:

屏幕显示如下: -重启手机 -选择SD卡上的ZIP刷机包 - 从电脑从ADB刷入刷机包 -清空DATA/恢复出厂设置————————》此为双清(双W) -清空CACHE 分区 —————————》此为双清(双W) -备份和恢复 -挂载分区/U盘模式 -高级2、双清 a. 清空DATA/恢复出厂设置(音量上下键移动,电源键确定) 确认后会出现几个”NO” 与”Yes—delete all user data”组成的画面 音量下键 移动光亮条移动至Yes—delete all user data 电源键确认 b.清空CACHE 分区 具体步骤参见a 3、 双清完毕 选择第二项 选择SD卡上的ZIP刷机包 4、 点击进入后 选择第一项 从SD卡选择刷机包 5、 音量+键 找到刚才放在手机U盘的刷机包 选择Rom包 6、选择【是】 刷机开始 等待刷机完毕 请耐心等待 7.、刷机完毕 点击【返回】到如下界面

8、选择【 重启手机】 9、手机自动重启,刷机成功,到此大功告成!

五、全新的界面如下:

Other

1、首先要下载git安装

百度git,第三个git for windows就是

然后点击下载,下载最新版本就好了,这个很简单的,安装的时候直接下一步下一步就好了。不再赘述

2.首先在京东云擎上创建一个项目,我创建的PHP项目

其中域名访问是你预览项目的网址,git地址是代码保存的地址,点击复制可以复制下git地址,一会我们会用到

3.git使用

我们在电脑上创建一个文件夹用来保存项目,比如我创建了hello文件夹,如图所示,现在文件夹还是空的

我们把新建项目上的东西拉下来,在该处右击会出现选项菜单,有一个GIt Init Here,点击一下初始化该项目文件夹,点击后应该会出现.git文件夹,如果没有出现那么则是隐藏了,在控制面板调节显示隐藏文件夹就好了

再右击点击Git Bash,类似命令行的窗口就弹出来了,让我们先把网络上的项目下载到hello文件夹中,点击刚才的京东云擎,把git地址复制下来在命令行中写入

git pull https://code.jd.com/18366119732_p/jae_cqctest.git

他会提示你输入用户名和密码,输入之后会出现下列文件,说明pull成功了

打开文件查看下,这是建立项目默认的配置

我们把index文件修改下,比如修改成

继续打开Git Bash

输入git add . 把所有文件添加,然后git commit -m ‘x’ 其中commit是提交确认,-m ‘x’修改描述信息,x可以随便改,如图所示

你可以自定义路径名

git remote add origin https://code.jd.com/18366119732_p/jae_cqctest.git 添加远程仓库

也就是把这个网址保存为origin,以后就可以利用origin 来代替这个网址了,方便一些

另外

git remote -v 是查看所有定义的变量

git remote rm origin 为删除远程仓库

我们现在把刚才的网址定义为远程仓库

现在把本地文件上传

输入git push origin master,用户名密码

origin是代表远程仓库,master是分支,上传到该分支

出现如图所示界面说明成功了

刷新下原来的界面,可以看到你最近上传的东西

点击部署,一键部署

然后再点击访问就可以看到index中页面内容了

Other

1.绘制子图 subplot

1
2
3
>> subplot(1,2,1)
>> subplot(1,3,1)
>> subplot(2,3,1)

subplot 函数代表绘制子图,三个参数,第一个代表绘制一共绘制几行小图表,第二个代表绘制几列小图表,第三个代表绘制第几个小图表。此命令也可以用来选定绘制哪个图

2.注释标记 text

1
2
3
>> text(1,5,'线宽度为4')
>> subplot(1,2,1)
>> text(0.5,0.5,'线宽度为1')

text 函数用来绘制注释,三个参数,第一个是x坐标,第二个为y坐标,第三个为文字。

3.获得句柄值属性 get

1
2
3
4
5
6
7
8
9
>> get(h1)
DisplayName =
Annotation = [ (1 by 1) hg.Annotation array]
Color = [0 0 1]
LineStyle = -
LineWidth = [0.5]
Marker = none
MarkerSize = [6]
MarkerEdgeColor = auto

用来获取句柄值属性,一个参数传入句柄值即可

4.设置句柄值属性 set

1
>> set(h2,'LineWidth',4)

用来设置句柄值属性,三个参数,第一个为句柄值,第二个为属性名,第三个为属性值

5.矩阵的拼凑 [h1;h2] [h1 h2]

1
2
3
>> h1 = [2 3 4]
>> h2 = [4 5 6]
>> h = [h1;h2]

h则变为h1和h2叠成的矩阵,即h1在上h2在下

1
2
3
>> h1 = [2 3 4]
>> h2 = [4 5 6]
>> h = [h1 h2]

h则变为h1和h2左右拼接成的矩阵,即h1在左h2在右

6.二维作图 plot

(1) plot(Y)

①参数为向量:

1
>> plot([2 3 4])

作图时则

作(1,2),(2,3),(3,4)的直线

②参数为矩阵:

1
>> plot([1 2 3;4 5 6])

则作(1,1)(2,4)和(1,2)(2,5)和(1,4)(2,6)的直线

(2)plot(X,Y)

①参数为向量和向量

1
>> plot([1 2 4 ],[2 3 7])

作一条直线过(1,2)(2,3)(4,7)

②左向量右矩阵

1
>> plot([1 2 3],[2 3 4;5 6 7])

作图(1,2)(2,3)(3,4)直线和(1,5)(2,6)(3,7)直线 ,共两条

③左矩阵右向量

1
>> plot([1 2 4;3 4 1],[2 3 7])

作图(1,2)(2,3)(4,7)和(3,2)(4,3)(1,7)直线,共两条

④左矩阵右矩阵

1
>> plot([1 2.9 3;4 5 8],[2 3.5 4;5 6 7])

作图三条直线,第一个矩阵的第一列和第二个矩阵第一列为一条直线,第一个矩阵的第二列和第二个矩阵的第二列为一条直线…依次类推,共三列,故三条

(3)plot(X1,Y1,X2,Y2…)

同理,会增加X2和Y2形成的直线

(4)plot(X,Y,LineSpec,…)

可以加一些属性,其中LineSpec为属性,后面的..则为附加属性

1
2
3
>> plot(x,y,'--ro','LineWidth',4)
>> plot(x,y,'--ro','LineWidth',6)
>> plot(x,y,'--ro','LineWidth',6,'MarkerSize',12)

线型: - 实线 — 虚线 : 点线 -. 点画线

描点:. 点 o 圈 x 叉号 + 加号 * 星号 > 右三角 ^ 上三角 v 下三角 < 左三角 s 方形 d 菱形 p 五角星 h 六角星

颜色: r 红 y 黄 b 蓝 w 白 k 黑

另外的属性可以通过get 获取

7.为坐标加标签 xlabel ylabel

1
2
>> xlabel('x') %为x轴加标签
>> ylabel('y') %为y轴加标签

分别为x轴和y轴加上标签

8.图形保持功能 hold

1
2
>> hold on  %开启图形保持功能
>> hold off %关闭图形保持功能

hold on为开启图形保持功能,hold off 为关闭图形保持功能
9. 显示或隐藏坐标边框 box

1
2
>> box on    %开启坐标边框
>> box off %关闭坐标边框

box on 显示 box off 关闭 左边边框即为右侧和上方的坐标框,坐标系依然存在

10.添加或消除网格 grid

1
2
3
>> grid on      %显示网格
>> grid off %关闭网格
>> grid minor %显示次网格

11.为坐标系添加标题 title

1
2
3
4
>>title('string')     %为坐标系添加标题
>>title(...,'Property','Value') %设置标题属性
>>h = title(...) %获得句柄值
>>get(h) %获得句柄值的属性

12.添加文字标注 text

1
2
>>text(x,y,'string')
>>text(1,2,'OK') %添加标记

13.设置坐标系属性 axis

1
2
3
4
5
6
7
>> axis on %显示坐标线
>> axis off %关闭坐标线
>> v = axis %显示坐标线范围
>> axis tight %不显示多余部分
>> axis fill %坐标系充满显示框
>> axis equal %坐标纵横比相同
>> axis square %坐标区域为正方形

14. 显示图形标注框 legend

1
>> legend('string1','string2,...')  %标注各个画线代表什么

15.生成间隔向量 linspace

1
>> t = linspace(0,2*pi,60) %生成等间隔从02pi的60个元素向量

16.绘制匿名函数 fplot

1
2
>>  f = @(x)200*sin(x)/x; %声明匿名函数表达式
>> fplot(f,[-20 20]) %绘制函数

17.绘制隐函数 ezplot

1
2
>> ezplot('3*x.^2+2*x*y+4*y.^2=5') %直接输入隐函数表达式
>> ezplot('3*x.^2+2*x*y+4*y.^2=5',[-1 1]) %直接输入隐函数表达式,并加入x的范围

18.绘制饼状图 pie

1
2
3
4
>> x = [10 10 30 42 23]; %输入各个值
>> name = ['1','2','3','4','5']; %输入各个名字
>> explode = [0 0 0 0 1] %将第五个分离出来
>> pie(x,explode,name) %绘制饼状图

19.绘制柱状图 bar

1
2
3
4
5
6
>> subplot(1,2,1)
>> x = [3 4 2 1]; % 每列一个
>> bar(x)
>> subplot(1,2,2);
>> y = [4 5 2 4;6 4 1 2]; % 每列两个
>> bar(y)

Other

1.匿名函数定义

1
2
3
4
5
6
>> f = @(x)x.^2;
>> fx = f(1:10)

fx =

1 4 9 16 25 36 49 64 81 100
1
2
3
4
5
>> g = @(x,y)x.^2+y.^2;
>> gxy=g(1:10,2:11)
gxy =

5 13 25 41 61 85 113 145 181 221
1
2
3
4
5
6
7
8
9
10
11
12
13
>> g = @(a,b)@(x)a*x+b;
>> h = g(2,3);
>> h

h =

@(x)a*x+b

>> k = h(2)

k =

7

2.嵌套函数

1
2
3
4
5
6
7
8
function r =MytestFunction(input)
a = 5;
c = sin(input)+tan(input);
function y = nestedfun(b);
y = a*c+b;
end
r = nestedfun(5);
end
1
>> r = MytestFunction(5)
1
2
3
4
5
6
7
8
9
10
11
12
function r = NestFunction3(a)
b = a+1;
function x = nest1(m)
x = m+1;
function nest2
n = x+1;
end
nest2;
end
nest1(b);
r = n;
end
1
>> NestFunction3(5)

注:变量作用域范围,嵌套函数访问父函数的变量,可以在函数定义里面直接拿来用,父函数访问访问嵌套函数必须在经过调用之后才能调用.

第二重嵌套函数可以调用不包含它的第一重嵌套函数,即子函数可以求助于叔伯,但第三重函数不能调用它的第二重嵌套函数,非直系关系。

函数关系比喻成父子孙等关系,函数调用比喻成一个人求助一个人,规律如下:

父亲可以求助儿子,儿子可以求助父亲,父子可以互相求助。一个人不能求助孙子,重孙等后代,但可以求助直系祖宗如祖父曾祖父等以及和直系祖宗是亲兄弟的先人。一个人可以求助亲兄弟或者亲叔伯,不能求助侄儿。

3.求函数零点

1
2
3
4
5
6
>> f = @(x) exp(x)+x.^2+x.^(sqrt(x))-100;
>> x0 = fzero(f,3)

x0 =

4.163549956946139

fzero 函数为求零点的函数,第二个参数是基准点,即求3附近的零点.

1
2
3
4
5
6
7
8
9
>> x0 = fzero(f,[2,5])

x0 =

4.163549956946138

>> x0 = fzero(f,[2,3])
Error using fzero (line 274)
The function values at the interval endpoints must differ in sign.

另外可以规定区间如上所示

4.显式表达y关于x的隐函数

例如:(e^y+x^y)^(1/y)-x^2y =0

则可以用匿名函数表示为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>> y = @(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1)

y =

@(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1)

>> y1 = y(1)

y1 =

2.7779

>> y2 = y(2)

y2 =

1.1055

在外面嵌套一层 arrayfun 即可向量输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>  y = @(xx)arrayfun(@(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1),xx)

y =

@(xx)arrayfun(@(x)fzero(@(y)(exp(y)+x^y)^(1/y)-x^2*y,1),xx)

>> y(1:10)

ans =

Columns 1 through 7

2.7779 1.1055 0.7759 0.6284 0.5425 0.4856 0.4446

Columns 8 through 10

0.4135 0.3889 0.3689

例如:对于a=[0,0,01,0,02,…,2],求方程f(x)=e^x+x^a+x^(sqrt(x)) = 100的x的值,并画出a和x的图像

则可以把它理解为一个隐函数关于x和y变化.

1
2
3
4
x = @(a) fzero(@(x) exp(x)+x^a+x^(sqrt(x))-100,4)
h = @(xx)arrayfun(@(a)fzero(@(x)exp(x)+x^a+x^(sqrt(x))-100,4),xx)
a = 0:0.01:2;
plot(a,h(a))

或者

1
2
3
4
5
6
7
8
>> f = @(a)@(x)exp(x)+x^a+x^(sqrt(x))-100
f =
@(a)@(x)exp(x)+x^a+x^(sqrt(x))-100
>> f(a)
ans =
@(x)exp(x)+x^a+x^(sqrt(x))-100
>> aa = 0:0.01:2;
>> plot(aa,arrayfun(@(a)fzero(f(a),4),aa))

5.创建符号对象

1
2
3
4
5
6
7
8
9
10
11
>> a = sym('5');
>> b = sym('b');
>> syms c d e;
>> whos
Name Size Bytes Class Attributes

a 1x1 112 sym
b 1x1 112 sym
c 1x1 112 sym
d 1x1 112 sym
e 1x1 112 sym

6.常用函数

vpa指定有效数字位数显示符号数值对象,如

1
>> vpa(pi,30)

求极限和导数和级数:

1
2
3
4
5
limit(f,v,a)  %求极限lim v->a f(v)
limit(f,v,a,'right') %求右极限
limit(f,v,a,'left') %求左极限
diff(f,v,n) %求f(v)的n阶导数
taylor(f,n,v,a) %求f(v)在v=a处展开到n次的泰勒级数

例子:

求极限lim n->+Inf (n^(n+1/2))/e^n*n!

1
2
3
4
5
6
>> syms n
>> limit(n^(n+1/2)/exp(n)*gamma(n+1),n,inf)

ans =

Inf
1
2
intf = int(f,v)   %求以v为自变量的函数f的不定积分
intf = int(f,v,a,b) %求以v为自变量的函数f从a到b的定积分

例如:

1
2
3
4
5
6
>> syms x
>> s = int(1/(x*sqrt(x^2+1)),x)

s =

-asinh((1/x^2)^(1/2))

求三重积分:

1
2
3
4
5
6
>> syms x y z
>> result = int(int(int((x+y)/z,z,x*y,2*x*y),y,x,2*x),1,2)

result =

(35*log(2))/6

Java

原题:

1
2
3
4
2n个人排队进电影院,票价是50美分。在这2n个人当中,其中n个人只有50美分,另外n个人有1美元(纸票子)。愚蠢的电影院开始卖票时1分钱也没有。
问: 有多少种排队方法 使得 每当一个拥有1美元买票时,电影院都有50美分找钱
注: 1美元=100美分
拥有1美元的人,拥有的是纸币,没法破成250美分

解题方法:

此题可以用递归方式求解,详细求解过程如下:

符合条件的情况必须是拥有1美元的人前方必须要有50美分的人来排队,要不然不可能找零开,即必须满足从头数50美分的人数大于1美元的人数.

我们直接求解符合条件的情况.我们先不考虑持有50美分的人的次序,仅考虑持有1美元的人的次序,最后的结果再乘以n! 就可以了.

可以转化为50美分的人已经排好,由持有1美元的人进行插空排列.

首先1美元的人是不可能插到队头的,所以可以插的空有n个.

定义一个函数f(n.m),这表示有n个1美元的人插m个空的方法数,这m个空是从队尾向前数的m个空的位置.

比如f(4,4)的求解

●1●2●3●4 黑点表示50美分的人,1234表示可以插的空

第一个空可以有0人,可以有1个人.但不可能有2个人及以上

1.当有1人的时候,这个位置4个人四选一,剩下的方式为f(3,3),故为4*f(3,3)

2.当没有的人的时候,则方式为f(4,3)

所以排列方式为f(4,4)=4f(3,3)+f(4,3)=A(4)(0)f(4,3)+A(4)(1)*f(3,3)

注:A(m)(n)在此表示m!/(m-n)! 如A(4)(2)表示4x3=12.A(5)(3)表示5x4x3=60.

再如:f(4,3)的求解

是四个人插后三个空,

● ●1●2●3 黑点表示50美分的人,123表示可以插的空

第一个空可以没人,可以1个人,可以2个人,但不能有3人及以上.

1.当有0人的时候,则只有四个人插后两个空了,即为f(4,2)

2.当有1人的时候,选其中1人,四选一,剩下的3人插2个空,方法数为4*f(3,2)

3.当有2人的时候,选其中的2人,四选二排列,剩下的2人插两个空,方法数为A(4)(2)*f(2,2)

所以排列方式为f(4,3)=f(4,2)+4f(3,2)+A(4)(2)f(2,2)=A(4)(0)f(4,2)+A(4)(1)f(3,2)+A(4,2)*f(2,2)

发现规律了吗?在此我们可以总结出递推式

所以最后的结果就简单了,我们再乘上50美分的人的全排列就是最后的结果了.

最后的答案即为A(n)(n)*f(n,n)

JAVA代码实现如下:

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
26
27
28
29
30
31
32
33
34
35
36
37
/*
* 排队问题求解
*/
import java.math.*;
public class Solve {
public static void main(String[] args) {
//n的值
int n =7;
//求得结果
System.out.println(getNumber(n,n).multiply(getResult(n,n)));
}
//即为f(n,m)函数实现
static BigInteger getNumber(int n,int m){
//当m=1返回Ann即n!
if(m==1) return getResult(n,n);
//初始化result=0
BigInteger result =new BigInteger("0");
for(int i=0;i<=n-m+1;i++){
//利用递归式子求解
result=result.add((getResult(n,i)).multiply(getNumber(n-i,m-1)));
}
return result;
}
static BigInteger getResult(int m,int n){
//求Amn
BigInteger result =new BigInteger("1");
int count=0;
//如果n为0,返回Am0即为1
if(n==0) return new BigInteger("1");
for(int i=m;;i--){
result =result.multiply(new BigInteger(""+i));
count++;
if(count==n) break;
}
return result;
}
}

利用了BigInteger求解,防止越界的出现.在main函数里可以修改n的值来计算.

PHP

1
首先贴一段示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
include "con_db.php";//连接数据库
$sql="select * from note order by note_date desc limit ".($index*10).",10"; //sql语句
$result=mysql_query($sql);//获得结果
$note;$i=0; //初始化变量
while($infor=mysql_fetch_array($result))
{
//把结果放到一个一维数组里
$note["id"]=$infor['note_id'];
$note["content"]=$infor['note_content'];
$note["date"]=$infor['note_date'];
$note["username"]=$infor['username'];
//放到二维数组里
$notes[$i++]=$note;
}
echo json_encode($notes );
?>

输出结果:

1
2
3
[{"id":"12","content":"u662f","date":"2014-05-24 09:31:52","username":"u532f"},
{"id":"31","content":"u642f","date":"2014-05-24 09:31:49","username":"u322f"},
{"id":"70","content":"u692f","date":"2014-05-24 09:31:48","username":"u132f"}]

你会发现应该输出的汉字变成了unicode字符集.

这时我们就要用到urlencode的方法,把汉字用urlencode方法编码,转化为json之后再用urldecode解码.看如下例子:

1
2
3
4
5
6
<?php
$h =urlencode("开心");
echo $h;
$x =urldecode($h);
echo $x;
?>

输出结果:

1
%BF%AA%D0%C4开心

这样通过中间过程的编码和解码,转化成json的过程便不会自动把汉字变成Unicode字符集了.所以最后的方法为:

1
2
3
4
5
6
7
8
9
10
11
<?php
while($infor=mysql_fetch_array($re))
{
$note["id"]=$infor['note_id'];//数字不需要编码
$note["content"]=urlencode($infor['note_content']);//汉字需要编码
$note["date"]=$infor['note_date'];
$note["username"]=urlencode($infor['username']);
$notes[$i++]=$note;
}
echo urldecode(json_encode($notes ));//转化成json之后再用urldecode解码为汉字
?>

结果如下:

1
2
3
[{"id":"22","content":"文章","date":"2014-05-24 09:31:52","username":"王"},
{"id":"21","content":"内容","date":"2014-05-24 09:31:49","username":"李"},
{"id":"20","content":"可以","date":"2014-05-24 09:31:48","username":"冯"}]

这样我们就成功地把二维数组转化成了json了.

如有问题,请在下方评论,我会及时回复的.

PHP

大家应该遇到这样一个问题,我们利用wamp做服务器运行网页的时候,网页地址栏显示的图标一直是wampserver默认的图标,想改一下怎么办呢?

问题如下:

就是这些图标,如何自定义自己的图标,而不是wamp默认图标。

首先这个图标大小像素为16x16,大家可以自己制作,也可以上传图片来制作.

最好为ico格式的,如果想要上传图片制作的话可以访问这个网址:http://www.bitbug.net/

可以为你生成一个icon图标.

比如我生成的图标命名为favicon.ico

我们需要将其放在www文件夹下,你的项目文件夹里面.

比如这样:

然后在index.php文件中插入代码如下:

保存重新刷新一下。

这下我们就会发现地址栏的图标已经更换成功啦!

C/C++

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
//    CCTransitionJumpZoom
// 作用: 创建一个跳动的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionJumpZoom ::create(t , s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionProgressRadialCCW
// 作用: 创建一个扇形条形式的过渡动画, 逆时针方向
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressRadialCCW::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionProgressRadialCW
// 作用: 创建一个扇形条形式的过渡动画, 顺时针方向
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressRadialCW::create(t,s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionProgressHorizontal
// 作用: 创建一个水平条形式的过渡动画,
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressHorizontal ::create(t,s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionProgressVertical
// 作用: 创建一个垂直条形式的过渡动画,
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressVertical::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionProgressInOut
// 作用: 创建一个由里向外扩展的过渡动画,
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressInOut::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionProgressOutIn
// 作用: 创建一个由外向里扩展的过渡动画,
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionProgressOutIn::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionCrossFade
// 作用:创建一个逐渐透明的过渡动画
// 参数1:过渡动作的时间
// 参数2:切换到目标场景的对象
// reScene = CCTransitionCrossFade::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionPageTurn
// 作用:创建一个翻页的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// 参数3:是否逆向翻页
// reScene = CCTransitionPageTurn::create(t, s, false);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionFadeTR
// 作用:创建一个部落格过渡动画, 从左下到右上
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene =CCTransitionFadeTR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionFadeBL
// 作用:创建一个部落格过渡动画, 从右上到左下
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionFadeBL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionFadeUp
// 作用:创建一个从下到上,条形折叠的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene= CCTransitionFadeUp::create(t, s);
// CCDirector::sharedDirector()->replaceScene(s);

// CCTransitionFadeDown
// 作用:创建一个从上到下,条形折叠的过渡动画
// 参数1:过渡动作持续的时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionFadeDown::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionTurnOffTiles
// 作用:创建一个随机方格消失的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene= CCTransitionTurnOffTiles::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionSplitRows
// 作用:创建一个分行划分切换的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionSplitRows::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionSplitCols
// 作用:创建一个分列划分切换的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionSplitCols::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionFade
// 作用:创建一个逐渐过渡到目标颜色的切换动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:目标颜色
// reScene= CCTransitionFade::create(t, s, ccc3(255, 0, 0));
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionFlipX
// 作用:创建一个x轴反转的切换动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量 左右上下
// kOrientationDownOver kOrientationLeftOver kOrientationRightOver kOrientationUpOver
// reScene = CCTransitionFlipX::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionFlipY
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量 左右上下
// reScene = CCTransitionFlipY::create(t, s
// , kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionFlipAngular
// 作用:创建一个带有反转角切换动画
// // 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量 左右上下
// reScene = CCTransitionFlipAngular::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionZoomFlipX
// 作用:创建一个带有缩放的x轴反转切换的动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量 左右上下
// reScene=CCTransitionZoomFlipX::create(t, s, kOrientationLeftOver);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionZoomFlipY
// 作用:创建一个带有缩放的Y轴反转切换的动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量 左右上下
// reScene=CCTransitionZoomFlipY::create(t, s, kOrientationDownOver);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionZoomFlipAngular
// 作用:创建一个带有缩放 ,反转角切换的动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// 参数3:反转类型的枚举变量 左右上下
// reScene=CCTransitionZoomFlipAngular::create(t, s, kOrientationRightOver);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionShrinkGrow
// 创建一个放缩交替的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionShrinkGrow::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionRotoZoom
// <span> </span> 创建一个旋转放缩交替的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionRotoZoom::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionMoveInL
// 作用:创建一个从左边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionMoveInR
// 作用:创建一个从右边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionMoveInB
// 作用:创建一个从下边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInB::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionMoveInT
// 作用:创建一个从上边推入覆盖的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene = CCTransitionMoveInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionSlideInL
// 作用:创建一个从左侧推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene =CCTransitionSlideInL::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionSlideInR
// 作用:创建一个从右侧推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene =CCTransitionSlideInR::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionSlideInT
// 作用:创建一个从顶部推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene =CCTransitionSlideInT::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);

// CCTransitionSlideInB
// 作用:创建一个从下部推入并顶出旧场景的过渡动画
// 参数1:过渡动作的持续时间
// 参数2:切换的目标场景的对象
// reScene =CCTransitionSlideInB::create(t, s);
// CCDirector::sharedDirector()->replaceScene(reScene);