Java Object Layout(jol)

Java Object Layout(jol) http://bboniao.com/openjdk/2014-06/java-object-layoutjol.htm http://openjdk.java.net/projects/code-tools/jol/ hg clone http://hg.openjdk.java.net/code-tools/jol/ jol cd jol mvn clean install pom.xml添加依赖 org.openjdk.jol jol-core 1.0-SNAPSHOT 代码 public static void main(String[] args) { int size = 10; List list = new ArrayList(size); ...

2015-05-21 · 2 min · 373 words · -

西红柿土豆打卤面

西红柿土豆打卤面 西红柿切碎,土豆切粒,瘦肉切丁,尖椒切丝. 下油,先把肉放锅里炒,炒得肉发干以后放尖椒炒,放酱油翻炒,放土豆和西红柿~ 翻炒完以后放一大碗清水,闷到土豆熟了,卤汁就完成. 重新拿个锅烧水,等水开了以后下面,准备一碗凉水,面一开就加一点凉水,直到面煮熟以后捞起.(想吃鸡蛋可以卧两个) 把做好的卤汁淋在面上就ok啦. 小贴士 肉丁的话最好是有肥肉丁和瘦肉丁,会香一点,这样做出来的卤汁会香一点~还有爱吃辣的同学可以炸一碗辣椒油,加上一勺~~味道更香~~~

2015-05-20 · 1 min · 8 words · -

JPA的视图查询

JPA的视图查询 http://blog.csdn.net/chaijunkun/article/details/8442406 本文出处: http://blog.csdn.net/chaijunkun/article/details/8442406,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。 昨天晚上遇到一个需求,每天早上要生成一份报告给各个部门的Leader。实现方式基本上确定为HTML格式的电子邮件。但是数据方面犯了难。原因在于数据库中存储的数据是跨表的,而且还要做count统计,这样得到的结果就不是原生的MySQL表,我用的又是JPA技术。我们知道,使用JPA第一步就是映射实体,每一张表就至少对应一个实体 (力求严谨,因为联合主键时一张表会对应两个对象) 。可是对于灵活的查询尤其是连接查询,并不存在一个真正的表与其对应,怎么样才能解决呢?来,我们来举个"栗子" 假设我们有两张表,一张学院表,一张学生表。学院表里存着学院ID和学院名称,学生表里存着学生的基本信息,包括学号、学院ID和学生姓名 (其它较复杂的属性我们不看了) ,正如下面的建表语句所示: sql Table structure for `depts` DROP TABLE IF EXISTS `depts`; CREATE TABLE `depts` ( `deptId` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘学院ID’, `deptName` varchar(50) NOT NULL COMMENT ‘学院名称’, PRIMARY KEY (`deptId`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; Records of depts INSERT INTO `depts` VALUES (‘1’, ‘哲学院’); INSERT INTO `depts` VALUES (‘2’, ‘经济学院’); INSERT INTO `depts` VALUES (‘3’, ‘法学院’); INSERT INTO `depts` VALUES (‘4’, ‘教育学院’); ...

2015-05-20 · 4 min · 745 words · -

JMC & Flight Recorder

‘JMC & Flight Recorder’ 从Java 7 Update 40之后,任务控制和Flight Recorder就将和JDK一起提供,正如InfoQ 在介绍它发布的新闻中所描述的那样。任务控制的出发点是监控、管理和排错,而Flight Recorder则是收集和评估性能数据的设施。这两个工具在JRockit中都已经存在,现在最终被移植到了HotSpot上 任务控制 任务控制提供的功能几乎和JVisual VM完全相同。这两个工具都能够连接到本地或者远程Java进程收集JMX数据。任务控制能够通过Java发现协议 (Java Discovery Protocol) 自动地发现远程运行的JVM。为了使用该功能JVM需要通过下面的参数启动: -Dcom.sun.management.jmxremote.autodiscovery=true -Dcom.sun.management.jdp.name=JVM_Name。 和JVisual VM相似的是,任务控制也有一个插件机制,能够进行定制化。但是与VisualVM不同的是,任务控制还能够在收集的数据上创建新的视图。现在能够使用的两个实验性的插件是JOverflow堆分析器 (查找低效的集合使用) 和DTrace记录器 (关联DTrace配置文件) 。任务控制拥有一个JMX浏览器作为它核心功能的一部分,同时提供了稍微更加强大的功能。例如,线程监控能够提供每一个线程的分配信息以及与堆栈跟踪相关的信息。因为任务控制是基于Eclipse平台的,所以它不仅能够作为JDK中的独立工具使用,还能够作为Eclipse插件从 Oracle任务控制更新网站上获取。 Flight Recorder Java Flight Recorder - JFR 默认被设置为关闭状态。JDK7 通过在启动应用程序的命令中加入-XX:+UnlockCommercialFeatures –XX:+FlightRecorder 参数来开启 JFR,以及相关的一些功能。但是值得注意的是这个命令只是开启了 JFR 功能,但并没有开启记录进程各种事件。 JDK 8 可能直接 通过jcmd控制JFR。 想要在JVM之外收集调试数据、特别是性能数据的工具需要实现JVMPI/JVMTI接口。虽然大部分分析工具发展的非常良好,但是让它们能够在产品中低消耗地运行依然是非常困难的。 Flight Recorder直接在JVM中实现了它自己的基于事件的监控接口,所以能够以最小的开销提供CPU时间或者对象分配分析这样的功能。例如,这个新接口允许采取线程的样本但不需要它们在还原点上,降低了开销和测量的偏差。只有少量使用字节码检测的事件对运行的代码有影响。大部分捕获技术是新的,第三方无法使用。Flight Recorder在JVM本地记录数据,但是是记录在堆外 (off-heap) ,因此它并不会影响内存特性和垃圾收集。当它被配置成持久化数据的时候,它会周期性地倾倒 (dump) 到一个文件中。 收集的数据主要包含4种类型的事件: “瞬间 (instant) “,在事件发生时进行记录;“可请求的 (requestable) “,它们会被轮循;“持续 (duration) “,表示一个时间间隔的度量;“定时的 (timed) “,它们和"持续"一样,但是对过滤数据应用了阀值。有两个预定义的配置: “连续性 (continuous) “,它的目的是始终运行;“剖析 (profiling) “,它会收集更多的数据以便进行短期分析。但是无论如何开销始终都非常低,除非明确地声明一个事件。 除了JVM生成的事件之外,还鼓励框架和应用程序服务器提供自己的事件。目前并不支持接口,但是Weblogic和Glassfish已经提供了事件,它们基本上成为了事实上的接口。Marcus Hirt在他的博客文章"使用 (非常不支持的) Java Flight Recorder API"中介绍了如何使用API。基本的步骤是扩展合适的Event类,通过添加注解表明值,然后从事件产生的代码中调用它。自定义的事件和其他事件并没有什么不同,也能够使用、创建仪表盘并随着其他的事件一起绘制。该版本包含的其他重要功能的细节信息可以从 Marcus Hirt的另一篇博客中找到。 ...

2015-05-19 · 1 min · 103 words · -

Johannes Brahms 勃拉姆斯

Johannes Brahms 勃拉姆斯 约翰内斯·勃拉姆斯 (德语: Johannes Brahms,德语: [joˈhanəs ˈbʁaːms],1833年5月7日-1897年4月3日) 德国古典主义最后的作曲家,浪漫主义中期作曲家,出身于音乐家庭,又译白蓝士、柏纳谟斯。生于汉堡,逝于维也纳。他的大部分创作时期是在维也纳度过的,是维也纳的音乐领袖人物。一些评论家将他与巴赫 (Bach) 、贝多芬 (Beethoven) 排列在一起称为三B。他对标题音乐与华格纳乐剧形式不认同,走纯粹音乐路线。其重要作品有: 《第一交响曲》 (“贝多芬第十交响曲”) ,两部钢琴协奏曲: 《d小调第一钢琴协奏曲》和《♭B大调第二钢琴协奏曲》,小提琴协奏曲: 《D大调小提琴协奏曲》,《f小调钢琴五重奏》,管弦乐《学院节庆序曲》,合唱《德意志安魂曲》,《海顿主题变奏曲》,《帕格尼尼主题变奏曲》和《匈牙利舞曲》。

2015-05-16 · 1 min · 19 words · -

proxy setting for dart editor

‘proxy setting for dart editor’ HTTPS_PROXY=your.proxy.site:8080 https://code.google.com/p/dart/issues/detail?id=5455

2015-05-14 · 1 min · 7 words · -

聚簇索引 非聚簇索引

聚簇索引 非聚簇索引 http://blog.sina.com.cn/s/blog_6caea8bf0100z9wz.html 通常情况下,建立索引是加快查询速度的有效手段。但索引不是万能的,靠索引并不能实现对所有数据的快速存取。事实上,如果索引策略和数据检索需求严重不符的话,建立索引反而会降低查询性能。因此在实际使用当中,应该充分考虑到索引的开销,包括磁盘空间的开销及处理开销 (如资源竞争和加锁) 。例如,如果数据频繁的更新或删加,就不宜建立索引。 本文简要讨论一下聚簇索引的特点及其与非聚簇索引的区别。 建立索引: 在SQL语言中,建立聚簇索引使用CREATE INDEX语句,格式为: CREATE CLUSTER INDEX index_name ON table_name(column_name1,column_name2,…); 存储特点: 聚集索引。表数据按照索引的顺序来存储的,也就是说索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。 在一张表上最多只能创建一个聚集索引,因为真实数据的物理顺序只能有一种。 非聚集索引。表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,其行数量与数据表行数据量一致。 总结一下: 聚集索引是一种稀疏索引,数据页上一级的索引页存储的是页指针,而不是行指针。而对于非聚集索引,则是密集索引,在数据页的上一级索引页它为每一个数据行存储一条索引记录。 更新表数据 1、向表中插入新数据行 如果一张表没有聚集索引,那么它被称为"堆集" (Heap) 。这样的表中的数据行没有特定的顺序,所有的新行将被添加到表的末尾位置。而建立了聚簇索引的数据表则不同: 最简单的情况下,插入操作根据索引找到对应的数据页,然后通过挪动已有的记录为新数据腾出空间,最后插入数据。如果数据页已满,则需要拆分数据页,调整索引指针 (且如果表还有非聚集索引,还需要更新这些索引指向新的数据页) 。而类似于自增列为聚集索引的,数据库系统可能并不拆分数据页,而只是简单的新添数据页。 2、从表中删除数据行 对删除数据行来说: 删除行将导致其下方的数据行向上移动以填充删除记录造成的空白。如果删除的行是该数据页中的最后一行,那么该数据页将被回收,相应的索引页中的记录将被删除。对于数据的删除操作,可能导致索引页中仅有一条记录,这时,该记录可能会被移至邻近的索引页中,原索引页将被回收,即所谓的"索引合并"。 稀疏索引 稀疏索引只为数据文件的每个存储块设一个键-指针对,它比稠密索引节省了更多的存储空间,但查找给定值的记录需更多的时间。只有当数据文件是按照某个查找键排序时,在该查找键上建立的稀疏索引才能被使用,而稠密索引则可以应用在任何的查找键。如图3-3所示,稀疏索引只为每个存储块设一个键-指针对。键值是每个数据块中第一个记录的对应值。 例3.3同例3.2一样,我们假定数据文件已排序,且其键值为连续的10的倍数,直至某个较大的数。我们还继续假定每个存储块可存放四个键-指针对。这样,第一个索引存储块中为前四个数据存储块的第一个键值的索引项,它们分别是10、30、50和70。按照前面假定的键值模式,第二个索引存储块中为第五至第八个数据存储块的第一个键值的索引项,它们分别是90、110、130和150。图中我们还列出第三个索引存储块存放的键值,它们分别是假设的第九至第十二个数据存储块的第一个键值。 图3-3 顺序文件上的稀疏索引 在已有稀疏索引的情况下,要找出查找键值为K的记录,我们得在索引中查找到键值小于或等于K的最大键值。由于索引文件已按键排序,我们可以使用二分查找法来定位这个索引项,然后根据它的指针找到相应的数据块。现在我们必须搜索这个数据块以找到键值为K的记录。当然,数据块中必须有足够的格式化信息来标明其中的记录及记录内容,可以采用2.5节和2.7节中的任何技术。 http://book.51cto.com/art/201012/238283.htm 稠密索引和稀疏索引 稠密索引: 在密集索引中,数据库中的每个搜索键值都有一个索引记录。这样可以加快搜索速度,但需要更多空间来存储索引记录本身。索引记录包含搜索键值和指向磁盘上实际记录的指针。 稀疏索引 稀疏索引: 在稀疏索引中,不会为每个搜索关键字创建索引记录。此处的索引记录包含搜索键和指向磁盘上数据的实际指针。要搜索记录,我们首先按索引记录进行操作,然后到达数据的实际位置。如果我们要寻找的数据不是我们通过遵循索引直接到达的位置,那么系统将开始顺序搜索,直到找到所需的数据为止。 https://cloud.tencent.com/developer/article/1711134 Innodb底层存储数据 B+树索引的两种类型 聚集索引: 通过每张表的主键顺序进行存放,其叶子节点存放的是这张表的每行完整数据。也正是我们有时称呼的主键索引 (对比一下稠密索引) 非聚集索引 (辅助索引,二级索引): 其叶子节点并不包含行记录的全部数据,其叶子结点的数据包含书签和键值 (用于创建索引的字段值),书签的作用是找与索引相对应的行数据。也就是对应聚集索引的主键值。你是否有想过对应的描述的索引值 关系 看完稀疏索引和稠密索引还有聚集索引和非聚集索引的概念,我们是否能看出他们有什么关系。 聚簇索引 (主键索引)是稠密索引,因为主键索引是所有的值都不为空,每一个搜索码都会有对应的行记录。 非聚集索引是稀疏索引,非聚集索引有唯一索引,普通索引,复合索引。他们的特征就是不会为表得每个值创建搜索码,而是为单个或多个字段创建,且行记录的某些值可以为null。当我们的where条件不止单个条件的时候我们也会首先通过索引查找出来一批数据,然后进行顺序查找筛选,所以是完全复合稀疏索引的条件的。 优势 通过上面的了解,稀疏索引占用空间少,但是在查询的精确率上还是相对于稠密索引还是比较慢的,因为不需要顺序查找,还有回表。 稠密索引那就是相对来说比较快,因为他可以精确定位数据,但是占用的空间比较大。 https://cloud.tencent.com/developer/article/1711134 聚集索引,非聚集索引,主键索引,覆盖索引

2015-05-14 · 1 min · 66 words · -

Java exception throw throws

‘Java exception throw throws’ CheckException和RuntimeException java文档中对RuntimeException的定义是: RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。 java中Exception分为两类,一类是CheckException一类是UncheckException。并且java的Error都属于UncheckedException。 一、CheckException和UnCheckException的区别: 在编译的时候,java编译器会强制你处理CheckException,处理的方式有两种: 一种是抛出异常;另一种是捕获异常 (常见的有ClassNotFoundException等) 。而对于UncheckException编译去则不需要你做任何处理,只是在运行时出现了该类异常,则会被抛出 (常见的有: NullPointException,ArrayIndexOutofBoundException等) 。 Checked exception用来指示一种调用方能够直接处理的异常情况。而Runtime exception则用来指示一种调用方本身无法处理或恢复的程序错误。 区别 throws是用来声明一个方法可能抛出的所有异常信息,而throw则是指抛出的一个具体的异常类型。此外throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。 2.分别介绍 throws: 用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常 (其实就是,不想自己处理,那就交给别人吧,告诉别人我会出现什么异常,报自己的错,让别人处理去吧) 。 格式是: 方法名 (参数) throws 异常类1,异常类2,….. Java代码 class Math{ public int div(int i,int j) throws Exception{ int t=i/j; return t; } } public class ThrowsDemo { public static void main(String args[]) throws Exception{ Math m=new Math(); System.out.println(“出发操作: “+m.div(10,2)); } } throw: 就是自己进行异常处理,处理的时候有两种方式,要么自己捕获异常 (也就是try catch进行捕捉) ,要么声明抛出一个异常 (就是throws 异常~~) 。注意: throw一旦进入被执行,程序立即会转入异常处理阶段,后面的语句就不再执行,而且所在的方法不再返回有意义的值! ...

2015-05-14 · 1 min · 150 words · -

Grunt

Grunt 在Javascript的开发过程中,经常会遇到一些重复性的任务,比如合并文件、压缩代码、检查语法错误、将Sass代码转成CSS代码等等。通常,我们需要使用不同的工具,来完成不同的任务,既重复劳动又非常耗时。Grunt就是为了解决这个问题而发明的工具,可以帮助我们自动管理和运行各种任务。 简单说,Grunt是一个自动任务运行器,会按照预先设定的顺序自动运行一系列的任务。这可以简化工作流程,减轻重复性工作带来的负担。 http://yujiangshui.com/grunt-basic-tutorial/ http://javascript.ruanyifeng.com/tool/grunt.html

2015-05-10 · 1 min · 5 words · -

JavaScript json 对象

JavaScript json 对象 http://www.cnblogs.com/tomxu/archive/2012/01/11/2311956.html 深入理解JavaScript系列 (9) : 根本没有"JSON对象"这回事! 前言 写这篇文章的目的是经常看到开发人员说: 把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多谢。 正文 本文的主题是基于ECMAScript262-3来写的,2011年的262-5新规范增加了JSON对象,和我们平时所说的JSON有关系,但是不是同一个东西,文章最后一节会讲到新增加的JSON对象。 英文原文: http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ 我想给大家澄清一下一个非常普遍的误解,我认为很多JavaScript开发人员都错误地把 JavaScript 对象字面量 (Object Literals) 称为JSON对象 (JSON Objects) ,因为他的语法和JSON规范里描述的一样,但是该规范里也明确地说了JSON只是一个数据交换语言,只有我们将之用在string上下文的时候它才叫JSON。 序列化与反序列化 2个程序 (或服务器、语言等) 需要交互通信的时候,他们倾向于使用string字符串因为string在很多语言里解析的方式都差不多。复杂的数据结构经常需要用到,并且通过各种各样的中括号{},小括号(),叫括号<>和空格来组成,这个字符串仅仅是按照要求规范好的字符。 为此,我们为了描述这些复杂的数据结构作为一个string字符串,制定了标准的规则和语法。JSON只是其中一种语法,它可以在string上下文里描述对象,数组,字符串,数字,布尔型和null,然后通过程序间传输,并且反序列化成所需要的格式。YAML和XML (甚至request params) 也是流行的数据交换格式,但是,我们喜欢JSON,谁叫我们是JavaScript开发人员呢! 字面量 引用Mozilla Developer Center里的几句话,供大家参考: 他们是固定的值,不是变量,让你从"字面上"理解脚本。 (Literals) 字符串字面量是由双引号 (") 或单引号 (’) 包围起来的零个或多个字符组成的。(Strings Literals) 对象字面量是由大括号 ({}) 括起来的零个或多个对象的属性名-值对。(Object Literals) 何时是JSON,何时不是JSON? JSON是设计成描述数据交换格式的,他也有自己的语法,这个语法是JavaScript的一个子集。 { “prop”: “val” } 这样的声明有可能是JavaScript对象字面量也有可能是JSON字符串,取决于什么上下文使用它,如果是用在string上下文 (用单引号或双引号引住,或者从text文件读取) 的话,那它就是JSON字符串,如果是用在对象字面量上下文中,那它就是对象字面量。 // 这是JSON字符串 var foo = ‘{ “prop”: “val” }’; // 这是对象字面量 var bar = { “prop”: “val” }; ...

2015-05-10 · 1 min · 161 words · -

萨蒂

萨蒂 http://baike.baidu.com/view/297181.htm SATIE 萨蒂生于1866年5月17日,死于1925年7月1日, 法国作曲家,六人团的前驱。 埃里克·萨蒂于1866年在法国下诺曼底卡尔瓦多斯省的翁弗勒 (Honfleur) 出生,出生后不久在当地一家圣公会教堂内洗礼。四岁时,因为父亲在首都觅得一份翻译的工作,所以举家移居巴黎的蒙马特。幼年时的埃里克经常都在两地辗转生活。六岁 (1872年) 时,母亲病逝,他与弟弟Conrad一同被送返翁弗勒的祖父母家生活。回到翁弗勒,小小的埃里克开始接触音乐;他跟从当地一位风琴手学习。1878年,祖母离世,两兄弟又再次回到巴黎与父亲团聚。不久,父亲与一位钢琴教师结婚。从1880年代开始,埃里克的父亲和继母开始出版各自及其他人的沙龙创作。 十九世纪末,走过黄金颠峰的浪漫主义音乐尽管如天边的晚霞,余晖仍然耀眼,但不少音乐家已敏锐地感觉到,这种垄断乐坛的风格和手段已不能让他们尽抒胸臆。要表现更复杂的内心和音响,就要有新的技法和区别于传统的音乐语言。果然进入二十世纪后便先后涌现出勋伯格、斯托克豪森和凯奇等—个比—个叛逆的音乐家,各种流派学说更多如过江之鲫让人"耳"花缭乩。至于身处时代交替中的法国作曲家萨蒂,他以神秘的风格和怪异的曲名向我们讲述出他内心的迷惘和寻觅,并展露了具特立独行的性格。 埃里克·萨蒂(Erik Satie)1866年出生于法国的翁弗勒尔,父亲是法国人,母亲是苏格兰人。他7岁时开始学弹钢琴,13岁时被父亲带到巴黎并进入巴黎音乐学院学习。据说,萨蒂早年虽有音乐天赋,但却生性不羁,不喜欢接受严格的正规训练,因而虽在音乐学院断断续续地读了几年,但成绩都不太好。不过在此期间.他却出版了他的第一部钢琴作品,编号为作品62号。1886年萨蒂因应征入伍而中断学业,两年后退役在巴黎的几家餐馆中以弹奏钢琴为生。1888年他写了最著名的钢琴作品《裸体歌舞》,并在差不多的时间与尚未成名的德彪西相识,其新颖的和声手法使德彪西大受启发。之后,萨蒂加入了一个神秘的玫瑰十字教派,并为该教派创作乐曲,如《来自玫瑰与十字架的钟声》、《玫瑰与十字架的第—思考》等。此后他似乎才思枯竭,十多年的时间只写了为数不多的几首作品,直到1903年写出了《梨形曲》。1905年年近40的萨蒂突然入读圣咏学院师从著名作曲家丹弟和鲁塞尔学习作曲理论。同年受到听众的认同。三年的学院生涯没白过,离校后萨蒂的技艺有了长足的进步。1910年开始已有一些年青音乐家被他吸引,由奥里克、迪雷、奥涅格、米约、普朗克和塔耶弗尔组成的"六人团" (Le Six) 对他更是顶礼膜拜。深受其影响。1917年采爵士乐节奏并在配器中加入厂打字机、轮船气笛和警报器声响的芭蕾舞剧《游行》(Parde)问世,从此一举成名,此时的萨蒂已是51岁的老人了,可谓大器晚成。 萨蒂的创作虽难脱浪漫派的痕迹,却有着十分另类的特色,与同时期的法国作曲家德彪西、拉威尔一样,他们都力图摆脱瓦格纳的影响,突破浪漫主义的窠臼探寻新的音乐词汇。他的音乐简洁洗练、锐意创新,不但有《裸体歌舞》、《古老和即时的时刻》、《梨形曲》、《木制胖妇人的素描和媚态》等独树一帜的标题,也用了许多前无古人的新技法,但却绝不像勋伯格、斯托克豪森等先锋派音乐那样大量运用不协和音程。他不是用大量半音音阶模糊或取消调性的手法去表现乐思,而是用取消小节让节奏变形,不以传统的回归调性的终止式结束等技术来处理音乐。因此给人感觉不仅没有刺耳的歇斯底里,反如一帧帧若隐若现的图景,在记忆中交错转换。在某些作品中与德彪西的音乐有异曲同工之趣。萨蒂和德彪西是同时代人,但萨蒂专注宗教、心无旁骛;德彪西却热衷名利,喜好交结,因此今日论名头德彪西就比萨蒂响多了。 很多人深信,这一切不光是因为他那怪异的才智,同时也是他故意用于冒犯当时的音乐评论人的。众所周知,萨蒂讨厌乐评人,而乐评们也不喜欢他。不过,萨蒂对后辈音乐家还是有相当影响的,法国的"六人团"就将他尊为"教父",而以后的亨德米特乃至奥地利的勋伯格,都可以从他们身上找到萨蒂的痕迹。美国实验音乐家凯奇也自称受到过萨蒂的影响。 凡是弹奏过他的作品的人,都知道他爱给作品演奏方式标注一些古怪的指引。那些指引是作曲家专门为弹奏他作品的人写的: “给某某。我禁止任何人在弹奏作品的时候大声读出这些文字。无论谁斗胆违反我的指引都将引起我的愤慨。谁也不能例外。” Satie 还是个收藏家。有一次别人问他想要什么生日礼物,他回答说: “那天我看见一块漂亮的手帕……“他死后,人们在他的衣橱里发现84块一模一样的手帕,还有12套一模一样的天鹅绒服装,以及成打的雨伞。 Satie 被视为局外人,一匹追寻自己理想的孤独的狼。例如他修建了自己的教堂。如此一来,他极度重视自己的隐私,从不让别人参观他在 Arceuil 的住所,他在那里度过了生命中的最后27年。在他一生中人们只知道唯一的一段感情关系——他在1893年跟一名模特、同时也是画家和秋千艺人 Suzanne Valadon 的热烈的爱情。 Satie 作为一名真正的艺术家,为了自己的音乐和自己的理想而活着。他从不看重金钱,过了许多年穷.困的生活。他从不怕表达自己的真.实想法。如果他觉得某人是个混蛋,他会很直率地说出来 (而不顾及后果会如何) 。萨蒂留下的音乐作品并不算很少,除了戏剧音乐和管弦乐,光钢琴独奏曲(包括改编曲)就约有150。在早期作品作品中,写于1888年的《裸体舞》 (Gymnopedies)是其代表作。这是—组由三首小曲组成的套曲,演奏时间总共也只有7分多钟。曲名原是指古希腊裸体男子所跳的一种仪式舞蹈,据萨蒂自己说是他当时读了法国作家福楼拜的《萨朗波》产生灵感而作的。乐曲优美而神秘、柔和而惆怅的意境恍如将听者带到广袤的荒野,躺在松软的草地上仰望着神秘的夏夜星空。1889至1897年创作的6首《玄秘曲》 (Gnossiennes)被看成是《裸体歌舞》的姐妹篇,音乐空灵清澄,颇具东方色彩,技法也更体现出萨蒂的创新精神,节拍号和小节线的消失模糊了旋律行进中的节奏。使音乐显得飘忽与不稳而更具流动性。 《来自玫瑰与十字架的第一钟声》(Sonneries de la Rose+Croix)是萨蒂在加入玫瑰十字教派后不久写的,这组曲子除了无节拍号、小节线和终止符外,作者在编织乐曲结构时还精心地运用了"黄金分割率”,将段落与节拍数的比率配置得十分巧妙,从而体现出他独特的美学趣味。如果说以上的作品还只是作曲家纯粹对技巧的探索,那么《神秘的一页》(Pages mystiques)中的《烦恼》(Vexations)则是让人目瞪口呆的惊人之举,《神秘的一页》由3首短曲组成,《烦恼》是其中的第2首,弹奏时间其实只有一分钟左右,但作曲者却在乐谱上标示: “这个主题要连续弹奏840次,建议演奏者在最安静的环境中一动不动稳坐着事先练习。“这是作曲者对音乐的"新发现”,还是故作惊人的幽默调侃就无从稽考了,据说也真有人遵从萨蒂的"指示"去演出并取得成功,实测需时18小时40分。笔者孤陋寡闻未曾得见,买到的CD也不太"正宗”,幸而现今科技昌明,各位看官若要领略这种"烦恼”,只要按下CD机的"反复播放"键即可。 萨蒂后期的作品有人评价说是沉溺于怪异的标题的文字游戏,音乐缺乏灵感。其实也不尽然,1914年的《运动项目与嬉游曲》 (Sports et diverlissements) 就是部颇有灵气的作品。这部作品是出版商为—组水彩画而向萨蒂约写的,开始时他竞嫌报酬过高而拒绝接受,直到后来降低了价钱才答应下来,不久他就交出了这套多达21首小曲的曲集。该曲集每首以—种运动项目或游戏名称作标题,如"秋千"、“赛跑”、“高尔夫”、“网球”、“垂钓”、“驾车”、“海浴"等,每首大都不超过一分钟,虽不是浪漫音画却也意像纷呈千姿百态,是套旋律优美,风格清新的标题音乐曲集。另外,1917年写的《官僚小奏呜曲》(Sonatine Bureaucratique)也别具意趣,它取材于意大利作曲家克列门第(Clementi)的一首供初学者练习用的钢琴小奏呜曲Op36 No.1,这首乐曲由于技巧简单匀称、旋律优美流畅而广受学琴者和钢琴教师喜爱,因而几乎每个学钢琴的人都弹过这首作品。萨蒂在这里几乎将整首乐曲拿过来加以变形。乐曲风趣幽默,不禁令人想起圣桑的《动物狂欢节》里的"钢琴家”。 他最著名的作品包括: 宁静安详的《Gymnopédies》 (“裸体歌舞”,三首相似的钢琴曲) (Gymnopédies音译为吉诺佩蒂,吉诺佩蒂一词,源自古希腊代斯巴达祭祀太阳神的祭典,意思是年轻人赤裸着身体在神殿前献上神圣的舞蹈。遂意译为"落体歌舞") 、神秘的《Vexations》 (要求重复840次的短钢琴曲) 、广受欢迎的《Trois Morceaux en forme de Poire》 (钢琴二重奏) 、芭蕾舞曲《Parade》 (起用了一些很古.怪的乐器) 、和芭蕾舞曲《Relache》 (配上一系列电影镜头) 。 Satie 的作品直到1960年代以前都不太为人知、并且一直被低估。幸好此后他渐渐得到了应有的声誉。 浪漫主义音乐余晖笼罩之下的萨蒂理所当然地成为了时代交替中的叛逆者,他既是新古典主义的先导,又是印象主义的萌芽,他的音乐以简单的旋律、神秘的风格、怪异的曲名、千姿百态的意象叙说着其内心的孤独与迷惘,在那个光怪陆离的时代显示出了不平凡的冷峻。本书力图展现的便是这位曾被时代忽略最终终与时代再度相逢的只为音乐而存在的音乐家苦苦追寻自己理想的特立独行的人生与艺术创作历程。孤独是他珍藏一生的秘密,凭借这种在音乐史上独一无二的"孤独",人们可以立即辨认出他的作品。

2015-05-05 · 1 min · 70 words · -

m2ts

m2ts http://baike.baidu.com/view/1951897.htm .m2ts 是一种视频文件格式 (container) 可支持多任务的影音流。 m2ts架构于MPEG transport stream 以及著名的 BDAV MPEG-2 transport stream. 这种文件格式多支持于高清的 Blu-ray Disc 与 AVCHD。DV拍摄的视频文件在DV硬盘里的AVCHD目录内显示是MTS文件,这是一种采用MPGE-4AVC/H.264格式编码的高清视频文件,通过附带的PMB转换到电脑硬盘后变为M2TS。这种优化压缩的视频格式拍摄出来的视频质量明显优于MPEG2压缩的HD高清格式第一种 把M2TS转换成HD AVI的方案,适合打算用DV拍摄电影的朋友,经常对拍摄的高清文件进行反复对比剪辑和添加各种特效的回放和使用。 第二种 把M2TS转换成为HD MPEG2 (M2T) 的方案,适合婚庆公司的高清方案。现在很多婚庆公司打着高清的幌子,用高清的机子依旧在拍摄标清视频,欺骗顾客是所谓的高清。 第三种 直接用 Vegas 8.0、Premiere CS 4.0、eduis 5.0编辑M2TS (MTS) 的家庭普通用户,虽然编辑比较卡,但是添加几个文字等等简单操作是没有问题的。 第四种 把高清M2TS (MTS) 转换成为标清的MPEG2的方案。强烈反对这种把拍摄的高清文件转换成标清的行为,这样只是浪费了时间和电费。原始机器拍摄的MPEG2文件已经足够清晰,不必多此一举。

2015-05-04 · 1 min · 39 words · -

fdisk for linux

fdisk for linux sudo fdisk -l sudo fdisk /dev/sdb p (print the partition table) d (delete partition) n (create partition) p (primary) enter (default first sector) enter (default last sector) t 83 (config partition type,83 (Linux)) c W95 FAT32 (LBA) 7 HPFS/NTFS/exFAT a (set bootable) w write to disk and exit sudo mkfs.msdos -F 32 /dev/sdx1 sudo mkfs.ntfs /dev/sdx1 sudo mkfs.ext4 /dev/sdx3 sudo mkswap /dev/sda2 http://blog.csdn.net/zhangkekf/article/details/10417203 我的需求是,将新硬盘只分一个区来使用 fdisk -l #查看硬盘挂在情况 Disk /dev/xvda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders ...

2015-05-04 · 7 min · 1439 words · -

linux disk format, mkfs,mke2fs 格式化磁盘

linux disk format, mkfs,mke2fs 格式化磁盘 sudo mkfs.msdos -F 32 /dev/sdx1 mkfs.ntfs -Q -L diskLabel /dev/sdXY #查看文件系统备份Superblock mke2fs -n /dev/sdb mkfs 命令 linux格式化磁盘命令 linux mkfs 指令: mkfs 使用权限 : 超级使用者 使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable] 说明 : 建立 linux 档案系统在特定的 partition 上 参数 : device : 预备检查的硬盘 partition,例如: /dev/sda1 -V : 详细显示模式 -t : 给定档案系统的型式,Linux 的预设值为 ext2 -c : 在制做档案系统前,检查该partition 是否有坏轨 -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面 ...

2015-05-04 · 3 min · 603 words · -

Linux下查看文件编码,文件或文件名编码格式转换

Linux下查看文件编码,文件或文件名编码格式转换 http://blog.sina.com.cn/s/blog_6fe0d70d0101du41.html Vim 的多字符编码工作方式 Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。 读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到的,看起来是正确的 (注1) 字符编码方式。 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的 iconv.dll(注2),你需要保证这个文件存在于 $VIMRUNTIME 或者其他列在 PATH 环境变量中的目录里。 编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用 iconv.dll由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示cp936,也就是 GBK 的代码页)。 chinese-gb to utf8 ...

2015-05-04 · 2 min · 276 words · -

respberry pi error

respberry pi error omxplayer.bin: SubtitleRenderer.cpp:154: SubtitleRenderer::load_glyph(SubtitleRenderer::InternalChar)::<lambda(FT_Face, VGFont, bool)>: Assertion `!vgGetError()’ failed. /usr/bin/omxplayer: line 67: 5199 Aborted LD_LIBRARY_PATH="$OMXPLAYER_LIBS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" $OMXPLAYER_BIN “$@” run raspi-config and up the gpu mem to 128 https://www.raspberrypi.org/forums/viewtopic.php?f=35&t=19979&start=25

2015-05-04 · 1 min · 29 words · -

linux emacs 乱码

linux emacs 乱码 其实就是编码字符不是utf-8的问题导致。什么年代了,这么多软件也不往通用标准靠,非要使用所谓的中文编码。射手网下载的东西几乎都是这个毛病。 在Ubuntu下用Emacs打开的时候看到的也是乱码,不过好解决,在~/.emacs.d/init.el文件中添加一行设置: (set-language-environment “Chinese-GB”) 重新启动Emacs,打开文件,中文正确显示了。 如果只是想临时用一下,运行命令: M-x set-language-environment 然后输入Chinese-GB,最后刷新缓冲区即可。 alt + x revert-buffer http://stackoverflow.com/questions/10500323/how-to-see-the-files-encoding-in-emacs

2015-05-04 · 1 min · 17 words · -

systemd, systemctl basic, command

systemd, systemctl basic, command Systemd 是 Linux 系统中最新的初始化系统 (init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度 –now # enable and start service0 systemctl --now enable service0 Systemd 特性 系统引导时实现服务并行启动 按需启动守护进程 自动化的服务依赖关系管理 同时采用socket式与D-Bus总线式激活服务 系统状态快照 # 查看配置文件位置 systemctl status service0 # 修改配置之后重新加载配置文件 systemctl daemon-reload 配置文件主要放在 /usr/lib/systemd/system 目录, 也可能在/etc/systemd/system 目录 /lib/systemd/system:系统默认的单元文件 /etc/systemd/system:用户安装的软件的单元文件 /usr/lib/systemd/system:用户自己定义的单元文件 systemd-analyze 查看启动耗时 systemd-analyze # 查看每个服务的启动耗时 systemd-analyze blame # 显示瀑布状的启动过程流 # 打印严重消耗时间的服务树状表,按照启动消耗的时间进行排序,时间消耗越多,越排到前面。 @之后是服务激活或者启动的时间, +号之后是服务启动消耗的时间。 个人理解 @ 是从系统引导到服务启动起来的时间,是一个相对时间消耗,+是服务启动消耗的时间,是一个绝对时间消耗。 systemd-analyze critical-chain # 显示指定服务的启动流 比如 docker.service systemd-analyze critical-chain docker.service systemd 版本/version systemctl --version # 生成一张启动详细信息矢量图, .svg可以用chrome打开 sudo systemd-analyze plot > /home/wiloon/tmp/boot3.svg timedatectl # 查看当前时区设置 $ timedatectl # 显示所有可用的时区 $ timedatectl list-timezones # 设置当前时区 $ sudo timedatectl set-timezone America/New_York $ sudo timedatectl set-time YYYY-MM-DD $ sudo timedatectl set-time HH:MM:SS ## timedatectl ntp timedatectl set-ntp true loginctl # 列出当前session loginctl list-sessions # 列出当前登录用户 loginctl list-users # 列出显示指定用户的信息 loginctl show-user wiloon ## 查看 session 类型, 是 X server 还是 wayland, x or wayland loginctl show-session <SESSION_ID> -p Type cat systemctl cat bluetooth|grep Condition mask systemctl mask service0 systemctl unmask service0 check the boot performance systemd-analyze blame systemctl list-timers --all # 查看是否启用 systemctl is-enabled service0 # to see which units have failed. systemctl --failed # 退出系统并关闭电源 systemctl poweroff systemctl reboot # CPU 停止工作 $ sudo systemctl halt # 待机 systemctl suspend systemctl hibernate # 混合休眠模式 (同时休眠到硬盘并待机) : systemctl hybrid-sleep # list all service systemctl systemctl list-unit-files | grep enabled # 查看所有单元 $ systemctl list-unit-files # 查看所有 Service 单元 $ systemctl list-unit-files --type service # 查看所有 Timer 单元 $ systemctl list-unit-files --type timer 显示所有已启动的服务 systemctl list-units --type=service systemctl is-active httpd.service (仅显示是否 Active) # check service enabled systemctl list-unit-files |grep enabled # 查看服务是否开机启动 systemctl is-enabled foo.service # 禁止 foo.service 开机启动 systemctl disable foo.service # 禁止 foo.service 开机启动, 同时停掉服务 systemctl --now disable foo.service journalctl -f systemd-analyze blame systemctl --type=service systemctl status xxx systemctl status Loaded行: 配置文件的位置,是否设为开机启动 Active行: 表示正在运行 Main PID行: 主进程ID Status行: 由应用本身 (这里是 httpd ) 提供的软件当前状态 CGroup块: 应用的所有子进程 日志块: 应用的日志 # 打印完整的控制台日志, 不加 -l 的话, 默认会截断. systemctl status service0 -l http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html ...

2015-05-04 · 4 min · 665 words · -

debian command

debian command # list installed package dpkg --list # remove package apt-get remove foo # ping, command not found apt-get install inetutils-ping dpkg-reconfigure tzdata

2015-05-03 · 1 min · 24 words · -

chkdsk

chkdsk chkdsk磁盘修复工具怎么用? 可以通过以下方法打开: 单击"开始",点击"运行",输入cmd并回车打开命令提示符窗口; 在此窗口输入以下命令: 例如检查并修复D分区: chkdsk D: /f 回车就会启动chkdsk磁盘检查工具扫描D分区了,检查其他分区类似。 详细的参数说明如下: CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]] volume 指定驱动器(后面跟一个冒号)、装入点 或卷名。 filename 仅用于 FAT/FAT32: 指定要检查是否有碎片的文件。 /F 修复磁盘上的错误。 /V 在 FAT/FAT32 上: 显示磁盘上每个文件的完整路径和名称。 在 NTFS 上: 如果有清除消息,将其显示。 /R 查找不正确的扇区并恢复可读信息(隐含 /F)。 /L:size 仅用于 NTFS: 将日志文件大小改成指定的 KB 数。 如果没有指定大小,则显示当前的大小。 /X 如果必要,强制卷先卸下。 卷的所有打开的句柄就会无效(隐含 /F)。 /I 仅用于 NTFS: 对索引项进行强度较小的检查。 /C 仅用于 NTFS: 跳过文件夹结构的循环检查。 /I 和 /C 命令行开关跳过卷的某些检查,减少运行 Chkdsk 所需的时间。 怎样运行chkdsk工具修复?【案例实操分享】 电脑右下角出现损坏文件。请运行chkdsk修复工具提示,该如何解决呢? 病例如图: 解决方案: ...

2015-05-03 · 1 min · 123 words · -