Spring Web MVC 框架
Spring Web MVC 框架Spring MVC 框架,这个框架适用于 Web 开发的,它代替了 servlet 的页面跳转。
本篇是对 Spring MVC 框架的一个简单讲解,不会讲理论只是,如果想进一步学习的话,可以看 Spring MVC 简易教程
知识点
Spring Web Hello World 例子
Spring MVC 表单处理例子
Spring MVC 页面重定向例子
Spring MVC 异常处理例子
Spring Web Hello World 例子首先创建一个新的项目
1mvn archetype:generate -DgroupId=com.learn-DartifactId=springMVCTest -DarchetypeArtifactId=maven-archetype-webapp
修改 pom.xml 文件,添加 Spring 的依赖:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 ...
Spring 事务管理
Spring 事务管理Spring 的事务管理,事务在日常开发中非常重要,它可以对数据库中的一些异常进行回滚,这样就可以保证数据的一致性。
事务的四个特性:
原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。
隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。
知识点
Spring 编程式事务管理
Spring 申明式事务管理
Spring 事务Spring 中有两种事务管理的方式,一种是编程式事务管理,另一种是声明式事务管理。
编程式事务管理:所谓编程式事务指的是通过编码方式实现事务,允许用户在代码中精确定 ...
Spring JDBC Template
Spring JDBC TemplateSpring 框架中的 JDBC Template,有了 JDBC Template 就不需要自己再手动书写很长的 JDBC 代码来访问数据库了。
知识点
Spring JDBC Template 增
Spring JDBC Template 删
Spring JDBC Template 改
Spring JDBC Template 查
Spring JDBC 框架
Spring 框架核心的思想就是建立一个 Java 对象的大工厂,用户只要给工厂一个指令,工厂就能将用户需要的对象根据配置文件组装好返还给用户。用户需要做的许多工作则可以写成简单的配置文件。传统的使用 JDBC 的方法,有时候需要组合复杂的的 SQL 语句,还需要去拼接,稍不注意空格、引号,都会导致错误。Spring Jdbc Template 正是为了减少上述的麻烦而设计出来的。它是对 JDBC 的一种封装,抽象我们常用的一些方法。Simple and Stupid 就是它的目标。
Spring Jdbc Template 使用 Spring 的注入功能,可以把 DataSo ...
Spring IOC 容器
Spring IOC 容器理论基础IoC 是什么Ioc,Inversion of Control,即“控制反转”。它不是什么技术,而是一种设计思想。在 Java 开发中,Ioc 意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好 Ioc 呢?理解好 Ioc 的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:
谁控制谁,控制什么:传统 Java SE 程序设计,我们直接在对象内部通过 new 进行创建对象,是程序主动去创建依赖对象;而 IoC 是有专门一个容器来创建这些对象,即由 IoC 容器来控制对象的创建;谁控制谁?当然是 IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象,还包括文件等)。
为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取 ...
Spring Aop
Spring Aop知识点
AOP(面向切面编程)
AOP 通知 —— Advice
Pointcut
Advisor
自动创建 Proxy
AspectJ 框架
Spring AOP 即 Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题。简单地说,就是一个拦截器(interceptor)拦截一些处理过程。
例如,当一个 method 被执行,Spring AOP 能够劫持正在运行的 method,在 method 执行前或者后加入一些额外的功能。
在 Spring AOP 中,支持 4 种类型的通知(Advice):
Before advice - method 执行前通知。
After returning advice - method 返回一个结果后通知。
After throwing advice - method 抛出异常后通知。
Around advice - 环绕通知,结合了以上三种。
一个 Spring AOP 的实例下边这个例子解释 Spring ...
pcntl 多进程扩展探寻
php 实现 并发-进程控制 pcntlPCNTL 是 PHP 中的一组进程控制函数,可以用来 fork(创建)进程,传输控制信号等。
在PHP中,进程控制支持默认关闭。编译时通过 –enable-pcntl 配置选项可以使 PHP的 CGI 或 CLI 版本打开进程控制支持(但是注意不要在 web 服务器中用 PCNTL,会导致不可预料的问题)。仅 Unix 类系统支持 PCNTL 模块。
PCNTL 原理简单示例123456789101112131415<?php//在当前进程当前位置产生分支(子进程)$pid = pcntl_fork();//父进程和子进程都会执行下面代码if ($pid == -1) { //错误处理:创建子进程失败时返回-1. die('could not fork');} else if ($pid) { //父进程会得到子进程号,所以这里是父进程执行的逻辑 pcntl_wait($status); //等待子进程中断,防止子进程成为僵尸进程。} else ...
PHP文件上传源码分析(RFC1867)
PHP文件上传源码分析
@author 风雪之隅
本文地址: https://www.laruence.com/2009/09/26/1103.html
转载请注明出处
文件上传,一般分为俩种方式FTP和HTTP, 对于我们的互联网应用来说: FTP上传虽然传输稳定, 但是易用性和安全性都是个问题.你总不至于在用户要上传头像的时候告诉用户”请打开FTP客户端,上传文件到http://www.laruence.com/uploads/中, 并以2dk433423l.jpg命名”吧?而基于HTTP的上传,相对来说易用性和安全性上就比FTP要增强了很多.可以应用的上传方式有PUT, WEBDAV, 和RFC1867三种,本文将分析在PHP中,是如何基于RFC1867实现文件上传的.
RFC1867RCF1867是Form-based File Upload in HTML标准协议, RFC1867标准对HTML做出了两处修改:
121 为input元素的type属性增加了一个file选项。2 input标记可以具有accept属性,该属性能够指定可被上传的文件类型或文件格式列表。
...
curl上传文件$_FILES为空问题
php使用curl上传文件代码如下:
1234567891011121314151617<?php/* http://devtest.com/upload.php:print_r($_POST);print_r($_FILES);*/$ch = curl_init();$data = array('name' => 'Foo', 'file' => '@/home/vagrant/test.png');curl_setopt($ch, CURLOPT_URL, 'http://devtest.com/load_file.php');curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_exec($ch);?>
接收代码:
123<?phpprint_r($_POST);print_r($_FILES);
运行结果:
123456789php - ...
深入理解PHP原理之文件上传(风雪之隅)
深入理解PHP原理之文件上传
@author 风雪之隅
本文地址: https://www.laruence.com/2008/11/07/586.html
转载请注明出处
今天研究PHP注册POST/GET大变量的时候,看到了关于这块的一些东西,跟踪了半天,先记录下来,免得以后再如此麻烦的跟踪
处理器注册:
123456[mod_php5.c, mod_php5模块初始化] php_init_handler(server_rec *s, pool *p) ->[main/SAPI.c]sapi_startup(&apache_sapi_module) ->[main/SAPI.c] sapi_globals_ctor(&sapi_globals) ->[main/php_content_types.c]php_setup_sapi_content_types(TSRMLS_C) ->[main/php_content_types.c php_pos ...
Spring 松耦合
Spring 松耦合
在电脑运算和系统设计中,一个松耦合的系统中的每一个组件对其他独立组件的定义所知甚少或一无所知。子范围包括类、接口、数据和服务之间的耦合。 松耦合是紧耦合的对立面。
优点和缺点
优点
松耦合系统中的组件能够被提供相同服务的替代实现所替换。松耦合系统中的组件不太受相同的平台、语言、操作系统或构建环境的约束。
缺点
如果系统在时间上是解耦的,那么也很难提供事务完整性;需要额外的协调协议。跨系统的数据复制提供了松耦合性(可用性),但是造成了维护一致性(数据同步)的问题。
松耦合的目的上一部分,我们已经创建了 Maven 项目,打印出了 HelloShiyanlou。为了方便,我使用上面的工程,pom.xml 文件一致,不必修改。下面,我们实验证明 Spring 的松耦合。假设项目需要输出到 CSV 或者 JSON。
松耦合代码编写IOutputGenerator.java创建 com.study.demo.loosely_coupled 包,新建一个 IOutputGenerator 接口,接口内容如下:
12345package com.study.demo.l ...
Spring
Spring什么是 Spring ?
Spring 是一个容器,通过反转控制(IoC)和依赖注入(DI)来实现高内聚、低耦合的应用。除此之外它可以整合很多第三方框架,它还提供面向切面编程(AOP)的能力,对数据库事务的管理尤其方便
Spring 是什么?Spring 是一个开源的轻量级 Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成的。所以开发一个应用除了要开发业务逻辑之外,最多的是关注使这些对象协作来完成所需功能的同时,实现低耦合、高内聚。所以,业务逻辑开发是不可避免的。如果有个框架可以帮我们来创建对象及管理这些对象之间的依赖关系,能通过配置方式来创建对象,管理对象之间依赖关系,我们不需要通过工厂和生成器来创建及管理对象之间的依赖关系,这样我们必然会减少许多工作量,加快开发。Spring 框架问世之初主要就是来完成这个功能。
Spring 框架除了帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,可 ...
Java 文件操作
Java 文件操作
在平时编写程序的时候,经常会对文件进行操作,比如文件的赋值,重命名,删除等。接下来学习使用 Java 操作文件。
拷贝可以使用 Files 工具类的 copy(Path source,Path target,CopyOption… options) 拷贝文件或者目录。如果目标文件存在,那么赋值将失败,除非我们在 options 中指定了 REPLACE_EXISTING 属性。当该命令复制目录时,如果目录中已经有了文件,目录中的文件将不会被复制。CopyOption 参数支持以下 StandardCopyOption 和 LinkOption 枚举:
REPLACE_EXISTING:即使目标文件已存在,也执行复制。如果目标是符号链接,则复制链接本身(而不是链接的目标)。如果目标是非空目录,则复制将失败并显示 FileAlreadyExistsException 异常。
COPY_ATTRIBUTES:将与文件关联的文件属性复制到目标文件。支持的确切 - 文件属性是文件系统和平台相关的,但 last-modified-time 跨平台支持并复制到目标文件。 NO ...
java 泛型和集合
泛型和集合
泛型即参数化类型,也就是说数据类型变成了一个可变的参数,在不使用泛型的情况下,参数的数据类型都是写死了的,使用泛型之后,可以根据程序的需要进行改变。
定义泛型的规则:只能是引用类型,不能是简单数据类型。泛型参数可以有多个。可以用使用 extends 语句或者 super 语句 如 表示类型的上界,T 只能是 superClass 或其子类, 表示类型的下界,K 只能是 childClass 或其父类。可以是通配符类型,比如常见的 Class<?>。单独使用 ? 可以表示任意类型。也可以结合 extends 和 super 来进行限制。
接下来我们来定义一个泛型类,它有一个成员,成员的类型待定。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647/*使用T代表类型,无论何时都没有比这更具体的类型来区分它。如果有多个类型参数,我们可能使用字母表中T的临近的字母,比如S。*/class Test<T> { p ...
Java Throwable 抛出异常
Java 关于抛出异常
异常指不期而至的各种状况,它在程序运行的过程中发生。作为开发者,我们都希望自己写的代码永远都不会出现 bug,然而现实告诉我们并没有这样的情景。如果用户在程序的使用过程中因为一些原因造成他的数据丢失,这个用户就可能不会再使用该程序了。所以,对于程序的错误以及外部环境能够对用户造成的影响,我们应当及时报告并且以适当的方式来处理这个错误。
之所以要处理异常,也是为了增强程序的鲁棒性。
异常都是从 Throwable 类派生出来的,而 Throwable 类是直接从 Object 类继承而来。你可以在 Java SE 官方 API 文档中获取更多关于它们的知识。
异常分类异常通常有四类:
Error:系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理。
Exception:可以处理的异常。
RuntimeException:可以捕获,也可以不捕获的异常。
继承 Exception 的其他类:必须捕获,通常在 API 文档中会说明这些方法抛出哪些异常。
平时主要关注的异常是 Exception 下的异常,而 Exception 异常下又主要分为两大类异 ...
Hadoop 伪分布式配置部署
Hadoop 伪分布式配置部署
在阅读本章节之前,请确定你已经阅读过,Hadoop 单机版部署 并存在环境
Hadoop 伪分布式模式配置
再次提醒 当前环境 必须是 您在阅读 Hadoop 单机版部署 后部署的环境
修改 core-site.xml这里我们需要修改 core-site.xml, 使用下面的命令调用 Vim 编辑器来编辑文件。
123$ cd /home/hadoop/hdfs/etc/hadoop$vim ./core-site.xml
先说一下常用配置项:
fs.defaultFS
fs.defaultFS 是默认的HDFS 路径。 当有多个 HDFS 集群同时工作时,用户在这里指定默认HDFS 集群, 该值来自于 hdfs-site.xml 中的配置。
fs.default.name
fs.default.name 是一个描述集群中 NameNode 节点的 URI(包括协议、主机名称、端口号), 集群里面的每一台机器都需要知道 NameNode 的地址。 DataNode 节点会现在 NameNode 上注册, 这样他们的数据 ...