php or 嵌入式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php or 嵌入式相关的知识,希望对你有一定的参考价值。
小弟今年7月份毕业,毕业以后来到北京工作,在一家知名公司实习生,实习期间主要工作就是销售,月工资3500,感觉做销售前景不好,我身边的那些领导干了几年感觉没什么变样,于是辞职,现在找了一份周末的兼职,能挣点生活费,就是为了找个培训班学点东西,结合自己的计算机基础,我想在嵌入式方面的发展,但是感觉挺难,怕自己学不精,学php感觉前景差一点,纠结中,希望给点建议
嵌入式的前景当然更好,PHP一般都是相对简单,工资也没有那么高。嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。
一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的Bios一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。
另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有"花头"可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。
从事嵌入式软件开发的好处是:
(1) 目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。
(3) 哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌上PDA(南校区门口有广告),施工技术人员用该PDA可当场进行土木概预算和其它土木计算,据说销路特好。我认识的某大学老师,他开发的饭馆用的点菜PDA(WinCE平台,可无线连网和上网),据他说销路不错,饭馆点点PDA让客户点菜,多显派头档次。我记得00级2+2班当年有一组同学在学Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课程项目,当时真想建议他们将这个软件做成PDA,估计会有些销路(上海火车站南广场的Macdonald便使用很漂亮的PDA给用户点食品,像摸像样的)。这些PDA的硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
学习嵌入式,该学习什么基本的知识呢?
首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。很多人会问,C语言要学到怎么样,我觉得这没有标准的答案。我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。
其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。
还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。
还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。
最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。
至于上面说的知识如何学习呢?每个人都应该去找自己最好的方法,所谓的最好的方法就是最适合自己的方法。很多人看不进书,那就去看看视频吧。视频也应该要选择,不是随便看看,应该要有所选择,有所挑选。我也是这样一路走过来的,不过我这人比较懒,我看不进书,一看书我就想睡觉,所以这几年我都是看视频过来的,现在也算学有所成,但也不敢说是高手吧。
我在网上看到,有人把自己学习嵌入式的视频总结出来,嵌入式系列实践和视频教程,大家可以看看网址http://www.004r.com/embedvideo.htm 我仔细看了觉得很不错,我本来也想整理下,可是奈何我自己的电脑硬盘空间才40G,没有办法,时间也是不够,心有余而力不足,我不是在帮他做广告,虽然要花钱,我觉得算不错,至少自己不用去整理和花大量的时间去找资源,当然如果网上有的下,你网速和硬盘都够的话,我建议大家自己网上下也好。想想我自己该开始学的时候,那时视频资源少之又少,我买书和买视频至少花了几千块,但是我觉得那很值,至少我现在赚回来了很多知识。
最后,希望这篇文章对热爱嵌入式,想致力于嵌入式开发的朋友有所帮助。送给大家一句简单而又朴素的话,坚持就是胜利,贵在坚持,也可以看看如何坚持嵌入式学习!
最后希望楼主选择嵌入式,早日成为嵌入式的高手。 参考技术A 与PHP相比较而言,嵌入式的发展前景是要更好一些的,目前整个嵌入式行业人才缺口很多,就业前景很好,一个稍微有些经验的嵌入式工程师月薪一般的都能达到1万以上。随着嵌入式越来越广泛应用到各种领域,其发展前景将会更大。
你可以根据自己的情况,条件允许的话,参加一个培训班也很好的,这样的话可以在几个月的集中学习,达到一般嵌入式工程师级别,收入也是很可观的!
在嵌入式培训行业中,口碑最好的是东方赛富,也是最有培训效果的! 参考技术B PHP和嵌入式都是最近比较热门的技术,技术本身并没有好坏优劣之分,究竟选择哪个还是要根据你自身的基础和情况来定。建议你个个击破,分别去详细地了解一下PHP和嵌入式(可以从技术难度、就业地域、就业难度和就业薪水等方面),然后再综合决定。如果你想了解关于嵌入式的更多东西,可以直接向凌阳教育咨询,凌阳教育的咨询师不仅懂技术,而且还有耐心,相信你会从我们这里获得很好的帮助。
为啥 MySQL BIT_OR() 返回的值与 PHP 位运算不同
【中文标题】为啥 MySQL BIT_OR() 返回的值与 PHP 位运算不同【英文标题】:Why MySQL BIT_OR() is returning different value than PHP bitwise operation为什么 MySQL BIT_OR() 返回的值与 PHP 位运算不同 【发布时间】:2015-01-31 10:43:51 【问题描述】:我在 MySQL 表中有以下数据
“数据转储” 2 电话呼叫 001 2 电话呼叫 010 2 电话呼叫 100 2 个电话呼叫 1000 2 phone_calls 10000 2 phone_calls 100000
如果我运行 PHP 代码来执行按位或这样的操作
echo bindec('001') | bindec('010') | bindec('100') | bindec('1000') | bindec('10000') | bindec('100000');
我得到 63 的输出“这是预期的”
如果我手动执行或操作
000001
000010
000100
001000
010000
100000
======
111111
the result = 111111 which is `32 + 16 + 8 + 4 + 2 + 1 = 63`
当我在 MySQL 中运行以下查询时
SELECT user_id, section_name, BIT_OR(permission_type) AS final
FROM permissions
WHERE section_name ='phone_calls' and user_id = 2
GROUP BY user_id, section_name
基本上是在上面列出的“数据转储”上运行BIT_OR(),输出是
2 phone_calls 108543
为什么 MySQL 给我 108543 而 PHP 给我 63?如何让 MySQL 给我 63?
【问题讨论】:
【参考方案1】:108543
是当您将or
与十进制 值1, 10, 100, 1000, 10000, 100000
组合在一起时得到的。
换句话说,它们没有被视为二进制值。
您需要为二进制等价物 1, 2, 4, 8, 16, 32
存储正确的十进制值,或者找到一种方法将仅包含0
和1
数字的十进制变体转换为适当的值。
如果您想保留包含位模式的字符串,可以将它们转换为十进制,如下所示:
conv(colname,2,10)
这是一个base conversion:
mysql> select conv('10',2,10);
-> '2'
mysql> select conv('1000',2,10);
-> '8'
【讨论】:
我知道了:)我会给你正确的答案。但我为下面的下一个人留下了答案:) 非常感谢。我应该如何将列类型转换为***的转换? @Mike,您可以保持原样,因为该解决方案有效。我自己可能会存储一个整数类型而不是一个字符串,因为操作往往会更快,至少在常规数据库中是这样。 MySQL是否是这种情况,我不知道。如果它,正如我似乎记得的那样,以任何方式将所有内容存储为字符串,那么差异可能不会太大。无论如何,优化的第一条诫命是“衡量,不要猜测”,第二条是“检查你的权威,不要仅仅因为它们听起来知识渊博而相信互联网的一些随机机构”:-)【参考方案2】:我明白了:)
SELECT user_id, section_name, BIT_OR(CONV(permission_type, 2, 10)) AS final
FROM data_import.permissions
WHERE section_name ='phone_calls' and user_id = 2
GROUP BY user_id, section_name
【讨论】:
以上是关于php or 嵌入式的主要内容,如果未能解决你的问题,请参考以下文章