Browsed by
分类:中文

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
68 views
为什么 MySQL 使用多线程,而 Oracle 和 PostgreSQL 使用多进程?

为什么 MySQL 使用多线程,而 Oracle 和 PostgreSQL 使用多进程?

 

诸如Oracle这种商业数据库,基本都支持多种Process Models, Oracle默认是多进程。

根据Understanding MySQL Internals所说, MySQL一开始是Solaris上的 :

Thus in May of 1996 MySQL version 1.0 was released to a limited group, followed by a public release in October 1996 of version 3.11.1. The initial public release provided only a binary distribution for Solaris. A month later, the source and the Linux binary were released.

这本书也提及了,为什么MySQL用多线程:

Just as a good rider becomes one with the horse, Monty(MySQL author) had become one with the computer. It pained him to see system resources wasted. He felt confident enough to be able to write virtually bug-free code, deal with the concurrency issues presented by threads, and even work with s small stack. What an exciting challenge! Needless to say, he chose threads.

Postgres的原因可以在The design of Postgres中找到:

However, this approach requires that a fairly complete special-purpose operating system be built. In contrast, the process-per-user model is simpler to implement but will not perform as well on most conventional operating systems. We decided after much soul searching to implement POSTGRES using a process-per-user model architecture because of our limited programming resources.

总而言之,最根本的原因,主要是当年操作系统对线程支持不给力,而MySQL是特例,因为开发者喜欢挑战(不过事实上,那个时候的线程支持已经基本完善了。MySQL后于Oracle和POSTGRES)

至于如果要了解不同model间的优劣,强烈推荐Anatomy of a Database System第二章Process Models.

ORACLE在windows上也是多线程。
传统的unix系统,早期没有提供多线程,只有多进程。linux是最近的版本才加入多线程支持,以前一直都是多进程。windows很早就支持多线程,本地应用大部分也是多线程。因此oracle在windows上一直都是多线程,在unix上才是多进程。多进程的好处是,一个进程崩溃不会影响其他进程,多线程的好处是不需要共享内存这样的手段来访问数据库缓冲区。
这里不从历史原因说仅仅从技术上讲多线程与多进程有什么什么好处,因为自己曾经把postgres从多进程改为多线程,中间历尽苦难。
多线程多进程在linux的差别并不是很大,但是在Windows的性能差别就比较大,实际上oralce在Windows的版本也是多线程的。
多进程好处就是相对来讲稳定性较好,一个进程挂掉,重新拉起来就好,但是一个线程crash会导致整个进程都crash的.
一般操作系统教科书里的线程和进程的概念只是抽象理论上的,在不同OS里的实现显然有很大区别。
Windows上线程库很方便很高效,强于posix thread,而process的创建代价就很昂贵;而且这是由MS自己设计实现的,直接以系统API方式提供。
Unix上process model更简单,而multithreading基本就是一个雷区,Unix上几十年来的主流开发语言C/C++根本就不支持thread(直到C++11),即使后来有了posix thread,在移植性上也是开发人员的噩梦。
所以,抛开具体的DB产品不说,multitasking在Windows上一般首选thread,而Unix上肯定是用fork了。这也是为什么mysql基于solaris却采用thread会被认为是挑战。

请看一篇论文,stonebraker的数据库体系结构~
多进程实现起来方便~
多线程资源利用率高~

最好的体系结构是进程池和线程池~

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
140 views
iPad依旧是2017年全球最受欢迎的平板电脑

iPad依旧是2017年全球最受欢迎的平板电脑

研究公司 IDC 今天公布的数据显示,iPad 仍然是世界上最受欢迎的平板电脑,苹果 iPad 2017 年的销量已经超过它的竞争对手——三星和亚马逊两家平板产品去年的合并销量。

苹果在 2017 年总共销售了 4380 万部 iPad,IDC 估计三星和亚马逊年内分别出货 2490 万部和 1670 万部平板电脑。三星和亚马逊合计 4160 万台平板电脑,比 iPad 销售量低了 220 万台。

2017 年,苹果占据了平板电脑市场份额的 26.8%,这意味着去年销售的平板电脑中,每卖出去四台,就有一台是 iPad。苹果平板电脑市场份额同比上涨 2.5 个百分点。

上周,苹果公布了 2017 年第四季度 iPad 销售收入 58 亿美元,与去年同期相比增长了 6%。苹果 iPad 的平均销售价格为 445 美元,略高于去年同期的 423 美元,这无疑是 iPad Pro 价格更高所带来的结果。

2017 年第四季度全球平板电脑销量为 650 万台 (4Q17), 同比增长 10.3%。今年全年的平板电脑市场依然呈增长态势,但是这种增长已经显著放缓, 2017 年增长了 1.6%, 比 2016 年的 24% 增长率低很多。增长放缓的主要原因,是市面上多款品牌平板电脑的发布间隔拉长,旧机型积累太多,消费者和企业更多等待新一代产品问世。

同时,平板电脑产品绝大部分都挤压在高端市场推出,在市场的中间部分, 仍然非常缺少和需要强大的参与者。

苹果 iPad 在假日季度保持了稳固的领先地位, 通过其售价较低的 9.7 英寸 iPad 以及其最新的 iPad Pro,有力地推动了整个平板市场的收益。价格低廉的入门级 iPad 对消费者依旧有吸引力, 但彰显苹果重心的 ipad Pro 则具有在商业和教育领域的巨大潜力。

Amazon.com 能够在最后季度挤掉对手三星位居平板销量第二,主要因为这家在线巨头节假日期间提供了大幅折扣。低价策略颇具成效, 在最新一个季度, Amazon 采取了进一步的措施, 包括将其语音助理 Alexa 内置在新产品上, 并积极面向其他国家市场发售。

国产品牌华为保持着还不错的增长率。

让我们将焦点转移到今年,苹果和微软的新产品可能会让 2018 年平板市场顺利“回暖”。传闻苹果将推出至少一款新的 iPad Pro,窄边框、无 Home 键,并配备 Face ID。目前还没有消息证明苹果还会继续推出更低成本的 9.7 英寸 iPad 和 iPad mini。

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
153 views
MAC 快捷键

MAC 快捷键

常用的快捷键:
Ctrl + d        删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit;处理多行标准输入时也表示eof)
Ctrl + h        退格删除一个字符,相当于通常的Backspace键
Ctrl + u        删除光标之前到行首的字符
Ctrl + k        删除光标之前到行尾的字符
Ctrl + c        取消当前行输入的命令,相当于Ctrl + Break
Ctrl + a        光标移动到行首(Ahead of line),相当于通常的Home键
Ctrl + e        光标移动到行尾(End of line)
Ctrl + f        光标向前(Forward)移动一个字符位置
Ctrl + b        光标往回(Backward)移动一个字符位置
Ctrl + l        清屏,相当于执行clear命令
Ctrl + p        调出命令历史中的前一条(Previous)命令,相当于通常的上箭头
Ctrl + n        调出命令历史中的下一条(Next)命令,相当于通常的上箭头
Ctrl + r        显示:号提示,根据用户输入查找相关历史命令(reverse-i-search)次常用快捷键:
Alt + f         光标向前(Forward)移动到下一个单词
Alt + b         光标往回(Backward)移动到前一个单词
Ctrl + w        删除从光标位置前到当前所处单词(Word)的开头
Alt + d         删除从光标位置到当前所处单词的末尾
Ctrl + y        粘贴最后一次被删除的单词


以上就是快捷键了,在这里我只想揭露一些事情,这些快捷键都是emacs的快捷键!熟悉终端的同学应该知道,终端里可以设置快捷键的类型是vim还是emacs。当然了大多数的终端都用的emacs,因为啥自己想去吧。
在这里之所以又将这些东西提出来的原因是:mac os x虽然是图形界面,但是chrome,xcode啥的也支持这些快捷键!

1,修改文件名。Windows修改文件夹、文件名称的快捷键是F2,那么MAC对应的快捷键是什么呢?靠想一定想不到。

修改文件名称快捷键:Enter

2,在终端,方向键向上和向下可以很方便的调出使用过的命令。向左、向右可以一个字符一个字符地移动光标的位置。如果在windows,我们可以用home和end很方便的把光标跳到命令的起始位置和末尾,然而,mac pro 没有提供home和end键。用什么可以实现相应的目的呢?

跳到行首:ctrl + a
跳到行尾:ctrl + e

据说这些快捷键和emacs编辑器一样。

这两天经常用到的一个命令就是scp了,用来更新网站上的一些文件,例如图片。然而每次更新都要修改命令前面的文件名,整个命令有很长,按方向键要等上好几秒才跳到行首。终于被我找到了“快捷”的方法。

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
156 views
See what’s new in Firefox 56.0 Release !

See what’s new in Firefox 56.0 Release !

See what’s new in Firefox!

Release Notes tell you what’s new in Firefox. As always, we welcome your feedback. You can also file a bug in Bugzilla or see the system requirements of this release.

56.0

Firefox Release

September 28, 2017

Version 56.0, first offered to Release channel users on September 28, 2017

Today’s release gives Firefox users a better experience with features like Firefox Screenshots, Send Tabs, and more control over the browser with an improved (and searchable) preferences section. It also includes incremental performance improvements that move us closer to our biggest release of the year, coming in November.

We’d like to extend a special thank you to all of the new Mozillianswho contributed to this release of Firefox!

New

  • Launched Firefox Screenshots, a feature that lets users take, save, and share screenshots without leaving the browser
  • Added support for address form autofill (en-US only)
  • Updated Preferences
    • Added search tool so users can find a specific setting quickly
    • Reorganized preferences so users can more easily scan settings
    • Rewrote descriptions so users can better understand choices and how they affect browsing
    • Revised data collection choices so they align with updated Privacy Notice and data collection strategy
  • Media opened in a background tab will not play until the tab is selected
  • Improved Send Tabs feature of Sync for iOS and Android, and Send Tabs can be discovered even by users without a Firefox Account

Fixed

Changed

  • Replaced character encoding converters with a new Encoding Standard-compliant implementation written in Rust
  • Added hardware acceleration for AES-GCM
  • Updated the Safe Browsing protocol to version 4
  • Reduced update download file size by approximately 20 percent
  • Improved security for verifying update downloads

Developer

Developer Information

unresolved

  • Startup crash with RelevantKnowledge adware installed. Firefox Support has helpful instructions to remove it.
  • Startup crashes with 64-bit Firefox on Windows 7, for users of Lenovo’s “OneKey Theater” software for IdeaPad laptops. To fix this crash, please re-install 32-bit Firefox.
  • Users running Firefox for Windows over a Remote Desktop Connection (RDP) may find that audio playback is disabled due to increased security restrictions. Learn how to mitigate this issue until it is corrected in an upcoming release.
  • Due to a bug in Mac OS X High Sierra, fullscreen mode has some issues

附:

(来自Mozilla CEO的祝福)

体验崭新的 Firefox:快,只为更好!

今天,我们很高兴地向大家介绍全新的 Firefox 浏览器——Firefox Quantum。

首先,您肯定会注意到,全新的 Firefox 有着风驰电掣般的速度。在实际体验中,您感受到的速度比一年前的版本快一倍。与此同时,它的性能也更加强大。我们专注于探索用户如何利用互联网无拘无束地观看、收听、创作和娱乐,于是着手重新打造了 Firefox。我们很高兴能为大家提供这样一个有着全新体验的浏览器——现代、快速、高效。相信您也一定深有同感:这将是您未来互联网体验中的一大飞跃。

在您使用 Firefox 时,您也在为我们保护互联网为一项开放的、人人可用的全球公共资源作出贡献。作为一个独立的非营利组织,Mozilla 自 2003 年以来便一直致力于打造由用户自己控制在线生活的产品,并持续推动开放技术和公共政策,促进互联网健康发展。我们始终以您为本!

今天,我谨代表 Mozilla 全球社区,非常自豪地向您介绍崭新的 Firefox。快,只为更好!

Chris Beard
Mozilla 首席执行官

-end-

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
132 views
使用ToStringBuilder.reflectionToString实现toString方法

使用ToStringBuilder.reflectionToString实现toString方法

org.apache.commons.lang.builder.ToStringBuilder.reflectionToString(Object, ToStringStyle)是commons-lang里的一个类。

实现一个类的toString方法是一件无聊的事情。
使用ToStringBuilder/ReflectionToStringBuilder可以让生活更美好一点。

@Override
public String toString() {
// return ReflectionToStringBuilder.toStringExclude(this, “fileBody”);
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}

如果需要排除某些字段, 可以使用ReflectionToStringBuilder.toStringExclude方法。 (org.apache.commons.lang3.builder.ReflectionToStringBuilder.toStringExclude(Object, String…))

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
129 views
window.location window.location.href 跳转url区别

window.location window.location.href 跳转url区别

window.location window.location.href 跳转url区别

window.location=url

如果页面之前已经载入。则重新载入调用的是本地缓存

所有 资源状态貌似

  1. Status Code:
    200 OK (from cache)

window.location.href=url

页面跳转是载入新页面方式,调用资源缓存类型是根据服务器缓存机制调用,
资源状态基本是一下两种
  1. Status Code:
    200 OK
  1. Status Code:
    304 Not Modified
自己项目因为不清楚这两者区别 导致页面跳转都不能及时更新状态。
-end-
好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
156 views
美国人的“度假”和中国人的“旅游”

美国人的“度假”和中国人的“旅游”

旅游”和“度假”有区别么?其实还是有的,只是这个差别有点不大容易用语言文字形容出来,有点只可意会不可言传的意思。

所谓“度假”和“旅游”之辩,其实是个满有趣的话题。当然,华人喜“旅游”,美人喜“度假”,也不可太言之绝对。就好比人们所说“南人食米,北人食面”,也不意味着说南人就不可以食面,北人就不可以食米,只是个大概的爱好取向而已。

关于“旅游”和“度假”的话题,其实牵扯到每个人热衷的生活方式。中国人看老外,总会觉得老外的日子过得很是“滋润”和“潇洒”,不似中国人的生活好像永远是被一个“忙”字占据了一大半,另外的一小半也甩不掉一个“累”字。也难怪,“工作狂”好像是东方国家的一个共性,亚洲四小龙的经济奇迹哪个也离不开国民的辛勤工作,还不要说咱们一衣带水的邻邦日本,日本人工作起来更是带着股不要命的劲头,因此常常发生“过劳死”。

“旅游”和“度假”的微妙差别就在这了。不管是“下车照相,上车睡觉”的赶场式旅游,还是探索体验式的背包客式旅游,出门旅游在国内或多或少总是件“累人、累身、累神”的事情。而所谓的“度假”,听上去就好像是颇为西方上流社会的消遣手段,其实这或多或少是一种误解。美国人的生活方式毕竟和中国人不同,相比之下,应该说美国人更善于把工作和生活区分开来。无关阶层、无关穷富,一年到头可以没有“旅游”,但却不能不“度假”,这才是美国人能把生活过得有张有弛的关键。

简单从学校生活说起。美国每年的两个长假期,一个是暑假,另外一个就是圣诞节时候的寒假。忙了一整年的大学教授们会选择这个时候出门度假,英文叫做On Vacation。一般在这个时候,如果有事情给教授或是导师发邮件的话,在假期内得到邮件回复的可能性基本为零。教授们或许会查看私人邮箱的信件,但是绝对不会去碰学校的公务邮箱,也许有的教授们通常还会在邮箱里添加一个自动回复的设置(On vacation email automatic reply),邮箱在收到邮件时会自动回复说本人现在正在度假中等等。往往越是的名牌教授,便越是如此。一旦进入工作状态,便兢兢业业,细心回答学生提出的疑难问题,一旦进入休假状态,便两耳不闻窗外事,公私分明的很,这就是美国的大学教授。

说到度假,也就不得不提一下恐怕是美国首创的房车。当年的贺岁片《不见不散》里就有这样的镜头,说葛优就买过一辆房车,里面生活设施一应俱全,厨房、卫生间、客厅,麻雀虽小一应俱全。如果说纽约的摩天大楼代表美国的繁荣的话,那房车和牛仔就代表着美国人生活方式中最为传统的一面——自由、潇洒,无拘无束。在美国东部地区生活的人都知道,Interstate95(95号州际公路)是美东地区的交通大动脉,从最北部的缅因州美加边境上一直延伸到美国领土最东南端佛罗里达州的迈阿密,全长超过了3000公里。到了每年的冬天,在这条公路上就可以随处可见各式各样的房车,从北往南开,其实就是住在美国北部寒冷地带的房车一族们移居到温暖的南部地带,形成了房车大迁徙的壮观景象,也是I95公路上的一大景观。美国人的随性和潇洒也透过房车迁徙呈现的淋漓尽致,这恐怕在中国人的眼里看来,大概要算是近乎疯狂的举动了吧。

还有一次,笔者去麻省以南的Connecticut(康州)朋友家一起过圣诞节。康州是美国森林覆盖率最高的州之一,环境优美,也是全美有名的富人州。不少富翁们纷纷在康州购置别墅,每每到了圣诞节或是暑假的时候,就会有大批纽约华尔街高管们,或是华盛顿的高官们来到这里休闲度假。我的这个朋友在一所全美有名的贵族高中教中文。这所高中建在山中,绿树环绕,校园旁边就是一片森林湖泊。校园的设施更是了不得,光网球场地就几乎覆盖了一座小山丘,校园内更是开辟了多个冰球场、橄榄球场、足球场等等,是名副其实的富人学校。

不过最有趣的还不是学校,而是这座学校附近的范围内竟然没有手机信号的覆盖。问过了朋友才知道,原来不是电信公司不想在这个富人区内设置站点,而是这附近的住户们联合要求,坚决抵制通讯商的信号覆盖这一地区。原因是住户们认为,通讯网络、电磁信号会破坏这里的自然环境,破坏他们“度假”的气氛。如果有事情需要联络的话,请使用固定电话,至于手机这种“花花世界、纷纷扰扰”的“俗物”,对不起,立入禁止。这就是美国人的“度假”方式,如果放在国内,没有手机、甚至没有网络,这样的“度假”方式你受得了么?

“度假”是西方人的生活方式,也是西方人的生活哲学,这话一点也不夸张。

细心的话,可以比较一下咱们国家领导人和美国国家领导人的“休假时间安排”。即使忙如美国总统,每年两度的“度假”也必不可少。在美国人看来,总统也是人,总统也是需要私人时间的,就算国务再繁忙,国民也无权剥夺总统“度假”的权利。比如,就在2010年年底,就有不少美国媒体报道说,在大部分美国人因为经济不景气而节衣缩食,众多城市连续遭遇强暴风雪袭击之时,奥巴马总统却在夏威夷“享乐度假”。他的这次圣诞和元旦假期自12月23日开始,为期11天,还有人统计说总统先生这次度假竟然花费了美国纳税人的150多万美元。尽管假期中奥巴马活动低调,尽量避开媒体,还是被媒体拍到与家人和朋友一起参加打篮球、高尔夫球、保龄球及潜水运动,甚至和朋友烧烤的画面。

其实美国历任总统中最热衷于度假的还要属前总统小布什。布什家族在缅因州的海岸旁边拥有豪宅一座,笔者还曾开车从此路过。这里平时大门紧锁,恐怕只有布什家族在炎热的夏季才会偶尔从美国中部的华盛顿来到最北部的缅因州避暑。而身为西部牛仔的小布什最钟爱的度假胜地,毫无疑问还是他的老家——牛仔的发源地——德克萨斯州。在美国总统中,据说肯尼迪喜欢驾驶私人游艇,老布什喜欢待在缅因州的海边别墅,克林顿留恋麻省的马撒葡萄园岛,小布什则喜欢在德州的农场上过老式牛仔生活,这也算是美国总统们的一段段轶事了。

说来还真是有趣的很,就在2001年“9.11”事件前夕,小布什就整个8月份都泡在了德州的农场度假。据说当时还有美国媒体做了民调,显示55%的美国公民认为小布什的30天休假太长了,认为他们的总统“太不把白宫的工作当回事儿了”。不过,小布什似乎并没有把这档子事太放在心上。就在8月底,小布什还一边打高尔夫球一边与记者大谈中东冲突,他大声呼吁:“我要提醒两国人民,你们一定要树立停止暴力的决心。我们也呼吁中东地区的所有领导人,尽一切努力停止暴力冲突。好了,我该打球了。”

十几天后,“9.11事件”爆发了……

看来这美国式的“度假”放在中国,还真的难以让人接受,显得和中国人的认知观念格格不入。细微之处可以追溯到中美两国人的生活习惯、消遣方式,中国人远远达不到美国佬那样的“逍遥”程度。东方式的生活娱乐方式的确和西方存在鸿沟。

而这鸿沟其实完全可以把它置于放大镜下,从“精神文明”上升到“政治文明”的层次。每逢盛夏寒冬,美国总统可以放下国事,从大众视野中消失,公然公开的去潇洒度假,也不会受到太多的舆论指责,这要是在中国简直是天方夜谭。逢年过节,我们的领导们都要下基层,慰问群众,正所谓体恤百姓,与民同乐。老百姓过节休假,领导们可是忙得不可开交,下矿井,去农村,到基层,让人看着都心疼,可这是定例,也是中国人习惯的政治运作模式。倘若某一天,记者们也拍到胡主席、温总理和家人吃烧烤、打高尔夫球……这实在有违“中国国情”,不想也罢,不想也罢。

-end-

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
203 views
出租司机的快乐

出租司机的快乐

今晚下班,打车碰到一个很乐天的老司机。

其时大概22:30;司机笑言,他本已打算空车回家休息了,不过是碰着运气又到了公司楼下,按下滴滴的“顺路”按钮,不多久就匹配到了和他家距离相当近的我的目的地订单。

按照常规理解,出租车司机做一休一,该是 7:00上班,第二天7:00交车给下一位合作伙伴。

他却是7:00上班,大概22:00回家休息,今天已到22:30还在拉活,是一位他言今天不好,还没有拉到既定目标-1000块。

聊天知道,他的一天收入支出: 份子钱400块,油钱200左右,收入1000左右收工,大概解决每日400,每月15天,大概6000块。

当日我单前,收入917元,订单价打表61,合计 978,收工回家。

这人很乐观,也很健谈,一路聊天;说起,不会熬夜;对身体不好,夜间容易出事故,治安安全也可能出问题;说是年轻时挺拼命,现在年纪大了,都看开了,不会再狠搏命了。他言说儿子22岁,正在实习,房子已买,接下来就是结婚娶妻生子了。

钱不是一天挣完的,身体才是最宝贵的财富,不论对自己、对家人,可是又有几人能够真正看透、而毫不透支自己年轻有力的身体呢。

生活不易,开心,尽力,一路走好。

–end–

 

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
299 views
左耳朵耗子给出的学习指南

左耳朵耗子给出的学习指南

你是否觉得自己从学校毕业的时候只做过小玩具一样的程序?走入职场后哪怕没有什么经验也可以把以下这些课外练习走一遍(朋友的抱怨:学校课程总是从理论出发,作业项目都看不出有什么实际作用,不如从工作中的需求出发)

建议:

· 不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。

· 回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。

· 一定要动手,例子不管多么简单,建议至少自己手敲一遍看看是否理解了里头的细枝末节。

· 一定要学会思考,思考为什么要这样,而不是那样。还要举一反三地思考。

注:你也许会很奇怪为什么下面的东西很偏Unix/Linux,这是因为我觉得Windows下的编程可能会在未来很没有前途,原因如下:

· 现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备iOS或Android。Windows的图形界面不吃香了。

· 越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高了。

· 微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows编程革命史

所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。

启蒙入门

1、 学习一门脚本语言,例如Python/Ruby

可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:

· 处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)

· 遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果

· 跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量

· 学会用各种print之类简单粗暴的方式进行调试

· 学会用Google (phrase, domain, use reader to follow tech blogs)

为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。

2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具

· Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。

· Source Insight (或 ctag)

使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。

3、 熟悉Unix/Linux Shell和常见的命令行

· 如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧

· 一定要少用少用图形界面。

· 学会使用man来查看帮助

· 文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …

· 学会使用一些文本操作命令 sed/awk/grep/tail/less/more …

· 学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…

· 了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息

· 了解正则表达式,使用正则表达式来查找文件。

对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。

4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)

未来必然是Web的世界,学习WEB基础的最佳网站是W3School

· 学习HTML基本语法

· 学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)

· 学会用  Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。

· 学习使用 Javascript操纵HTML元件。理解DOM和动态网页(http://oreilly.com/catalog/9780596527402) 网上有免费的章节,足够用了。或参看 DOM 。

· 学会用  Firefox + Firebug 或 chrome 调试 Javascript代码(设置断点,查看变量,性能,控制台等)

· 在一台机器上配置Apache或 Nginx

· 学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。

· 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)

· 跟完一个名校的网络编程课程(例如:http://www.stanford.edu/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上

· 学习一个 javascript库(例如jQuery 或 ExtJS)+  Ajax (异步读入一个服务器端图片或者

· 做个小网数据库内容)+JSON数据格式。

· HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)

· 站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)

· 买个域名,租个空间,做个自己的网站。

进阶加深

1、 C语言和操作系统调用

· 重新学C语言,理解指针和内存模型,用C语言实现一下各种经典的算法和数据结构。推荐《计算机程序设计艺术》、《算法导论》和《编程珠玑》。

· 学习(麻省理工免费课程)计算机科学和编程导论

· 学习(麻省理工免费课程)C语言内存管理

· 学习Unix/Linux系统调用(Unix高级环境编程),,了解系统层面的东西。

o 用这些系统知识操作一下文件系统,用户(实现一个可以拷贝目录树的小程序)

o 用fork/wait/waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。多进程多进程购票的程序。

o 用signal/kill/raise/alarm/pause/sigprocmask实现一个多进程间的信号量通信的程序。

o 学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)

o 学会使用makefile来编译程序。(参看我的《跟我一起写makefile》)

o IPC和Socket的东西可以放到高级中来实践。

· 学习Windows SDK编程(Windows 程序设计 MFC程序设计

o 写一个窗口,了解WinMain/WinProcedure,以及Windows的消息机制。

o 写一些程序来操作Windows SDK中的资源文件或是各种图形控件,以及作图的编程。

o 学习如何使用MSDN查看相关的SDK函数,各种WM_消息以及一些例程。

o 这本书中有很多例程,在实践中请不要照抄,试着自己写一个自己的例程。

o 不用太多于精通这些东西,因为GUI正在被Web取代,主要是了解一下Windows 图形界面的编程。@virushuo 说:“ 我觉得GUI确实不那么热门了,但充分理解GUI工作原理是很重要的。包括移动设备开发,如果没有基础知识仍然很吃力。或者说移动设备开发必须理解GUI工作,或者在win那边学,或者在mac/iOS上学”。

2、学习 Java

·  Java 的学习主要是看经典的Core  Java 《 Java 核心技术编程》和《 Java编程思想》(有两卷,我仅链了第一卷,足够了,因为 Java的图形界面了解就可以了)

· 学习JDK,学会查阅 Java API Doc http://download.oracle.com/ javase/6/docs/api/

· 了解一下 Java这种虚拟机语言和C和Python语言在编译和执行上的差别。从C、 Java、Python思考一下“跨平台”这种技术。

· 学会使用IDE Eclipse,使用Eclipse 编译,调试和开发 Java程序。

· 建一个Tomcat的网站,尝试一下JSP/Servlet/JDBC/MySQL的Web开发。把前面所说的那个PHP的小项目试着用JSP和Servlet实现一下。

3、Web的安全与架构

· 学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了。

· 学习Web开发的安全问题(参考新浪微博被攻击的这个事,以及Ruby的这篇文章

· 学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM

· 学习Web的静态页面缓存技术。

· 学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。

实践任务:

o 使用HTML5的canvas 制作一些Web动画。

o 尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。

o 把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站

4、学习关系型数据库

· 你可以安装MSSQLServer或MySQL来学习数据库。

· 学习教科书里数据库设计的那几个范式,1NF,2NF,3NF,……

· 学习数据库的存过,触发器,视图,建索引,游标等。

· 学习SQL语句,明白表连接的各种概念(参看《SQL  Join的图示》)

· 学习如何优化数据库查询(参看《MySQL的优化》)

· 实践任务:设计一个论坛的数据库,至少满足3NF,使用SQL语句查询本周,本月的最新文章,评论最多的文章,最活跃用户。

5、一些开发工具

· 学会使用SVN或Git来管理程序版本。

· 学会使用JUnit来对 Java进行单元测试。

· 学习C语言和 Java语言的coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。

· 推荐阅读《代码大全》《重构》《代码整洁之道

高级深入

1、C++ /  Java 和面向对象

我个人以为学好C++, Java也就是举手之劳。但是C++的学习曲线相当的陡。不过,我觉得C++是最需要学好的语言了。参看两篇趣文“C++学习信心图” 和“21天学好C++

· 学习(麻省理工免费课程)C++面向对象编程

· 读我的 “如何学好C++”中所推荐的那些书至少两遍以上(如果你对C++的理解能够深入到像我所写的《C++虚函数表解析》或是《C++对象内存存局)()》,或是《C/C++返回内部静态成员的陷阱》那就非常不错了)

· 然后反思为什么C++要干成这样, Java则不是?你一定要学会对比C++和 Java的不同。比如, Java中的初始化,垃圾回收,接口,异常,虚函数,等等。

实践任务:

o 用C++实现一个BigInt,支持128位的整形的加减乘除的操作。

o 用C++封装一个数据结构的容量,比如hash table。

o 用C++封装并实现一个智能指针(一定要使用模板)。

· 《设计模式》必需一读,两遍以上,思考一下,这23个模式的应用场景。主要是两点:1)钟爱组合而不是继承,2)钟爱接口而不是实现。(也推荐《深入浅出设计模式》)

实践任务:

o 使用工厂模式实现一个内存池。

o 使用策略模式制做一个类其可以把文本文件进行左对齐,右对齐和中对齐。

o 使用命令模式实现一个命令行计算器,并支持undo和redo。

o 使用修饰模式实现一个酒店的房间价格订价策略——旺季,服务,VIP、旅行团、等影响价格的因素。

· 学习STL的用法和其设计概念  – 容器,算法,迭代器,函数子。如果可能,请读一下其源码。

· 实践任务:尝试使用面向对象、STL,设计模式、和WindowsSDK图形编程的各种技能

o 做一个贪吃蛇或是俄罗斯方块的游戏。支持不同的级别和难度。

o 做一个文件浏览器,可以浏览目录下的文件,并可以对不同的文件有不同的操作,文本文件可以打开编辑,执行文件则执行之,mp3或avi文件可以播放,图片文件可以展示图片。

· 学习C++的一些类库的设计,如: MFC(看看候捷老师的《深入浅出MFC》) ,Boost, ACE,  CPPUnit,STL (STL可能会太难了,但是如果你能了解其中的设计模式和设计那就太好了,如果你能深入到我写的《STL string类的写时拷贝技术》那就非常不错了,ACE需要很强在的系统知识,参见后面的“加强对系统的了解”)

·  Java是真正的面向对象的语言, Java的设计模式多得不能再多,也是用来学习面向对象的设计模式的最佳语言了(参看 Java中的设计模式)。

· 推荐阅读《Effective  Java》 and 《 Java解惑》

· 学习 Java的框架, Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是学习 Java的设计,如IoC等。

·  Java的技术也是烂多,重点学习J2EE架构以及JMS, RMI, 等消息传递和远程调用的技术。

· 学习使用 Java做Web Service (官方教程在这里

· 实践任务:尝试在Spring或Hibernate框架下构建一个有网络的Web Service的远程调用程序,并可以在两个Service中通过JMS传递消息。

C++和 Java都不是能在短时间内能学好的,C++玩是的深, Java玩的是广,我建议两者选一个。我个人的学习经历是:

· 深究C++(我深究C/C++了十来年了)

· 学习 Java的各种设计模式。

2、加强系统了解

重要阅读下面的几本书:

· 《Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。

· 《Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别。

· 《TCP/IP详解 卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。

实践任务:

o 理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。

o 写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)。

o 写一个简易的HTTP服务器。

· 《Unix网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC…… 这些技术好像有点老掉牙了,不过还是值得了解。

实践任务:

o 主要实践各种IPC进程序通信的方法。

o 尝试写一个管道程序,父子进程通过管道交换数据。

o 尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组。

· 学习《Windows核心编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(Event,  信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通。

· 实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把前面写过的那个简易的HTTP服务用线程池实现一下。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键。

· 有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)

· 实践任务:通过以上的所有知识,尝试

o 写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请注意网络传输最大单元MTU)

o 了解BT下载的工作原理,用多进程的方式模拟BT下载的原理。

3、系统架构

· 负载均衡。HASH式的,纯动态式的。(可以到Google学术里搜一些关于负载均衡的文章读读)

· 多层分布式系统 – 客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层结构。

· CDN系统– 就近访问,内容边缘化。

· P2P式系统,研究一下BT和电驴的算法。比如:DHT算法

· 服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份。

· 虚拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署。

· 学习Thrift,二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。

· 学习Hadoop。Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。

了解NoSQL数据库(有人说可能是一个过渡炒作的技术),不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的有:MemcacheDB、Redis、

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
264 views
山东认定14个“无传销城市” 不符合标准就撤销 

山东认定14个“无传销城市” 不符合标准就撤销 

山东认定14个“无传销城市” 不符合标准就撤销

李文星溺水死亡事件发生后,引发社会广泛关注,反映强烈。记者从省工商局了解到,目前山东已有枣庄等14市被认定为“无传销城市”。今年下半年,将适时做好“无传销城市”创建扫尾工作,并探索建立无传销城市动态化管理机制。

建立传销人员黑名单档案

从2007年起,山东相继开展创建“无传销社区(村)”及“无传销街道(乡镇)”工作,取得了显著成效。到了2013年底的时候,全省已有“无传销社区(村)”2.4万个、“无传销街道(乡镇)”1667个。

2014年初,在省综治委统一领导下,山东省全面启动山东创建无传销城市工作。

在创建过程中,许多城市通过加强对暂住人口和出租房屋管理,建立传销人员黑名单基础档案,对参与传销人员心理矫正和教育挽救,从源头管控,防止了传销违法犯罪在城市的滋生蔓延。

2016年3月,枣庄、东营、泰安、日照、莱芜等5市被认定为我省第一批无传销城市;同年12月,济南、青岛、淄博、烟台、潍坊、济宁、临沂、滨州、菏泽等9市被认定为第二批无传销城市。对已认定的无传销城市原则上每两年复审一次,因出现问题不符合创建标准的及时撤销并通报。

很多网络传销本质是非法集资

如今,网络传销变得更具隐蔽性、欺骗性。此外,很多网络传销活动只是把传销作为手段,本质是从事非法集资、诈骗等犯罪活动,同时伴生着非法拘禁、传授犯罪方法、伪造政府公文等其他违法犯罪行为。

所以,当前打击传销形势依然十分严峻,传销违法犯罪活动尤其是网络传销还没有得到全面根本的遏制。山东省将加大开展防范传销宣传和涉及传销信息清理屏蔽等工作力度,要求互联网平台,强化论坛、贴吧、博客、微博等板块管理,加强内容审核,定期对网站内涉嫌传销的信息进行清理移除,对发布者进行警告、封号等必要的内部处理,杜绝涉嫌传销信息。

“今年下半年,将适时做好‘无传销城市’创建扫尾工作,并探索建立无传销城市动态化管理机制。”省工商局局长李关宾表示,“针对新型传销方式和手段,将加大线上线下打击力度,加强对网络传销案件的查办。”对于网络传销,将坚持“露头就打”和“打早打小”,强化“打、防、控、管”等各项措施。

来源: 山东认定14个“无传销城市” 不符合标准就撤销–读图–人民网

跳至工具栏