要安装C语言 同学发来一个文件 还是c语言找不到头文件怎么安装

&ul&&li&&i&&b&先说说学习方法部分&/b&&/i&&/li&&/ul&&ol&&li&&b& 首先要能勾起兴趣&/b&&br&
能够结合 生(游)活(戏) 中的实例来学习,就最好不过了&br&&img data-rawheight=&603& data-rawwidth=&631& src=&/54781fcc6a713f2832ade1ce61dba45d_b.png& class=&origin_image zh-lightbox-thumb& width=&631& data-original=&/54781fcc6a713f2832ade1ce61dba45d_r.png&&&br&&/li&&li&&b& 一来最好就让我知道这个学习目的是什么,不要一开始就太多理论,看的我云里雾里,消磨掉耐心和动力&/b&&img data-rawheight=&383& data-rawwidth=&475& src=&/2b88a8c344c838ba8e222dc5b7f16e09_b.png& class=&origin_image zh-lightbox-thumb& width=&475& data-original=&/2b88a8c344c838ba8e222dc5b7f16e09_r.png&&&/li&&li&&b& 接着要有参考代码&/b&&br& 学习编程嘛,通过敲代码的方式来学习是最快捷的了&br&&img data-rawheight=&593& data-rawwidth=&567& src=&/0bf49fb22cb1d3b17bf141_b.png& class=&origin_image zh-lightbox-thumb& width=&567& data-original=&/0bf49fb22cb1d3b17bf141_r.png&&&br&&/li&&li&&b& 重要的是,参考代码能够运行的出来&/b&&br&这种经历我碰到过N+1回了,好不容易在网上找到某篇文章是我想要的答案,但是跟着答案上的代码敲完,运行不出来啊!!!&br&所以,如果能够提供运行成功的证明,我跟着做,也会有信心的多&br&&img data-rawheight=&321& data-rawwidth=&447& src=&/f65a018fe7ff90a3bfb98be3_b.png& class=&origin_image zh-lightbox-thumb& width=&447& data-original=&/f65a018fe7ff90a3bfb98be3_r.png&&&br&&/li&&li&&b& 完整的可以运行完整的项目下载就更好了&/b&&br&有些知识的学习,仅仅有代码还不够的,还需要配置文件,jar包,不同版本的jar包之间还不能兼容,还需要能兼容的jar包。。。。 所以,如果有能够运行的完整项目下载,就能99%保证,跟着学,也能做出来。 &br&做出来很重要哟,如果做不出来,我怎么说服自己学会了呢。。。&br&&img data-rawheight=&313& data-rawwidth=&707& src=&/290b93aa2f_b.png& class=&origin_image zh-lightbox-thumb& width=&707& data-original=&/290b93aa2f_r.png&&&br&&/li&&li&&b& 跟着要有理论知识阐述&/b&&br&好吧,现在我做出来了,那么。。。为什么呢? 这个时候,我就处于一种很饥渴的状态,你讲的道理,我就听得进去了&br&&img data-rawheight=&207& data-rawwidth=&749& src=&/466a31ccd10d0cfc239e3_b.png& class=&origin_image zh-lightbox-thumb& width=&749& data-original=&/466a31ccd10d0cfc239e3_r.png&&&br&&/li&&li&&b& 最好还有原理图讲解&/b&&br&
a picture is worth a thousand words 嘛~&br&&img data-rawheight=&451& data-rawwidth=&573& src=&/4a4533ec8ccf9c51d4dbaeab002cd9ee_b.png& class=&origin_image zh-lightbox-thumb& width=&573& data-original=&/4a4533ec8ccf9c51d4dbaeab002cd9ee_r.png&&&br&&/li&&li&&b& 实在理解上有不到位,还能跟着视频里的思路加强学习&/b&&br&其实看视频学习是又有优点,又有缺点。&br&&b&优点&/b& 就是容易跟上老师的思路,有一些概念,老师用语言表述的时候,会比文字更好。 &br&&b&缺点 &/b&是比较冗长,比如敲代码这部分,刚开始,你看着老师敲,还是会觉得有收获的,后面熟练起来了后,就不得不看着老师敲代码~ 这无形中就加大了时间成本的投入,降低了学习的效率。 特别是一些学习视频,动辄50分钟以上,这个打开时很需要勇气的好吧,你以为是&u&ABS-139&/u&,&u&DOM-043&/u& 这样的吗? &br&&br&&img data-rawheight=&404& data-rawwidth=&772& src=&/a84fc6e91e_b.png& class=&origin_image zh-lightbox-thumb& width=&772& data-original=&/a84fc6e91e_r.png&&&br&&/li&&li&&b& 最后还能有练习,不要太难,略有挑战,可以巩固和加深学习印象&/b&&br&不能光看你干,总得轮到我爽爽吧~&br&&img data-rawheight=&402& data-rawwidth=&680& src=&/70f95f2d4e22b3ac30383f_b.png& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&/70f95f2d4e22b3ac30383f_r.png&&&br&&/li&&li&&b& 第二天想学了,但是忘记昨天学到哪里了~&/b&&br&&img data-rawheight=&255& data-rawwidth=&312& src=&/12becccf47626ccd446be34_b.png& class=&content_image& width=&312&&&/li&&li&&b& 一共有多少来着? 整体的学习进度能提醒下我,我会很有动力&/b&&br&&img data-rawheight=&470& data-rawwidth=&434& src=&/749efa0d967ed815addaadbb_b.png& class=&origin_image zh-lightbox-thumb& width=&434& data-original=&/749efa0d967ed815addaadbb_r.png&&&br&&/li&&/ol&&ul&&li&&i&&b&接着说说学习路径规划&/b&&/i&&/li&&/ul&&ol&&li&&b& 基础总归是必须的嘛&/b&&br&&img data-rawheight=&483& data-rawwidth=&723& src=&/d0f6e5d98b64_b.png& class=&origin_image zh-lightbox-thumb& width=&723& data-original=&/d0f6e5d98b64_r.png&&&br&&/li&&li&&b& 有了基础,中级内容就可以展开了嘛&/b&&br&&img data-rawheight=&481& data-rawwidth=&716& src=&/9bd1c1b77f7fa467a479a1_b.png& class=&origin_image zh-lightbox-thumb& width=&716& data-original=&/9bd1c1b77f7fa467a479a1_r.png&&&br&&/li&&li&&b& 做J2EE的话,前端基础还是要的嘛&/b&&br&&img data-rawheight=&483& data-rawwidth=&708& src=&/c9eff8fa0d79d2ac8e030de6_b.png& class=&origin_image zh-lightbox-thumb& width=&708& data-original=&/c9eff8fa0d79d2ac8e030de6_r.png&&&br&&/li&&li&&b& 服务端自然也不能少啦&/b&&br&&img data-rawheight=&478& data-rawwidth=&715& src=&/40bbe8ba_b.png& class=&origin_image zh-lightbox-thumb& width=&715& data-original=&/40bbe8ba_r.png&&&br&&/li&&li&&b& 进了企业,框架的应用也要跟上嘛&/b&&br&&img data-rawheight=&485& data-rawwidth=&705& src=&/5a537d0bf6c_b.png& class=&origin_image zh-lightbox-thumb& width=&705& data-original=&/5a537d0bf6c_r.png&&&br&&/li&&li&&b& 数据库mysql oracle总要学一个的啦&br&&img data-rawheight=&300& data-rawwidth=&689& src=&/0beaf7743fc6dbb28819_b.png& class=&origin_image zh-lightbox-thumb& width=&689& data-original=&/0beaf7743fc6dbb28819_r.png&&&/b&&br&&/li&&li&&b& 没进企业之前,面试题还是要刷一刷滴&/b&&br&&img data-rawheight=&432& data-rawwidth=&635& src=&/8dfecbfbdb1633_b.png& class=&origin_image zh-lightbox-thumb& width=&635& data-original=&/8dfecbfbdb1633_r.png&&&br&&/li&&/ol&&ul&&li&&b&最关键的,不收钱就最好了~&/b&&/li&&li&&b&总结&br&&/b&&/li&&/ul&
以上内容和知识并不是很难,坚持下来就可以学会,如果是个人自学呢,估计大概要3个月左右吧。 真正难的呢,还是自律性,我就很喜欢玩DOTA~~~ 你懂得 ~~~&br&
截图均取自&a class=& wrap external& href=&///?target=http%3A//& target=&_blank& rel=&nofollow noreferrer&&Java教程
| 以实例驱动学习&i class=&icon-external&&&/i&&/a&,接下来计划增加更多的内容,比如Java应用(发邮件,xml解析,正则表达式等等)和高级Java内容(JVM虚拟机解读,tomcat源码解读什么的)。&br&
本人从事Java开发和团队管理有8年左右,后来做Java教育,大概6年左右,现在正在努力把Java教育的知识以更好的办法展示出来。希望和大家多多交流,互相学习提高,谢谢
先说说学习方法部分 首先要能勾起兴趣 能够结合 生(游)活(戏) 中的实例来学习,就最好不过了 一来最好就让我知道这个学习目的是什么,不要一开始就太多理论,看的我云里雾里,消磨掉耐心和动力 接着要有参考代码 学习编程嘛,通过敲代码的方式来学习是最快…
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。 &br&第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的indows, Unix, Linux, Mac, os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。 &br&第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。 &br&那么究竟怎样学习C语言呢? &br&1:工欲善其事,必先利其器 &br&一本学习教程,其实C语言的书都可以,没有不好的书,只有不好好学习的朋友 &br&2:葵花宝典 &br&学习计算机语言最好的方法是什么?答曰:读程序。 &br&没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。 &br&3:登峰造极 &br&写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。 &br&是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。&br&编译软件,对于新手来说VC++6.0简单易操作.希望能帮到你。我是大学计算机专业的。如有不清楚,也可以,我 扣,一起来学习
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。 第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所…
&p&个人认为&/p&&p&1.Java相关知识:&/p&&blockquote&&p&面向对象的概念&/p&&p& 理解引用&/p&&p&继承/多态&/p&&p&接口/内部类/匿名内部类/回调(钩子)/观察者模式&/p&&p&异常(声明/捕获)&/p&&p&I/O:类结构/装饰者模式&/p&&p&容器:List/Map/…&/p&&p&多线程:同步/线程池/…&/p&&/blockquote&&p&其中主要学会io和内部类即可,然后就可以去学习安卓的内容了。&/p&&p&2.Android的相关内容主要掌握&/p&&blockquote&&p&常用布局/控件的使用/ListView/…&/p&&p&dialog/PopupWindow/Option Menu/Context Menu&/p&&p&fragment&/p&&p&Activity(UIViewController)/broadcastreceiver/service/..&/p&&p&Activity和Service/activity和fragment&/p&&p&intent的各种属性/显式意图/隐式意图&/p&&p&网络通信http:http协议/httpclient/volley/.../json/xml解析&/p&&p&耗时任务:Thread/asynctask/handler&/p&&p&动画:Tween Animation(iOS核心动画:假象)/DrawableAnimation/Property Animation(3.0,UIView)&/p&&p&各种资源文件:字符串/数组/图片/.../style/attr/selector&/p&&/blockquote&以上是我认为做安卓的最基础的知识。有了这些知识便可以做出一款完整的app。&br&3.会使用一些开源项目。github上面有一个安卓开源项目汇总&a href=&///?target=https%3A///Trinea/android-open-project& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Trinea/android-open-project · GitHub&i class=&icon-external&&&/i&&/a&&br&4.做一两个项目&br&&br&关于学习方法:&br&1.刚开始的时候,可以看视频,这样学起来快一些,刚开始我认为看书是没有用的,通过看视频快速掌握基本东西,可以达到事半功倍的效果。主要参考mars和老罗的视频。&br&2.这时已经会基本的开发了,接下来可以做一个项目用到平时学习的小的知识点。同样也可以跟着视频学习,网上有一些培训公司的视频,跟着写一个项目就明白软件开发的基本流程了。记住:一定要动手敲代码!&br&3.这个时候你会发现,做开发基本就是代码拼凑,拿一些现成的开源框架或者以前写过的代码复制粘贴,就是api的调用,已经很容易写一些东西了。就需要从入门阶段进行进阶了,可以将重心放在框架层的源码上面,研究安卓的源代码也是学习安卓的好方式。研究各种manager,Binder,时间分发,view绘制等等,可以做一些自定义的控件,研究开源框架,比如volley等。&br&4.务实基础,可能在前面的阶段java基础知识还不是很扎实,比如启动一个activity用到xxx.class写代码的时候只是照猫画虎,现在完全可以回头研究到底是什么东西,看java虚拟机等等,3和4也是同步的。&br&最最重要的就是基础知识,最近在看操作系统,算法这些,非科班出身的一定要重视基础知识。这样才能在这条路上走的更远,更好!&br&上面说的过程就是我学安卓和踏入it圈子两年以来的经历。最上面列举的java和android的基础知识是有一次和学弟学妹分享做的ppt里面的,希望能帮助到别人。
个人认为1.Java相关知识:面向对象的概念 理解引用继承/多态接口/内部类/匿名内部类/回调(钩子)/观察者模式异常(声明/捕获)I/O:类结构/装饰者模式容器:List/Map/…多线程:同步/线程池/…其中主要学会io和内部类即可,然后就可以去学习安卓的内容了。2.An…
先简单的分两种情况:&br&一、&b&有编程基础,或者科班出身的,直接上吧&/b&。&b&强烈推荐郭霖老师的《第一行代码-Android》&/b&&br&二、没编程基础的,先入门java,如果天天都有比较多的空闲时间的话,这个入门时间要在2周完成,如果没有的话,1个月内完成吧,&b&不要让拖延耽搁你的激情&/b&。&br&如果你准备好了进军Android:&br&
不管你什么时候开始学习Android,&b&请使用Android Studio&/b&,首现改主题,然后去网上搜一下常用的&b&20个快捷键截图放在电脑桌面上&/b&!&br&如果是&b&色彩盲,请自行收藏这个网站&/b&:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Material Design Color Palette Generator&i class=&icon-external&&&/i&&/a&&br&&b&所有书上的UI部分扫一遍就行了&/b&,我相信现在还没有书按material design标准讲解。&br&&b&从一开始起就严格按照material design写&/b&,&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Material Design&i class=&icon-external&&&/i&&/a&我想你一开始学习的时候身边是没设计师的吧,但是按照标准,你不需要设计师:)&br&&b&不要自定义一堆padding margin&/b&,但你需要边框,边距的时候,请看看&b&?android:attr/&/b&里面有木有你需求的(由于android studio强大的补全功能,你一般只需打几个关键词就有提示了),比如你需要给一个ImageButton加点击效果,&b&不要傻不拉几的去写一个selector了&/b&,你只需要输入 item select这些关键词,自动补全就会给你提示了。&br&&b&不要定义&/b&一大堆乱七八糟的&b&字体大小&/b&了,materail design上的几种基本字体大小可以满足你!&br&再也&b&不要使用ListView了,改成RecycleView吧&/b&!&br&再也&b&不要寻找第三方下拉刷新控件了,SwipeRefreshLayout&/b&肯定符合你的要求(不信你看,知乎Android客户端都是用的这个(●ˇ?ˇ●))。&br&再也&b&不要使用第三方侧滑栏了,DrawerLayout能满足你!&/b&&br&再也&b&不要使用ViewPagerTabStripe这一类的第三方Tab控件了,请使用TabLayout!&/b&&br&再也&b&不用找圆形头像控件,圆角控件了,其他的Univeral Image Loader /Picasso也不用看了,直接上&a href=&///?target=http%3A//www.fresco-cn.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fresco | Fresco 中文说明&i class=&icon-external&&&/i&&/a&吧,它都有!&/b&不如用省下的时间看看Fresco的源码。&br&&b&少去国内论坛瞎晃&/b&,然后各种求指点,安心写两个月,你会发现自己水平比他们都强,&b&有问题请去stackOverflow搜索&/b&,&b&国内博文除了几个大牛的都少看,都是假的!都是骗人的!很多写着是原创,但是博文内容他们自己都没试验过,鄙视这些不负责任的!&/b&&br&&b&少听一些人说的有问题要写博客记下来!&/b&把这个时间省下,学一下&b&UML图怎么画,&/b&给自己的&b&工程加一些规范的注释吧!&/b&你的这些规范的源码和规范的注释就是你以后的资料库和经验库!&br&&b&请学会使用Git,自己一个人也要用,我们先不说那些团队合作什么的高大上的,就说你这一版代码修残了,要从原来的重新修改,怎么办?用Git,回滚版本!就说你突然一天电脑出问题了,或者你范二了,没备份就重装系统了,想哭怎么办?用Git,再也不用担心代码突然丢啦!&/b&&br&&strong&----------------------------------------------------------------------------------------&/strong&&br&评论里面有些同学有疑问关于如何学习material design控件,我的建议是&strong&去GitHub搜&/strong&,有很多同行给的例子,比如&a href=&///?target=https%3A///chenyangcun/MaterialDesignExample& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&chenyangcun/MaterialDesignExample · GitHub&i class=&icon-external&&&/i&&/a&&br&这些栗子足够入门。&br&&strong&-------------------------------------------------------------------------------------------------------&/strong&&br&&b&-------------------------------------------------------------------------------------------&/b&&br&有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现&b&NDK并不是神秘的东西,&/b&你跟着官方的步骤走一遍就知道什么回事了,&b&无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA-&NDK-&.SO-&MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。&/b&&br&&b&至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。&/b&&br&&b&一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。&/b&&br&&b&初学者,一句话,多练。&/b&&br&&b&------------------------------------------------------------------------------------------------------------&br&&/b&
说说我的情况吧,第一个学过的语言是C,然后C学的很烂的情况下继续学习了C++,为什么没有先把C学好再学C++呢,因为课程设计==,我有自知之明,所以在上C++的前一个寒假就先开始看了,然后先看了一本《易学c++》,虽然那本书在现在浅显至极,但当时还是感觉有点略难,我通过这本书熟练地掌握了std::iostream!==然后基本的对象模型有了一点概念,我比较好高骛远,于是就在此时想直接通过最后一个大作业——命令行下的RPG游戏 彻底掌握C++这门最难的语言!对,你没听错,我当时想的就是这个大作业要是搞懂了,C++还不是被我各种SM,但很不幸,虽然我一行行的把这个大作业的源码比着答案敲了一遍,但还是不懂,于是就在网上找了一个据说是清华的java课件开始学习,你还别说,除了当时感觉java里面把function叫做method(方法)感觉怪怪的以外,真的在不到3天的时间完全弄懂了对象的概念以及对象的继承,然后差不多就开学了==(当年不懂事,整个寒假就看了这10多天的书),所以java大法好。&br&
好,这是我人生入坑的开始,我说的寒假就是2014年寒假!,在接下来的学校的C++课程中我当然如鱼得水,然后一发不可收拾,很快我就自己把那本98清华版的《visual c++程序设计》弄烂了,确实那本书的只是我掌握的滚瓜烂熟,然后我就深入了解MFC,什么用GDI实现AlphaBlend,MFC的设计思想,MFC中数据库的使用什么的,然而现在回首看来这些并没有什么卵用。然后我就天天晚上回到宿舍打开电脑写代码,但显然我很快从社区(知乎==)上得知MFC很烂,大家都说微软大法好!于是入了C#的坑,然后发现生活好美好===天天真是喜欢C#的不得了,不过有一天我成了软黑,winform绘图闪成狗,loadlibrary看着好蛋疼,以及用user32.dll时,蛋疼的语法,蛋疼的函数名字,API参数,然后我得知,原来罪魁祸首不是c#,是winAPI就长这样!&br&
然后就在知乎大声地教唆下,入了Qt教,入门是看的一个外国人录得视频,英文无字幕,但是他的声音好好听,于是就学了Qt,第一次发现各种Layout的自适应布局,通过掌握QGraphicsView熟悉了MVC模型,后来还用QGraphicsView到了真实的项目,发现===好多坑==,坐标系统是坑,事件系统是坑,总之,欲仙欲死,不过说实话,我至今还是认为Qt的设计挺好的,QML想学,但流产了,原因大概是没时间吧。&br&
然后解除了另外两端惨绝人寰的事情,第一个是第一次做音视频的实时网络传输的时候,资料很少,一开始甚至连Ffmpeg都不知道,后来知道了,就入了Ffmpeg的坑,好多莫名奇妙的错误,都需要右键去看源码,然后音视频的编解码以及Rtp/Rtsp协议弄的差不多,demo也出来的时候,为了广域网,又要入P2P Nat穿透的坑,但是很遗憾,没有完全成功。&br&
还有一些其他乱七八槽的事情回来补==今天先说重点。&br&
在今年4月份左右,我第一次下定决心要搞定Android,而且我真的做到了!虽然以前断断续续看过android,但都没屁用,这次是真的白天看书,晚上写代码。郭霖老师的《第一行代码——android》只看了5章,但在这五章的学习过程中,我真的入了Android的门了,然后那本书我再也没有打开过,当然,Android只会画界面是远远不够的,现在的support.design.widget组件集让Android界面开发变得很轻松了,重要的是和服务器的交互,以及嵌入式本地数字信号处理,一不小心写了这么多,第一次发现自己打字这么快,哈哈~
先简单的分两种情况:一、有编程基础,或者科班出身的,直接上吧。强烈推荐郭霖老师的《第一行代码-Android》二、没编程基础的,先入门java,如果天天都有比较多的空闲时间的话,这个入门时间要在2周完成,如果没有的话,1个月内完成吧,不要让拖延耽搁你的…
我来答点Android相关的吧,虽然可能不大切题。&br&Material Design是一套非常适合开发者掌握的设计语言。它对各类元素都有非常详尽,以至于一些设计师视之为桎梏的规范。&br&做一个设计上60分的Android App,你只需要2个东西:&a href=&///?target=http%3A///design/spec/material-design/introduction.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/design/spec&i class=&icon-external&&&/i&&/a&和Android Studio。Sketch、PhotoShop等设计工具暂时还用不到,一开始就花精力在上面只会徒增你的学习曲线。&br&想做一个界面,然而并没有思路的话,请直接新建Activity,使用默认的模板。默认模板至少能给你提供一个不会太丑或者失控的骨架。&br&&img src=&/752f1089e9caafe47205eb65_b.png& data-rawwidth=&1077& data-rawheight=&634& class=&origin_image zh-lightbox-thumb& width=&1077& data-original=&/752f1089e9caafe47205eb65_r.png&&新建完后挑选主题色,请到&a href=&///?target=http%3A///design/spec/style/color.html%23color-color-palette& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/design/spec/&/span&&span class=&invisible&&style/color.html#color-color-palette&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&里挑(除了蓝色)。挑自己喜欢的就行,不用打开调色板慢慢斟酌,因为你要做的是一个60分的应用,不是90分的。&br&&img src=&/7c76b9d020ba0950cac3_b.png& data-rawwidth=&963& data-rawheight=&697& class=&origin_image zh-lightbox-thumb& width=&963& data-original=&/7c76b9d020ba0950cac3_r.png&&&br&程序内的各项动作图标,请千万别从网上下载各种细线体的iOS风格图标,不仅和Android格格不入,还很可能出现重心不一、意义不明的情况。请直接使用Material Design图标库,方法是在Android Studio里右键-New-Vector Asset。&img src=&/4bdaaf701d6a664d3a95e1_b.png& data-rawwidth=&734& data-rawheight=&665& class=&origin_image zh-lightbox-thumb& width=&734& data-original=&/4bdaaf701d6a664d3a95e1_r.png&&&br&程序内的各项元素,请尽量使用design-support所提供的组件。比如fab、snack bar等等,通常情况下工程师自己草草设计并自定义的view是很难像官方控件一样考虑到各种复杂的情景,并保持优秀的性能的。&br&当你不知道文字该用什么字号时,同样请看&a href=&///?target=http%3A///design/spec/style/typography.html%23typography-styles& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/design/spec/&/span&&span class=&invisible&&style/typography.html#typography-styles&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&,注意20sp以下中文比英文多1即可。&br&当你不知道如何设计动效时,android:animateLayoutChanges=&true&一句足够了——RecyclerView内除外。&br&当你需要为App设计一个图标而完全没有美术功底时,直接&a href=&///?target=http%3A//romannurik.github.io/AndroidAssetStudio/icons-launcher.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Asset Studio&i class=&icon-external&&&/i&&/a&生成一个也算能用。请不要自作主张加上圆角矩形底,在Android上,我找不出圆角矩形底的任何正面意义。&br&Elevation是Material Design的精髓,请务必参照&a href=&///?target=http%3A///design/spec/what-is-material/elevation-shadows.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/design/spec/&/span&&span class=&invisible&&what-is-material/elevation-shadows.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&,为合适的元素选择合适的高度,虽然4.x的兼容会花你一点时间,但请相信,那是值得的。&br&&br&最后,&br&不要使用底Tab。&br&不要使用底Tab。&br&不要使用底Tab。&br&底Tab到如今,已经不止是一个设计问题,更是升华为宗教问题了。如果你使用了底Tab,那么不管你其他方面做得多么优秀,至少和用户口碑中的「优秀设计」无缘了。&br&&br&利益相关:刚上手半年的独立开发者 - &a href=&///?target=https%3A///store/apps/dev%3Fid%3D0346633& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/store/a&/span&&span class=&invisible&&pps/dev?id=0346633&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
我来答点Android相关的吧,虽然可能不大切题。Material Design是一套非常适合开发者掌握的设计语言。它对各类元素都有非常详尽,以至于一些设计师视之为桎梏的规范。做一个设计上60分的Android App,你只需要2个东西:和Android Stud…
(iPad答题,请容忍糟糕排版&_&)&br&&br&这个问题其实有两个思路,你是现在就想做个美美哒app,还是像先变成设计师再做美美哒app,如果是后者,请参考其他答案~&br&&br&【高亮】我为什么要写这个?因为我喜欢做产品,也喜欢做设计,我只差一个程~序~员~有意向的请私信我,我们可以分享一下对产品的想法,两边都觉得好的就你出代码我出设计,把app做起来~【高亮就这么结束了】&br&&br&职业之间的信息不对称啊,你以为设计师都是一个像素一个像素从头搭的吗,不不不,我们也是有偷懒的诀窍的。。。读完此篇,只要你有ps或者sketch,知道图层的概念,可以把元素导出为所需格式,app的活儿你就能一个人干了。&br&&br&你的设计难度会从 ---&br&&br&&img data-rawwidth=&500& data-rawheight=&328& src=&/9c2cbda212ef2fb187997_b.jpeg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&/9c2cbda212ef2fb187997_r.jpeg&&&br&&br&&br&变成 ---&br&&br&&img data-rawwidth=&600& data-rawheight=&337& src=&/0716acc4bf06fd81e03c5f_b.jpeg& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/0716acc4bf06fd81e03c5f_r.jpeg&&&br&--- 提纲 ---&br&&br&1. 做app需要图标,我又不会画,怎么办?搜到一些现成的,但质量又不高,怎么办?图标不成套怎么办?&br&&br&2. 没有审美怎么办?&br&&br&3. 心里有个app想法,但是线框图画不出来怎么办?&br&&br&4. iOS那么多尺寸,Android尺寸更吓人,全都要记住吗,导出@1x@2x@3x点九图什么的是不是很麻烦?&br&&br&5. 说了这么多,还是要我从空白画布上画吗?!没有美术基础啊!当然不是啦~&br&&br&6. 还有什么问题可以提问哈。&br&&br&--- 正文 ---&br&&br&&br&1. 图标苦手怎么办&br&&br&就算是设计师,一个一个画图标也是很累的。&br&这时候,如果有钱,请到选项到A;如果没钱或者不想花钱,请到选项B。&br&&br&A 如果非常有钱,请直接把钱给我,我把图标给你哈哈哈。如果有一点钱,可以去&a href=&/?target=http%3A///& class=&internal&&/&/a& 或者 &a href=&/?target=http%3A///& class=&internal&&/&/a& 买,图标站还有很多,先列这两个,反正你们更想看免费的对不对。&br&&br&B &a href=&/?target=http%3A//& class=&internal&&&/a& 是你的好朋友,最好的朋友之一。虽然最近突然改版,变得有点难用,但海量,成套,免费,你还图啥?缺点可能是风格比较单一,想要fancy一点的怎么办?smashing magazine帮助你,&a href=&/?target=https%3A///& class=&internal&&/&/a& 只要搜索freebie即可,最早几年的icon质量不太行,也过时了,越是新帖质量越好。&br&&br&举个栗子,随便点开一个。&br&&br&&img data-rawwidth=&1000& data-rawheight=&1080& src=&/7ae7ae4248c0_b.jpeg& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&/7ae7ae4248c0_r.jpeg&&&br&&br&可以调大小,可以改颜色,可以调线条粗细,用上这些,是不是b格噌得就上天了!这些都是顶级设计师放出来的免费资源,你花钱雇的设计师未必画得出来。。。&br&&br&2. 没有审美怎么办?&br&&br&这个就没有特效药了。据我的观察,没有审美天赋的人,可以判断好看和不好看,但无法判断好看和更好看,这时候如果你有个设计师朋友,请付费或者请吃饭,向他咨询咨询吧。&br&&br&疗程缓慢的办法有:多看dribbble(eye candy多,但可以了解趋势和审美取向),多用好评和获奖的app,“最美应用”你下载了吗?“豌豆荚设计奖”你看了吗?(&a href=&///people/c6e85ba5dce2fe& data-hash=&c6e85ba5dce2fe& class=&member_mention& data-tip=&p$b$c6e85ba5dce2fe&&@马力&/a&请点赞~)每年app store 的盘点你都关注了吗?&br&&br&3. 构思不好app流程怎么办?&br&&br&$1 prototype大法,来自一本同名书,我刚看完个开头,所以以下是我根据它的目录和我的经验编的。。。具体就是“场景” - “过程” - “界面”。&br&&br&先想象用户在什么情况下用,涉及几个用户,他们在干什么。比如,yelp,是用户需要找地方吃饭,所以一般只有一个用户(相对于uber两方用户,群聊n方用户),输入是一些查询条件,输出是在哪儿有饭吃。&br&&br&现在细化过程,用户从打开app到达到目标,有哪些步骤。还是yelp,一般情况就是打开app,输入查询条件,看到结果,筛选,满意的话查看商家详情,不满意的话可能重新搜索可能更改筛选条件。这是主线剧情,还有些支线剧情,比如看到一个用户的评价很好,查看用户的其他评价,follow用户;还有自己身在餐馆,拍了菜单拍了菜,上传到yelp。把所有的剧情,都在流程图上画出来。&br&&br&期间可能会遇到一些细节。用户先输入什么呢,是餐厅类型,还是只要能吃就可以?距离这个信息是gps给还是用户自己输,或者其实距离无所谓,反正用户有车呢?价格是什么时候出现?是搜索的时候就限定价格,还是结果出来以后再筛选?这些都不怕,反正也是要改的。。。而且一般自己想做的app也没有这么复杂。&br&&br&你有一个流程图了,界面就简单了。把元素往界面上摆一摆,推荐用手机大小的便利贴,拿铅笔画上去,有很多东西玩app多了都有经验,搜索结果是啥,不就map view和list view么,怎么筛选,放一个漏斗icon在标题栏里呗,酱酱酿酿就好了。接下来就是把亲朋好友拉过来,让他们玩一下这个paper prototype,发现不对的地方再改。&br&&br&有两个软件推荐,一个&a href=&/?target=https%3A//popapp.in& class=&internal&&https://popapp.in&/a& 好久不用,希望它还是免费的。一个&a href=&/?target=https%3A//& class=&internal&&&/a& 免费无限量project,真良心,我一直期待它被adobe收购,结果adobe既没有收它,也没有invision,而是准备自己做一个comet。。。真傲娇。&br&&br&4. 尺寸记不住怎么办?&br&&br&就不要用ps了,sketch做为生产力工具,真的不贵,都不是按月按年subscribe的,一次买一生,有什么舍不得的,买吧。以后用它直接新建画板,就不用记住那么多尺寸了,导出图片也特别方便,ps切图再见。&br&&br&5. 面对空白画布下不去手怎么办?&br&&br&前面提到了invision,这家公司的marketing很牛,设计也很牛,市场部为了宣传他们的产品,让设计师做了很多的高质量免费模版给其他设计师下载。&br&&br&举个栗子。&br&&br&&img data-rawwidth=&1430& data-rawheight=&628& src=&/5afa156a628_b.jpeg& class=&origin_image zh-lightbox-thumb& width=&1430& data-original=&/5afa156a628_r.jpeg&&&br&&br&&br&&br&再举一个。&br&&br&&img data-rawwidth=&2754& data-rawheight=&2516& src=&/29dcdd3f21e58479eff418_b.jpeg& class=&origin_image zh-lightbox-thumb& width=&2754& data-original=&/29dcdd3f21e58479eff418_r.jpeg&&&br&&br&&br&这些全是一整套,一整套啊,意味着登陆界面,dashboard,阅读文章的界面,购物车,天气,聊天对话各种界面都很可能有。格式一般都有ps,sketch两种,有时有ai,和设计师打包给你的成品差距不大,你可能需要一个切图仔,或者自己来。&br&&br&这些不够怎么办?&br&&a href=&/?target=http%3A//& class=&internal&&&/a&&br&&br&&a href=&/?target=http%3A///psd-freebies/ui-kits/& class=&internal&&/psd-freebies/ui-kits/&/a&&br&&br&&a href=&/?target=https%3A//ui8.net/categories/freebies& class=&internal&&https://ui8.net/categories/freebies&/a&&br&&br&这样总行了吧。&br&&br&6. 其他问题。&br&&br&应该没有其他问题了吧。结尾再高亮一下。&br&&br&【高亮】如果你有个人项目的app idea,欢迎和我沟通,如果我感兴趣我会出设计,你出代码。如果你想写app但“就差一个idea了”也欢迎私信,我可以跟你谈谈我的想法。【高亮卒】
(iPad答题,请容忍糟糕排版&_&)这个问题其实有两个思路,你是现在就想做个美美哒app,还是像先变成设计师再做美美哒app,如果是后者,请参考其他答案~【高亮】我为什么要写这个?因为我喜欢做产品,也喜欢做设计,我只差一个程~序~员~有意向的请私信…
10W行代码,9W行xml吗?&br&&br&好吧说正事儿。你这种状态叫做浮躁,我曾经也和题主一样,感觉学的很散,好像什么都会一点,但是又不够深入,整天都是心慌慌。其实这算是到达瓶颈期了,潜下心来闭关修炼,一旦突破肯定能到达一个新的高度。前辈称不上,我分享一下我是怎么做的吧。&br&&br&我当时就是觉得自己做什么业务都没有问题,能够选用合理的技术,也能写出相对优雅的代码;能把玩python, rails, node, haskell 等一堆东西,但是总觉得缺点什么,之所以这样,是因为我&b&浮游于表面&/b&,总有一种盲人摸象的感觉,知道怎么做,但是不知道原理;俗话说,万变不离其宗;所以,我决定深入底层,打通任督二脉。具体来说,我给自己定了四个目标:&br&&br&1. 深入Android系统&br&2. 深入Java&br&3. 了解编译原理等CS基本知识&br&4. 深入Linux内核&br&&br&&b&深入Android系统&/b&&br&&br&这一块有很多人分享过经验,其实无非那么几点,我就简单重申一下吧。&br&1. IPC机制,Binder和匿名共享内存等&br&2. 四大组件启动,工作原理&br&3. View系统,绘制原理,事件分发&br&4. 动画框架,原理&br&5. 多线程机制,消息机制 AsyncTask,Thread/Handler&br&6. 系统启动过程,system_server启动过程&br&7. Window系统,Window创建过程&br&8. 资源管理系统,资源加载机制等&br&&br&《Android开发艺术探索》这本书确实不错,适合中级程序员;《群英传》我也看过,觉得没有上一本好;个人感觉《Android内核剖析》挺不错的,虽然有点过时了也买不到书了。&br&&br&当你搞清楚了这些,基本上你写的什么代码在Android上层是怎么运作的都了然于胸;FrameWork层的任何问题也拦不住你的脚步了;不过这个阶段,仅仅是了解了Android系统Framework层的原理,对于怎么写代码,对于语言本身,对于Android系统底层的原理依然很迷惑,没事,已经看到了光了,一步一步来。&br&&br&&b&深入Java&/b&&br&&br&Java语言相对来说比C++简单很多,但是对于经常写业务代码的人,对于如何写出优雅的java代码以及如何辨别垃圾代码,还有Java的内存模型/GC,并发机制,虚拟机执行流程肯定不甚了解,因此,这个阶段,我打算大致搞清楚Java语言本身,顺便从这个角度切入编程语言本身;主要如下:&br&&br&1. 学习如何写更好的Java代码,《Effective Java》值得一读。&br&2. 什么样的Java代码是有问题的?《Java解惑》;怎么改写代码?《重构》&br&3. 学习一些没有接触过的Java高级库,NIO/AIO, concurrent/forkjoin等,有机会使用到工作过程中。 &br&4. 了解Java虚拟机 《深入理解Java虚拟机》《实战Java虚拟机》;从这里,可以知道很多JVM的运行原理,内存模型,class文件格式,Java并发原理,虚拟机执行引擎等相当多的东西;虽然说Android的虚拟机Dalvik和ART(ART也许称不上虚拟机)使用的不是标准的HotSpot但是,我相信原理都差不多。&br&&br&但是,Java平台的技术栈远非这么一点,学无止境;走到这一步,我觉得对于Java语言已经算得上掌握了,于是主要目标转向编程语言本身。&br&&br&&b&了解编译原理等CS基本知识&/b&&br&&br&推荐一下R大的书单吧:&a href=&/hllvm/& class=&internal&&&span class=&invisible&&http://&/span&&span class=&visible&&/hllv&/span&&span class=&invisible&&m/&/span&&span class=&ellipsis&&&/span&&/a&&br&当然由于定位不一样,我肯定不会像他一样专门搞搞基语言虚拟机(主要是我没那个水平!- - ),仅供参考;我自己目前看的几本书如下:《编程语言实现模式》《深入理解计算机系统》《SICP》《编译器设计》;然后由于在学Haskell,所以在追github上一个项目,&a href=&///?target=https%3A///sdiehl/write-you-a-haskell& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&sdiehl/write-you-a-haskell&i class=&icon-external&&&/i&&/a& ;具体怎么做还是边走边瞧。&br&&br&后面的我也不敢说太多,目前打算是希望深入了解Linux内核,以前看过《深度探索Linux操作系统:系统构建和原理解析》;打算看《深入Linux内核》《Unix环境高级编程》;只要越过了浮躁期,其实目标还是很明确的;知道自己该学习什么,也知道大致该怎么做;感觉自己走在正确的路上,越来越接近那个目标,每天都充满希望。&br&&br&最后,作为搞技术的,一句话与题主共勉:&br&&br&&blockquote&不为繁华易匠心&/blockquote&
10W行代码,9W行xml吗?好吧说正事儿。你这种状态叫做浮躁,我曾经也和题主一样,感觉学的很散,好像什么都会一点,但是又不够深入,整天都是心慌慌。其实这算是到达瓶颈期了,潜下心来闭关修炼,一旦突破肯定能到达一个新的高度。前辈称不上,我分享一下我…
&p&最近刚好花了点时间整理研究它,为此写了一篇文章,贴出内容大家可以看看。&br&&br&Android开发者选项,看起来很简单的事情,其实很多同学对它了解得不够,Google用心良苦得为我们设计了这么多小开关都是有它的作用的,今天也花了点时间,过了一遍全部的30多个开关,从中整理出15个对日常Android开发比较有帮助的选项。&br&&br&需要指出的是,不同的ROM对开发者选项的支持不一样,精简掉一些很正常,我下面提到的都是官方支持的功能,当然不同的官方版本支持程度也不一样,你手机上找不到也别奇怪。&br&&br&抱歉这里不介绍开发者选项在哪怎么开启之类的问题。&/p&&p&&br&&b&1. Stay awake&/b&&br&&/p&充电时保持屏幕唤醒,开发的时候,时不时的锁屏真是够了,开启它后只要插着USB线就不需要总去解锁屏幕啦。&br&&br&&b&2. Select runtime(Dalvik or ART)&/b&&br&ART runtime下你的应用会更加丝滑,目前高版本的Android上已经直接是ART runtime了,但作为Android开发也许需要保证你的应用在两种runtime下都能正常运行,这可能是测试时需要更多考虑的。&br&&br&&b&3. Process stats&/b&&br&里面有关于当前运行进程的一切信息,对于一般用户,它就是一堆无意义的数字,对于Android开发人员来说,调试时这些信息也许可以帮你大忙。&br&&br&&b&4. USB debugging&/b&&br&这个无需介绍,不开它怎么调试呢?(虽然现在都流行无线调试了)&br&&br&&b&5. Allow mock locations&/b&&br&当你的应用需要用到GPS功能,获取位置信息时(比如天气应用),可以通过它搭配一些位置模拟应用,模拟全球任何地点。(还能干什么?机智的你肯定想到啦)&br&&br&&b&6. Show surface updates&/b&&br&在界面绘制时,闪烁提醒,开启它后简直能闪瞎你的眼睛,但有时候我们需要精确知道具体的界面绘制细节时,不得不需要忍受这种折磨。&br&&br&&b&7. Show layout bounds&/b&&br&&p&显示布局格子,当你看到一个应用有很棒的界面效果,想知道它是怎么布局的?开启这个功能即可。我更常用的使用场景是:每当有PM过来问我人家这个界面是Native实现的,还是类似Hybrid方案的Web实现时,我就让他开启这个功能,WebView是一个整体的格子,Native View是各种小格子组合而成。(除非自己重绘实现自定义View, 一般复杂布局也不会这么干)&br&&img src=&/3aacb154e_b.jpg& data-rawwidth=&640& data-rawheight=&425& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/3aacb154e_r.jpg&&&br&&b&8. Force RTL layout direction&/b&&br&&/p&强制RTL布局,RTL也就是Right To Left,阿拉伯国家一般有这种文化,类似古时候的中国,文字从右往左读,包括界面布局也是从右往左的,感觉操作习惯都跟我们是镜像的,如果你跟我一样不幸需要做这种坑爹适配的话,这也是必须掌握的技能。&br&&br&&b&9. Animation scale&/b&&br&动画的尺度、速度调整也是很有用的功能,尤其在实现复杂的组合动画效果时,调慢点可以看得更清楚,当然你可以在自己代码里调慢,但每次改代码重新build很麻烦对不对?而且如果是PM走过来让你研究一下某款App的酷炫动画效果呢?&br&&br&&b&10. Simulate secondary displays&/b&&br&它允许你模拟不同屏幕尺寸下应用的表现,IDE里虽然也有类似的功能,可那毕竟只是个静态的效果。&br&&br&&b&11. Debug GPU overdraw&/b&&br&这里是指不正确的过度绘制:&br&&ul&&li&原色: 没有过度绘制&br&&/li&&li&蓝色: 一次过度绘制&br&&/li&&li&绿色: 两次过度绘制&br&&/li&&li&粉色: 三次过度绘制&br&&/li&&li&红色: 四次及以上过度绘制。&br&&/li&&/ul&值得提醒的是,过度绘制有时是无法避免的,Android建议是不要超过一次过度绘制,也就是可以是蓝色的,不能绿了。&br&&img src=&/ac7cce5a1b92484cd8ca_b.jpg& data-rawwidth=&525& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&525& data-original=&/ac7cce5a1b92484cd8ca_r.jpg&&&br&&b&12. Strict mode enabled&/b&&br&严苛模式下,当应用做了一些影响性能的事情,屏幕会闪一下提醒你。你也可以在代码里为自己的应用开启严苛模式,一旦发现一些性能问题,就会有详细Log输出, 为避免影响线上用户,建议只在Debug模式下开启。&br&&br&&b&13. Show CPU usage&/b&&br&&p&在你屏幕右上角显示一个小窗口,提示当前CPU的各种信息,在性能调试时会有一些帮助,看是否是CPU的负载过高导致了性能问题。&br&&img src=&/b3ba95f529b8a75047debf_b.jpg& data-rawwidth=&640& data-rawheight=&425& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/b3ba95f529b8a75047debf_r.jpg&&&br&&b&14. Profile GPU rendering&/b&&br&&/p&&p&看下面这张图,就明白它的作用了,开启后,会在下方显示一张实时绘制图,记住那条绿线是性能流畅与否的底线,超过的时刻就会出现掉帧,就会有卡顿的感觉,界面性能调优的一个最重要指标就是将所有界面操作尽量优化到那条绿线以下。具体的原理可以看胡凯同学的Android性能优化典范,我的公众号里也收录了他这篇经典文章。&br&&img src=&/b413c4c32aee393b0430e3_b.png& data-rawwidth=&413& data-rawheight=&397& class=&content_image& width=&413&&&b&15. Don't keep activities&/b&&br&&/p&&p&开启这个选项后,当你从Activity A跳转到Activity B时,Activity A就会被立即销毁,这一般用来模拟设备内存不足时后台Activity被销毁的场景,如果你的应用能做到开启它时功能仍基本正常,说明代码设计得比较合理,不同Activity之间的耦和很低,对于复杂业务的应用来说,能做到这点真心不容易。&br&&br&原文在我的简书:&a href=&///?target=http%3A///p/07b551ee260b& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&15个必知的Android开发者选项&i class=&icon-external&&&/i&&/a&&br&&br&我最近运营了一个Android开发相关的公众号,主要分享一些开发经验以及Android最佳实践,最好用的工具与服务等等,大家有兴趣可以搜索&b&Android程序员&/b&(AndroidTrending)或扫码关注。&br&&img src=&/ef8eb414c0d7e385ed48_b.jpg& data-rawwidth=&430& data-rawheight=&430& class=&origin_image zh-lightbox-thumb& width=&430& data-original=&/ef8eb414c0d7e385ed48_r.jpg&&&/p&
最近刚好花了点时间整理研究它,为此写了一篇文章,贴出内容大家可以看看。Android开发者选项,看起来很简单的事情,其实很多同学对它了解得不够,Google用心良苦得为我们设计了这么多小开关都是有它的作用的,今天也花了点时间,过了一遍全部的30多个开关…
在Activity的onCreate()的setContentView前&br&添加:&br&&div class=&highlight&&&pre&&code class=&language-text&&Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SECURE);
&/code&&/pre&&/div&&br&具体解释请参阅《android Flag介绍》:&a href=&///?target=http%3A//my.oschina.net/u/1781028/blog/307263& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&android Flag介绍&i class=&icon-external&&&/i&&/a&&br&没有必要占用截屏文件夹,因为有很多办法可以获取屏幕影像,也有很多不同的软件写入的截屏文件夹不一样,占用了也没用。安卓为我们提供了阻止截屏的方法,支付宝应该用的是这种。
在Activity的onCreate()的setContentView前添加:Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SECURE);具体解释请参阅《android Flag介绍》:没有必要占用截屏文件夹,因为有很多办法可以获取屏幕影像,也有…
1. 保证流畅使用请先确保机器内存足够,然后配置vm.properties&br&2. 学会使用Help里面的Find Actions(快捷键 ctrl + shift + A) 想要什么功能搜一搜,根本不用刻意查快捷键什么的,自己多搜几次酒就记住了。&br&3. 抛弃alt + / 这个快捷键;忘记ctrl
+ S&br&4. 习惯使用double shift搜索,auto complete statement补全;&br&5. 学会使用万能重构键refactor this(具体是什么使用 find actions搜索)&br&6. 学会使用live templates;包括自动生成代码模版等。&br&7. 学会使用后缀补全&br&8. 纯键盘流请安装IDEAVim以及AceJump&br&9. 关注屎黄色的代码(这种代码一般有问题,按照提示修改)&br&10. 丢掉Jd-gui等class反编译工具。&br&&br&最后打两个广告:&br&10. 高级快捷键可以参考&a href=&///?target=http%3A//weishu.me//shortcut-of-android-studio-you-may-not-know/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio你不知道的快捷键(一)&i class=&icon-external&&&/i&&/a& 系列&br&11. 高级调试技巧 &a href=&///?target=http%3A//weishu.me//android-studio-debug-tips-you-may-not-know/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android Studio你不知道的调试技巧&i class=&icon-external&&&/i&&/a&
1. 保证流畅使用请先确保机器内存足够,然后配置vm.properties2. 学会使用Help里面的Find Actions(快捷键 ctrl + shift + A) 想要什么功能搜一搜,根本不用刻意查快捷键什么的,自己多搜几次酒就记住了。3. 抛弃alt + / 这个快捷键;忘记ctrl + S4. 习惯…
首先,Java基本没问题是不是太自信了。Java的集合框架,多线程并发,NIO/AIO,JVM相关比如GC,内存模型等等搞清楚了没有;学一门语言不是仅仅学会调用一些简单的API。&br&&br&算法用什么实现没有任何关系,用C能写出来,Java也是分分钟。&br&&br&针对你的打算:&br&1. 数据库没有那么重要,可能在Android里面对应的就是ContentProvider,但是用的不频繁,对于应届生了解即可。&br&2. 脚本语言有精力学习比较好,属于锦上添花;鉴于你大四了,时间不多,还是一门心思Android吧。&br&3. 设计模式也没那么重要,懂些简单常用的,比如单例,观察者,委托,代理等即可;不要陷入无法自拔。&br&4. 英文很重要!!百度的搜索结果和google的能同日而语吗,最前沿的技术都是英文写的,可以不会写不会说,但是必须看得懂。&br&&br&然后说说Android。&br&完成App当然可以,但是Android开发远远不止完成一些界面那么简单。如果你能在面试的时候说出一些系统的原理,我相信一定会惊艳。&br&1. Thread/Handler/Looper机制&br&2. Android系统View的绘制流程&br&3. View的事件传递机制;了解以上两点,能给面试官讲清楚作为一个应届生就很不错了;很多工作了的都不完全知道;更深入的,&br&4. Activity的启动流程,ActivityManagerService,PackageManagerService等如何工作的&br&5. 结合4,尝试了解一些Android的IPC机制,如果你能对Binder讲个头头是道,Special Offer等着你。&br&6. DexClassLoader机制,延伸到插件框架,基本算是前沿技术之一,如果你能走到这一步,那么惊为天人。&br&&br&一年时间不多,以上除了第一点,每一个搞清楚都需要相当的精力;特别是Binder于许多其他的知识相关联;不要一口吃成一个胖子,精力也不要分散,做好一点即可。比如,主攻View,搞清其中的原理,写出酷炫的动画,还愁没人要?
首先,Java基本没问题是不是太自信了。Java的集合框架,多线程并发,NIO/AIO,JVM相关比如GC,内存模型等等搞清楚了没有;学一门语言不是仅仅学会调用一些简单的API。算法用什么实现没有任何关系,用C能写出来,Java也是分分钟。针对你的打算:1. 数据库没…
&b&1、不要排斥新技术和新工具。&/b&&br&
Android Studio 1.0 之后的版本,基本已经稳定到可以支持正常的工作开发的程度了。单纯就书写效率而言,Android Studio 带来的好处绝对大于它和Gradle的学习成本。JetBrains的IDE,用过都说好。&br&还有就是适当的提升targetSdkVersion到新版本。 &br&&br&&b&2、代码设计方面的问题,&/b&&b&大部分&/b&&b&都能在Android系统源码里找到解决方案。&/b&&br&
当你想设计一个新模块,或者实现一个新ui组件的时候,应该采用哪些设计模式、应该以哪种形式给外界提供接口之类的问题,大部分都可以参考Android系统的源码,找到实现方式。Google为安卓程序员提供了一座现成的宝库。&br&&br&&b&3、理解Android和Java内存管理方式,至少要理解垃圾回收和Java的引用。&/b&&br&
就好比学OC就要先理解黄金法则一样,而java的内存管理,其实比OC要好理解多了。&br&
这可能会帮助你大大减少程序异步操作产生的空指针崩溃。&u&也会帮助你理解为什么滥用单例模式会导致内存的臃肿。&/u&还会帮助你养成不用“+”去连接超大字符串的好习惯。&br&&br&&b&4、ContentProvider并不是只有在跨进程共享数据的才有用,把数据库表映射到一个独立的uri是Google鼓励的实现方式。&/b&&br& 从设计上讲,用uri(统一资源标识符)去描述数据,肯定比sql语句要理想。&br&从效果上讲,用CursorLoader读取数据是让iOS程序员都羡慕不已的事情,作为android程序员,何苦不用呢。&br&&br&&b&5、理解Activity任务栈。&/b&&br&非Activity的Context对象如果直接启动Activity会报错,这只是一个表面现象,真正起作用的其实是Activity任务栈机制。&br&理解Activity任务栈机制以及Activity的各种启动方式,会帮助解决大部分页面关系错乱问题,以及应用互相掉起、任务栏进入应用、后台弹窗引起的各种问题。&br&&br&&b&6、对于一些奇葩的第三方ROM,调用其非主流api的时候,可以使用反射。&/b&&br&在适配一些第三方ROM的的时候,调用一些在开发环境中没有,但在运行环境中有的方法时,可以使用反射。比方说,华为双卡手机可能会提供获取第二块SIM卡信息的api,如果直接调用,在开发环境可能无法通过正常编译,用反射就没问题。这属于不得已而用反射的一种情况。&br&&br&&b&7、SQLite的锁,是数据库级别的锁,也就是说同一个数据库的写操作无法并发执行。&/b&&br&所以,在数据库设计的时候,如果表太多,尽量将没有关联的表拆到多个数据库文件中。&br&&br&&b&8、Bitmap的内存占用问题。&/b&&br&这是一个困扰2.X时代android程序员的问题。&br&2.X时代Bitmap对象虽然存储在堆内存中,但是用了一个byte数组存储其像素信息。通过计数器来记录该像素信息被引用的个数。有人认为这个byte数组在native堆中,但事实上它也在堆中。&br&只有在使用者调用recycle()后,Bitmap对象才会释放像素信息,才会在失去引用后,被垃圾回收机制销毁。再加上DVM的heap size有严格的阀值,所以在使用大量图片资源的时候,及其容易发生OOM。&br&解决办法一般都是,用一个哈希表存储Bitmap对象的软引用,作为内存缓存,并在适当时机掉用其recycle()。&br&3.0以上版本Bitmap对象可以通过垃圾回收机制完全销毁,理论上不用再调用recycle()。&br&&br&
暂时想到这些,想到其他再补充。
1、不要排斥新技术和新工具。 Android Studio 1.0 之后的版本,基本已经稳定到可以支持正常的工作开发的程度了。单纯就书写效率而言,Android Studio 带来的好处绝对大于它和Gradle的学习成本。JetBrains的IDE,用过都说好。还有就是适当的提升targetSdkVer…
已有帐号?
无法登录?
社交帐号登录
1659 人关注
438 个回答
431 人关注
3429 人关注
1192 个回答
22786 人关注
495 个回答
4503 人关注
1618 个回答}

我要回帖

更多关于 amd安装找不到inf文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信