编程实战
文章平均质量分 56
各类编程语言学习、实战使用汇总,编程技巧与经验积累和分享。编程实战技巧参考
技塑未来-苏导
专注于嵌入式系统、无线网络通信领域的技术干货和发展趋势分享,欢迎联系交流!
展开
-
Python虚拟环境一文掌握-提升你的开发效率
本文将介绍Python虚拟环境的基础知识、如何使用,以及其工作原理是怎样的原创 2022-11-22 23:10:50 · 2182 阅读 · 0 评论 -
Python matplotlib模块安装
简述python code中有import matplotlib,但是使用的Ubuntu 16.04 64bit上的python3.5没有这个module,需要进行安装。安装使用如下命令开始安装:pip3 install matplotlib发现提示如下:freetype: no [The C/C++ header for freetype2 (ft2build.h) could not be f原创 2016-07-29 15:26:29 · 6287 阅读 · 0 评论 -
Python简述
简述Python是一门脚本语言,与Windows的批处理脚本BAT和Linux的Shell相比,其语言明显简洁很多的,而且功能也很强大。BAT一般会用做一些小工具来使用,比如简单的文件操作,工具链中加入一些转换等等。Python应该更多的是以Project为单位来开发各种应用场合的应用,比如很多测试系统的构建。官网https://www.python.org/ 官方资料,毕竟是设计者,资料更权威可原创 2016-04-20 13:51:12 · 600 阅读 · 0 评论 -
Python Struct Module学习
简述Python的struct模块被用来转换为字节为单位的binary数据。即实现Python数值和C语言中的字节数据之间的转换。Python好像也提供了bytes对象。 字节数据在binary文件存取,网络连接中会使用比较多。将C结构体转为Python时(称为packing?),因为C结构中会有字节对齐的问题,所以转为Python也要注意做padding,而在将Python转换为C结构体(unp原创 2016-04-20 18:22:53 · 774 阅读 · 0 评论 -
Python Serial串口通信模块安装
简述一个python项目需要用到PC的串口时,一般会在Application code中看到会有类似“import serial”的操作,如果没有安装serial module,那么在运行.py脚本时就会出错,提示找不到serial module的。而pyserial就提供这个serial module,并支持Windows, MAC, Linux系统。serial module安装我使用的是Ubu原创 2016-07-28 16:08:03 · 15603 阅读 · 3 评论 -
Python中的字节串
简述用Python开发一些协议通信相关的程序时,许多时候要用到字节串的概念,即类似于C语言中的字节数组。因为协议在通信的传输过程中,数据以payload的字节流传输,因此Python中的字节串的开发使用需要注意。b”的表示的注意Python中用类似b’\x09\x89\x78’可以表示字节串,实际上b”是类似字符串,但是可以用Hex格式表示其中的每个字节的值,这样很直观。 b’\x’表示的时候,一原创 2017-08-25 18:32:52 · 3634 阅读 · 1 评论 -
Python序列--字符串和列表和元组
简述字符串在C语言中可当作字符char类型的元素的数组。python中除了有字符串,还有列表和元组(可以将列表和元组当成普通的“数组”,但是列表和元组可以存储不同类型的对象)。字符串 项目 说明 举例 定义 引号(单引号、双引号、三引号)之间的字符集合 str=’Python’ 索引 [],得到子字符串,第一个字符索引为0,最后一个字符索引为-1 str[0] (‘原创 2017-05-10 16:17:47 · 381 阅读 · 0 评论 -
Python映像与集合--字典
简述Python中除了序列一类的对象类型(如字符串,列表,元组),还有集合类型的对象,如字典。字典属于映射数据类型,类似关联数组、哈希表一类,由键-值(key-value)对构成。 项目 说明 举例 键 所有类型的python对象都可用作键,不过常用数字和字符串 – 符号 {},大括号包裹 aDict={‘host’:’earth’}aDict = {'host'原创 2017-05-10 16:33:01 · 354 阅读 · 0 评论 -
Python中函数与函数式编程
简述在过程式语言中,函数是基本单元,通过函数的封装和调用实现序列的功能。在面向对象语言中,函数最常见的是作为方法。函数定义def function_name([arguments]): # 使用[]括起来参数是表示参数是可选的 "optional documentation string" function_suitePython中实用的内建函数 函数 说明 dir([o原创 2017-05-10 17:28:36 · 448 阅读 · 0 评论 -
Python跳转控制--条件与循环
简述条件判断与循环是任何程序语言中最常用到的,Python自然也提供了条件与循环的控制。if语句if expression1: if_suiteelif expression2: elif_suiteelse: else_suitewhile循环while expression: while_suitefor循环Python中for循环与传统for loop有差异原创 2017-05-10 17:06:50 · 9742 阅读 · 0 评论 -
Python中的二进制文件相关操作
简述在与C语言相关应用中,比如硬件和协议相关,都涉及到二进制操作。 Python中的字节串这篇文章对字节串操作已经做过一些介绍。 接下来内容对类似C语言相关实现内容进行整理。文件相关二进制文件操作fname_bin_a = "a.bin"fname_bin_b = "b.bin"fa = open(fname_hdr, 'wb') # 以二进制文件格式写fb = o...原创 2018-09-16 17:00:57 · 674 阅读 · 0 评论 -
Python变量,内存管理,操作符,数字类型
简述语言中最为基础的部分,变量、操作符等。基本规则与特殊字符 项目 说明 # 其后的字符为python注释 \n 标准的行分隔符(通常一个语句一行) \ 继续上一行 ; 将两个语句连接在一行中 : 将代码块的头和体分开变量与赋值 类别 说明 变量名 字母(大写、小写字母加下划线_)开头的标识符 —> 变量名大小写敏感 —>原创 2017-05-09 17:24:43 · 545 阅读 · 0 评论 -
Python的多线程
简述多线程设计在系统中是比较关键的部分,对于系统性能的提高以及一个较为复杂框架的构建都是很重要的。进程与线程差别这部分许多资料可供参考,比如一些动画介绍,还有CSAPP书中也详细讲到。在嵌入式系统中一般是没有进程和线程区分概念的,因为嵌入式系统就跑一个程序(一个main入口),通过RTOS管理其中的各个线程(一般称为task),其实总的就一个进程,可以独享嵌入式系统的Flash, RAM等资源,也不...原创 2017-10-19 11:20:37 · 837 阅读 · 0 评论 -
Python中的注释
简述代码注释对于代码后期维护很重要。Python中有哪些注释的规则,以及如何能高效简洁的使用注释,在此进行介绍和学习。注释类别 类别 符号 可能问题 单行注释 # 多行注释 ”’ ”’ 可能和多行字符串混淆 中文注释 coding=utf-8 代码中尽量不用中文注释 注释快捷键 IDE工具中 文档字符串注释 ”’ ”’ 单原创 2017-04-25 14:15:47 · 6224 阅读 · 0 评论 -
Python quamash模块安装
简述该模块的作用是,配合Qt实现了PEP 3156 Event-Loop(Implementation of the PEP 3156 Event-Loop with Qt)。版本注意 该模块只支持python3。 Version 0.5.4开始支持Linux的python3.5的。安装sudo pip3 install quamash原创 2016-07-29 16:19:09 · 1875 阅读 · 0 评论 -
Python easy_install和pip用法
简述python开发时,有时候需要安装用到的一些module,而许多module之间又有依赖关系,如果手动一个个去检查并安装,将非常费力。easy_install和pip就是为解决这个问题而设计的,能帮助进行module的一键安装,pip是easy_install的升级版本,因此实际使用时用两个中的一个工具即可。easy_installModule安装easy_install原创 2016-08-02 12:19:55 · 1364 阅读 · 1 评论 -
Python Logging Module学习(待续)
简述程序中一般都会用打印log的方式协助调试。有的程序可以在系统调试,而许多时候是程序一直在运行,可能偶然发生某个问题时,如果有log作为记录,就可以跟踪和定位问题。 Python中可以直接用print来打印log,但是其提供了logging模块,具有更为灵活和强大的log打印控制的功能。基本的类Loggers类提供了Application可以直接调用的接口;Handlers类将log记录发送原创 2016-04-27 17:11:58 · 824 阅读 · 0 评论 -
Python中错误与异常
简述Python允许程序运行时检测错误,可以抛出异常并进行处理。 代码中添加错误检测及异常处理,只要将代码放在try-except语句中,try之后的代码是要管理的代码,except之后的代码是错误发生时处理错误的代码。try: filename = raw_input('Enter file name: ') fobj = open(filename, 'r') for原创 2017-05-11 15:42:37 · 337 阅读 · 0 评论 -
Python的模块
简述Python中的模块将许多功能集合起来,这样对大型工程的维护与功能划分很有用处。另外在使用python编程时也可以使用许多自带的模块或者第三方开发的模块,减少重复的造轮子。模块模块是python的一种组织形式,它将彼此有关系的Python代码组织到一个个独立文件中。原创 2017-05-11 16:21:04 · 510 阅读 · 0 评论 -
Python文件操作File Input and Output
简述文件输入输出操作在编程中很常见。因此对这部分进行一些学习。文件是连续的字节序列,因此文件输入输出是基于文件系统的字节流操作。Python将一个文件作为一个对象来处理。原创 2017-04-26 10:09:45 · 818 阅读 · 1 评论 -
Python的面向对象
简述Python支持函数式编程,也支持面向对象编程。类定义一个类:class ClassName(base_class[es]): "optional documentation string" static_member_declarations method_declarations类的示例:class FooClass(object): """my very f原创 2017-05-11 16:06:20 · 375 阅读 · 0 评论 -
C语言数组与结构的学习
问题描述:数组元素可以为结构,结构中也可以数组和结构作为成员。两者组合可以灵活实现一些较复杂的功能。 结构里面包含结构:struct person { char name[NAME_LEN];// 结构里的数组 char sex;};struct class { char num; struct personone_person;}class1原创 2015-07-11 00:17:56 · 601 阅读 · 1 评论 -
C语言static/const/volatile/intterupt的使用及注意
问题描述:对于static 和constant两个关键字, static:声明为static的变量,在编译时刻开始永远存在,即编译后是会生成这个变量的符号的,其所在的位置,是在内存的中的.data区或.bss区,static变量只是有作用域限制,其余和全局变量相似。 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它原创 2015-07-09 22:22:17 · 1906 阅读 · 1 评论 -
C语言中流与文件操作编程学习
问题描述:之前用到stdio.h中最多的是获取键盘输入和在显示屏打印输出,用printf, scanf,putchar, getchar等。当除了这些输入输出,还有文件操作等输入输出函数。对这些输入输出内容的学习做下记录。 流:表示任意的输入的源或任意输出的目的地。 文件指针:FILE*,一般操作系统会限制可以同时打开的流的数量,但仍可以用FILE *声明任意个指针。原创 2015-07-11 00:18:05 · 881 阅读 · 1 评论 -
C语言中联合Union的学习
问题描述:联合形式和结构相似,但是只给联合中最大的成员分配足够的内存空间,联合成员在这个空间可以被彼此覆盖。 Union:利用联合的特性,可以实现一些可能需要指针操作的功能。比如将一个四字节float型数值的内存存入一个4个元素的字节数组:union { float i; charbyte_array[4];}u;u.i = 31.5;然后读取byte_array原创 2015-07-11 00:18:03 · 1020 阅读 · 1 评论 -
C语言代码分层组织
简述C为函数式语言,使用模块化的设计会对开发大型项目带来很多好处。C的模块化也可以模拟一些OO的特点。层次化与模块化C语言的应用领域,如通讯领域和嵌入式系统领域,一个的软件项目通常包含很多复杂的功能,实现这个项目不是一个程序员单枪匹马可以胜任的,往往需要一个团队的有效合作,另外,在一个以C代码为主的完整的项目中,经常也需要加入一些其他语言的代码,例如,C代码和汇编代码的混合使用,C文件和C++的同时原创 2015-09-05 09:01:50 · 1292 阅读 · 1 评论 -
C语言之嵌入式C代码分层
问题描述:嵌入式、单片机中C代码实现较大的工程时,代码量非常大,查看维护起来也比较吃力,除非代码组织得层次分明,各个功能的划分很明晰,如果仅是一堆实现了功能的代码,没有进行层次的设计,维护起来将是一场噩梦。对C代码的分层设计知识在网络搜索学习了下,并结合自己的点点经验做下记录,方便以后更改和提升。 一、分层模式概述--参考自[1]:分层(Layer)模式是最常见的一种架构模式。原创 2015-07-11 00:16:48 · 3298 阅读 · 2 评论 -
C语言typedef的高级用法
问题描述:之前对typedef的认识还是限于易于移植的层面,经常用到typedef unsigned intU32;之类的类型别名。对于typedef的更多高级的用法了解很少,于是查找资料进行了学习。typedef和define的用法有些相同,但是差别也是很大的。两者的相同大概就是具有一个简化替换的作用,但define是纯粹的字符替换,而typedef是为定义的复杂类型起了简单的别名。defin原创 2015-07-11 00:18:47 · 1582 阅读 · 1 评论 -
C语言更高效的10种方法
问题描述:C语言从接触有较长时间了,其灵活性很大,有许多注意事项,还有许多的经验需要自己实践和学习。以下内容参考自http://blog.jobbole.com/1198/,关于C效率的更多注意事项希望以后能继续补充和更新在此处,以下内容自己并没有通过实验验证,其中一些问题可能编译器会自动优化而不再是问题。0. 避免不必要的函数调用考虑下面的2个函数:voidstr_print原创 2015-07-11 00:16:35 · 1057 阅读 · 1 评论 -
[memory]C++中栈区 堆区 常量区(由一道面试题目而学习)
原文出自:http://blog.csdn.net/xcyuzhen/article/details/4543264#includevoid main(){char a[]="abc";栈 char b[]="abc";栈 char* c="abc";abc在常量区,c在栈上。char* d="abc"; 编译器可能会将它与c所指向的"abc"优化成一个地方。cons转载 2015-07-11 00:18:45 · 641 阅读 · 0 评论 -
C语言结构体的学习
问题描述:C语言中的结构体可以构造复杂的数据类型。例如有时函数需要传递的参数太多,此时可以考虑用结构体作为参数传入。C语言中的结构体利用函数指针和一般变量可以模拟面向对象语言编程中的属性和方法。结构体的使用非常灵活,下面记录一些结构体使用的较为基础的内容。结构体在其他一些语言中有时被称为记录、字段。 声明:在花括号中间,每个结构代表一个作用域,可以防止命名冲突,struct {原创 2015-07-11 00:17:51 · 762 阅读 · 1 评论 -
C标准库头文件列表
简述C库头文件列表#include #include #include #include #include #include //设定插入点 #include //字符处理 #include //定义错误码 #include /原创 2015-09-05 09:41:22 · 1154 阅读 · 0 评论 -
C语言switch case的使用
问题描述:当要选择的分支过多时,还是用if-else结构的话会很冗长,此时选择switch-case结构来解决是很实用的。但使用switch-case需要注意switch(variable)括号中的变量类型只能是char或int一类的类型,其他的类型的话可以考虑转换成该类型再判断,或者使用if-else。 基本用法:switch(表达式) { case 常量表达式 : 语句原创 2015-07-11 00:17:54 · 3276 阅读 · 1 评论 -
C语言使用指针时有可能导致非法内存操作
简述在debug一个程序时,发现传入给一个API的参数的值并非预期,于是往上追朔查找,最终发现是在定义指针时没有给该指针赋地址初始值,后面就直接用该指针进行操作了,导致了许多异常。情况说明void func(void){ XXX_struct *str_data; str_data->element1 = globalvar1; str_data->element2 = g原创 2015-08-11 11:15:39 · 1717 阅读 · 1 评论 -
C书籍《C语言教程》笔记
简述《C语言教程》-(美)Al Kelley Ira Pohl 著 徐波 译 “A Book on C” Programming in C, Fourth Edition 不是太厚的一本,内容比较基础的。关于指针指针指针用于访问内存和操纵地址;而简单变量在机器中某特定内存位置(地址)按一定数量的字节存储。指针取值范围:包括特殊地址0及一组在特定C系统中被解释为地址的正整数。 例:p原创 2015-09-05 08:21:51 · 971 阅读 · 1 评论 -
C语言C99中inline的使用
问题描述:C语言中函数调用与返回时会有部分的额外开销,如果在函数需要调用的次数非常多时,这些额外开销就会产生积累效应。C89中避免函数额外开销的唯一方式是使用带参数的宏。而C99中则提供了更好的一种方式,即内联函数inline。内联表明编译器将函数的每一次调用都用函数的机器指令来代替,但其只是建议编译器这样做,并不强制,编译器可以选择忽略。 使用宏造成的缺陷:宏定义在形式上类似于一个函数,原创 2015-07-11 00:18:30 · 2114 阅读 · 1 评论 -
C语言中的底层技术
问题描述:C语言适合编写嵌入式软件,其中就涉及到许多C的底层技术,如移位操作、按位与或非等,还有与硬件平台相关的寄存器操作。以下是通用C语言底层技术学习的一点记录。 结构中位域:这个功能用于节省存储空间,如一个布尔变量只需要一位即可,没必要声明成int型。除了单片机中的直接按位寻址操作,还可以用结构中的位域来处理,struct file_data { unsigned int d原创 2015-07-11 00:18:33 · 1084 阅读 · 1 评论 -
C语言实现链表
问题描述:数据结构中了解过链表,由一连串结点组成,有单向链表和双向链表之分。以下为单向链表一些知识的学习。 链表结点:单向链表每个节点包含一个节点数据项,一个指向下一节点的指针。最后一个节点因为没有下一个节点了,其指针为空指针,struct node { int value; struct node *next;};struct node *first = NULL;原创 2015-07-11 00:18:25 · 3740 阅读 · 1 评论 -
C语言中指针的高级用法
问题描述:指针是C语言很有特色的一个部分,但是使用也比较复杂,很容易导致一些莫名的错误,比如有时候函数指针没有赋值,有时指向了未定义的内存,这些时候都可能导致程序异常执行或者崩溃。但指针的灵活性让它可以实现很多复杂的操作,如指向指针的指针,指向函数的指针。 指向指针的指针:函数传递参数是传值调用的,如果想在调用函数时改变传入的参数的值,而且该传入的参数的值本来是个指针时,这时就可以使用指向原创 2015-07-11 00:18:28 · 1656 阅读 · 1 评论 -
C语言在VS中的编译调试
问题描述:VS是微软的集成开发环境,能进行C, C++, C#, VB,F#等多种语言的程序开发,集成了代码编辑、编译、调试等功能。VS中进行程序开发是以解决方案,工程为单位进行的,但是VS并没有提供直接针对C语言的C工程,因为它是放在C++中的。 VS中编辑编译C程序:VisualStudio不管是2005,2008还是2010,建立C工程并进行编译和调试的步骤都是一样的。原创 2015-07-11 00:18:40 · 1885 阅读 · 1 评论