说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2? 【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。 2) 应用内共享常量:放置在一方库中,通常是子模块中的 constant 目录下。 正例:public enum SeasonEnum { SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4); private int seq; SeasonEnum
一般用于建筑设计、景观设计还有游戏场景设计等,插件开发是用的 ruby 语言。 完成 Sketch 的插件开发指南这个系列,我也会开始写 Sketchup 插件开发指南。 artboardFrame.setY(0); artboardFrame.setWidth(100); artboardFrame.setHeight(100); page.addLayers([newArtboard]) 2 文件改名及移动位置 var from='/Users/zhank/Downloads/draw/test.txt', to='/Users/zhank/Downloads/draw/test2. }else{ NSApp.displayDialog(@"文件不存在"); } 2.5 删除文件或文件夹 var path='/Users/zhank/Downloads/draw/test2.
大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。 下面是一个客户端的例子:
本节内容 网络基础知识 什么是网络 什么是网络编程 IP地址是什么鬼 端口号又是什么鬼 据说还有个网络传输协议 TCP编程 UDP编程 1. 网络传输协议 1.1. 只能访问当前PC的数据,单机的网络IP地址:127.0.0.1 局域网:两台或者两台以上的电脑,通过交换机或者路由器进行互相连接,在一定的范围内局域网的PC可以实现互相通信的目的;一般情况局域网的PC数量在2台到几千台 什么是网络编程 如果有了网络之后,网络中的所有数据都直接可以让别人访问的话,就会出现非常严重的数据安全问题; 次数就需要一种手段,将数据通过网络进行共享的同时增加限制访问权限; 网络编程就是通过编程的手段 就是网络协议 网络协议,就是网络数据传输协议,简称为传输协议,是为网络中不同PC和程序之间的有效数据通信而制定的一种数据组织和传输方式 常见的网络传输协议要归结到国际标准化组织(ISO)制定的开发系统互联模型 (OSI) OSI模型 名称 层次 功能 物理层 1 实现计算机系统与网络间的物理连接 数据链路层 2 进行数据打包与解包,形成信息帧 网络层 3 提供数据通过的路由 传输层 4 提供传输顺序信息与响应
multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。 )2、帮我们处理好锁问题。 q.full()) #满了 print(q.get()) print(q.get()) print(q.get()) print(q.empty()) #空了 View Code 生产者消费者模型 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题 在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。 ,conn2只能用于发送。
文章目录 12 I2C编程应用开发 12.1 I2C协议 12.1.1 概述 12.2.2 物理层 1) 特性1:半双工(非全双工) 2) 特性2:地址和角色可配置 3) 特性3:多主机 4) 特性4: 12 I2C编程应用开发 I2C(Inter-Integrated Circuit BUS)是I2C BUS简称,中文为集成电路总线,是目前应用最广泛的总线之一。 既然我们总是说这个I2C总线在嵌入式开发中被广泛的使用,那么是否有现成的测试工具帮我们完成这个快速使用板子的I2C设备呢? 它的主要功能包括:总线探测工具、SMBus访问帮助程序、EEPROM解码脚本、EEPROM编程工具和用于SMBus访问的python模块。 强烈建议读者采用第二种方法下载这个代码,因为你可以通过git快速地了解这个开源代码的不同版本的功能改进及bug修复,而且使用git开发也是作为一名优秀的开发人员必备的一项技能。
之所以想用shell实现,是因为shell是UNIX/LINUX的工作语言,可以实现很强大的功能,所以借此话题顺带讲一下shell编程的思路。 就嵌入的编程语言来说,awk/sed/bc这些算是shell“本家”的,而python/perl这些,不太像是shell本家的。 其中,(2)、(3)两个数组用结构体的方式合为一个数组,C语言的可读性更强一些。 那么,和其他的编程一样,我们先确定这个程序的框架: #! key2 = (unsigned short)chinese_font[mid].GBH<<8; key2 |= (unsigned key2 = (unsigned short)chinese_font[mid].GBH<<8; key2 |= (unsigned
在嵌入式Linux应用开发中,网络编程是重要的一环,而TCP协议则是实现网络通信的基础之一。 一、TCP 协议概述 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在嵌入式 Linux 应用开发的网络编程中起着至关重要的作用。 服务器收到数据段后,向客户端发送 ACK 确认包,包含自己的序列号 Seq=Y2 和确认号 Ack=X2,表示确认收到了客户端序列号为 X1 的数据段,期望下一个收到的序列号是 X2。 四、嵌入式Linux下的TCP网络编程 4.1. 服务器端开发流程 创建 Socket:使用socket()函数创建一个 TCP 套接字。 书中有关于嵌入式 Linux 网络编程的章节,介绍了 Socket 编程、TCP/IP 协议等基础知识,并结合实际案例讲解了在嵌入式 Linux 环境下如何进行网络应用开发,帮助读者快速上手嵌入式 Linux
概述 不同的厂商对UEFI有不同的实现, 一种比较常用的开源实现是EDK2. EDK2是一个遵循UEFI标准和PI标准的跨平台固件开发环境. EDK2支持多种操作系统, 也支持跨平台编译. Windows下开发环境配置 之前在物理机win10上进行安装, 折腾了一天也没配好环境, 包括wsl全都试过了, 全部以失败告终. 安装开发工具 1. 往环境变量PATH中添加C:\UEFI\nasm\和C:\UEFI\openssl\ 6.下载edk2开发包, 解压: https://codeload.github.com/tianocore/edk2 配置EDK2开发环境 1 cd .\edk2\ 2 .\edksetup.bat 之后会在Conf目录下建立target.txt等文件. 编辑target.txt.
除了矩阵变换这类需要明确维度的情况外,Go中的大部分数组编程都是通过切片来完成的。 切片保存了对底层数组的引用,若你将某个切片赋予另一个切片,它们会引用同一个数组。 以下简单的例子 x := []int{1,2,3} x = append(x, 4, 5, 6) fmt.Println(x) 将打印 [1 2 3 4 5 6]。 fmt.Sprintf("%.2fEB", b/EB) case b >= PB: return fmt.Sprintf("%.2fPB", b/PB) case b >= TB: return fmt.Sprintf("%.2fTB", b/TB) case b >= GB: return fmt.Sprintf("%.2fGB fmt.Sprintf("%.2fKB", b/KB) } return fmt.Sprintf("%.2fB", b) } 表达式 YB 会打印出 1.00YB,而 ByteSize
2.变量的引用方式 $str 或 ${str},如echo "the var is ${str}" str='Hello,world!' echo '$#:'$# echo '$@:'$@ echo '$*:'$* echo '$0:'$0 echo '$1:'$1 echo '$2:'$2 echo '$3:'$3 echo '$4:' /var.sh $1:a $2:b $3:c $4:d 轮替变量 使用shift [N]可以指定参数轮替,每执行一次 shift N,就踢掉 N 个参数,默认 N=1。 例如在脚本中: echo $1 #输出第一个参数值 shift 2 #踢掉前两个参数,$1的值变成第三个参数的值 shfit #再踢掉一个参数,$1的值变成第四个参数的值 echo $1 #输出第四个参数的值 2.脚本配置文件 配置文件中的变量值可以在脚本中被使用。
2、线程的概念 线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度,也就是说线程是cpu调度的基本单位,每个进程至少有一个线程,而这个线程就是我们常说的主线程。 2、互斥锁的使用 threading模块中定义了Lock变量,这个变量本质上是一个函数,通过调用这个函数可以获取一把互斥锁。 但是要注意资源竞争的问题,解决办法:互斥锁或者线性同步 创建进程的资源开销要比创建线程的资源开销要大 进程是操作系统分配的基本单位,线程是CPU调度的基本单位 线程不能独立执行,必须依存在进程中 多进程开发比单进程多线程开发稳定性要强 优缺点对比 进程优缺点: 优点:可以用多核 缺点:资源开销大 线程优缺点: 优点:资源开销小 缺点:不能使用多核 5、小结 进程和线程都是完成多任务的一种方式 多进程要比多线程消耗的资源多,但是多进程开发比单进程开发稳定性要强 ,某个进程挂掉不会影响其他的进程 多进程可以使用CPU的多核运行,多线程可以共享全局变量 如果前面还不太了解的朋友可以看看《多任务编程 - 1》哦 多任务编程 - 1 END
这时候突然想到一个解决方案,那就是Python2中的raw_input()函数,Python3中和input()合并了,但是相比于后者,raw_input()返回的是字符,如此以来只需简单的修改代码,就可以 ,我们在Python2的环境中运行即可。
上一节我们提到了socket编程的基本形式,这一节我们加强服务端的性能! #!
"" if [ -n "$str2" ]; then echo 'str2 is not empty' else echo 'str2 is empty' fi printf "\n" if [ "$str1" = "$str2" ]; then echo 'str1 = str2' else echo 'str1 <> str2' fi 注: -n即-not empty判断字符串非空 <> str2' str1 <> str2 4.3 文件及目录判断 #! 解释:如果命令1返回成功,则命令2会执行,示例: #! 因为linux里的很多bash命令,就是拿C/C++来开发的),我们可以来验证下: #include <stdio.h> #include <stdlib.h> int main(int argc,char
⇒ Boolean 2、 =(casts)表示需传入 casts_shadows 的参数 #casts_shadows=(casts) ⇒ Boolean 这里涉及到了 ruby 语言中以等号结尾的方法
从上篇文章 并发编程1:全面认识 Thread 我们了解了 Java 中线程的基本概念和关键方法。 2:响应更快 这一点想必小肉深有感悟: 家里快递来了,小肉会说:shixin,去取一下。我下去愚公移山的时候,她可以继续 shopping; 窗外有人吼卖樱桃喽,小肉会说:shixin,去买一点。 2:上下文切换的开销 当 CPU 调度不同线程时,它需要更新当前执行线程的数据,程序指针,以及下一个线程的相关信息。 这种切换会有额外的时间、空间消耗,我们在开发中应该避免频繁的线程切换。 知道了多线程的开销与可能带来的问题后,我们在开发中不要为了使用多线程而使用多线程。应该在确认多线程给项目带来的好处比隐含的开销更多时,再使用多线程。 2.在JAVA中,有六个不同的地方可以存储数据: 寄存器(register) 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。
JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。 主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如,IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK[13] 。 JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。 编程工具 Eclipse:一个开放源代码的、基于Java的可扩展开发平台[16] 。 NetBeans:开放源码的Java集成开发环境,适用于各种客户机和Web应用。 [17] MyEclipse:由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境[18] 。
网络编程-SOCKET开发 网络编程架构分类 B/S架构 B指的是web(网页),S指的是Server(服务端软件) C/S架构 C指的是Client(客户端软件),S指的是 2. 在接收端由于接收不及时导致两条先后到达的信息在接收端黏在了一起。 黏包的本质 信息与信息之间没有边界,且无法解决,因为TCP协议是流式传输。
两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用 height = 10; } public double area() { return width*height; } public double perimeter() { return 2*