探索客

数据库设计原则

从@蔡学镛看到的数据库的一些设计原则,可以考虑考虑.梳理数据库时,你会很惊讶地发现,各种数据都被塞进数据库,所以做数据库梳理的第一步是把它们区分出来,我的区分方式是:核心数据、业务数据、核心缓存数据、业务缓存数据、Session 数据。核心数据及其缓存都要再根据领域(domain)来区分,业务数据及其缓存都要再根据业务(business)来区分。梳理数据库或设计数据存储时,可以考虑数据的属性:1. 访问频率 (高/中/低)2. 读写比 (只读/读多/读少)3. 重要性 (重要/普通/不重要)4. 保密性 (保密/普通/不需保密)5. 数据笔数 (多/一般/少)6. 数据体积 (大/中/小)7. 一致性要求 (强/中/弱)8. 热点现象 (强/中/弱)9. 索引方式 ( ____ )

jvm的内存调优

1) 堆    运行时数据区域,所有类实例和数组的内存均从此处分配。Java 虚拟机启动时创建。对象的堆内存由称为垃圾回收器 的自动内存管理系统回收。 堆由两部分组成:    其中eden+fromspace+tospace也叫年轻代(young),old space叫旧生代.    其中还有S1,S0(在JDK的自带工具输出中会看到),分别指的是Survivor space,存放每次垃圾回收后存活的对象.    Old Generation , 主要存放应用程序中生命周期长的存活对象垃圾回收主要是对Young Generation块和Old Generation块内存进行回收,YG用来放新产生的对象,经过几次回收还没回收掉的对象往OG中移动,对YG进行垃圾回收又叫做MinorGC,对OG垃圾回收叫MajorGC,两块内存回收互不干涉2) 非堆内存   JVM具有一个由所有线程共享的方法区。方法区属于非堆内存。它存储每个类结构,如运行时常数池、字段和方法数据,以及方法和构造方法的代码。它是在 Java 虚拟机启动时创建的。    除了方法区外,Java 虚拟机实现可能需要用于内部处理或优化的内存,这种内存也是非堆内存。 例如,JIT 编译器需要内存来存储从 Java 虚拟机代码转换而来的本机代码,从而获得高性能。   Permanent Generation   (图中的Permanent Space) 存放JVM自己的反射对象,比如类对象和方法对象3) 回收算法和过程    JVM采用一种分代回收 (generational collection) 的策略,用较高的频率对年轻的对象(young generation)进行扫描和回收,这种叫做minor collection,而对老对象(old generation)的检查回收频率要低很多,称为major collection。这样就不需要每次GC都将内存中所有对象都检查一遍。      当一个URL被访问时,内存申请过程 如下:A. JVM会试图为相关Java对象在Eden中初始化一块内存区域B. 当Eden空间足够时,内存申请结束。否则到下一步C. JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收), 释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区D. Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区E. 当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)F. 完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory错误”    对象衰老的过程    young generation的内存,由一块Eden(伊甸园,有意思)和两块Survivor Space(1.4文档中称为semi-space)构成。新创建的对象的内存都分配自eden。两块Survivor Space总有会一块是空闲的,用作copying collection的目标空间。Minor collection的过程就是将eden和在用survivor space中的活对象copy到空闲survivor space中。所谓survivor,也就是大部分对象在伊甸园出生后,根本活不过一次GC。对象在young generation里经历了一定次数的minor collection后,年纪大了,就会被移到old generation中,称为tenuring。(是否仅当survivor space不足的时候才会将老对象tenuring? 目前资料中没有找到描述)     剩余内存空间不足会触发GC,如eden空间不够了就要进行minor collection,old generation空间不够要进行major collection,permanent generation空间不足会引发full GC。4 接下来这部分讲解的是TOMCAT或者其他服务器出现如下错误时的分析:   1、首先是:java.lang.OutOfMemoryError: Java heap space解释:Heap size 设置JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。解决方法:手动设置Heap size修改TOMCAT_HOME/bin/catalina.bat,在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:Java代码set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m  set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m或修改catalina.sh在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:JAVA_OPTS=”$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m”2、其次是:java.lang.OutOfMemoryError: PermGen space原因:PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法:1. 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:   set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m  “echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512mcatalina.sh下为:Java代码JAVA_OPTS=”$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m”JAVA_OPTS=”$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m”JVM的默认设置**堆**(heap)(News Generation…

西安的天和南京的天

西安的天,时间是:2012.12.15南京的天,时间是:2012.02.02

单页网站技巧分享——模糊背景

大艾设计: 先来看几个网站实例:1.bakkenbaeck.no2.greatcoffeeapp.com3.lanu.fm**模糊背景的优势: **1.简单又不失美观2.突出和衬托主题内容3.不夺取用户的目光焦点模糊背景的图的尺寸:考虑到现在主流浏览器的分辨率最高为2880×1800(Mac的Retina屏);但本博主不建议使用如此高清的图片作为网页背景,因为一张2880×1800分辨率的图片,大小在1Mb以上;大多数用户的显示器分辨率不会超过1920×1200,所以这个1900×1200分辨率的图片作为模糊背景图,完全合适;如果仅仅考虑到中国用户的显示器分辨率,今天1680×1050的图片也足矣;模糊背景的制作:如果您是一位大师级别的人物,那么就可以忽略掉这段文字,因为这个地球上有那么些人,可以完全用一种叫单反的设备,拍摄出这种效果;而玩不起设备的屌丝们,就可以通过万能的Photoshop实现了;下面我就用一张QQ会员空间的Windows壁纸来做示范;原图在这里:博主空间下载  QQ原址下载我们要做的,只需一步:调整一下半径值(数值越高,模糊度越高);确认→导出jpg→选择70%的品质保存后发觉,模糊后的图片文件的大小(112k),比原图(224k)缩小了50%;这也是使用模糊背景图片的另一个优势吧,图片文件小了,用户浏览体验好了;注意事项:模糊背景图的选择上,不宜选择颜色色相过多的图片;模糊背景图的选择,需要和页面做展现的内容信息相关,而不是随意取一张图片做模糊处理后使用;最后,互联网上有篇文《模糊背景在网站中的经典应用案例》,原文出处在这里:http://vandelaydesign.com/blog/galleries/blurred-backgrounds/博客内还有很多资源和好文章,不过前提是,需要一定的E文基础;最后,再放几个模糊背景网页,PS:和网上的那篇文章例举的网站不同哟~4.goborrow.it5.www.labwork.com.au6.www.rylographic.com

测试怎么玩

最近算是转行做测试了,半路出家的我,比不了人家的专业测试,惭愧啊!狠狠的补一下测试的东西,让自己也能称之为TESTER,之前是码农。怎么玩这个测试,玩游戏,知道了规则,才能玩的起,共享几个测试的站点。郑文强http://www.51testing.com/淘宝测试信息来源要精而少,多了,反而消化不了。另外,在郑文强的站点中,有《测试人》的期刊,挺不错的杂志,分享学习。《测试人》杂志下载第1期第2期第3期

bootstrap4diandian主题v1.1

bootstrap4diandian主题v1.1增加底部公告栏,这个功能我认为是个鸡肋,公告这东西,放在首页第一眼看见的地方就可以了,也就浏览一下,不用全站都有的,有朋友要求,我就增加了,可以在后台选择显示,设定公告内容.代码参考了记忆碎片提供的代码,可以有很多的扩展,可以看这里.增加google统计自定义,后台设置,点点提供了统计数据,和google统计差异很大啊.增加了博客载入过程添加“正在努力载入中…”效果,代码还是用的记忆碎片提供的代码,原文在这里.修改了在IE8下面,文章列表图片和文字不在同一行的bug.修改了其他一些小问题…还有朋友提出要固定的侧边栏,作为现在一种响应式的设计,在我考虑之后,这点没有满足,抱歉了.后台设置链接: 安装地址