又黑我等程序猿…
1、栈和队列的区别是啥? 吃多了拉就是队列;吃多了吐就是栈
2、世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她。。。
3、《c++程序设计语言》比《c程序设计语言》厚了几倍。。。果然有了对象就麻烦很多。。。
4、怎么使用面向对象的方式变得富有?继承。
5、为什么程序员总是分不清万圣节和圣诞节?因为 Oct 31 == Dec 25。
6、Keyboard not found ... press F1 to continue
7、提交代码不写注释的人,小JJ就跟注释一样长
8、杀一个程序员不需要用枪,改三次需求就可以了
9、服务器按功能可以分为:数据库服务器,web服务器,cache服务器,下片儿服务器等等。
10、四个2B青年掐架。
A:你丫等着,我爹是敏感词!
B:Cao你大爷!你丫牛B神马,我爹在网上搜索根本无法显示!!
C: 我爹404 not found!!!
D:我爹Connection Reset !!!!
11、一同学问我,软件外包是什么。解释了几句还没明白,遂想了一下:包工头知道吧?顿悟!
12、十行代码九个警告八个错误竟然敢说七日精通六天学会五湖四海也不见如此三心二意之项目经理简直一等下流。
13、一个程序猿在肉店买了1公斤肉,回家一称,他不高兴的跑回肉店对老板说:少了24克……
14、网络聊天的时候,想表达对方是猪,一般人会打“xxx你这个猪。”,程序员会打 xxx.isPig = TRUE。
15、两个程序员,一个技术精湛,思维严谨,认真负责,Bug极少,至今单身;
一个技术一般,吊儿郎当,Bug一堆,经常被测试MM叫到她旁边,接受批评,后来成了她男朋友。。。.。.
16、宝宝数学很好,2岁就可以从1数到10了。后来,我告诉他0比1还小。
今天吃饺子,我说:“宝宝,你数数你想吃几个饺子?”
“0,1,2,3。”一边说着一边拿起一个饺子,“这是第0个。”
老婆怒吼:“下一代还是做程序员的命!”
17、程序员找不到对象,一般有三种情况:
1. C#、JAVA都有对象,但是经常找不到对象。
2.ASM C直接没有对象。
3.javascript都是伪对象,最多算暧昧。
但C++日子一直都好过,因为C++是多继承,富二代呀!!!
18、程序猿:我的第一个问题是,对于我第二个和第三个问题,你可不可以只用‘能’和‘不能’来回答?
老板:“OK!”
我的第二个问题是,如果我的第三个问题是我能不能涨工资?那么你对于我的第三个问题的答案能不能和第二个问题的答案一样?
老板:。。。。。。
19、假如生活欺骗了你,找50个程序员问问为什么编程;
假如生活让你想死,找50个程序员问问BUG改完了没有;
假如你觉得生活拮据,找50个程序员问问工资涨了没有;
假如你觉得活着无聊,找50个程序员问问他们一天都干了什么!
20、c程序员看不起c++程序员, c++程序员看不起java程序员, java程序员看不起c#程序员,c#程序员看不起美工, 周末了,美工带着妹子出去约会了…一群傻X程序员还在加班!
21、客户被绑,蒙眼,惊问:“想干什么?”
对方不语,鞭笞之,客户求饶:“别打,要钱?”
又一鞭,“十万够不?”
又一鞭,“一百万?”
又一鞭。客户崩溃:“你们TMD到底要啥?”
“要什么?我帮你做项目,写代码的时候也很想知道你TMD到底想要啥!”
[解决办法]
下班不回家搞基呢
[解决办法]
//---------------------------------------
// <copyright file="RILHelper.cs" company="Yaping Xin">
// Copyright (c) Yaping Xin. All rights reserved.
// </copyright>
// <Description>Helper class for Radio Interface Layer.</Description>
//---------------------------------------
namespace MobileAutomation.Projects.VDFStressTesting
{
using System;
using System.Runtime.InteropServices;
using System.Threading;
/// <summary>
/// Helper class for Radio Interface Layer.
/// </summary>
public class RILHelper
{
/// <summary>
/// Delegation definition of Log event handler
/// </summary>
/// <param name="message">Message to transfer</param>
public delegate void LogHandler(string message);
/// <summary>Event handler to record log</summary>
public static event LogHandler Log;
/// <summary>AutoResetEvent object</summary>
private static AutoResetEvent waithandle = new AutoResetEvent(false);
/// <summary>HRESULT to RIL object</summary>
private static IntPtr hRil = IntPtr.Zero;
/// <summary>HRESULT to result</summary>
private static IntPtr hRes = IntPtr.Zero;
/// <summary>
/// RILRESULTCALLBACK delegation
/// http://msdn.microsoft.com/en-us/library/aa920069.aspx
/// </summary>
/// <param name="dwCode">Specifies the result code.</param>
/// <param name="hrCmdID">ID returned by the command that originated this response.</param>
/// <param name="lpData">Data associated with the notification.</param>
/// <param name="cbData">Size of the structure pointed to by lpData.</param>
/// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param>
public delegate void RILRESULTCALLBACK(
uint dwCode,
IntPtr hrCmdID,
IntPtr lpData,
uint cbData,
uint dwParam);
/// <summary>
/// RILNOTIFYCALLBACK delegation
/// http://msdn.microsoft.com/en-us/library/aa922465.aspx
/// </summary>
/// <param name="dwCode">Specifies the notification code. </param>
/// <param name="lpData">Data associated with the notification.</param>
/// <param name="cbData">Size of the structure pointed to by lpData.</param>
/// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param>
public delegate void RILNOTIFYCALLBACK(
uint dwCode,
IntPtr lpData,
uint cbData,
uint dwParam);
/// <summary>
/// RIL Initialize
/// </summary>
/// <returns>RIL HRESULT</returns>
public static IntPtr Initialize()
{
return RIL_Initialize(1, new RILRESULTCALLBACK(RilResultCallback), new RILNOTIFYCALLBACK(RilNotifyCallback), 0xffffffff, 0, out hRil);
}
/// <summary>
/// RIL Deinitialize
/// </summary>
/// <returns>RIL HRESULT</returns>
public static IntPtr Deinitialize()
{
return RIL_Deinitialize(hRil);
}
/// <summary>
/// Retrieves the system time from the network.
/// </summary>
/// <returns>Positive HRESULT values</returns>
public static IntPtr GetSystemTime()
{
return RIL_GetSystemTime(hRil);
}
/// <summary>
/// RIL Reslt Callback Proc
/// </summary>
/// <param name="dwCode">Specifies the result code.</param>
/// <param name="hrCmdID">ID returned by the command that originated this response.</param>
/// <param name="lpData">Data associated with the notification.</param>
/// <param name="cbData">Size of the structure pointed to by lpData.</param>
/// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param>
public static void RilResultCallback(
uint dwCode,
IntPtr hrCmdID,
IntPtr lpData,
uint cbData,
uint dwParam)
{
RIL_NCLASS dwClass = (RIL_NCLASS)dwCode & RIL_NCLASS.ALL;
string message = string.Format("ResultCallback - dwCode: {0}, RIL_NCLASS: {1}", dwCode, dwClass);
RILHelper.OnLog(message);
waithandle.Set();
}
/// <summary>
/// RIL Notify Callback Proc
/// </summary>
/// <param name="dwCode">Specifies the notification code. </param>
/// <param name="lpData">Data associated with the notification.</param>
/// <param name="cbData">Size of the structure pointed to by lpData.</param>
/// <param name="dwParam">Specifies the parameter passed to RIL_Initialize or RIL_InitializeEmergency.</param>
public static void RilNotifyCallback(
uint dwCode,
IntPtr lpData,
uint cbData,
uint dwParam)
{
RIL_NCLASS dwClass = (RIL_NCLASS)dwCode & RIL_NCLASS.ALL;
string message = string.Format("NotifyCallback - dwCode: {0}, RIL_NCLASS: {1}", dwCode, dwClass);
RILHelper.OnLog(message);
waithandle.Set();
}
/// <summary>
/// Record the message
/// </summary>
/// <param name="message">Message to transfer</param>
protected static void OnLog(string message)
{
if (RILHelper.Log != null)
{
RILHelper.Log(message);
}
}
[DllImport("ril.dll")]
private static extern IntPtr RIL_Initialize(
uint dwIndex,
RILRESULTCALLBACK pfnResult,
RILNOTIFYCALLBACK pfnNotify,
uint dwNotificationClasses,
uint dwParam,
out IntPtr lphRil);
[DllImport("ril.dll")]
private static extern IntPtr RIL_Deinitialize(IntPtr hRil);
[DllImport("ril.dll")]
private static extern IntPtr RIL_GetSystemTime(IntPtr hRil);
}
}
我们采取极限编程方式开发,注重保持“让其他人可以随时修改代码”的趋势,可能与传统的功能分解开发的方式有所区别。因此有以下要求:
1. 尽量注释掉.cs文件中的代码。对于已经提交到svn超过2天的代码文件,任何人都可以随时注释一些代码,只要所有测试程序均可以通过即可。
2. 尽量删除掉代码。每周内一定要删除一次注释了的并且已经超过2天的代码,系统中所有代码页仅剩下必要的那些代码即可。如需要追溯代码修改历史,请使用svn系统来完成。
3. 程序注释应仅写最少和必要的内容,或者不必写注释。如果对代码不理解,请自己写测试程序来研究,并且鼓励同事交流学习(而不是文档化)。在个人所写的测试程序中可以写大段的注释。
4. 每一个开发人员都要以测试驱动方式来写代码。一旦保证当前系统的(至少三天内)测试可以通过,立即提交到svn。例如可以每隔十几分钟即提交一次代码。要养成频繁提交代码的习惯。
5. 在任务分工时所编写的任务工单是主要的非代码文档。请仔细核对是否完成了工单上的接口需求(被其它组件调用、调用其它组件、数据库要求等)。没有完全完成一个任务,请不要转去做其它任务!
6. 如果一个任务被撤销(或者没有意义了),那么与之相关的代码应当在几天之内删除。请不要在最终提交的系统中留下不需要调用的代码!
7. 最重要地一条:鼓励所有人、任何时候均可以修改别人写的共享代码。没有任务时,可以随时重构已有的任何代码,对任何需求都(仅仅)采取“极端简单”的方式实现功能即可。
8. 由于特殊原因,本系统的测试代码写在发布的系统内了,而没有单独建立测试启动工程。这些测试用的代码(不管是谁提交的)应尽量保持不变。如果要修改,请先告诉我:-)
9. 对于由于特殊原因、因为赶进度而忽略了测试驱动开发原则所产生的代码,允许暂时使用“目测”的方式来测试。但是应当尽快补充编写自动测试代码!
世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她