今天完成的任务
1.XMemcached的demo
昨天在服务器上配置了Memchache的一个节点,39.108.161.180:8888
今天就用XMemcached写一个demo
要使用XMemcached需要引入依赖:
把这个demo写成一个测试类,代码如下:
因为XMemcached可能会抛出的异常比较多,可以看到代码里用到的try块比较多,暂时没想到怎么让代码看起来简洁一点..
第一次测试的时候报了一个 MemcachedException,提示没有可能连接。向师兄确认了,Memcache使用了端口,还是要在CentOS的FireWall上打开这个8888端口,另外也要设置安全组的。设置号以后可以连接到Memcache了,结果如下
2.服务器上装telnet
A.首先要检查有没有安装telnet-server和xinetd
没有响应说明没有安装
B.下载并安装
.png)

C.允许以root身份运行(没有这一步会报错)
在最后加上
pst/0
pst/1
D.设置开机自启动
.png)

E.启动服务
.png)

F.防火墙打开23端口
G.添加安全组
4.使用telnet连接、管理Memcached
然后试了一下缓存的增删改查命令,还有stats、stats slabs命令,需要留意的是退出telnet的命令:
先按 ctrl+] 然后按q退出
遇到的问题
1.Memcached的连接池是什么?
连接池指的是Memcache的节点池。
2.java可序列化类型是什么?为什么存入Memcached的数据要是可序列化类型?
A.8种基本数据类型不能被序列化,但是基本数据类型的包装类可以被序列。
B.要想使一个类的对象被序列化,那么这个类必须实现serializable接口。当这个类的实现serializable接口后,这个类的属性的数据类型会被自动封装为包装类。
C.如果不想序列化类的摸一个属性的话,可以使用 transient 关键字。
D.serialVersionUID用于标识由那个类来序列化和反序列化。这个UID于类的完全限定名(也就是包名+类名)、类的属性有关。也就是说,如果进行序列化和反序列化的类的包名、属性不一致的话,会报一个 java.io.InvalidClassException 异常。
E.serialVersionUID可以被指定。必须是static、final、long型
G.按照上面的理解,序列化和反序列化需要用到的类也就只有3个:
序列化:FileInputStream + 需要序列化类的A + ObjectOutputStream;
反序列化:FileOutoutStream + 装反序列化结果的类A + ObjectInputStream;
H.至于另一个问题,为什么存入Memcache的数据要是可序列化类型?是因为只有序列化的对象才能存到内存/硬盘中。
3.System.err.println是什么?
最土的理解就是,err在控制台打印的信息是红色的。
4.MemcacheClient接口文档?
实际是找到的是Xmemcached的官方文档。这里又学会找官方文档的新姿势。刚开始在百度搜索和google搜索里直接搜“XMemcached官网”没有找到结果。然后找到Maven的中心库,搜索“XMemcached”的jar包,找到下面的信息:
没想到最后“官网”在github,而且官网上面竟然提供中文的使用手册,看了中文手册,发现原来百度到的XMemcached内容大部分就是照搬官网的东西来的。看来以后要找开源软件,可以首先到github搜关键词。
收获
如上
明天的计划
尽量完成任务6
进度
步骤2
任务开始时间 2017.9.17
预计提交时间 2017.9.23
禅道 http://task.ptteng.com/zentao/project-task.html
评论