关于华为荣耀6的猜测

自2014年6月9号华为荣耀公布2014年6月24日将发布新品荣耀6以来,各大手机数码媒体纷纷进行报道,对荣耀6从各个方面进行猜测,我也对荣耀6进行一个猜测。 1、价格 价格是消费者和媒体普遍关心的问题,因为价格从一方面显示了一款手机的市场定位。媒体报道荣耀6的价格或为2998元,依据是@华为荣耀官方微博公布的信息:华为荣耀发布会门票是2998元。但是华为刚刚发布了P7手机,定价在2888元,华为P系列走的是高端路线,荣耀走的高性价比路线。所以我觉得荣耀6应该不会定价高于P7的价格,而且荣耀6是荣耀1 荣耀2 荣耀3的延续,荣耀1到荣耀3初始售价都在2000元左右或者以下,荣耀6也应该在2000元左右,而且最新的荣耀3X增强版本 3X pro定价也在1698。 所以我觉得荣耀6,最有可能是一贯的1888元, 不过荣耀从3一下过度到6 连升3级,如果定价是2998肯定是有底气的,更有媒体认为荣耀3x Pro已经有抗击小米的能力,荣耀6很有可能作为定位为高端市场的突破之作。 2、外观 在荣耀6要发布之前,就有关于荣耀新机的谍照曝光,包括工信部的注册照片,一个带保护套的“真机”等等。我对荣耀6的外形是有很大期待的,因为荣耀系列一直走的是朴素中规中矩的外观设计,荣耀3c之前都是比较商务化的世界,荣耀3c 3x都是走的年轻、青春的路线。都是给人一种朴素大方的感觉。华为拥有世界顶级的设计师,你可以通过华为P系列的从P1到P7的外观演进中看出,华为在外观设计上一直在努力,一直在突破。我相信这次荣耀6在沿袭荣耀系列的朴素大方的同时,一定会有让人惊喜的外观设计。 3、配置 性价比拼的是就是最低的价格,和最优的配置。荣耀6的配置肯定要比以往的机型,上一个档次才能配的上3到6 型号的飞跃。配置方面,用户一般关心的是CPU 内存 摄像头 屏幕和电池。 CPU: 荣耀1是双核 荣耀2是四核 荣耀3是四核 荣耀3X都用上八核了, 荣耀6肯定是八核无疑,至于品牌,华为自有品牌 海思芯片已经日渐成熟,应用于多款机型包括P7这种高端手机,如果海思8核CPU问世,很有可能在荣耀6上试水。 内存: 2G是主流配置,但是3G内存的手机已经陆续面世,荣耀6不可能落后与此,3G内存极有可能。 摄像头: 3X pro的摄像头配置是前置500万 后置1300万。在像素方面实在没有提升的必要,毕竟是手机,如果像诺基亚傻逼似的搞了4300万像素的手机,那真是本末倒置了。荣耀6最有可能保留这样的像素配置,在性能和成像上可能有所优化。 屏幕: 摄像头1300万像素拍出来的照片,再用720p的屏幕来显示,就说不过去了,至少应该是主流的1080p=1920*1080的分辨率,更高的分辨率对照片显示的更细致。 电池: 2200mA的电池显得略有不足,但是电池容量越大,体积越大,这是目前所有手机厂商都无法避免的问题。虽然荣耀6的电池不会特别大,但是荣耀系列也不是走的超薄路线,常规3000mA左右的电池应该是标配。 4、特性 每一款荣耀手机都会有自己的一些特性,像荣耀2的爱享,荣耀3的三防和红外遥控,荣耀3x的双3G。荣耀6肯定也会加入一些独有的特性.媒体有猜: 全球最快的4G手机?双面玻璃?超高分辨率? 还是那句话,华为荣耀永远不断给你惊喜,让我们拭目以待…..

2014年6月15日 · 1 分钟

坚持一个博客真不容易

建站伊始,感觉自己有好多东西要写,好多东西要总结,当每天都坚持写一篇的时候,发现坚持每天一篇原创博客真的好难。 我的博客的定位是: 1、关于软件开发自己总结的经验 2、关于华为荣耀的最新动态和点评 3、关于博客建站过程中的总结 当博客的整体框架都完整了之后,我给自己要求的,每一篇文章都尽量的原创,即便是通过搜索引擎搜索来的知识,都要经过自己的实践,加上自己的理解,希望工作中每天都有一个技术难题让我突破,好让我总结发表成博文。 一开始还好,可能是建立博客之前攒的,可以坚持一两天写一篇,越到后来,短短的一个月,发现我的工作很大部分也是在重复,在使用司空见惯的基础知识,没有更多的欣喜让我总结。即便想总结某一方面的知识,却发现网上比我总结的透彻的多了去了。如果写出来都像在抄袭别人,就像我前面关于 java多线程的总结。现在感觉长期坚持一个博客是多么的不容易。 我很羡慕我建站开始认识的那些网友,他们的站点已经被百度收录了上千条,上万条,而我仅仅收录了近百条。我也有过转载的念头,但是我知道只要我转载第一篇文章,博客对我来说就会失去这份原有的意义。虽然百度的收录条数可能让我产生小小的成就感,但是建这个博客的初衷是我的个人爱好,展现我个人的知识和经验,如果一旦转载第一篇文章,就会有第二篇,第三篇… 这样就逐渐偏离了我建站的初衷,决不能把我的网站做成一个转载他人文章的网络收藏夹。 所以除了强迫自己不断的学习新知识,总结新经验之外,我现在期望的就是华为荣耀每天都能给我惊喜,让我有东西写,嘿嘿~ 。

2014年6月15日 · 1 分钟

[惊喜]荣耀首款电信版手机有望面世

纵观荣耀家族所有机型,很遗憾的是华为荣耀至今没有一款支持电信3G CDMA2000制式的手机。不过这回使用电信手机的小伙伴们有福了。据@华为荣耀手机 微博透露。第一款正在研制当中,并表示“首款荣耀电信版手机,配置当然不能坑”,并透露了一张手机龙骨照片,从照片上看,很有可能首款电信版手机仍然是款双卡双待的手机,配置肯定也不在话下。 另外@华为荣耀手机 在2014年6月12日的微博中表示:关注“华为荣耀吧” 贴吧,进行抢楼、关注、签到等活动即可抽奖赢取荣耀首款电信版手机和一个月贴吧高级会员哦!这是不是预示着华为荣耀首款电信版手机很快就会发布呢?或者在2014年6月24日 荣耀6发布的时候一起发布呢?一切都有可能,总之华为荣耀会不断带给你惊喜,让我们一起期待。

2014年6月13日 · 1 分钟

java多线程学习(八) 之 线程池

线程池的目的是为了使用有限的线程处理大并发的任务。jdk自带丰富的线程池适应不同的应用场景。一般线程池需要考虑这样四个问题: 问题一:Core and maximum pool sizes: 线程池的大小,线程池的目的就是使用为了节省资源,使用有限的线程处理大并发的任务。你要为的线程设置最大的线程数maximumPoolSize,表示该线程数最大创建这么多线程,当要处理的任务多于线程数的时候,就放到队列里去等待,当有线程完成运行任务的时候,再从队列里取出来执行。 maximumPoolSize是最大的线程数,是最坏的打算,如果你认为n个线程就可以处理得了你的任务,你可以设置corePoolSize。表示线程池只创建corePoolSize个线程在处理任务,当任务已经把缓存队列占满,corePoolSize个线程处理不过来的时候,才会去创建新的线程。 问题二:keep-live 如果任务少,线程长时间闲置,就会浪费资源,但是一旦关闭了这个线程,等任务来了再创建线程又浪费时间。你可以根据你的任务的并发数,为线程池设置keep-live时间,当多长时间没有任务处理的线程自动关闭。这样当任务数少的时候,池子里的线程数就会相应减少,当任务多的时候,线程数也会随之增加。 问题三:queue 线程池一般都要指定一个缓存队列,因为你不能保证线程池里的线程足够处理你的任务,当并发任务数超过这个线程的核心线程数的时候,就会把任务暂且存放在这个缓存队列里。 问题四:Reject Policy 当线程池里的maximumPoolSize的线程都在处理任务,queue里的任务也占满了。也就是系统达到了满负荷,再有新任务进来,这时候应该怎么处理,这需要一个Policy 处理策略,对这个新任务应该怎么处理 需要指定一个策略RejectedExecutionHandler java.util.concurrent.ThreadPoolExecutor.AbortPolicy 任务填不进去,直接报错 java.util.concurrent.ThreadPoolExecutor.DiscardPolicy 直接丢弃 java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy 丢一个队列中最老的任务,把新任务加进去 如果你没有其他方面的要求,一个线程池基本只要考虑上面四个方面。 具体线程池的创建和使用可以简单参考: http://zhaoyanblog.com/archives/203.html

2014年6月12日 · 1 分钟

[重磅消息]荣耀6将横空出世

2014年6月8日,华为荣耀官方微博下午3点,发布一条:‘6月9日 宜嫁娶 宜公布消息 我要上头条’ 的图片微博。华为荣耀掌门人刘江峰转发微博,表示:该来的总会来…… 2014年6月9日,华为荣耀官方微博果真发出重磅消息:#荣耀6#创世而生,华为荣耀致敬极致科技之作,诚邀您共同见证荣耀的全新里程碑! 华为荣耀新品发布会将于2014年6月24日在国家奥林匹克体育中心体育馆隆重召开。 从荣耀6的型号推断,其跨越荣耀4,荣耀5,应该是继荣耀1代 荣耀2 荣耀3之后的旗舰机型。 至此网上已经流传了荣耀6的各种谍照和配置,无论何如,荣耀家族又要添加一位重要成员了。让我们一起期待6月24日那一天

2014年6月11日 · 1 分钟

cassandra集群要求严格的时间同步

cassandra的集群对时间的要求是很严格的,在集群中的任何一台机器时间都必须保持同步,即便有一秒的延迟,也会带来莫名其妙的问题。因为cassandra是根据时间戳分辨出最后到达的响应,假设对同一个记录进行不同的操作,如果时间不同步,可能会导致前面的操作在后面的操作之后生效。当在高速操作的时候,可能会发生记录删除不掉,表drop了仍然存在等等奇怪的现象。 同时如果发生这些形形色色的奇怪问题,你应该首先查一下你的集群是否时间同步,假设真是时间不同步导致的,而你又没发现,这会浪费你好多时间去调查原因。 做时间同步可以是集群里的所有机器和同一个时钟同步服务器同步,也可以集群中的某一个机器作为时钟同步服务器,其它机器都和它做同步。 同步方式一般都有两种,一种是定时同步,就是linux下面用crontabl做个定时任务,定时同步。每隔多少时间去同步一次这种同步是粗劣的,不可取的。如果你想保证你的cassandra集群长期稳定的同步,你需要精准的时间同步,就是使用ntp同步,ntp也是一种时钟同步协议。它有自己的一套算法,当前相差多少,下次什么时候同步等等,它的这一套算法,可以保证时钟时时刻刻的同步。 ntp是linux的一个服务,配置文件是/etc/ntp.conf 配置和启动ntp服务的方法不用赘述了,百度下两个linux服务器如何同步,怎么配置ntp同步,文章一大片。

2014年6月10日 · 1 分钟

华为荣耀和小米的死磕市场分布

中端机市场: 小米1/小米1s 荣耀1 荣耀+ 小米2 小米2s 荣耀2 四核爱享版 小米3 荣耀3 荣耀3x 荣耀3x Pro 华为荣耀1到荣耀3x Pro,基于用户体验,沿袭荣耀风格,不断的被用户所接受,所喜欢。相反,小米1到小米3,风格迥然不同,从小米1的丑陋后盖,到小米3的超宽的边框,越发让人讨厌。我一直觉得小米2是小米手机里面唯一说得过去的外观设计。 低端机市场: 红米 荣耀3c/荣耀3c 4G版 红米note 荣耀3x 畅玩版 低端机红米,让小米成功摧毁了大批山寨厂商,极低的价格是其最大的优势,同样低价格换来的是低品质,塑料感十足,山寨感十足的外观设计和材质,让我对其一点兴趣没有,但是低廉的价格,还是让人们趋之若鹜,直到荣耀3c出现,才对其进行了致命的打击。荣耀3c同样的低廉价格,但是高端大气上档次的设计,完胜红米。 平板市场: 小米平板 荣耀X1 小米磨蹭了两年终于出了自己的小米平板,然而改不了中国人的陋习,在小米3模仿lumia之后,这次竟然完全模仿ipad mini。简直和ipad mini一模一样。若是你你会选中小米平板,还是ipad mini呢?难道雷军想的是,我做的东西和苹果一样,价格却比苹果低,就算成功了吗?这里的荣耀X1完全和小米平板不能在一个级别上相提并论的,荣耀X1是一个支持4G的平板手机。我希望买平板的朋友,还是考虑下ipad吧,或者一部手机+平板的荣耀X1也不错啊~ 跨界产品: 小米路由器 荣耀立方 小米盒子 华为秘盒 小米电视 荣耀手环 ——我是花粉,我爱荣耀

2014年6月8日 · 1 分钟

java多线程学习(七) 之 atomic操作

有些时候,我们希望对一个数值类型的操作是一个原子操作,比如一个计数器,我们希望对一个计数器++i 之后,可以拿到的i是++之后的值。 你如果是这样写 m=++i; 当前i可能是2,再执行++i之后是3,此时如果另外的线程也进行了++操作,那当赋值给m的时候,可能有一定的几率就不是3了。 要保证这样的原子操作,可以使用线程同步的方式来实现,但是使用AtomicInteger,会更方便一些。 例: AtomicInteger atomic = new AtomicInteger(0); int num = atomic.incrementAndGet(); incrementAndGet方法保证返回的结果是+1之后的结果。 此外它还有一系列的原子性操作: atomic.getAndDecrement(); //num = i--; atomic.getAndIncrement(); //num = i++; atomic.getAndAdd(3); //num = i; i+=3; atomic.getAndSet(3); //num = i; i=3; atomic.decrementAndGet(); //num = --i; atomic.incrementAndGet(); //num = ++i; atomic.addAndGet(3); //i+=3; num = i; //atomic.set(3); //i=3; atomic.compareAndSet(2, 3); //if(i==2) i=3; 这些操作,保证了对一个数值对象,进行基本操作的原子性。保证了一个线程在对一个数值进行操作之后,拿到得是自己操作后的结果,而不是别的线程操作后的结果。 在实际中使用到的场景主要是多线程下的计数器,版本号等,虽然和Lock实现(ReentrantLock)的原理都一样,都是使用了UnSafe类native的compareAndSwapInt等方法实现的,但是至少在用法上更简洁,更方便。 除了AtomicInteger之外,还有AtomicBoolean,AtomicLong。都是保证对数值类型的操作的原子性。 AtomicReference 是对一个对象引用的原子操作。 举例: MyObject p1 = new MyObject(1); AtomicReference<MyObject> pR = new AtomicReference<MyObject>(p1); pR.compareAndSet(p1, new MyObject(2)); 相当于: MyObject p1 = new MyObject(1); MyObject pR = p1; if(pR == p1) { pR = new MyObject(2); } 保证对一个对象引用的原子操作。 此外还有他们的衍生类型 AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray 保证对数组类型里的元素的操作的原子性。 AtomicIntegerFieldUpdater/AtomicLongFieldUpdater/AtomicReferenceFieldUpdater 保证对一个对象的成员的操作的原子性

2014年6月7日 · 1 分钟

cassandra支持的查询表达式

本文介绍cassandra支持的,目前我所知道的所有查询表达式类型。如果你需要更复杂的查询,单单依靠cassandra是很难做到的,你需要借助其它手段或者工具。 cassandra目前支持的表达式目前有三种: 我们先假设我们的表结构是这样的: create table test( a int, b int, c int, d int, e int, primary key(a,b,c,d) ); create index on test(e); 1、前缀表达式 就是查询条件必须是主键,且前面的主键是=号,只有最后一个主键是> >= < <=。 举例: select * from test where a=1 and b>2; select * from test where a=1 and b=1 and c>2; select * from test where a=1 and b=1 and c=1 and d>2; select * from test where a=1 and b=1 and c>2 and c<2; 以上都是可行的。 ...

2014年6月6日 · 2 分钟

[新闻]荣耀3X Pro&荣耀3C 4G版预约截止,预约人数超500万

昨日,2014年6月4日 18点,华为商城结束关于荣耀3X Pro和荣耀3C 4G版的官方预约,截止预约时间,华为商城总预约人数超500万。 京东商城同步预约截止,京东预约荣耀3c 4G版用户超300万,预约荣耀3X Pro用户超200万,与此同时,手机QQ-QQ钱包-1分抢荣耀3C 4G手机的活动也结束了。据官方微信报道,华为商城、京东、手机QQ预约总人数达到1570万。 华为商城、京东商城同步进入发售倒计时。今日,2014年6月5日10:08分,荣耀3C 4G版和荣耀3X Pro将满载诚意与自信悍然首发,接受数百万预约用户的热宠和追捧,让我们拭目以待。

2014年6月5日 · 1 分钟

如何屏蔽恶意访问IP

最近一段时间发现我的博客隔三差五的就有一个访问高峰,在同一时刻近百个IP访问我的网站,并且只是访问首页而已,停留几秒遍离开了,这是一种不正常的访问。我想我的小博客没什么名气,和别的网站也没有什么利益冲突。应该不会有人对我进行DDOS攻击吧。但是我的博客是使用的廉价虚拟机,无论是不是恶意攻击,这样的短时间内的高强度访问,对我们的博客都是一定的冲击。 我首先分析了访问我博客这些IP的特征,发现全部是来自北京、浙江、山东三个地区的。IP段分别是:27.221.37.* 115.239.212.* 111.13.102.* 我首先想到的方法是屏蔽IP,到底在哪一层屏蔽IP呢? 我首先想到的是最外边的DNS层,如果这些IP访问我的网站,我不给它域名解析了,它的请求就到不了我的服务器,问题也解决了。我的域名解析使用了DNSPod,登陆上去查看了控制面板的所有功能,貌似没有提供这样的服务。那就只能在服务器上做屏蔽了,只要是这些ip来的请求,我返回一个403错误,问题也解决了,然而在西部数码的控制面板上也好像没找到这样的功能。 我遍寻百度,看到网站上关于使用apache的.htaccess文件来屏蔽ip访问的方法。而我的网站的根目录下确实是有这么一个文件。恶补了一下htaccess文件的来历和用途,发现确实是可以实现这样的功能的。然后我按网站上介绍的方法,在根目录的.htaccess文件中加入下面的语句: Order Allow,Deny Allow from all Deny from 115.239.212 111.13.102 27.221.37 我首先屏蔽了自己的IP,发现该功能并未起效,自己照样可以访问自己的博客,无奈我只好咨询了西部数码的工作人员,欣喜的是他们给了正确的操作方法,在htacess文件中加入下面的语句即可: <IfModule mod_rewrite.c> RewriteEngine On ##Block ip RewriteCond %{http:X-Forwarded-For}&%{REMOTE_ADDR} (27.221.37|115.239.212|111.13.102) [NC] RewriteRule (.*) - [F] </IfModule> 最终问题解决了,希望不再有恶意的攻击。

2014年6月3日 · 1 分钟

java多线程学习(六) 之 Condition

和synchronized一样,Lock是为了线程互斥而设计的,在synchronized中,使用对象隐式锁的wait notify(notifyAll)来实现线程之间的通信,同样的功能在Lock中是通过Codition来实现的。Condition除了完成wait和notify的基本功能之外,它的好处在于一个Lock可以通过创建多个Condition,选择性的去通知wait的线程。 官方解释: Condition factors out the Object monitor methods (wait, notify and notifyAll) into distinct objects to give the effect of having multiple wait-sets per object, by combining them with the use of arbitrary Lock implementations. Where a Lock replaces the use of synchronized methods and statements, a Condition replaces the use of the Object monitor methods. Condition把隐式锁的wait notify notifyAll功能提取出来,赋予确切的对象,让一个对象有个多等待集(wait-sets),这些condition也是和Lock实例绑定的,换句话说,Lock对象代替了synchronized,condition代替了wait、notify(notifyAll)等方法。 因为一个Lock可以生成多个Condition,所以condition可以让所有的因Lock等待的线程分成几个相互等待的子集合,也就是前面提到的wait-sets. Conditions (also known as condition queues or condition variables) provide a means for one thread to suspend execution (to “wait”) until notified by another thread that some state condition may now be true. Because access to this shared state information occurs in different threads, it must be protected, so a lock of some form is associated with the condition. The key property that waiting for a condition provides is that it atomically releases the associated lock and suspends the current thread, just like Object.wait. ...

2014年6月2日 · 2 分钟

java多线程学习(五) 之 Lock

java里的Lock提供了比synchronized更灵活的线程同步操作,可以让你更自由的获取锁,释放锁。 官方解释: Lock implementations provide more extensive locking operations than can be obtained using synchronized methods and statements. They allow more flexible structuring, may have quite different properties, and may support multiple associated Condition objects. Lock的实现类提供了比synchronized更广泛意义上锁操作,它允许用户更灵活的代码结构,更多的不同特效,支持多个相关的Condition 对象。 这里我们先不去了解什么是Condition对象,我们主要还是看Lock的基本操作,来完成synchroized可以完成的工作。 A lock is a tool for controlling access to a shared resource by multiple threads. Commonly, a lock provides exclusive access to a shared resource: only one thread at a time can acquire the lock and all access to the shared resource requires that the lock be acquired first. However, some locks may allow concurrent access to a shared resource, such as the read lock of a ReadWriteLock. Lock 是一个对多线程访问共享资源进行控制的工具,通常 一个锁提供了一个共享资源的独占访问, 也就是说在同一时间,只有一个线程可以获取到该锁,在获取锁之后,才能对共享资源进行访问。当然也有的锁允许并发访问资源,例如这种特殊的锁ReadWriteLock ...

2014年6月1日 · 2 分钟

java多线程学习(四) 之 wait和notify

ynchronized让线程之间互斥,但是有时候因为业务逻辑,需要主动释放锁,让其它的线程执行,这就需要线程之间通信,我们知道JAVA里每个对象都有个隐式锁,JAVA为每个对象都提供了wait和notify(还有notifyAll)方法,分别用于本线程主动释放锁,进入等待状态,和唤醒其它进入等待的线程。 官方解释: Causes the current thread to wait until another thread invokes the java.lang.Object.notify() method or the java.lang.Object.notifyAll() method for this object. wait会导致当前线程进入等待,直到其它线程执行该对象的notify()或者notifyAll方法 The current thread must own this object’s monitor. The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object’s monitor to wake up either through a call to the notify method or the notifyAll method. The thread then waits until it can re-obtain ownership of the monitor and resumes execution. 首先当前线程在调用wait之前,必须先获取到该对象的monitor就是所谓的隐式锁,也就是synchronized的作用。这个线程就会释放对隐式锁,并且进入等待,直到另外一个获得锁的线程,通过notify和notifyAll唤醒它。它在被唤醒后,并不会继续往下执行,而是需要再次去获取锁,获取锁之后,继续执行。 ...

2014年5月29日 · 1 分钟

java多线程学习(三) 之 ThreadLocal

ThreadLocal 中文可以叫 线程变量 官方解释 This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable. ThreadLocal instances are typically private static fields in classes that wish to associate state with a thread (e.g., a user ID or Transaction ID). 这个类提供一个线程局部变量,意思就是变量只在该线程内可见,对于每个线程都可以用get和set方法获取属于这个线程自己的变量。ThreadLocal变量通常定义在那些想和线程绑定的类里面,例如访问者的ID,事务ID等等。 官方举例: import java.util.concurrent.atomic.AtomicInteger; public class ThreadId { private static final AtomicInteger nextId = new AtomicInteger(0); private static final ThreadLocal threadId = new ThreadLocal() { @Override protected Integer initialValue() { return nextId.getAndIncrement(); } }; // Returns the current thread's unique ID, // assigning it if necessary public static int get() { return threadId.get(); } } 其中threadId就是一个线程变量。具体的使用可以是这样的: ...

2014年5月27日 · 1 分钟