一、网络问题-network

更多网络原理机制可以参考《OpenStack云平台的网络模式及其工作机制》。

1.1、控制节点与网络控制器区别

OpenStack平台中有两种类型的物理节点,控制节点和计算节点。控制节点包括网络控制、调度管理、api服务、存储卷管理、数据库管理、身份管理和镜像管理等,计算节点主要提供nova-compute服务。

控制节点的服务可以分开在多个节点,我们把提供nova-network服务的节点称为网络控制器。

1.2、OpenStack中nova-network的作用

OpenStack的网络由nova-network(网络控制器)管理,它会创建虚拟网络,使主机之间以及与外部网络互相访问。

OpenStack的API服务器通过消息队列分发nova-network提供的命令,这些命令之后会被nova-network处理,主要的操作有:分配ip地址、配置虚拟网络和通信。

1.3、OpenStack中Flat与FlatDHCP区别

Flat(扁平): 所有实例桥接到同一个虚拟网络,需要手动设置网桥。

FlatDHCP: 与Flat(扁平)管理模式类似,这种网络所有实例桥接到同一个虚拟网络,扁平拓扑。不同的是,正如名字的区别,实例的ip提供dhcp获取(nova-network节点提供dhcp服务),而且可以自动帮助建立网桥。

1.4、OpenStack中Flat与vLAN区别

在两种Flat模式里,网络控制器扮演默认网关的角色,实例都被分配了公共的IP地址(扁平式结构,都在一个桥接网络里)。

vLAN模式功能丰富,很适合提供给企业内部部署使用。但是,需要支持vLAN的switches来连接,而且相对比较复杂,在小范围实验中常采用FlatDHCP模式。

1.5、OpenStack中网络流向是怎样的,都经过网络控制器吗

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

1.6、OpenStack单网卡怎么配置?

配置好服务器的网络(混杂模式);

/etc/nova/nova.conf那一块,public_interface和flat_interface都改成这个单网卡的名称即可,比如在脚本oneStack.sh 改动2处:
/etc/network/interfaces设置那一块,去掉第2个网卡的设置(eth1);
/etc/nova/nova.conf那一块,eth1修改为eht0(flat的网卡)。

这样,在这个网卡上,既有外网的网络,又有flat网络。详见《OpenStack云平台的网络模式及其工作机制》。

1.7、OpenStack中网络流向是怎样的,都经过网络控制器吗

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

1.8、OpenStack中网络注意问题

1)openstack 中,nova-manage create用来创建虚拟机运行时所需的内网,并且将相关的IP地址记录到fixed_ips数据表中。但是,当调用nova-manage delete 时,并不会自动的删除fixed_ips中的内容,需手动进行删除。

2)采用FlatDHCP方式部署openstack,在开放了icmp和ssh22端口的情况下,仍然无法通过控制节点连接到虚拟机实例。此时应该检查控制节点的ip配置信息ip addr。

3)FlatDHCP模式下,network_size是整个fixed_ip range中的所有ip数。例如在一个A类/12的网络中,有2^20个IP地址,所有的这些IP地址都要写入数据库fixed_ips表中,这将会花费很长时间,导致出现假死。

4)如果采用FlatManager的网络模式,则必须手动建立相关的网桥,以便虚拟机实例之间以及和主机之间通信。

而且,必须手动的将虚拟机实例的内部IP加入到nova数据库的fixed_ips表中。
此外,fiexed_ips表保着所有可供虚拟机实例使用的内部IP,每次发起一个新的虚拟机实例,openstack的网络服务部分,根据 fixed_ips表中的内容分配给该实例IP。如果用户希望保留特定的IP地址,需要将数据库中该IP对应的reserved字段设置为1。

二、虚拟化问题-virtual

2.1、OpenStack中控制节点和计算节点配置nova.conf一样吗

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

计算节点的nova.conf并不是与控制节点完全一样,主要是
--vncserver_proxyclient_address=
--vncserver_listen=

应该是计算节点的ip。

2.2、OpenStack执行 virsh -c qemu:///system list,一直挂起在那里(hang),怎么解决

killall -9 dmidecode

dmidecode是一个管理工具,在虚拟机装OpenStack中需要用到,用在libvirt中,但在有的机器中会出现hang up的情况,这时候需要kill掉它。

2.3、OpenStack中虚拟化技术在哪里配置

主要两个文件:nova.conf nova-compute.conf。

其中的虚拟技术应该一致,比如都为kvm,或者都为qemu。

2.4、OpenStack中虚拟机中nova-compute经常启动失败,virsh list显示空白,怎么解决

1. 在vmware workstation上的虚拟机需要修改 *.vmx文件

vcpu.hotadd = "TRUE"

变更为

vcpu.hotadd = "FALSE"

重新启动机器,如果执行命令:

virsh

进入控制台就没有问题了。

2. 修改nova配置文件/etc/nova/nova.conf

#--libvirt_type=kvm

更改为qemu

--libvirt_type=qemu

3. 修改/etc/nova/nova-compute.conf

--libvirt_type=qemu

4. 重新启动nova-compute,如果libvirt报错

/var/log/libvirt/libvirtd.log

Cannot find 'pm-is-supported' in path: No such file or directory

报错后需要安装

apt-get install pm-utils

2.5、noVNC不能连接到实例,提示“Connection Refuesd”,什么原因


可能是控制节点在收到vnc请求的时候,无法解析计算节点的主机名,从而无法和计算节点上的实例建立连接。
另外可能是,当前浏览器不支持或者不能访问,将计算节点的ip和主机名的对应关系加入到控制节点的/etc/hosts文件中。

三、存储、卷问题-volume、lvm

3.1、OpenStack中创建volume一直在creating,什么原因

主要因为nova-volume没有正常启动,可以

nova-manage service list

看看后面的状态,不是笑脸:-)而是xx。如果没有启动,请看下一条。

3.2、OpenStack中nova-volume服务不能启动,什么原因

主要因为没有nova-volumes卷组,或者iscsitarget服务没有启动(或者没有安装)。

1、vgdisplay

没有nova-volumes卷组,可以创建卷组和磁盘

$ dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
$ losetup -f /opt/nova-volumes.img
$ losetup -a
$ vgcreate nova-volumes /dev/loop0

记着启动nova-volume然后创建volume,否则下面仍然不能创建

$ service nova-volume restart

$ nova volume-create --display_name "volume1" 10

2、service iscsitarget status

1)没有安装iscsitarget,可以apt安装;

然后执行以下命令安装和设置为可以启动

apt-get install -y iscsitarget iscsitarget-dkms lvm2
sed -i -e 's/false/true/' /etc/default/iscsitarget
service iscsitarget start
service nova-volume start

2)状态为stop,可以start

service iscsitarget start

3)如果既没有nova-volumes卷组,也没有安装iscsitarget,切忌保证这两者都存在,然后重启nova-volume,再创建volume

有人安装iscsitarget并启动后就create,结果nova-volume并没有启动,所以问题依然存在;

有人创建nova-volumes,也没有重启nova-volume,也不能正常工作。

3.3、OpenStack中创建volume一直在creating,怎么停掉(stop)
主要因为nova-volume没有正常启动,可以
nova-manage service list
看看后面的状态,不是笑脸:-)而是xx。如果没有启动,请看下一条。

3.4、OpenStack中nova-volume执行出现问题,检查什么地方
主要因为nova-volume没有正常启动或者计算节点没有能找到target,可以检查以下这些问题。
nova-volume是否正常;控制点,详见问题3.2
iscsitarget是否开启;服务端
open-iscsi是否安装和开启;客户端
客户端(计算节点)iscsiadm discovery看看能不能找到存储服务;
分析nova-volume.log。

3.5、OpenStack中nova-volume管理target
控制节点查看target
tgtadm --lld iscsi --op show --mode target
建立target
sudo tgtadm --op new --lld=iscsi --mode=target --tid=1 --targetname=iqn.2010-10.org.openstack:volume-00000001

3.6、OpenStack中计算节点管理volume
查看session
sudo iscsiadm -m session
手动发现target
sudo iscsiadm -m discovery -t sendtargets -p IP:port
登入登出
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --login
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --logout
sudo iscsiadm -m node -o [delete|new|update] -T targetname

四、OneStack安装问题

4.1、OpenStack能在普通的PC机上跑吗?

普通pc没有试过,这也不是它需要支持的对象。但是普通pc一样可以工作的。
官网的配置,只是对于稍有一定规模的部署(配置并不算高,甚至是服务器最基本的要求)
现在服务器基本都64位,但是它也指出了,32位的可以工作的,只是不能运行64位的操作系统实例,自己改一下镜像就可以。还有不支持vt技术的,我没有试过。
双网卡也不是必须的,一个对内,一个对外。可以更改配置。详见1.6单网卡安装。
其它的基本就是自由的。


4.2、OneStack简单安装需要改哪些地方?

1、切换到root,oneStack.sh删除设置root密码、设置locale、设置apt这3段(为了方便刚安装新系统的用户加入的可选的步骤,setup_base.sh没有这3段)
2、设置ip等参数 OUT_IP 外网ip(注意这是相对于OpenStack?内部网络的) OUT_IP_PRE 外网ip前缀(脚本后面出现ip不用管,会被这个参数替换) FLOAT_IP 浮动ip
3、裸机的话qemu改成kvm (对于xen之类的未加入支持) VIRT_YPE
4、网络设置,会替换掉你原来的,不想替换就删掉这一段 设置cat写入interfaces文件(注意,那里面pre-up手动设置了网卡mac,不需要的自行去掉;单网卡去掉eth1的设置即可)
5、执行oneStack.sh 或者setup_base.sh(基本系统,没有添加镜像和实例,可以setup_test.sh)
其它没有需要更改的(数据库密码等自行更改无影响)。 里面有个image是从ubuntu官网下载,可能需要一些时间 (svn checkout,里面还有一些删除之类的工具)

4.3、OneStack单网卡安装需要改哪些地方?

除了4.2所述部分外

1)在配置interfaces时,去掉eth1部分;

2)后面nova.conf设置里面,eth1改为eth0(public_interface)。

4.4、OneStack多节点安装需要改哪些地方?

控制节点使用oneStack.sh,如果不需要安装nova-compute去掉即可;

计算节点执行addComputeNode.sh

注意nova.conf配置其余一样,只是

--vncserver_proxyclient_address=
--vncserver_listen=
应该是计算节点的ip。

4.5、OneStack安装后怎么清空nova数据,包括实例和volume等?

 

控制节点执行resetStack.sh clear,清空数据库;

再执行resetStack.sh重新初始化数据库。

五、镜像问题-image

5.1、OpenStack中可以使用windows吗

虚拟出来的实例基本与普通的主机一样,所以基本上所有系统都可以使用,制作相应的镜像即可。

5.3、OpenStack怎么制作Windows镜像

建立镜像文件
kvm-img create -f raw windowsxp.img 10G
wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-22.iso
启动安装到镜像
kvm -m 1024 -cdrom winxp.iso -drive file=windowsxp.img,if=virtio,boot=on -drive file=virtio-win-0.1-22.iso,media=cdrom -boot d -nographic -vnc :0

可以vnc查看以及操作安装过程

vncviewer 192.168.139.50:5900

(注意,5900最后一位与vnc :0对应,如果端口占用可以改为1、2、3等,vncviewer 5901等)
上传镜像
glance add name="WindowsXP" is_public=true container_format=ovf disk_format=raw < windowsxp.img

5.3、OpenStack怎么制作CentOS镜像

创建镜像

kvm-img create -f raw centos.img 5G

启动安装
kvm -m 2048 -cdrom CentOS-6.2-i386.iso -drive file=centos.img -boot d -net nic -nographic -vnc :1
操作安装过程
vncviewer 192.168.139.50:5901
再次启动安装好的镜像
kvm -m 2048 -drive file=centos.img -boot c -net nic -nographic -vnc :1

在虚拟机内部安装ssh,以便可以远程登录实例

yum install openssh-server

service sshd start (虚拟机内部)

chkconfig sshd on (不然,重启又不能ssh)

上传镜像
glance add name="CentOS6.2" is_public=true container_format=ovf disk_format=raw < centos.img
要使虚拟机内部访问外网,需要在节点上执行

sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1 (vi /proc/sys/net/ipv4/ip_forward)

5.4、OpenStack怎么Linux登录ubuntu

官方提供的镜像需要使用密钥登录,也就是启动实例的时候使用的那个key(不用key启动ubuntu实例是没法ssh登录的)

ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2

在外网登录使用floating ip;

要访问外网注意设置节点上

sysctl -w net.ipv4.ip_forward=1

5.5、OpenStack怎么novnc浏览器访问登录ubuntu

在能使用vnc的地方,浏览器输入地址可以访问系统。

控制节点上

nova get-vnc-console 4 novnc

得到一个url,例如

+-------+-------------------------------------------------------------------------------------+
| Type | Url |
+-------+-------------------------------------------------------------------------------------+
| novnc | http://192.168.139.50:6080/vnc_auto.html?token=ca2455e8-fcc9-447f-92ee-853b92b37cdb |
+-------+-------------------------------------------------------------------------------------+

浏览器中使用这个url访问。

5.6、OpenStack怎么Windows登录ubuntu

下载启动实例的时候使用的那个key(不用key启动ubuntu实例是没法ssh登录的)

ssh登录工具里面选择key认证方式,auth里面上传这个private key

然后ssh登录,输入用户名ubuntu,直接登录。

5.7、OpenStack可以密码登录ubuntu而不是密钥吗

默认的镜像通过注入密钥的方式,ssh是需要密钥认证的方式登录,不允许密码登录的;

设置别的用户比如root密码后,在vnc里面可以通过密码登录;

可以自己制作镜像,参考制作CentOS镜像那样,使用密码登录。

六、实例问题-instance

6.1、OpenStack中实例是什么意思

简单的说,一个实例就是一个跑着操作系统的虚拟机。

6.2、OpenStack中实例怎么访问

在OpenStack内部,可以使用内网ip(fixed ip)访问。

外部,可以使用floating ip访问。

注意设置相应的访问规则,比如ssh端口,防火墙规则,ipv4_forward等。

可以vnc访问,vnc浏览器访问。

Linux系统可以ssh登录,桌面系统也可以安装xrdp实现远程桌面访问;

Windows系统可以远程桌面连接。

6.3、OpenStack中怎么管理实例

可以web端(dashboard)访问,图形化操作管理。也可以使用api,如下:

## 1:上传实例
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img

查看镜像
nova image-list

## 2:创建flavor

nova flavor-list
nova-manage flavor create --name=m1.minitest --memory=384 --cpu=1 --root_gb=1 --flavor=6 --ephemeral_gb=1
## 3、创建虚拟机
nova boot --flavor 1 --image "Ubuntu12.04-amd64" --key_name key1 cloud01

查看实例
nova show cloud01

实例日志
nova console-log cloud01

##绑定浮动ip
nova floating-ip-create
nova add-floating-ip cloud01 192.168.139.226
nova show cloud01

或者直接
nova add-floating-ip cloud01 `nova floating-ip-create | awk 'FNR==4{print $2}'`
nova list
nova show cloud01
### 查看vm
nova list
### 删除vm,vm的ID或者名字
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343

nova delete cloud01

## 4、默认实例登录
ssh-keygen -f "/home/cloud/.ssh/known_hosts" -R 10.0.0.2
ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2


6.4、怎么新建密钥,怎么使用密钥

mkdir /root/ssh_clients/

创建密钥:ssh-keygen -t rsa -f /root/ssh_clients/key01

上传密钥:nova keypair-add --pub_key /root/ssh_clients/key01.pub key01

启动实例时分配密钥:nova keypair-add --pub_key /root/ssh_clients/key01.pub key01

使用密钥登录:ssh -i /root/ssh_clients/key01 ubuntu@192.168.139.225

删除keypair:
nova keypair-delete

6.5、OpenStack中nova-compute启动失败什么原因

分析/var/log/nova/nova-compute.log日志。

容易出现的问题是,volume问题或者virt问题。

6.5、OpenStack中nova-compute启动失败什么原因

启动失败时,nova-manage service list下显示为“XX”;分析/var/log/nova/nova-compute.log日志。

容易出现的问题是,volume问题或者virt问题。

6.6、OpenStack中无法连接实例

无法连接到虚拟机实例的时候,应该检查如下的环节:
1) 公共IP是否已经绑定到了公共网卡接口上,ip addr
2) 查看iptable的设置,NAT规则是否设置正确,iptables-save
3) 检查安全组设置,euca-describe-groups

6.6、OpenStack中实例注意问题

1)虚拟机在build阶段时,不要进行重启操作,否则会出现kernel panic现象。

nova-manage create用来创建虚拟机运行时所需的内网,并且将相关的IP地址记录到fixed_ips数据表中。但是,当调用nova-manage delete 时,并不会自动的删除fixed_ips中的内容,需手动进行删除。

2)计算节点的操作系统为32位,因此,kvm上启动的虚拟机内存受到限制,比如无法创建内存大于4G的虚拟机。

3)虚拟机实例已经绑定了浮动IP,并且控制节点的对外网络接口上也发现了相关的浮动IP地址,但是通过ssh却无法进行连接。
解决:在dashboard中添加相关的安全规则。security group -> edit rules
添加:icmp -1 -1 0/0;tcp 22 22 0/0

在OneStack里面,已经把端口全部启动1~65535,可以更改为只开放ssh、imcp等部分。

4)nova的配置文件默认存放在/etc/nova/nova.conf中,其中涉及到nova各个参数的配置。
nova所有的参数可以通过nova-api --help进行查看。

七、系统及其它

7.1、查看日志

OpenStack的nova相关日志都在/vr/log/nova下面,一般多数是nova出现问题,包括网络、存储、compute、虚拟化等。

volume相关问题查看nova-volume.log

compute和libvirt相关问题查看nova-compute.log

查看实例日志,web里面有这样一个菜单,api里面使用nova console-log cloud01

7.2、怎么实现高可用性的部署

请参考文章《构建OpenStack的高可用性(HA,High Availability)》,里面给出了一些大概的方案。

7.3、OpenStack有哪些资料,新手去哪里学习

动手实践,阅读wiki、文档,参与社区,反馈问题,勤动脑。以下为部分网址:

国内技术资料较少,多为安装管理相关问题,或者媒体资料。对于swift有一些技术分析的资料,其它较少。

官方OpenStack www.openstack.org
国内OpenStack社区 www.openstack.org.cn

Installing OpenStack Essex (2012.1) on Ubuntu 12.04 ("Precise Pangolin")(原文) 
http://www.hastexo.com/resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin 
“OpenStack Documentation”team(文档、bug报告) 
https://launchpad.net/~openstack-doc
Quora上关于openstack的话题 
http://www.quora.com/OpenStack

stackoverflow上关于openstack资源的讨论 
http://stackoverflow.com/questions/5882333/good-tutorials-and-resources-for-openstack
高可用性

安装部署问题多Google,很多会链接到https://launchpad.net/别人的问答。以后可以把问题和解决方法抽象出来在《OpenStack安装部署管理中常见问题解决方法(OpenStack-Lite-FAQ)》分享,希望少把时间浪费在安装和部署上。

一键部署:http://code.google.com/p/onestack/source/browse/trunk/

OpenStack安装部署管理中常见问题解决方法的更多相关文章

  1. MySQL学习入门安装和启动及常见问题解决方法(一)

    1.下载MySQL 官网地址:https://www.mysql.com/downloads/ 2.个人学习使用,只有下面这个是免费的 3.下载之后解压到目录中,并加入环境变量,如下 创建MYSQL_ ...

  2. adb连接过程中常见问题解决方法

    在测试过程中经常会遇到需要使用adb连接服务器的问题,但是有时候经常会遇到连不上的情况,总结两种解决方式 1)error: unknown host service 此问题是由于端口号已经被占用了,可 ...

  3. Web Deploy发布网站及常见问题解决方法(图文)

    Web Deploy发布网站及常见问题解决方法(图文) Windows2008R2+IIs7.5 +Web Deploy 3.5 Web Deploy 3.5下载安装 http://www.iis.n ...

  4. 老出BUG怎么办?游戏服务器常见问题解决方法分享

    在游戏开发中,我们经常会遇到一些技术难题,而其引发的bug则会影响整个游戏的品质.女性向手游<食物语>就曾遇到过一些开发上的难题,腾讯游戏学院专家团Wade.Zc.Jovi等专家为其提供了 ...

  5. Solr7 安装部署 管理界面介绍

    Solr7 安装部署 管理界面介绍 本章重点介绍CentOS 安装部署Solr7 ,Solr的管理界面介绍,添加核心Core配置,Dataimport导入数据,Documents 在线维护索引,Que ...

  6. Python爬虫编程常见问题解决方法

    Python爬虫编程常见问题解决方法: 1.通用的解决方案: [按住Ctrl键不送松],同时用鼠标点击[方法名],查看文档 2.TypeError: POST data should be bytes ...

  7. charles抓包的安装,使用说明以及常见问题解决(windows)

    charles抓包的安装,使用说明以及常见问题解决(windows) https://blog.csdn.net/zhangxiang_1102/article/details/77855548

  8. JS基础语法---Date对象中常见的方法

    创建实例对象 var dt = new Date(); //当前的时间---当前的服务器 console.log(dt); var dt = new Date("2017-08-12&quo ...

  9. 转:在决定使用ClickOnce发布你的软件前,应该知道的一些事情(一些常见问题解决方法)

    1,无法有效避免非法的下载 使用ClickOnce部署,你的软件的更新版可以发布到Web服务器上,当用户从开始菜单启动软件时,ClickOnce自动到指定的URL去检测是否存在新版本,并且从这个地址下 ...

随机推荐

  1. 汇编语言学习系列 for循环实现

    假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位). #include<stdio.h> int fact_for(int n) { int i; ; ; i & ...

  2. 定时自动备份mysql数据库

    新建备份文件并赋予可以执行的权限 mkdir -p /home/mysql_backup/ touch /home/mysql_backup/mysql_backup.sh chmod 551 /ho ...

  3. 0x800a138f - JavaScript runtime error: Unable to get property 'asSorting' of undefined or null reference 错误原因以及解决办法

    使用Jquery Datatables的时候也许会碰到这样的错误提示,当我们仔细的查找代码,发现引用的js文件,css文件均引用了,就是找不到他的问题所在. 这是从我们引用的js文件内部报的错. 这个 ...

  4. 19.java.lang.NoClassDefFoundException

    java.lang.NoClassDefFoundException未找到类定义错误 当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误. 违背安全原则异常:Secturit ...

  5. 限制**类型物料不能输入BOM

    应用 Oracle Bill Of   Materiel 层 Level Function 函数名 Funcgtion Name CUX_BOMFDBOM 表单名 Form Name CUXBOMFD ...

  6. ANDROID SHAPE画圆形背景_ANDROID实现角标布局

    ANDROID SHAPE画圆形背景_ANDROID实现角标布局 <?xml version="1.0" encoding="UTF-8"?> &l ...

  7. BadgeView使用介绍

    前段时间做的一个淘宝客的项目,需要在商品图片上添加价格标签,之前自己使用TextView和Cavas绘制的感觉效果一般,今天偶然在CSDN上发现BadgeView这个开源项目,在git下载下来之后,使 ...

  8. 深入理解Spring Redis的使用 (二)、RedisTemplate事务支持、序列化

    RedisTemplate api详解 1. RedisTemplate的事务 private boolean enableTransactionSupport = false; private bo ...

  9. 04737_C++程序设计_第5章_特殊函数和成员

    例5.1 分析下面程序中析构函数与构造函数的调用顺序. #include<iostream> using namespace std; class object { private: in ...

  10. display的table和cell外加table-layout:fixed等分布局,外加换行,word-wrap:break-word

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...