<a>标记符的属性

新手:node里怎么用&a href&,难道所有的href链接都需要在router里解析吗? - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
html&a href=/about.html&about&/a&超链接不能用,can’t get about.html。 如果改成&a href=about& about&/a& 在router里添加:
app.get(’/about’,function(req,res){
res.render(‘about’);
就可以链接了。请问node中怎么使用超链接啊?
app.use(express.static(path.join(__dirname, ‘views’)))
添加了这句话可以实现超链接了。
请问这是个正确的方法吗,还有别的方法吗?
get请求的话:
发出请求的页面:
&a href=&/about&&about&/a&
app.get('/about',function(req,res){
res.render('index',{
title:'xxx'
你上面说的是配置views目录为默认目录,这样views里面的文件直接写文件名就行了,不用再去配置路径了。
那也就是说,node里最好都处理一下这样的get请求,这样当直接get请求时就可以获得需要的页面了?
这只是个栗子,如果有其他的需求,会做相应的改动,不过get请求大致的传值过程和页面跳转是这样了
谢谢啦~~~
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的“国外教授”这个范围太广,不过原问题的答案一定是“否”,因为存在很多反例。下面主要抛一块别人讲如何提高TeXing效率的砖(╯‵皿′)╯︵▄。&br&Anton Geraschenko, mathoverflow的创始人之一,在MO上回答过一个类似的问题(&a href=&///?target=http%3A//mathoverflow.net/questions/12638/taking-lecture-notes-in-lectures& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Taking lecture notes in lectures&i class=&icon-external&&&/i&&/a&),摘录如下:&br&&blockquote&&img src=&/163661ece000bd53a31b_b.jpg& data-rawwidth=&200& data-rawheight=&40& class=&content_image& width=&200&&...I live-TeX notes, which has a number of advantages:&br&&ul&&li&It's much faster to strike a key than it is to write a character by hand, so I TeX much better notes than I can take by hand. I find that I can even write down lots of things the speaker says but doesn't write.&br&&/li&&li&I can throw the notes up on my web page, which makes other people in the same class happy.&/li&&li&I can grep (or otherwise search) my notes.&/li&&li&If I have the time, I can edit the notes and end up with an awesome reference (e.g. I put a lot of effort into editing my Lie groups and Stacks notes). More often, I review my notes but not edit them very much, in which case they're still pretty nice to have later on.&/li&&/ul&&/blockquote&他还写了一篇软文&a href=&///?target=http%3A//stacky.net/wiki/index.php%3Ftitle%3DAdvice_on_real-time_TeXing& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Advice on real-time TeXing&i class=&icon-external&&&/i&&/a&, 摘改如下,并附上答猪的&b&&i&个人&/i&&/b&&b&&i&心得&/i&&/b& |ω?):&br&&blockquote&&img src=&/edb357c050a87f0be8abfa23_b.jpg& data-rawwidth=&174& data-rawheight=&256& class=&content_image& width=&174&&&ul&&li&The Editor&br&&/li&&ul&&li&Use your editor to auto-complete environments. &b&&i&答猪用的是Emacs+AUCTex,嵌入一个新环境的快捷键是C-c-e;补全一个环境,比如\begin{theorem},的快捷键是C-c ],按下之后编辑器就会自动加上\end{theorem}&/i&&/b&(?o??o?) ?&b&&i&。&/i&&/b&&/li&&li&Use keyboard shortcuts to compile when there is a pause. &b&&i&Emacs+AUCTex的智能编译兼查看快捷键是C-c-c,专属查看快捷键是C-c-v。&/i&&/b&&/li&&li&Use shortcut to comment out a block of text。&b&&i&Emacs+AUCTex下面是C-。&/i&&/b&&/li&&/ul&&li&TeXing fast&br&&/li&&ul&&li&Tune your macros to the lecture. If you're going to be doing a lot of algebraic geometry, you'll want to write $\O$ instead of $\mathscr{O}$. &i&&b&于是乎呵呵喜欢偷懒的答猪&/b&&/i&( ??ω??)&i&&b&把$\mathbf{R}$写成了$\R$,$\,\mathrm{d}x$写成了$\dx$,$\mathrm{span}\,$写成了$\Span$(\span这个软妹子被\multicolumn霸占了,真是讨厌&/b&&/i&(( (//?Д/?/) ))&i&&b&,据说会在LaTeX3里面解决),等等。&/b&&/i&&/li&&li&If I don't know how to produce a $\mathfrak{J}$ and it starts coming up a lot, then I would do \def\J{J}, then use $\J$ whenever I want a Fraktur J and then change the definition later (rather than change every instance later).&br&&/li&&li&In addition to choosing good macros, it's good to learn where you can drop braces to make the typing more manageable. TeX read one token at a time (where a token is a character or a command). If something is just one token, you don't need braces around it. For example, instead of writing $x^{\alpha}$, you can write $x^\alpha$, but $x^{\alpha_i}$ produces different results than $x^\alpha_i$ (because $\alpha_i$ is more than one token). Another example: instead of writing $\frac{\alpha}{\delta}$ you can write $\frac\alpha\delta$. In fact, you can even write $x^\frac 12$ to get $x^{\frac{1}{2}}$ (because TeX will read the arguments of \frac before it decides what to do with the superscript), but even I think that' I'd probably write $x^{\frac 12}$. &b&&i&Blew 答猪's mind&/i&&/b&/(/ /o/ω/o/ /)/&b&.&/b&&/li&&/ul&&li&Diagrams&/li&&/ul&Pictures and diagrams are usually slower to type than to draw by hand. If you find yourself wasting too much time on a diagram, draw it on a piece of paper and make a comment in the text (or if you can, just describe it in the text) and come back to it later.&br&&ul&&li&Managing your notes&/li&&/ul&If you're going to be texing class notes, use the \input command. There is no point in compiling the last ten lectures every time you want to see what you've written in the last five minutes. It's hard to comment out a huge block of text, but it's easy to comment out a few lines&br&&div class=&highlight&&&pre&&code class=&language-tex&&&span class=&k&&\input&/span&&span class=&nb&&{&/span&lecture08&span class=&nb&&}&/span&
&span class=&k&&\input&/span&&span class=&nb&&{&/span&lecture09&span class=&nb&&}&/span&
&/code&&/pre&&/div&in a master file.&/blockquote&以上。欢迎大家讨论以及分享自己的心得体会。答猪感觉自己已经快要走上live-TeXing的不归路了(?-ω?`)。
“国外教授”这个范围太广,不过原问题的答案一定是“否”,因为存在很多反例。下面主要抛一块别人讲如何提高TeXing效率的砖(╯‵皿′)╯︵▄。 Anton Geraschenko, mathoverflow的创始人之一,在MO上回答过一个类似的问题(…
【Word公式进阶请往下翻】&br&有人还写过论文,参见&a href=&///?target=http%3A//journals.plos.org/plosone/article%3Fid%3D10.1371/journal.pone.0115069& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PLOS ONE: An Efficiency Comparison of Document Preparation Systems Used in Academic Research and Development&i class=&icon-external&&&/i&&/a&&br&在我看来,最大的优点在于&br&&ul&&li&数学公式的自动编号和交叉引用&/li&&li&文件干净,随手记事本或者Vim或者nano都能编辑,不像Word的docx解压以后一堆人眼无法阅读的xml文档&/li&&li&因为文件干净,自动化也很方便,Bash、Python……都可以干活&br&(当然Word也可以通过VBS和C#进行很强大的自动化)&/li&&li&强迫用户以结构化的方式写作,输出的PDF结构树清晰&br&而Word默认导出PDF是不输出结构的,需要另外勾选,当然如果勾选了的话不比LaTeX差&i&[附图1]&/i&&br&&/li&&li&各种各样的宏包,TikZ这种包估计Word万年都不会有对应的插件&br&&/li&&li&模板质量都很高,各种边距都考虑得很周到,而且切换方便,可以管理的格式很多,如[1]中提到的分栏问题Word的模板是解决不了的,因为本质上Word里“分栏”是页面的属性而不是段落的属性&/li&&li&UNIX-friendly&/li&&li&长度单位不依赖于系统的地区设置&/li&&li&各种特殊页面界定清晰,修改灵活,不像Word的“封面”功能有些莫名奇妙&/li&&li&矢量图只要用了合适的包和编译引擎就能支持很多格式,不像Word只支持emf或者wmf&/li&&li&题注系统比Word强到不知道哪里去了&/li&&li&Computer Modern系列字体是真的美,美出声&/li&&/ul&&br&缺点当然也有&br&&ul&&li&需要花时间等待编译(渲染)&/li&&li&不适合边写边改,文本编辑器+PDF输出预览不如Word实时预览直观,适合写完了放进来从头上到尾巴顺序排版,不然会严重依赖Ctrl+F(评论里指出很多编辑器支持PDF与源文件对应跳转,不过还是要编译一下看结果)&/li&&li&多语言支持严重依赖宏包&/li&&li&不像Word可以嵌入OLE&/li&&li&没有Word的审阅、修订功能(但可以用Git/SVN + texdiff等辅助工具完成)&/li&&li&不像Word可以编辑PDF&/li&&li&写文章也逃不了debug是一种怎样的体验……&/li&&/ul&&br&不用离开键盘输入公式,Word也做得到(此处讨论的是07以后的Word,不是Word依赖MathType的时代),而且如果你TeX的相应命令记得挺牢,加公式甚至更方便。切换到英语输入法,[Alt] + [=],试试这么来一下&br&&div class=&highlight&&&pre&&code class=&language-text&&min [空格] x^2 [空格] -2x+1 [Home] [←] _ [空格] x [空格]
&/code&&/pre&&/div&就能搞出来&br&&img src=&///equation?tex=%5Cmin_%7Bx%7D%7Bx%5E2-2x%2B1%7D& alt=&\min_{x}{x^2-2x+1}& eeimg=&1&&&br&那么,我们要是来个矩阵的话会怎么样呢?&br&&img src=&///equation?tex=%5Cbegin%7Bbmatrix%7D%0Aa_%7B11%7D%26a_%7B12%7D%26a_%7B13%7D%5C%5C%0Aa_%7B21%7D%26a_%7B22%7D%26a_%7B23%7D%5C%5C%0Aa_%7B31%7D%26a_%7B32%7D%26a_%7B33%7D%5C%5C%0A%5Cend%7Bbmatrix%7D& alt=&\begin{bmatrix}
a_{11}&a_{12}&a_{13}\\
a_{21}&a_{22}&a_{23}\\
a_{31}&a_{32}&a_{33}\\
\end{bmatrix}& eeimg=&1&&&br&在TeX里我们输&br&&div class=&highlight&&&pre&&code class=&language-tex&&&span class=&k&&\begin&/span&&span class=&nb&&{&/span&bmatrix&span class=&nb&&}&/span&
a&span class=&nb&&_{&/span&11&span class=&nb&&}&&/span&a&span class=&nb&&_{&/span&12&span class=&nb&&}&&/span&a&span class=&nb&&_{&/span&13&span class=&nb&&}&/span&&span class=&k&&\\&/span&
a&span class=&nb&&_{&/span&21&span class=&nb&&}&&/span&a&span class=&nb&&_{&/span&22&span class=&nb&&}&&/span&a&span class=&nb&&_{&/span&23&span class=&nb&&}&/span&&span class=&k&&\\&/span&
a&span class=&nb&&_{&/span&31&span class=&nb&&}&&/span&a&span class=&nb&&_{&/span&32&span class=&nb&&}&&/span&a&span class=&nb&&_{&/span&33&span class=&nb&&}&/span&&span class=&k&&\\&/span&
&span class=&k&&\end&/span&&span class=&nb&&{&/span&bmatrix&span class=&nb&&}&/span&
&/code&&/pre&&/div&那在Word里,来,我们先输个[左方括号],然后输入&br&&div class=&highlight&&&pre&&code class=&language-text&&\matrix[左圆括号]a_11[空格]&a_12[空格]&a_13[空格]@a_21[空格]&a_22[空格]&a_23[空格]@a_31[空格]&a_32[空格]&a_33[空格][右圆括号][空格][右方括号][空格]
&/code&&/pre&&/div&其中,&的用法与TeX中一样,而@代表换行。&br&两种输入方式中,TeX的Math Mode比较依赖花括号来界定范围,而Word则更依赖于实时的空格以及圆括号。可以用&br&&div class=&highlight&&&pre&&code class=&language-text&&\matrix(&&&&@&&&&@&&&&@&&&&@&&&&)
&/code&&/pre&&/div&来快速生成带25个占位符的5×5矩阵。&br&大多数的数学符号在TeX里怎么输,在Word里也基本就是多敲一个空格的事情,包括很多你原来需要\usepackage{amsmath}才能用的符号。&br&【2月19日突然发现&a href=&/question//answer/& class=&internal&&如何做到像使用 LaTeX 那样优雅地使用 Word? - mewing 的回答&/a&这里有更详细的有关公式的解说,并且给出了&a href=&///?target=http%3A//unicode.org/notes/tn28/UTN28-PlainTextMath-v3.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&unicode.org/notes/tn28/&/span&&span class=&invisible&&UTN28-PlainTextMath-v3.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&这份微软提供个Unicode的详细文档,大家可以详细看这个文档的第30页,看看很多和\matrix地位相同的环境控制符号&br&&img src=&/a78e64dadc0ab2da9d461_b.png& data-rawwidth=&434& data-rawheight=&370& class=&origin_image zh-lightbox-thumb& width=&434& data-original=&/a78e64dadc0ab2da9d461_r.png&&&br&比如\eqarray(有了上面两个例子,空格就直接用空格表示了)&br&&div class=&highlight&&&pre&&code class=&language-text&&\eqarray(\nabla \cdot E \vec
&=1/\epsilon_0
\rho@\nabla \cdot B \vec
&/code&&/pre&&/div&&img src=&/34fba910eb_b.png& data-rawwidth=&326& data-rawheight=&107& class=&content_image& width=&326&&按一次空格&br&&img src=&/ca12d6b0d7626eadd64f149_b.png& data-rawwidth=&195& data-rawheight=&115& class=&content_image& width=&195&&加上#(1)以后,按回车&br&&img src=&/2c48ad59ad8_b.png& data-rawwidth=&859& data-rawheight=&174& class=&origin_image zh-lightbox-thumb& width=&859& data-original=&/2c48ad59ad8_r.png&&但是可惜的是,这个(1)并不带书签,也就是说不能被直接交叉引用。这个和灵活度也和TeX的subequations比起来差远了。&br&&br&Word的很多功能其实非常好用,但是由于图形化界面限于屏幕大小,无法如配置文件一般把所有的配置都列出,而且自定义多了以后会很乱。&br&&br&其实不管是模板还是样式还是数学公式,LaTeX和Word之间更多是一一对应的关系,要能折腾都能折腾得很好,只不过一个纯靠键盘,另外一个离不开鼠标。两者各有自己的Workflow和使用哲学。&br&&br&&img src=&/3b4ad0f241f9b95bcfae49_b.png& data-rawwidth=&1366& data-rawheight=&738& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/3b4ad0f241f9b95bcfae49_r.png&&&img src=&/28aacc1c52ad_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/28aacc1c52ad_r.png&&&br&至于代码问题,在LaTeX中用minted解决,在Word中……&br&&img src=&/9fa86ccd6b54b6d9ce51b6_b.png& data-rawwidth=&682& data-rawheight=&396& class=&origin_image zh-lightbox-thumb& width=&682& data-original=&/9fa86ccd6b54b6d9ce51b6_r.png&&可以预先定义一个只涉及字体的“代码”样式……&br&&br&若需转载,还请先与我说一声。&br&_________________________&br&[1] &a href=&/question//answer/& class=&internal&&LaTeX 相对于 Word 有什么优势? - 组诗耶的回答&/a&&br&[附图1]&br&&img src=&/4794abb5c6eacf63ffb8bcbb_b.png& data-rawwidth=&297& data-rawheight=&563& class=&content_image& width=&297&&&br&&br&[延伸阅读]&br&继续增长姿势水平请点击&a href=&/question//answer/& class=&internal&&如何做到像使用 LaTeX 那样优雅地使用 Word? - Clerk Ma 的回答&/a&
【Word公式进阶请往下翻】 有人还写过论文,参见 在我看来,最大的优点在于 数学公式的自动编号和交叉引用文件干净,随手记事本或者Vim或者…
XeLaTeX + UTF-8编码的源文件,选择好字体,世界上各种奇怪语言的字符就都能显示了。&br&光显示出来还不够,主流做法还要使用xeCJK包解决中英文混排时的断行、空格(比如汉字和英文间的自动空格)、中英文字体分别指定等问题。&br&&br&相比pdflatex等引擎,就多那么几行字体选择(这里字体随便选的):&br&&div class=&highlight&&&pre&&code class=&language-tex&&&span class=&k&&\usepackage&/span&&span class=&nb&&{&/span&fontspec&span class=&nb&&}&/span&
&span class=&k&&\setmainfont&/span&&span class=&nb&&{&/span&Times New Roman&span class=&nb&&}&/span&
&span class=&k&&\setsansfont&/span&&span class=&nb&&{&/span&Arial&span class=&nb&&}&/span&
&span class=&k&&\setmonofont&/span&&span class=&nb&&{&/span&Courier New&span class=&nb&&}&/span&
&span class=&k&&\usepackage&/span&&span class=&na&&[indentfirst]&/span&&span class=&nb&&{&/span&xeCJK&span class=&nb&&}&/span&
&span class=&k&&\setCJKmainfont&/span&&span class=&na&&[BoldFont={SimHei},ItalicFont={KaiTi}]&/span&&span class=&nb&&{&/span&SimSun&span class=&nb&&}&/span&
&span class=&k&&\setCJKsansfont&/span&&span class=&nb&&{&/span&KaiTi&span class=&nb&&}&/span&
&/code&&/pre&&/div&&br&发行版推荐:&br&Mac: MacTex,Win/Linux: TeX Live。
XeLaTeX + UTF-8编码的源文件,选择好字体,世界上各种奇怪语言的字符就都能显示了。 光显示出来还不够,主流做法还要使用xeCJK包解决中英文混排时的断行、空格(比如汉字和英文间的自动空格)、中英文字体分别指定等问题。 相比pdflatex等引擎,就多那么几…
LyX绝对是个好选择。&br&&br&找最新版的LyX,然后照我的配制方案(&a href=&///?target=http%3A///post/ke-yan-bi-ji/lyxzhong-wen-pei-zhi-tips& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LyX中文配置 Tips&i class=&icon-external&&&/i&&/a&)设置好,就可以畅快地体验到「所想即所见」的学术写作了:&br&&br&&br&& 标*号为必配置项目,其余为建议配置的项目;没有提及的均可保持原始设置。&br&&br&## 「文档」首选项&br&(全部设置完毕后点击「保存为文档缺省设定」)&br&&br&- *「文档类」选「CTeX」;自定义填上「UTF8」。&br&&br&- *「模块」选项中添加「Theorems (AMS, Numbered by Type)」包,便于在论文中添加定理、证明等符合学界要求的论证格式环境。&br&&br&- *「语言」选项中选取「简体中文」;编码选「Unicode (XeTeX)(utf8)」;语言包选「无」。&br&&br&- 「PDF属性」选项,勾选「Use Hyperref...」;书签选中「生成书签」、「书签编号」、「打开标签」。&br&&br&- *「数学选项」中勾选「amsmath」以及「amssymb」,则多行公式会自动调用align环境(LyX帮助文档推荐的格式),以及支持boldsymbol环境;其余勾选「自动加载」。&br&&br&- 「浮动项放置方式」选项,建议选取「此处优先」。&br&&br&- *「输出」选项,默认输出格式选为「PDF(XeTeX)」。&br&&br&- 「LaTeX导言区」:&br&&br&&blockquote&\usepackage{epstopdf}&br&&br&% 如果没有这一句命令,XeTeX会出错&br&\DeclareRobustCommand\nobreakspace{\leavevmode\nobreak\ }&br&&br&% 修改「Proof」为中文「证明」&br&%\renewcommand*{\proofname}{证明}&/blockquote&&br&---&br&&br&## 「工具」首选项&br&&br&- 「外观」-「Document Handling」,「Backup & saving」,选取「备份文档」。&br&&br&- 「外观」-「屏幕字体」,「缩放比例」调为150%。&br&&br&- 「外观」-「显示」,选中「显示图形」;即时预览「开」,则数学公式可以即时显示为TeX渲染后的样子;选中「Mark end...」以显示段落结束标记符。&br&&br&- 「编辑」-「快捷键」,将`Ctrl+D`、`Ctrl+T`、`Alt+Up`、`Alt+Down`替换掉或去除(以免误按)。&br&&br&- 「编辑」-「键盘/鼠标」,取消启用滚轮缩放(以免误按)。&br&&br&- 「编辑」-「自动补全」,「公示内嵌」选中「自动完成」和「自动显示」,则在公示环境中按反斜杠键`\`输入LaTeX代码后可以快捷弹出相关符号;减小自动完成延时(0.1)和气球延时(0.2);选中「即时显示自动完成气球」,则当文本右侧出现「&」小三角标识时,可以按`Tab`键弹出自动完成气球。&br&&br&- 「编辑」-「路径」设定非系统盘工作目录和备份目录;临时目录最好不要修改。&br&&br&& P.S.&br&插入的任何对象(图片、BiBTeX文件等)的路径不要含有空格或括号等多余字符,否则导出的LaTeX代码将无法成功编译。&br&更新LyX仅需下载最新的LyX安装包(Installer,非Bundle)然后直接安装即可,期间注意选择正确的`latex.exe`路径(例如 `C:\Program Files (x86)\MiKTeX 2.9\miktex\bin`)。&br&&br&&br&&br&(另:使用技巧可以参考这篇小文:&a href=&///?target=http%3A///post/ke-yan-bi-ji/lyx-tips& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LyX Tips&i class=&icon-external&&&/i&&/a&)
LyX绝对是个好选择。 找最新版的LyX,然后照我的配制方案()设置好,就可以畅快地体验到「所想即所见」的学术写作了: & 标*号为必配置项目,其余为建议配置的项目;没有提及的均可保持原始设置。 ## 「文档」首选项 (全部设置完毕后点击…
当然可以啦,编译原理课的实验就是用Java实现一个PL/0语言的编译器,感觉比C语言实现起来要简单,毕竟Java可用的方法比较多嘛&br&建议你也可以试试写一下PL/0语言的编译器,原因是比较简单容易入手而且自顶向下的PL/0编译器的实现网上有很多资料&br&&b&&i&下面是题目要求:&/i&&/b&&br&&blockquote&&div class=&highlight&&&pre&&code class=&language-text&&Pl/0语言文法的BNF表示:
&字母& → a|b|c…x|y|z
&数字& → 0|1|2…7|8|9
&无符号整数& → &数字&{&数字&}
&标识符& → &字母&{&字母&|&数字&}
〈程序〉→〈分程序&.
2.B→CEFH|H|CH|EH|FH|CFH|CEH|EFH
〈分程序〉→ [&常量说明部分&][&变量说明部分&][&过程说明部分&]〈语句〉 3.C→CD;|c
&常量说明部分& → CONST&常量定义&{ ,&常量定义&};
&常量定义& → &标识符&=&无符号整数&
5.E→Eb;|d
&变量说明部分& → VAR&标识符&{ ,&标识符&};
&过程说明部分& → &过程首部&&分程序&;{&过程说明部分&}
&过程首部& → procedure&标识符&;
8.H→I|R|T|S|U|V|J|ε
&语句& → &赋值语句&|&条件语句&|&当型循环语句&|&过程调用语句&|&读语句&|&写语句&|&复合语句&|&空&
&赋值语句& → &标识符&:=&表达式&
&复合语句& → begin&一个或多个语句&&end&
11.K→LQL|hL
&条件& → &表达式&&关系运算符&&表达式&|ood&表达式&
12.L→LOM|M|-M|+M
&表达式& → [+|-]&项&{&加减运算符&&项&}
13.M→MPN|N
&项& → &因子&{&乘除运算符&&因子&}
14.N→b|a|(L)
&因子& → &标识符&|&无符号整数&|(&表达式&)
&加减运算符& → +|-
&乘除运算符& → *|/
17.Q→=|#|&|&=|&|&=
&关系运算符& → =|#|&|&=|&|&=
18.R→pKqH
&条件语句& → if&条件&then&语句&
&过程调用语句& → call&标识符&
20.T→nKoH
&当型循环语句& → while&条件&do&语句&
21.U→i(X)
&读语句& → read(&一个或多个标识符&)
22.V→j(X)
&写语句& → write(&一个或多个标识符&)
23.W→W;H|H
&一个或多个语句&→&语句&{ ;&语句&}
24.X→X,b|b
&一个或多个标识符&→&标识符&{,&标识符&}
一. 为PL/0语言建立一个词法分程序GETSYM(函数)
把关键字、算符、界符称为语言固有的单词,标识符、常量称为用户自定义的单词。为此设置三个全程量:SYM,ID,NUM 。
SYM:存放每个单词的类别,为内部编码的表示形式。
ID:存放用户所定义的标识符的值,即标识符字符串的机内表示。
NUM:存放用户定义的数。
GETSYM要完成的任务:
1. 滤掉单词间的空格。
2. 识别关键字,用查关键字表的方法识别。当单词是关键字时,将对应的类别放在SYM中。如IF的类别为IFSYM,THEN的类别为THENSYM。
3. 识别标识符,标识符的类别为IDENT,IDRNT放在SYM中,标识符本身的值放在ID中。关键字或标识符的最大长度是10。
4. 拼数,将数的类别NUMBER放在SYM中,数本身的值放在NUM中。
5. 拼由两个字符组成的运算符,如:&=、&=等等,识别后将类别存放在SYM中。
6. 打印源程序,边读入字符边打印。
由于一个单词是由一个或多个字符组成的,所以在词法分析程序GETSYM中定义一个读字符过程GETCH。
二. 为PL/0语言建立一个语法分析程序BLOCK(函数)
PL/0编译程序采用一遍扫描的方法,所以语法分析和代码生成都有在BLOCK中完成。BLOCK的工作分为两步:
a) 说明部分的处理
说明部分的处理任务就是对每个过程(包括主程序,可以看成是一个主过程)的说明对象造名字表。填写所在层次(主程序是0层,在主程序中定义的过程是1层,随着嵌套的深度增加而层次数增大。PL/0最多允许3层),标识符的属性和分配的相对地址等。标识符的属性不同则填写的信息不同。
所造的表放在全程量一维数组TABLE中,TX为指针,数组元素为结构体类型数据。LEV给出层次,DX给出每层的局部量的相对地址,每说明完一个变量后DX加1。
例如:一个过程的说明部分为:
const a=35,b=49;
var c,d,e;
对它的常量、变量和过程说明处理后,TABLE表中的信息如下:
NAME: p KIND: CONSTANT
KIND: CONSTANT
KIND: VARIABLE
KIND: VARIABLE
KIND: VAEIABLE
KIND: PROCEDURE VAL: 35
LEVEL: LEV
LEVEL: LEV
LEVEL: LEV
LEVEL: LEV
。 KIND: VARIABLE
。 LEVEL: LEV+1
。 ADR: DX
对于过程名的ADR域,是在过程体的目标代码生成后返填过程体的入口地址。
TABLE表的索引TX和层次单元LEV都是以BLOCK的参数形式出现,在主程序调用BLOCK时实参的值为0。每个过程的相对起始位置在BLOCK内置初值DX=3。
2.语句处理和代码生成
对语句逐句分析,语法正确则生目标代码,当遇到标识符的引用则去查TABLE表,看是否有过正确的定义,若有则从表中取出相关的信息,供代码生成用。PL/0语言的代码生成是由过程GEN完成。GEN过程有三个参数,分别代表目标代码的功能码、层差、和位移量。生成的目标代码放在数组CODE中。CODE是一维数组,数组元素是结构体类型数据。
PL/0语言的目标指令是一种假想的栈式计算机的汇编语言,其格式如下:
其中f代表功能码,l代表层次差,a代表位移量。
目标指令有8条:
① LIT:将常数放到运栈顶,a域为常数。
② LOD:将变量放到栈顶。a域为变量在所说明层中的相对位置,l为调用层与说明层的层差值。
③ STO:将栈顶的内容送到某变量单元中。a,l域的含义与LOD的相同。
④ CAL:调用过程的指令。a为被调用过程的目标程序的入中地址,l为层差。
⑤ INT:为被调用的过程(或主程序)在运行栈中开辟数据区。a域为开辟的个数。
⑥ JMP:无条件转移指令,a为转向地址。
⑦ JPC:条件转移指令,当栈顶的布尔值为非真时,转向a域的地址,否则顺序执行。
⑧ OPR:关系和算术运算。具体操作由a域给出。运算对象为栈顶和次顶的内容进行运算,结果存放在次顶。a域为0时是退出数据区。
三. 建立一个解释执行目标程序的函数
编译结束后,记录源程序中标识符的TABLE表已退出内存,内存中只剩下用于存放目标程序的CODE数组和运行时的数据区S。S是由解释程序定义的一维整型数组。解释执行时的数据空间S为栈式计算机的存储空间。遵循后进先出的规则,对每个过程(包括主程序)当被调用时,才分配数据空间,退出过程时,则所分配的数据空间被释放。
为解释程序定义四个寄存器:
1. I:指令寄存器,存放当前正在解释的一条目标指令。
2. P:程序地址寄存器,指向下一条要执行的目标指令(相当于CODE数组的下标)。
3. T:栈顶寄存器,每个过程运行时要为它分配数据区(或称为数据
段),该数据区分为两部分。
静态部分:包括变量存放区和三个联单元。
动态部分:作为临时工作单元和累加器用。需要时临时分配,用完立即释放。栈顶寄存器T指出了当前栈中最新分配的单元(T也是数组S的下标)。
4. B:基地址寄存器,指出每个过程被调用时,在数据区S中给出它分配的数据段起始地址,也称为基地址。每个过程被调用时,在栈顶分配三个联系单元。这三个单元的内容分别是:
SL:静态链,它是指向定义该过程的直接外过程运行时数据段的基地址。
DL:动态链,它是指向调用该过程前正在运行过程的数据段的基地址。
RA:返回地址,记录调用该过程时目标程序的断点,即当时的程序地址寄存器P的值。
具体的过程调用和结束,对上述寄存器及三个联系单元的填写和恢复由下列目标指令完成。
a:为局部量个数加3
恢复调用该过程前正在运行过程(或主程序)的数据段的基地址寄存器的值,恢复栈顶寄存器T的值,并将返回地址送到指令寄存器P中。
a为被调用过程的目标程序的入口,送入指令地址寄存器P中。
CAL指令还完成填写静态链,动态链,返回地址,给出被调用过程的基地址值,送入基址寄存器B中。
例:一个Pl/0源程序及生成的目标代码:
const a=10;
while b#0 do
write(2*c);
&/code&&/pre&&/div&&/blockquote&&b&&i&下面是一些资料&/i&&/b&&br&&br&&b&&u&Java版的自顶向下实现:&/u&&/b&&br&&a href=&///?target=http%3A//download.csdn.net/detail/i_kelven/1328612& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JAVA课程设计PL0编译器&i class=&icon-external&&&/i&&/a&&br&&br&&b&&u&C语言版的自顶向下实现:&/u&&/b&&br&&a href=&///?target=http%3A//download.csdn.net/detail/lf6799& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pl/0编译器源码及文档&i class=&icon-external&&&/i&&/a&&br&&br&&b&&u&最后加上我自己实现的,这个是有别于网上的一般实现,采用的SLR(这个具体可以参考编译原理类的书籍)的方法,但是由于时间关系,在代码生成的时候并没有采用标准的语法制导翻译,所以还有待改进,不过整体也算是实现了一个SLR分析方法,而且我实现了读入文法由程序自动的构造SLR分析表,所以文法可以随时修改,相当于实现了一个Yacc的部分功能,也算有一定参考价值,也把代码放在这里吧:&/u&&/b&&br&&a href=&///?target=https%3A///wangzhaode/PL0-compiler-SLR& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/wangzhaode/P&/span&&span class=&invisible&&L0-compiler-SLR&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
当然可以啦,编译原理课的实验就是用Java实现一个PL/0语言的编译器,感觉比C语言实现起来要简单,毕竟Java可用的方法比较多嘛 建议你也可以试试写一下PL/0语言的编译器,原因是比较简单容易入手而且自顶向下的PL/0编译器的实现网上有很多资料 下面是题目要…
// 更新多路选择器,锁存器,你们都以为我要太监了吧!我会更完的!&br&&br&我决定占个坑准备写我人生中第一个长答案。&br&&br&我心目中最不可思议的机器大概是&b&计算机&/b&。这里计算机的概念包括所有涉及&b&数字电路&/b&的东西,自从我上了数字逻辑设计之后我就对这一类的东西感到无比敬畏。这一类东西的终极体现,就是现在的家用计算机,手机,单片机,超级计算机等等的具有编程能力的计算设备了。我一直以为这类计算设备是人类历史上工程学的顶峰,处处体现着人类智慧的伟大之处,精巧得无与伦比。&br&&br&为什么呢?&br&&br&可能因为我对计算机这个东西了解比较深吧,毕竟大学上过课,所以可能觉得它真是神奇,而对于其他的东西比如火箭和航空发动机,我就没什么了解,啥都不知道自然不理解它的复杂性。&br&评论区 &a data-hash=&596108ded93fd3a5fde575f415e85635& href=&///people/596108ded93fd3a5fde575f415e85635& class=&member_mention& data-editable=&true& data-title=&@阿傩& data-tip=&p$b$596108ded93fd3a5fde575f415e85635& data-hovercard=&p$b$596108ded93fd3a5fde575f415e85635&&@阿傩&/a& 提到,计算机其实从结构上不复杂,它由很多大的部分组成,每个大的部分里面有很多重复的东西。我其实还蛮同意这个观点的。不过我还是坚持我的看法。在我有限的知识范围内,我觉得计算机最为不可思议的逻辑其实是这样的:&br&我们不能用一样东西的功能集成度来判断一个东西复不复杂,你肯定不能仅仅因为一辆汽车里面有行车电脑就认为汽车比计算机来得更加精巧对吧。为什么我觉得计算机非常精巧,是因为计算机的每一个小部件,都是为计算机整体服务的,你把内存拆出来,它什么事也干不了;你把8253计时器单独拿出来,它也没什么用,你必须把它加到一个计算机系统里面,它才能发挥作用。计算机的每一个部件,从高级的主板,CPU直到三极管级别,都是为计算机整体服务的。这里当然涉及了很多层的抽象:从三级管到门,从门到全加器和多路选择器这类数字电路器件,从数字电路器件到比如ALU和控制器这样的中型集成器件,再到CPU和内存这样的高级集成器件等等。其中每一层的设计都很精巧,足够让人赞叹。这里每一层的抽象,目的都只有一个:计算机,或者像我上面所说,可编程的数字电路计算设备。当一个工程设计涉及了无数层的集成和抽象,其中每一层都很美妙的时候,最终产品的精妙真的只能用脏话来形容了。这个答案也就是为了展现其中每一层抽象设计的精巧所在。&br&&br&我会试图用最简单的语言把它讲清楚。&br&&br&&b&目录&/b&&br&&b&三极管&/b&&br&&b&二元布尔代数和逻辑门&/b&&br&&b&全加器和多路选择器&/b&&br&&b&锁存器和触发器&/b&&br&&b&时序逻辑和自动机理论&/b&&br&&b&模型机和控制器&/b&&br&&b&CPU结构&/b&&br&&b&储存器结构&/b&&br&&b&总线&/b&&br&&b&现代计算机架构&/b&&br&&br&&br&&b&appendix&/b&&br&&b&有关半导体的初步知识和光刻技术&/b&&br&&b&图灵机和可计算性理论初步&/b&&br&&br&&br&那么,我们从&b&三极管&/b&开始慢慢讲起…&br&//12月26日更新&br&这是一个电子管:&br&&img src=&/b186bb75bc0b0abb3f5ed_b.jpg& data-rawwidth=&300& data-rawheight=&200& class=&content_image& width=&300&&这是一个晶体管:&br&&img src=&/20bd6553cbcd13fe6369_b.jpg& data-rawwidth=&320& data-rawheight=&240& class=&content_image& width=&320&&这是一个MOSFET的示意图:&br&&img src=&/526db2fde_b.jpg& data-rawwidth=&305& data-rawheight=&165& class=&content_image& width=&305&&&br&严格来说,MOSFET其实是晶体管的一种。&br&&br&这三样东西都可以被叫做&b&三极管(Triode)&/b&,一种电气器件。&br&&br&这三样东西在历史上都曾经被用作数字电路的基本部分,先是电子管,然后是BJT晶体管,然后是MOSFET,现在常用在集成电路里面的就是MOSFET了,因为它能做的特别小,小到几十纳米(怎么做出来这种很小很小的三极管我后面会介绍一下)。具体它们怎么工作的大家不用知道,涉及半导体物理,这个我也不是很懂,只需要知道它们的功能:能够做成一个电子开关。电子开关就是能用电信号控制电路通断的一个开关。啥意思呢,假设你家里现在装了一盏灯,如果它装了一个电子开关,那么你就需要给这盏灯的开关施加一个电压才能把灯打开。这显得特别蠢,因为为啥我不直接把电压加到灯泡上呢?这是因为:我只需要给这个开关施加一个很小的电压就能让开关打开,而这个电压未必能足够让灯亮起来,这是三级管的放大作用,不过在数字电路里边不会用到;另一个原因是有一类电子开关是反着来的,高电压断路,低电压接通。这两种电子开关就是我们用来做计算机的玩意儿了。&br&&br&用电子开关去焊一台计算机出来貌似很遥不可及,不过现在我们手头有了电子开关,我们可以做一些简单的东西了:&br&&b&逻辑门&/b&&br&&br&大家耳熟能详的一句话叫做计算机只认识0和1,这个是什么意思呢。计算机里面的数字电路是基于某一种特殊的&b&布尔代数&/b&的,布尔代数这个名字听上去有点吊吊的,但是这种特殊的布尔代数其实就是在0和1上的运算,只有0和1,这个概念和二进制有点不一样,二进制是一种计数法,二元布尔代数只有0和1两个东西,没有2啊3的,也没有10,11。计算机使用布尔代数的原因倒是不难想,因为高电平和低电平(电平这个词大家就理解成一个电压标准好了)天然适合表示0和1,你要它表示一个新的数,你得弄个中电平出来,这个东西在电路设计里面就很麻烦了。不如用高低电平来表示,这样直接用电路通断就能很方便的控制了。&i&布尔代数这玩意牛逼就牛逼在弄出布尔代数的时候可还没有计算机啊,那个时候才1850年,研究这东西没有物理背景的,谁能想到这玩意以后因为计算机大红大紫了呢。很多现在研究的数学问题也没有什么物理背景,千万别去嘲讽数学家们弄这个,没准哪天就用上了。&/i&&br&&br&感谢 &a data-hash=&2e4c94cda3af576e90f843cead40ec11& href=&///people/2e4c94cda3af576e90f843cead40ec11& class=&member_mention& data-editable=&true& data-title=&@高建& data-tip=&p$b$2e4c94cda3af576e90f843cead40ec11& data-hovercard=&p$b$2e4c94cda3af576e90f843cead40ec11&&@高建&/a&的补充:&br&&给一点纠正和补充吧,布尔代数不必须只有0和1,详细参考近世代数和/或离散数学的内容。逻辑电路使用的是一个特殊的布尔代数系统。&&br&实在抱歉,不过不影响理解我后面的内容就暂时不改了,大家知道是错的就好。&br&&br&布尔代数里面最基本的三个运算是与、或、非,与和或是二元运算,代表着它需要使用两个数来算出一个数,非是一元运算,代表着它只需要一个数就能算答案了我把这三个运算的真值表列在下面:&br&与:&br&&img src=&/6372c71fbe714adebbfe_b.jpg& data-rawwidth=&243& data-rawheight=&113& class=&content_image& width=&243&&或:&br&&img src=&/cf389c27e9af5e5e5de9e_b.jpg& data-rawwidth=&242& data-rawheight=&119& class=&content_image& width=&242&&非:&img src=&/77ee765fe624bcfecbaec404b24ffb56_b.jpg& data-rawwidth=&208& data-rawheight=&87& class=&content_image& width=&208&&&br&这三个运算构成了一个布尔运算的完备集(是这个词吗?我离散数学的书不在手边查不到...),意思就是只要用这三个运算的组合,就能完成这世界上所有可能的布尔运算,你怎么定义这个运算都可以。其实使用一点简单的代数知识我们可以证明其实只要非和与,或者非和或,也能做到。&br&&br&那么,如果我们想要实现一个运算,比如一个三元布尔代数运算,就是有三个数输入,一个数输出的运算,我们只需要用一大堆与或非,然后凑吧凑吧就能把这个运算写出来。这个功能其实就很强大啦,比如,我们想要做一个四位二进制加法,四位数加四位数,输出一个四位数加一个进位,我们只需要五个八元布尔代数运算就行了,每一个运算对应答案上的一位,还有一个对应进位。&br&&br&为了实现这样强大的功能,我们只需要做出三种对应最基本的三种运算的电子器件,我们再使用这些东西组合一下,就能实现非常复杂的逻辑了对吧?这些对应最基本运算的电子器件,就叫做&b&逻辑门(Logic Gates)&/b&。&br&&img src=&/2b602f3c40aa66f4b6f2858_b.jpg& data-rawwidth=&553& data-rawheight=&261& class=&origin_image zh-lightbox-thumb& width=&553& data-original=&/2b602f3c40aa66f4b6f2858_r.jpg&&&br&与门有两个输入端,两个输入端都是高电平的时候输出端也是高电平,否则就是低电平,非门当输入端是高电平的时候输出端是低电平,输入端是低电平的时候输出端是高电平,或门就不用说了。&br&&br&怎么做呢?&br&&br&我们最先考虑一个简单的东西,与门。&br&我们回顾一下最基本的初中物理:串联和并联&br&&img src=&/82eb0aca078de_b.jpg& data-rawwidth=&247& data-rawheight=&58& class=&content_image& width=&247&&恩,这是两个开关串连在一起,最左边接电压源。我们发现只有两个开关都接通的时候,输出端是高电压。非常合适。我们把这两个开关变成上面说的,通电就通的电子开关,分别引出两个输入端,我们就有一个与门了。&br&&br&但其实这还不够,在输出为低电平的时候,输出端不能像现在一样啥都不接,得接一个低电平,所以这只是一个与门的一半,另外一半是这样的:&br&&br&&img src=&/cdcf4f5062d82_b.jpg& data-rawwidth=&237& data-rawheight=&101& class=&content_image& width=&237&&&br&0这一端表示接地,这两个电子开关是那种反着来的电子开关,加电压就断,不加电才通。&br&我们把这两个东西写到一起来。&br&&img src=&/ec7af937cbbeb63a40fcade_b.jpg& data-rawwidth=&478& data-rawheight=&401& class=&origin_image zh-lightbox-thumb& width=&478& data-original=&/ec7af937cbbeb63a40fcade_r.jpg&&开关变了个样子,大家不要激动,忽略那些参数,箭头向下指的是PMOS,就是M3和M4,相当于我们说的反着来的电子开关。箭头向上指的那两个(M1和M2)是NMOS,相当于我们说的正着来的电子开关。这两种MOS一起组成的电路就叫&b&CMOS&/b&电路。我们现在就有了一个与门。&br&&br&但其实现实中也不是这样做的。因为PMOS和NMOS本身的一些电气特性,这样做出来的与门稳定性很差,现实中我们是这样做的:&br&&img src=&/81ebdeeee0dd9f74206e2_b.jpg& data-rawwidth=&508& data-rawheight=&350& class=&origin_image zh-lightbox-thumb& width=&508& data-original=&/81ebdeeee0dd9f74206e2_r.jpg&&把0和1反一下。&br&这样做出来的输出正好和与门是反过来的,相当于与门后面跟了一个非门,所以它叫&b&与非门(NAND Gate)&/b&,写成符号的话是这样的:&br&&img src=&/9fab1c4c2b43b80c0846_b.jpg& data-rawwidth=&193& data-rawheight=&113& class=&content_image& width=&193&&它很牛逼,原因如下:&br&这是一个非门:&br&&img src=&/ba990965aaecaeec52fbd0e_b.jpg& data-rawwidth=&211& data-rawheight=&105& class=&content_image& width=&211&&这是一个与门:&br&&img src=&/a24b3a104b6e4edf9a8ae90f4106dbbe_b.jpg& data-rawwidth=&328& data-rawheight=&118& class=&content_image& width=&328&&&br&这是一个或门:&br&&img src=&/5f08ae710dedfd15f1100d10_b.jpg& data-rawwidth=&371& data-rawheight=&223& class=&content_image& width=&371&&&br&根据上面的内容,只要有这三个门就能完成所有的二元布尔运算。也就是说,它一个门就能搞定所有的二元布尔运算。&br&实际上在操作中我们是直接使用原理相似的或非门和非门去搭电路,而不是用与非门做出来的这种复杂玩意儿,但是这也足够神奇了不是么。&br&&br&接下来我们就可以尝试做做最简单的计算器了。&br&&br&&b&全加器(Full Adder)&/b&&br&&br&&br&全加器是用来计算加法的电路,顾名思义。既然有全加器,那么就应该有对应的半加器。半加器是不带进位的加法,如果是一个一位半加器,就只有两位输入,一位输出,如果有进位的话就丢弃掉。全加器表示的是带进位的加法。一位全加器有三个输入端,除了两个加数以外还有一位的进位。对应的,它也有两个输出,一个代表的是这一位的结果,另外一位是进位。多了进位的好处是,如果我们把足够多的全加器串联起来,就能做成一个多位加法器,像是这样:&br&&img src=&/e164cec0f954b391a019e1f0c4a0b946_b.jpg& data-rawwidth=&433& data-rawheight=&155& class=&origin_image zh-lightbox-thumb& width=&433& data-original=&/e164cec0f954b391a019e1f0c4a0b946_r.jpg&&&br&这是个三位的加法器,A和B表示输入,O表示输出。当然也可以往后面不断接更多的全加器,变成4位5位6位....等等。加法器其实是所有运算电路的基本元件,减法器和加法器基本上是一样的,乘法其实是移位和加法的结合,除法是移位和减法的结合(大家想想运算的时候列竖式是怎么列的?)。&br&&br&说起来全加器的内部结构也是挺简单的。不过首先我们需要一些分析,这里可能讲得比较晦涩,如果大家不想看的话直接往后跳到下一部分就好了。&br&全加器一共有两个输出,O和C,分别代表结果和进位。&br&O在三个输入中有一个为1或者都为1时为1,其余情况为0,相当于在输入中数1的个数,如果是奇数就为1,如果是偶数就为0。很凑巧的是,我们有一个专门的逻辑运算来处理这个问题,叫异或(XOR),它是一个二元运算,如果两个值相同则输出0,两个值不同输出1。写成公式的话就是下面这个样子。&br&&img src=&///equation?tex=a+%5Coplus+b+%3D+%28%5Cbar%7Ba%7D%5Cwedge+%5Cbar%7Bb%7D%29%5Cvee+%28a%5Cwedge+b%29& alt=&a \oplus b = (\bar{a}\wedge \bar{b})\vee (a\wedge b)& eeimg=&1&&&br&圆圈里一个加号就是XOR,上加横线表示not,&img src=&///equation?tex=%5Cvee+& alt=&\vee & eeimg=&1&&表示或,这个符号上下颠倒表示与。&br&其实我们也是有专门处理异或运算的门的,用符号表示成这样:&br&&img src=&/446d028d01bbc95cc915ca011f11aedb_b.jpg& data-rawwidth=&106& data-rawheight=&80& class=&content_image& width=&106&&&br&那么输出端O的电路可以这么画:&br&&br&&img src=&/97a6bbcd78d54ef7c53c82_b.jpg& data-rawwidth=&270& data-rawheight=&132& class=&content_image& width=&270&&&br&&br&C在三个输入中有两个以上为1时为1,其余情况为0。&br&我们可以把它写成这个样子:&br&&img src=&///equation?tex=C+%3D+%28A+%5Cwedge+B%29+%5Cvee+%28C_0%5Cwedge+%28A%5Cvee+B%29%29& alt=&C = (A \wedge B) \vee (C_0\wedge (A\vee B))& eeimg=&1&&&br&看上去超级复杂,其实逻辑很好理解,如果A和B都是1,&img src=&///equation?tex=A%5Cwedge+B& alt=&A\wedge B& eeimg=&1&&等于1,,C就等于1,接下来一个部分是来考虑A和B不都等于1的情况的,这个时候只要AB其中之一等于1,C0也等于1,C输出也是1。&br&我们可以把它也画成电路:&br&&img src=&/166b960c603a0b140b1ac6_b.jpg& data-rawwidth=&420& data-rawheight=&195& class=&content_image& width=&420&&然后把两个部分拼在一起:&br&&img src=&/ef7b2d7b2ef5ddbc0a1f05_b.jpg& data-rawwidth=&779& data-rawheight=&472& class=&origin_image zh-lightbox-thumb& width=&779& data-original=&/ef7b2d7b2ef5ddbc0a1f05_r.jpg&&(不想画图了,就从课件上截了个图...)&br&就是全加器啦。可能有人发现了,我们其实重用了一个门的输出,就是O部分电路里面的第一个异或门。这个异或门的输出可以代替C部分电路里面的第一个或门的输出,结果是一样的。&br&&br&现在,如果大家有心思用开关和小灯泡当输入和输出器件的话,我们已经可以做成一个只能算二进制加法的计算器了。&br&离计算机还真是遥遥无期啊。&br&&br&接下来要简单介绍一个很重要的部件,它是计算机实现多种功能选择的基础:&br&&b&多路选择器(Multiplexer,MUX)&/b&&br&多路选择器,顾名思义,就是能在很多路中间选一个的元件。&br&最简单的多路选择器是这样的:&br&&img src=&/3140fbe79ff2b894be326376fab06bc4_b.jpg& data-rawwidth=&134& data-rawheight=&87& class=&content_image& width=&134&&什么意思呢,当A为0的时候Z的输出等于I0,当A为1的时候Z的输出等于I1。&br&当然它也有4:1版本,8:1版本,输入端相应增加就是了,功能不变。下面是一个4路选择器的门级电路图(后面电路说明不想看可以不看),看上去有点乱,其实还蛮简单。拿I0这条线来说,把它和A的非和B的非同时接到一个与门上,这个时候这个与门的输出就只在A和B都为0的时候等于I0,其余时刻永远为0了。其它线路也是一样的,把所有线路或成一个输出,就是多路选择器了。&br&&img src=&/c03ecf98ac1cd_b.jpg& data-rawwidth=&226& data-rawheight=&194& class=&content_image& width=&226&&&br&这个东西有两个重要作用:&br&首先,比如你想做一个计算器,又能做加法又能做乘法,这个时候就需要MUX出手了。你做一个开关,表示现在正在进行的运算,0的时候表示加法,1的时候表示乘法,然后做一个加法器,做一个乘法器,把输入分别接到加法器和乘法器上,加法器和乘法器的输出接到MUX上,控制开关接MUX的控制端,输出就是你想要的东西了,现代计算机里面最重要的东西是CPU,CPU里面负责算数运算的模块叫&b&算术逻辑单元(Arithmetic and Logic Unit, ALU)&/b&,可以负责很多种运算,加减乘除,或与非等等,就需要多路选择器的控制。这个东西还可以用在存储器里面,比如我需要提取哪一个地址上的东西,把MUX控制端看成地址输入,输入端看成存储内容输入,输出就是我想要的内容了。&br&其次,这个元件非常讨懒人工程师们的喜欢。为什么呢?假设我要做一个三元运算,有了MUX以后我再也不用费劲想哪个门应该怎么接了,只要写一下三元运算在所有情况下的输出,然后再MUX的输入上对应接上这些输出,比如000输出0,我就在I0的位置直接接低电平,001输出1,我就在I1上接高电平,直接完事,都不用想的。&br&&br&到了这里我们已经把组合逻辑部分讲完了,到了这里大家可以做一些比如闰年计算器之类的小玩意,但是离可以实用的家用电器还差得很远很远。&br&&br&我们上面提到了一个重要的东西叫做存储器,大家仔细想一想,其实如果没有存储能力的话,我们能做的东西非常有限,做个计算器输入还得是用开关一位一位去拨才行,连现在的计算器上面的按键开关都不行,因为它也有最基本的存储功能,在你按下键的时候,按键开关发出了一个很短暂的高电平信号,我们还得把这个很短暂的信号存下来,变成一个稳定的高电平才行。这个时候需要一个很重要的部件出场了:&b&锁存器(Latch)&/b&&br&从名字上就能看出来锁存器的功能了,把输入锁住,存起来。&br&锁存器需要干一些什么呢,它作为一个最简单的时序元件,它需要完成下面两个简单的任务:&br&1.在某一个输入状态之下,可以保存一个信号,或0或1。&br&2.在某一个输入状态之下,能把其中储存的信号变成自己想要的信号。&br&想要做一个能把一个电平存住的东西需要大家有点想象力。&br&先看下面这个电路:&br&&img src=&/73c6cb2f61d474cdfa6e1a7d90d2b8ac_b.jpg& data-rawwidth=&342& data-rawheight=&125& class=&content_image& width=&342&&这个电路没有输入,但这个电路用两个非门可以把里面的这个1存到天荒地老,或者停电为止。而且你要是把图上的0和1换一下,也行,这样就变存储0了。这个结构的好处就是,它可以用同一个结构存储0或者1,这是所有存储器件的基本功能。&br&但是光有它不够,作为一个存储器件,你最起码得有一个能力就是我要你存啥你存啥,这个结构...不行。&br&那我们改改。&br&&img src=&/3d3fbd6a34082a3eee884d4d8ad27ef4_b.jpg& data-rawwidth=&388& data-rawheight=&127& class=&content_image& width=&388&&当我们需要一个输入的时候,我们把最左边的开关合上,把Store开关断开,这个时候这个能存储的电路环就不存在了,然后从左边给输入。然后我们把Store一合,Load一断,这个时候就已经存上了。这个模型就可以当做一个存储单元用了。我们只需要把它改成一个门电路的形式就好。为了以后的制造工作省点事,我们在改动过程中需要尽量使用比较少的门电路来完成这个过程。&br&我们先试试用一个门行不行。&br&&img src=&/671f7e69a465b5cfeef332_b.jpg& data-rawwidth=&205& data-rawheight=&105& class=&content_image& width=&205&&&br&这个电路保持了上面电路的特点,如果你不给他输入,它就能一直把里面的东西保存到天荒地老。如果原来电路中保存的是0,输入为1的时候存储值就会改变成1。但是这个电路虽然能有“把存储的信号变成1的功能”,但是没有一个可以稳定的完成“把存储的信号变成0”的功能。我们需要把这个功能给引入进来。那么我们把电路改成下面这个样子:&br&&img src=&/cfe8e04ca1fa_b.jpg& data-rawwidth=&266& data-rawheight=&104& class=&content_image& width=&266&&这样,如果S保持0,R是1,就可以将保存的内容置成0了。&br&这个门电路结构叫做&b&SR锁存器&/b&,其实在很多书上它还有一个非常炫酷的画法:&br&&img src=&/1ae2e91565_b.jpg& data-rawwidth=&316& data-rawheight=&211& class=&content_image& width=&316&&Q是输出&img src=&///equation?tex=%5Cbar%7BQ%7D& alt=&\bar{Q}& eeimg=&1&&表示和输出的反相,相当于输出加一个非门。&br&这个锁存器的功能是这样的:当S和R都是0的时候,输出是之前存储的内容。如果S是1R是0,存储的内容变为1,如果S是0R是1,存储内容变为0。如果两个都是1,此时的输出时没有定义的,这个器件要求大家在电路运行的时候不要这样做,否则会被玩坏掉。&br&这个锁存器是我们接下来许多各式各样的储存元件的基础,比如,门控SR锁存器:&br&&img src=&/5d9cec4ea68fd799b614_b.jpg& data-rawwidth=&280& data-rawheight=&161& class=&content_image& width=&280&&它加入了一个控制端C,相当于之前的控制开关,只有当控制端为1的时候,S和R的改变才会影响到锁存器内部保存的信号,这样可以解决一部分S和R同时为1的情况。&br&再有D锁存器:&br&&img src=&/68af1a7ecfcaf_b.jpg& data-rawwidth=&241& data-rawheight=&174& class=&content_image& width=&241&&字比较小,我说一下:后面那个大元件是一个门控SR锁存器,三个输入端分别是S,C,R。&br&它用一个D输入端取代了S和R两个输入端的功能。纯粹靠C来控制写入/储存状态,靠D来输入,在应用上面就更加简单了。&br&这些锁存器有很多优点:用的门特别少,所以速度飞快,但是相对应的,比如在SR锁存器中就有一个输入组合是不能用的,而且速度再快,每个门对于电信号的处理还是要花时间的,如果输入变化太快,它也是会出现很多不稳定的现象的。怎么解决呢?我们可以通过使用一种叫做&b&时钟&/b&的信号来控制这些锁存器工作在一个比较稳定的速度下面,还可以同步许多锁存器的共同工作。&br&&br&&br&施工中。
// 更新多路选择器,锁存器,你们都以为我要太监了吧!我会更完的! 我决定占个坑准备写我人生中第一个长答案。 我心目中最不可思议的机器大概是计算机。这里计算机的概念包括所有涉及数字电路的东西,自从我上了数字逻辑设计之后我就对这一类的东…
恭喜你已经有了一个A类别的idea和相应的实现以及数据,那么接下来就是写文章的问题了。计算机论文写作还是有一定的规律可以遵循的。&br&&br&首先,你需要判断自己的文章是投往哪个A类期刊或者会议,是IEEE的还是ACM的。通常IEEE会议的格式和ACM会议的文章格式要求有所不同,我建议你在投论文之前先把该会议的Call For Papers好好研读一番,弄清楚文章长度,需要使用的Latex或者Word模板以及匿名方式等一系列非技术性问题,然后再开始写作。&br&&br&在写作之前,先问问自己如果这篇文章写好以后给整个领域(community)的贡献是什么,这实际上是整个文章的灵魂,也就是你解决某个问题(problem)的方案(idea)。想清楚以后把它(们)按照重要性顺序写下来,这些就是你在Introduction里面告诉读者包括审稿人的contributions。贡献可能是新算法,新架构,新实现或者是前人没有的insights。你在写contributions的时候面向的读者很有可能是自己,所以可能忽略了problem背景和定义,这些就可以慢慢在Introduction里面填充。&br&&br&这样Introduction就写好了,比如说:某某问题是实际中存在的一个问题,这个问题重要性是blah,blah,blah。之前发表的论文针对这个问题提出了三个有代表性的解决方案(此处引用可能至少三篇论文)。第一个解决方案甲大概做了一二三,但是没做四;第二个解决方案乙做了一四,但是没做二三;第三个解决方案丙做了一二三四,但是性能比较差。在这篇文章中,我们提出一个性能比较好并且同时做一二三四的解决方案。接下来写我们这个解决方案是如何实现同时支持一二三四的情况下提升性能的。比如说用了新算法,新架构或者新的实现,都可以。讲完基本技术创新点以后就是contributions,把之前想好的贴上去就可以了。最后在Intro里面加上后续内容组织,比如说第二章是相关工作,第三章是综述,。。。&br&&br&一般来说Intro写完以后会写一章相关工作(Related Work)。从最Related的论文开始写起,比如说以上提到的三篇。这里需要着重讲的是,Related Work不是记流水账(e.g.,甲用了idea A,乙用了idea B,丙用了idea C),而是要比较这些论文,阐述她们各自的优缺点。&br&&br&Related Work写完后,你需要写一个Overview来总括你的问题和解决方案。我的经验是最好想一个最最简单的例子(Running Example),然后使用这个例子引出你要解决的问题。接着再把之前在Intro中提到的现有解决方案挨个说一遍,并且用那个案例表明三个解决方案的不足(这里最好用实际数据)。最后把你的解决方案介绍一下,重点是与前人做的相比较。如果你用了一种新的算法,你可以大概提一下这个算法的思路以及实验数据;如果是新架构,最好放一张架构图上去,然后阐述一下新架构的优势(以及劣势)。在这一章介绍自己的idea的时候,你只需要概略描述即可,凡是涉及到技术细节的东西均可以引用后面的章节来节省页面空间。&br&&br&后面这一章就完全是技术细节了。如果是自己做的的话,这一章是最好写的,因为你只需要把code/算法/架构在纸上还原出来即可。注意由于页面限制,一般来说这一章不可能包括所有细节,按重要性取舍吧。注意有些corner cases,如果很重要的话,千万别省略。&br&&br&技术细节讲完了,如果页面允许,你还可以大致讲一讲你的实现情况。比如说新的系统是在Linux上实现的,新加了20000行C代码,1500行Python以及300行Bash script。C代码主要干什么,Python主要干什么以及Bash script干什么,最好能与技术细节里面所讲的呼应。&br&&br&自然地,技术细节和实现讲完了就该讲你是如何用实验验证你的解决方案支持你的contributions啦。根据上面的例子,你需要写的是如何从实验数据中展示你的解决方案支持一二三四并且性能不错。支持一二三四这种是或否的问题比较容易说,但是性能不错就需要和前人作品做大量比较了。柱状图,折线图,表格等等数据展示手段,只要能说明问题都可以采用。这里需要注意的是,只要你写在论文里面的文字或者是图表,你都要想清楚背后的原因,最好能在论文里做充分的解释。比方说,你采用了新的算法,性能见表1,原因是复杂度降低了;你采用了新架构,性能提升见图3,原因是新架构节省了内存拷贝。通常来说,新算法或者架构会总体上提升性能,但也可能会有异常情况,即新方案比不过老方案的地方。这时需要格外注意,因为这是你的weaknesses,你需要用令人信服的说法向读者展示这些异常情况存在的可能性较低,或者可以通过某种简单方式避免。&br&&br&如果写到这里你还有充足页面可用,你可以试图写一个discussion章节来讨论你的方案的缺点,以及未来有可能的改进情况。不要怕展示缺点,你越诚恳审稿人对你印象越好。如果你是故意遗漏新方法的一个很显然的缺点,这会给审稿人非常不好的印象。你也可以提一些你的方案的其他应用等等。&br&&br&最后就是结论啦,用一两个段落概括一下解决的问题,解决思路以及贡献就可以了,比较好写。&br&&br&如果你需要写一些附录,比如说文章里有几个定理没有给出证明,那可以在后面的Appendix章节中加入。通常Appendix审稿人不太会读。&br&&br&我还有一些小建议,希望能对你有所帮助:&br&&br&1. 找到会议程序委员会(Program Committee,也就是审稿人)的页面,然后看看哪些审稿人做得和你做的相关。如果有的话你应该在Related Work中引用他们的作品,因为大家都希望自己的论文被别人引用。不要怕有礼貌得指出他们的论文缺点,如果你说得对,审稿人看到会很高兴的。&br&&br&2. 论文提交前用你能找到的任何有效的书写检查软件检查一下拼写错误或者简单的语法错误,我知道有些审稿人会对这种小问题过敏,如果一篇论文中此类错误过多可能会导致直接悲剧。有条件的话,找一个英语为母语的人帮你最后把把关。这里我推荐你如果可能的话找一个美国教授合作写论文,可以节省很多时间。&br&&br&3. 如果你之前没中过2-tier或者3-tier的期刊或者会议,那么可以先从这些着手,慢慢锻炼。&br&&br&祝你好运!&br&&br&利益相关:计算机博士刚毕业,期间3篇CCS一作,1篇PLDI一作。
恭喜你已经有了一个A类别的idea和相应的实现以及数据,那么接下来就是写文章的问题了。计算机论文写作还是有一定的规律可以遵循的。 首先,你需要判断自己的文章是投往哪个A类期刊或者会议,是IEEE的还是ACM的。通常IEEE会议的格式和ACM会议的文章格式要求…
&p&重点包括两块,一块是统计分析方法论:描述统计、假设检验、相关分析、方差分析、回归分析、聚类分析、判别分析、主成分与因子分析、时间序列分析、决策树等;&/p&&p&一块是营销管理常用分析方法论:SWOT、4P、PEST、SMART、5W2H、User behavior等。&/p&&p&&b&一、统计分析方法论:&/b&&/p&&p&
1.描述统计(Descriptive statistics):描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。目的是描述数据特征,找出数据的基本规律。描述统计分为集中趋势分析和离中趋势分析和相关分析三大部分。
&br&&/p&&p&(1)&strong&数据的频数分析:&/strong&在数据的预处理部分,我们曾经提到利用频数分析和交叉频数分析来检验异常值。此外,频数分析也可以发现一些统计规律。比如说,收入低的被调查者用户满意度比收入高的被调查者高,或者女性的用户满意度比男性低等。不过这些规律只是表面的特征,在后面的分析中还要经过检验。
&/p&&p&(2)&strong&数据的集中趋势分析&/strong&:数据的集中趋势分析是用来反映数据的一般水平,常用的指标有平均值、中位数和众数等。各指标的具体意义如下:
&/p&&p&平均值:是衡量数据的中心位置的重要指标,反映了一些数据必然性的特点,包括算术平均值、加权算术平均值、调和平均值和几何平均值。
&/p&&p&中位数:是另外一种反映数据的中心位置的指标,其确定方法是将所有数据以由小到大的顺序排列,位于中央的数据值就是中位数。
&/p&&p&众数:是指在数据中发生频率最高的数据值。
&/p&&p&如果各个数据之间的差异程度较小,用平均值就有较好的代表性;而如果数据之间的差异程度较大,特别是有个别的极端值的情况,用中位数或众数有较好的代表性。
&/p&&p&(3)&strong&数据的离散程度分析:&/strong&数据的离散程度分析主要是用来反映数据之间的差异程度,常用的指标有方差和标准差。方差是标准差的平方,根据不同的数据类型有不同的计算方法。
&/p&&p&(4)&strong&数据的分布:&/strong&在统计分析中,通常要假设样本的分布属于正态分布,数据的正态性离群值检验,已知标准差Nair检验,未知标准差时,有Grubbs检验,Dixon检验,偏度-峰度法等。其中常用偏度-峰度法需要用偏度和峰度两个指标来检查样本是否符合正态分布。偏度衡量的是样本分布的偏斜方向和程度;而峰度衡量的是样本分布曲线的尖峰程度。一般情况下,如果样本的偏度接近于0,而峰度接近于3,就可以判断总体的分布接近于正态分布。&/p&&p&(5)&strong&绘制统计图:&/strong&用图形的形式来表达数据,比用文字表达更清晰、更简明。在SPSS软件里,可以很容易的绘制各个变量的统计图形,包括条形图、饼图和折线图等。 &/p&&p&2.假设检验:是数理统计学中根据一定假设条件由样本推断总体的一种方法。具体作法是:根据问题的需要对所研究的总体作某种假设,记作H0;选取合适的统计量,这个统计量的选取要使得在假设H0成立时,其分布为已知;由实测的样本,计算出统计量的值,并根据预先给定的显著性水平进行检验,作出拒绝或接受假设H0的判断。常用的假设检验方法有u—检验法、t检验法、χ2检验法(卡方检验)、F—检验法,秩和检验等。&/p&&p&3.相关分析:相关分析是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度,是研究随机变量之间的相关关系的一种统计方法。常见的有线性相关分析、偏相关分析和距离分析。相关分析与回归分析在实际应用中有密切关系。然而在回归分析中,所关心的是一个随机变量Y对另一个(或一组)随机变量X的依赖关系的函数形式。而在相关分析中 ,所讨论的变量的地位一样,分析侧重于随机变量之间的种种相关特征。例如,以X、Y分别记小学生的数学与语文成绩,感兴趣的是二者的关系如何,而不在于由X去预测Y。&/p&&p&4.方差分析(Analysis of Variance,简称ANOVA):又称“变异数分析”或“F检验”,是R.A.Fisher发明的,用于两个及两个以上样本均数差别的显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对结果形成影响的可控因素。&/p&&br&方差分析是从观测变量的方差入手,研究诸多控制变量中哪些变量是对观测变量有显著影响的变量。&br&&p&5.&b&回归分析&/b&:回归主要的种类有:线性回归,曲线回归,二元logistic回归,多元logistic回归。回归分析的应用是非常广泛的,统计软件包使各种回归方法计算十分方便。&/p&&p&一般来说,回归分析是通过规定因变量和自变量来确定变量之间的因果关系,建立回归模型,并根据实测数据来求解模型的各个参数,然后评价回归模型是否能够很好的拟合实测数据;如果能够很好的拟合,则可以根据自变量作进一步预测。&/p&&p&6.&b&聚类分析&/b&:聚类主要解决的是在“物以类聚、人以群分”,比如以收入分群,高富帅VS矮丑穷;比如按职场分群,职场精英VS职场小白等等。&/p&&br&&p&聚类的方法层出不穷,基于用户间彼此距离的长短来对用户进行聚类划分的方法依然是当前最流行的方法。大致的思路是这样的:首先确定选择哪些指标对用户进行聚类;然后在选择的指标上计算用户彼此间的距离,距离的计算公式很多,最常用的就是直线距离(把选择的指标当作维度、用户在每个指标下都有相应的取值,可以看作多维空间中的一个点,用户彼此间的距离就可理解为两者之间的直线距离。);最后聚类方法把彼此距离比较短的用户聚为一类,类与类之间的距离相对比较长。&br&&/p&&p&常用的算法k-means、分层、FCM等。&/p&&br&&p&7.&b&判别分析&/b&:从已知的各种分类情况中总结规律(训练出判别函数),当新样品进入时,判断其与判别函数之间的相似程度(概率最大,距离最近,离差最小等判别准则)。&/p&&p&常用判别方法:最大似然法,距离判别法,Fisher判别法,Bayes判别法,逐步判别法等。&/p&&p&注意事项:&/p&&p&a. 判别分析的基本条件:分组类型在两组以上,解释变量必须是可测的;&/p&&p&b. 每个解释变量不能是其它解释变量的线性组合(比如出现多重共线性情况时,判别权重会出现问题);&/p&&p&c. 各解释变量之间服从多元正态分布(不符合时,可使用Logistic回归替代),且各组解释变量的协方差矩阵相等(各组协方方差矩阵有显著差异时,判别函数不相同)。&/p&&p&相对而言,即使判别函数违反上述适用条件,也很稳健,对结果影响不大。&/p&&p&应用领域:对客户进行信用预测,寻找潜在客户(是否为消费者,公司是否成功,学生是否被录用等等),临床上用于鉴别诊断。&/p&&p&8.&b&主成分与因子分析&/b&:主成分分析基本原理:利用降维(线性变换)的思想,在损失很少信息的前提下把多个指标转化为几个综合指标(主成分),即每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,使得主成分比原始变量具有某些更优越的性能(主成分必须保留原始变量90%以上的信息),从而达到简化系统结构,抓住问题实质的目的。&/p&&p&因子分析基本原理:利用降维的思想,由研究原始变量相关矩阵内部的依赖关系出发,将变量表示成为各因子的线性组合,从而把一些具有错综复杂关系的变量归结为少数几个综合因子。(因子分析是主成分的推广,相对于主成分分析,更倾向于描述原始变量之间的相关关系)。&/p&&p&9.&b&时间序列分析&/b&:经典的统计分析都假定数据序列具有独立性,而时间序列分析则侧重研究数据序列的互相依赖关系。后者实际上是对离散指标的随机过程的统计分析,所以又可看作是随机过程统计的一个组成部分。例如,记录了某地区第一个月,第二个月,……,第N个月的降雨量,利用时间序列分析方法,可以对未来各月的雨量进行预报。&/p&&p&10.&b&决策树&/b&(Decision Tree):是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy
= 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。&/p&&p&常见的数据分析方法论大体的就是这些,结合案例多练习下基本上就明白是什么回事。&/p&&br&&p&&b&二、营销管理方法论:&/b&&/p&&p&1.SWOT:&/p&&p&&img src=&/a36287f76bfd1d02dcc7_b.png& data-rawwidth=&501& data-rawheight=&371& class=&origin_image zh-lightbox-thumb& width=&501& data-original=&/a36287f76bfd1d02dcc7_r.png&&如表1的小额信贷公司的SWOT分析:&/p&&p&&img src=&/9fe7b5bedc37a_b.png& data-rawwidth=&697& data-rawheight=&434& class=&origin_image zh-lightbox-thumb& width=&697& data-original=&/9fe7b5bedc37a_r.png&&2.4P:4P即产品、价格、促销、渠道;&/p&&img src=&/8f3cfc388ef8d_b.png& data-rawwidth=&700& data-rawheight=&408& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/8f3cfc388ef8d_r.png&&&p&3.PEST&/p&&p&&img src=&/0e1bae97ea8fa8dce9dd07_b.png& data-rawwidth=&784& data-rawheight=&456& class=&origin_image zh-lightbox-thumb& width=&784& data-original=&/0e1bae97ea8fa8dce9dd07_r.png&&如吉利收购沃尔沃例子&/p&&img src=&/ff09e1fda_b.png& data-rawwidth=&689& data-rawheight=&449& class=&origin_image zh-lightbox-thumb& width=&689& data-original=&/ff09e1fda_r.png&&&p&4.SMART&/p&&img src=&/0b27535edbc22beb8ac4a47addb4ce28_b.png& data-rawwidth=&602& data-rawheight=&307& class=&origin_image zh-lightbox-thumb& width=&602& data-original=&/0b27535edbc22beb8ac4a47addb4ce28_r.png&&&br&&p&5.5W2H&/p&&img src=&/ccbf8bcd7c7e89f27c4d0_b.png& data-rawwidth=&674& data-rawheight=&422& class=&origin_image zh-lightbox-thumb& width=&674& data-original=&/ccbf8bcd7c7e89f27c4d0_r.png&&&p&6.User behavior&/p&&img src=&/1a3ba76d1_b.png& data-rawwidth=&563& data-rawheight=&343& class=&origin_image zh-lightbox-thumb& width=&563& data-original=&/1a3ba76d1_r.png&&
重点包括两块,一块是统计分析方法论:描述统计、假设检验、相关分析、方差分析、回归分析、聚类分析、判别分析、主成分与因子分析、时间序列分析、决策树等;一块是营销管理常用分析方法论:SWOT、4P、PEST、SMART、5W2H、User behavior等。一、统计分析方…
作者:居里安同学&br&链接:&a href=&/question//answer/& class=&internal&&有哪些软件堪称「神器」,却不为大众所知? - 居里安同学的回答&/a&&br&来源:知乎&br&著作权归作者所有,转载请联系作者获得授权。&br&&br&:更新。&br&&br&&br&&br&&b&流量预警,多图杀猫!&/b&&br&&br&&br&&br&———————————————————————————————————————————&br&&br&&br&&br&&b&Part A&/b&&b&.人人都值得用&/b&&br&&br&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A//shark007.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Windows 10 codecs&i class=&icon-external&&&/i&&/a&:&/b&现名ADVANCED Codecs,原名Win7Codecs,早在五年前的《电脑爱好者》上就被推荐过的&b&视频万能解码包&/b&。专治Windows格式支持天生不足,装上这个解码包之后就不需要&b&任何别的&/b&视频播放器了,一个Windows Media Player就能通杀,安心又舒适。还不用担心某风的广告、某KM的劫持、某VLC的乱码、某Pot的高清不适应……&i&附直接下载地址:&a href=&///?target=http%3A///files/details/win7codecs.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Download ADVANCED Codecs&i class=&icon-external&&&/i&&/a&&/i&&br&&/li&&/ul&【Windows】&br&&img src=&/4abec00fb575c3513ab70cd_b.png& data-rawwidth=&502& data-rawheight=&317& class=&origin_image zh-lightbox-thumb& width=&502& data-original=&/4abec00fb575c3513ab70cd_r.png&&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A///files/details/icaros.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Icaros&i class=&icon-external&&&/i&&/a&:&/b&小插件,让资源管理器能够&b&显示所有视频格式缩略图&/b&。如果装了上面的ADVANCED Codecs应该已经自带(设置界面与单独安装版不同,截图为单独安装版)。&br&&/li&&/ul&【Windows】&br&&img src=&/f75e7b77722_b.png& data-rawwidth=&377& data-rawheight=&427& class=&content_image& width=&377&&&br&&br&&ul&&li&&b&&a href=&///?target=https%3A//raindrop.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Raindrop.io&i class=&icon-external&&&/i&&/a&:&/b&这个我自己试用了一个多月之后才来跟各位报告——它真的太好用啦!这是一个在线书签(我就是这么喜欢这种东西……)各种浏览器插件一个不少,书签分组和打标签功能一应俱全,手机客户端也很棒,完美支持中文,从各种来源导入也很方便,连接速度还很快,简直没有任何缺点。&br&&/li&&/ul&【Web / Chrome / Opera / Firefox / Android / iOS】&br&&img src=&/6ae17d7aeb80a95d2e739ea0d8983ace_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/6ae17d7aeb80a95d2e739ea0d8983ace_r.png&&&img src=&/ad0f456d796f2dc54b268_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/ad0f456d796f2dc54b268_r.png&&&br&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A///caesium/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Caesium&i class=&icon-external&&&/i&&/a&:&/b&神奇的图片压缩工具,让你的图片压缩后依旧清晰。默认的80%压缩率对于一般的照片,可以压缩20%到80%不等的体积,如果追求更高的压缩率可以选择50%压缩率,损失依然是肉眼几乎不可见的。想想吧,电脑里存了多年以来的照片,现在可能一下从800G变成了200G……这是多么激动人心的大好事啊!&/li&&/ul&【Windows】&br&&i&(另有用于无损压缩的CaesiumPH,可支持Windows / Mac / Linux)&/i&&br&&img src=&/27cd2e7b3c3cd42b9ba45f_b.png& data-rawwidth=&806& data-rawheight=&551& class=&origin_image zh-lightbox-thumb& width=&806& data-original=&/27cd2e7b3c3cd42b9ba45f_r.png&&&br&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A///link%3Furl%3DCJxTACklVTD82Ik4x9pn8jLJY5bhXTGto2tcXVB_2Ze3fa8BkYAUm2nfg-XVTJ7C& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Listary&i class=&icon-external&&&/i&&/a&:&/b&著名神器,资源管理器插件。&b&在任何目录下均可直接打字展开全局文件搜索&/b&,&b&在文件上传/下载时提供方便的全局搜索框&/b&,&b&在不想层层跳转到需要上传文件的目录时切换一下资源管理器窗口上传窗口就能自动定位&/b&……还有很多功能,请自行体验吧。&br&&/li&&/ul&&b&【Windows】&/b&&br&&img src=&/ef5cf5e9d1ad1cc3d8b140fceb14c42f_b.png& data-rawwidth=&370& data-rawheight=&436& class=&content_image& width=&370&&&br&&br&&br&&ul&&li&&a href=&///?target=http%3A///spacesniffer/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SpaceSniffer&i class=&icon-external&&&/i&&/a&:直观查看硬盘占用。&br&&/li&&/ul&【Windows】&br&&img src=&/6a25ba31cb69b564ea9e9d2c4b11e75a_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/6a25ba31cb69b564ea9e9d2c4b11e75a_r.png&&&br&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&分区助手&i class=&icon-external&&&/i&&/a&:&/b&国产良心软件的代表,用来调整分区&b&从未出过任何问题&/b&。&br&&/li&&/ul&【Windows】&br&&img src=&/a6c44ecf34c9dee21af2e_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/a6c44ecf34c9dee21af2e_r.png&&&br&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A///honeyview/cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Honeyview&i class=&icon-external&&&/i&&/a&:&/b&我见过最棒的图像查看器,外观简洁,运行极快,界面按钮不多不少正好合适,支持格式多,没有广告,不弹窗,简直把我能想到的优点都占全了。&br&&/li&&/ul&【Windows】&br&&img src=&/a1b22ec13e8269ab7eada0_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/a1b22ec13e8269ab7eada0_r.png&&&br&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A//sourceforge.net/projects/sendtosendto/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&sendtosendto&i class=&icon-external&&&/i&&/a&:&/b&可以为右键“发送到…”增加自定义程序,小工具带来大便捷。&br&&/li&&/ul&【Windows】&br&&img src=&/8dadb983be0b_b.png& data-rawwidth=&447& data-rawheight=&314& class=&origin_image zh-lightbox-thumb& width=&447& data-original=&/8dadb983be0b_r.png&&&br&&br&&br&&ul&&li&&b&&a href=&///?target=http%3A///lightqq/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&QQ轻聊版&i class=&icon-external&&&/i&&/a&:&/b&QQ应该是大多数人生活中不可或缺的一个工具,然而PC版广告着实太多,那么就用官方的轻聊版吧,尽管更新可能慢一点,但是&b&没有广告,而且没有广告,而且没有广告!&/b&&br&&/li&&/ul&【Windows】&br&&img src=&/84c5b9a713d793da8da826fbc133a43e_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/84c5b9a713d793da8da826fbc133a43e_r.png&&&br&&br&&br&&br&&ul&&li&&b&限时免费软件:&/b&&br&&/li&&/ul&&blockquote&&a class=& wrap external& href=&///?target=http%3A///& target=&_blank& rel=&nofollow noreferrer&&Giveaway of the Day&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Software Coupon Codes, Software Deals, Software Discounts&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///shop& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Daily giveaways and discounts&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//www./& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Giveaway Club&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///free-software-download& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Free Software Download&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&反斗限免&i class=&icon-external&&&/i&&/a&&/blockquote&&img src=&/37b659a8d7dd25f55cfc286_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/37b659a8d7dd25f55cfc286_r.png&&&img src=&/68a6fbc0ab8ca0946da7_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/68a6fbc0ab8ca0946da7_r.png&&&br&&img src=&/30bbf04b974be7971aed9513b88abf0b_b.png& data-rawwidth=&1366& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/30bbf04b974be7971aed9513b88abf0b_r.png&&&

我要回帖

更多关于 lt a3计划 gt 的文章

 

随机推荐