-
java swing实现简单的计算器源代码程序
2016-05-20 09:36:33 -
对运行于STM32的嵌入式代码程序进行加密
2015-06-03 18:00:41目的:对运行于STM32的嵌入式代码程序进行加密 编译环境:IAR Embedded System for ARM5.5 一.STM32Flash组织 STM32的Flash包括主存储器(HD版本,512KB)+信息块。信息块包括2KB的系统存储器(用于系统自举启动...目的:对运行于STM32的嵌入式代码程序进行加密
编译环境:IAR Embedded System for ARM5.5
一.STM32Flash组织
STM32的Flash包括主存储器(HD版本,512KB)+信息块。信息块包括2KB的系统存储器(用于系统自举启动代码)和16字节的选项字节(8个字节数据+8个字节数据的反码)。
二、STM32读保护
STM32读保护是通过设置RDP选项字节,然后在系统重新复位加载了新的RDP选项字节后启动的。当保护字节被写入相应的值以后:
●通过从内置SRAM或FSMC执行代码访问主闪存存储器的操作,通过DMA1、DMA2、JTAG、SWV(串行线观察器)、SWD(串行线调试)、ETM和边界扫描方式对闪存的访问都将被禁止。
●只允许从用户代码中对主闪存存储器的读操作(以非调试方式从主闪存存储器启动)。
●第0~3页(小容量和中容量产品),或第0~1页(大容量和互联型产品)被自动加上了写保护,其它部分的存储器可以通过在主闪存存储器中执行的代码进行编程(实现IAP或数据存储等功能),但不允许在调试模式下或在从内部SRAM启动后执行写或擦除操作(整片擦除除外)。
●所有通过JTAG/SWD向内置SRAM装载代码并执行代码的功能依然有效,亦可以通过JTAG/SWD从内置SRAM启动,这个功能可以用来解除读保护。当读保护的选项字节转变为存储器未保护的数值时,将会执行整片擦除过程。
●可以使用系统启动程序解除读保护(此时只需执行系统复位即可重新加载选项字节),芯片自动擦除Flash所有内容。
三.STM32的加密
1.使用系统启动程序STM32 Flash Loader demonstrator将Flash设置为读保护。
所有以调试工具、内置SRAM或FSMC执行代码等方式对主存储器访问的操作将被禁止,只允许用户代码对主Flash存储器的读操作和编程操作(除了Flash开始的4KB区域不能编程)。用户代码允许自主编程可以实现IAP或者数据存储等功能。
这样破解者将不能用调试工具、内置SRAM或者FSMC执行代码等方式读出Flash中的代码。破解者也不能使用系统启动程序读取代码,因为要解除读保护,将执行整个芯片的擦除操作。
2.主程序中使用设备ID保护
即使将Flash设置为读保护,破解者也可以通过IAP下载自己的一段小程序,从而读出Flash中的内容。因此,还需要利用设备的唯一ID进行加密保护。在主程序中,加入对设备唯一ID的检测,这样即使破解者读出了芯片中的二进制码,也不能用这个二进制码去复制新的器件。具体实现方法:
(1)在应用程序中定义1个(32位甚至更多)const变量,变量值全为0xFF。每次启动程序时,检查const变量值如果全为0xFF,就读器件的唯一ID,通过Flash编程写入该const变量中(因为全是0xFF,所以可以编程写入)。
(2)在程序中多个地方检查const变量,如果变量值不为0xFF并且与设备ID不一致,就执行与功能无关代码(比如自擦除)。
这样,即使破解者读出了芯片中的二进制码,因为这份二进制码包含了设备唯一ID,具有唯一性,所以不能复制到其他芯片中。
为了避免破解者利用反汇编,根据芯片ID数据在二进制文件中查找对应相同数据的位置从而破解,可以将ID拆散成不同的组合,并且写到不同且不连续的地方。更进一步,可在程序中检测多份这样的分散ID,以增加反汇编的难度。或者将CPUID进行加密,Flash中存储加密后的结果。
四.程序加密的实现
[cpp] view plaincopy
01.//加密后的CPUID
02.volatile const static uint32 CPUIDEncrypt = 0xFFFFFFFF;
03.
04.//写入加密数据
05.void WriteEncrypt(void)
06.{
07. //第一次烧写:将UID写入到Flash中
08. if(CPUIDEncrypt==0xFFFFFFFF)
09. {
10. uint32_t CpuID[3];
11. //获取CPU唯一的ID
12. CpuID[0]=*(vu32*)(UID_BASE);
13. CpuID[1]=*(vu32*)(UID_BASE+4);
14. CpuID[2]=*(vu32*)(UID_BASE+8);
15.
16. //加密算法,很简单的加密算法
17. uint32_t EncryptCode=(CpuID[0]>>3)+(CpuID[1]>>1)+(CpuID[2]>>2);
18. FLASH_Unlock();
19. FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
20. FLASH_ProgramWord((uint32_t)&CPUIDEncrypt, EncryptCode);
21. FLASH_Lock();
22. }
23.}
24.//判断加密
25.bool JudgeEncrypt(void)
26.{
27. uint32_t CpuID[4];
28. //获取CPU唯一的ID
29. CpuID[0]=*(vu32*)(UID_BASE);
30. CpuID[1]=*(vu32*)(UID_BASE+4);
31. CpuID[2]=*(vu32*)(UID_BASE+8);
32. //加密算法,很简单的加密算法
33. CpuID[3]=(CpuID[0]>>3)+(CpuID[1]>>1)+(CpuID[2]>>2);
34. //检查Flash中的UID是否合法
35. return (CPUIDEncrypt == CpuID[3]);
36.}
1、将写入加密数据和判断加密两个功能分开。写入加密在PrsCtrlTask开始的地方;而判断加密分布到程序的各个角落。2、非常重要的是CPUID加密值的定义一定要加“volatile”类型:
volatile const static uint32 CPUIDEncrypt = 0xFFFFFFFF;
否则按速度优化编译,在判断加密值,不会重新读取加密值,导致判断出错。
3、在工程选项Options->Debugger->Download中选择: use flash loader
否则主程序中对Flash编程将不成功。
参考资料:
STM32F10x微控制器参考手册(2009年12月第10版).pdf
-
如何阅读他人的项目源代码程序
2018-09-30 21:26:01相信很多人和我一样,面对着别人密密麻麻的代码,宁愿自己从零开始编写自己的代码,也不...然而,阅读他人的项目源码是每一个写程序的人(我只是个在项目需要的时候偶尔写程序的,不敢自称程序员)必须经历的事情。...阅读他人的项目源代码步骤
相信很多人和我一样,面对着别人密密麻麻的代码,宁愿自己从零开始编写自己的代码,也不愿在别人代码的基础上修改: 阅读别人的代码太痛苦了! 在注释不明确、技术文档缺失,这一行行的代码犹如阅读天书一般,痛苦、煎熬,迷茫。因此,对于阅读别人的代码,我从内心有一种强烈的抵制情绪,甚至有些恐惧。
然而,阅读他人的项目源码是每一个写程序的人(我只是个在项目需要的时候偶尔写程序的,不敢自称程序员)必须经历的事情。也许我们想提升自己的编程技能,学习他人优秀的编程风格,那阅读优秀的项目代码是毕竟的途径;也许我们要研究某方面的功能或技术,那如果某个项目源码中已经有该技术或者功能的实现,根据源码“逆向工程”也是个方法;也许我们需要被迫接手别人未完成的项目,需要在别人已完成部分的基础上实现功能的修改或则项目的移植,阅读他人源码则关系到我们吃饭的本领。恩,我就是属于第三种,为了移植别人项目中的功能而被迫硬着头皮去阅读已有的代码。为了让自己坚持下去,我逐渐说服自己要乐于从阅读他人代码中学习,你看,阅读他人代码的好处多多呀/微笑脸。与其在内心中一直抗拒阅读他人代码,不如改变自己的心态,锻炼自己阅读他人代码的能力和技巧,用熟练的方法和套路提高阅读他人源码的体验。
我认为生活中遇到的绝大多数事情都可以总结出一种比较高效做事方法,或者叫套路,在阅读他人项目源码这件事情上也不例外。在看了一个月代码的基础上,综合前辈们的经验和自己的亲身体会,总结出了一套比较高效地阅读他人项目源代码的方法,如果你感觉叫套路或者方法有点儿太low,咱可以改头换面叫艺术。在我们遵循这种方法去阅读代码时,一般都会取得事半功倍的结果,希望自己今后能不断实践并优化这套方法,也希望能对正因阅读他人代码而苦恼的你有所帮助。备份并编译运行代码
拿到项目源代码之后,首先应该对代码进行备份,因为很可能我们在哪儿就不小心改动了代码,养成备份的好习惯是很重要的。然后我们可以在IDE中编译运行,虽然看不到项目的细节,但是通过运行程序,我们会对程序的功能和运行过程有更加直观的认识。同时,编译运行的过程会让你了解到它使用的库、它所依赖的开发框架等等,这是提高我们对某个特定项目理解的好方法。如果我们想编写与正在探究的特定项目类似的自己的软件,可能会对我们应该使用的框架或库有一些想法。
熟悉项目编程语言的语法和惯例用语
我们要对项目代码的编程语言有一定的了解,想要读英文小说,起码应该学习一下英语单词和语法吧。每种语言都有自己的一套约定、样式和语法,深入了解某个特定语言有助于提高代码阅读技能。同时,我们要熟悉这种语言编程的一些惯例,例如基本的命名原则。我们知道命名一般有驼峰法、匈牙利命名法、帕斯卡命名法,倘若我们熟悉这戏命名原则,则很容易辨别出所阅读代码的命名方式,那么后面阅读的时候通过变量和函数的名字我们就可以获得比较丰富的信息。因此,在拿到代码后,首先要找一下是否有程序命名范例说明,没有的话自己根据代码总结出命名规则,这对后续提高阅读速度是十分有帮助的。
看项目文档,有机会可向项目开发人员请教
公司的项目代码一般都会有相关的设计文档,描述项目的设计过程和基本的内容框架,通过这些文档,我们对项目可以有个整体的认识,比如项目分为几个模块儿,各有什么功能?使用了什么开源库?在代码看到一定程度后,可以带着问题和自己的理解去想项目的开发人员请教,因为他们对代码的熟悉程度比我们强,比自己在那憋着瞎猜代码的含义要高效得多?再说,你帮我下,我帮你下,一来一回还能增加感情呢~但是注意一定是带着问题和自己的理解去沟通交流,否则啥都没看就去问,很容易招致他人的反感。
自上而下构建项目程序的系统架构
阅读代码很容易陷入一个误区:刚开始就企图把所遇到的每一行程序都搞明白其功能和实现。一叶障目,不见泰山。过于纠结具体的实现细节会在最开始就把我们陷于泥潭之中而不能前进,浪费时间并消磨我们阅读代码的耐心和信心。相反,在最开始时我们应该专注于掌握项目程序的系统架构,根据其模块儿划分和调用逻辑在脑海里构建其骨架,即要知道它先干嘛、再干嘛,为了干这个需要与哪些模块儿进行什么交互,从宏观上对项目有一个全面的认识。为了弄清其架构,我们可以采取top-down的方法,一般可以从其主函数出发,一般是main()函数或者其他函数,然后顺着项目程序的主要功能这个线索一路走下去,根据函数的名字以及层次关系确定每一个函数的大致用途即可,将理解作为注解写在这些函数的边上,不用关注这些函数的具体实现。在阅读时,要利用uml建立各类对象之间的关系,并根据自己要展开的层级,随手在笔记本上绘制出树状结构,忽略对系统架构不重要的细节,逐渐建立该项目代码的系统架构。注意在该步骤中一定要注意展开的层级,这涉及到这部分工作量的问题,究竟需要展开到那一层,需要根据我们的系统架构定位有关,要看我们所希望的系统架构具体到哪一个层次。
建立系统架构和功能逻辑之间的关联
在完成系统架构的搭建之后,我们需要根据程序功能,理解系统架构中每一部分的功能,以及其和其他部分的逻辑交互。这一步对于我们进一步理解系统架构的逻辑,以及后面对每个功能模块儿详细功能的深入探究是很重要的。这个过程与上一个过程有重叠的部分,在对应完每部分的功能之后,我们要对整个系统功能进行模拟逻辑推理,确定我们猜测的各模块儿的功能是合理的。
核心代码重点剖析与注释
完成系统架构搭建之后,需要转入bottom-up这一部分是我们理解程序某一个程序功能的重要过程,使我们阅读代码的核心之一。此时我们应该要逐行进行阅读,搞清楚每个语句的功能和实现方法,搞清变量的意义和关联关系,搞清实现的逻辑和算法。从我们最感兴趣的一个点,开始设置断点,跟进去看发生了哪些事情,这一块儿和架构设计哪一块是match的。然后就是阅读过程中注释的书写了,这是加深程序理解的重要方法。
基本原则是:- 猜测的去写,刚开始阅读一个代码的时候,很难一下子就确定所有的函数的功能,不妨采用采用猜测的方法去写注解,根据函数的名字、位置写一个大致的注解,当然一般会有错误,但你的注解实际是不断调整的,直到最后你理解了全部代码。
- 按功能去写,别把注解写成语法说明书,千万别看到fopen就写打开文件,看到fread就写读数据,这样的注解一点用处都没有,而应该写在此处开发参数配置文件(****。dat)读出系统初始化参数。
- 在写注解的使用另外要注意的一个问题是分清楚系统自动生成的代码和用户自己开发的代码,一般来说没有必要写系统自动生成的代码。象delphi的代码,我们往往要自己编写一些自己的代码段,还要对一些系统自动生成的代码段进行修改,这些代码在阅读过程是要写注解的,但有一些没有修改过的自动生成的代码就没有必要写注解了。
- 在主要代码段要写较为详细的注解。有一些函数或类在程序中起关键的作用,那么要写比较详细的注解。这样对你理解代码有很大的帮助。5对你理解起来比较困难的地方要写详细的注解,在这些地方往往会有一些编程的技巧。不理解这些编程技巧对你以后的理解或移植会有问题1。
调整心态,反复阅读
和看晦涩难懂的树木一样,代码也需要反复阅读才能逐渐增加理解。我有个好心态,就是在遇到难懂的书目和代码时,我总是告诉自己不要着急,一边看不懂再来一遍,看个三五遍自然懂了,所谓“书读百遍,其意自现”嘛。其实远远不用5遍,大概三遍左右一般就能弄懂了,5遍的时候已经了熟于心了。项目源代码的代码量多没啥,但是我们自己心里不要着急,慢慢来,自己努力的功夫到了,多花点时间在看代码思考代码上,代码总会被你一点点感动的。如果遇到看不懂代码的情况,就分析下自己为什么看不懂?是项目使用了自己不熟悉的设计模式?还是一些业务领域基础知识自己没有掌握?或者是自己对项目框架的理解不对导致的,要自己主动的分析。
工欲善其事,必先利其器
用着顺手的IDE真的会为我们阅读代码节省很多时间。由于工作环境限制,刚开始时我在VS2003上面阅读项目代码,那体验额emmmm…无法更改IDE,我就找个辅助工具吧。后来找到了VAssistX,真的方便了很多,阅读效率和心情都得到了很大提升。据网友们推荐,source insight 看代码很不错,以后我也试试。同时,我们也可以用EA(Enterprise Architecture)逆向工程绘制工程的uml 类图,帮助我们理解项目中各类之间的调用关系。
揣摩作者的编程习惯与思想
除了工具及技巧之外,「想要阅读程序代码,得先试着阅读写这个程序代码的程序人的心。」这句话说来十分抽象,或许也令人难以理解。
当你在阅读一段程序代码时,或许可以试着转换自己的立场,从旁观者的角度转换成为写作者的心态,揣摩原作者的心理及处境。当你试着设身处地站在他的立场,透过他的思考方式来阅读、追踪他所写下的程序代码,将会感觉更加流畅。我在阅读非自己所写的程序代码时,会观察原作者写作的习惯,藉以对应到脑中所记忆的多种写作模型。在阅读的过程中,读完几行程序代码,我会试着猜想原作者在写下这段程序代码时的心境。他写下这段程序代码的用意是什么?为什么他会采取这样的写法?顺着原作者的思考理路阅读,自己的思考才能更贴近对方写作当时的想法。当你短暂化身为原作者时,才能更轻易的理解他所写下的程序代码。如果你能知道原作者的背景,程序设计时的偏好,阅读他的程序代码,就更能得心应手了2。
最后,推荐大家一本书,《代码阅读与实践》,可能大家看完会有更多收获。祝枫
2018年9月30日于深圳
-
java分析测试代码程序执行时间与消耗内存
2019-07-18 10:52:43突然想用idea分析每个程序执行消耗的时间和内存,但是网上搜了一下好像也没明确说明要怎么办的,看了几篇类似的帖子,自己造了一个java单例类,定义了start和end方法来分析两个方法之间代码的执行。 代码如下: ...最近刷LeetCode题的时候,突然想用idea分析每个程序执行消耗的时间和内存,但是网上搜了一下好像也没明确说明要怎么办的,看了几篇类似的帖子,自己造了一个java单例类,定义了start和end方法来分析两个方法之间代码的执行。
代码如下:
package LeetCode.util; /** * @author 肖航 * @date 2019/7/18 * @description 测试代码使用的时间与内存。 */ public class Examination { public static long concurrentTime1, concurrentTime2, concurrentMemory1, concurrentMemory2; public static void start() { //得到程序开始时的系统时间(纳秒级,最终转化毫秒,保留小数点后两位) concurrentTime1 = System.nanoTime(); //得到虚拟机运行、程序开始执行时jvm所占用的内存。 Runtime runtime = Runtime.getRuntime(); concurrentMemory1 = runtime.totalMemory()-runtime.freeMemory(); } public static void end() { //得到程序执行完毕时的系统时间(毫秒级) concurrentTime2 = System.nanoTime(); //得到虚拟机运行、所要测试的执行代码执行完毕时jvm所占用的内存(byte)。 Runtime runtime = Runtime.getRuntime(); concurrentMemory2 = runtime.totalMemory()-runtime.freeMemory(); //计算start和end之间的代码执行期间所耗时间(ms)与内存(M)。 // 1毫秒(ms) = 1000微秒(us) = 1000 000纳秒(ns) // 1M = 1*2^20 byte = 1024 * 1024 byte; String time = String.valueOf((double)(concurrentTime2 - concurrentTime1)/1000000); String memory = String.valueOf((double)(concurrentMemory2-concurrentMemory1)/1024/1024) ; System.out.println("---------------您的代码执行时间为:" + time.substring(0,time.equals("0.0") ? 1 : (time.indexOf(".")+3)) + " ms, 消耗内存:" + memory.substring(0,memory.equals("0.0") ? 1 : (memory.indexOf(".")+3)) + " M + !---------------"); } }
使用方法:
Examination.start(); //在此处输入测试代码段 Examination.end();
其中end方法会输出代码段的时间和内存。其中要注意的是以下几行代码的执行本身就要消耗一定的时间:
concurrentTime1 = System.nanoTime(); Runtime runtime = Runtime.getRuntime(); concurrentMemory1 = runtime.totalMemory()-runtime.freeMemory(); concurrentTime2 = System.nanoTime(); Runtime runtime = Runtime.getRuntime(); concurrentMemory2 = runtime.totalMemory()-runtime.freeMemory();
实测这几行代码的执行时间为0.06ms左右,也就是说结果会有0.06ms左右的误差,而内存则不存在这个问题。
您也可以在main方法中只执行这两个方法,来查看误差时间值。
-
7个代表性的Android应用程序完整源代码
2011-06-14 15:04:307个比较具有代表性的Android应用程序源代码! -
没有灵魂的微信小程序代码转支付宝小程序代码
2019-01-24 09:55:45没有灵魂的微信小程序代码转支付宝小程序代码微信小程序与支付宝小程序直面代码的替换内容功能快捷键插入链接与图片如何插入一段漂亮的代码片导出与导入导出导入 微信小程序与支付宝小程序 作为一个微信小程序的半... -
微信小程序代码大全 - 小程序开发福利
2018-11-08 12:14:44小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) ... 微信小应用示例代码(phodal/weapp-quick) 微信小应用地图定位demo(gi... -
微信小程序 移动端商城 完整源代码
2016-11-09 17:37:57微信小程序 移动端商城 完整源代码 -
程序猿的节日:1024,今天祝愿全球所有程序猿们、IT精英们节日快乐!——我在上海写代码
2018-10-24 15:57:19——我在上海写代码 程序猿的节日: 祝愿全天下程序猿们、IT精英们节日快乐!今天是属于我们的节日,该狂欢的时候,就不要吝啬。今天晚饭,一定要多加个鸡腿,要对自己好一点。平常也要多加锻炼身体,跑步、打... -
关机程序代码
2012-07-17 20:49:55【转载请注明出处:... 1.使用vc 建立win32 Application 工程,点击OK,选择“A typical “Hello World” Application,选择finish---->OK 2.在程序中添加如下代码 : BOOL EnableShutDownPriv() -
微信小程序 实例汇总 完整项目源代码
2016-11-01 17:46:47微信小程序 实例汇总 完整项目源代码 -
webstorm智能提示小程序代码,小程序代码自动补全,webstorm开发小程序实时编译查看运行效果
2018-09-03 23:11:46- 1,代码自动补全 - 2,实时编译查看小程序运行效果 一,先来解决webstorm开发小程序时智能提示问题 1,打开webstorm设置页面,找到File Types 2,在File Types里找到html,然后点击加号,添加 *.wxml... -
开发程序不写代码,而是靠拼图?
2021-01-29 18:54:11Blockly 是一个向 Web 和移动应用程序添加可视化代码编辑器的库,块之间使用互锁的图形块来表示代码,如变量,逻辑表达式,循环等。该编辑器将代码表示为一个个的图形块,通过图形块之间的连接保证语法的正确性,... -
Python学习笔记(15)-Python代码转换为exe可执行程序详解
2017-06-14 15:25:26所以哪怕只会写一个HelloWorld,也要弄成exe程序,方便伟大的代码传播事业。其实很简单,有一个现成的pyInstaller工具,直接用就是了。二,pyInstaller安装配置1,打开网址:pyInstalller下载网址如图: 因为我的... -
位图转换G代码小程序
2019-11-15 09:15:46位图转G代码轮廓加工轨迹程序I2G(img2gcode) 背景 最近实验室要用机器人写字画图,但流程都是利用已有的软件去生成g代码,心中不仅冒出个想法,其实可以利用opencv的二值处理和轮廓提取来直接获得轨迹坐标,然后生成... -
【流浪地球】春节十二响程序开源代码
2019-02-20 17:42:08代码和程序在我的github: 流浪地球-春节十二响开源代码 ,下载前记得star哦。最后在此提示您: 博文千万条,版权第一条。转载不规范,博主两行泪! 部分代码如下: 代码实现效果如下: >>>... -
restTemplate微信小程序登陆代码 SpringBoot实现小程序登录代码
2020-08-26 17:07:25前端需要传递用户授权的 code private String appId = "111"; private String secret = "99999999"; @Autowired private RestTemplate restTemplate;... } 如何获取AppID(小程序ID) 和 AppSecret(小程序密钥) ? -
5种方法对python程序代码做性能分析和计时统计
2018-04-21 18:31:41以下4种方法分别针对 代码块、代码程序文件、 函数 进行性能计时统计 time.time() time.clock() /time.perf_counter() time命令 timeit模块 timethis装饰器 time.time() 返回当前时间的时间戳 ... -
微信小程序+Java后台开发(详细解释,附代码)
2019-02-18 12:59:54全部代码链接 链接:https://pan.baidu.com/s/1GiIXKgu76Urr7QfZ-U7W9A 提取码:mpio 通过这个博客,你可以快速的搭建一个微信小程序前端和后台相连的一个功能,在这里我会详细的解说每一个步骤,就是如何实现小... -
计算Python的代码块或程序的运行时间
2016-11-10 00:44:041.运用场景在很多的时候我们...2. 实现方法计算Python的某个程序,或者是代码块运行的时间一般有三种方法。 方法一 import datetime start = datetime.datetime.now() run_function(): # do somethingend = da -
小程序代码示例整理
2019-04-19 16:30:30以下是分享了一部分小程序的代码示例,希望能够帮助到你们,抓紧收藏吧 微信小程序知乎日报 https://github.com/myronliu347/wechat-app-zhihudaily 微信小程序购物车案例 ... 微信小程序–聊天室功能 ... -
最全的微信小程序源代码
2019-05-05 21:41:53wx-gesture-lock微信小程序的手势密码 ...shitoujiandaobu小程序:石头剪刀布(附代码说明) audiodemo微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义 star微信小程序开发之五星评分 swit... -
Unity——退出程序代码
2017-06-06 21:49:04在退出按钮的点击事件中添加以下代码: Application.Quit(); 即可实现退出程序的功能。 -
IOS 退出程序APP代码
2014-07-04 16:07:12怎样用代码方式退出IOS程序 -
代码与程序的区别与联系
2017-08-08 11:02:01代码与程序的区别与联系,你真的懂么?请试着解释下面2段代码。 //第一段程序:fork与多进程 //第二段程序:sleep(wait)与多线程 能看得懂这2段代码,才算是入门了吧~ (有的时候口头上能说出来和真正的理解可不... -
OneNote 程序代码高亮插件
2013-02-19 10:49:33之前把程序代码放到OneNote文件中也一直苦恼不能像博客那样,设置代码的格式。现在找到了OneNote的程序代码插件OneNoteHighlight,可以支持12种语法,这样,就可以把OneNote作为个人的代码SVN库,一些有用的代码,放... -
微信小程序源代码demo
2017-01-09 21:33:30微信小程序源代码 -
C语言代码行数分类统计小程序(源代码)
2016-05-07 20:31:211) 问题描述: 读入一个(最多9个)C程序代码文件,统计程序中代码、注释和空行数以及函数的个数,显示函数名并生成相应的记录日志。 2) 基本要求如下: (1)、把程序文件(如.c或者.txt等)按字符顺序读入源... -
打印自身源代码的程序
2016-09-16 10:56:55任意选定一个语言写一个打印自身源代码的程序,这个程序不允许读取或者写其他文件的数据,程序必须是完全独立的。 很有趣吧?我正在学习C语言,这个问题是我在查找其他资料时看到的,这激发了我的兴趣,我躺在... -
计算24点程序代码
2017-01-24 17:23:48第一种代码 #include char mark[ 4 ]={ '+' , '-' , '*' , '/' }; float cal(float x ,float y , int mark) { switch(mark) { case 0 : return x + y ; case 1 : return x - y ; case 2 : return...