皮皮网

【源码博客网站】【模板源码素材】【openfire 插件 源码】libpthread 源码下载

时间:2024-12-23 06:35:42 来源:源码源码分析 pdf下载 作者:定制鞋源码

1.理解 pkg-config 工具
2.软件开发基础?

libpthread 源码下载

理解 pkg-config 工具

       你在 Unix 或 Linux 下开发过软件吗?写完一个程序,源码编译运行完全正常,下载在你本机上工作得好好的源码,你放到源代码管理系统中。下载然后,源码告诉你的下载源码博客网站同事说,你可以取下来用了。源码这时,下载你长长的源码出了一口气,几天的下载工作没有白费,多么清新的源码空气啊,你开始飘飘然了。下载

       “Hi,源码怎么编译不过去?”你还沉浸在那种美妙的下载感觉之中,双臂充满着力量,源码似乎没有什么问题能难倒你的。正在此时,那个笨蛋已经冲着你嚷开了。

       “不会吧,我这边好好的!”表面上你说得很客气,其实,你心里已经骂开了,真笨,不知道脑子干嘛用的。也许,模板源码素材你想的没错,上次,他犯了一个简单的错误,不是你一去就解决了吗。

       他喊三次之后,你不得不放下你手上的工作,刚才那种美妙的感觉已经消失得无影无踪了,要不是你把情绪控制得很好,一肚子气就要撒在他身上了。你走到他的电脑前,键入 make,优雅的按下回车。怎么可能出错呢?你信心十足。然而,屏幕上的结果多少有点让人脸红,该死的,libxxx.so 怎么会让不到呢?

       你在/usr目录中查找 libxxx.so,一切都逃不过你的眼睛。奇怪,libxxx.so 怎么在 /usr/local/lib 下,不是应该在 /usr/lib 下的吗?这你可不能怪别人,别人想安装在哪里都行,下次还可能安装到 /lib 目录下呢。

       以上的场景并非虚构,我都经历过好几次,openfire 插件 源码明明在本机上好好的,在别人的机器上连编译都过不去。可能两人的操作系统一模一样,需要的库都安装上,只是由于个人 喜好不同,安装在不同的目录而已。遇到这种情况,每次都技巧性的绕过去了,用的补丁型的方法,心里老惦记其它地方能不能工作。

       今天我们要介绍的 pkg-config,为解决以上问题提供了一个优美方案。从此,你再也不为此担忧了。pkg-config提供了下面几个功能:

       检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。

           获得编译预处理参数,如宏定义,头文件的位置。

           获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。

           自动加入所依赖的寄空包源码其它库的设置。

           这一切都自动的,库文件安装在哪里都没关系!

       在使用前,我们说说 pkg-config 的原理,pkg-config 并非精灵,可以凭空得到以上信息。事实上,为了让pkg-config可以得到这些信息,要求库的提供者,提供一个.pc文件。比如gtk+-2.0的pc文件内容如下:

       复制代码

           

       代码如下:

       prefix=/usr

           exec_prefix=/usr

           libdir=/usr/lib

           includedir=/usr/include

           target=x/ppgtk_binary_version=2.4.0

           gtk_host=i-redhat-linux-gnu/ppName: GTK+

           Description: GIMP Tool Kit (${ target} target)

           Version: 2.6.7

           Requires: gdk-${ target}-2.0 atk

           Libs: -L${ libdir} -lgtk-${ target}-2.0

           Cflags: -I${ includedir}/gtk-2.0

       这个文件一般放在 /usr/lib/pkgconfig/ 或者 /usr/local/lib/pkgconfig/ 里,当然也可以放在其它任何地方,如像 X 相关的pc文件是放在 /usr/XR6/lib/pkgconfig 下的。为了让pkgconfig可以找到你的pc文件,你要把pc文件所在的路径,设置在环境变量 PKG_CONFIG_PATH 里。

       使用 pkg-config 的 –cflags 参数可以给出在编译时所需要的选项,而 –libs 参数可以给出连接时的选项。例如,假设一个 sample.c 的程序用到了 Glib 库,就可以这样编译:

       复制代码

           

       代码如下:

       $ gcc -c `pkg-config –cflags glib-2.0` sample.c

       然后这样连接:

       复制代码

           

       代码如下:

       $ gcc sample.o -o sample `pkg-config –libs glib-2.0`

       或者上面两步也可以合并为以下一步:

       复制代码

           

       代码如下:

       $ gcc sample.c -o sample `pkg-config –cflags –libs glib-2.0`

       可以看到:由于使用了 pkg-config 工具来获得库的选项,所以不论库安装在什么目录下,都可以使用相同的编译和连接命令,带来了编译和连接界面的统一。

       使用 pkg-config 工具提取库的医保接口源码编译和连接参数有两个基本的前提:

           库本身在安装的时候必须提供一个相应的 .pc 文件(不这样做的库说明不支持 pkg-config 工具的使用)。

           pkg-config 必须知道要到哪里去寻找此 .pc 文件。

           GTK+ 及其依赖库支持使用 pkg-config 工具,所以剩下的问题就是如何告诉 pkg-config 到哪里去寻找库对应的 .pc 文件,这也是通过设置搜索路径来解决的。

       对于支持 pkg-config 工具的 GTK+ 及其依赖库来说,库的头文件的搜索路径的设置变成了对 .pc 文件搜索路径的设置。.pc 文件的搜索路径是通过环境变量 PKG_CONFIG_PATH 来设置的,pkg-config 将按照设置路径的先后顺序进行搜索,直到找到指定的 .pc 文件为止。

       安装完 Glib 后,在 bash 中应该进行如下设置:

       复制代码

           

       代码如下:

       $ export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH

       可以执行下面的命令检查是否 /opt/gtk/lib/pkgconfig 路径已经设置在 PKG_CONFIG_PATH 环境变量中:

       复制代码

           

       代码如下:

       $ echo $PKG_CONFIG_PATH

       这样设置之后,使用 glib 库的其它程序或库在编译的时候 pkg-config 就知道首先要到 /opt/gtk/lib/pkgconfig 这个目录中去寻找 glib-2.0.pc 了(GTK+ 和其它的依赖库的 .pc 文件也将拷贝到这里,也会首先到这里搜索它们对应的 .pc 文件)。之后,通过 pkg-config 就可以把其中库的编译和连接参数提取出来供程序在编译和连接时使用。

       另外还需要注意的是:环境变量的设置只对当前的终端窗口有效。如果到了没有进行上述设置的终端窗口中,pkg-config 将找不到新安装的 glib-2.0.pc 文件、从而可能使后面进行的安装(如 glib 之后的 Atk 的安装)无法进行。

       在我们采用的安装方案中,由于是使用环境变量对 GTK+ 及其依赖库进行的设置,所以当系统重新启动、或者新开一个终端窗口之后,如果想使用新安装的 GTK+ 库,需要如上面那样重新设置 PKG_CONFIG_PATH 和 LD_LIBRARY_PATH 环境变量。

       这种使用 GTK+ 的方法,在使用之前多了一个对库进行设置的过程。虽然显得稍微繁琐了一些,但却是一种最安全的使用 GTK+ 库的方式,不会对系统上已经存在的使用了 GTK+ 库的程序(比如 GNOME 桌面)带来任何冲击。

       为了使库的设置变得简单一些,可以把下面的这两句设置保存到一个文件中(比如 set_gtk-2. 文件):

       复制代码

           

       代码如下:

       export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH

           export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

       之后,就可以用下面的方法进行库的设置了(其中的 source 命令也可以用 . 代替):

       复制代码

           

       代码如下:

       $ source set_gtk-2.

       只有在用新版的 GTK+ 库开发应用程序、或者运行使用了新版 GTK+ 库的程序的时候,才有必要进行上述设置。

       如果想避免使用 GTK+ 库之前上述设置的麻烦,可以把上面两个环境变量的设置在系统的配置文件中(如 /etc/profile)或者自己的用户配置文件中(如 ~/.bash_profile) ;库的搜索路径也可以设置在 /etc/ld.so.conf 文件中,等等。这种设置在系统启动时会生效,从而会导致使用 GTK+ 的程序使用新版的 GTK+ 运行库,这有可能会带来一些问题。当然,如果你发现用新版的 GTK+ 代替旧版没有什么问题的话,使用这种设置方式是比较方便的。

       库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:

       在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。

           在  /etc/ld.so.conf  文件中添加库的搜索路径。

           将自己可能存放库文件的路径都加入到 /etc/ld.so.conf 中是明智的选择。( ^_^)

       添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:

       复制代码

           

       代码如下:

       /usr/XR6/lib

           /usr/local/lib

           /opt/lib

       需要注意的是:第二种搜索路径的设置方式对于程序连接时的库(包括共享库和静态库)的定位已经足够了,但是对于使用了共享库的程序的执行还是不够的。这是 因为为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件 /etc/ld.so.cache 从中进行搜索的。/etc/ld.so.cache 是一个非文本的数据文件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库文件集中在一起而生成的(ldconfig 命令要以 root 权限执行)。因此,为了保证程序执行时对库的定位,在 /etc/ld.so.conf 中进行了库搜索路径的设置之后,还必须要运行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之后才可以。ldconfig ,简单的说,它的作用就是将 /etc/ld.so.conf 列出的路径下的库文件缓存到/etc/ld.so.cache以供使用。因此当安装完一些库文件(例如刚安装好 glib 或者修改 ld.so.conf 增加新的库路径)后,需要运行一下 /sbin/ldconfig 使所有的库文件都被缓存到 ld.so.cache 中,如果没做,即使库文件明明就在 /usr/lib 下的,也是不会被使用的,结果编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂 computer 蠢猪一个。 (^_^)

       在程序连接时,对于库文件(静态库和共享库)的搜索路径,除了上面的设置方式之外,还可以通过 -L 参数显式指定。因为用 -L 设置的路径将被优先搜索,所以在连接的时候通常都会以这种方式直接指定要连接的库的路径。

       前面已经说明过了,库搜索路径的设置有两种方式:在环境变量 LD_LIBRARY_PATH 中设置以及在 /etc/ld.so.conf 文件中设置。其中,第二种设置方式需要 root 权限,以改变 /etc/ld.so.conf 文件并执行 /sbin/ldconfig 命令。而且,当系统重新启动后,所有的基于 GTK2 的程序在运行时都将使用新安装的 GTK+ 库。不幸的是,由于 GTK+ 版本的改变,这有时会给应用程序带来兼容性的问题,造成某些程序运行不正常。为了避免出现上面的这些情况,在 GTK+ 及其依赖库的安装过程中对于库的搜索路径的设置将采用第一种方式进行。这种设置方式不需要 root 权限,设置也简单:

       复制代码

           

       代码如下:

       $ export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

       可以用下面的命令查看 LD_LIBRAY_PATH 的设置内容:

       复制代码

           

       代码如下:

       $ echo $LD_LIBRARY_PATH

       最后,我来总结一下,PKG_CONFIG_PATH 主要指明.pc文件的所在路径,这样 pkg-config 工具就可以根据.pc文件的内容动态生成编译和连接选项,比如 Cflags (编译用)和 Libs (连接用),如果使用的是动态链接库,那么程序在连接和运行时,一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,对于处于默认库搜索路径之外的库,系统管理员可以设置 LD_LIBRARY_PATH 环境变量或在 /etc/ld.so.conf 文件中添加库的搜索路径。值得说明的是,使用 gcc 连接时的选项,如果不用 pkg-config 工具,需要显示的声明连接的动态链接库名。使用 gcc 的同学可以查看下面的注意事项。

       Linux 系统中,为了让动态链接库能被系统中其它程序共享,其名字应符合 lib*.so.* 这种格式。如果某个动态链接库不符合此格式,则 Linux 的动态链接库自动装入程序(ld)将搜索不到此链接库,其它程序也无法共享之。格式中,第一个*通常表示为简写的库名,第二个*通常表示为该库的版本号。如在我的系统中,基本C动态链接库的名字为 libc.so.6,线程 pthread 动态链接库的名字为 libpthread.so.0 等等。如果没有指定版本号,比如 libmy.so ,这也是符合要求的格式。

gcc 命令几个重要选项:

       -shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号,不用该标志外部程序无法连接。相当于一个可执行文件)。

           -fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

           -L.:表示要连接的库在当前目录中。

           -lmy:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称(libmy.so)。

           当然如果有 root 权限的话,可以修改 /etc/ld.so.conf 文件,然后调用 /sbin/ldconfig 来达到同样的目的,不过如果没有 root 权限,那么只能采用输出 LD_LIBRARY_PATH 的方法了。

软件开发基础?

       å­¦è½¯ä»¶å¼€å‘需要多少基础?

       å­¦ä¹ è½¯ä»¶å¼€å‘需要具备一定的基础知识,但并不要求学习者具备很高的技术水平。以下是一些学习软件开发的基础要求:

       è®¡ç®—机基础知识:学习软件开发的第一步是要熟悉计算机基础知识,如计算机组成原理、操作系统、数据结构和算法等。

       ç¼–程基础:学习软件开发需要掌握至少一种编程语言,如Java、Python、C++等,以及掌握基本的编程概念和技术,如面向对象编程、软件设计模式、版本控制等。

       æ•°æ®åº“知识:学习软件开发需要了解数据库的基础知识,如关系型数据库、非关系型数据库、SQL语言等。

       Web开发知识:如果你想学习Web开发,那么你需要了解Web开发的基本概念,如HTML、CSS、JavaScript、Web框架等。

       æ€»çš„来说,学习软件开发需要具备一定的基础知识,但并不要求你拥有很高的技术水平。如果你没有相关的基础知识,可以通过自学或参加培训课程来掌握所需的技能和知识。

软件开发的基础课程有哪些?

       è½¯ä»¶å¼€å‘的基础课程有哪些?北大青鸟主要课程是ACCP7.0软件工程师课程。

       é¦–先,我们先从纵向上来看整个ACCP7.0的内容安排,ACCP6.0课程包含四大块技术内容,即:数据库技术、客户端页面技术、Java开发技术和.NET开发技术:

       1、数据库技术是应用开发的基础技术,%以上的应用系统需要使用数据库来存放业务数据;

       2、客户端页面技术是客户端/服务器开发模式下最基本的技术,调查显示,要开发一个典型的应用系统,编写客户端页面、动态脚本和页面动画,需要花掉项目组%-%的开发时间,并且很多企业会把这些工作安排给新入职的员工,所以熟练掌握客户端技术是程序员的基本的素养;

       3、Java技术:Java技术是目前最为流行的软件开发技术,我们对家企业的职位分析数据表示,有.%的软件开发企业要使用到Java语言,因此,ACCP7.0课程中将由浅入深详细讲解这门技术。

       è½¯ä»¶å¼€å‘的基础知识是什么?

       è½¯ä»¶å› è®¡ç®—机而存在,而计算机的实质是数学,所以计算机的知识本质上就是数学知识,\x0d\也可以这么说数学知识也是计算机的基础知识,计算机的基础知识也是软件的基础知识。在。软件发展的过程中,软件的知识也在慢慢地积累,很多软件知识与数学并无直接的联系,而。在这里我们所要说的就是纯软件的基础知识。\x0d\我们可以把软件的知识分为两个部分,专业技能知识和领域知识或说行业知识。\x0d\1,专业技能知识\x0d\一门编程语言及库\x0d\你可以在书店里找到各色各样的关于编程方面的书籍,但是我建议你只需要深入地掌握\x0d\一门便可,而且任何程序员都需要熟悉C语言。你所深入掌握的语言可有多种选择。如果你从事的是驱动程序开发,我想必须要掌握汇编语言,C语言也是个不错的选择,而如果是做UI的话C++也许更好,Java语言比较适合网络程序的开发,当然JavaScript在google肯定很受推崇。\x0d\对于程序员来说,编程语言就相当于游侠手中的武器,可以是长剑,也可是以是短剑,可以是大刀,也可以是匕首。这些武器各有所长,而要发挥这些武器的长处必须基于一套路数上,那么对于程序员来说就是基于某一种编程语言的代码库。如GNUC的库就是libc或ulibc。如果你是用C语言,而且你是在类UNIX平台下开发,那么你就必须正确理解libc的工作原理,你代码里所调用的每一个函数的输入与输出,可能的错误,可能的歧义,对系统可能产生的影响。比如某一个函数是否是可再入的,还是不可再入的,如果出现了多线程同时调用的情况会发生什么错误等等细节上的问题。\x0d\一种编程思想\x0d\全世界都惊叹于毛泽东的领导和军事才能,而在他的才能表象之后是什么,是他的革命\x0d\精神,是他的睿智的思想。编程也一样,如果没有了编程思想就没有了指导前进的动力,就没有了创造的灵感的土壤。软件知识发展到现在比较常用的编程思想就是结构化(模块化)和面向对象化(设计模式)。\x0d\有些语言是在模块化大行其道的历史背景下被发明出来的,如C语言,而有些语言则是为了满足面向对象的编程思想而构造出来的,如C++。有一部分程序员会认为C语言是结构化的编程语言无法实现面向对象的编程思想。其实不然,C语言同样可以很好地实现面向对象的编程思想,只不过有些面向对象的工作由程序员来做而已。同样,面向对象的编程语言也可以用于写模块化的程序。\x0d\一种信仰\x0d\就我所接触过的系统里,Windows我只会安装,使用,VC/VB也只能做一些简单的开发,而MACOS体验过一次安装,不过最终还是失败了,iPhone的系统还没有机会体验过。曾经在AIX下做过开发,目前正在Fedora9下做开发,目标板的CPU是SH4,将来也可能是MIPS。\x0d\不管是MACOS,Windows,UNIX,Linux等都有各自的追随着,我把这种现像称为信仰。就拿我自己来说,我信仰Linux,Linux内核的源代码对于我来说就是神话。\x0d\我觉得在Linux下工作是一件很娱悦的事情。如果你每每解决一些比较棘手的问题,都会\x0d\有一种成就感,这是在Windows平台下感受不到的。所以对于这一信仰,我觉得至少需要知道它的安装,启动,配置,安全,如引导程序GRUB,ftp,telnet,sshd,smbd,named等等服务器的配置,网络安全的配置等等。\x0d\如果你要在Linux下进行开发,你必须了解Linux的API,标准库,也就是libc。如果你\x0d\的程序是多线程的,你还得掌握libpthread.so里的函数使用方法。GCC,GDB,LD,AS,AR,以\x0d\及Makefile和make等等工具的使用。如果你能掌握find,awk,sed,grep,od,nm,objdump\x0d\等实用工具的话,将会大大提高你的工作效率。\x0d\这,就是我的信仰。\x0d\总之一句话,一种编程语言及库,一种编程思想和一种信仰。一切OK!\x0d\2,领域知识/行业知识\x0d\我记得我的第一份工作是银行的交易开发程序员,当时是一家外包公司把我外派到工商\x0d\银行,我对工商银行的业务一无所知。不过初出茅庐不怕虎,硬是一个人完成了一个我一无所知的项目,而仅凭我对自己技术实力的自信。\x0d\但事后我却有些后怕,因为我并不明白,为什么那个整数要乘以个0.存入到数据库,\x0d\也不知道银行对数据的精确度是多大,等等细节上的问题我一无所知。那我只能求上天保佑,哪天不要多扣了人家的钱,天啊,这事我也做了?!当然不至于那么严重:)\x0d\后来我确实发现自己对于银行这套业务系统了解起来比较吃力,我宁愿花点时间写些小\x0d\的C程序也不愿花时间去肯那些苦涩的业务流程文档。所以在那家公司呆_一年后我辞职了。\x0d\我想,大部分程序员都想做一些相对技术含量高的开发工作,像那种整天与数据和数据\x0d\库打交道的开发工作,随便有点志向的程序员也不愿意去做,当然如果钱足够多的话我还是愿意的:)\x0d\但现在我发现我错了。因为这部分也是软件知识的一部分。就拿我目前的工作来说,技术上不会有太大的困难,但是蓝光规格以及其涉及到的规格相当的多,恐怕没有十年时间无法做到精通。这就是领域知识或说是行业知识。有些人一生只做一件事,还不一定能做好,而我现在只做了不到两年,虽觉时间不长但也不短,纵是一无所获。\x0d\所以,我觉得自己仍不是一名合格的开发者。软件开发的基础知识包括专业知识和行业\x0d\知识,如果基础知识不完整,那么这个程序员不会是一个合格且高效的程序员。

学软件开发需要有什么基础?

       å­¦ä¹ è½¯ä»¶å¼€å‘要有以下基础:

       1、基础编程语言

       ç¼–程语言是学软件开发的钥匙,初学者好根据自身的喜好或者职业规划选择语言。目前主流的编程语言包括Java、PHP、.net、C#语言等,新手建议从C语言开始,是基础也实用的语言,之后也可以慢慢扩展。其实很多编程语言之间有所互通,比如数据类型、变量、常量等。在学习实践过程中,了解编程内涵,养成编程思维,这样跨语言学习会非常快。

       2、数据库(SQLServer)知识

       é™¤äº†åŸºç¡€å­¦ä¹ ï¼Œæ•°æ®åº“相关的也是必不可少的。数据的存储、调用在软件开发运行过程中必不可少。

       3、web相关知识

       ä¸»è¦åˆ†ä¸ºHTML、CSS、JavaScript

软件开发需要学习什么基础知识

       å­¦ä¹ è½¯ä»¶å¼€å‘经常会涉及到数学和英语的知识,所以需要有一定的数学和英语基础,这样可以让软件开发变得事半功倍。千锋教育就有线上免费的软件开发公开课,。

       åƒé”‹æ•™è‚²é‡‡ç”¨å…¨ç¨‹é¢æŽˆé«˜å“è´¨ã€é«˜ä½“验培养模式,学科大纲紧跟企业需求,拥有国内一体化教学管理及学员服务,在职业教育发展道路上不断探索前行。如果你擅长英语和数学,你可以跳过这一步。软件的操作是通过某种程序语言来实现的,所以学好程序语言是做好软件开发的必修课。所以,如果你想学软件开发,第二步就是选择一门编程开发语言来学习,集中精力学好一门语言。一般来说,要想做好软件开发,至少要学一门编程语言。目前主流的编程语言有Java、PHP、C#语言,软件开发形式有多种,先学好这些基础语言,之后再慢慢扩展。除了学习基础语言,还要学习数据库的知识。在软件开发中,数据的存储和调用至关重要。HTML,CSS,Java脚本等相关的前端语言也是需要掌握的,经过这四个学习阶段,我们已经基本掌握了一套完整的软件开发流程,后面深入学习的话,就需要掌握各种框架。千锋官网每日更新最新软件开发基础知识内容,巩固日常学习中的基础技能。更有免费的软件开发视频教程帮助学员快速学习。

软件开发需要有什么基础?

       è½¯ä»¶å¼€å‘主要分为WEB开发、移动端开发、嵌入式开发三个开发方向,不同方向的学习内容也不同。

       1、WEB分为前端开发和后端开发,前端开发需要学CSS3、JavaScript、Html5,后端开发开发需要学PHP、Python、Java。

       2、移动端开发需要学OC或者Swift。

       3、嵌入式开发需要学C语言、计算机基础知识等。

关键词:人才管理系统 源码

copyright © 2016 powered by 皮皮网   sitemap