Browsed by
分类:English

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
117 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...
216 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...
100,311 views
3fcode.com judgement/review in easycounter.com

3fcode.com judgement/review in easycounter.com

Today (Jan.27th), when I surf on the internet, I occasionally find some information about the current status of the blog.

My surfing link is – https://cn.bing.com/search?q=%203fcode&qs=n&form=QBRE&sp=-1&pq=3fcode&sc=8-6&sk=&cvid=20B6EFB46D3D41E8AE4AA8DD2785C494 .

In the second record in the first search result page, the 3fcode.com is showed as below:

3fcode.comMr.SirBlog – 让自己不一样

3fcode.com is tracked by us since August, 2017. Over the time it has been ranked as high as 1 897 499 in the world. All this time it was owned by Vvv Jia …

I was a little surprised , as I didn’t expect some other website had collected and judged my blog.

After reading the detail information the easycounter site gives, I should say, it’s kind of fair, and described a good brief info.

Here I want to say one by one:

Rank info:

Global rank 1 897 499
Daily visitors 1.04K
Daily pageviews 1.04K
Pageviews per user 1
Rating  1 Star –
Status Online
Latest check

Countable Data Brief

3fcode.com is tracked by us since August, 2017. Over the time it has been ranked as high as 1 897 499 in the world. All this time it was owned by Vvv Jia, it was hosted by GoDaddy.com LLC.

3fcode has the lowest Google pagerank and bad results in terms of Yandex topical citation index. We found that 3fcode.com is poorly ‘socialized’ in respect to any social network. According to Google safe browsing analytics, 3fcode.com is quite a safe domain with no visitor reviews.

Worldwide Audience

It seems that traffic on this site is too low to be displayed, sorry.

Traffic Analysis

3fcode.com has 1.04K visitors and 1.04K pageviews daily.

Pageviews

 Subdomains Traffic Shares

3fcode.com has no subdomains with considerable traffic.

SEO Stats

3fcode.com is not yet effective in its SEO tactics: it has Google PR 0. It may also be penalized or lacking valuable inbound links.

Ranks

Domain Registration Data

3fcode.com domain is owned by Vvv Jia and its registration expires in 2 months.

General

GeneralGet more 3fcode.com whois history

Vvv Jia

Owner since August 03, 2017

2 months left

Expires on April 16, 2018

9 months old

Created on April 16, 2017

9 months ago

Changed at April 16, 2017

Registrar and Status

Registar GODADDY.COM, LLC
Status clientDeleteProhibited

clientRenewProhibited

clientTransferProhibited

clientUpdateProhibited

In Other TLDs

No data

Social Engagement

It seems 3fcode.com has no mentions in social networks.

Server Information

3fcode.com uses WordPress CMS and is hosted by GoDaddy.com, LLC.

IP WhoisGet more 3fcode.com server history

  • GoDaddy.com, LLC
  • 166.62.30.xxxIP address

Server Technologies

  • Apache HTTP ServerBackend server
  • WordPressCMS

Safety

Safety status of 3fcode.com is described as follows: Google Safe Browsing reports its status as safe.

Get more 3fcode.com reviews

Other info

MyWOT

Overall reputation Unknown
Trustworthiness Unknown
Privacy Unknown
Child safety Unknown

Google Safe Browsing

Website status Safe
Status ok

User reviews

Reputation Unknown

3fcode.com review given by easycounter.com

To create 3 Fcode review we checked 3fcode.com reputation at lots of sites, including Siteadvisor and MyWOT. Unfortunately, we did not find sufficient information whether 3fcode is safe for children or does not look fraudulent. We would describe it as legit.

Vvv Jia still needs more reviews of their project as there is too little data to define the site’s trustworthiness. Please be warned that to describe security status of 3fcode.com we use data openly available on the Web, thus we cannot guarantee that no scam sites might have been mistakenly considered legit and no fraud or PC issues may occur in this regard. But usually the crowdsourced data we have is pretty accurate. Let’s see it below.

-end-

 

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
591 views
The 100 essential websites

The 100 essential websites

Here we go again … our latest list of the 100 best websites sees short attention spans, the rise of Twitter, more browser wars and celebrity gossip sites setting the news agenda

Andy Warhol talked of a time when everyone would be famous for 15 minutes. With hindsight, however, he might have wanted to revise that down to about five minutes. On today’s web, phrases such as “here today, gone tomorrow” seem to involve ridiculously long timescales.

People who moaned that blogging represented a move to shorter attention spans – 250-to-350-word posts rather than 1,000-word stories – have now seen blog posts start to look big and, frankly, old-fashioned. Today’s trendsetters are using “microblogging” sites such as TumblrPosterous and Soup.io, which are taking the opportunity for creative “borrowing” to new heights.

But the smash hit of 2009 has been (apologies: I know this will cause pain) Twitter, where 1,000-word stories are reduced to 140-character tweets. Short attention spans R us.

Twitter’s rapid growth and open programming interface have given the site a wide impact. Hundreds, possibly thousands, of ancillary sites and services have been launched to help Twitter users post pictures, track followers, or – more usefully, from a commercial point of view – find out what the “hive mind” is thinking. Twitterfall is just one example. More recently, Listorious stepped in to make it easier to find and explore lists made using Twitter’s new list feature, while The Twitter Tim.es cleverly turned selected tweets into a personalised newspaper. How many of these sites will survive is, of course, open to question. Some are less like standalone sites than parasites.

Major web players such as Facebook, Google, and Microsoft also got involved. Both Google and Microsoft signed deals for Twitter searches, while Facebook paid it the ultimate compliment of more or less copying its service. Or, perhaps, copying FriendFeed, which many users link to both Twitter and Facebook.

Facebook, while far from new, was another big player in 2009, reaching more than 350 million users. And through Facebook Connect, it has extended its presence across the web. Once you have a Facebook identity – and you must have one, mustn’t you? – then you can use it to access a growing number of sites and services. And that’s not necessarily a bad thing. The web might be a kinder, more polite place if people said things under their real names, which is what Facebook’s about.

Those in search of their five minutes of fame or, more likely, five minutes of fun fun fun, headed for YouTube. Although it has been challenged by rivals such as Vimeo and Microsoft’s Soapbox (RIP), its dominance has not been seriously threatened. Only the pornographers have been able to build much of a following outside YouTube.

Which is not to say that YouTube owns the web video market. The BBC has made a huge impact with its iPlayer catchup service, and in the US, Hulu has enjoyed great success with TV series and movies. Of course, both sites are showing videos that YouTube would love to offer, at a profit, and it will be interesting to see how this plays out.

Music has been a significant player in the growth of the web since Napster, and its influence continues to grow. Spotify has made the biggest impact this year, gaining mindshare lost by Last.fm and Pandora. Meanwhile, Pitchfork has expanded its role as the web’s authoritative music magazine, and The Hype Machine came to prominence as a source of instant erudition by tracking the music blogs.

Almost finally, it may be that we are seeing the return not just of the browser wars but of the search engine wars as well. Google still rules the world, but in Bing, it now has a competitor that does some things better and has, in Microsoft, an owner with deep pockets. Alas, Bing also does many things a lot worse.

Possibly the most contentious part of this year’s list is celebrity gossip. The argument against would be summed up by a Wikipedian in two words: “not notable”. The argument for is that sites such as Perez Hilton and AOL’s TMZ are now helping to drive the news agenda. Even if you aren’t interested in Michael Jackson’s death, Tiger Woods’s affairs or whatever, this stuff has become impossible to avoid. This is one case where many people would prefer the web’s short attention span to be even shorter.

Blogging/microblogging

Now easier than falling off a log.

Tumblr Multimedia microblogging plus Twitter-style following.

Posterous Goes from instant microblogging into lifestreaming.

Soup A “super-easy” tumblelog for scrapbook keeping and lifestreaming.

Blogger Fast way to start blogging; training wheels for WordPress.

Bloglines For reading web feeds. Smart and clean.

WordPress Free, and most importantly spam-free, blogging.

Browsers

Do we all need five browsers nowadays?

Chrome Now here for Mac, and anticipating future world domination via Chrome OS.

Firefox  Everyone’s favourite is under attack from all sides.

Maxthon Based on IE code. If it stays “hip in China” it could reach a large global audience.

Cartoons

Everyone needs some relaxation. This is a visual one.

Dilbert It wouldn’t be so funny if it wasn’t so true.

XKCD Stick-figure strip poking fun at geek topics and relationships.

Celebrity gossip

No one needs this stuff, but it’s starting to drive world news and web traffic.

TMZ Rose to fame when it broke news of Michael Jackson’s death.

Perez Hilton Among the bitchiest of goss sites and often involved in ‘interesting’ celeb baiting.

Gawker New York-based media alert and gossip blog network, with fingers in many pies.

Create/collaborate

With all of us now living more of our lives online, these sites just scratch the surface.

Netvibes Your to-do lists, news, weather and photos on one page.

Scribd Shares 35bn words online: they can’t all be wrong.

Slideshare Like YouTube for PowerPoint decks.

Zamzar Useful: converts files from one format to another.

Film

Advertisement

Sites to see before heading for the latest blockbuster at your local multiplex.

IMDb The most authoritative site about all things film and TV, which is why Amazon bought it.

Rotten Tomatoes Collects online film reviews, aggregates a score out of 100 and rates the film “fresh” or “rotten”.

/Film Said to be the favourite film blog of directors Jason Reitman and Darren Aronofsky, /Film features news, reviews, interviews and a special UK update each Friday.

Cinematical Terrific film blog with a Hollywood focus.

Gaming

A field where handheld, bedroom and Flash games are becoming mainstream

Eurogamer Reportage, with breadth, if not always depth.

The Independent Gaming Source  A great place to pick up on tomorrow’s breakthrough Xbox Live Arcade, WiiWare and PSN hits.

Pocket Gamer Still by far the best site on handheld gaming.

Gamasutra  Where professional games creators hang out, and sometimes get jobs

Geek squad

Here be programmers …

Stack Overflow Where programmers gather to try to solve their problems.

The Daily WTF Daily dispatches from the coding warzone.

Joel On Software Essays by a former Microsoftie, now head of Fog Creek Software.

Government/public services/politics

Recycle Now Winner after a slight false start of the government’sShow Us A Better Way competition. What can you recycle close by?

British and Irish Legal Information Institute A database of laws. Only survives hand-to-mouth on voluntary donations; where’s yours?

What Do They Know? Makes filing a Freedom Of Information request as easy as sending an email. Too easy, some in power think.

Upmystreet All the detail on your area you could ever want.

They Work For You A site set up by volunteers to keep tabs on our elected members of parliament – and our unelected peers.

Link economy

Advertisement

With millions of links on the web, we all need sites for sharing the best ones.

Digg Still the reigning champion of where the latest internet memes are though not always polite.

Delicious The thinking person’s link aggregation site. We use it.

Popurls Aggregating the aggregators: the web in a window.

Metafilter Living if isolated proof that a site can be successful without pictures or video, and can also host thoughtful conversations.

Slashdot Now looking venerable and old, but “News for nerds” site with a jokey name (/.) still attracts a big, and often knowledgable, audience.

Techmeme Technology news chosen by computer, though it’s now refined by human editors.

Location, location

Services like these blossom with a mobile phone that can access the internet.

Dopplr “Share your future travel plans with friends and colleagues”, then find out if others will be there too.

Qype Localised search for pubs, restaurants, etc; also a bit of a social network.

Loopt “Transforms your mobile phone into a social compass”.

Brightkite A “location-based social network”.

Maps

The flipside of location-based services: seeing where you are.

OpenStreetMap A rights-free map created by people like you. Remarkably detailed and precise.

Google Maps Street View Virtual tourism with practical applications, too.

Money/finance/consumer fightback

We all need someone on our side.

Money Saving Expert Does what it says on the tin.

Say No to 0870 Direct-dial numbers, not expensive national-rate ones.

Consumer Direct Government site for consumers.

Music

Last.fm British-made, now CBS-owned, music recommendation station.

Amazon Now has its own MP3 store in the UK as well as the US.

Hype Machine Picks up the latest news by tracking the music blogs.

Pitchfork The magazine of the music web, now with video, and lots of great lists.

Offbeat

Advertisement

The Onion Still the satirical newspaper of record. If it’s not in the Onion, it’s probably happened.

B3TA Beyond classification; its forum has spawned many memes … and more than its fair share of trolls.

Lolcats respite from stress with daft cCaptioned cats and other animals.

News Lite respite from stress with daft cGreat source of news that’s much too trivial to print.

Oddee Setting an internet standard for sets of curious and mildly amusing pictures, not cats.

PostSecret Notes of secrets sent by people who want them posted. So they are.

Passive-Aggressive Notes Would it be too much trouble for you to have a look?

Photography

Flickr The granddaddy of photo-sharing sites.

Picnik Photo editing in your browser.

Picasa Google’s photo organisation and editing tool.

DPreview The web’s best guide to cameras. Now Amazon owned.

Reference

CIA Factbook All the data you need on pretty much anywhere.

Wikipedia en.wikipedia.com the gradually growing user-edited encyclopaedia is Still a first port of call on most topics.

Internet Archive/Wayback Machine The web in aspic. Useful for research into how the web used to look.

Metacritic Aggregates reviews of movies and DVDs, TV programmes, music and games

Wikileaks Anonymous source of a huge range ofleaked documents. If you dig, there’s something important there

Search

Google dominates but Bing is challenging, and Yahoo and Microsoft are left in the dust.

Google So good it’s become almost synonymous with search.

Bing  Microsoft would like you to bing it, but its “decision engine” still has a long way to go.

Wolfram Alpha An “answer engine”that delivers when it has the data, but not that easy to use.

Social software

Two years ago it was nascent; now it’s embedded in our culture. Chances are high you’re a member of at least one, and perhaps all, of these sites.

Facebook Still changing and growing to become not just your home on the web, but your ID provider.

LinkedIn Contact sports for business users.

Ning One place to start your own social network – just as Madonna did – though it has yet to really take off.

Travel

Expedia Still the daddy when it comes to travel sites, and particularly good if you can bundle a flight with a hotel and other services.

TripAdvisor Essential reading for the user reviews of hotels, but it now covers much more.

Laterooms Specialises in hotel discounts.

Twitter, and associated

Advertisement

Twitter has proved itself over and over this year, from the Chinese earthquke to the Mumbai attacks to the Madoff fraud as a vector for news.

Twitter The ur-site, where you can create an identity (or several).

Twitter Tim.es Creates your personal newspaper based on your friend’s tweets.

Twitterfeed Posts blog contents to Twitter.

TwitterCounter Graphs the growth in your followers.

Twitterfall Tracks trending topics; enables custom searches.

Listorious Twitter lists make it simple to follow large groups of Twitter users, and Listorious makes it easy to find the best lists.

Video

YouTube Dominant provider of video content online.

Vimeo Better rights control than YouTube and a cleaner interface

BBC iPlayer The king of the online catchup services.

Hulu The networks fight back with their own video site, which may make the UK in 2010. We hope.

Videojug The motherlode of instructional videos, all in one place.

Virtual worlds

Second Life Continues to exist and is, apparently, still popular, but not the media darling it was.

Entropia Universe Set in a distant future on the untamed planet of Calypso.

Club Penguin Minigame-tastic virtual world for youngkids.

Moshi Monsters “Educational” virtual world for kids.

Visual arts

Saatchi Gallery Gallery, listings and artworks for sale.

Art Daily The first “art newspaper” on the net.

Culture 24 Everything about UK galleries and museums.

Visualisation

Information is Beautiful Creating effective infographics is one of today’s key skills, and on this site, it’s also an art.

Infosthetics.com An archive of some of the finest examples of “information aesthetics”.

DabbleDB Create online databases and analyse them.

 Which essential sites have we missed? Tell us below

 This article was amended on Wednesday 9 December 2009. Picasa is no longer for Windows only; Streetwire.org is no longer operational. These have been corrected.

 

refer to: https://www.theguardian.com/technology/2009/dec/09/best-websites-internet

 

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
226 views
THE CODE GEEKS NETWORK

THE CODE GEEKS NETWORK

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
277 views
Do you want to know how to NOT win in life?

Do you want to know how to NOT win in life?

Do you want to know how to NOT win in life?

I was thinking about why some people remain unsuccessful.

Here are 3 common patterns I noticed:

1) They blame everything on others

For everything bad that happens in life, it’s always your fault. You need to OWN your failures, not pass the blame on others. On the other hand, for everything good, it’s your doing too! So embrace it.

2) They keep doing the same things

If you keep doing the things that you have been doing, you are going to get the results that you have been getting. If these results are not what you want, you NEED to change your approach and routines.

3) They are trapped in a “fixed mindset” mentality

People that do not grow personally, professionally and financially, very often are trapped in what is called “fixed mindset”. This is the misconception that we are born and die with a fixed and immutable personality that can’t improve by picking up new skills. Thus, these people remain static and eventually get outdated.

There you have it, three ways to not win in life. Do you want to kick ass instead?

-end-

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
384 views
Datasets | Kaggle

Datasets | Kaggle

Welcome to Kaggle Datasets

The best place to discover and seamlessly analyze open data


  • Discover

    Discover

    Use the search box to find open datasets on everything from government, health, and science to popular games and dating trends.

  • Explore

    Explore

    Execute, share, and comment on code for any open dataset with our in-browser analytics tool, Kaggle Kernels. You can also download datasets in an easy-to-read format.

  • Create a Dataset

    Create a Dataset

    Contribute to the open data movement and connect with other data enthusiasts by clicking “New Dataset” to publish an open dataset of your own.

来源: Datasets | Kaggle

好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
409 views
好烂啊有点差凑合看看还不错很精彩 (1 votes, average: 1.00 out of 5)
Loading...
329 views
好烂啊有点差凑合看看还不错很精彩 (No Ratings Yet)
Loading...
327 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、

跳至工具栏