首页> 标签> PHP
"PHP"
共 27983 条结果
全部 问答 文章 公开课 课程 电子书 技术圈 体验
WebShell是什么?如何抵御WebShell?
1.WebShell是什么?这边简单的给各位看官介绍一下:Webshell是通过服务器开放的端口获取服务器的某些权限。webshell又称脚本木马,一般分为大马、小马、一句话木马三种.1.大马,体积大、功能齐全、能够管理数据库、文件管理、对站点进行快速的信息收集,甚至能够提权。2.小马,一般而言,我们在上传文件的时候,会被限制上传的文件大小或是拦截的情况,那么我通过小马来上传大马,实现我们想要的功能。3.一句话木马,短小精悍、功能强大、隐蔽性好、使用客户端可以快速管理webshell。2.webshell的攻击原理是什么?WebShell是黑客经常使用的一种恶意脚本,原理就是利用Web服务器自身的环境运行的恶意代码。就是通过WebShell脚本的上传,利用网页服务程序实现操控服务器的一种方式。以PHP语言为例,只需要编写一个简单的PHP代码文件,上传到网站目录中,就可以对网站服务器进行操控,包括读取数据库、删除文件、修改主页等都可以做到。这么一个简单的语句就可以为黑客入侵打开一扇大门,让黑客可以随意地执行任意代码。3.WebShell攻击该如何进行抵御呢?1.配置必要的防火墙,并开启防火墙策略,防止暴露不必要的服务为攻击者提供利用条件。2.对服务器进行安全加固,例如,关闭远程桌面功能、定期更换密码、禁止使用最高权限用户运行程序、使用 HTTPS 加密协议等。3.加强权限管理,对敏感目录进行权限设置,限制上传目录的脚本执行权限,不允许配置执行权限等。4.安装 Webshell 检测工具,根据检测结果对已发现的可疑 Webshell 痕迹立即隔离查杀,并排查漏洞。5.排查程序存在的漏洞,并及时修补漏洞。可以通过专业人员的协助排查漏洞及入侵原因。6.时常备份数据库等重要文件。7.需要保持日常维护,并注意服务器中是否有来历不明的可执行脚本文件。8.采用白名单机制上传文件,不在白名单内的一律禁止上传,上传目录权限遵循最小权限原则
文章
安全  ·  网络安全  ·  PHP  ·  数据库  ·  数据安全/隐私保护
2022-08-10
php如何通过代码获取应用上的环境变量啊
php如何通过代码获取应用上的环境变量啊
问答
PHP
2022-08-10
高校学生在家实践ECS弹性云服务器
本人来自深圳大学,就读的是计算机科学与技术专业,目前是大三,在大二暑假的时候,不满足于在csdn上写博客,想要搭建一个属于自己的博客,于是就想着去租一个服务器来使用,正巧听同学介绍,学生可以在阿里云上免费领取阿里云服务器,于是就过来参与这个“飞天加速计划-高校学生在家实践”活动了 我在学校里也多次使用过学校的服务器,所以对于服务器的时候也算是轻车熟路,在配置好了阿里云服务器之后,就打算用来建立网站了,我是使用的宝塔平台来管理我的服务器的,在这个平台上可以很轻松的管理端口,配置mysql,配置FTP,网站站点等常用的服务器配置。 建站我是用的wordpress平台进行建站的,后端是用php写的,前端就是普通的js,html,css三件套,初始的网站页面我觉得还是不错的 展望未来,通过“高校学生在家实践”,我得到了很多的收获,我学习了如何去建立一个互联网网站,如何利用服务器配置前后端,以及学会了很多linux的命令,我希望在未来,可以搭建一个具有很高访问量的个人博客,就像廖雪峰一样。
文章
弹性计算  ·  前端开发  ·  JavaScript  ·  关系型数据库  ·  MySQL  ·  Linux  ·  PHP
2022-08-10
注解与反射笔记
@TOC什么是注解Annotation是从JDK5.0开始引入的新技术.Annotation的作用:不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取.Annotation的格式:注解是以"@注释名"在代码中存在的,还可以添加一些参数值﹐例如:@SuppressWarnings(value="unchecked").Annotation在哪里使用?可以附加在package , class , method , field等上面﹐相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问什么是内置注解@override:定义在java.lang.Override中,此注释只适用于修辞方法﹐表示一个方法声明打算重写超类中的另一个方法声明.【重写】@Deprecated :定义在java.lang.Deprecated中,此注释可以用于修辞方法﹐属性,类﹐表示不鼓励程序员使用这样的元素﹐通常是因为它很危险或者存在更好的选择.【不推荐程序员使用,或存在更好的方法】@suppressWarnings:定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息.==与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数都是已经定义好了的.我们选择性的使用就好了﹒==*@SuppressWarnings("all")@SuppressWarnings("unchecked")@SuppressWarnings(value={"unchecked","deprecation"})* 强调文本元注解元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型作说明.这些类型和它们所支持的类在java.lang.annotation包中可以找到.(@Target , @Retention ,@Documented , @lInherited )1.@Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)2.@Retention:表示需要在什么级别保存该注释信息﹐用于描述注解的生命周期(SOURCE<CLASS < RUNTIME)3.@Document:说明该注解将被包含在javadoc中4.@Inherited:说明子类可以继承父类中的该注解自定义注解使用@interface自定义注解时﹐自动继承了java.lang.annotation.Annotation接口分析:interface用来声明一个注解﹐格式: public @interface注解名{定义内容}其中的每一个方法实际上是声明了一个配置参数.方法的名称就是参数的名称.返回值类型就是参数的类型(返回值只能是基本类型,Class , String , enum ).√可以通过default来声明参数的默认值如果只有一个参数成员﹐一般参数名为value注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值.举例:import java.lang .annotation.ElementType; import java.lang.annotation. Retention ; import java.lang.annotation . RetentionPolicy ; import java.lang.annotation.Target; //自定义注解 public class Test03 { //注解可以显示赋值,如果没有默认值,我们就必须给注解赋值 @MyAnnotation2(age = 18, name ="张三") public void test(){} } @Target({ElementType.TYPE,ElementType.METHOD}) @Retention ( RetentionPolicy . RUNTIME) @interface MyAnnotation2{ //注解的参数:参数类型:参数名(); String name() default ""; int age(); int id() default -1;//如果默认值为-1,代表不存在﹒ string[] schools() default{"阿觿学长","清华大学"}; 反射动态语言 V S 静态语言动态语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。主要动态语言:Object-C、C#、JavaScript、PHP、Python等。静态语言与动态语言相对应的,运行时结构不可变的语言就是静态语言。如Java、C、C++。Java不是动态语言,但Java可以称之为“准动态语言”。即Java有一定的动态性,我们可以利用反射机制获得类似动态语言的特性。Java的动态性让编程的时候更加灵活!Java ReflectionReflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。==Class c= Class.forName("java.lang.String")==加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射Java反射机制提供的功能1.在运行时判断任意一个对象所属的类2.在运行时构造任意一个类的对象3.在运行时判断任意一个类所具有的成员变量和方法4.在运行时获取泛型信息5.在运行时调用任意一个对象的成员变量和方法6.在运行时处理注解7.生成动态代理Java反射优点和缺点优点:可以实现动态创建对象和编译,体现出很大的灵活性缺点:对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于直接执行相同的操作。反射相关的主要APIjava.lang.Class :代表一个类java.lang.reflect.Method:代表类的方法java.lang.reflect.Field:代表类的成员变量java.lang.reflect.Constructor:代表类的构造器举例://什么叫反射 public class Test02 extends object{ public static void main(string[] args) throws classNotFoundException { //通过反射获取类的class对象 Class c1 = Class.forName ( "com.zhang.reflection.User") ; System.out. println(c1 ) ; Class c2 = class.forName ( "com. zhang.reflection.User"); Class c3 - class.forName ( "com. zhang.reflection.User") ; Class c4 = class.forName ( "com. zhang.reflection.user") ; //一个类在内存中只有一个class对象 //一个类被加裁后,类的整个结构都会被封装在class对象中。 System.out.println(c2.hashcode()); System.out-println( c3.hashcode()) ; System.out. println(c4.hashcode()); } //实体类: pojo , entity class User{...]Class类在Object类中定义了以下的方法,此方法将被所有子类继承public final Class getClass()以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称。对象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE都为其保留一个不变的Class类型的对象。一个Class对象包含了特定某个结构(classlinterfacelenum/annotation/primitive type/void/)的有关信息。Class本身也是一个类Class对象只能由系统建立对象一个加载的类在JVM中只会有一个Class实例一个Class对象对应的是一个加载到JVM中的一个.class文件>每个类的实例都会记得自己是由哪个Class实例所生成通过Class可以完整地得到一个类中的所有被加载的结构Class类是Reflection的根源,针对任何你想动态加载、运行的类,唯有先获得相应的Class对象
文章
JavaScript  ·  前端开发  ·  Java  ·  程序员  ·  编译器  ·  API  ·  PHP  ·  C#  ·  C++  ·  Python
2022-08-09
不是吧,连公司里的卷王写代码都复制粘贴,这合理?
 没错,我,本人,就是那种卷心菜,就是那种想卷但卷不过别人的, 我每天吭哧吭哧写代码,写到办公区里空荡荡地只剩下我一个人,但我们组里,就我需求写得最慢,bug写得最多,我弟常问我:“哥,别的同事加班都没你多你绩效一定不错吧?”编辑但、其实是因为我写不过别人,尤其公司里那个卷王,代码写得好,还写得快,改bug测试小姐姐一提他立马响应改好。 搞得测试组那边买奶茶常常会给他捎一杯,从来不带我。我真的、写bug写得好慢啊。 这天,卷王关掉关掉显示器,拎起电脑包甩到肩膀上就要走,经过我的工位凑过来瞄了一眼,意味深长地说“其实代码没必要自己写。”“我很多代码都复制粘贴的”他神秘一笑。我眼睛都瞪大了:“不是吧!没想到你是这种人...”“那当然,我写代码是脑力活儿,你都快把写代码变成体力活儿了。”“比如说,这些这些”他戳了戳我的屏幕,指着那些数据模型定义代码、接口请求代码说,“这些你写它干啥,用工具自动生成代码不好嘛?”说完他打开某度搜了“apifox”跳入官网下载,两下就安装好了。编辑"看好了哈,我要开始表演了。”“你是干后端的,不少活儿都是写接口,写完接口文档再写接口的代码,费时费力,这个工具可以直接把你写的接口文档生成接口代码。把swagger 文档导入到 Apifox里面去,或者直接在Apifox 里面写接口也行,纯可视化界面,不用学,写完再一键生成代码,就搞定了。”编辑我们后端常用的语言和框架,这里有 java 和php 下都提供了好几种框架可选,就算你用了别的偏一点的语言,这里有130多种语言和框架,也能找到合适的。编辑我闻到一股比较浓的广告味,不知道各位读者老爷看到这里有没有觉得,我心生警惕:“原来你是来拉新的,Apifox给了你多少广告费”“肤浅,我还不是为你好。“他翻了个白眼,”就你这么菜,公司裁员第一批就能有你的名单。写代码的活儿也不是这么干的”“像字段定义、实体类、接口请求、业务代码这些,很多都是固定格式和规范的,你自己写也是那个样,人家自动生成的还比你写得好。这些重复的,不能给你带来成长的,能用工具生成就别自己做。编辑Apifox 自动生成的实体类数据模型的代码“你的精力要花在什么地方呢?花在梳理业务逻辑上,专注于业务代码,花在功攻克技术问题上,花在总结复盘,把踩过的坑都总结成为经验上,不要花在这些重复的没有难度的事情上。不然你就是干到猝死,你都未必能变强。”我心里虽然被说服了一半,嘴上还是很强硬:“能支持这么多的语言类型,那功能支持就很一般啊”卷王正色道:“那还真不是,垃圾软件别想入我法眼,对于单个接口来说,它可以生成接口代码,接口数据模型代码,业务代码和接口请求代码,也能生成整个项目的代码。”编辑而且,他逼近一步,“你也可以自己配置代码模板和代码风格嘛,软件功能都支持了”这个东西,对前端也是福音,你把你写的接口分享出去给它用,它也能生成前端的代码https://www.apifox.cn/apidoc/shared-2ef8e0ab-f70f-45f6-bc8d-3d6dee8eb103编辑这个用起来不香吗?我被彻底说服了,毕竟重复写那些东西也很烦。但是,今天的我复制粘贴和明天的我复制粘贴,心情是完全不一样的。 以前是觉得自己偷懒摸鱼敷衍,现在是觉得把重复无聊的东西交给apifox, 程序员在解放全人类的生产力之前,先解放自己,这很合理。下载链接:www.apifox.cn
文章
前端开发  ·  数据可视化  ·  Java  ·  程序员  ·  PHP
2022-08-09
Linux入门查找文件
linux  下查找文件的方法可以归类为4种(并不一定严格准确,仅作为参考):    通过find 命令去找    通过locate 命令去找    通过 grep 根据查找文件内容去找    通过特定程序的指定用法去找 1. 通过find 命令查找文件    find 命令用法很多,这里只说下常用的,其它的用到的时候可以man 一下子。     find 基本用法是:     find  /  -option params      查找当前目录下文件名为:.env 的文件:     find  ./ -name .env 查找文件类型为管道的文件find / -type p这里说一下创建管道文件的命令是:mkfifo 查找大于200M 的文件:find / -size +200M在当前目录下查找大于100M 并且小于300M的文件:find ./ -size +100M -size -300M说明:如果想查找大于100k的文件,可以直接把M 替换成 k 即可 ,这里为了举例方便,很多时候都是在/目录下查找,但是在生产环境中慎用,这样做会产生很大的性能问题。在当前目录下查找,2天以前修改的文件find ./ -mtime +2说明:stat fileName 查看文件时间戳,同理,查看文件创建时间 ctime ,文件访问时间 atime ,命令模式:find  path m/a/c time +n -n  ,+n是指n天以前, - n 是指n 天以内。 查找文件名中有index的python 文件(即*index*.py)find / -name "*index*.py" 其它的一些用法可以参考这篇文章:http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html对find 命令来说,如果不想去man  ,可以看下上面链接地址的文章,写的很详细很全。 2. 通过locate 命令去定位locate 查找文件比find 要快,要简单的多 ,跟 find 比起来,少了很多参数,这里只说下查找的用法,其它一些用法请自行man。查找php.ini locate php.ini 如果你亲自尝试了一把,就会发现,locate 命令会很快,locate之所以如此之快,是因为它不会为搜索到的文件或目录名读取文件系统。它实际上是指一个数据库(由updatedb编写)来查找用户正在查找的内容,并根据该搜索生成其输出。这样虽然很快,但有一个问题就是刚刚创建的文件,不会被搜索到。如果想使刚创建的文件被 locate 命令搜索到 , 可以使用 sudo updatedb 命令 更新数据库, 否则要等到第二天才能搜索到该文件 , 该后台数据库默认一天更新一次 ; 在etc/下查找以m开头的文件:locate /etc/mlocate -S 可以查看数据库的信息root@zhang-kubuntu-host:/etc# locate -S数据库 /var/lib/mlocate/mlocate.db:       55,016 文件夹       460,277 文件       30,716,854 文件名中的字节数       12,146,130 字节用于存储数据库root@zhang-kubuntu-host:/etc#至于更多locate 的用法,可以移步到https://www.howtoforge.com/linux-locate-command/,或者自行man 。 3.grep 根据文件内容查找Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。语  法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]在当前目录下查找文件中包含stdio 字符的文件:grep stdio ./* 在/etc 目录下查找文件内容中有127.0.0.1 的内容:grep 127.0.0.1 /etc/*查找文件中内容有StdClass 并且New开头的文件grep stdClass New* 说明:如果你试了该命令就会发现,使用该命令会提示一个***** 是一个目录的信息,这是因为grep命令只能在文件内搜索。上面三种方法是比较重要的方法,尤其是find 和 grep 命令,grep  是linux 中一个非常重要的命令,这里只是简单的说了下grep 查找文件用法,还有其它一些可以参考这篇文章,这个老哥写的蛮全的,http://www.cnblogs.com/end/archive/2012/02/21/2360965.html 。 4.通过特定程序定位文件这一种方法,用的比较少,但个人感觉速度很快,又很精准,它依赖于特定的应用程序。这里拿php 和 nginx 来举栗说明。假定我们要修改php 和 nginx 的配置,但忘记了配置文件在哪里?怎么做呢?知道了locate  命令后能很快定位该配置文件路径。但还有其它方案,也能很快速的定位配置文件的路径。$ php -i | grep php.inizhang@zhang-kubuntu-host:~$ php -i | grep php.iniConfiguration File (php.ini) Path => /usr/local/php/etcLoaded Configuration File => /usr/local/php/etc/php.ini然后再看下怎么定位nginx 的配置文件吧!nginx -h这条命令可能会让人失望,但它也显示了一些我们需要的信息。 可以看到prefix 和 filename ,这两项组合起来,就是nginx默认配置文件的目录。
文章
存储  ·  应用服务中间件  ·  Linux  ·  PHP  ·  数据库  ·  nginx  ·  Python
2022-08-09
Git入门Git简介
Git 技能树(1):Git 简介什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。在 GIT CODE 中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。 有了它你就可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。接下来,我们将要回顾版本控制系统的发展历史。版本控制系统发展可以分为三个阶段:本地版本控制系统集中式版本控制系统分布式版本控制系统本地版本控制系统许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。其中最流行的一种叫做 RCS ,现今许多计算机系统上都还看得到它的踪影。 RCS 的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。集中化的版本控制系统接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。 这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。但这么做也有一个显而易见的缺点,那就是是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。分布式版本控制系统于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。不仅如此,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。这样一来,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。Git 的诞生接下来,让我们来看一看 Git 诞生的故事。Git 诞生的背景同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。Linus 在1991年创建了开源的 Linux,从此,Linux 系统不断发展,已经成为最大的服务器系统软件了。在1991-2002年期间,世界各地的志愿者把源代码文件通过 diff 的方式发给 Linus,然后由 Linus 本人通过手工方式合并代码。你也许会想,为什么 Linus 不把 Linux 代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus 坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和 Linux 的开源精神不符。Linus 两周完成 Git到 2002 年,Linux 系统已经发展了十年了,代码库之大让 Linus 很难继续通过手工方式管理了,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码,BitKeeper 的东家 BitMover 公司也免费授权 Linux 社区使用这个版本控制系统。后来 BitMover 公司发现社区有人试图破解 BitKeeper 的协议,于是 BitMover 公司收了回 Linux 社区的免费使用权。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:速度简单的设计对非线性开发模式的强力支持(允许成千上万个并行开发的分支)完全分布式有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)于是,Linus 花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 Git!一个月之内,Linux 系统的源码已经由 Git 管理了!Git 的发展壮大自 2005 年诞生以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。Git 迅速成为最流行的分布式版本控制系统,尤其是 2008 年,GitHub 网站上线了,它为开源项目免费提供 Git 存储,无数开源项目开始迁移至 GitHub ,包括jQuery,PHP,Ruby等等。
文章
存储  ·  JavaScript  ·  Linux  ·  PHP  ·  开发工具  ·  数据库  ·  git  ·  开发者  ·  Ruby
2022-08-09
PHP等各方面进行优化的方法有哪些呀?
PHP等各方面进行优化的方法有哪些呀?
问答
PHP
2022-08-09
PHP具有什么特点啊?缺点又是什么呢?
PHP具有什么特点啊?缺点又是什么呢?
问答
PHP
2022-08-09
开发环境中使用Maven|学习笔记
开发者学堂课程【项目管理工具Maven学习:开发环境中使用Maven】学习笔记,与课程紧密联系,让用户快速学习知识。课程地址:https://developer.aliyun.com/learning/course/23目录:一、仓库二、Eclipse 一、仓库1、坐标关于坐标,首先会想到平面几何,x,y!!任何一个坐标都能够唯一标识该平面中的一点。在实际生活中,将地址看成是一个坐标。省,市,县,街道,门牌号等等。Maven的世界中拥有数量巨大的构件,也就是平时用的一些jar,war等文件。如果没有Maven我们只能去各个官方网站查找下载,去本地搜索,论坛上发帖询问。想要找一个jar包,大量的时间花费在搜索,浏览网页等工作上面。因为没有统一的规范,所以无法自动化处理。现在,Maven定义了这样一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven坐标元素包括: groupld 、artifactld、version、packaing.classifier.Maven提供了一个中央仓库。该中央仓库包含了世界上大部分流行的开源项目构件。在开发自己的项目的时候,也需要为其定义适当的坐标,这是Maven强制要求的,在这个基础上,其他Maven项目才能引用该项目生成的构件。2、坐标详解Maven坐标为各种组件引入了秩序,任何一个组件都必须明确定义自己的坐标。Groupld:定义当前Maven项目隶属的实际项目。由于Maven中模块的概念,因此一个实际项目往往会被划分为很多模块。比如spring是一个实际项目,其对应的Maven 模块会有很多,如spring-core,spring-webmvc 等。groupId:的表示方法与java包名的表示方法类似,通常与域名反向一一对应。ArtifactId:该元素定义实际项目中的一个Maven模块,推荐的做法是使用实际项目名称作为atifactId的前缀。比如: spring-bean。Version:该元素定义Maven项目当前所处的版本。Packaging:该元素定义Maven项目的打包方式。首先,打包方式通常与所生成构件的文件扩展名对应。Maven默认的打包方式是jat。也可以是war,ear,可执行的jar。Classifier:该元素用来帮助定义构建输出的一些附属构件。比如javadoc和sourcesjar。这是java文档和源代码。3、仓库的概念●当第一次运行Maven命令的时候,你需要Intenet链接,因为它需要从网上下载一些文件。那么它从哪里下载呢?它是从Maven默认的远程库下载的。 这个远程仓库由Maven 的核心插件和可供下载的jar文件。●对于Maven来说,仓库只分为两类:本地仓库和远程仓库。当Maven根据坐标寻找构件的时候,它首先会查看本地仓库,如果本地仓库存在,则直接使用;如果本地没有,Maven就会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。如果本地仓库和远程仓库都没有,Maven就会报错。●提示:远程仓库分为三种:中央仓库,私服,其他公共库。 中央仓库是默认配置下,Maven下载jar包的地方。 ◆私服是另一种特殊的远程仓库,为了节省带宽和时间,应该在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。内部的项目还能部署到私服上供其他项目使用。●私服可以通过nexus来搭建Maven。●为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。①首先确定环境安装好maven,jdk等必负的环境②这些都准备好之后,去下载最新版本的nexus下载地址:http://www.sonatype.org/nexus/go本地安装的是nexus-22-01-bundle,最新的版本是nexus-2.4.0-09-bundle③打开目录nexus-2.4.0-09-bundlenexus-24.0-09\binsw这个目录下面你会发现有很多系统版本的nexus环增。二、EclipseEclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将Eclipse 当作Java 集成开发环境(IDE)来使用,但Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse 的软件开发人员,因为它允许他们构建与Eclipse 环境无缝集成的工具。由于Eclipse 中的每样东西都是插件,对于给Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管Eclipse 是使用Java语言开发的,但它的用途并不限于Java 语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse 的应用程序的一个突出例子是IBM Rational Software Architect,它构成了 IBMJava 开发工具系列的基础。
文章
IDE  ·  Java  ·  Go  ·  PHP  ·  Maven  ·  开发工具  ·  Android开发  ·  C++  ·  开发者  ·  Spring
2022-08-09
1 2 3 4 5 6 7 8 9
...
20
跳转至:
阿里云云原生
7302 人关注 | 3947 讨论 | 1647 内容
+ 订阅
  • RocketMQ 消息集成:多类型业务消息——定时消息
  • MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先
  • 欢迎参加 ApacheCon Asia 2022 在线会议
查看更多 >
开发与运维
5307 人关注 | 127334 讨论 | 211999 内容
+ 订阅
  • ECS服务器初体验
  • 我的ECS使用体验
  • 利用阿里云学生服务器创建QQ机器人
查看更多 >
数据库
249909 人关注 | 45689 讨论 | 67075 内容
+ 订阅
  • ECS服务器初体验
  • 我的ECS使用体验
  • 云服务器ESC使用体验
查看更多 >
云计算
21638 人关注 | 58090 讨论 | 41830 内容
+ 订阅
  • ECS服务器初体验
  • 我的ECS使用体验
  • 云服务器ESC使用体验
查看更多 >
大数据
185105 人关注 | 24526 讨论 | 59592 内容
+ 订阅
  • HADOOP学习笔记之HDFS
  • MySQL 03 基础之函数和约束
  • Springboot+dubbo+zookeeper项目集成的使用
查看更多 >