-
【Visual C++】游戏开发笔记之一——API函数、DirectX的关键系统
2012-03-04 08:59:27http://blog.csdn.net/zhmxy555/article/details/7318264作者:毛星云 邮箱: happylifemxy@qq.com 在从第一节开始看这个笔记系列的话,大家会发现,一上来就开始讲DirectX相关的内容,但是写了几节之后,又...本系列文章由@浅墨_毛星云 出品,转载请注明出处。
文章链接: http://blog.csdn.net/poem_qianmo/article/details/7318264
作者:毛星云(浅墨) 邮箱: happylifemxy@163.com
------------------------------------------------------------------------------------------------------------------------------
浅墨历时一年为游戏编程爱好者锻造的入门宝典:《逐梦旅程:Windows游戏编程之从零开始》如果你喜欢浅墨写的【Visual C++】游戏开发系列博客文章,那么你一定会爱上这本书。这是浅墨专门为热爱游戏编程的朋友们写的入门级游戏编程宝典。------------------------------------------------------------------------------------------------------------------------------
在从第一节开始看这个笔记系列的话,大家会发现,一上来就开始讲DirectX相关的内容,但是写了几节之后,又开始讲
GDI了。
这是因为我写完前几节后,发觉直接讲DirectX有些生硬。最后我想了一下,应该先梳理完GDI相关的重点知识,再来讲
DirectX,毕竟游戏编程里面windows API是基础。所以先讲windows API,接着介绍DirectX,最后讲解游戏引擎的设
计,这样会自然得多。
————浅墨于2012年3月26日注
很多朋友在评论中都谈到了GDI的效率问题。关于GDI,我想在这一系列文章的篇首简单的说明一下。
用GDI做游戏的效率很低,非常的不推荐。但是GDI作为windows与生俱来的渲染引擎,在图形方面是一个全能的存在。
学习游戏编程如果想打好一个坚实的基础,掌握GDI是非常有必要的,全能的GDI可以在DirectX尚未做好准备的时候,以一个
强大后援的姿态,在游戏的测试与仿真过程中给予我们莫大的帮助。
————浅墨于2012年4月26日注
很多朋友也谈到游戏开发中是否运用MFC的困惑,我也在这里简单的说明一下。由于MFC有底层代码的隐蔽性等特点,且MF
C毕竟封装了很多实际上没用到的东西,不利于游戏开发的效率和游戏的运行速度,不适合做游戏开发。MFC做游戏地图编辑
器之类的工具软件倒是比较适合。我觉得一款成功的游戏最基本的特点就是具有流畅的用户体验,这个要求达不到的话,其他
方面就不用考虑了。
————浅墨于2012年4月27日注
在浅墨没更新文章的这三个月里,数百位需要游戏编程相关资料的朋友在博客里留了邮箱,没有及时给大家发到邮箱里浅墨表示非常抱歉。在这里,浅墨最终还是决定把这些资料打包上传到CSDN下载频道,这样大家就可以直接下载,省去了浅墨发邮件的功夫,虽然浅墨一直认为这样更亲切更真诚。当然,0资源分下载是必须的。
以后大家想要这些资料,就不用再留邮箱了,直接点链接去下载就好了。
下面是这些资料的一个清单(零编程基础开始):
1.《C++ primer中文版》
2.《Windows程序设计第五版》
3.《VC++深入详解》
4.《Windows核心编程》
5.《Effective STL中文版》
6.《Windows游戏编程大师技巧》
7.《DIRECTX.9.0.3D游戏开发编程基础》
这个书单是从零编程基础开始的,其中部分书中涉及到了DirectDraw与Direct3D 8,这两个API在新版本DirectX SDK中都被移除了,现在基本上无用武之地,所以涉及到DirectDraw与Direct3D 8的那部分就不用仔细看了哈。
本来还有《VC++深入详解》的高清影印版,以及《游戏编程精粹》系列的7本书,以及几本C++系列的经典之作,但是它们块头比较大,浅墨目前这个号在CSDN下载频道只有110Mb的上传限权,传起来比较麻烦。暂时就不传了。
下面给出游戏开发学习资料的下载链接:
请点击这里下载:零基础游戏编程学习资料by浅墨
(免责声明:浅墨在这里只是进行了电子版的收集工作,如果大家觉得这些书还不错,建议去买纸质版,毕竟这样对眼睛的健康有好处,健康是金钱买不来的)
————浅墨于2012年11月07日
关于学完DirectX,我们该干什么。
浅墨觉得,历代DirectX龙书的作者Frank Luna在龙书忽视了非常重要的一方面内容的讲解,那就是就是学完了DirectX我们接着该做什么。
这大概是很多怀揣游戏开发梦想的热血青年们曾经思考过的问题。
浅墨也曾经在这问题上迷茫过,也因为没人指明前路而走了不少弯路。
不过后来在黑暗中不断地摸索,将荆棘变成坦途之后,终于摸索出了一条正确的道路。
也就是看完龙书《DIRECTX.9.0.3D游戏开发编程基础》之后,我们需要如何学习,来把学到的知识立体化,最终转化为开发游戏的实际能力。首先我们需要再看一本书,《Real-Time Rendering》,也就是(RTR)实时渲染技术,目前出到第三版了。(这本书并没有中文版,大家如果要走游戏开发的道路,读完龙书之后,剩下基本上都要靠读英文书了。)
学完龙书,也可以选择自己喜欢的游戏引擎来接触并掌握了。看完龙书后浅墨首推学习Irrlight,然后进阶推荐Orge。两者都是开源游戏引擎,都有着源代码提供下载学习,而且网上对这两种引擎的研究热情很高,资料丰富,引擎代码字里行间都是哲思,掌握其中的代码并纳为己用,自己写出像样的游戏demo来是不成任何问题的。
————浅墨于2012年12月02日
玄灵隐士童鞋提到了一个应该是大家比较关心的问题,在这里集中说明下。他的问题原文是:'作者您好,请问这本书和您的博客里发表的《【Visual C++】游戏开发笔记》系列文章之间是什么关系?是互为补充?还是说这本书已经包含了您之前写的所有文章然后又扩充了一些东西?‘而我的回答是:嗯,这本书吸收了我之前写的所有《【Visual C++】游戏开发笔记》系列文章的精华之处,然后又扩充了很多重要的东西,内容更加的翔实,内容架构更加的合理,还加入了更多接地气的,时代前沿的和方便入门游戏开发的知识点。:)————浅墨 于2014年1月19日注,来自《【浅墨著作】《逐梦旅程:Windows游戏编程之从零开始》勘误&配套源代码下载》一文
附一张浅墨写的书的封面照吧,为了可以帮到大家更快的入门,浅墨花费一年时间,编写了这本融入了自己这些年来游戏开发经验之谈的零基础游戏编程入门书。这梦幻的封面也是浅墨自己设计的呢。:D附上这本书的勘误和源代码下载,书本维护博文的传送门:
嗯,穿越回来吧,如下是这篇博文最初版本时的内容:
作为visual C++,DirectX入门的第一讲,概念性东西比较多,这里我们只是简单的整理一下知识框架,给大家一个大概的认知体系,
后续文章中,我们会展开进行深入的讲解。
1.DirectX的定义
首先,我们必须了解DirectX的定义。DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft Xbox和Microsoft Xbox 360电子游戏开发,并且只能支持这些平台。最新版本为DirectX 11,创建在最新的Windows 7上。Microsoft DirectX 是这样一组技术:它们旨在使基于Windows 的计算机成为运行和显示具有丰富多媒体元素(例如全色图形、视频、3D 动画和丰富音频)的应用程序的理想平台。DirectX 包括安全和性能更新程序,以及许多涵盖所有技术的新功能。应用程序可以通过使用DirectX API 来访问这些新功能。
2.必要的工具和开发环境
要进行游戏的开发,我们必须拥有一套最新的DirectX SDK(软件开发包)。我们可以从微软的官方下载站进行下载然后安装,这里贴出地址,http://msdn.microsoft.com/zh-cn/directx/aa937788.aspx。当然我们还要拥有开发环境,我们选择Microsoft公司的Visual Studio 2010。
3.引擎设计概述
游戏引擎是一系列高级代码,我们可以以它为基础开发自己的游戏。现代的游戏引擎已经对使用他的人隐藏了底层实现的细节和规范。例如,可以在OpenGL和Direct3D的基础上开发渲染引擎,这样,引擎用户就不需要知道使用的是哪一个渲染引擎,尽管也用到了一些底层的东西。
游戏引擎包括:渲染引擎,物理引擎,声音引擎等。游戏引擎本身只是一个由更小的引擎组成的集合。游戏引擎或它涵盖的内容并没有一个精确的定义。
对于视频游戏而言,它的游戏引擎至少要包含渲染引擎和输入引擎,这是必须的,否则,就不能称其为交互式游戏。
游戏程序员和游戏引擎程序员完成的是两种不同的工作。游戏程序员只与开发游戏的游戏引擎打交道,而游戏引擎程序员要开发出其他人用于开发游戏的引擎。
4.游戏引擎中的几个关键系统
游戏引擎中的几个关键系统有:游戏渲染系统,输入系统,声音系统,物理系统,动画系统,人工智能(AI)系统等。
5. DirectX API函数
DirectX的API主要由DirectGraphics,DirectInput,DirectPlay,DirectMusic,DirectSound组成。每个API之间相互独立,负责完成DirectX内核中不同的功能。DirectX中每个API都可以通过硬件加速,这意味着这些API可以直接和运行软件的底层硬件对话。下面是各种API函数的概要解释。
DirectGraphics:
DirectGraphics为负责向屏幕渲染二维图形和三维图形的DirectX API,也就是众所周知的Direct3D。
DirectInput:
DirectInput是可以直接使用所有与计算机关联的输入设备的DirectX API。这些设备包括键盘,鼠标和游戏控制器设备。
DirectPlay:
DirectPlay是控制Direct中网络功能的Direct API。DirectPlay可以让应用程序对机器进行网络功能设置,从而可以通过和其他网络玩家交流。
DirectMusic:
DirectMusic是负责普通声音处理的DirectX API。
DirectSound:
DirectSound是负责高级声音处理的DirectX API。
6.动手写一个窗口
在Windows中使用Direct3D创建Win32窗口非常简单。要创建一个Win32窗口就必须拥有一个WinMain()函数(这不是废话是什么)。我们可以在MSDN中查到WinMain()的标准句法
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
当程序第一次运行时,WinMain()函数中的所有参数从系统获取自己的相应参数值。通过在WinMain函数内部创建一个类型为WNDCLASSSEX的窗口类对象,创建窗口,然后显示窗口,然后进行消息循环,就可以实现一个空窗口的显示。具体实现代码如下:
下面是上面讲的框架代码,也是后面的笔记二的基础,需要结合笔记二一起看。
LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_DESTROY: PostQuitMessage(0); return 0; break; } return DefWindowProc(hWnd, msg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInst, HINSTANCE prevhInst, LPSTR cmdLine, int show) { WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, hInst, NULL, NULL, NULL, NULL, "AppClass", NULL }; RegisterClassEx(&wc); // Create the application's window HWND hWnd = CreateWindow(WINDOW_CLASS, WINDOW_NAME, WS_OVERLAPPEDWINDOW, 100, 100, 640, 480, NULL, NULL, hInst ,NULL); ShowWindow(hWnd, SW_SHOWDEFAULT); UpdateWindow(hWnd); // Enter the message loop MSG msg; ZeroMemory(&msg, sizeof(msg)); while(msg.message != WM_QUIT) { if(PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { //Do something to the screen } } // Unregister our window. UnregisterClass("AppClass", wc.hInstance); }
发现大家都在留言中说要推荐一下游戏开发相关的书籍,我这里就把各个阶段(从零基础开始)的推荐教程列出来吧,平时我写这个系列的笔记就参考了下面的很多书籍,大家感兴趣的话,可以深入去学习(推荐去买实体书,这样就不用整天盯着电脑屏幕看伤害眼睛,健康是金钱买不来的):第一阶段,首先是C++的精通。推荐《C++ Primer》,之后《Effect C++》。第二阶段,熟悉windows下的编程。推荐看《Windows程序设计》。第三阶段,Visual C++的学习。推荐的书目有孙鑫老师的《VC++深入详解》和孙鑫老师的vc视频教程。以及侯俊杰老师的《MFC深入详解》,与时俱进的有《Visual C++2010入门经典》。(第二阶段和第三阶段可以结合着来学习,有很多知识是相辅相成的,并没有什么大的界限。)
第四阶段,开始学习专门介绍游戏开发的教程(有DirectX和OpenGL两条路可选,这里我们选择DirectX,DirectX在国内为主流。具体比较请移步最近刚写的这篇文章 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈),推荐书籍为《DirectX 9.0 3D游戏开发编程基础》(封面为一个红龙的),《Windows游戏编程大师技巧》,《Direct3D游戏开发技术详解》等等,当然这类教程就比较多了,新出的有很多,DirectX相关的层出不穷,也可以选择刚发行不久的新书,毕竟上面讲的知识比较前沿与更具成熟性。(依然感谢liusofttech 的指出,为什么我没有推荐专门讲解3D编程数学基础的教程。我没有专门指出来,是因为几乎每一本Direct3D教材里面都有一章到几章有关必备数学基础知识的讲解。我觉得单独来学数学基础没必要,费时且费力,我们只要在Direct3D或者OpenGL教材里掌握相关的数学知识,那就足够了。)还有什么经典的书籍,欢迎大家交流补充~~(有一位兄弟提到,《游戏编程精粹》系列的书也比较经典,都是从事游戏开发多年的全球顶尖游戏工程师的肺腑之言,虽然经常会有个别错误- -,目前出了8本了,大家可以去看看)以上就是本节笔记的全部内容。
更精彩的内容,且看后面的笔记系列。
感谢一直支持【Visual C++】游戏开发笔记系列专栏的朋友们,也恳请大家继续关注我的专栏。
【Visual C++】游戏开发 系列文章才刚刚展开一点而已,因为游戏世界实在是太博大精深了~
但我们不能着急,得慢慢打好基础。做学问最忌好高骛远,不是吗?
浅墨希望看到大家的留言,希望与大家共同交流,希望得到睿智的评论(即使是批评)。
你们的支持是我写下去的动力~
精通游戏开发的路还很长很长,非常希望能和大家一起交流,共同学习,共同进步。
大家看过后觉得值得一看的话,可以顶一下这篇文章,你们的支持是我继续写下去的动力~
如果文章中有什么疏漏的地方,也请大家指正。也希望可以多留言来和我探讨相关的问题。
最后,谢谢你们一直的支持~~~
The end
-
移动web开发笔记
2016-05-15 20:12:27移动web开发笔记移动web开发笔记移动web开发笔记
参考:
移动web开发入门
移动端web开发技巧基础概念
像素单位
CSS pixels与device pixels CSS pixels
浏览器使用的抽象单位, 主要用来在网页上绘制内容。 device pixels: 显示屏幕的的最小物理单位,每个dp包含自己的颜色、亮度。 等值的 CSS pixels在手机屏幕上占多大的位置,这不是固定的,这取决于很多属性。经过分析和总结,我们可以得出这么一条公式:
1 CSS pixels = (devicePixelRatio)^2 device pixels
(^2是平方的意思,至于 devicePixelRatio是什么东西,后面会讲解) 。PPI/DPI
PPI,有时也叫DPI,所表示的是每英寸所拥有的像素(pixel)数目,数值越高,即代表显示屏能够以越高的密度显示图像。(注:这里的像素,指的是device pixels。)搞清楚了PPI是什么意思,我们就能很容易理解PPI的计算方式了,我们需要首先算出手机屏幕的对角线等效像素,然后处以对角线(我们平常所说的手机屏幕尺寸就是说的手机屏幕对角线的长度),就可以得到PPI了。准确的计算公示大家可以参照下图。比较有意思的是,根据公式计算出来的iPhone 4的PPI为330,要比苹果官方公布的326要高一点点。
devicePiexelRatio
pixel - px ( picture element ) dpi / ppi - 每英寸像素 ( dot per inch ) dips - 设备独立像素 ( device-independent pixels ) devicePixelRatio - 物理像素 / dips
文字大小控制
px, rem 固定大小 - px 多屏适配,统一修改 - rem 相对长度单位。相对于根元素(即html元素)font-size计算值的倍数 rem - font size of the root element (W3C)
viewport
<meta name="viewport" content="width=device-width, height=device-height, inital-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
在苹果的规范中,meta viewport 有6个属性,分别如下:
- width - viewport的宽度[pixel_value |device-width]
- height - viewport的高度[pixel_value |device-height]
- initial-scale - 初始的缩放比例[float_value]christer1229
- maximum-scale - 允许用户缩放到的最大比例
- minimum-scalbujue - 允许用户的最小缩放值
- user-scalable - 用户是否可以手动缩放 [yes | no]响应式布局
原则
- 移动优先
- 渐进增强
实现方式
- 媒体查询
- 使用JS
- 使用第三方框架
布局方案
百分比布局(流体布局)
将元素原本的定宽除父容器的宽度得到百分比设置为宽度,使用百分比,文字使用 em。
- 优点:
流动布局页面对用户更友好,因为它能自适应用户的设置。
页面周围的空白区域在所有分辨率和浏览器下都是相同的,在视觉上更美观。
如果设计良好,流动布局可以避免在小分辨率下出现水平滚动条。 - 缺点:
设计者更难控制用户所见,并可能忽略掉一些错误,因为在特定的分辨率下看起来好的;
图片,视频以及其他设置了宽度的内容可能需要多种宽度以适应不同分辨率的用户;
在特别大的分辨率下,内容会被拉成长长的一行,变得难以阅读;
会有画面失真问题
弹性(flexible)布局
用rem替代px
原理:定一个最大宽度,设备屏幕超过这个宽度之后,rem大小不再变化,否则,rem大小设置为屏幕宽度的几分之一,页面中的长度单位值用rem代替px,这样随着页面的宽度变化能够进行等比例缩放。
rem实际是页面根元素的字体大小,通过js改变rem值的代码如下:; ( function( win ) ) { var doc = win.document; var docEl = doc.documentElement;//获取文档元素 var tid; function refreshRem() { var width = docEl.getBoundingClientRect().width;//获取设备宽度 if ( width > 540 ) { width = 540; } var rem = width / 10;//设置rem为屏幕宽度的十分之一 docEl.style.fontSize = rem + 'px'; } win.addEventListener('resize', function() {//屏幕宽度改变时 clearTimeout(tid);//清除之前的计时器 tid = setTimeout(refreshRem, 300);//300ms后改变rem大小 }, false); win.addEventLister('pageshow', function( e ) {//页面显示时 if (e.persisted) { clearTimeout(tid); tid = setTimeout(refreshRem, 300); } }, false); refreshRem(); })( window );
flex-box布局
flex-box,参考:
Flex 布局教程:语法篇
优点:布局方便,灵活性高;
缺点:兼容性问题;图片处理
普通设置:
img { max-width: 100%; }
或:
img { width: 100%; max-width: 300px; }//限制最宽不超过300px;
响应式图片:
参考:
响应式图片srcset全新释义sizes属性w描述符
Srcset和sizes即根据屏幕密度现实对应尺寸图片
src
:指定资源(在浏览器不认识srcset和size时会加载这个)srcset
:srcset的值是可用图像版本的URL列表;每个图片的宽度都用w描述符来表明。sizes
:使用长度与媒体查询配合,浏览器会检测每一个媒体查询,直到匹配到为止。使用查询配合的长度作为“选择资源”拼图的最后一块:图像渲染宽度或者相对于视图。
eg.<img src="small.jpg" srcset="large.jpg 1024w, medium.jpg 640w, small.jpg 320w" sizes="(min-width: 36em) 33.3vw, 100vw" alt="A rad wolf" />
媒体查询
- 可以通过
<link>
标签的media属性为样式表指定设备类型
<link rel="stylesheet" type="text/css" media="screen" href="screen-style.css"> <link rel="stylesheet" type="text/css" media="screen and (orientation:portrait)" href="style.css"> //纵向屏幕 <link rel="stylesheet" type="text/css" media="screen and (max-width:960px)" href="style.css"> //宽度小于900px时
- 在css中同样可以使用
@media screen and (max-width: 960px){ body{ background: #000; } } @media (max-width: 960px){ body{ background: #000; } } @media screen and (min-width:960px) and (max-width:1200px){ body{ background:yellow; } }
- @import方法
@import可以引用样式文件,同样也可以用来引用媒体类型。@import引入媒体类型主要有两种方式,一种是在样式中通过@import调用另一个样式文件;另一种方法是在<head></head>
标签中的<style></style>
中引入,但这种使用方法在IE6~7都不被支持,如样式文件中调用另一个样式文件时,就可以指定对应的媒体类型。
@importurl(reset.css) screen; @importurl(print.css) print;
在
<head>
中的<style>
标签中引入媒体类型方法。<head> <style type="text/css"> @importurl(style.css) all; </style> </head>
为方便查阅,下面列出了所有可供媒体查询检测的特性
- width:视口宽度。
- height:视口高度。
- device-width:渲染表面的宽度(对我们来说,就是设备屏幕的宽度)。
- device-height:渲染表面的高度(对我们来说,就是设备屏幕的高度)。
- orientation:检查设备处于横向还是纵向。
- aspect-ratio:基于视口宽度和高度的宽高比。一个16∶9比例的显示屏可以这样定义aspect-ratio: 16/9。
- device-aspect-ratio:和aspect-ratio类似,基于设备渲染平面宽度和高度的宽高比。
- color:每种颜色的位数。例如min-color: 16会检测设备是否拥有16位颜色。
- color-index:设备的颜色索引表中的颜色数。值必须是非负整数。
- monochrome:检测单色帧缓冲区中每像素所使用的位数。值必须是非负整数,如monochrome: 2。
- resolution:用来检测屏幕或打印机的分辨率,如min-re一种检测 IE 是否加载完成的方式,使用 doScroll 方法调用,详情可见http://javascript.nwbox.com/IEContentLoaded/。
原理就是对于 IE 在非 iframe 内时,只有不断地通过能否执行 doScroll 判断 DOM 是否加载完毕。在上述中间隔 50 毫秒尝试去执行 doScroll,注意,由于页面没有加载完成的时候,调用 doScroll 会导致异常,所以使用了 try -catch 来捕获异常。
结论:所以总的来说当页面 DOM 未加载完成时,调用 doScroll 方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了。solution: 300dpi。还可以接受每厘米像素点数的度量值,如min-resolution: 118dpcm。
- scan:电视机的扫描方式,值可设为progressive(逐行扫描)或interlace(隔行扫描)。如720p HD电视(>devide-width指屏幕宽高,width指渲染窗口宽高
720p的p即表明是逐行扫描)匹配scan: progressive,而1080i HD 电视(1080i中的i表明是隔行扫描)匹配scan: interlace。
- grid:用来检测输出设备是网格设备还是位图设备。
- 在上述所有特性中,除scan和grid之外,都可使用min和max前缀来创建一个查询范围。HTML5
新表单类型
- placeholder
只需在input元素中加入placeholder属性,其属性值就会默认显示为占位符文字,输入框获取焦点时该文字自动消失。当输入框失去焦点且没有任何输入值时,占位符文字则会再次显示。 required
在支持HTML5的浏览器中,在input元素中追加布尔类型的属性required(也就是说你可以选择追加或不追加该属性),则表明该表单域为必填项。如果表单提交时该必填项没有任何信息,浏览器则会显示警告信息。警告信息的显示方式(包括显示内容和样式)取决于浏览器与输入框类型。
range、color、 button和hidden类型的输入元素则不能使用required,因为这几种输入类型几乎都有默认值。autofocus
HTML5的autofocus属性可以让表单在加载完成时就有一个表单域被默认聚焦(或选中),以便于用户输入。
例如有多个表单域追加了autofocus属性,在Chrome(v16)中会聚焦最后一个使用autofocus属性的表单域,而Firefox(v9)恰恰相反,会聚焦第一个使用autofocus的表单域。autocomplete
也可以通过给表单本身(不是fieldset)设置属性来禁用整个表单的自动完成功能。示例代码如下:
<form id="redemption" method="post" autocomplete="off">
- list(及对应的datalist元素)
list属性以及对应的datalist元素可以让用户在输入框中开始输入值的时候,显示一组备选值。
list属性中的值(awards)同时也是datalist元素的id。这样就可以让datalist与输入项关联起来。虽然将option包裹在select中不是必需的,但这样做便于为老版本浏览器提供降级方案。
HTML5的新输入类型
- type=”email”——支持它的浏览器会期望用户的输入匹配电子邮箱的格式。
- type=”number”——支持该特性的
浏览器期望输入一个数字。这种输入类型默认还提供控制按钮,允许用户简单地点击向上或向下来改变数值。
你可能注意到在上面的代码中,我们还设置了允许输入的最小值和最大值范围,具体代码如下:
type="number" min="1929" max="2015"
超出范围的数字会(应该)得到特殊对待。
- type=”url”——你猜对了,URL输入类型用于输入URL地址。
- type=”tel”是另一种用于收集联系人信息的输入类型。tel表示表单域期望输入一个电话号码- type=e=”search”——和普通文本输入框的表现基本一样,仅在个别浏览器中渲染得有点细微差别。
你可用pattern属性通过正则表达式来定义表单域的数据
- type=”color”——会在支持该特性的浏览器中生成一个颜色选择器,让用户可以选择十六进制的颜色值。
- 日期和时间输入类型
和color类型一样,目前对date提供原生支持的浏览器寥寥无几,大多数浏览器默认都将其渲染为标准的文本输入框。超级棒的Opera已经实现了这个功能
range输入类型会生成一个滑动条。CSS3
设备控制
- 打开数字键盘
<input type="tel">
- 隐藏地址栏
setTimeout(function(){ window.scrollTo(0, 1); }, 0);
- 在iPhone,iPad,iTouch的safari上可以使用添加到主屏按钮将网站添加到主屏幕上
<link rel="apple-touch-icon" href="apple-touch-icon-iphone.png" />
<link rel="apple-touch-icon" sizes="72x72" href="apple-touch-icon-ipad.png" />
<link rel="apple-touch-icon" sizes="114x114" href="apple-touch-icon-iphone4.png" />
设备交互
- input fixed失效问题
参考:
iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
【小贴士】虚拟键盘与fixed带给移动端的痛!
Web移动端Fixed布局的解决方案
出现原因:
移动端虚拟键盘出现的条件是:文本框(文本类)获得焦点,但是文本框获得焦点未必会弹出键盘;
收起虚拟键盘的条件是:文本框失焦
总而言之,我们认为会出现或者消失虚拟键盘的时候都可能不工作
在移动设备上,如果文本框在上方,点击不会有什么问题:
在设备的最下面的话,整个块会上移,以将input区域显示出来
这个时候几个棘手的问题就出现了:
① 虚拟键盘的出现对页面来说是不可知的,这句话的理解是:没有键盘出现事件,没有办法获取键盘高度
② 键盘是“贴”在了viewport上,表面上不会对dom产生“任何”影响,但是这个时候一些定位元素的表现却变得“怪异”。
软键盘唤起后,页面的 fixed 元素将失效(即无法浮动,也可以理解为变成了 absolute 定位),所以当页面超过一屏且滚动时,失效的 fixed 元素就会跟随滚动了。
这便是 iOS 上 fixed 元素和输入框的 bug 。其中不仅限于 type=text 的输入框,凡是软键盘(比如时间日期选择、select 选择等等)被唤起,都会遇到同样的问题。
解决方案:
使fixed的父元素不滚动,将滚动区域限制在与footer和header同级的内容部分。性能优化
参考:移动开发规范概述
要考虑Android低端机与2G网络场景下性能 注意!发布前必要检查项
所有图片必须有进行过压缩 考虑适度的有损压缩,如转化为80%质量的jpg图片 考虑把大图切成多张小图,常见在banner图过大的场景
加载性能优化, 达到打开足够快
数据离线化,考虑将数据缓存在 localStorage 初始请求资源数 < 4 图片使用CSS Sprites 或 DataURI 外链 CSS 中避免 @import 引入 考虑内嵌小型的静态资源内容 初始请求资源gzip后总体积 < 50kb 静态资源(HTML/CSS/JS/Image)是否优化压缩? 避免打包大型类库 确保接入层已开启Gzip压缩(考虑提升Gzip级别,使用CPU开销换取加载时间) 注意! 尽量使用CSS3代替图片 初始首屏之外的静态资源(JS/CSS)延迟加载 初始首屏之外的图片资源按需加载(判断可视区域) 单页面应用(SPA)考虑延迟加载非首屏业务模块 开启Keep-Alive链路复用
运行性能优化, 达到操作足够流畅
避免 iOS 300+ms 点击延时问题 注意! 缓存 DOM 选择与计算 避免触发页面重绘的操作 Debounce连续触发的事件(scroll / resize / touchmove等),避免高频繁触发执行 注意! 尽可能使用事件代理,避免批量绑定事件 使用CSS3动画代替JS动画 避免在低端机上使用大量CSS3渐变阴影效果,可考虑降级效果来提升流畅度 HTML结构层级保持足够简单 尽能少的使用CSS高级选择器与通配选择器 Keep it simple
在线性能检测评定工具使用指南
访问 Google PageSpeed 在线评定网站 在地址栏输入目标URL地址,点击分析按钮开始检测 按 PageSpeed 分析出的建议进行优化,优先解决红色类别的问题
-
C#开发笔记,点点细微,处处真情,记录开发中的难言之隐
2018-07-25 15:21:58C#开发笔记之01-为什么开源框架会大量的使用protected virtual? C#开发笔记之02-什么时候使用OnXXX方法,这种命名是什么意思? C#开发笔记之03-为什么选择IsNotXXX方法而不是IsXXX方法? C#开发笔记之0...该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/956 访问。
概述
本系列文章将会向大家介绍本人实际开发过程中所遇到技术点和心得,旨在抛砖引玉。
目录
C#开发笔记之01-为什么开源框架会大量的使用protected virtual?
C#开发笔记之02-什么时候使用OnXXX方法,这种命名是什么意思?
C#开发笔记之03-为什么选择IsNotXXX方法而不是IsXXX方法?
C#开发笔记之05-迭代器中的状态机(State Machine)到底是什么?
C#开发笔记之06-为什么要尽可能的使用尾递归,编译器会为它做优化吗?
C#开发笔记之07-如何实现交换2个变量的值而不引入中间变量?
C#开发笔记之08-为什么编译器一定要让你给某些变量赋初始值?
C#开发笔记之18-如何用C#模拟发送Post请求或Get请求?
C#开发笔记之19-如何用C#实现优雅的Json解析(序列化/反序列化)方案?
C#开发笔记之21-C#解析Json(序列化/反序列化)的最佳实践。
C#开发笔记之22-C#中的int、long、float、double等类型都占多少个字节的内存。
说明
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/956 访问。
本系列文章将不定期更新,根据本人在实际开发过程中遇到的问题和比特飞网友的留言来决定将要发表的主题。
-
Java开发笔记(序)章节目录
2018-11-11 12:37:56Java开发笔记(一)第一个Java程序 Java开发笔记(二)Java工程的帝国区划 Java开发笔记(三)Java帝国的特种官吏 Java开发笔记(四)Java帝国的度量衡 第二章 数值变量 Java开发笔记(五)数值变量的类型 Java开发...现将本博客的Java学习文章整理成以下笔记目录,方便查阅。
第一章 初识Java
Java开发笔记(一)第一个Java程序
Java开发笔记(二)Java工程的帝国区划
Java开发笔记(三)Java帝国的特种官吏
Java开发笔记(四)Java帝国的度量衡
第二章 数值变量
Java开发笔记(五)数值变量的类型
Java开发笔记(六)特殊数字的表达
Java开发笔记(七)强制类型转换的风险
第三章 算术运算
Java开发笔记(八)五种算术运算符
Java开发笔记(九)赋值运算符及其演化
Java开发笔记(十)一元运算符的技巧
Java开发笔记(十一)常见的数学函数
第四章 关系运算
Java开发笔记(十二)布尔变量论道与或非
Java开发笔记(十三)利用关系运算符比较大小
Java开发笔记(十四)几种运算符的优先级顺序
Java开发笔记(十五)短路逻辑运算的优势
第五章 流程控制
Java开发笔记(十六)非此即彼的条件分支
Java开发笔记(十七)各得其所的多路分支
Java开发笔记(十八)上下求索的while循环
Java开发笔记(十九)规律变化的for循环
第六章 使用数组
Java开发笔记(二十)一维数组的用法
Java开发笔记(二十一)二维数组的扩展
Java开发笔记(二十二)神奇的冒号
Java开发笔记(二十三)数组工具Arrays
第七章 方法定义
Java开发笔记(二十四)方法的组成形式
Java开发笔记(二十五)方法的输入参数
Java开发笔记(二十六)方法的输出参数
第八章 数字包装
Java开发笔记(二十七)数值包装类型
Java开发笔记(二十八)布尔包装类型
Java开发笔记(二十九)大整数BigInteger
Java开发笔记(三十)大小数BigDecimal
第九章 字符类型
Java开发笔记(三十一)字符类型的表达
Java开发笔记(三十二)字符型与整型相互转化
Java开发笔记(三十三)字符包装类型
第十章 字符串
Java开发笔记(三十四)字符串的赋值及类型转换
Java开发笔记(三十五)字符串格式化
Java开发笔记(三十六)字符串的常用方法
第十一章 正则表达式
Java开发笔记(三十七)利用正则串分割字符串
Java开发笔记(三十八)利用正则表达式校验字符串
第十二章 日期
Java开发笔记(三十九)日期工具Date
Java开发笔记(四十)日期与字符串的互相转换
Java开发笔记(一百五十二)Date工具的时间格式
第十三章 日历
Java开发笔记(四十一)日历工具Calendar
Java开发笔记(四十二)日历工具的常见应用
第十四章 本地日期时间
Java开发笔记(四十三)更好用的本地日期时间
Java开发笔记(四十四)本地日期时间与字符串的互相转换
Java开发笔记(一百五十三)时间戳的获取和转换
第十五章 类的封装
Java开发笔记(四十五)成员属性与成员方法
Java开发笔记(四十六)类的构造方法
Java开发笔记(四十七)关键字this的用法
第十六章 类的继承
Java开发笔记(四十八)类的简单继承
Java开发笔记(四十九)关键字super的用法
Java开发笔记(五十)几种开放性修饰符
第十七章 类的多态
Java开发笔记(五十一)多态的发生场景
Java开发笔记(五十二)对象的类型检查
Java开发笔记(五十三)关键字final的用法
第十八章 特殊类
Java开发笔记(五十四)内部类和嵌套类
Java开发笔记(五十五)关键字static的用法
Java开发笔记(五十六)利用枚举类型实现高级常量
第十九章 抽象接口
Java开发笔记(五十七)因抽象方法而产生的抽象类
Java开发笔记(五十八)简单接口及其实现
Java开发笔记(五十九)Java8之后的扩展接口
Java开发笔记(六十)匿名内部类的优势
第二十章 函数式编程
Java开发笔记(六十一)Lambda表达式
Java开发笔记(六十二)如何定义函数式接口
Java开发笔记(六十三)双冒号标记的方法引用
Java开发笔记(六十四)静态方法引用和实例方法引用
第二十一章 容器
Java开发笔记(六十五)集合:HashSet和TreeSet
Java开发笔记(六十六)映射:HashMap和TreeMap
Java开发笔记(六十七)清单:ArrayList和LinkedList
第二十二章 泛型
Java开发笔记(六十八)从泛型方法探究泛型的起源
Java开发笔记(六十九)泛型类的定义及其运用
Java开发笔记(七十)Java8新增的几种泛型接口
第二十三章 容器加工
Java开发笔记(七十一)容器工具Collections
Java开发笔记(七十二)Java8新增的流式处理
第二十四章 异常
Java开发笔记(七十三)常见的程序异常
Java开发笔记(七十四)内存溢出的两种错误
Java开发笔记(七十五)异常的处理:扔出与捕捉
Java开发笔记(七十六)如何预防异常的产生
Java开发笔记(七十七)使用Optional规避空指针异常
第二十五章 反射
Java开发笔记(七十八)面向对象的后门——反射
Java开发笔记(七十九)利用反射技术操作私有属性
Java开发笔记(八十)利用反射技术操作私有方法
第二十六章 注解
Java开发笔记(八十一)如何使用系统自带的注解
Java开发笔记(八十二)注解的基本单元——元注解
Java开发笔记(八十三)利用注解技术检查空指针
第二十七章 文件读写
Java开发笔记(八十四)文件与目录的管理
Java开发笔记(八十五)通过字符流读写文件
Java开发笔记(八十六)通过缓冲区读写文件
Java开发笔记(八十七)随机访问文件的读写
第二十八章 I/O流
Java开发笔记(八十八)文件I/O字节流
Java开发笔记(八十九)缓存I/O字节流
Java开发笔记(九十)对象序列化及其读写
Java开发笔记(九十一)I/O流处理简单的数据压缩
第二十九章 NIO
Java开发笔记(九十二)文件通道的基本用法
Java开发笔记(九十三)深入理解字节缓存
Java开发笔记(九十四)文件通道的性能优势
Java开发笔记(九十五)NIO配套的文件工具Files
第三十章 线程
Java开发笔记(九十六)线程的基本用法
Java开发笔记(九十七)利用Runnable启动线程
Java开发笔记(九十八)利用Callable启动线程
Java开发笔记(九十九)定时器与定时任务
第三十一章 并发
Java开发笔记(一百)线程同步synchronized
Java开发笔记(一百零一)通过加解锁避免资源冲突
Java开发笔记(一百零二)信号量的请求与释放
Java开发笔记(一百零三)线程间的通信方式
第三十二章 线程池
Java开发笔记(一百零四)普通线程池的运用
Java开发笔记(一百零五)几种定时器线程池
Java开发笔记(一百零六)Fork+Join框架实现分而治之
第三十三章 数据格式
Java开发笔记(一百零七)URL地址的组成格式
Java开发笔记(一百零八)JSON串的定义和解析
Java开发笔记(一百零九)XML报文的定义和解析
第三十四章 HTTP访问
Java开发笔记(一百一十)GET方式的HTTP调用
Java开发笔记(一百一十一)POST方式的HTTP调用
Java开发笔记(一百一十二)Java11新增的HttpClient
Java开发笔记(一百一十三)HttpClient实现下载与上传
第三十五章 Socket通信
Java开发笔记(一百一十四)利用Socket传输文本消息
Java开发笔记(一百一十五)使用Socket开展文件传输
Java开发笔记(一百一十六)采用UDP协议的Socket通信
第三十六章 AWT面板
Java开发笔记(一百一十七)AWT窗口
Java开发笔记(一百一十八)AWT按钮
Java开发笔记(一百一十九)AWT布局
第三十七章 AWT控件
Java开发笔记(一百二十)AWT文本标签
Java开发笔记(一百二十一)AWT输入框
Java开发笔记(一百二十二)AWT选择框
第三十八章 AWT图像
Java开发笔记(一百二十三)AWT图像视图
Java开发笔记(一百二十四)AWT绘图操作
Java开发笔记(一百二十五)AWT图像加工
第三十九章 Swing基础界面
Java开发笔记(一百二十六)Swing的窗口
Java开发笔记(一百二十七)Swing的标签
Java开发笔记(一百二十八)Swing的图标
第四十章 Swing简单控件
Java开发笔记(一百二十九)Swing的输入框
Java开发笔记(一百三十)Swing的选择框
Java开发笔记(一百三十一)Swing的列表框
第四十一章 Swing高级控件
Java开发笔记(一百三十二)Swing的表格
Java开发笔记(一百三十三)Swing的菜单
Java开发笔记(一百三十四)Swing的基本对话框
Java开发笔记(一百三十五)Swing的文件对话框
第四十二章 JavaFX场景
Java开发笔记(一百三十六)JavaFX的窗格
Java开发笔记(一百三十七)JavaFX的标签
Java开发笔记(一百三十八)JavaFX的箱子
第四十三章 JavaFX控件
Java开发笔记(一百三十九)JavaFX的输入框
Java开发笔记(一百四十)JavaFX的选择框
Java开发笔记(一百四十一)JavaFX的列表与表格
Java开发笔记(一百四十二)JavaFX的对话框
第四十四章 FXML布局
Java开发笔记(一百四十三)FXML布局的基本格式
Java开发笔记(一百四十四)实现FXML对应的控制器
Java开发笔记(一百四十五)FXML布局的伸展适配
第四十五章 JDBC编程
Java开发笔记(一百四十六)JDBC的应用原理
Java开发笔记(一百四十七)通过JDBC管理数据库
Java开发笔记(一百四十八)通过JDBC查询数据记录
Java开发笔记(一百四十九)引入预报告的好处
第四十六章 连接池
Java开发笔记(一百五十)C3P0连接池的用法
Java开发笔记(一百五十一)Druid连接池的用法本系列教程的所有源码均可到我的github主页下载,页面地址是https://github.com/aqi00/java
未完待续,更多精彩内容敬请期待
本系列的入门教程已整理成书出版,有兴趣的读者可移步前往《好好学Java 从零基础到项目实战》。
-
iOS 开发笔记
2016-01-07 17:09:53iOS 开发笔记 Temporary exceptions can be configured via your app’s Info.plist file. You have to set the NSAllowsArbitraryLoads key to YES under NSAppTransportSecurity dictionary in your .plist file. ... -
ZigBee开发笔记博文导航
2018-07-14 21:02:48自博主更新该专栏也很久了,今天博主就给出关于ZigBee开发的一个导航,为的是读者朋友能更好找到自己所感兴趣的那一块,当然博主以后对ZigBee有新的发现和想法也会在第一...ZigBee开发笔记 第一部分 入门篇 ... -
NB-IOT开发笔记
2019-09-30 16:50:05NB-IOT开发笔记 名词解释: 南向设备:开发者自行开发的终端硬件设备(包含多个传感器和MCU)。 北向应用:开发者自行开发的服务端应用(基于华为OceanConnect物联网平台提供的RESTful接口)。 NB-IoT:窄带物联网,... -
Android 开发笔记之界面开发
2012-08-04 21:51:11Android 开发笔记之界面开发 相关代码下载:http://download.csdn.net/detail/nuptboyzhb/4476822 1. android开发的帮助文档 我的androidSDK安装路径是D:\android-sdk-windows,因此,帮助文档的路径在D:\... -
ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植
2017-07-16 13:49:57ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植 Atmel两个官方lib介绍 CryptoAuthLib简介 bitbang方式移植CryptoAuthLib 从逻辑和代码上分析CryptoAuthLib的底层驱动调用结构关系 508A 另一... -
FreeRTOS 与 LWIP 开发笔记
2016-12-11 23:27:59FreeRTOS 与 LWIP 开发笔记最近使用STM32 cube 固件库进行开发,使用的软件开发工具为SW4STM32和STM32CubeMX ,发现使用官方的cube 新库有一个最大的好处就是能使用STM32CubeMX进行工程初始化的配置工作,非常直观的... -
Qt开发笔记(一):Qt+FFmpeg开发环境搭建以及工程模板
2019-05-15 17:48:42原博主博客地址:https://blog.csdn.net/qq21497936 ... Qt开发笔记(一):Qt+FFmpeg开发环境搭建以及工程模板 前言 需要使用到FFmpeg做播放器编解码,qt自带的播放器有较大局限,如依赖系统,播放... -
Web笔记-移动前端开发笔记
2020-02-16 18:11:41因为最近有个移动端的小项目,在此稍微学习下移动端开发基础概念。免得用框架的时候莫名其妙。 px(CSS pixels):逻辑像素,浏览器使用的抽象单位; dp,pt(device independent pixels):设备无关像素; dpr... -
STM32G0开发笔记-2-开发环境搭建之Keil安装
2019-01-31 15:41:43STM32G0开发笔记-2-开发环境搭建之Keil安装 1、下载Keil软件 2、安装Keil软件 3、导入STM32G0开发包 STM32G0开发笔记-2-开发环境搭建之Keil安装 1、下载Keil软件 链接:... -
Android开发笔记(序)写在前面的目录
2015-11-24 14:36:06知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯;另一方面希望通过分享自己的经验教训,与网友互相切磋,...还有就是有的知识点是java的,只是Android开发也会经常遇上,所以蛮记下来。个人的经验... -
STM32G0开发笔记-1-开发环境搭建之STM32CubeMX
2019-01-31 14:32:39STM32G0开发笔记-1-开发环境搭建之STM32CubeMX 1、下载STM32cubeMX软件,解压 2、安装STM32cubeMX并配置 3、选择芯片型号并创建工程 4、生成工程文件 STM32G0开发笔记-1-开发环境搭建之STM32CubeMX 1、下载STM... -
科大讯飞AIUI评估板开发笔记
2018-11-26 16:05:05讯飞AIUI开发笔记初步配置AIUI首先是拿到的板子然后就是上电开机真正的开发配置 讯飞AIUI开发笔记 初步配置AIUI 买回来的讯飞AIUI评估板不会使用 型号是XFAIEVB01 根本摸不着头脑,资料也是非常的少,可供学习的地方... -
golang go语言 gomobile 移动端开发笔记
2016-03-11 07:17:22golang go语言 gomobile 移动端开发笔记。 -
JRtplib开发笔记(四):JRtplib的VS开发环境搭建以及Demo
2018-12-11 16:56:12原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:... 《JRtplib开发笔记(一):JRtplib简介、JThread库编译》:https://blog.csdn.net/qq21497936/article/details/8478... -
C#开发笔记之03-为什么选择IsNotXXX方法而不是IsXXX方法?
2018-08-03 00:41:09C#开发笔记概述 为什么有时候要选择IsNotXXX方法而不是IsXXX方法呢?答案是效率。请看以下代码: public abstract class DataSource { public void ShowChart() { if (IsNotJson()) { Convert2Json(); } } ... -
MLX90640开发笔记(一)概述及开发资料准备
2019-10-10 09:37:58现在自己在做红外成像仪的越来越多了,两年前有个井下机电设备运行状态的科研项目,当时使用了AMG8833(8*8像素)。前段时间因为公司生产电路板...经过半个月的时间,开发基本完成,本文是开发过程的笔记和注意事... -
C#开发笔记之04-如何用C#优雅的计算个人所得税?
2018-07-25 15:00:32C#开发笔记概述 首先,要对个人所得税的计算方式了解之后再看本文。 个人所得税的计算使用任何计算机语言来实现都比较简单,关键是如何优雅的实现呢?我们的目标是消除大量难看的if语句。 方式1:请参考我的C#... -
C#开发笔记之01-为什么开源框架会大量的使用protected virtual?
2018-08-03 00:41:19C#开发笔记概述 我们在很多开源框架中会经常看到protected virtual标记的方法,那么为什么要使用这2个关键字呢? 1、使用protected访问修饰符标记的方法或字段,只能在当前类及其子类中使用,有效的防止了外部无意... -
VS插件开发笔记
2018-11-29 22:18:55关于VS插件开发的一篇很懒的笔记。 Demo Demo在这里: DllReferencePathChanger 微软官方Demo在这里: VSSDK-Extensibility-Samples 基本步骤看这里: Visual Studio 2015 插件开发 从入门到放弃 visual Studio ... -
C++内核驱动开发笔记<1>
2018-12-07 14:06:07C++内核驱动开发笔记<1>0x1环境0x2代码0x3问题0x4解决 0x1环境 Visual Studio 2017 WDK&Windows SDK: 10.0.17763.0 OS:Windows 7 模板:Kernel Mode Driver,Empty(KDMF) 0x2代码 #include... -
PHP微信公众开发笔记(九)
2014-09-11 18:18:48PHP微信公众开发笔记系列 -
PHP微信公众开发笔记(十)
2014-09-11 18:22:18PHP微信公众开发笔记系列 -
树莓派开发笔记(四):更方便的开发,qt远程运行(主机qt开发一键远程运行到目标机上)
2018-03-28 09:50:01若该文为原创文章,未经允许不得转载 原博主博客地址:... 目录 树莓派开发笔记(四):更便捷的开发,qt远程运行(主机qt开发一键远程运行到目标机上) 前话 配置qt远程设备运行参数 步骤一:确认s... -
JRtplib开发笔记(三):JRtplib库编程使用说明
2018-12-11 16:46:33原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:... 《JRtplib开发笔记(一):JRtplib简介、JThread库编译》:https://blog.csdn.net/qq21497936/article/details/8478... -
AVRWARE++开发笔记1:综述
2015-09-25 19:15:52从今天开始撰写AVRWARE++开发笔记,用以使用AVRWARE++程序架构,对Atmel公司的AVR系列单片机进行快速开发。对于开发笔记的任何问题,大家都可以进行留言探讨。 1、简介 AVRWARE++是一套开源的基于层次化软件... -
ios-cocos2d游戏开发基础-进度条-开发笔记
2012-04-04 11:23:49ios-cocos2d游戏开发基础-相关介绍-开发笔记(一) ios-cocos2d游戏开发基础-基础知识-开发笔记(二) cocos2d 入门必备4个基本概念 ios-cocos2d游戏开发基础-创建场景-开发笔记(三) COCOS2D坐标...
-
dsadsad
-
【2021】Python3+Selenium3自动化测试(不含框架)
-
基于X210的裸机时钟温度显示器-第3/3季
-
JS完成轮播图(全部JS代码,自动轮播)
-
串口监测AccessPort137.rar
-
【数据分析-随到随学】数据分析基础及方法论
-
MEMS 的多物理场仿真(COMSOL)
-
国家注册渗透测试工程师(Web安全)
-
图论算法软件.zip
-
Selenium3分布式与虚拟化
-
33 文件对象的属性与方法.mp4
-
CentOS 7 安装PHP 5.4.16
-
国家注册信息安全工程师体系课程(CISP-PTE)
-
287. 寻找重复数(转换成图论去做,环形链表)
-
【数据分析-随到随学】数据可视化
-
DQL语言-Union联合查询
-
webots仿真案例.rar
-
Optimization Week 4: Duality
-
VASP安装教程(centos)
-
面向精准营销的地域特产电商平台的设计与实现.pdf