文章编号:10818时间:2024-09-29人气:
LAMP的概念:
Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的web应用程序平台。
安装LAMP就已经安装了 网页服务器 数据库 Perl/PHP/Python语音环境。
如果你是安装到本机上测试的话,最好确保hosts的内容为这样
username@ubuntu:~$ cat /etc/hosts127.0.0.1 localhost
安装
安装LAMP
套件一次性安装
sudo tasksel
用空格选中LAMP,回车即可。(不过要小心别修改其他的选项,否则会安装或删除该服务!)
仔细手动安装法(最小组件)
sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server
有些是因为依赖关系会自动安装的,但是为了保险,所以多打了一些。 开始安装时sudo会问您密码(只是有可能),这是系统管理员的密码。 安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。
图形安装法
在新立得软件包管理器中选择 编辑--使用任务分组标记软件包
在打开的窗口中 勾选 LAMP SERVER 然后确定。
在主窗口中 点击绿色的对号 应用 按钮
好了 。 接下来就是等待...等待新立得 自动下载安装完。
注意: 安装途中MySQL要求设定账户有密码,这是与操作系统没关系的账户与密码。
打开或图形化管理软件(可选)
安装webmin
这是一个系统管理软件,管理包含LAMP组件在内的大部分系统服务。 同时能进行安装、进程管理等多种系统功能。
先到webmin官方下载软件 在该软件包存放位置下,打开终端。(你也可以用命令切换到该位置)
sudo dpkg -i 软件包名(用Tab可以少输点字)
如果提示缺少依赖,那差什么就装什么
访问地址(注意是加密安全链接):安装phpmyadmin
这是一个数据库管理软件,管理mysql.
其实这也是个安全隐患,建议通过openssh来管理服务器。
方案一:终端中运行命令 (不推荐)
sudo apt-get install phpmyadmin
方案二:
强烈建议不要从源里安装
在phpmyadmin官网上下载软件包,解压缩到本地目录/var/www/phpmyadmin
tips:如果你请直接解压到/var/www/phpmyadmin,如果不存在phpmyadmin,请自行创建
在终端下执行
sudo cp /var/www/phpmyadmin/ /var/www/phpmyadmin/
sudo gedit /var/www/phpmyadmin/
找到“blowfish_secret”在后面填上任意字母
$cfg[Servers][$i][auth_type]=cookie;$cfg[Servers][$i][host]=localhost;$cfg[Servers][$i][connect_type]=tcp;$cfg[Servers][$i][compress]=false;$cfg[Servers][$i][extension]=mysql;
保存,退出
安装php5-mcrypt
sudo apt-get install php5-mcrypt
编辑php配置文件
sudo gedit /etc/php5/apache2/
在extension下面加上(任何独立一行就行)
extension=php_ (原来的无效)
保存,重启apache2
sudo /etc/init.d/apache2 restart
在浏览器里输入注:如果进入phpmyadmin出现配置文件引用失败则删除刚自己添加的
$cfg[Servers][$i][auth_type]=cookie;$cfg[Servers][$i][host]=localhost;$cfg[Servers][$i][connect_type]=tcp;$cfg[Servers][$i][compress]=false;$cfg[Servers][$i][extension]=mysql;
保存,退出
然后再重启apache2
sudo /etc/init.d/apache2 restart
在浏览器里输入配置文件路径
1apache 的配置文件路径 /etc/apache2/
2apache 网站字符编码配置路径 /etc/apache2/conf.d/charset
路径 /etc/php5/apache2/
4mysql配置文件 路径 /etc/mysql/ 一般不要使用,尤其是新手
5phpmyadmin配置文件路径 /etc/phpmyadmin/
6默认网站根目录 /var/www
常用命令
1.重启apache
sudo /etc/init.d/apache2 restart
2.重启mysql
sudo /etc/init.d/mysql restart
配置apache
1.更改默认字符集
终端中使用命令
sudo nano /etc/apache2/conf.d/charset
将其中的
# AddDefaultCharset
的井号去掉,后面字段改成UTF-8(如果您的网站是这样了话)
AddDefaultCharset UTF-8
中间的空格数并不重要,但一定要有。
2.添加支持文件类型(一般不需要),与网站地址(需要)
终端中使用命令
sudo nano /etc/apache2/
在配置文件最后面加入下面几行:
添加文件类型支持 (注:如果无法在html中解析php的语句,添加下面语句。 网上好多都是说直接编辑,但是ubuntu版本的apache2没有这个文件,你可以直接编辑,或者自己加一个,作为用户配置文件, 中include这个配置文件。 )
AddType APPlication/x-httpd-php
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如)
IfModule dir_moduleDirectoryIndex /IfModule
更改服务器地址(这里改为本机),您可以凭您喜好修改,就是必须一致
ServerName 127.0.0.1
修改apache的根目录DocumentRoot:
sudo nano /etc/apache2/sites-enabled/000-default
将其中的 DocumentRoot /var/www 改成您想要的目录比如 DocumentRoot /var/www/htdocs/ 以上Apache2就基本配置完成了。 重启Apache2服务即可。 下面的是参考,一般不需要改变,除非有特殊需求。
sudo nano /etc/apache2/ #修改端口号,把 NameVirtualHost *:80 改为NameVirtualHost 127.0.0.1:80 , 修改 Listen 80
再修改site的配置文件
/etc/apache2/sites-available/default
80是端口号
VirtualHost *:80
sudo a2enmod rewrite #开启apache 的rewrite功能
Apache模块
sudo a2enmod #启用模块
sudo a2dismod #禁用模块
配置PHP5
这个没什么好说的 根据个人自己需要
建议将安全模块开启(注意!开启后phpmyadmin会不能用)
sudo nano /etc/php5/conf.d/
注意:你可能需要敲入命令
或
php -i | grep
来获取你的php cli加载的路径(Loaded Configuration File,比如 /etc/php5/cli/ 而非 /etc/php5/conf.d/)。但此文件并不一定是apache php5模块加载的文件,如果要获得apache php5模块加载的,请参见测试_phpinfo()
nano可以用Ctrl+w来搜索将 safe_mode = off safe_mode = 设置为 safe_mode = on safe_mode = /var/www/htdocs/ 以上 /var/www/htdocs/是您在上面设置个网站根目录,请按照情况修改,结尾的/是一定要加的,
不然 /var/www/htdocsa,/var/www/htdocsb,等目录也可以访问。
以下是更改默认时区
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)
配置MySQL
MySQL常用命令
MySQL大部分命令是以
结尾,这里除了5给出的命令,其它一定要以
结尾!
1.进入mysql
mysql -h [服务器地址] -u [用户名〕-p
这是访问本地服务器
mysql -h 127.0.0.1 -u [用户名〕 -p
如:mysql -h 127.0.0.1 -u root -p
认证成功之后就进入mysql的命令控制台,以下都是在mysql的命令控制台的命令。
2.显示已经存在的数据库
SHOW target=_blank>,phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin
你可以把phpmyadmin复制过去 或者 链接过去
sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin
然后 终端中运行命令
sudo gedit /etc/phpmyadmin/
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。 。 反正就是在第三行和第四行的两句.如果我没记错的话 应该是下面这样)
Alias /phpmyadmin /usr/share/phpmyadminDirectory /usr/share/phpmyadmin
改为:
Alias /phpmyadmin /var/www/phpmyadminDirectory /var/www/phpmyadmin
LAMP到此已经配置完成了
测试 phpinfo(); (根据需要,自己选择,可不做)
创建、测试phpinfo:
sudo vi /var/www/ 注意:这里的路径错了,应该是sudo vi /var/www/htdocs/ 修改人:fenghelong邮箱fenghelong_
?php phpinfo(); ?
打开。
性能优化(根据需要,自己选择,可不做)
安装Zend Optimizer
要求PHP版本为5.2,不支持Ubuntu10.04的PHP5.3,请参照PHP5.2。
下载 Zend Optimizer。 直接贴下载地址,参考版本号改(这是32位的),不然主页要注册才能下
cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_compsudo mkdir /usr/local/zendsudo cp /usr/local/zend
编辑
sudo gedit /etc/php5/apache2/
开头加入,注意标点符号要英文。
[Zend Optimizer]zend__level=1 zend_extension=/usr/local/zend/
重启apache2
sudo /etc/init.d/apache2 restart
还是上面那个phpinfo文件,要能看到如下信息
This program makes use of the Zend Scripting Language Engine:Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
安?XCache
sudo apt-get install php5-xcache
root@ubuntu:/home/qii# dpkg -l | grep xcachii php5-xcache 1.2.2-5 Fast, stable PHP opcode cacher
xcache配置文件路径是
/etc/php5/conf.d/
编辑
sudo gedit /etc/php5/apache2/
把的内容加入到。 重启apache2
sudo /etc/init.d/apache2 restart
检查安装是否成功
root@ubuntu:/home/qii# php -vPHP 5.2.10-2ubuntu6 with Suhosin-Patch 0.9.7 (cli) (built: Oct 23 2009 16:30:10) Copyright (c) 1997-2009 The PHP GroupZend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies with XCache v1.2.2, Copyright (c) 2005-2007, by mOo
还有前面页应该有XCache模块
这里有点奇怪的是,如果不把的内容加入,apache也能载入XCache,但上没XCache模块。
安装eAccelerator
sudo apt-get install php5-dev
下载 eAccelerator
cd eaccelerator-0.9.6.1
phpizesudo ./configure -enable-eaccelerator=sharedsudo make
qii@ubuntu:~/tmp/eaccelerator-0.9.6.1$ sudo make installInstalling shared extensions: /usr/lib/php5/+lfs/
修改文件,安装为Zend扩展,最好放在开头,放到[zend]之前,免的出莫名其妙的问题:
sudo vi /etc/php5/apache2/
[eaccelerator]zend_extension=/usr/lib/php5/+lfs/ _size=16 _dir=/tmp/eaccelerator =1 =1 _mtime=1 =0 = _max=0 _ttl=0 _prune_period=0 _only=0 =1 _level=9 _admin_path=/var/www/
创建cache缓存目录
_dir=/var/cache/eaccelerator 这里定义cache路径
默认值是/tmp/eaccelerator,这非常简单因为任何人都对该目录可写,但是并不明智,因为重启后系统会自动清理该目录。 一个更好的地方是/var/cache/eaccelerator。 创建该目录并确保它对eAccelerator的使用者可写(通常该用户是你的网络服务器运行者,可能是www-data)。 使用默认值的话这样继续:
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator
改成 /var/cache/eaccelerator的话这样继续,先改
_dir=/var/cache/eaccelerator
sudo mkdir /var/cache/eacceleratorsudo chown root:www-data /var/cache/eacceleratorsudo chmod u=rwx,g=rwx,o= /var/cache/eaccelerator
复制控制文件到网站根目录
sudo cp /var/www/htdocs/
修改的$user和$pw,默认是admin和eAccelerator
sudo vi /var/www/htdocs/
重启apache
sudo /etc/init.d/apache2 restart
打开查看之前的页面,有下列字段:
This program makes use of the Zend Scripting Language Engine:Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
安全
隐藏服务器信息
vim /etc/apache2/ Prod
指定apache2的运行账户
以root来运行是很危险的,用下面的方法更改,这里是都改为www-data
vim /etc/apache2/envvarsexport APACHE_RUN_USER=www-dataexport APACHE_RUN_GROUP=www-data
要确认存在这些用户组。
启用
这个对pbpbb3这样有附带的程序有利,不过其它场合有可能引发问题。 方法:在网站主机配置下加入AllowOverride AuthConfi 例子:
vim /etc/apache2/sites_available/defaultDirectory /var/www/ AuthConfig.../Directory
其他
PDO的安装
pecl search pdo
sudo pecl install pdo
sudo pecl install pdo_mysql
最后编辑
sudo gedit /etc/php5/apache2/
再最后面添加两行:
extension =
extension = pdo_
排错
无法解析php文件,浏览器提示下载所要打开的php文件
执行:
sudo apt-get install libapache2-mod-php5sudo a2enmod php5
如果显示为:
This module does not exist!
那就要彻底删除libapache2-mod-php5,然后重新安装它
sudo apt-get remove --purge libapache2-mod-php5sudo apt-get install libapache2-mod-php5
重启apache2
sudo /etc/init.d/apache2 restart
清除浏览器缓存,然后输入http:localhost
虚拟主机
见Apache虚拟主机指南
屏蔽迅雷
迅雷的user-agent是
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; CLR 3.5.)Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CLR 1.1.4322; CLR 2.0.)
通过文件屏蔽迅雷的下载/盗链功能:
RewriteEngine On#Anti ThunderRewriteCond %{HTTP_USER_AGENT} ^Mozilla/4/.0/ /(compatible;/ MSIE/ 6/.0;/ Windows/ NT/ 5/.0/)___FCKpd___98nbsp; [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5/.0/ /(compatible;/ MSIE/ 6/.0;/ Windows/ NT/ 5/.0/)___FCKpd___98nbsp; [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4/.0/ /(compatible;/ MSIE/ 6/.0;/ Windows/ NT/ 5/.1;/ /)___FCKpd___98nbsp; [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4/.0/ /(compatible;/ MSIE/ 6/.0;/ Windows/ NT/ 5/.0;/ // CLR/ 3/.5/./)___FCKpd___98nbsp; [NC,OR]RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4/.0/ /(compatible;/ MSIE/ 6/.0;/ Windows/ NT/ 5/.1;/ SV1;/ // CLR/ 1/.1/.4322;/ // CLR/ 2/.0/./)___FCKpd___98nbsp; [NC]RewriteRule ^.*/.(gif|jpg|bmp|zip|rar|exe|mp3|swf)___FCKpd___98nbsp; / [NC,F]
你可以用Firefox的扩展user-agent switcher来测试效果。
如果你的资料地址已经被迅雷索引,请修改资源的路径地址。
如果用户手动用UltraEdit改写迅雷的user-agent,亦或者本机装虚拟机,虚拟机挂代理,迅雷挂虚拟机中的代理,这种屏蔽方法就失效了。
附录
apache2配置文件与子目录一览表
/etc/apache2/ 全局配置 /etc/apache2/envvars 环境变量 /etc/apache2/ httpd服务端口信息 /etc/apache2/conf.d/一般性配置文件存放地 /etc/apache2/mods-available/ 已安装的模块 /etc/apache2/mods-enabled/ 已经启用的模块/etc/apache2/sites-available/ 可用站点信息 /etc/apache2/sites-enabled/ 已经启用的站点信息,当中的文件是到/etc/apache2/sites-available/ 文件的软连接。 /etc/apache2/
要通过VMware安装Ubuntu系统,对于初次尝试的用户来说可能会有些困惑。以下是详细的安装步骤教程:
首先,你需要准备以下材料:
1. 打开VMware,点击“创建新的虚拟机”,选择“自定义(高级)”,并按照步骤进行。
2. 选择“稍后安装操作系统”,然后选择Linux,版本选择“Ubuntu 64”,并为虚拟机命名和指定安装位置,避免放在C盘。
3. 分配处理器和内存,选择网络类型默认为“使用网络地址转换(NAT)”,接着设置磁盘类型和大小(建议至少60G)为单个文件。
4. 选择CD/DVD选项,选择ISO映像文件,找到下载的Ubuntu镜像,点击安装。
5. 进入安装界面后,选择语言,选择正常安装并清除磁盘,设置用户名和密码,耐心等待安装完成,重启系统。
安装完Ubuntu后,别忘了安装VMware Tools以优化虚拟机性能:
1. 在虚拟机选项卡中点击安装VMware Tools,将下载的压缩文件复制到个人主目录下,解压并运行安装脚本。
2. 按照提示完成安装,确认安装成功后,你的Ubuntu系统就在VMware虚拟机中运行了。
以上就是通过VMware安装Ubuntu的详细步骤,希望对新手用户有所帮助。
在 Linux 系统中,Fio 是一个功能强大的工具,专用于硬盘性能的测评和硬件验证,由 Jens Axboe 开发,开源且易于使用。 Fio 支持19种I/O引擎和多种特性,适应各种场景,包括块设备和文件的I/O性能测试,以及多种操作系统如Linux、FreeBSD等。 本文将指导你在Ubuntu 16上安装和使用Fio,无论是从源码构建还是通过包管理器。 首先,如果你需要sudo或root权限,可以按照教程安装Fio。 对于Ubuntu和Debian用户,可以直接使用apt-get或yum命令安装;对于CentOS,可能需要先安装EPEL仓库。 在安装完成后,你可以通过执行随机写、读和读写测试来验证磁盘性能。 例如,随机写测试会同时写入4GB的文件,随机读测试则会读取2GB的随机数据。 Fio的输出信息详尽,包括IO延迟和百分比,对于理解和优化硬盘性能非常有帮助。 最后,本文提供了一个USB Pen驱动器的读写性能测试示例,让你领略Fio的强大功能。 如果你在使用过程中遇到问题或有任何反馈,欢迎留言交流。 本文由Bestony翻译,Linux中国推荐,原文出自,由LCTT原创编译。
在服务器操作系统选择上,Debian与Ubuntu各有千秋。 以下是它们的详细对比:Debian以其稳定性和安全性闻名,作为开源的基石,它拥有庞大的软件库和丰富的社区支持。 Debian的核心理念是提供稳定且高质量的操作系统,鼓励用户参与社区建设,这使得其在长期运行的服务器场景中表现出色。 Ubuntu则是基于Debian的发行版,由Canonical公司开发,它在稳定性与安全性上与Debian相当,同时更注重用户体验的提升。 Ubuntu的定期更新和强大的软件包管理工具,使得它在易用性和新功能引入上更具优势,尤其适合需要快速部署和用户友好的环境。 在稳定性与安全性方面,Debian的更新周期较长,经过严格测试,适合对稳定性要求极高的服务器。 而Ubuntu更新速度较快,可能带来一些短期的不稳定性,这需要用户根据实际需求权衡。 在软件管理与更新策略上,两者都使用APT工具,但Ubuntu的更新速度可能更适合追求新功能和快速响应的用户。 社区支持方面,Debian和Ubuntu都有活跃的用户群体,但Ubuntu的文档和在线支持可能更全面一些。 硬件兼容性方面,两者都能满足大部分服务器设备需求。 性能优化方面,两者都提供了相应的工具,以适应各种性能需求。 总结来说,如果你的服务器需要长时间稳定运行,Debian可能是更好的选择,而如果你更看重易用性、快速更新和用户体验,Ubuntu可能是更适合你的选择。 在决定前,考虑你的具体需求,如长期稳定性、硬件兼容性、社区支持等因素,将有助于做出明智的决策。
原文链接:网页链接
我是1999年上的大学,物理专业。 在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么。 你当下的经历、当下的学习,在未来的一天肯定会影响到你。 毕业后我们也各自找到了自己的职业:出国深造转行做金融、留校任教做科研、设计芯片、写程序、创办公司等等,这一切都离不开在校时学到的基础技能(数学、IT、电子电路)、受过煅炼的自学能力。
所以,各位正在迷茫的在校生,各位正在尝试转行的程序员,未来一定有你的位置,是好是坏取决于你当下的努力与积累。
我不能预言几年后什么行业会热门,也不能保证你照着本文学习可以发财。 我只是一个有十几年经验的程序员,给对编程有兴趣的你,提供一些建议。
程序员的方向,一般可以分为3类:专业领域、业务领域、操作系统领域。 你了解它们后,按兴趣选择吧。
对于专业领域,我提供不了建议。
业务,也就是应用程序,它跟操作系统并不是截然分开的:
①开发实体产品时,应用程序写得好的人,有时候需要操作系统的知识,比如调度优先级的设置、知道某些函数可能会令进程休眠。
②写应用程序的人进阶为系统工程师时,他需要从上到下都了解,这时候就需要有操作系统领域的知识了,否则,你怎么设计整个系统的方案呢?
③做应用程序的人,需要了解行业的需求,理解业务的逻辑。 所以,当领导的人,多是做应用的。 一旦钻入了某个行业,很难换行业。
④而操作系统领域,做好了这是通杀各行业:他只负责底层系统,在上面开发什么业务跟他没关系。 这行很多是技术宅,行业专家。
⑤操作系统和业务之间并没有一个界线。 有操作系统经验,再去做应用,你会对系统知根知底,碰到问题时都有解决思路。 有了业务经验,你再了解一下操作系统,很快就可以组成一个团队自立门户,至少做个CTO没问题。
它又可以分为下面2类。
1.1.1 学术研究
比如语音、图像处理、人工智能,这类工作需要你有比较强的理论知识,我倾向于认为这类人是“科学家”,他们钻研多年,很多时候是在做学术研究。
在嵌入式领域,需要把他们的成果用某种算法表达出来,针对某种芯片进行优化,这部分工作也许有专人来做。
1.1.2 工程实现
也有这样一类人,他们懂得这些专业领域的概念,但是没有深入钻研。 可以使用各类开源资料实现某个目标,做出产品。 比如图像处理,他懂得用opencv里几百个复杂函数来实现头像识别。 有时候还可以根据具体芯片来优化这些函数。
“专业领域”不是我的菜,如果你要做这一块,我想最好的入门方法是在学校学习研究生、博士课程。
换句话说,就是应用程序,这又可以分为下面2类。
1.2.1 界面显示
做产品当然需要好的界面,但是,不是说它不重要,是没什么发展后劲。
现在的热门词是Android APP和IOS APP开发。 你不要被Android、IOS两个词骗了,它们跟以前的VC、VB是同一路货色,只是、仅仅是一套GUI控件的实现。
希望没有冒犯到你,我有理由。
一个程序需要有GUI界面,但是程序的内在逻辑才是核心。 Android、IOS的开发工具给我们简化了GUI的开发,并提供了这些控件的交互机制,封装并提供了一些服务(比如网络传输)。 但是程序内部的业务逻辑、对视频图像声音的处理等等,这才是核心。 另外别忘了服务器那边的后台程序:怎样更安全地保存数据、保护客户的隐私,怎样处理成千上万上百万的并发访问,等等,这也是核心。
但是,从Android、IOS APP入门入行,这很快!如果你是大四,急于找到一份工作,那么花上1、2个月去学习Android或IOS,应该容易找到工作,毕竟APP的需求永远是最大的,现在这两门技术还算热门。 在2011、2012年左右,Android程序员的起薪挺高,然后开始下滑。 Android APP的入门基本只要1个月,所以懂的人也越来越多。 2013、2014年,IOS开发的工资明显比Android高了,于是各类IOS培训也火曝起来。 中华大地向来不缺速成人才,估计再过一阵子IOS工程师也是白菜价了。
会Android、IOS只是基本要求,不信去51job搜搜Android或IOS,职位要求里肯定其他要求。
1.2.2 业务逻辑
举个简单例子,做一个打卡软件,你需要考虑这些东西:
①正常流程是上班下班时都要打卡
②有人忘记了怎么办?作为异常记录在案,推送给管理员
③请假时怎么处理?
④加班怎么处理?
对于更复杂的例子,视频会议系统里,各个模块怎么对接,各类协议怎么兼容,你不深入这个行业,你根本搞不清楚。
应用开发的职位永远是最多的,入门门槛也低。 基本上只要你会C语言,面试时表现比较得体,一般公司都会给你机会。 因为:
①你进公司后,还需要重新培训你:熟悉它们的业务逻辑。
②你要做的,基本也就是一个个模块,框架都有人给你定好了,你去填代码就可以了。
说点让你高兴的事:软件公司里,做领导的基本都是写应用程序的(当然还有做市场的)。写应用程序的人,对外可以研究市场接待客户,对内可以管理程序员完成开发,不让他做领导让谁做?
如果你的志向是写应用程序,那么我建议你先练好基本功:数据结构、算法是必备,然后凭兴趣选择数据库、网络编程等等进行深入钻研。
最后,选择你看好的、感兴趣的行业深耕个10年吧。做应用开发的人选择了某个行业,后面是很难换行业的,选行很重要!
UCOS太简单,VxWorks太贵太专业,Windows不玩嵌入式了,IOS不开源,所以对于操作系统领域我们也只能玩Linux了。
在嵌入式领域Linux一家独大!
Android呢?Android跟QT一样,都是一套GUI系统。 只是google的实力太强了,现在Android无处不在,所以很多时候Linux+Android成了标配。 注意,在这里我们关心的是Android的整个系统、里面的机制,而不是学习几个API然后开发界面程序。 操作系统领域所包含的内容,简单地说,就是制作出一台装好系统的专用“电脑”,可以分为:
①为产品规划硬件:
按需求、性能、成本选择主芯片,搭配周边外设,交由硬件开发人员设计。
②给单板制作、安装操作系统、编写驱动
③定制维护、升级等系统方案
④还可能要配置、安装Android等GUI系统:
⑤为应用开发人员配置开发环境
⑥从系统角度解决疑难问题
这个领域,通常被称为“底层系统”或是“驱动开发”。
先解决2个常见误区:
①这份工作是写驱动程序吗?
看看上面罗列的6点,应该说,它包含驱动开发,但远远不只有驱动开发。
②我们还需要写驱动吗?不是有原厂吗?或者只需要改改就可以?
经常有人说,芯片原厂都做好驱动了,拿过来改改就可以了。 如果,你的硬件跟原厂的公板完全一样,原厂源码毫无BUG,不想优化性能、削减成本,不想做一些有特色的产品,那这话是正确的。
但是在这个不创新就是找死的年代,可能吗?!原因有二:
①即使只是修改代码,能修改的前提是能理解;能理解的最好煅炼方法是从零写出若干驱动程序。
②很多时候,需要你深度定制系统。
以前做联发科手机只需要改改界面就可以出货了,现在山寨厂一批批倒下。 大家都使用原厂的方案而不加修改时,最后只能拼成本。
举个例子,深圳有2家做交通摄像头、监控摄像头的厂家,他们曾经找我做过4个项目:
①改进厂家给的SD卡驱动性能,使用DMA。
②换了Flash型号后,系统经常出问题,需要修改驱动BUG。
③触摸屏点击不准,找原因,后来发现是旁路电容导致的。
④裁减成本,把4片DDR换为2片DDR,需要改bootloader对DDR的初始化。
这些项目都很急,搞不定就无法出货,这时候找原厂?除非你是中兴华为等大客户,否则谁理你?
我在中兴公司上班时,写驱动的时间其实是很少的,大部分时间是调试:系统调优,上帮APP工程师、下帮硬件工程师查找问题。 我们从厂家、网上得到的源码,很多都是标准的,当然可以直接用。 但是在你的产品上也许优化一下更好。 比如我们可以把摄像头驱动和DMA驱动揉合起来,让摄像头的数据直接通过DMA发到DSP去。 我们可以在软件和硬件之间起桥梁作用,对于实体产品,有可能是软件出问题也可能是硬件出问题,一般是底层系统工程师比较容易找出问题。
当硬件、软件应用出现问题,他们解决不了时,从底层软件角度给他们出主意,给他们提供工具。 再比如方案选择:芯片性能能否达标、可用的BSP是否完善等等,这只能由负责整个方案的人来考虑,他必须懂底层。
在操作系统领域,对知识的要求很多:
①懂硬件知识才能看懂电路图
②英文好会看芯片手册
③有编写、移植驱动程序的能力
④对操作系统本身有一定的理解,才能解决各类疑难问题
⑤理解Android内部机制
⑥懂汇编、C语言、C++、JAVA
它绝对是一个大坑,没有兴趣、没有毅力的人慎选。
①这行的入门,绝对需要半年以上,即使全天学习也要半年。
②它的职位,绝对比APP的职位少
③并且你没有1、2年经验,招你到公司后一开始你做的还是APP。
优点就是:
①学好后,行业通杀,想换行就换行;想自己做产品就自己做产品。
②相比做应用程序的人,不会被经常变动的需求搞得天天加班。
③门槛高,当然薪水相对就高。
操作系统领域,我认为适合于这些人:
①硬件工程师想转软件工程师,从底层软件入门会比较好
②单片机工程师,想升级一下。 会Linux底层的人肯定会单片机,会单片机的人不一定会Linux。
③时间充足的学生:如果你正读大二大三,那么花上半年学习嵌入式Linux底层多有益处。
④想掌握整个系统的人,比如你正在公司里写APP,但是想升为系统工程师,那么底层不得不学。
⑤想自己创业做实体产品的工程师,你有钱的话什么技术都不用学,但是如果没钱又想做产品,那么Linux底层不得不学。
⑥做Linux APP的人,没错,他们也要学习。
这部分人不需要深入,了解个大概就可以:bootloader是用来启动内核,Linux的文件系统(第1个程序是什么、做什么、各目录干嘛用)、APP跟驱动程序的调用关系、工具链,有这些概念就可以了
本文中,就把操作系统默认为Linux,讲讲怎么学习嵌入式Linux+Android系统。
嵌入式Linux系统包含哪些东西?不要急,举一个例子你就知道了。
①电脑一开机,那些界面是谁显示的?
是BIOS,它做什么?一些自检,然后从硬盘上读入windows,并启动它。
类似的,这个BIOS对应于嵌入式Linux里的bootloader。 这个bootloader要去Flash上读入Linux内核,并启动它。
②启动windows的目的是什么?
当然运行应用程序以便上网、聊天什么的了。
这些上网程序、聊天程序在哪?
在C盘、D盘上。
所以,windows要先识别出C盘、D盘。 在Linux下我们称之为根文件系统。
③windows能识别出C盘、D盘,那么肯定有读写硬盘的能力。
这个能力我们称之为驱动程序。 当然不仅仅是操作硬盘,还有网卡、USB等等其他硬件。 嵌入式Linux能从Flash上读出并执行应用程序,肯定也得有Flash的驱动程序啊,当然也不仅仅是Flash。
简单地说,嵌入式LINUX系统里含有bootloader、内核、驱动程序、根文件系统、应用程序这5大块。 而应用程序,我们又可以分为:C/C++、Android。
所以,嵌入式Linux+Android系统包含以下6部分内容:
①bootloader
②Linux内核
③驱动程序
④使用C/C++编写的应用程序
⑤Android系统本身
⑥Android应用程序
Android跟Linux的联系实在太大了,它的应用是如此广泛,学习了Linux之后没有理由停下来不学习Android。 在大多数智能设备中,运行的是Linux操作系统;它上面要么安装有Android,要么可以跟Android手机互联。 现在,Linux+Android已成标配。
本文假设您是零基础,以实用为主,用最快的时间让你入门;后面也会附上想深入学习时可以参考的资料。
在实际工作中,我们从事的是“操作系统”周边的开发,并不会太深入学习、修改操作系统本身。
①操作系统具有进程管理、存储管理、文件管理和设备管理等功能,这些核心功能非常稳定可靠,基本上不需要我们修改代码。我们只需要针对自己的硬件完善驱动程序
②学习驱动时必定会涉及其他知识,比如存储管理、进程调度。当你深入理解了驱动程序后,也会加深对操作系统其他部分的理解
③Linux内核中大部分代码都是设备驱动程序,可以认为Linux内核由各类驱动构成
但是,要成为该领域的高手,一定要深入理解Linux操作系统本身,要去研读它的源代码。
在忙完工作,闲暇之余,可以看看这些书:
①赵炯的《linux内核完全注释》,这本比较薄,推荐这本。 他后来又出了《Linux 内核完全剖析》,太厚了,搞不好看了后面就忘记前面了。
②毛德操、胡希明的《LINUX核心源代码情景分析》,此书分上下册,巨厚无比。 当作字典看即可:想深入理解某方面的知识,就去看某章节。
③其他好书还有很多,我没怎么看,没有更多建议
基于快速入门,上手工作的目的,您先不用看上面的书,先按本文学习。
假设您是零基础,我们规划了如下入门路线图。 前面的知识,是后面知识的基础,建议按顺序学习。 每一部分,不一定需要学得很深入透彻,下面分章节描述。
2.2.1 C语言
只要是理工科专业的,似乎都会教C语言。 我见过很多C语言考试90、100分的,一上机就傻了,我怀疑他们都没在电脑上写过程序。
理论再好,没有实践不能干活的话,公司招你去干嘛?
反过来,实践出真知,学习C语言,必须练练练、写写写!
当你掌握基本语法后,就可以在电脑上练习一些C语言习题了;
当你写过几个C程序后,就可以进入下一阶段的裸机开发了。
①不需要太深入
作为快速入门,只要你会编写“Hello, world!”,会写冒泡排序,会一些基础的语法操作,暂时就够了。
指针操作是重点,多练习;
不需要去学习过多的数据结构知识,只需要掌握链表操作,其他不用学习,比如:队列、二叉树等等都不用学;不需要去学习任何的函数使用,比如文件操作、多线程编程、网络编程等等;这些知识,在编写Linux应用程序时会用,但是在操作系统特别是驱动学习时,用不着!
永往直前吧,以后碰到不懂的C语言问题,我们再回过头来学习。
在后续的“裸机开发”中,会让你继续练习C语言,那会更实战化。
C语言是在写代码中精进的。
②可以在Visual Studio下学习,也可以在Linux下学习,后者需要掌握一些编译命令,我们暂时没有提供C语言的教程,找一本C语言书,网上找找免费的C语言视频(主要看怎么搭建环境),就可以自学了。
2.2.2 PC Linux基本操作:
对于PC Linux,我们推荐使用Ubuntu,在它上面安装软件非常简便。
我们的工作模式通常是这样:在Windows下阅读、编写代码,然后把代码上传到PC Linux去编译。 实际上,Ubuntu的桌面系统已经很好用了,我们拿到各种智能机可以很快上手,相信Ubuntu的桌面系统也可以让你很快上手。 为了提高工作效率,我们通常使用命令行来操作Ubuntu。
不用担心,你前期只需要掌握这几条命令就可以了,它们是如此简单,我干脆列出它们:
①cd : Change Directory(改变目录)
cd 目录名 // 进入某个目录cd ..// cd “两个点”:返回上一级目录cd - // cd “短横”:返回上一次所在目录
②pwd : Print Work Directory(打印当前目录 显示出当前工作目录的绝对路径)
③mkdir : Make Directory(创建目录)
mkdir abc // 创建文件夹abcmkdir -p a/b/c// 创建文件夹a,再a下创建文件夹b,再在b下创建文件夹c
④rm : Remove(删除目录或文件)
rm file // 删除名为file的文件rm -rf dir// 删除名为dir的目录
⑤ls : List(列出目录内容)
⑥mount : 挂载
mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mntmount -t yaffs /dev/mtdblock3 /mnt
⑦chown : Change owner(改变文件的属主,即拥有者)
chown book:book /work -R //对/work目录及其下所有内容,属主改为book用户,组改为book
⑧chmod : Change mode(改变权限),下面的例子很简单粗暴
chmod 777 /work -R // 对/work目录及其下所有内容,权限改为可读、可写、可执行
⑨vi : Linux下最常用的编辑命令,使用稍微复杂,请自己搜索用法。
要练习这些命令,你可以进入Ubuntu桌面系统后,打开终端输入那些命令;或是用SecureCRT、putty等工具远程登录Ubuntu后练习。
2.2.3 硬件知识
我们学习硬件知识的目的在于能看懂原理图,看懂通信协议,看懂芯片手册;不求能设计原理图,更不求能设计电路板。
对于正统的方法,你应该这样学习:
①学习《微机原理》,理解一个计算机的组成及各个部件的交互原理。
②学习《数字电路》,理解各种门电路的原理及使用,还可以掌握一些逻辑运算(与、或等)。
③《模拟电路》?好吧,这个不用学,至少我在工作中基本用不到它,现在全忘光了。
就我个人经验来说,这些课程是有用的,但是:
①原理有用,实战性不强。
比如《微机原理》是基于x86系统,跟ARM板子有很大差别,当然原理相通。
我是在接触嵌入式编程后,才理解了这些课程。
②每本书都那么厚,内容都很多,学习时间过长,自学有难度。
针对这些校园教材的不足,并结合实际开发过程中要用到的知识点,我们推出了《学前班_怎么看原理图》的系列视频:
学前班第1课第1节___怎么看原理图之GPIO和门电路
学前班第1课第2.1节_怎么看原理图之协议类接口之
学前班第1课第2.2节_怎么看原理图之协议类接口之
学前班第1课第2.3节_怎么看原理图之协议类接口之
学前班第1课第2.4节_怎么看原理图之协议类接口之NAND
学前班第1课第2.5节_怎么看原理图之协议类接口之
学前班第1课第3节___怎么看原理图之内存类接口
学前班第1课第4.1节_怎么看原理图之分析S3C2410开发板
学前班第1课第4.2节_怎么看原理图之分析S3C2440开发板
学前班第1课第4.3节_怎么看原理图之分析S3C6410开发板
即使你只具备初中物理课的电路知识,我也希望能通过这些视频,让你可以看懂原理图,理解一些常见的通信协议;如果你想掌握更多的硬件知识,这些视频也可以起个索引作用,让你知道缺乏什么知识。
这些视频所讲到的硬件知识,将在《裸板开发》系列视频中用到,到时可以相互对照着看,加深理解。
2.2.4 要不要专门学习Windows下的单片机开发
很多学校都开通了单片机的课程,很多人都是从51单片机、AVR单片机,现在比较新的STM32单片机开始接触嵌入式领域,并且使用Windows下的开发软件,比如keil、MDK等。
问题来了,要不要专门学习Windows下的单片机开发?
①如果这是你们专业的必修课,那就学吧
②如果你的专业跟单片机密切相关,比如机械控制等,那就学吧
③如果你只是想从单片机入门,然后学习更广阔的嵌入式Linux,那么放弃在Windows下学习单片机吧!
理由如下:
①Windows下的单片机学习,深度不够
Windows下有很好的图形界面单片机开发软件,比如keil、MDK等。
它们封装了很多技术细节,比如:
你只会从main函数开始编写代码,却不知道上电后第1条代码是怎么执行的;
你可以编写中断处理函数,但是却不知道它是怎么被调用的;
你不知道程序怎么从Flash上被读入内存;
也不知道内存是怎么划分使用的,不知道栈在哪、堆在哪;
当你想裁剪程序降低对Flash、内存的使用时,你无从下手;
当你新建一个文件时,它被自动加入到工程里,但是其中的机理你完全不懂;
等等等。
②基于ARM+Linux裸机学习,可以学得更深,并且更贴合后续的Linux学习。 实际上它就是Linux下的单片机学习,只是一切更加原始:所有的代码需要你自己来编写;哪些文件加入工程,需要你自己来管理。
在工作中,我们当然倾向于使用Windows下更便利的工具,但是在学习阶段,我们更想学习到程序的本质。
一切从零编写代码、管理代码,可以让我们学习到更多知识:
你需要了解芯片的上电启动过程,知道第1条代码如何运行;
你需要掌握怎么把程序从Flash上读入内存;
需要理解内存怎么规划使用,比如栈在哪,堆在哪;
需要理解代码重定位;
需要知道中断发生后,软硬件怎么保护现场、跳到中断入口、调用中断程序、恢复现场;
你会知道,main函数不是我们编写的第1个函数;
你会知道,芯片从上电开始,程序是怎么被搬运执行的;
你会知道,函数调用过程中,参数是如何传递的;
你会知道,中断发生时,每一个寄存器的值都要小心对待;
等等等。
你掌握了ARM+Linux的裸机开发,再回去看Windows下的单片机开发,会惊呼:怎么那么简单!并且你会完全明白这些工具没有向你展示的技术细节。
驱动程序=Linux驱动程序软件框架+ARM开发板硬件操作,我们可以从简单的裸机开发入手,先掌握硬件操作,并且还可以:
①掌握如何在PC Linux下编译程序、把程序烧录到板子上并运行它
②为学习bootloader打基础:掌握了各种硬件操作后,后面一组合就是一个bootloader
2.2.5 为什么选择ARM9 S3C2440开发板,而不是其他性能更好的?
有一个错误的概念:S3C2440过时了、ARM9过时了。
这是不对的,如果你是软件工程师,无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的。
一款芯片,上面有CPU,还有众多的片上设备(比如UART、USB、LCD控制器)。 我们写程序时,并不涉及CPU,只是去操作那些片上设备。
所以:差别在于片上设备,不在于CPU核;差别在于寄存器操作不一样。
因为我们写驱动并不涉及CPU的核心,只是操作CPU之外的设备,只是读写这些设备的寄存器。
之所以推荐S3C2440,是因为它的Linux学习资料最丰富,并有配套的第1、2期视频。
2.2.6 怎么学习ARM+Linux的裸机开发
学习裸机开发的目的有两个:
①掌握裸机程序的结构,为后续的u-boot作准备
②练习硬件知识,即:怎么看原理图、芯片手册,怎么写代码来操作硬件
后面的u-boot可以认为是裸机程序的集合,我们在裸机开发中逐个掌握各个部件,再集合起来就可以得到一个u-boot了。
后续的驱动开发,也涉及硬件操作,你可以在裸机开发中学习硬件知识。
注意:如果你并不关心裸机的程序结构,不关心bootloader的实现,这部分是可以先略过的。 在后面的驱动视频中,我们也会重新讲解所涉及的硬件知识。
推荐两本书:杜春蕾的《ARM体系结构与编程》,韦东山的《嵌入式Linux应用开发完全手册》。 后者也许是国内第1本涉及在PC Linux环境下开发的ARM裸机程序的书,如果我说错了,请原谅我书读得少。
对于裸机开发,我们提供有2部分视频:
①环境搭建
第0课第1节_刚接触开发板之接口接线
第0课第2节_刚接触开发板之烧写裸板程序
第0课第3节_刚接触开发板之重烧整个系统
第0课第4节_刚接触开发板之使用vmwae和预先做好的
第0课第5节_刚接触开发板之u-boot打补丁编译使用及建sourceinsight工程
第0课第6节_刚接触开发板之内核u-boot打补丁编译使用及建sourceinsight工程
第0课第7节_刚接触开发板之制作根文件系统及初试驱动
第0课第8节_在TQ2440,MINI2440上搭建视频所用系统
第0课第9节_win7下不能使用dnw烧写的替代方法
.................未完
原文链接:网页链接
内容声明:
1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/112b1b139c8d67ed6245.html,复制请保留版权链接!
简介随着Web应用程序变得越来越复杂,它们也面临着越来越多的安全威胁,跨站点脚本,XSS,是最常见的Web应用程序攻击类型之一,它允许攻击者在受害者的浏览器中执行恶意脚本,事件验证是保护Web应用程序免受XSS和其他攻击的基本安全机制,它通过验证用户输入以确保其安全来工作,启用事件验证要启用事件验证,请在Web.config文件中将以...。
技术教程 2024-09-27 20:36:17
简介RenderControl是ASP.NETCore中一项强大的技术,它允许开发人员创建自己的HTML标记渲染器,这提供了一个高度灵活和可扩展的平台,用于构建个性化和交互式的Web应用程序,RenderControl的优势RenderControl具有以下优势,控制标记输出,它允许您根据需要创建和修改HTML标记,提高性能,通过缓存...。
技术教程 2024-09-27 11:11:13
简介AWK是一种针对文本数据处理的强大编程语言,因其简单易用和高效性而受到普遍欢迎,在数据处理领域,熟练掌握AWK可以显著提高效率并简化复杂任务,实用技巧1.指定字段提取AWK提供多种方法来指定要提取的字段,最常用的语法是$n,其中n是字段编号,从1开始,例如,要提取第一列,只需使用$1,awk,print$1,input.txtA...。
技术教程 2024-09-25 18:17:34
Hover效果是CSS中最常用也是最强大的交互之一,它允许您在用户将鼠标悬停在元素上时更改元素的外观或行为,本文将深入探讨CSShover效果,并提供一些实用的提示和技巧,帮助您创建引人入胜且用户友好的交互,Hover事件Hover效果是通过将,hover伪类应用于元素来实现的,当鼠标悬停在该元素上时,浏览器将应用伪类的样式,语法se...。
最新资讯 2024-09-24 23:15:12
什么是ResX文件,ResX文件是XML格式的文件,用于存储应用程序的本地化资源,这些资源可以包括字符串、图像、音频文件和其他类型的数据,ResX文件的优点使用ResX文件本地化应用程序提供了以下优点,简化本地化过程,ResX文件将所有本地化资源集中在一个文件中,从而简化了本地化过程,易于编辑,ResX文件可以使用任何文本编辑器或XM...。
技术教程 2024-09-16 21:58:15
VBScript是一种脚本语言,可用于自动执行各种任务,包括文件和文件夹操作,读取文件可以使用FileSystemObject对象读取文件的内容,该对象提供OpenTextFile方法,该方法返回指向文件的TextStream对象,然后可以使用TextStream对象的ReadLine方法逐行读取文件,创建FileSystemOb...。
本站公告 2024-09-16 04:39:05
滚动条是用于在内容超过其容器尺寸时允许用户在内容中滚动的用户界面元素,在HTML中,可以使用overflow属性来控制滚动条的显示,scrolling属性scrolling属性指定是否在嵌入式内容周围显示滚动条,该属性可以具有以下值,auto,如果内容超过其容器尺寸,则显示滚动条,yes,始终显示滚动条,即使内容不超过其容器尺寸,no...。
最新资讯 2024-09-16 03:55:03
教程将深入介绍单片机C语言编程的精髓,涵盖最佳实践和高级技术,除了理论讲解,还提供了100个实际应用示例,帮助读者掌握单片机的开发技巧,概述单片机是一种集成度高、体积小巧的计算机,广泛应用于各种电子产品中,C语言是一种结构化编程语言,具有高效、可移植和易于维护的优点,非常适合单片机编程,本教程将系统地介绍单片机C语言编程的各个方面,从...。
技术教程 2024-09-09 13:19:34
前言在当今互联网时代,拥有一个网站对于个人和企业而言都至关重要,网站可以展示企业形象、提供产品和服务信息、建立客户关系,并促进销售,但是,对于大多数人来说,开发一个网站往往是一项复杂且耗时的任务,如果你没有编程知识或者技术人员的帮助,那么构建一个网站几乎是不可能的,站长源码交易平台的出现为这个问题提供了解决方案,它是一个提供各种网站源...。
互联网资讯 2024-09-08 12:10:34
数据库编程是计算机科学中一门激动人心且充满挑战的领域,它将技术创新与实际应用完美地结合在一起,它涉及设计、开发和维护用于存储和管理数据的计算机程序,数据库编程人员负责确保数据以安全、可靠且高效的方式进行处理,数据库编程术语数据库,数据的有组织集合,通常存储在计算机系统中,数据库管理系统,DBMS,一种软件,用于创建、管理和访问数据库...。
技术教程 2024-09-06 18:23:08
简介继承和多态性是面向对象编程,OOP,中两个重要的概念,继承允许一个类从另一个类继承属性和方法,多态性允许一个对象以不同的形式存在,具体取决于它的实际类型,继承当一个类从另一个类继承时,它将获得父类的所有属性和方法,子类还可以定义自己的属性和方法,这些属性和方法可以覆盖或扩展父类的属性和方法,继承的类型有两种主要的继承类型,单继承,...。
互联网资讯 2024-09-06 11:59:12
1、未开封位于河南省開封市的一處古代皇家陵園,至今仍未被完全發掘,據傳聞,陵園中埋葬着北宋皇帝宋真宗和他的皇后劉娥,以及其他皇室成員,多個考古團隊試圖進入陵園,但都以失敗告終,有傳言稱,陵園中存在着神秘力量,阻擋了人們的進入,2、秦始皇陵位於陝西省西安市的秦始皇陵,是世界上最大的陵墓之一,陵墓中埋葬着秦始皇及其陪葬品,儘管陵墓已經被發...。
互联网资讯 2024-09-04 01:31:31