https://www.youtube.com/user/HackersOnBoard
转载自: http://blog.sina.com.cn/s/blog_a28e3dd901016512.html
数据来源是中国中央气象局的天气数据,首先我们来了解一下他返回到的数据代表的意思。
city:西安, // 地区名称
city_en:xian, // 英文 (汉语拼音) 名称
date_y:2012年8月30日, // 当前日期
date:, // 网上解释是阴历年
week:星期四, // 星期
fchh:18, // 更新点时间 (18点)
cityid:101110101, // 地区 ID
// 六天的温度
temp1:21℃~28℃, // 在更新点之前是今日最高温到午夜的最低温,在更新点之后是今日午夜的最低温到明日的最高温
temp2:18℃~22℃, // 以此类推
temp3:17℃~26℃,
temp4:16℃~28℃,
temp5:16℃~29℃,
temp6:17℃~30℃,
// 华氏温度
tempF1:69.8℉~82.4℉,
tempF2:64.4℉~71.6℉,
tempF3:62.6℉~78.8℉,
tempF4:60.8℉~82.4℉,
tempF5:60.8℉~84.2℉,
tempF6:62.6℉~86℉,
// 天气描述,同样根据更新点确定 weather1 是今天还是明天的
weather1:阴转中雨,
weather2:中雨转大雨,
weather3:小到中雨转多云,
weather4:多云转晴,
weather5:晴,
weather6:晴转多云,
// 12 幅图片对应六天的天气,更新点前就是今日白天,今日夜间,明日白天,明日夜间,更新点之后就是今日夜间开始的
img1:2, //阴天
img2:8, // 中雨,和一图片对应天气的阴转中雨
img3:8, // 依次类推
用户用很多选择,当它开始享受Android设备中的音频的时候。许多设备有一个内嵌扬声器,有线耳机的耳机插孔,和一些蓝牙连接和支持A2DP音频。 检查什么设备正在被使用 ————————————————————————————————————————————————————————————————— 你的应用程序的行为如何被哪个硬件输入被使用影响。 你能查询AudioManager类确定音频是否被正确的路由到设备的扬声器,有线耳机,或者连接的蓝牙设备。如下面的代码块所示: if (isBluetoothA2dpOn()) { // Adjust output for Bluetooth. } else if (isSpeakerphoneOn()) { // Adjust output for Speakerphone. } else if (isWiredHeadsetOn()) { // Adjust output for headsets } else { // If audio plays and noone can hear it, is it still playing? } 处理音频输出硬件的改变 —————————————————————————————————————————————————————————————————当一个耳机被断开,或者一个蓝牙设备失去连接,音频流自动路由到内置的扬声器。如果你听音乐在在能做到的最大的声音,那肯定是一个嘈杂的惊喜。 幸运的是当这个种情况发生的时候,系统广播一个ACTION_AUDIO_BECOMING_NOISY意图。无论你什么时候播放音频,注册一个BroadcastReceiver来监听这个意图是一个好的实践。在播放音乐的情况下,用户通常期望播放被暂停—然而对于游戏你可能会选降低音量。 private class NoisyAudioStreamReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) { // Pause the playback } } } private IntentFilter intentFilter = new IntentFilter(AudioManager.
为什么80%的码农都做不了架构师?>>> 不知道是哪位大神写的神一样的代码,觉得使用就贴了过来,方便今后使用。 .h文件 char pinyinFirstLetter(unsigned short hanzi); .m文件 #define HANZI_START 19968 #define HANZI_COUNT 20902 static char firstLetterArray[HANZI_COUNT] = "ydkqsxnwzssxjbymgcczqpssqbycdscdqldylybssjgyqzjjfgcclzznwdwzjljpfyynnjjtmynzwzhflzppqhgccyynmjqyxxgd" "nnsnsjnjnsnnmlnrxyfsngnnnnqzggllyjlnyzssecykyyhqwjssggyxyqyjtwktjhychmnxjtlhjyqbyxdldwrrjnwysrldzjpc" "bzjjbrcfslnczstzfxxchtrqggddlyccssymmrjcyqzpwwjjyfcrwfdfzqpyddwyxkyjawjffxjbcftzyhhycyswccyxsclcxxwz" "cxnbgnnxbxlzsqsbsjpysazdhmdzbqbscwdzzyytzhbtsyyfzgntnxjywqnknphhlxgybfmjnbjhhgqtjcysxstkzglyckglysmz" "xyalmeldccxgzyrjxjzlnjzcqkcnnjwhjczccqljststbnhbtyxceqxkkwjyflzqlyhjxspsfxlmpbysxxxytccnylllsjxfhjxp" "jbtffyabyxbcczbzyclwlczggbtssmdtjcxpthyqtgjjxcjfzkjzjqnlzwlslhdzbwjncjzyzsqnycqynzcjjwybrtwpyftwexcs" "kdzctbyhyzqyyjxzcfbzzmjyxxsdczottbzljwfckscsxfyrlrygmbdthjxsqjccsbxyytswfbjdztnbcnzlcyzzpsacyzzsqqcs" "hzqydxlbpjllmqxqydzxsqjtzpxlcglqdcwzfhctdjjsfxjejjtlbgxsxjmyjjqpfzasyjnsydjxkjcdjsznbartcclnjqmwnqnc" "lllkbdbzzsyhqcltwlccrshllzntylnewyzyxczxxgdkdmtcedejtsyyssdqdfmxdbjlkrwnqlybglxnlgtgxbqjdznyjsjyjcjm" "rnymgrcjczgjmzmgxmmryxkjnymsgmzzymknfxmbdtgfbhcjhkylpfmdxlxjjsmsqgzsjlqdldgjycalcmzcsdjllnxdjffffjcn" "fnnffpfkhkgdpqxktacjdhhzdddrrcfqyjkqccwjdxhwjlyllzgcfcqjsmlzpbjjblsbcjggdckkdezsqcckjgcgkdjtjllzycxk" "lqccgjcltfpcqczgwbjdqyzjjbyjhsjddwgfsjgzkcjctllfspkjgqjhzzljplgjgjjthjjyjzccmlzlyqbgjwmljkxzdznjqsyz" "mljlljkywxmkjlhskjhbmclyymkxjqlbmllkmdxxkwyxwslmlpsjqqjqxyqfjtjdxmxxllcrqbsyjbgwynnggbcnxpjtgpapfgdj" "qbhbncfjyzjkjkhxqfgqckfhygkhdkllsdjqxpqyaybnqsxqnszswhbsxwhxwbzzxdmndjbsbkbbzklylxgwxjjwaqzmywsjqlsj" "xxjqwjeqxnchetlzalyyyszzpnkyzcptlshtzcfycyxyljsdcjqagyslcllyyysslqqqnldxzsccscadycjysfsgbfrsszqsbxjp" "sjysdrckgjlgtkzjzbdktcsyqpyhstcldjnhmymcgxyzhjdctmhltxzhylamoxyjcltyfbqqjpfbdfehthsqhzywwcncxcdwhowg" "yjlegmdqcwgfjhcsntmydolbygnqwesqpwnmlrydzszzlyqpzgcwxhnxpyxshmdqjgztdppbfbhzhhjyfdzwkgkzbldnzsxhqeeg" "zxylzmmzyjzgszxkhkhtxexxgylyapsthxdwhzydpxagkydxbhnhnkdnjnmyhylpmgecslnzhkxxlbzzlbmlsfbhhgsgyyggbhsc" "yajtxglxtzmcwzydqdqmngdnllszhngjzwfyhqswscelqajynytlsxthaznkzzsdhlaxxtwwcjhqqtddwzbcchyqzflxpslzqgpz" "sznglydqtbdlxntctajdkywnsyzljhhdzckryyzywmhychhhxhjkzwsxhdnxlyscqydpslyzwmypnkxyjlkchtyhaxqsyshxasmc" "hkdscrsgjpwqsgzjlwwschsjhsqnhnsngndantbaalczmsstdqjcjktscjnxplggxhhgoxzcxpdmmhldgtybynjmxhmrzplxjzck" "zxshflqxxcdhxwzpckczcdytcjyxqhlxdhypjqxnlsyydzozjnhhqezysjyayxkypdgxddnsppyzndhthrhxydpcjjhtcnnctlhb" "ynyhmhzllnnxmylllmdcppxhmxdkycyrdltxjchhznxclcclylnzsxnjzzlnnnnwhyqsnjhxynttdkyjpychhyegkcwtwlgjrlgg" "tgtygyhpyhylqyqgcwyqkpyyettttlhyylltyttsylnyzwgywgpydqqzzdqnnkcqnmjjzzbxtqfjkdffbtkhzkbxdjjkdjjtlbwf" "zpptkqtztgpdwntpjyfalqmkgxbcclzfhzcllllanpnxtjklcclgyhdzfgyddgcyyfgydxkssendhykdndknnaxxhbpbyyhxccga" "pfqyjjdmlxcsjzllpcnbsxgjyndybwjspcwjlzkzddtacsbkzdyzypjzqsjnkktknjdjgyepgtlnyqnacdntcyhblgdzhbbydmjr" "egkzyheyybjmcdtafzjzhgcjnlghldwxjjkytcyksssmtwcttqzlpbszdtwcxgzagyktywxlnlcpbclloqmmzsslcmbjcsdzkydc" "zjgqjdsmcytzqqlnzqzxssbpkdfqmddzzsddtdmfhtdycnaqjqkypbdjyyxtljhdrqxlmhkydhrnlklytwhllrllrcxylbnsrnzz" "symqzzhhkyhxksmzsyzgcxfbnbsqlfzxxnnxkxwymsddyqnggqmmyhcdzttfgyyhgsbttybykjdnkyjbelhdypjqnfxfdnkzhqks" "byjtzbxhfdsbdaswpawajldyjsfhblcnndnqjtjnchxfjsrfwhzfmdrfjyxwzpdjkzyjympcyznynxfbytfyfwygdbnzzzdnytxz" "emmqbsqehxfznbmflzzsrsyqjgsxwzjsprytjsjgskjjgljjynzjjxhgjkymlpyyycxycgqzswhwlyrjlpxslcxmnsmwklcdnkny" "npsjszhdzeptxmwywxyysywlxjqcqxzdclaeelmcpjpclwbxsqhfwrtfnjtnqjhjqdxhwlbyccfjlylkyynldxnhycstyywncjtx" "ywtrmdrqnwqcmfjdxzmhmayxnwmyzqtxtlmrspwwjhanbxtgzypxyyrrclmpamgkqjszycymyjsnxtplnbappypylxmyzkynldgy" "jzcchnlmzhhanqnbgwqtzmxxmllhgdzxnhxhrxycjmffxywcfsbssqlhnndycannmtcjcypnxnytycnnymnmsxndlylysljnlxys" "sqmllyzlzjjjkyzzcsfbzxxmstbjgnxnchlsnmcjscyznfzlxbrnnnylmnrtgzqysatswryhyjzmgdhzgzdwybsscskxsyhytsxg" "cqgxzzbhyxjscrhmkkbsczjyjymkqhzjfnbhmqhysnjnzybknqmcjgqhwlsnzswxkhljhyybqcbfcdsxdldspfzfskjjzwzxsddx" "jseeegjscssygclxxnwwyllymwwwgydkzjggggggsycknjwnjpcxbjjtqtjwdsspjxcxnzxnmelptfsxtllxcljxjjljsxctnswx" "lennlyqrwhsycsqnybyaywjejqfwqcqqcjqgxaldbzzyjgkgxbltqyfxjltpydkyqhpmatlcndnkxmtxynhklefxdllegqtymsaw" "hzmljtkynxlyjzljeeyybqqffnlyxhdsctgjhxywlkllxqkcctnhjlqmkkzgcyygllljdcgydhzwypysjbzjdzgyzzhywyfqdtyz" "szyezklymgjjhtsmqwyzljyywzcsrkqyqltdxwcdrjalwsqzwbdcqyncjnnszjlncdcdtlzzzacqqzzddxyblxcbqjylzllljddz" "jgyqyjzyxnyyyexjxksdaznyrdlzyyynjlslldyxjcykywnqcclddnyyynycgczhjxcclgzqjgnwnncqqjysbzzxyjxjnxjfzbsb" "dsfnsfpzxhdwztdmpptflzzbzdmyypqjrsdzsqzsqxbdgcpzswdwcsqzgmdhzxmwwfybpngphdmjthzsmmbgzmbzjcfzhfcbbnmq" "dfmbcmcjxlgpnjbbxgyhyyjgptzgzmqbqdcgybjxlwnkydpdymgcftpfxyztzxdzxtgkptybbclbjaskytssqyymscxfjhhlslls" "jpqjjqaklyldlycctsxmcwfgngbqxllllnyxtyltyxytdpjhnhgnkbyqnfjyyzbyyessessgdyhfhwtcqbsdzjtfdmxhcnjzymqw" "srxjdzjqbdqbbsdjgnfbknbxdkqhmkwjjjgdllthzhhyyyyhhsxztyyyccbdbpypzyccztjpzywcbdlfwzcwjdxxhyhlhwczxjtc" "nlcdpxnqczczlyxjjcjbhfxwpywxzpcdzzbdccjwjhmlxbqxxbylrddgjrrctttgqdczwmxfytmmzcwjwxyywzzkybzcccttqnhx" "nwxxkhkfhtswoccjybcmpzzykbnnzpbthhjdlszddytyfjpxyngfxbyqxzbhxcpxxtnzdnnycnxsxlhkmzxlthdhkghxxsshqyhh" "cjyxglhzxcxnhekdtgqxqypkdhentykcnymyyjmkqyyyjxzlthhqtbyqhxbmyhsqckwwyllhcyylnneqxqwmcfbdccmljggxdqkt" "lxkknqcdgcjwyjjlyhhqyttnwchhxcxwherzjydjccdbqcdgdnyxzdhcqrxcbhztqcbxwgqwyybxhmbymykdyecmqkyaqyngyzsl" "fnkkqgyssqyshngjctxkzycssbkyxhyylstycxqthysmnscpmmgcccccmnztasmgqzjhklosjylswtmqzyqkdzljqqyplzycztcq" "qpbbcjzclpkhqcyyxxdtdddsjcxffllchqxmjlwcjcxtspycxndtjshjwhdqqqckxyamylsjhmlalygxcyydmamdqmlmcznnyybz" "
在C#中,有且仅有两种数据类型:值类型和引用类型。换言之,一个变量要么是值类型,要么是引用类型。像我们常见的数据类型(int,float,double)、结构、枚举等等都属于值类型,而像类、接口、委托等都属于引用类型。所以,要想深入的了解.net framework的一些原理性的知识,值类型与引用类型是跨不过去的一道门槛。
下面是一个关于C#中的类型的总结图片
但是C#中的基本类型的定义是源于什么呢:
C#中变量的类型取决于什么?
在C#中,变量是值类型还是引用类型,取决于其基本数据类型。在C#中,其基本数据类型并没有内置于语言中,而是存在与.Net Framewok中。.Net使用CTS(通用语言系统)定义在IL(中间语言)中使用的预定义数据类型。C#中所有数据类型都是对象,它们有属性、方法等。
例如,在C#中声明一个int变量时,实际上是声明了CTS中System.Int32的一个实例。
值类型
前面已经说过,值类型隐式派生于System.ValueType,那么在平时遇到的数据类型中,有哪些属于值类型呢?
整型。包括我们常见的short、int、long、byte、sbyte、bigint等这。 浮点型。包括float、double。 用于财务计算的高精度decimal类型。 结构体。struct,已经预定好的和用户自定义的。 枚举。 bool类型。 可空类型。 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值,这也是为什么像定义一个int型的变量时,有时候没有初始化,它也会有初始值为0的缘故。
还有一点需要注意的是,所有值类型都是seal(密封)类型,是不能再派生出新的数据类型的。
引用类型
在C#中,有以下这些引用类型:
数组。 类。 接口。 委托。 object。其实就是System.Object,老大哥。 字符串。string,System.String的别名,这也是一个极其重要的引用类型,后面会有专门一篇来描述字符串中的点点滴滴。 与值类型不同的是,引用类型可以派生出新的类型(不绝对话,比如说string就不可以)。需要注意的是,值类型中的结构体也是可以实现接口的。
内存分配
说起值类型和引用类型的不同,内存分配可谓是它们的本质区别了,这也可以让我们更加清晰的了解一些生活中遇到的问题。
值类型的实例一般都会存放在栈上,之所以说是一般,是因为它有时候也会去引用类型那里窜门,会有特殊情况,存放在堆上,接下来会讲。与之不同的是,引用类型的对象则总是存储在堆中,当然它的引用有时候也会存放在栈上,但是对象实例是一定存放在堆上的。
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。
例如,我们从6767开始,将得到
7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...
现给定任意4位正整数,请编写程序演示到达黑洞的过程。
输入格式: 输入给出一个(0, 10000)区间内的正整数N。 输出格式: 如果N的4位数字全相等,则在一行内输出“N - N = 0000”;否则将计算的每一步在一行内输出,直到6174作为差出现,输出格式见样例。注意每个数字按4位数格式输出。 输入样例1: 6767 输出样例1: 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 输入样例2: 2222 输出样例2: 2222 - 2222 = 0000 ===========================================================================
Android笔锋 毛笔算法 C#
毛笔效果
毛笔 铅笔 钢笔
水彩笔 荧光笔
适合多种语言开发 调用
QQ729615546 微信:13762930029
ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。 Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
由Collection接口派生的两个接口是List和Set。
List接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
LinkedList类
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
ArrayList类
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
和LinkedList一样,ArrayList也是非同步的(unsynchronized)。
Vector类
Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。
Collection的下的其他类和接口↓
Stack 类
Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
Set接口
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。
很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。
来自: 点击打开链接
DSP-BIOS和XDC工程建立过程中出现以下链接错误,导致编译失败。
[Linking...] "C:\CCStudio_v3.3\C6000\cgtools\bin\cl6x" -@"Debug.lkf" <Linking> >> error: symbol trace$buf is defined multiple times: C:\dvsdk_1_01_00_15\examples\led\evmDM6437\xdcconfig\package\cfg\led_x64Pcfg.o64P and C:\\dvsdk_1_01_00_15\\examples\\led\\evmDM6437\\Debug\\ledcfg.obj >> error: symbol _BIOS_init is defined multiple times: C:\dvsdk_1_01_00_15\examples\led\evmDM6437\xdcconfig\package\cfg\led_x64Pcfg.o64P and C:\\dvsdk_1_01_00_15\\examples\\led\\evmDM6437\\Debug\\ledcfg.obj >> error: symbol DDR2 is defined multiple times: C:\dvsdk_1_01_00_15\examples\led\evmDM6437\xdcconfig\package\cfg\led_x64Pcfg.o64P and C:\\dvsdk_1_01_00_15\\examples\\led\\evmDM6437\\Debug\\ledcfg.obj >> error: symbol LOG_system$buf is defined multiple times: C:\dvsdk_1_01_00_15\examples\led\evmDM6437\xdcconfig\package\cfg\led_x64Pcfg.o64P and C:\\dvsdk_1_01_00_15\\examples\\led\\evmDM6437\\Debug\\ledcfg.obj >> error: symbol RTA_toHost$pipe$dtab is defined multiple times: C:\dvsdk_1_01_00_15\examples\led\evmDM6437\xdcconfig\package\cfg\led_x64Pcfg.o64P and C:\\dvsdk_1_01_00_15\\examples\\led\\evmDM6437\\Debug\\ledcfg.obj 解决办法:
右击DSP/BIOS Config 文件夹下的Myproject.tcf 选择 File Specific Options…
选择Exclude file from build,确定。
main() { int s,a; ... { int b; //仅在{}内有效。 } ... }
局部变量也称内部变量。局部变量实在函数内定义的变量,其作用域仅限于函数内。 值得特别注意的是:在复合语句内定义的变量,其作用域也只在复合语句内。如:
定义静态区变量(全局变量,静态变量)时,若不赋值,编译时自动赋0(数值变量)或空字符(字符)。 寄存器变量:register 存放在CPU的寄存器,字节读写。当一个变量频繁读写时,必须反复反复访问存储器,从而花费大量的存取时间。对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量。
只有局部变量和形式参数才能定义为存储器变量,因为存储器变量数去动态存储方式,凡需要采用静态存储的方式的量都不嫩规定以为寄存器变量。
extern 与 static 函数前默认extern,均可在其他文件用 extern使用。
gcc ###.c @@.c
栈、堆和静态区 对于程序员,一般来说,我们可以简单的理解为内存分为三个部分:静态区,栈,堆。 很多书没有把把堆和栈解释清楚,导致初学者总是分不清楚。其实堆栈就是栈,而不是堆。 堆的英文是heap;栈的英文是stack,也翻译为堆栈。堆和栈都有自己的特性,这里先不做 讨论。再打个比方:一层教学楼,可能有外语教室,允许外语系学生和老师进入;还可能 有数学教师,允许数学系学生和老师进入;还可能有校长办公室,允许校长进入。同样, 内存也是这样,内存的三个部分,不是所有的东西都能存进去的。 静态区:保存自动全局变量和static变量(包括static全局和局部变量)。静态区的内容 在总个程序的生命周期内都存在,由编译器在编译的时候分配。 栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容 也会自动被销毁。其特点是效率高,但空间大小有限。 堆:由malloc系列函数或new操作符分配的内存。其生命周期由free或delete决定。 在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。
--摘自《C语言深度剖析》
飞马小编我今日为大家推荐PDP领导力性格测试,这是目前比较准确的领导力性格测试题,会帮助作为管理者的你,更加深入的剖析自我,那么就让我们从10月飞马网活动中走进它。
10月光环飞马学友会分别在北、上、广展开线下管理主题之领导魅力塑造研讨会。我们在三地分别以讨论的方式进行,会场气氛轻松幽默,飞马会员们在主持人的引导下,就“老虎、孔雀、考拉、猫头鹰、变色龙”这五种领导风格的研讨。其中,每组成员都讲解了各自类型领导的特质,并以案例的形式生动的介绍了如何与该类领导沟通,如何最大发挥该类下属的主观能动性。
来自首都,中国的文化和科教交互的北京管理者们,更多的性格偏向于传统而保守的“猫头鹰型”人才,他们拥有极强的分析力,极高的精确度,是最佳的品质保证者,喜欢把细节条例化,个性拘谨含蓄,谨守分寸忠于职责。时间观念强,做事严格按计划,注重细节。处事客观合理……
来自繁荣的国际大都市上海的飞马管理者们,却和北京不同,他们更加偏向于“变色龙型”。中庸而不极端,凡事不执着,韧性极强,擅于沟通是天生的谈判家,他们能充分融入各种新环境新文化且适应性良好,在他人眼中会觉得他们“没有个性”,故“没有原则就是最高原则”,他们懂得凡事看情况看场合,可以模拟各种类型,善于在工作中调整自己的角色去适应环境,具有很好的沟通能力。
而通过这个测试,广州竟是“老虎型”领导者的聚集地。他们喜欢冒险,个性积极,凡事喜欢掌控全局发号施令,不喜欢维持现状,但行动力强,目标一经确立便会全力以赴,并且不会轻言放弃……
三地呈现出了迥异的领导性格分布,这或许是告诉我们,不同地域领导者未来的培养和发展方向或许和其所生活城市的自身的文化和环境有着密不可分的关系,那么您又来自于哪儿个城市?您的性格背后到底隐藏着哪儿一种领导魅力呢?
让我们一起去探究其领导力背后的秘密吧!希望有更多管理人士的参与,在未来的线上、线下研讨中,大家能对各自的领导力类型有更深刻的认识,从内心深处剖析了自己,预祝能在工作中扬长避短,让自己的领导魅力更上一层楼!
注:
【测试题】请见/index.php/News/detail/tid/2970.shtml
【性格解读】请见:/index.php/News/detail/tid/2971.shtml
在算法分析中,当一个算法中包含递归调用时,其时间复杂度的分析会转化为一个递归方程求解。实际上,这个问题是数学上求解渐近阶的问题,而递归方程的形式多种多样,其求解方法也是不一而足,比较常用的有以下四种方法:
(1)代入法(Substitution Method)
代入法的基本步骤是先推测递归方程的显式解,然后用数学归纳法来验证该解是否合理。
(2)迭代法(Iteration Method)
迭代法的基本步骤是迭代地展开递归方程的右端,使之成为一个非递归的和式,然后通过对和式的估计来达到对方程左端即方程的解的估计。
(3)套用公式法(Master Method)
这个方法针对形如“T(n) = aT(n/b) + f(n)”的递归方程。这种递归方程是分治法的时间复杂性所满足的递归关系,即一个规模为n的问题被分成规模均为n/b的a个子问题,递归地求解这a个子问题,然后通过对这a个子间题的解的综合,得到原问题的解。
(4)差分方程法(Difference Formula Method)
可以将某些递归方程看成差分方程,通过解差分方程的方法来解递归方程,然后对解作出渐近阶估计。
下面就以上方法给出一些例子说明。
一、代入法
大整数乘法计算时间的递归方程为:T(n) = 4T(n/2) + O(n),其中T(1) = O(1),我们猜测一个解T(n) = O(n2 ),根据符号O的定义,对n>n0,有T(n) < cn2 - eO(2n)(注意,这里减去O(2n),因其是低阶项,不会影响到n足够大时的渐近性),把这个解代入递归方程,得到:
T(n) = 4T(n/2) + O(n)
≤ 4c(n/2)2 - eO(2n/2)) + O(n)
= cn2 - eO(n) + O(n)
≤ cn2
其中,c为正常数,e取1,上式符合 T(n)≤cn2 的定义,则可认为O(n2 )是T(n)的一个解,再用数学归纳法加以证明。
二、迭代法
某算法的计算时间为:T(n) = 3T(n/4) + O(n),其中T(1) = O(1),迭代两次可将右端展开为:
T(n) = 3T(n/4) + O(n)
因为字符串常量"I am happy"的最后由系统自动加上一个'\0') 因此,上面的初始化与下面的初始化等价
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
而不与下面的等价
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};
前者的长度是11,后者的长度是10.
说明:字符数组并不要求它的最后一个字符为'\0',甚至可以不包含'\0',向下面这样写是完全合法的。
char str[5]={'C','h','i','n','a'};
++++++++
可见,用两种不同方法初始化字符数组后得到的数组长度是不同的。
#include <stdio.h>
void main(void)
{
char c1[]={'I',' ','a','m',' ','h','a','p','p','y'};
char c2[]="I am happy";
int i1=sizeof(c1);
int i2=sizeof(c2);
printf("%d\n",i1);
printf("%d\n",i2);
}
结果:10 11
备份和恢复一个TFS(Team Foundation Server)服务器常常令人心生畏惧。因为这会涉及到很多服务和步骤。TFS(Team Foundation Server)2010一发布,我就知道我们必须要做些什么来改进这个过程,同时,我们也开始讨论如何简化这个过程。我们关注的主要客户是小型的团队,它们既没有数据中心运营团队,也没有知道如何导入和导出SQL备份的DBA(Database administrator)。
几个月以前,我们计划构建一个全新的Power Tool,这个工具将会极大地简化备份和恢复一个TFS(Team Foundation Server)服务器的过程。我很自豪地宣布,我们已经实现了这个Power Tool,它会包含在Power Tools的下一个版本中(现在,还没有确定具体日期,但是应该就在接下来的几个月内发布)。
在我们当前发布的备份指南中,最令人沮丧的事情是:你每次在服务器中添加一个新的项目集合的时候,你都必须要在这个新的数据库中安装一些新的存储过程,以确保它可以获得和其它所有的数据库一致的快照。据我所知,大多数人都会忘记做这件事情。虽然,这并不意味着世界末日,但是,如果你忘记做这件事情,它就无法给你提供最无缝的恢复体验。这个新工具最酷的一个特性是:你每次进行备份的时候,它都可以自动地扫描所有的项目集合,同时,它会确保安装了所有合适的快照,当你建立一个新的集合的时候,没有任何附加的备份工作需要你来完成。这个新集合会被自动地配置,然后添加到你现有的备份计划中。
你的部署越复杂,你的备份就越复杂。在这个讨论中,我将会把关注点放在TFS的初级用户上,因为这方面的简化是最大的,但是,这个Power Tool实际上可以帮助所有用户简化备份和恢复的过程。
当我们开始构建这个Power Tool的时候,我们决定要利用全新的2010管理控制台的一个未公开的特性:可扩展性。实际上,这个管理控制台是支持插件的,但是我们没有在文档中公开这些接口,因为我们还没有对它们进行足够的测试。这是第一次真正地对它们进行测试,我希望在将来我们可以把这些接口公开给第三方的插件。让我带你领略一下全新的备份体验,同时,我会告诉你这个工具可以做些什么。
配置一个备份计划
在你的TFS(Team Foundation Server)2010服务器上安装新版本的Power Tools以后(是的,这个工具只支持TFS(Team Foundation Server)2010),你会注意到在管理控制台中有一个新标签,叫做“Team Foundation Backups”。当你点击这个标签的时候,你会看到这样一个界面,通过这个界面,你可以配置你的TFS(Team Foundation Server)备份计划。
如果你点击“Create Backup Plan”,会启动一个向导,来引导你完成整个过程。这是这个向导的welcome页面:
点击“Next”,它会导航到第一个页面,在这个页面中你可以输入备份的路径和你希望保存备份的天数(超过这个天数以后,它会自动地删除备份)。当然,如果你希望自己手动删除备份,也可以很容易地做到——它们只是特定目录下的一些文件而已。
再次点击“Next”,你可以提供自动执行备份的账户,同时,你可以看到这个账户需要什么SQL权限。正如你将会看到的那样,以后的备份并不是一定要被自动化,但是他们可以被自动化。
再次点击“Next”,你现在可以进行一些配置,让备份服务把备份过程中的故障email给你。在这个例子中,我没有给我的TFS(Team Foundation Server)服务器配置SMTP主机,所以我唯一的选择是“No Email Alerts”。 这里你可以使用和其他TFS(Team Foundation Server)通知一样的email主机和地址,也可以指定唯一的收件人。如果你想指定多个收件人,你可以用逗号把这些收件人的email地址隔开。
再次点击“Next”,你现在可以配置时间表了。默认是每天晚上对你的TFS(Team Foundation Server)进行完整的备份。对于小型的TFS(Team Foundation Server)来说,这已经足够了。选择这个选项意味着将会在每天凌晨2点进行完整的备份。如果你想进行更多的控制,你可以点击“Advanced Schedules Options”。 如果你选择了“Advanced Schedules”,那么你会得到两个选项:1) Full, Differential and Transactional Schedule和2) Manual Backup Only。如果你选择了“Manual Backup Only”,它不会自动地执行任何的备份,只有当你运行管理控制台,点击“Take Full Backup Now”按钮的时候才会执行一次备份(稍后会详细说明这部分内容)。这里我选择“Full, Differential and Transactional Schedule”——这是一个十分具有代表性的企业备份策略。我把它设置成每个星期天的凌晨2点做一次完整的备份,每周的周一到周六的凌晨2点做一次差异备份(有时也称作增量备份),每15分钟做一次事务性的备份。这意味着我不会丢失15分钟以上的数据,这种策略的性能和存储开销并不大。SQL备份功能的这些特性真的很酷。 我已经配置好了时间表,点击“Next”,让我检查一下我的设置。 再次点击“Next”将会验证我提供的这些设置的有效性。你总不会希望等到第二天凌晨2点才发现你错误地输入了一些东西吧:)在这个例子中我收到了一个警告,因为我已经有了一个配置好的备份计划,而我正在重写它。这个工具规定一个TFS(Team Foundation Server)服务器只能拥有一个备份时间表。 点击“Configure”,将会为了备份而重新配置你的TFS(Team Foundation Server)服务器,这会对你的TFS(Team Foundation Server)服务器做出一些改动。 再次点击“Next”,现在你已经完成了所有的配置工作!对于备份来说,你的服务器已经完全配置好了(可以和文档比较一下:))。 进行一次备份
live555源代码下载(VC6工程):http://download.csdn.net/detail/leixiaohua1020/6374387
liveMedia 项目(http://www.live555.com/)的源代码包括四个基本的库,各种测试代码以及Media Server。四个基本的库分别是: UsageEnvironment&TaskScheduler, groupsock, liveMedia和BasicUsageEnvironment。UsageEnvironment 和TaskScheduler 类用于事件的调度,实现异步读取事件的句柄的设置以及错误信息的输出。另外,还有一个HashTable 类定义了一个通用的hash 表,其它代码要用到这个表。这些都是抽象类,在应用程序中基于这些类来实现自己的子类。groupsock 类是对网络接口的封装,用于收发数据包。正如名字本身,groupsock 主要是面向多播数据的收发的,它也同时支持单播数据的收发。liveMedia 库中有一系列类,基类是Medium,这些类针对不同的流媒体类型和编码。
各种测试代码在testProgram 目录下,比如openRTSP 等,这些代码有助于理解liveMedia 的应用。
Media Server 是一个纯粹的RTSP 服务器。支持多种格式的媒体文件:
* TS 流文件,扩展名ts。
* PS 流文件,扩展名mpg。
* MPEG-4视频基本流文件,扩展名m4e。
* MP3文件,扩展名mp3。
* WAV 文件(PCM),扩展名wav。
* AMR 音频文件,扩展名.amr。
* AAC 文件,ADTS 格式,扩展名aac。
用live555开发应用程序 基于liveMedia 的程序,需要通过继承UsageEnvironment 抽象类和TaskScheduler 抽象类,定义相应的类来处理事件调度,数据读写以及错误处理。live 项目的源代码里有这些类的一个基本实现,这就是“BasicUsageEnvironment”库。BasicUsageEnvironment 主要是针对简单的控制台应用程序,利用select 实现事件获取和处理。这个库利用Unix 或者Windows 的控制台作为输入输出,处于应用程序原形或者调试的目的,可以用这个库用户可以开发传统的运行与控制台的应用。
通过使用自定义的“UsageEnvironment”和“TaskScheduler”抽象类的子类,这些应用程序就可以在特定的环境中运行, 不需要做过多的修改。需要指出的是在图形环境(GUI toolkit)下,抽象类TaskScheduler 的子类在实现doEventLoop()的时候应该与图形环境自己的事件处理框架集成。 基本概念 先来熟悉在liveMedia 库中Source,Sink 以及Filter 等概念。Sink 就是消费数据的对象,比如把接收到的数据存储到文件, 这个文件就是一个Sink。Source 就是生产数据的对象,比如通过RTP 读取数据。数据流经过多个'source'和'sink's,下面是一个示例:
'source1' -> 'source2' (a filter) -> 'source3' (a filter) -> 'sink'
ArcEngine对矢量数据进行风格化实在是得心应手,同样的对于栅格图像也能进行风格化!以前没接触过,今天正好需要,做出了栅格图像的渲染!下面实现的思路: 1.定义渲染的一系列接口 2.判断图像是否建立了直方图,如果没有则进行创建。 3.定义颜色序列,为渲染提供渲染的方案。 4.调用Render方法进行渲染。 下面是代码:有两个方法,一个是加载栅格数据,一个是进行渲染,接着在事件里面调用方法,实现图像渲染! /// /// 栅格分类专题图 /// /// 栅格图层 public static void funColorForRaster_Classify(IRasterLayer pRasterLayer) { IRasterClassifyColorRamp Renderer pRClassRend = new RasterClassifyColorRampR enderer() as IRasterClassifyColorRamp Renderer; IRasterRenderer pRRend = pRClassRend as IRasterRenderer; IRaster pRaster = pRasterLayer.Raster; IRasterBandCollection pRBandCol = pRaster as IRasterBandCollection; IRasterBand pRBand = pRBandCol.Item(0); if (pRBand.Histogram == null) { pRBand.ComputeStatsAndHist(); } pRRend.Raster = pRaster; pRClassRend.ClassCount = 10; pRRend.Update(); IRgbColor pFromColor = new RgbColor() as IRgbColor; pFromColor.
没事干总结了一些 平常经常需要用到的 文件显示的东西 一些东西,后面还会陆续补充的 - -
TextView text0= (TextView) this.findViewById(R.id.text0); TextView text1= (TextView) this.findViewById(R.id.text1); TextView text2= (TextView) this.findViewById(R.id.text2); TextView text3= (TextView) this.findViewById(R.id.text3); TextView text4= (TextView) this.findViewById(R.id.text4); EditText edittext5= (EditText) this.findViewById(R.id.text5); TextView text6= (TextView) this.findViewById(R.id.text6); TextView text7= (TextView) this.findViewById(R.id.text7); String s ="甘家寨的8排裤带面太好吃了,我和我的小伙伴们惊呆了!"; // u-underline i -italic b - bold text0.setText(Html.fromHtml("<u>"+s+"</u>")); //下面有下标 text1.setText(Html.fromHtml("<b>"+s+"</b>")); //粗体 text2.setText(Html.fromHtml("<i>"+s+"</i>")); //斜体 text3.setText(Html.fromHtml("<a href=\'http://www.google.com\'>"+ s +"</a>" )); //超连接 //如果要在 Strings 里面直接设置的话 需要转义 //例如 //<resources> //<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.
遇到一个典型的schedule问题。
<3>[26578.636839] C1 [ swapper/1] BUG: scheduling while atomic: swapper/1/0/0x00000002 <6>[26578.636869] C0 [ kworker/u:1] CPU1 is up <4>[26578.636900] C1 [ swapper/1] Modules linked in: bcm15500_i2c_ts <4>[26578.636961] C1 [ swapper/1] [<c00146d0>] (unwind_backtrace+0x0/0x11c) from [<c0602684>] (__schedule+0x70/0x6e0) <4>[26578.636991] C1 [ swapper/1] [<c0602684>] (__schedule+0x70/0x6e0) from [<c06030ec>] (schedule_preempt_disabled+0x14/0x20) <4>[26578.637052] C1 [ swapper/1] [<c06030ec>] (schedule_preempt_disabled+0x14/0x20) from [<c000f05c>] (cpu_idle+0xf0/0x104) <4>[26578.637083] C1 [ swapper/1] [<c000f05c>] (cpu_idle+0xf0/0x104) from [<c05e98e0>] (cpu_die+0x2c/0x5c) <3>[26578.637510] C1 [ swapper/1] BUG: scheduling while atomic: swapper/1/0/0x00000002 <4>[26578.
转自http://blog.csdn.net/great3779/article/details/7255098
前段时间写了一篇博文,讲述了如何搭建本地SVN服务器。
http://blog.csdn.net/great3779/article/details/7217986。
这几天在网上闲逛的时候,发现Google同志已经为开源开发者提供了基于云计算的网络版本管理服务器Google-Project-Hosting,而且支持SVN版本管理。大喜过望,赶快初步研究了一下,写此博文与各位初学者共勉。相对本地SVN环境,网络SVN的好处在于可以随时随地管理自己的源码,而且可靠性高,合作性好。下面展示如何使用Google-Project-Hosting来搭建网络SVN服务。
1. 登陆https://code.google.com/hosting/
2. 点击右上角的Sign in,使用Google账号登入。
3. 点击Create a new project,创建一个新项目。
4. 依次填写项目名、项目摘要、描述、版本控制系统、源代码license、项目标签并填写字符校验后,点击Create project创建新的项目。
5. 创建完毕后,显式如下界面:
6. 到目前为止,你已经成功在Google-Project-Hosting上建立了属于你自己的项目。那么,现在最重要的一点是,如何知道你项目的SVN路径呢?点击web界面上的Source标签,找到如下字样“https://great3779-test-project-name.googlecode.com/svn/”,这就是你的SVN路径了。
7. 接下来的操作,就好像在本地上使用SVN一样了。打开SVN,URL中输入“https://great3779-test-project-name.googlecode.com/svn”,是不是看到了很熟悉的界面?那么好吧,开始你的开源项目吧!
几点注意事项:
1) 允许个人创建的开源项目数最多为25个,并且对每日创建的项目数也有限制(The site limits the number of projects one person can have to 25. Additionally, there is a limit as to the number of projects that may be created in one day)。
2) 版本控制系统的选择。Google-Project-Hosting提供了三种版本控制系统,分别是“Git”、“Mercurial”和“Subversion”。由于我一直使用Subversion控制版本,因此本文档采用了Subversion做为示例。选择其他版本控制系统的同学,可依据相应的版本控制系统操作。
3) 代码协议选择。Google-Project-Hosting提了9种代码协议,你可以依据自己的需要,选择相应的代码协议。
4) Google-Project-Hosting提供了4G的空间管理你的源代码,一次最大上传size是200M(足够了!)。你可以在web页面上的管理->高级下面查看空间使用情况。此外,还可以允许50M的附件。
5) 对于使用Subversion做为版本控制,且使用Visual Studio的同学,推荐TortoiseSVN+ AnkhSVN黄金组合。
6) 如果要在本地搭建SVN服务器,请参看我的另一篇博文:http://blog.csdn.net/great3779/article/details/7217986