- 浏览: 3049450 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
好久没见到LV同学了,倒是每个周末都见到室友跟LV连魔兽。他这个星期也是回来参加期末考试,正好昨天我和他都考完了最后一门,今天一早出门进城就碰上了。他可快活,出来陪女朋友逛街,而我则是到师兄住处待几天准备星期天的考试。
这么一段时间没见,牛人就更牛了。不愧是在大公司里工作,感觉又不同了呢。之前跟去了阿里巴巴的HC同学聊天也有这样的感觉,像Oracle的数据库和IBM的应用服务器那些,我们平时在学院又怎么玩得出规模呢。
然后我坏习惯又来了,一遇着牛人就要抓着讨论技术话题。这回还真碰对了,LV同学正在负责的工作居然是一个编译器 \o/
一听说是在做编译器我就两眼放光啊…… =_=||
那是一个用于解析XML文件的编译器。说真的我从来没关心过XML文件在底层是如何处理的,因为遇到要处理XML文件的时候,我用的语言总是提供了标准的解决方案去应对XML的解析。但这个公司就有这样的产品,将XML编译为内部数据结构(没听清楚,不过貌似是AST?),可以方便的在路由器上使用XML形式来传输数据。这个XML编译器项目包括XML的编译,Schema验证,XPath编译和XSLT编译等几部分。
如果没听错,是把XML文件编译为AST,然这个AST指的是abstract syntax tree的话……那这个AST应该有什么特别之处能使它与DOM有所不同吧。嘛,详细的技术资料LV显然是不能告诉我的,这就只能猜猜了。
然后,这个编译器项目的前端果然还是用工具来生成的——改进的Flex和Bison。貌似是说因为原本的Flex支持的token数不够多,而UTF-8的一些转换需要特别的操作?我以前甚至不知道Flex的token数有限制……刚才查了下也没查到什么有用的资料,GNU的Flex官网说明也没提到,而Google搜索到一堆都是Adobe Flex的结果 T T
也聊到了些别的,例如聊起了正则表达式的一些实现。我问LV所谓“编译一个正则表达式”到底编译成了什么。答曰:DFA。我一想:“对诶!完了,刚问了个超级愚蠢的问题。不是DFA或者NFA还能是什么”。
于是查阅了一下Java中java.util.regex.Pattern的实现,内部的所谓“编译”是将正则表达式转换成了一个NFA,以内部的Node类来表示。Node本身只能形成一个单链(其中的成员变量只有Node next),但它的一些派生类有附加的Node成员,所以Pattern里的私有成员变量Node root和Node matchRoot上的注释说它们指向的是object tree。
虽然问了个愚蠢的问题,却带来了意外的收获:LV提到了一个用于DFA的优化算法。DFA的转换可以用一张表来表示,但对于一个比较大的DFA,那张状态转换表也可能比较大,从而增加了高速缓存不命中的可能。因此可以在运行中将经常发生跳转的项之间在表里的距离缩短,以提高高速缓存的命中率;也就是不断交换表中各项的位置吧。这真是有趣的做法,虽然可能是业内的常规做法了,但我毕竟还是第一次听说,忍不住要赞叹一番……XD
LV是提到他参与的XPath部分就是这样,把XPath编译成DFA来实现高速查询/访问。强悍啊……
==================================================
突然想起,他还提到了他们内部用的一个虚拟机,也是用基于栈的指令集。貌似是有98条指令,正好也是bytecode...
这么一段时间没见,牛人就更牛了。不愧是在大公司里工作,感觉又不同了呢。之前跟去了阿里巴巴的HC同学聊天也有这样的感觉,像Oracle的数据库和IBM的应用服务器那些,我们平时在学院又怎么玩得出规模呢。
然后我坏习惯又来了,一遇着牛人就要抓着讨论技术话题。这回还真碰对了,LV同学正在负责的工作居然是一个编译器 \o/
一听说是在做编译器我就两眼放光啊…… =_=||
那是一个用于解析XML文件的编译器。说真的我从来没关心过XML文件在底层是如何处理的,因为遇到要处理XML文件的时候,我用的语言总是提供了标准的解决方案去应对XML的解析。但这个公司就有这样的产品,将XML编译为内部数据结构(没听清楚,不过貌似是AST?),可以方便的在路由器上使用XML形式来传输数据。这个XML编译器项目包括XML的编译,Schema验证,XPath编译和XSLT编译等几部分。
如果没听错,是把XML文件编译为AST,然这个AST指的是abstract syntax tree的话……那这个AST应该有什么特别之处能使它与DOM有所不同吧。嘛,详细的技术资料LV显然是不能告诉我的,这就只能猜猜了。
然后,这个编译器项目的前端果然还是用工具来生成的——改进的Flex和Bison。貌似是说因为原本的Flex支持的token数不够多,而UTF-8的一些转换需要特别的操作?我以前甚至不知道Flex的token数有限制……刚才查了下也没查到什么有用的资料,GNU的Flex官网说明也没提到,而Google搜索到一堆都是Adobe Flex的结果 T T
也聊到了些别的,例如聊起了正则表达式的一些实现。我问LV所谓“编译一个正则表达式”到底编译成了什么。答曰:DFA。我一想:“对诶!完了,刚问了个超级愚蠢的问题。不是DFA或者NFA还能是什么”。
于是查阅了一下Java中java.util.regex.Pattern的实现,内部的所谓“编译”是将正则表达式转换成了一个NFA,以内部的Node类来表示。Node本身只能形成一个单链(其中的成员变量只有Node next),但它的一些派生类有附加的Node成员,所以Pattern里的私有成员变量Node root和Node matchRoot上的注释说它们指向的是object tree。
虽然问了个愚蠢的问题,却带来了意外的收获:LV提到了一个用于DFA的优化算法。DFA的转换可以用一张表来表示,但对于一个比较大的DFA,那张状态转换表也可能比较大,从而增加了高速缓存不命中的可能。因此可以在运行中将经常发生跳转的项之间在表里的距离缩短,以提高高速缓存的命中率;也就是不断交换表中各项的位置吧。这真是有趣的做法,虽然可能是业内的常规做法了,但我毕竟还是第一次听说,忍不住要赞叹一番……XD
LV是提到他参与的XPath部分就是这样,把XPath编译成DFA来实现高速查询/访问。强悍啊……
==================================================
突然想起,他还提到了他们内部用的一个虚拟机,也是用基于栈的指令集。貌似是有98条指令,正好也是bytecode...
评论
3 楼
lwwin
2007-11-30
先不要完美嘛。。。
不知道关注IMPL的人多不多,
偶只是希望有技术支持,以前找了几个C的脚本语言,不是用起来麻烦就怎么怎么……
主要偶不会用GCC系列,通常希望是纯C的代码,自己慢慢配的
MAKEFILE大部分也不是适合NMAKE的,比较郁闷……
预祝能够看到有趣的东西XD,偶要求不是很高,只是每次写的时候总不知道从哪里开始,于是就不肯干了XD
不知道关注IMPL的人多不多,
偶只是希望有技术支持,以前找了几个C的脚本语言,不是用起来麻烦就怎么怎么……
主要偶不会用GCC系列,通常希望是纯C的代码,自己慢慢配的
MAKEFILE大部分也不是适合NMAKE的,比较郁闷……
预祝能够看到有趣的东西XD,偶要求不是很高,只是每次写的时候总不知道从哪里开始,于是就不肯干了XD
2 楼
RednaxelaFX
2007-11-29
如果你说的是类似C-Minus那样功能的语言,外加并不“复杂”“前沿”的实现的话……下个月说不定还真会做一个。下个月一整个月都是实训,白天写的代码肯定有聊不到哪里去 =_=|| 晚上还有没有心情写代码真难说。
从简单的开始写点笔记吧。
本来就想在这weblog上写些编译/脚本相关的主题,现在其实还没怎么切入主题呢。看书的时候做的笔记都在纸上,一想到要敲到电脑上就总想写完整点,但那样就弄不完了。说到底还是水平太差,根本还不行啊……
从简单的开始写点笔记吧。
本来就想在这weblog上写些编译/脚本相关的主题,现在其实还没怎么切入主题呢。看书的时候做的笔记都在纸上,一想到要敲到电脑上就总想写完整点,但那样就弄不完了。说到底还是水平太差,根本还不行啊……
1 楼
lwwin
2007-11-29
怎么说,如果FX大弄一个可以模拟C语言的脚本,偶会很乐意用,当然主要是有技术支持XDD
发表评论
-
Christmas Wish 2013?
2013-10-23 12:27 0For me: Apple MacBook Pro with ... -
HotSpot VM的源码阅读活动?
2012-02-23 22:41 26163陆续被许多同好问过HotSpot VM源码阅读方面的问题。 最 ... -
あけおめことよろ 2012版
2011-12-31 22:27 22031照例发篇辞旧迎新帖。 ... -
Hotmail邮箱的POP和SMTP配置
2011-10-07 21:42 45328今天给奶奶在她的iPad上配置live.cn邮箱真是折腾得不行 ... -
IDF 2011北京看到的某平板
2011-09-11 17:59 3097最近可能会连着发几篇 ... -
HP Compaq nx9040的配置
2011-09-07 14:07 0基本参数 型号 Compaq nx90 ... -
MacBook Air,以及之前我的几个笔记本的使用体验(草稿中,慢慢更新)
2011-09-06 23:04 0这不是一篇测评。只是我自己使用的感受。流水帐,想到哪写到哪,慢 ... -
Ultrabook,以及最近关注过的另外一些超便携装备
2011-08-21 16:21 0http://yavaeye.com/p/show/ultra ... -
MacBook Air 965入手
2011-08-11 16:23 9172等了快两周终于到手了… 把主要工作机换成它之后再补充点使用 ... -
[纯水] 草稿箱…
2011-07-25 14:24 2335看到PermGen的讨论一直没消停,但许多人对PermGen的 ... -
身体确实重要
2011-05-27 00:04 4384昨天和今天。过了两天完全没有编程、完全没有JVM的生活。 不过 ... -
几种系统的uname输出
2011-05-05 17:19 3357收集一些uname的输出对比用。 如果有跑Solaris的人路 ... -
gettimeofday与VDSO
2011-04-22 14:12 0vsyscall http://docs.redhat.co ... -
IDF2011见闻——草稿篇
2011-04-18 00:19 0上次去参加了JavaOne之后过了好久也没把资料整理好,帖子差 ... -
转岗成功
2011-04-08 10:14 0正明 不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。 ... -
[纯水/真相] 奖杯一枚
2011-03-11 18:18 3497好久没拿过啥奖啊什么的了,突然拿到个奖杯形状的东西也挺开心的。 ... -
刚拿到的几张CD
2011-03-09 12:43 1998过年的时候订的几张CD终于到手了。忍不住一晒。直接上图 ... -
i18n bug in Netbeans Platform?
2011-02-24 15:21 0JDK7 build 130 jvisualvm jv ... -
一道题
2011-01-09 23:05 0唔,没做出来,马克 -
JavaOne 2010感想——草稿篇
2011-01-04 22:18 4371本来是想专注记录JavaOne北京2010的见闻,无奈北京站比 ...
相关推荐
lv战略选择路易威登的战略选择,lv战略选择路易威登的战略选择课件,lv战略选择路易威登的战略选择PPT
路易威登,全球知名的奢侈品牌,以其独特的品牌价值、设计风格和卓越的营销策略闻名于世。在深入探讨路易威登的营销策略时,我们可以从多个角度进行分析,包括品牌定位、产品创新、市场细分、渠道管理、广告与公关、...
标题中的“数据-2008-2019年路易威登集团(LVMH)全球总收入.rar”指的是一个压缩文件,包含了有关路易威登集团(LVMH)从2008年至2019年间全球总收入的数据。LVMH是世界著名的奢侈品集团,拥有包括时装、皮具、手表、...
从文件"行业数据-2019年路易威登集团(LVMH)全球各区域收入份额.xls"中,我们可以看到以下几个关键知识点: 1. **北美市场**:作为全球最大的奢侈品市场之一,北美在LVMH的收入构成中占有重要地位。2019年,北美消费...
在奢侈品行业中,路易威登(Louis Vuitton,简称LV)无疑是一个具有全球影响力的标志性品牌。这份名为“路易威登的营销策划方案”的文档,揭示了该品牌如何运用创新策略来保持其市场地位和吸引消费者。在这个高度...
奢侈品消费群体的消费行为分析——以LV路易威登为例.docx
奢侈品消费群体的消费行为分析__以LV路易威登为例.doc
【奢侈品消费群体的消费行为分析】\n\n奢侈品消费,特别是以LV路易威登为代表的高端品牌,一直是社会经济和文化研究的重要课题。奢侈品不仅代表了品质与价值的高度结合,更深层次地,它们反映了消费者的品位、生活...
2019年路易威登集团(LVMH)全球各区域收入份额.xls
动感蓝色服装品牌路易威登.pptx
在中国,路易威登(Louis Vuitton,简称LV)作为全球知名奢侈品牌,其营销策略备受关注。本文将深入探讨LV在中国市场的营销策略,包括品牌定位、消费者洞察、产品创新、渠道管理、广告宣传以及数字化转型等多个方面...
世界奢侈品品牌LouisVuitton路易威登以优雅经典的设.doc
2008-2019年路易威登集团(LVMH)全球总收入.xls
LV8731是一款专为电机控制设计的集成电路,常用于直流无刷电机或步进电机的驱动。在STM32F103微控制器平台上,LV8731驱动测试例程是实现电机控制的关键部分,它允许精确地调节电机的速度、方向以及扭矩。 LV8731...
从提供的文件内容中,我们可以提取出关于LV2843DC/DC降压集成电路的详细知识点。以下是知识点的详细说明: 1. LV2843概述: LV2843是一种PWM DC/DC降压调节器,设计用于提供稳定的输出电压,同时将较高的输入电压...
LV25212是一款专为无线电接收设计的集成电路(IC),在电子工程领域中,这类芯片常用于构建FM、AM等广播接收设备。这款芯片集成了多种功能,包括信号解调、音频处理以及电源管理,旨在提供高效、低功耗的收音解决...
### LV123标准知识点详解 #### 一、概述 LV123是戴姆勒股份公司(Daimler AG)发布的关于道路车辆高压组件电气特性和电气安全的标准。该标准详细规定了高压组件在设计、生产和测试过程中的具体要求与测试方法。LV...