昨天猎豹一直嚷嚷着2012-10-16发布猎豹浏览器2,还以为有啥新玩意出来呢!的确有新玩意出来,升级内核了,兼容win8了,速度更快了,IE的兼容性更好了.内核升级有好叫的,人家chrome是个版本帝,天天升级,你就跟着人家屁股后面升级,叫啥叫啊!兼容win8了,这个倒还可以做为一个亮点,我用的就是win8.速度更快了,用chrome就是为了一个快!你猎豹是chrome生出来的,做了些优化,比原chrome快了.这不是儿子喊叫着自己个子比老娘高了,叫个辣子啊!在中国玩多核浏览器,不考虑IE的兼容,谁用啊!猎豹浏览器的UI做的相当不错,一段时间用猎豹浏览器,也是奔着皮肤去的.chrome浏览器的好处就是能云同步,应用 插件 设置 皮肤等等,猎豹浏览器好像就能同步个收藏夹,满足不了,我的需求啊!如果你用过收藏夹的同步,那我建议您可以用用猎豹浏览器,用起来还是挺舒服的.数字的浏览器,我一直的观点是产品不错,就是公司没个底线,我佩服数字公司,可也鄙视他们的做法.下载: 官网
之前装了win8的预览版,家里不用wifi,就把wifi给关掉了.又装了win7,这下就倒霉了,装系统时还发现光驱给坏了,买了U盘,用U盘装了系统.wifi也就一直没用,哪天想弄个无线wifi,想给手机用,wifi无论咋样都打不开,什么不知道啥原因,还以为是硬件坏了呢! 这几天放假,win8的rtm版也有下载了,而且要比win7的速度快,就又装了一次win8,竟然wifi可以用了,这个坑爹的win8,wifi在win8下面关了,还要在win8下用,win7竟然用不了,想不明白,也许是win8的一个bug呢! 装了win8以后,感觉的确比win7快了不少,wifi也正常的用起来了.good!
原文网址:http://www.cnblogs.com/mailingfeng/archive/2012/09/13/2683246.htmlOCP(Open-Close Principle)开闭原则 Software entities should be open for extension,but closed for modification,(在设计一个模块的时候,应当使这个模块可以在不被修改的前提下扩展)。 对扩展开放open,对修改关闭close。 如何实现? 1.抽象化是关键 2.对可变性的封装原则(Principle of Encapsulation of Variation EVP)。 3.对可能的拓展预留接口 备注: 1) 对于抽象化, 我的理解是, 接口是相对稳定的, 实现是根据需求多变的. 对于大多数可能预料的变化点, 我们可以抽取出共性或者常态点, 进行接口的封装, 而选择不同的实现类嵌入模块, 从而达到可扩展的作用. 2) 对于某个业务点, 可能以后有多种介入处理的情况, 那么这时候可以将业务抽象成事件(event)接口和监听器(listener)接口, 不同的处理需求生成不同的listener, 接入模块的listener收集器, 从而得到业务点的介入机会. 最后达到功能的扩展. 典型容易理解的例子,工厂模式。当需要新增加一个类的时候,直接继承product接口就可以了 , 由工厂类来组装产生需要的product, 而不用大范围修改原有代码。OCP~Liskov Subsitution Principle(LSP)里氏代换原则 就是子类可以代替父类出现的任何地方,在抽象的时候,重要的要理解的一个地方两个类之间是什么关系,是“has-A”?还是“Is-a”的关系。在 “has-a”的关系中,两个类存在的是依赖的关系(在类A里面存在类B的的变量);在“Is-a”的关系中,可以提取这两个类的“共同代码”放在抽象类 C中,然后A,B继承与C,这也是一种重构。Dependency Inversion Principle(DIP)依赖倒转原则 就是在我们编程的时候方法的参数类型,变量,对于其他具体类的依赖,我们尽量的使用抽象类 。 就是说尽量依赖于抽象,而不是依赖于实现。 在书中两种表述: (1),Abstraction should not depend on details.details should depend on abstraction. (抽象不应当依赖于细节,细节应当依赖于抽象)。Abstraction就像是建筑物的基础,而其实现类就是在基础上面一层一层的往上面走。你拆掉最上面 那层,和拿走最下面的基础,有什么不同了,这就是差异了。所以Abstraction是要相当的稳定,是维护的重点。也正是因为稳定,所以我们尽量的依赖 于Abstraction,既是稳定系统,也是灵活系统。 (2),Program to an Interface,not an implementation(要针对接口编程,不要针对实现编程) 应当使用java接口和抽象java类进行变量的类型声明,参数的类型声明,方法返回值的类型和数据类型的转换。 备注: 依赖倒转原则的作用在于多模块或者类间有统一的"知识", 都知道有这个接口, 都知道这个接口是这样用,会返回什么数据. 至于最初的实现类是什么, 只有提供该接口功能的实现类自己关心, 其他模块或者类只管用就行了. 即使以后需求更改, 实现会换成别的一个, 其他模块和类也无需修改代码. 例如A模块提供了一个接口是: List getProducts() 而B和C会使用该模块, 他们只知道这个方法就会返回List , 他们知道List和Product代表什么. 但他们不会管你的接口内部是使用List list = new ArrayList() , 还是List lis = new LinkedList() 或者具体的Product是什么(可能是衣服,鞋子等)Interface Segregation Principle(ISP)接口隔离原则 限制一个实体对另一个实体通信时候的宽度。 就是一个类对另外一个类依赖的时候,应当是建立在最小的接口上面。对于接口隔离原则来说,有两种接口,一种是真正意义上面的“java 接口”Interface;另外一种是指一个类的方法的集合。对于这来两种有,两个接口隔离的原则,对于一个类里面的方法的集合的接口隔离,我们称作是 “角色隔离原则”;另外一种叫做“定制服务”。 定制服务,就是一个类,我给你这个客户端一些方法,我放在一个java接口(Interface)里面。给另外一个客户端另外一些方法,放在另外一个接口(Interface). 角色隔离原则,是指客户端要多个不同的类的方法,我们就搞几个不同类别的接口(Interface),在书中,这么比喻的,就相当于电影剧本里面的人物,我们找人来演,这个人就是具体的类。这就叫做角色隔离原则。Composition/Aggregation Reuse Principle(CARP)组合/聚合复用原则 就是说要尽量的使用合成和聚合,而不是继承关系达到复用的目的。 其实这里最终要的地方就是区分“has-a”和“is-a”的区别。相对于合成和聚合,继承的缺点在于:父类的方法全部暴露给子类。父类如果发生变化,子类也得发生变化。聚合的复用的时候就对另外的类依赖的比较的少。Least Knowledge Principle(LKP)最少知识原则,又称为“Law of Demeter”迪米特原则。 和ISP接口隔离原则一样,限制类与类之间的通信。ISP限制的是宽度,而LoD迪米特原则限制的是通信的广度和深度。 LoD在广度上面,尽量减少远距离类的关联,而使用与自己有关的类,并且也与远距离类有关的类。 可是这种做法有一点麻烦。多个远距离类产生关联的时候,不怎么容易处理,所以增加一个远距离类的抽象类。所有的远距离类都是通过抽象类的形式来访问。 在深度上面,控制权限是最重要的,对于类,一个是default 和public,尽量最小权限;对于成员,private,default,protected,public。往上面走,权限越小,依赖的耦合就越小。 有几种描述: (a)Only talk to your immediate friends. (b)Don’t talk to strangers. 设计模式“facade”,"调停者模式"。在这里是IoD的典型表现。 备注: 当一个系统比较大的时候, 如果所有的模块都自己去寻找与自己相关的类的时候, 那么引用关系就会变得极度复杂, 耦合度高. 这个时候最好就设定一个为各个模块所熟悉的对象, 例如Context容器. 另外,各个模块可以应用facade模式, 提供一个简单的对外接口, 并将其嵌入Context容器. 这样, 模块间通过熟人Context来获取其他模块的Facade接口,…
今天遇到个比较搞的事情,我们接口层的时间格式采用时间戳的格式来进行定义的。在各个语言上面应该是比较通用的吧! 我们讨论的焦点是c#不好处理,要把格式改成yyyy-mm-dd hh:mm:ss的格式,就这样产生了分歧。 我不做C#开发,也承认C#作为MS的产品,可能C#对于时间戳会没做很好的处理,可总有处理的办法吧!呀!这个问题纠结的啊! 为了测试有办法处理,给电脑装了VS2010,测试之后,才发现,这么容易处理! 发代码给大家瞧瞧,没学过代码的也能明白,啥叫个简单。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Console.WriteLine("时间戳转换为本地时间"); Console.WriteLine("1347872069"+"转换为本地时间:"); long l = 1347872069; // 本地时间为:2012/9/17 8:54:29 Console.WriteLine(FROM_UNIXTIME(l)); Console.WriteLine("================="); Console.WriteLine("本地时间转换为时间戳"); DateTime dt = DateTime.Now;//取系统当前时间 Console.WriteLine("系统当前时间:" + dt.ToLocalTime()); Console.WriteLine(UNIX_TIMESTAMP(dt)); Console.Read(); } //时间戳转换为本地时间 public static DateTime FROM_UNIXTIME(long timeStamp) { return DateTime.Parse("1970-01-01 00:00:00").AddSeconds(timeStamp); } //本地时间转换为时间戳 public static long UNIX_TIMESTAMP(DateTime dateTime) { return (dateTime.Ticks - DateTime.Parse("1970-01-01 00:00:00").Ticks) / 10000000; } }} 提供一个时间戳转换工具的网址,不相信,可以试试。http://shiningray.cn/toys/unix-timestamp
使用mysql时,发生的错误 Table is marked as crashed and should be repaired。解决办法:用“REPAIR TABLE tablename;”命令修复。简单好用!还有其他办法,就不多说了。原因:有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说 法。还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能 导致MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。来一曲古风版的最炫民族风,民族乐器演奏出来果然不一般啊!
作为一个通用的框架,不仅仅需要最小可用,还需要一些完整的功能,这篇文章说了一些常用的通用功能,我建议再补充一些。a、权限控制 作为系统,就有人去用,有人的地方就需要进行控制,能用什么,该用什么,都要进行管理,这就是权限控制。权限是个很复杂的东西,场景不一样,权限控制也就不一样,我一直赞成使用的是RBAC,使用资源、角色、用户做最小角色控制,以后需要其他功能,RBAC也容易进行扩展。b、日志记录安全是现在系统必须注意的问题,而系统很作的操作,都很敏感,你做了,我就得记住。其他的功能,看看下面的文章!公司的JAVA框架应具备的通用功能以前在学校的时候自己以为是不是每个做JAVA开发的公司每次做项目的时候都要搭建一个SSH框架呢,工作之后才发现每个公司都有自己的一套框架,要不是在SSH基础上,要不是在SSI基础上进行了符合自己公司需求的封装,并且随着自己公司的框架被应用到各个实际系统的过程中,这个框架会越来越成熟,会使该公司的开发效率越来越高。 根据笔者接触过的几个公司的框架,笔者发现要想实现高效的开发,每个公司的Java框架应该具备如下的特点:1.具有灵活的分页功能。 分页功能是每个项目中必须要实现的功能,而恰恰这个功能是比较费时费力的,如果在框架中实现这一功能,将在每个项目中大大减少分页的重复性工作。2.可以方便的实现文件的上传与下载、数据的导入和导出的功能。 文件的上传于下载、数据的导入和导出在大部门项目中也会遇到,但是这两个功能可能会因为项目的不同导致实现上有一点区别,我们框架中要做的就是应该抽出其中共有的东西,定义为抽象的东西,以便不同的项目、不同的需求都能很容易的实现该功能。3.方便的事务管理功能。 事务管理一般来说都定义在业务逻辑层。我们框架中应该实现对业务逻辑对象事务的简单配置甚至是零配置。笔者接触过的两个框架中,一个需要在配置完一个业务逻辑对象时,在事务管理的配置文件中加上一句简单的配置即可,另一个是框架中实现了几个基本的业务逻辑对象,并对这几个对象实现了事务管理的配置,开发的时候定义的业务逻辑对象都是继承自这几个基本对象,也就省去了事务管理的配置。4.具有异常处理框架。 基本上每个项目的异常处理都应该可以使用公司的框架定义的异常处理框架,并不会因为项目的不同而要求的异常处理也不一样。5.具有自己的一套页面组件。 项目开发都是团队的开发,要想保证每个开发人员的界面风格统一,最好的办法就是定义一套公司自己的页面组建。这样既能保证开发效率,也能做到界面的统一。freemark就是不错的选择,其支持自定义宏,公司框架中可以定义一套自己的页面组建宏,供开发人员调用即可。6.具有数据校验框架。 每个项目在数据校验时都可能会用到大量的正则表达式,那么在公司的框架中将这些正则表达式封装起来,提供统一的调用接口将是不错的选择。7.简单的实现菜单的配置。 一个好的框架应该提供对菜单、二级菜单等的简单配置、管理。还是上文提到的两个框架,一个是通过XML配置文件实现了对系统中一级菜单、二级菜单、三级菜单的管理,而另个框架要实现相同的需求却要在数据库中进行繁琐的配置,显然第一个框架的实现方案更可取、更高效。原文网址:http://hp.dewen.org/?p=974
小米的音效,还算是一般吧!如果把音量放到最大,偶尔会听到一些爆音。这里强烈推荐使用DSP管理器,来进行管理。这边已经由puterjam进行整理打包好的工具了。puterjam就是pjblog的大神,相当不错一款博客程序。我对这些音效也算是个音盲,可用过Beats Audio + DSP 管理器后,也能十分的发现音效的确变了,音效可以自己选择,我选择的是改变的低音,这样听起来深沉些。 截图: 安装方法:方法1:第一次安装前先执行 1.备份系统文件.bat 根据引导即可自动完成安装。方法2:执行 1.备份系统文件.bat 后中断继续安装流程,可以选择不带DSP的安装方式 2.安装(不带DSP).bat (注意:已经安装过7.1版本的,备份文件系统是无效的,请参考安装问题解决中的 6.1或者6.2 来解决卸载问题)卸载方法:3.卸载.bat 不用多说了吧 (卸载的时候,自动把system_bak目录中备份的文件进行覆盖,需要手动制作备份文件的请参考安装问题解决中 的 6.2 说明) ————————————————— 我是分割线 —————————————————安装问题 Q&A 1. 安装失败的问题,建议在 MIUI V4 (我是最新的2.6.29版本)下试试看(其他版本系统没尝试过),如果是android 2.3内核的这个不保证可以安装。 2. DSP安装有问题的,可以尝试下载 去掉DSP 的audio_effects.conf 的文件 覆盖/system/etc/audio_effects.conf 下的文件,别忘记修改权限成644 wr-r-r 以及用RE删除 /system/app/DSPManager.apk 可以保留BA的音效 3. 如果还出现其他问题,小米手机可以切换到另外的系统来修复。 4. 安装先关闭 豌豆莱或者QQ手机管家等软件,避免adb server冲突 5. 如果发现copy文件失败,请手动执行一下 adb root 后在执行install.bat6. 安装方式因为修改到了系统文件可能会导致OTA升级时文件验证失败而无法升级系统,7.1号安装的朋友请根据一下方式解决6.1 情况1: 如果是 2.6.29 的系统,可以下载这个版本对应的系统文件,解压到心的安装包里system_bak目录下,然后执行 3.卸载.bat 进行系统文件还原。6.2 情况2:如果不是这个系统的,需要自己找到对应系统的的几个文件按照system的目录结构放到system_bak目录中进行还原 系统升级需要检查的文件列表, 这些文件可以在您的系统对应的完整安装里找到/system/etc/audio_effects.conf/system/lib/soundfx/libvisualizer.so/system/lib/soundfx/libreverbwrapper.so/system/lib/soundfx/libbundlewrapper.so/system/lib/soundfx/libaudiopreprocessing.so/system/lib/libwebrtc_audio_preprocessing.so/system/lib/libSR_AudioIn.so/system/lib/libaudcal.so/system/lib/libacdbmapper.so_复制代码_对应备份目录的结构图6 天前 上传下载附件(17.06 KB)发送到手机 最后同样执行,3.卸载.bat 进行系统还原后进行OTA升级。 7. 最后,还是需要你要胆大心细 :P原文地址:http://www.miui.com/thread-630072-1-1.html下载地址:http://l3.yunpan.cn/lk/080fswmvve