java通用日志框架commons-logging介绍

commons-logging简称jcl。是apache较早提供的日志通用框架,它规定了一系列的接口, 它可以自动寻找到你的工程里使用的日志框架进行打日志。前提是你要为它提供: org.apache.commons.logging.Log org.apache.commons.logging.LogFactory 两个接口或者是抽象类的实现。 其它日志框架,如果能让commons-logging识别,只能去实现它的接口 org.apache.commons.logging.Log org.apache.commons.logging.LogFactory 并且告诉commons-logging你的LogFactory。 让commons-logging加载你的LogFactory,有两种途径: 第一:设置环境变量 -Dorg.apache.commons.logging.LogFactory=com.huawei.myLogFactory 第二:把com.huawei.myLogFactory写入META-INF/services/org.apache.commons.logging.LogFactory文件中 第三:在classpath下创建一个commons-logging.properties文件写入: org.apache.commons.logging.LogFactory=com.huawei.myLogFactory 其它日志框架,一般使用第二种方式支持commons-logging。Commons-logging对logFactory的寻找过程,可以查阅org.apache.commons.logging.LogFactory类源码. 因为commons-logging是在运行时,通过类查找的方式找到logFactory的实现,并且通过反射的形式获得其实例。所以commons-logging和日志实现框架的绑定是一种动态绑定。 1、commons-logging->log4j/jul 其中:jdk log 和log4j的log和logfactory。commons-logging自己已经提供: Logfactory: org.apache.commons.logging.impl.LogFactoryImpl log: org.apache.commons.logging.impl.Log4JLogger org.apache.commons.logging.impl.Jdk14Logger 所以如果你打算用log4j打日志,只要把log4j的包引入,commons-logging就可以使用log4j打日志了。 如果你不提供log4j的包,commons-logging就默认使用JDK的java.util.logging打日志。 2、commons-logging->log4j2 log4j2 官方提供了commons-logging的Log和LogFactory的实现包。 如果使用commons-logging+log4j2打日志,需要额外引入 log4j-jcl-2.x.jar 包 org.apache.logging.log4j log4j-jcl 2.x 3、commons-logging->logback 很遗憾logback没有提供对commons-logging的支持,因为当logback出现的时候,已经有一个更好的日志门面框架出现了,就是slf4j。

2016年2月20日 · 1 分钟

华为可能要出Matebook手写平板

2月15日 余承东发布一篇微博,内容如下: #今年我要换新的# 北京时间2月21日21点,巴塞罗那MWC2016,为大家带来新品![酷] @华为消费者BG 并附有一张照片: 让人猜测中中,最靠谱的就是盛传已久的华为笔记本,因为很早之前华为就注册了MateBook。根据其注册的信息表示,“MateBook”将被用于便携式计算机用套、计算机键盘、计算机程序(可下载软件)、平板电脑、计算机硬件、数据处理设备、智能手机、调制解调器等等产品,从商标名称及用途来看,“MateBook”无疑就是为其PC产品准备的。 从这幅照片上看,这应该不是一款传统意义上的笔记本。估计是一款平板电脑两用,并且带手写笔的产品。 参考苹果,应该是和ipad对齐的一款产品。因为苹果在去年九月发布了ipad pro,同时为其配备了专业的Apple Pencil。那么MateBook应该是一款类似的产品。据悉华为将和PC端最牛逼的Intel合作,搭载Intel处理器。可能会支持Windows和Andriod双系统。 总之这是一款让人期待的产品。此外已知MWC2015,华为发布了荣耀2X,这一次还有可能要发布荣耀3X.让我们静静的等待华为带给我们的科技惊喜。

2016年2月16日 · 1 分钟

如何安全升级wordpress

第一步:备份 如果真到了升级后一团糟的底部,有了备份的数据,还可以重头再来。 备份分两部分: 第一部分是代码备份,对整个根目录打包存放到安全的位置 tar zcvf backup_dir/backup_20160124.tar.gz /home/wordpress/html 第二部分是数据库备份 mysqldump -u username -ppassword yourdatabase > backup_20160124.sql 第二步:本地环境搭建 在本地机器上搭建一套apache+php+mysql系统。在windows机器上,可以直接安装个省事的WAMP(Windows+APACHE+MYSQL+PHP)。 然后把备份的数据库导入到本地的机器,把备份的代码解压到apache的工作目录。 设置本地hosts,举例: 127.0.0.1 zhaoyanblog.com 浏览器访问http://zhaoyanblog.com 就是访问的本地环境。 第三步:wordpress升级演练 wordpress升级有两种形式: 一种是通过wordpress的管理后台进行升级。 另外一种是把wordpress最新安装包下载下来,把其中的wp-content删除,然后用其覆盖当前的代码。 然后访问http://zhaoyanblog.com/wp-admin/upgrade.php进行其它升级(比如数据库数据)。 最后访问本地http://zhaoyanblog.com,确认升级是否有问题。 第四步:正式环境升级 当本地升级没有问题之后,把在本地的升级步骤,再实施到正式的环境即可。 最后说一句 wordpress好多版本是为了解决老版本中的安全问题,所以时间长了wordpress的版本升级还是很有必要的。

2016年1月24日 · 1 分钟

博客适配移动浏览器

博客使用了wordpress,虽然大部分wordpress的主题都是响应式布局,也就是随着客户端屏幕大小,语言进行自由适配,但是总是不完美的。 用wordpress,首先想到的就是用插件解决这个问题。发现wptouch这款插件的页面是最舒服的一款适配移动的插件。 wptouch是专门用来解决wordpress的移动端浏览的问题,它有自己专门的主题。功能强大。 wptouch只提供基础的功能,强大的主题功能需要付费升级到pro版本。 当然wordpress适配移动端,还有其它方式,举例说: 安装专门的移动主题,然后使用wordpress-mobile-theme-switcher等插件,根据User-agent进行动态主题切换。

2016年1月17日 · 1 分钟

SUSE配置SDK安装源

当你编译一个开源软件的时候,例如nginx、php,他可能需要依赖很多开源库,一种做法是去官方网站上下载,自己编译。 但是新的开源库,可能又依赖另外一个开源库,你会发现自己陷入一个二叉树。。。。 还是使用系统的应用管理软件去直接安装开发包,是最方便的,例如SUSE的zypper。编译的时候依赖哪个包就安装哪个包, zypper帮你自动下载安装它所依赖的其它库。 一个开源库,有两个jar包,一个普通的包,一个是开发包(会包含编译用的头文件)。举例zlib库。 一个是zlib包,一个zlib-devel包。系统的安装盘里,只有zlib包,zlib-devel包是在SDK盘里。 SUSE的SDK安装源是非常难找啊,但是还是被我找到一个: 如果你和我一样使用的SUSE 你所需要的安装源,可以在http://demeter.uni-regensburg.de这个网站找这个SDK盘的安装源。 比如,我用的是SLE11SP3,对应的SDK安装源就是http://demeter.uni-regensburg.de/SLE11SP3-SDK-x64/DVD1/ 现在做的就是配置到zypper里: vi /etc/zypp/repos.d/SLES11-SP3-SDK.repo 输入: [SLES11-SP3-SDK] name=SLES11-SP3-SDK enabled=1 autorefresh=1 baseurl=http://demeter.uni-regensburg.de/SLE11SP3-SDK-x64/DVD1/ path=/ type=yast2 keeppackages=0 这样你就可以安装zlib-devel等开发包了: zypper install zlib-devel 再去编译nginx、php等其它开源软件,就不会有少依赖库的问题了。

2016年1月9日 · 1 分钟

博客正式从apache迁移至nginx

从apache迁移到nginx,主要有以下几个方面的事情: 1、编译php和nginx 编译php的参数: ./configure –prefix=/usr/local/php5 -with-config-file-path=/usr/local/php5/etc –enable-fpm –enable-pcntl –enable-mysqlnd –enable-opcache –enable-sockets –enable-sysvmsg –enable-sysvsem –enable-sysvshm –enable-shmop –enable-zip –enable-ftp –enable-soap –enable-xml –enable-mbstring –disable-rpath –disable-debug –disable-fileinfo –with-mysql –with-mysqli –with-pdo-mysql –with-pcre-regex –with-iconv –with-zlib –with-mcrypt –with-gd –with-mhash –with-xmlrpc make make install 编译php关键的是要加–enable-fpm参数,因为nginx不像apache有php插件,可以直接调用php。nginx是通过fast-cgi连接php服务,php服务是通过fpm启动的,php的其它模块最好也编译进去,不知道wordpress会用到什么模块,否则又要重新编译。 编译nginx ./configure –prefix=/usr/local/nginx make make install nginx 没有什么选项要指定,直接编译就好了。 2、启动php-fpm cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf 编辑配置文件:/usr/local/php5/etc/php-fpm.conf 一个是用户和群组: user = zhaoyanblog group = users 一个是端口 listen = 127.0.0.1:9000 最后启动就可以了: /usr/local/php5/sbin/php-fpm 3、启动nginx 编辑配置文件:/usr/local/nginx/conf/nginx.conf 添加http选项,增加压缩选项: gzip on; #启动压缩的最小报文大小 gzip_min_length 1k; #压缩所使用的缓存 gzip_buffers 4 16k; #压缩等级1表示最快,9表示最好 gzip_comp_level 2; #压缩支持的content-Type类型 gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss application/javascript; 里server里配置: ...

2016年1月9日 · 1 分钟

我看好老罗

首先我相信老罗的底线是手机的质量必须没有问题,从老罗和王自如的辩论中就可以看出来,当老罗看到了王自如的评测的时候,他一开始真的以为自己的工程师犯了一些低级错误,首先是没有好脸色的去和自己的工程师去沟通。一个英语出身的外行,要把所有的设计细节学习清楚,再去和王自如挨个争辩,由此看来,老罗是很认真的。 老罗最关注的是用户体验,他的想法很简单,就是想做一个像苹果那样,甚至比苹果看起来更好用的手机,所以他很看重细节,他亲自过问OS里的每一处设计和用户感受,两次发布会都是大篇幅讲解用户体验,讲锤子手机更用户带来哪些哪些好用和便利,而不是讲CPU到几核了,性能翻几倍了,内存又到多大了,他所关心的都是用户的最直接的使用感受。 老罗是个完美主义者,也许老罗是处女座的,至少在锤子手机的外观上是这样的,他要求他的锤子手机必须是左右对称的,前后面板干净的,为此他是绞尽脑汁把传感器藏到听筒里,左右各放一个音量控制键,前后都是玻璃,连背后的锤子logo都镀的那么完美无瑕,这次T2又把卡槽和音量键结合到了一起,把电源键整合到了home键上,就是为了整个金属中框连续无断点,最符合中国人的审美观。 老罗是务实的,他知道他的公司需要是专业人才,所以他不辞辛苦去挖人才,找设计师,他是极度的信任和仰仗他的员工,他说真正的工匠是他的工程师们,他不过是工匠精神的吉祥物,为了品牌的宣传,这样一个个性张扬的人,在微博上也平静了下来,两次发布会的门票,一次捐给了openssl,一次捐给了openresty,我想这应该也是他的工程师们的建议,这样的情怀,我相信会让更多的技术人员走到老罗麾下。 T2发布后,一些不良媒体又在看低锤子,说没有最新的CPU,没有指纹识别,没有快充等等,我觉得T2是一件艺术品,它本身追求的就不是这些东西,T2真的很漂亮,虽然我不是老罗的粉丝,但是我看好老罗。

2016年1月2日 · 1 分钟

使用javamail发邮件

使用javamail发邮件。 javamail是java发邮件的常用工具。方便实用。 1、首先使用maven工程,需要引入对javamail的依赖,取个最新稳定版本: javax.mail mail 1.4.5 2、构造一个Session。所谓Session,可以理解为对SMTP服务器的配置。如果发邮件的全部都是一个配置,这个是可以单例的。 Properties props = new Properties(); props.put("mail.smtp.host", "smtp.163.com");//smtp服务器 props.put("mail.smtp.auth", "true");//是否需要用户名密码鉴权 props.put("mail.transport.protocol", "smtp");//协议名称 props.put("mail.smtp.socketFactory.port", 25); //服务器端口 props.put("mail.smtp.starttls.enable", "true"); //如果是ssl端口,需要加这个属性。 //创建Session。这个取一次就好了, Session session = Session.getInstance(props, new Authenticator() //如果你只有一个发送邮箱,在这里指定就好了,如果你有多个用户名密码,也可以在正式发邮件的时候指定。 { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("zhaoyan", "zhaoyanblog.com");//用户名和密码, } }); 3、获取一个连接发送邮件: Transport transport = null; try { transport = session.getTransport("smtp"); //这里是不能单例使用的,可以看Transport的实现类SMTPTransport, //有几个成员是:private MimeMessage message; private Address[] addresses; private SMTPOutputStream dataStream; 说明每次发邮件都会存这些东西的,这个类是线程不安全的。 transport.connect(); //如果session里没有指定用户名密码,这里可以使用transport.connect("username","password"); MimeMessage message = createMessage();//构造邮件内容 transport.sendMessage(message, new InternetAddress[]{new InternetAddress("zhaoyan@zhaoyanblog.com")}); //如果你的message里指定了接收方,这里也可以写transport.sendMessage(message); } finally { transport.close(); } 4、发送不同类型的短信 ...

2015年12月23日 · 1 分钟

JAVA实现多语言

做web服务器,为了实现全球业务,服务器端就要实现多语言。针对不同的国家、语言。返回不同语言的描述。 第一:JAVA对多语言是支持的 JAVA对语言的描述使用java.util.Locale,它主要包含语言、国家信息。 例如几个常量, 中国的简体中文: Locale SIMPLIFIED_CHINESE = createConstant(“zh”, “CN”); 台湾的繁体 Locale TRADITIONAL_CHINESE = createConstant(“zh”, “TW”); 也可以只包含语言信息: Locale CHINESE = createConstant(“zh”, “”); 以上几种语言,用字符串写就是zh_CN, zh_TW, zh(也有用中划线的)。 第二:语言资源文件 你可以在i18n目录(或者是com/zhaoyanblog/i18n, com/zhaoyanblog/i18n/resource, 这个是类路径)下为每一种语言创建一个资源文件。命名格式如下: lang_zh_CN.properties lang_zh_TW.properties lang_zh.properties 再创建一个默认的语言对应的资源文件: lang.properties 注:这里的文件名lang和路径都可以随便起。为什么路径要包含i18n,这个就是个习惯,随便你。i18n的意思就是国际化(internationalization, i和n之间有18个字符)。 资源文件里配置不同的配置 lang_zh_CN.properties里: TITLE=我的苹果 lang_en.properties里: TITLE=my apple 配置文件为了防止乱码,properties文件里3个字节以上表示的字符(例如中文)一般使用unicode配置。 TITLE=\u6211\u7684\u82f9\u679c 第三:读取配置文件的内容 JAVA加载语言资源文件使用java.util.ResourceBundle类。 ResourceBundle lang = ResourceBundle.getBundle(“com.zhaoyanblog.i18n.resource.lang”, Locale.SIMPLIFIED_CHINESE); lang.getString(“TITLE”) 返回的就是我的苹果 第四:HTTP协议的多语言支持。 HTTP协议规定了一个header:Accept-Language支持多语言。多少客户端期望返回的语言类型。 格式如下: Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 q=0.8代表前面语言的比重。如果有中文就返回中文,没有中文就返回美式英文。再没有就返回中文。 第五:java web应用,获取客户端需要的语言。 servlet的HttpServletRequest参数对象里可以得到对Accept-Language的解析结果。 protected void service(HttpServletRequest req, HttpServletResponse resp) { Locale locale = req.getLocale(); }

2015年12月15日 · 1 分钟

荣耀4C 拍照样张

2015年12月8日 · 0 分钟

谨防黑客攻击wordpress的xmlrpc.php

最近两天随便瞟了两眼机器的负载,发现飙升到了0.6了,我的博客一向访问人很少,即便是1CPU1G的配置,负载也不会这么高的。仔细看了apache的access日志。发现大量的访问xmlrpc.php的请求。 167.114.89.173 - - [22/Nov/2015:04:52:29 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 192.99.196.123 - - [22/Nov/2015:04:52:33 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 192.99.196.123 - - [22/Nov/2015:04:52:39 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 167.114.89.173 - - [22/Nov/2015:04:52:41 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 167.114.89.173 - - [22/Nov/2015:04:52:49 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 167.114.89.168 - - [22/Nov/2015:04:52:49 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 192.99.196.123 - - [22/Nov/2015:04:52:51 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 192.99.196.123 - - [22/Nov/2015:04:52:58 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 167.114.89.168 - - [22/Nov/2015:04:52:58 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 167.114.89.168 - - [22/Nov/2015:04:52:58 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 167.114.89.173 - - [22/Nov/2015:04:53:04 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 167.114.89.173 - - [22/Nov/2015:04:53:07 +0800] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)" 之前也看到过类似的请求,第一眼看到User-Agent包含Googlebot/2.1,http://www.google.com/bot.html等关键字,以为是google的爬虫,没有太留意。今天仔细看了下,发现并非如此,这样的访问是大量连续存在的,而且存在多个ip地址。都是POST请求到xmlrpc.php。抓包看内容完全一样的。百度下ip大都是芬兰啊,加拿大等国外的,也没有迹象表明是google的ip。google爬虫也应该不是这样的行为,所以果断屏蔽。之前使用虚拟机,只能在apache和php层。这次使用的独立主机,最直接的的方式就是在防火墙上屏蔽它们。 ...

2015年11月22日 · 2 分钟

华为麒麟950,用户真正需要的芯片

前日,华为在秋季媒体沟通会上发布了备受瞩目的麒麟950。集成麒麟950的手机在安兔兔跑分达到了8万多分,成为目前全球最强劲的移动芯片。 看一下麒麟950相较于前面的版本有哪些加强和改进: 1、最新ARM架构和GPU 麒麟950采用最新的4A72+4A53的big.LITTLE架构。A72比A57性能提升11% 功耗降低20%。 GPU采用最新的MaliT880,图形生成能力提升100%,GFLOPS提升100%。 2、最新的16nm FF+工艺 在制程工艺方面率先采用业界领先的TSMC 16nm FF+工艺,是首个商用16nm FF+工艺的SoC芯片,相比28nm HPM,性能提升40%,同时节省了60%的功耗。 3、全新协处理器i5 麒麟950芯片拥有全新升级的新智能感知处理器i5,业内首次实现芯片级智能定位。 4:自研ISP模块。 搭载的ISP也源自华为自研技术,由于支持14bit双ISP,吞吐率性能直接提升达4倍。并且支持混合对焦技术。 5:采用4G VoLTE技术,使通话更真实。 通过扩展频谱范围和提高采样率,还原更接近人声的真实音色。让你感觉他或者她就在你身边一样。 有人还在喷麒麟950没有集成支持Cat 9、cat10 cat12(4G传输技术等级)的基带,华为的回复是,目前国内运营商对Cat 6的覆盖尚且没有完成,支持更高级别的技术对用户是没有意义的。我是支持这个观点的,换句话说,给你加上了这样的技术,你也用不上,用户还要为这样的成本买单。华为是务实企业,以用户为中心,想用户所想。 如此强大的芯片,已经横扫市面上所有的其它产品,也是用户真正需要的芯片,我们拭目以待搭载麒麟950的Mate 8手机横空出世,据媒体猜测11月26日将发布。

2015年11月10日 · 1 分钟

[新闻]要买荣耀手机,趁在双十一

从十一月一日开始,华为荣耀vmall商城正式启动双十一模式。每天都有开放购买,还有抵用券券,红包一大波优惠。所以如果你想入手一部手机,可以考虑买华为荣耀,如果你打算买荣耀手机,最好趁在双十一期间。且看华为荣耀有哪些大动作: 第一条:荣耀这次为双十一准备了400万现货,所以如果你想买,肯定可以买到的。 第二条:2亿红包,总可以赚得几十到两三百的优惠。 第三条:降价优惠,荣耀6预存99元可以当299元使用,1099元的全网通版4X只卖999。更多优惠去看华为商城。 第四条:配置1元起,你可以在这段时间,通过1元钱、一折、5折的优惠价格买到你心仪的手机配件。 第五条:秒杀活动,11月1日-11月10日 每天有三场秒杀活动,每场活动11.11元秒杀多款产品。也就是如果幸运的话,你可能相当于免费得一部手机。 此外华为商城还提供以旧换新送优惠券,约“惠”合约机,购机抽奖等多项活动。 所以买华为荣耀手机,就要趁双十一,在双十一期间买荣耀手机最划算。

2015年11月3日 · 1 分钟

One More Thing,惊喜不仅仅是5X

之前的亿元年薪,可能大家都猜对了,我估计也是大熊猫,至于亿元年薪,华为荣耀可能启动一项保护大熊猫的公益活动,想必是这样的吧,华为荣耀就是有爱啊。 一场发布会仅仅发布一款手机,往往显得单调,所以华为荣耀的发布会除了发布手机以外,经常会同时发布至少一款其它产品,例如之前发布会发布的荣耀盒子,荣耀电力猫,荣耀小口哨,荣耀引擎耳机,手环,儿童手表等等。 本次荣耀5X发布会也是不仅仅发布一款手机,近日@华为荣耀官方微博发出多张海报,借助乔布斯的一句惯语:“one more thing”,惊喜不仅仅是5X。根据多张海报来看,除了5X之外,可能还有不止一款产品要一同发布: 海报具体是一个放映机和一个打字机,那到底是什么产品呢?具体期待10月27日 华为荣耀成都发布会。

2015年10月24日 · 1 分钟

[新闻]华为荣耀5X即将发布、一亿年薪聘请大咖代言

华为荣耀4X自发布至今销售量已经过千万,如此爆款,华为没有理由不发布后续机型。这么10月27日华为荣耀将要发布4X的继承者:华为荣耀畅玩5X。 荣耀4X之所以被追捧,我想有这样几个特点: 屏幕5.5寸,2G内存。1300万像素摄像头,3100大电池容量。全网通(千元机中全国首款),外观好看(特别是摄像头的设计) 我想荣耀5X如果想继续热卖,势必要继承4X的上述优势,同时弥补不足. 例如:增加存储空间(ROM)到16G或者32G。 当然也要加些新料 例如:移动联通版增加NFC功能,甚至增加指纹识别,再者变为金属机身等等。 至于华为荣耀到底如何打造这款手机,还要等27号发布会公布。 此外还有一个官方微博发布的消息: 华为荣耀一亿年薪聘请神秘大咖代言#荣耀畅玩5X#,一起放肆#玩过界#! 并展开了竞猜有奖的活动,一亿年薪请一个大咖代言一款具体的机型,这还是华为前所未有的大手笔。 此前陈坤是作为了华为荣耀品牌的代言人,这次肯定不是它,到底是谁呢?@华为荣耀官方微博每天一张海报公布线索。快去猜吧。

2015年10月17日 · 1 分钟