PHP基础 前言 发现PHP审计和利用的一些漏洞利用场景挺有意思的,来学习一下php基础内容,大部分概念和代码和Java或c++的差不多,挑些php独有的特性来做记录。...$GLOBALS $_SERVER $_REQUEST $_POST $_GET $_COOKIE $_FILES $_ENV $_SESSION $GLOBAL 是一个包含了全部变量的全局组合数组。...这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目; GET['subject'] . " at " . $_GET['web']; ?> 魔术变量 有八个魔术常量它们的值随着它们在代码中的位置改变而改变。...,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。
这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。 实例 以上实例输出结果为: 命名空间为:"MyProject" PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物...任何类的划分都是主观的,但必须与具体的应用有关。 封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。...构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。...主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用。
这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。...> 3.4 _POST和\_POST和_POST和 _GET 都是用于收集表单数据 POST的数据对任何人都不可见,URL地址栏看不到 GET的数据对任何人都可见,...7.1定义命名空间 将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。...任何类的划分都是主观的,但必须与具体的应用有关。 封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。...如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。 <?
反射的用途 可能有些人认为反射在工作中用的并不多,但其实并不是这样的,工作中处处都能见到反射的影子,比如工作中经常会通过对象 「.」...高维护: 反射代码难以理解和调试,并且在编译时无法发现代码的任何问题,因为类可能不可用,使其灵活性降低且难以维护。...泛型参数的返回顺序与声明的顺序相同。 TypeVariable<?...(null)); 如果字段是静态的,可以在 get() 方法中将 第一个Object参数传NULL值来调用。...可以使用getMethod()来获取类的公共方法,我们需要传递该方法的方法名和参数类型。如果在类中找不到该方法,反射 API 会在超类中查找该方法。
Java与C#的一些小区别 命名空间:在C#中命名空间+类名是类,在Java中命名空间+类名是命名空间,即,Java中会出现Import某一个类的完全限定名。...注:在C#中,图中的这些大类的结构,通常会搞一个类库项目来单独处理,因为在C#中共享使用一个启动项目的配置文件,并且C#的项目文件在VS中管理起来非常简单便捷,但Java的项目文件pom.xml并不是特别灵活...(在java中通常工具类命名会以util结尾,这里我保持c#的命名风格) 控制器 定义CommandController类,Get和Post两个函数,用于处理全部的Get和Post请求。...映射类 映射类,顾名思义,就是建立实体与数据库关系的类,在这里类中会指定实体类与数据库表的关系,和实体字段和表字段的关系(通常情况是同名映射)。...实例,然后下面就可以正常调用他下面的方法了。
Java中的反射 Java的反射是一种很强大的机制,在正常的编程中使用并不多,但它是java的主干,很多Java EE 框架均使用了反射技术: JUnit 利用反射技术解析@Test注解,从而得到测试的方法并调用它们...Eclipse 自动完成方法的名称输入 Struts Hibernate 以上这个清单只是小部分,它们全部使用了反射技术,因为正常情况下,它们无法访问用户编写的类、接口以及方法等。...但是我们不建议在正常编程中滥用反射技术,因为我们拥有自己编写的类的访问权限了,反射存在以下几个缺陷: 性能较差 尽管反射解决了动态类型的问题,但是也引入了在classpath 扫描类进行加载的过程,会影响性能...] 与方法相关的反射方法 使用反射技术可以获得方法的信息以及调用执行它。...如果class找不到指定的方法,则会继续向上从其父类中查找。 下面我们以一个获取HashMap 的put方法的例子来展示如何方法的参数类型、方法访问修饰符和返回类型。
引言 模板方法模式是一种行为设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现,以达到代码复用和减少重复代码的目的。...当我们使用模板方法模式时,我们可以将一些公共的算法步骤放在抽象基类中,这些步骤可以在多个子类中重复使用,从而减少了代码的重复性。...除此之外,模板方法模式还有以下优点: 将算法的骨架与具体实现分离,提高代码的可维护性和可扩展性; 通过封装算法,可以将算法的实现细节隐藏起来,提高代码的安全性; 可以通过模板方法模式实现“好莱坞原则”,...下面使用C#实现一个模板方法模式的示例: 定义抽象模板 定义一个抽象基类,其中包含一个模板方法和一些抽象方法,抽象方法用于延迟实现到子类中。...()"); } } 调用模板方法以执行算法,这将自动调用子类实现的抽象方法: AbstractClass abstractClass = new ConcreteClass(); abstractClass.TemplateMethod
模板方法模式(Template Method Pattern) 定义 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。...使用场景 算法骨架固定,实现细节不一样 主要角色 抽象类 一般方法,可在抽象类中实现,也可以在子类实现 基本方法:doSomething,doAnything 由子类实现的方法,并且在模板方法被调用...(); AbstractClass class2 = new ConcreteClass2(); //调用模板方法 class1.templateMethod...(); class2.templateMethod(); } } 工作中遇到场景 HttpServlet public abstract class SimpleHttpServlet...().equals("POST")) { doPost(req, resp); } // 其他 HTTP 方法的处理可以在这里扩展 }
Ocelot简易教程(四)之请求聚合以及服务发现 上篇文章给大家讲解了Ocelot的一些特性并对路由进行了详细的介绍,今天呢就大家一起来学习下Ocelot的请求聚合以及服务发现功能。...当然我们还需要设置UpstreamPathTemplate匹配上游的用户请求,它的工作方式与正常的ReRoute类似。...动态路由 作者的想法是在使用服务发现提供程序时启用动态路由。在此模式下,Ocelot将使用上游路径的第一个段来与服务发现提供程序一起查找下游服务。...Ocelot将正常向下游URL转发查询字符串。即query 要启用动态路由,您需要在配置中保留0个ReRoutes。目前您无法混合动态和配置ReRoutes。...https上调用Ocelot,但可以通过http与私有服务进行通信),这些将应用于所有动态ReRoutes。
定义 模板方法模(Template Method Pattern): 定义一个操作中算法的骨架,将这些步骤延迟到子类中。...C#例子 /// /// 模板 /// public abstract class AbstractClass {...ConcreteClass*:实现_count和_add以完成算法中与特定子类相关的内容。 模板方法模式适用情形: 一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。...各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 控制子类扩展。模板方法只允许在特定点进行扩展,而模板部分则是稳定的。...在具体实现方面,被TemplateMethod调用的虚方法可以具有实现,也可以没有任何实现(抽象方法或虚方法)。但一般推荐将它们设置为protected方法使得只有子类可以访问它们。
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。 在php中类是单一继承,即一个类只能继承一个父类。...2方法重写 子类在继承了父类后,可以重写父类的方法,即写一个与父类重名的方法将其覆盖。final修饰的类方法不可被子类重写。也可以使用parent::方法名()来调用父类的方法。 <?...xiaohuang"; } } $xiaohuang = new XiaoHuang(); $xiaohuang->name(); //输出 "i am xiaohuang" 3封装 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起...继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。...__get() 读取不可访问属性的值时,__get() 会被调用。 6. __set() 在给不可访问属性赋值时,__set() 会被调用。 7.
TCP服务端程序开发 网络开发注意点 socket中 send 与 recv原理剖析 HTTP协议 什么是URL HTTP请求报文 GET请求报文 POST请求报文 POST与GET之间的区别 HTTP...A:不是,要想发数据,必须得通过网卡发送数据,应用程序是无法直接通过网卡发送数据的,它需要调用操作系统接口,也就是说,应用程序把发送的数据先写入到发送缓冲区(内存中的一片空间),再由操作系统控制网卡把发送缓冲区的数据发送给服务端网卡...A:不是,应用软件是无法直接通过网卡接收数据的,它需要调用操作系统接口,由操作系统通过网卡接收数据,把接收的数据写入到接收缓冲区(内存中的一片空间),应用程序再从接收缓存区获取客户端发送的数据。...请求体 POST与GET之间的区别 一个HTTP请求报文可以由请求行、请求头、空行和请求体4个部分组成。...视觉通用的框架 2021年视觉项目中利用C#完成三菱PLC与上位机的通讯 VP联合开源深度学习编程(WPF) ✨有关C#项目欢迎各位查看个人主页✨ 机器视觉、深度学习
WebService 采用的的基本通信协议是SOAP ,它是在分散或分布式环境中交换信息,它基于XML的协议,通过SOAP协议可以实现不同项目、不同地点、甚至异地调用应用程序。...三、WebService技术调用原理图 ? WebService工作原理图一 ? WebService工作原理图二 3.1、Webservice是如何实现远程调用?...其实与手工创建添加引用步骤一样,只是在这里把手动变成了自动而已,动态生成代理类,利用反射动态调用了方法。详细请参考:[C#通过Dynamic动态调用WebService.pdf]文档。...4.2、C#通过模拟HTTP请求协议Get、POST方式进行调用WebService。...(根据个人项目情况使用) 详细请参考:[C#通过模拟HTTP请求协议Get、POST方式进行调用WebService.pdf]文档。 4.3、通过手动生成客户端WSDL代理类进行调用。
说人话:父类模板方法定义不变的流程,子类重写流程中的方法。...②、ConcreteClass 具体模板 实现父类定义的一个或多个抽象方法,也就是父类定义的基本方法在子类中得以实现。...5、模板模式缺点 ①、子类执行的结果影响了父类的结果,这和我们平时设计习惯颠倒了,在复杂项目中,会带来阅读上的难度。...②、可能引起子类泛滥和为了继承而继承的问题 6、回调 为了解决模板模式的缺点,我们可以利用回调函数代替子类继承。...类,无法被继承,不存在子类行为影响父类结果的问题,而Callback是一个接口,为了继承而继承的问题消失了。
由于这些方法是抽象方法,所以查看父类的代码是无法知道这些方法最终会如何进行处理的。 实现上述这些抽象方法的是子类,在子类中实现了抽象方法也就决定了具体的处理。不同的子类中实现不同的处理。...父类模板被调用程序的行为也会不同 像这样 **在父类定义处理流程的框架,在子类中实现具体的模式处理 **的模式称为: Template Method 模式 3.2 示例程序 示例程序的功能是:一段将字符...3.3.1 AbstractClass (抽象类) 负责实现模板的方法 声明模板方法中使用到的抽象方法 3.3.2 ConcreteClass (具体类) 实现 AbstractClass 的方法 示例中的...父类模板方法中编写了具体的算法 子类不要重新编写 父类与子类之间是协同的,父类的源码看不到的话,实现就会非常麻烦 父类与子类一致性,子类的实例都是保存在父类的变量中,然后调用 display() 方法,...因此父类无论保存哪个子类的实例,程序都可以正常工作。
模板模式的原理与实现 模板模式,全称是模板方法设计模式,英文是 Template Method Design Pattern。...这里的“算法”,我们可以理解为广义上的“业务逻辑”,并不特指数据结构和算法中的“算法”。这里的算法骨架就是“模板”,包含算法骨架的方法就是“模板方法”,这也是模板方法模式名字的由来。...不过,这些都不是必须的,在实际的项目开发中,模板模式的代码实现比较灵活,待会儿讲到应用场景的时候,我们会有具体的体现。...模板模式把一个算法中不变的流程抽象到父类的模板方法 templateMethod() 中,将可变的部分 method1()、method2() 留给子类 ContreteClass1 和 ContreteClass2...在 TestCase 类中,runBare() 函数是模板方法,它定义了执行测试用例的整体流程:先执行 setUp() 做些准备工作,然后执行 runTest() 运行真正的测试代码,最后执行 tearDown
实现时一般通过抽象类来定义一个逻辑模板和框架,然后将无法确定的部分抽象成抽象方法交由子类来实现,调用逻辑仍在抽象类中完成。...在项目实践过程,经常会将工厂模式、模板方法模式和策略模式一起结合使用。模板方法模式进行业务流程公共骨架的抽取,策略模式进行具体子流程策略的实现和调用的封装,而工厂模式可以进行子流程策略的创建。...3.2 运营活动执行 3.2.1 状态模式 具体场景 在运营活动的执行过程中,会涉及活动状态的变更,以及变更前的条件检测和变更后的操作处理。与之相对应地,我们很容易就会想到状态模式。...在业界的工作流引擎中,比较著名的有Activiti和JBPM等。...(关于状态机和工作流引擎的对比、开源工作流引擎的具体介绍和选型,以及如何自行开发构建一款基本的工作流引擎组件,同样是会在后续的文章中做进一步分析,本文由于主题和篇幅的原因暂不做详细介绍。)
原来,get请求的时候,默认是将参数全部放到了url里面直接以string的形式传递的,后台自然接不到了。 原因分析:还记得有面试题问过get和post请求的区别吗?...其中有一个区别就是get请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),而post请求则是放在http协议包的包体中。...(2)WebApi的方法名称不以get开头 我们把之前的方法名由GetByModel改成FindByModel,这个再正常不过了,很多人查询就不想用Get开头,还有直接用Query开头的。...1、基础类型参数 post请求的基础类型的参数和get请求有点不一样,我们知道get请求的参数是通过url来传递的,而post请求则是通过http的请求体中传过来的,WebApi的post请求也需要从...(2)实体和基础类型一起作为参数传递 有些时候,我们需要将基础类型和实体一起传递到后台,这个时候,我们神奇的dynamic又派上用场了。
最终类型擦除后的代码等同与如下: ? 类型擦除带来的缺陷 作为对比,我们再来简单聊下 C# 泛型的实现方式。...简单点来讲,C#实现的泛型,无论是在程序源码,还是在编译之后的,甚至是运行期间都是切实存在的。 相对比与 C# 泛型,Java 泛型看起来就像是个「伪」泛型。...后来,Java 核心开发团队对 Pizza 的泛型设计深感兴趣,与 Martin 合作,一起合作开发的一个新的项目「Generic Java」。...泛型移植过程,一开始并不是朝着类型擦除的方向前进,事实 Pizza 中泛型更加类似于 C# 中的泛型。...也就是说一个在 JDK1.2 编译出来 Class 文件,不仅能在 JDK 1.2 能正常运行,还得必须保证在后续 JDK,比如 JDK12 中也能保证正常的运行。
哎,找工作是老夫永远的痛!!! 废话不多说,最近整理了一些企业常问道的理论题目,如下: 1. C#中值类型和引用类型分别有哪些? ...C#也允许定义抽象类和密封类,以及两者的叠加——静态类,它们都无法实例化,其实这是编译器的限制,本质上它们和一般的类没有区别,是特殊情况 8. ...13. c#中值类型和引用类型的区别 1.值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。 ...5.B/S很难和本地硬件、程序、文件进行交互 16. post、get的区别 1.post的参数不会显示在浏览器地址栏中,get的参数会显示在浏览器地址栏中 2.用post可提交较大的数据量...,get提交的数据量则非常小(2k) 3.用post可进行文件的提交,而用get则不可以 17.
领取专属 10元无门槛券
手把手带您无忧上云