LINUX常用命令(基础)
startx 切换到图形界面
man 对你熟悉或不熟悉的命令提供帮助解释
eg:man ls 就可以查看ls相关的用法
注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。
ls 查看目录或者文件的属*,列举出任一目录下面的文件
eg: ls /usr/man
ls -l
a.d表示目录(directory),如果是一个”-“表示是文件,如果是l则表示是一个连接文件(link)
b.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x)。
cp 拷贝文件
eg: cp filename1 filename2 //把filename1拷贝成filename2
cp 1.c netseek/2.c //将1.c拷到netseek目录下命名为2.c
rm 删除文件和目录
eg: rm 1.c //将1.c这个文件删除
mv 移走目录或者改文件名
eg: mv filename1 filename2 / ...
程序员面试一直是社区乐于讨论的热门话题,在有了两年面试别人的经历后,我打算通过文章站在面试官角度对于程序员面试问题的一个阶段性反思和经验总结。
程序员面试一直是社区乐于讨论的热门话题。我自己从06年实习以来,先后经历了4家软件公司,全部是外企,其中有世界500强的通信企业,有从事期权期货交易的欧洲中等规模的金融公司,也有为大型汽车制造商开发Android智能汽车的新兴公司。跨入IT行业以来,我在求职过程中经历过多次面试,最近两年也有过多次面试别人的经验。我感觉现在到了对这个问题发表自己看法的时候,这篇文章是我站在面试官角度对于程序员面试问题的一个阶段性反思和经验总结。
目标相信和不少朋友一样,有了几年工作经验成为Senior后就开始了面试别人的经历。我在最初这个阶段只是按照自己的想象把”找到基础好的程序员“,”找到算法能力优秀的程序员“,”找到有Android开发经验的程序员“等作为面试的目标。但是,实际的经历告诉我,尤其是按“基础好”,“算法好”这些目标招到的人最终效果并不好。比如,有的面试者基础知识和算法掌握情况不错,进程、线程、内存等概念清晰,基本的Hash,二叉树,快速排序等数 ...
摘要:你是一个程序员初哥,刚从大学迈进公司却没有人指导,要么公司给你指定了导师,却不好意思大事小情都问他。你想提高自己的编程水平,却不知该如何下手。如果你想提升自己,成为一个合格的天天向上的程序员,这篇文章就是为你准备的。
学什么? 有些人对什么都感兴趣,硬盘上存着几百G的教学视频电子书破解软件,却只是仅仅保存着,没有转化成知识。有些人只知道自己刚进公司的那点东 西,JDK一定要1.4.2,VC++一定要6.0,系统一定要Windows XP,否则就是大逆不道。前一种是不知道自己想要什么,后一种是固步自封、眼界短浅,都不是一个程序员应该有的学习态度。
常见的程序员有Windows桌面开发,Linux服务器开发,Web前端开发,DB数据库相关,游戏服务器端开发,游戏客户端开发,RIA开发 (如Flash、Silverlight),移动开发(这个现在最火了尤其是Android和iOS),嵌入式开发,行业软件开发等等,基本上我列举的这些已经涵盖了大部分程序员类型,每个类型都有不同的基础知识以及扩展内容需要学习。另外有一些共通的内容如数据结构、基本算法、操作系统是都应该学习了解的。
...
多线程-并发
未读简介非阻塞算法在更细粒度的层面协调争用,它比传统的锁有更高的并发性。随着非阻塞算法在 Java 中的应用越来越广泛,java.concurrent 包中用非阻塞算法实现的并发容器也越来越多,ConcurrentLinkedQueue 就是其中的一个重要成员。鉴于 ConcurrentLinkedQueue 的非阻塞算法实现在并发容器中具有代表性,本文将结合 JDK Update23 的源代码来分析它在当前的实现。由于非阻塞算法本身比较复杂,阅读本文的读者需要对 CAS 原子指令和非阻塞同步机制有所了解。本文分为两部分,第一部分主要是对非阻塞算法相关理论知识的简介,第二部分结合 ConcurrentLinkedQueue 的源代码,来探索非阻塞算法的具体实现。希望通过本文,能够有助于读者理解非阻塞算法在并发容器中的工作原理与具体实现机制。
非阻塞算法相关技术简介为了便于读者更好的理解本文,首先让我们来对非阻塞算法相关的理论知识做个简单的了解,更详细的论述请参阅文中提及的相关参考文献。
Java 的多线程同步机制在现代的多处理器系统中,提高程序的并行执行能力是有效利用 CPU 资源的关键。 ...
实现伸缩性和性能调优的经验所保有的价值容易被低估。两者都是“晚些时候”或“我们真正流行起来时”所面临的难题。早期创业公司确实不应该立即花这份钱,而大公司通常不能做出足够快速的反应以实现所需的改变。再加上这需要一个多学科的团队,它立刻就变成了一个需要解决的政治上和工程上的难题。
但是它从来不会从我们的视线中消失——在过去的少数几个 Qcon 会议上,“Architectures You’ve Always Wondered About(你始终感到惊讶的架构)”专题被淹没了,正因为如此,我们渴望学习“大人物”们如何去做这些事情的技巧和诀窍。
在这次 InfoQ.com 的虚拟座谈会上,我们从几个最大的公司和项目中邀请了几个在实现可伸缩性和性能方面的专家,让我们进入他们取得了成果而我们却依然梦想的神秘世界吧。
座谈会的参与者包括有 Blaine Cook,Twitter 的前任架构师,他领导开发者进行了 Starling 消息队列 ruby gem 的开发。Blaine 在“如何让 Ruby 和 Rails 伸缩自如”的会谈中发出了积极的声音,在这一领域有非常多的经验。
他是被 Randy ...
多线程-并发
未读参考《分布式java应用》一书,简单过一遍并发包(java.util.concurrent)
ConcurrentHashMapConcurrentHashMap是线程安全的HashMap的实现。
1)添加
put(Object key , Object value)
ConcurrentHashMap并没有采用synchronized进行控制,而是使用了ReentrantLock。
123456public V put(K key, V value) { if (value == null) throw new NullPointerException(); int hash = hash(key.hashCode()); return segmentFor(hash).put(key, hash, value, false); }
这里计算出key的hash值,根据hash值获取对应的数组中的segment对象。接下来的工作都交由segment完成。
segment可以看成是HashMap的一 ...
工作一年了,换过一次工作,最近面试的时候面试官说我只能算是一个junior,离senior还差一些,虽然 不服气,但是仔细想来,却也没什么不对的。 一年了,对自己水平的总结就是:貌似什么都知道点,但是什么又都不深入。
曾经一个同学告诉我,技术 通过做两个项目就上来了!然后面试官问我怎么快速提高自己的水平,我就说做几个项目就上来了。他说,那不可能,没有那么多项目给你做。 仔细想来,自己曾经做过的工作,虽然工作能提高一些技能,但是大部分的提高貌似都是自学的。有没有人同感?
现在说这个自学,平时我也好研究一些小技术,小技巧,然后将实例代码保存起来。但是工作中不用,项目中不用,这些技术就慢慢忘记了。比如说存储过程的基本语法,一时兴起,看看资料,照着例子写上几个存储过程,然后过一阵子,工作中不用,自己平时也不用,存储过程慢慢就又不会写了,然后面试笔试的时候又出问题了。所以就出现了,貌似什么都研究过,都曾用过,但是又什么都不深入。 就拿存储过程来说,如果项目中经常写,自己平时也用到,那基本上手到擒来。 再后来,慢慢的什么都记不住了,又不知道自己该研究啥了,慢 ...
介绍在使用Java语言进行和数据库有关的的应用开发中,一般都使用JDBC来进行和数据库的交互,其中有一个关键的概念就是Connection(连接),它在Java中是一个类,代表了一个通道。通过它,使用数据的应用就可以从数据库访问数据了。
对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。
本文给出的方法可以有效的解决这个问题。在本方法中提出了一个合理、有效的连接管理策略,避免了对于连接的随意、无规则的使用。该策略的核心思想是:连接复用。通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。另外,由于对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的使用(特别是对于事务处理),提高了开发效率,也正是因为这个封装层的存在,隔离了应用的本身的处理逻辑和具体数 ...
如何找到一份工程师工作。说实话,你是一位优秀的工程师候选人吗?你怎么评价自己?你面试过多少家公司?你拿到offer的比率是多少?试一下用以下的公式来计算。
1234x = number of companies interviewed with onsitey = number of offers receivedvalue = 100 * log(x) * y / x
如果你的计算结果小于90,请仔细阅读这篇文章;如果大于120,那你并不需要这篇文章。
我是谁?我没有高中学历。我19岁从芝加哥前往南加州开始编程。我把所有东西装进了我的轿车里,身上只有400美金和一个offer,4万美金年薪的高级程序员。那是在12年前,当然又是另外一个故事了。
从那以后,我曾在 Double Helix, Namco Bandai, Google,Obvious and Square等公司工作过。也收到过来自Naughty Dog, Activision, Riot Games, Blizzard, Pinterest, Goldman Sachs等公司的offer。正由于此,用前面提到的公司算出我 ...
英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers
一、介绍
浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到google主页过程中都发生了什么。
将讨论的浏览器 今天,有五种主流浏览器——IE、Firefox、Safari、Chrome及Opera。
本文将基于一些开源浏览器的例子——Firefox、Chrome及Safari,Safari是部分开源的。
根据W3C(World Wide Web Consortium万维网联盟)的浏览器统计数据,当前(2011年5月),Firefox、Safari及Chrome的市场占有率综合已接近60%。(原文为2009年10月,数据没有太大变化)因此,可以说开源浏览器已经占据了浏览器市场的半壁江山。
浏览器的主要功能 浏览器的主要功能是将用户选择的web资源呈现出来,它需要从服务器请求资源,并将其显示在浏览器窗口中,资源的格式通常是HTML,也包括PDF、image及其他格式 ...