hadoop docker安装部署 前置条件1.jdk镜像2.hadoop安装包解压安装包tar -zxvf cenos-6.5-hadoop-2.6.4.tar.gz -C /usr/localcd /usr/localmv hadoop-2.6.4 hadoop修改配置文件:cd hadoop/etc/hadoop1.首先修改hadoop-env.shvim hadoop-
docker kafka集群安装部署 安装包下载http://kafka.apache.org/downloads.html前置准备jdk镜像kafka安装包解压tar -zxvf kafka_2.10-0.8.2.1.tgz -C /usr/localmv kafka_2.10-0.8.2.1 kafkacd /usr/local/kafka/config修改配置文件:cp
zookeeper概念和部署 1.Zookeeper概念简介Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务A、zookeeper是为别的分布式程序服务的B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……D、虽然说可以提供
docker创建ssh镜像并分配固定ip 最近做一个大数据项目,由于服务器数量问题,使用docker进行开发。所以首先需要创建一个可以ssh进入的服务器,并为容器分配固定ip。1.为容器分配固定ipcentOs安装docker:yum install docker安装centOs镜像:docker pull hub.c.163.com/public/centos:6.7-toolsps:如果
Java 并发工具包 java.util.concurrent 用户指南 译序本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html。本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf[带书签] 进行下载。1. java.util.c
Java ConcurrentModificationException异常原因和解决方法 Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.ConcurrentModific
JAVA多线程——线程安全之原子性,有序性和可见性 对于Java并发编程,一般来说有以下的关注点:1.线程安全性,正确性。2.线程的活跃性(死锁,活锁)3.性能其中线程的安全性问题是首要解决的问题,线程不安全,运行出来的结果和预期不一致,那就连基本要求都没达到了。保证线程的安全性问题,本质上就是保证线程同步,实际上就是线程之间的通信问题。我们知道,在操作系统中线程通信有以下几种方式:1.信号量 2.信号
JAVA多线程1 提到多线程,那么不可避免的就会提到进程和线程。我们回顾一下进程和线程的概念:进程:进程是资源分配的最小单位,是程序的运行实体,是正在运行的程序。线程:线程是CPU调度的最小单位,线程们共享所属进程的资源。那么为什么会有线程呢?线程有什么优势呢?首先是为什么会有线程呢?这是因为某些聪明的人,为了让执行速度更快,而创建的线程。我们知道,在最初,为了达到交互的
Hive安装 Hive安装。Hive是基于hadoop的,如果没安装hadoop的小伙伴请先去安装hadoop。Hive安装非常简单,分成三种模式。1.嵌入模式2.伪分布模式。3.完全分布模式。首先,无论哪个模式,都需要先下载Hive安装包。直接去官网https://hive.apache.org/下载一个和你的hadoop版本契合的hive版本即可。这里我使用已经编译好的bin
Hive基础使用 Hive启动方式:1.CLI界面:使用hive命令或hive --service cli即可进入hive cli。2.远程服务:使用hive --service hiveserver &方式启动远程服务,这样就可以使用jdbc或thrift客户端调用hive数据仓库。Hive数据类型我们可以在官网的hive wiki中查看到所有的数据类型。Hive wiki
Hive 介绍 Hive是什么?Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Hive是一个数据仓库,那么Hive和传统意义上的数据库有什么不一样的呢?1.hive和关系数据库存储文件的系统不同,hive使用的是hadoop的H
算法——图之加权有向图 这篇讨论加权有向图。加权有向图是在有向图的基础上,边的赋予权重信息的。加权有向图有很多应用。最典型的就是最短路径问题。我们日常生活中也经常遇到这种问题,例如从一个点出发,到达另外一个点,怎么过去才是最快的等等。而由于图的复杂性,最短路径问题并不十分的容易。例如,给定图的边的权重可能是负权重等。为了解决最短路径问题,我们首先要定义一种加权有向图的数据结构,良好的数据结构是成功
算法——图之加权图 加权图这里指无向加权图。加权图是一种为每条边关联一个权值或成本的图模型。也就是在无向图的基础上,每条边加上权值。加权图有很多应用,例如航空图中,边表示航线,权值表示距离或是费用。还能表示电路图,边表示导线,权值表示导线长度或是成本等等。在这些情形下,我们最感兴趣的当然是成本最小化,也就是最小生成树问题。最小生成树一副加权无向图的最小生成树(MST)是一棵权值之和最小的生
算法——图之有向图 我们主要讨论一下方面:1.有向图的表示有向图的可达性有向图的路径2.判断有向图中是否有环拓扑排序,优先级限制下的调度问题3.有向图的强连通性有向图的可达性有向图的表示和无向图中的一样,我们也采用邻接表矩阵的方式来表示有向图。只需要修改addEdge方法,只增加一条边,而不是增加双向边就可以了。public class DiGraph
算法——图之无向图 图的概念图是算法中是树的拓展,树是从上向下的数据结构,结点都有一个父结点(根结点除外),从上向下排列。而图没有了父子结点的概念,图中的结点都是平等关系,结果更加复杂。图的分类图可以分为无向图(简单连接),有向图(连接有方向),加权图(连接带权值),加权有向图(连接既有方向又有权值)。这篇讨论无向图。无向图的表示方法:1.邻接矩阵2.边的数组3.邻接表
算法——查找之散列表 前面我们了解二叉树查找,虽然二叉树的查找已经很快了,但是仍然需要O(logn)的时间复杂度。我们能不能更快呢?我们就想到了一个方法,如果我们能够把所有查找的键转化为一个唯一的数字,那么我们就可以采用数组的形式来存放键和值,那么存取的速度就会非常快了,时间复杂度是O(1)。如果没有内存限制,我们可以做一个超大的数组来存放,那么所有查找都只需要一次访问就可以得到了。但是显然,我们并没有这么大的
平衡二叉树之红黑树 前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)定义红黑树的主要是想对2-3查找树进行编码,尤其是对2-3查找树中的3-nodes节点添加额外的信息。红
平衡查找树之2-3树 本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-2-3-Search-Tree.html 前面介绍了二叉查找树(Binary Search Tree),他对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。本文及后面文章介绍的平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这
算法——查找之二叉查找树 我们之前了解了二分查找,对于二分查找,仅仅盯着查找的话,二分查找确实是不错的。但是如果我们需要查找的数组,会改变呢?如果数组会改变,例如会删除其中某个元素,增加某个元素等。删除的话,如果需要删除的元素在数组的前面,那删除以后元素的移动又是一个很大的开销了。增加元素,也就是插入元素,需要再进行一次排序,开销也并不小。所以能不能在保持查找效率的同时,数组的修改的开销也不大的方法呢?这就提到了二
算法——查找之二分查找 对于查找,我们最容易想到的就是遍历了,但是当数组很大的时候,遍历查找的开销是很大的,时间复杂度是O(n)。而二分查找的开销就小了很多,时间复杂度是O(logn)。但是它是有前提条件的,数组必须是有序的。我们知道排序的时间复杂度是O(nlogn)。乍一看下去,似乎排序+二分查找的时间复杂度比顺序查找要大。但是我们排序是一次的,查找是多次的。例如查找n次的话顺序查找需要花费开销
算法——排序之堆排序 堆排序是一种基于堆的排序。要了解堆排序,首先我们要了解堆的特性。那么什么是堆呢?这里我们使用大顶堆,并且是二叉堆,且用数组实现的方式作为例子。在二叉堆的数组中,每个元素都要保证大于等于两个特定位置的元素,这里所说的特定位置,在树结构中就是它的子节点。所有节点都要满足上面所说的情况。如果我们画成二叉树的形式,我们就很容易理解了。可以看到,如果满足上面的特点的话,那么树的根节点
算法——排序之快速排序 快速排序可能是应用最为广泛的排序算法了。应用广泛的主要原因是因为它实现简单,并且在一般应用中比其他算法要快得多。并且它具有良好的特性,他的时间复杂度是O(nlogn)。空间复杂度是O(1),也就是它可以进行原地排序,他只有递归调用产生的空间。原理:快速排序是一种分治的排序算法。他根据一个标杆元素,将一个数组分成两个部分,使得左边的部分的元素小于等于标杆元素,而右边的部分大于标杆元素。然后在
算法——排序之归并排序 归并排序首先将数组分成两个(或两个以上)部分,分别进行排序,然后将这些有序的子数组归并起来。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子数组合并,得到完全有序的数组;即先使每个子数组有序,再使子数组间有序。归并排序最吸引人的是它能够保证任意长度为N的数组排序的时间和NlogN成正比。缺点是他需要的额外的空间也和N成正比。
分布式事务——单机事务拾遗 要了解分布式事务,首先要了解单机事务。要了解单机事务,首先则要了解事务的概念。事务任何一个对数据库的操作都是一个事务单元,也可以是多个对数据库的操作的集合。尽管看起来计算机可以并行处理很多事情,但实际上每个CPU单位时间内只能做一件事,要么读取数据、要么计算数据、要么写入数据,所有的任务都可以看成这三件事的集合。计算机的这种特性引出了一个问题:当多个人去读、算、写操作时,如果不
Spring Data Spring Data是什么Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。使用spring data可以简单的通过配置就达到切换数据库的目的,给我们一种通用的编码模式统一接口Spring Data JPA开发环境搭建Spring Data JPA快速起步开发环
Linux——系统管理 进程管理首先我们要知道进程管理的目的:1.判断服务器的健康状况2.查看进程状态3.杀死进程当然杀死进程不是一个正常操作,不像在windows中打开任务管理器随便kill掉,杀死进程一般不是一个正常的退出方式,可能会导致某些问题。我们按照顺序来说,如何查看进程的健康状态呢?使用top命令:top - 13:55:33 up 3 min, 2 users,
Hadoop大数据平台入门——第一个小程序WordCount 首先我们需要安装Hadoop,并对Hadoop进行配置。这里我们就不赘述了,详情看这篇博客:Hadoop安装配置值得注意的是,配置的时候,需要给Hadoop权限才能正确执行。最简单的办法就是讲hadoop以及其目录下所有文件都归在一个组中。chown -R hadoop:hadoop hadoop文件夹就可以了。配置完成之后,我们我们还需要什么?1.需要在HDFS
Hadoop大数据平台入门——HDFS和MapReduce 随着硬件水平的不断提高,需要处理数据的大小也越来越大。大家都知道,现在大数据有多火爆,都认为21世纪是大数据的世纪。当然我也想打上时代的便车。所以今天来学习一下大数据存储和处理。随着数据的不断变大,数据的处理就出现了瓶颈:存储容量,读写速率,计算效率等等。google不愧是走在世界前列的大公司,为了处理大数据,google提出了大数据技术,MapReduce,BigTable和GFS。
Linux——软件安装 Linux下的软件安装对于初学者来说非常糊涂和混乱,并不像windows操作系统一样简单易懂,要想灵活的使用Linux系统,掌握软件安装方法必不可少。软件安装的方法:(redhat系列,如果的debian则使用dpkg和apt-get)1.rpm安装 2.yum在线安装3.源码包安装 4.脚本安装。安装的软件包,也就是安装包分为下面两类:1.源码包(tar.gz
Linux——Shell编程 Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。Shell脚本可以让我们管理Linux操作系统变得更加方便,自动化。学会Shell编程可以让我们对Linux理解更加深入。目前发行版一般使用的Shell是Bash。
Linux权限管理——基本权限 修改权限命令chmodchmod [选项] 模式 文件名选项:-R递归修改权限模式:模式分为两类:1.ugoa字母依次代表所属人,所属组,其他人和所有人(全部人)。在这个模式下,使用+-增加或者删除某个权限即可。例如:chmod u+x 文件名意思即为所属人增加执行权限。这种模式使用的并不常见,需要事先知道文件的权限。2.421模式意思即为用数
Linux用户与用户组 Linux不同于windows,windows可以说基本是个人用户,而对于Linux确不是这样的。Linux是多用户多任务的分时系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。多用户的设定让用户管理变得十分重要。linux下用户的角色分类在linux下用户是根据角色定义的,具体分为三种角色:1. 超级用户:
Linux磁盘管理 要进行磁盘管理,首先我们需要知道磁盘的基本使用状况,使用了多少,还剩多少等等。df命令可以帮助我们看到它。查看磁盘分区使用状况df [选项] [文件]显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示。选项:-a 全部文件系统列表-h 方便阅读方式显示-H 等于“-h”,但是计算
Linux入门6(手记)——用户登录查看与退出 用户登录查看w查看目前登入系统的用户有那些人,以及他们正在执行的程序。[root@localhost /]# w 12:31:16 up 2:46, 2 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot
Linux入门5(手记)——挂载 mount查看系统中已经挂载的设备。可以看到许多已经挂载了的设备,这是根据系统的自动挂载文件进行挂载的。自动挂载文件:/etc/fstab[root@localhost etc]# cat /etc/fstab ## /etc/fstab# Created by anaconda on Tue Apr 25 11:11:31 2017## Accessible file
Linux入门3(手记) Linux搜索命令:文件搜索命令:locatelocate 文件名注意:在后台数据库中按文件名搜索,搜索速度很快(比find命令要快得多)locate命令所搜索的后台数据库的位置:/var/bin/mlocate支持模糊搜索后台数据库一天一更,所以新建的文件无法找到。强制更新数据库:updatedb文件搜索的筛选规则:配置文件位置:/etc/updatedb
Linux入门2(手记) 首先要了解命令行提示符的信息:1.root:当前登录账户。2.@localhost主机名3.~当前目录,~表示当前用户的家目录。root为/root。如果是普通用户,例如user1,则是/home/user1。4.#超级用户的标志,如果是普通用户,则是$。用来区分是否是超级用户一般命令的格式:命令 [选项] [参数]当存在多个选项时,可以将多个选项写在一起。
Linux入门1(手记) Linux版本分类:1.内核版核心版本序号由三部分数字组成,形式为major.minor.patchlevel。其中major为主版本号,minor为次版本号,二者构成核心版本号,patchlevel表示对该版本的修订次数。 根据约定,minor为奇数的表示是测试版本,为偶数的表示是稳定版本。内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备
windows ubuntu 双系统 在服务器中基本都是Linux操作系统,既然决定做后端开发,那么Linux就是不可避免的需要了解和学习的。所以博主这里在笔记本中安装双系统,原window8系统,安装Ubuntu。下面是别人的博客的内容:内容挺不错的,简单易懂,不过有的地方确实是麻烦且不通用。原博客地址:http://www.jianshu.com/p/2eebd6ad284d这里主要对里面的一部分内容进行修改。安装方式U
使用Spring Session redis进行Session共享 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。session的处理有很多种方法,详情见转载的上篇博客:集群/分布式环境下5种session处理策略在这里我们讨论其中的第三种方法:session共享。redis集群做主从复制,利用redis数据库的最终一致性,将session信息存入redis中。当应用服务器发现session不在本机内存的
集群/分布式环境下5种session处理策略 前言在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第二次发送请求时,Nginx将其负载均衡到B服务器,而这时候B服务器并不存在Session,所以就会将用户
Redis集群——一主多从配置 在上一篇博客中,讨论了如何在Spring Boot中使用Redis实现缓存。但是数据库显然单点是不够的,那么如何用redis数据库做缓存集群呢?我们今天就来研究一下。Redis 支持 Master-Slave(主从)模式,Redis Server 可以设置为另一个 Redis Server 的主机(从机),从机定期从主机拿数据。特殊的,一个从机同样可以设置为一个 Redis Ser
Spring Boot——缓存支持2(Redis) EhCache能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然需要一定的时间,短暂的缓存不一致依然存在。在高一致性数据库中,使用redis作为缓存数据库是一个不错的选择。EhCache和Redis的区别:
Spring Boot——缓存支持1(EhCache) 随着用户的不断增加,数据库的查询操作往往会成为影响用户体验的瓶颈。而对于一个web应用,绝大多数的数据库操作都是查询操作,对于查询操作的优化就变得非常重要了。假设A对这个数据进行查询进行了数据库操作,下一秒B也对同样的数据进行查询操作,如果对于B的操作也进行实质的数据库操作,就显得浪费了。并且在负载均衡之后,数据库访问就成为了web最重要的瓶颈。解决方案呢?按数据的活动周期,把数据
Spring Cloud——断路器监控Hystrix Dashboard&Turbine 在前文谈论过,服务客户端的负载均衡中,为了保证高可用的特性,我们使用了断路器Hystrix。回顾一下,Hystrix做了什么事情呢?在标注了HystrixCommand注解的方法中,如果该方法执行的过程中抛出了异常,并且该异常不在ignoreExceptions中,那么就会执行fallback方法。在执行方法的过程中,Hystrix还会采集每一个HystrixCommand的信息指标,
Spring Cloud刷新配置中心配置——消息总线RabbitMQ 在http://blog.csdn.net/a60782885/article/details/69415527的最后,我们提到了配置的刷新,但是这显然是麻烦的,如果多个服务使用了这个配置,当我们修改配置信息的时候,如果我们希望服务的配置也跟着修改,我们就不得不一个一个服务的发送POST请求,或者关闭服务重新打开。这是一件多麻烦的事情。所以我们在这里使用消息中间件来完成配置的更新问题。
Spring Cloud Eureka——注册中心集群 前面我们介绍了Spring Cloud Eureka的简单使用。但前面的例子中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境。服务注册中心是服务的中心位置,如果服务注册中心崩了,显然是灾难性的,不符合微服务架构的高可用性特点。那么如何搭建高可用的服务注册中心集群呢?我们可以通过Eureka Server互相注册的方式来实现高可用的部署。所以我们仅仅需要在配置文
JavaMail实现简单邮箱验证——163邮箱 最近的项目中遇到了这个问题,之前也并没有使用过JavaMail来实现邮箱验证,今天就来试一试。需求:当用户注册的时候,注册成功,向用户邮箱发送一个激活邮件,用户激活之后修改数据库中的状态,变为已激活。当用户填写信息,点击注册的时候,入如果注册成功,则发送邮件。@PostMapping(value="doRegister")public @ResponseB
Spring boot转docker&docker简单使用和管理 我们前面学习了使用了Spring Boot,又发现了docker是如此的适合于微服务。那我们如何把Spring boot项目打包成docker镜像呢?首先需要一个Spring boot项目。打开命令行窗口,进入项目目录下,使用mvn package命令打包项目成jar包。打包成功之后,可以在target目录下看到我们的项目jar包。我们通过将jar打包成docker
Docker与微服务 转载自:http://www.cnblogs.com/luzizhuo/p/4974254.html微服务架构日益成熟,不但得到了初创公司和创新型公司的认可,一些传统企业也在逐步接受微服务架构。我们仍然在学习如何利用其在扩展性,易于维护和构建等方面的优势。当然我们也必须承担微服务增加的成本,比如从SOA架构的迁移,编排,备份,以及对技能提升的需求等等。 一个典型的微服务架构可能是这样的:![微
Spring Cloud入门3——API Gateway 为什么要使用API Gateway如果客户端直接调用微服务的话可能会存在以下问题:1. 移动客户端或者web客户端调用的微服务数量可能非常多。例如,亚马逊的产品最终页要请求数百个微服务。虽然一个客户端可以通过LAN发起很多个请求,但是在公网上这样会很没有效率,这个问题在移动互联网上尤为突出。这个方案同时会导致客户端代码非常复杂。2. 微服务的协议可能并不是web友好型。一个服务可能是用
Spring Cloud入门2——配置中心Config Spring Cloud Config配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。也就是说,我们可以使用Spring Cloud Config来获取远程服务器上的配置信息。可以分为两个部分:服务端: 配置服务端,服务管理配置信息客户端:客户端调用server端暴露接口获取配置信息
Spring Cloud入门1——Eureka&Ribbon&Hystrix 上篇中,主要了解了Spring Cloud的一些简单组件以及他们的功能。现在动手简单的使用一下Spring Cloud的一些组件。服务发现:(Eureka)前面提到,Eureka分为服务端和客户端,服务端是服务注册中心,而客户端是提供服务的。创建服务注册中心(服务端)首先在pom文件中加入以下依赖: org.springframework.boot sp
Spring Cloud简单介绍 以下是来自官方的一篇简单介绍: Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, int
微服务架构入门 微服务架构官方定义:The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightwei
Spring Boot入门4——统一异常处理 对于前面一篇所讲到的表单验证中提到,如果产生错误,可以得到错误的信息,但是返回值的问题却没有考虑。其中所提到的Controller:@RequestMapping(value = "/doRegister", method = RequestMethod.POST)public @ResponseBody User doRegister(@Valid User user, Binding
Spring Boot入门3——AOP处理请求 在Spring Boot中,如何用AOP实现拦截器呢?首先加入依赖关系: org.springframework.boot spring-boot-starter-aop希望截拦如下Controller:@RestControllerpublic class MyController { @RequestMapping(value="/hello", metho
Spring Boot入门2——表单验证 表单验证,即校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。Spring boot是如何帮我们实现表单验证的呢?假设现在我们存在这么一个注册界面: hello spring boot 姓名: 密码: 提交 需要验证提交上
Spring Boot入门1——简单例子&属性配置 Spring BootSpring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题---习惯大于约定。HelloWorld首先在Eclipse上安装STS插件安装完成之后新建Spring项目。选择Spri
Spring入门6——hibernate HibernateHibernate是一款开源的ORM框架,对JDBC进行了非常轻量级的对象封装。ORMORM(Object Relational Mapping)对象关系映射。避免了我们在使用数据库的过程中,频繁的编写SQL语句,和OOP的思想更加的切合,大大的简化了我们对数据库的操作。为什么要使用ORM框架优点:1.不同的数据库的SQL语句是存在差别的。
Spring JdbcTemplate详解 JdbcTemplate简介 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。 JdbcTemplate位于中。其全限定命名为org.springframework.jdbc.core.JdbcTemplate。要使用JdbcTemlate还需一个这个包包含了一下事务和异常控制 Jdbc
Spring入门5——事务管理 事务:事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务具有四个特性:原子性(atomicity), 一致性(consistency), 隔离性(isolation)和持久性(durability)。 原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行。一致性 事务的执行使得数据库从一种正确状态转换成另一种正确状态。
Spring MVC——拦截器(Interceptor) 在Spirng MVC中,拦截器Interceptor是十分重要也相当常用的。它可以拦截用户的请求并在其前后进行相应的处理,从而使业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发的效率。Spring MVC拦截器一般在需要统一进行处理的时候进行使用。举几个例子:1.日志记录 2.权限检查 3.编码修改等等。看到这里,是不是觉得很熟悉呢?Sp
Spring MVC入门3——返回JSON或XML等多种视图 上一篇的例子返回的都是HTML的页面,是为人进行服务的页面,供人进行阅读的。如果我们希望将Web作为一种服务,返回数据为机器服务,例如返回JSON,XML等,我们应该如何实现呢?很显然,根据MVC的思想,以及Spirng MVC的架构设计,我们很容易就能想到,只需要修改对应的ViewResolver,让其不选择jsp或者html以及别的模版,而是选择渲染成JSON,XML就可以了。
Spring MVC入门2——一个简单例子 一个简单的Web网站搭建:开发工具:eclipse运行环境:jetty依赖管理工具:maven首先创建一个maven项目:选择webapp。填写好之后finish即可。打开pom文件。加入spring-mvc的依赖。我们使用spring mvc当然要加入相应的依赖了 org.springframework spring-webmv
Spring MVC入门1 Spring MVC是什么?我们都知道,MVC是一种Web通用架构方式。而Spring MVC是一种基于Java, 实现了MVC设计模式的请求驱动类型的轻量级Web框架。也就是说,Spring MVC使用了MVC架构的思想,将Web层分离开来。而框架则可以很好的帮助我们简化我们的开发,使我们将注意力集中在业务逻辑开发当中。为什么要使用Spring MVC?Spring MVC的
Spring入门4——AOP AOPAOP(Aspect Oriented Programming),即面向切面编程。面向切面是什么意思呢?首先我们看一张图。在OOP中,允许开发者定义横向的层次,例如图中的CourseService等。但是不允许开发者定义纵向的关系,例如日志功能。日志功能往往是散布在所有的对象层次当中。而AOP就是实现纵向功能的一种技术。AOP将影响多个类的公共行为封装到一个可重用
Spring入门3——注解篇 Spring2.5之后,引入了大量的注解,现在到现在位置已经可以使用注解来完成大部分的XML配置功能。因为注解和Java代码是在同一文件中的,但是XML配置采用的是独立的配置文件,如果使用XML配置文件,程序员在开发的时候,往往需要在代码和配置文件中不停的切换,这样会影响开发效率。相对来说使用注解的方式,更易于阅读,而不是全部配置文件堆成一大片。但是XML也并不是完全没有优势,
Spring入门2——XML篇 一般来说,业务逻辑是分层的假设我们现在有服务层和持久层。持久层IDao和实现类DaoImpl:public interface IDao { public void save(String data);}public class DaoImpl implements IDao { public void save(String data) { System.out.pr
Spring入门1 首先我们要明白,什么是Spring?Spring Framework(简称Spring)是J2EE应用程序框架,不过更严格地讲它是针对Bean的生命周期进行管理的轻量级容器,它是一个开源的控制反转和面向切面的容器框架,主要目的是简化企业开发。那什么是框架?什么是控制反转和面向切面呢?
JAVA——反射(Reflect) 什么是反射:In computer science, reflection is the ability of a computer program to examine, introspect, and modify its own structure and behavior at runtime.(From wikipedia)也就是说,反射是计算机程序在运行时刻能够获取自身信息
JAVA——注解详解 注解(Annotation)概念:Java提供的一种原程序中元素关联任何信息和任何元数据的途径和方法。常见的注解有哪些呢?JDK中的注解,例如:@Overrid, @Deprecated, @SuppressWarnings等。第三方注解,例如Spring中的@Autowired, @Service, @Repository, @Table等。注解的分类:
Unity3D学习1——鼠标点击效果显示 在很多游戏当中,像梦幻西游等等游戏都会采用鼠标控制人物行走的方式。今天我们就来实现鼠标点击产生行走的标记的这么一个效果。首先我们上设计的梗概。实现点击效果。1.首先点击需要地面, 并把地面的tag 设为“Finish”2.点击地面后,出现一个圆形攻击标记,两秒后自动消失。注意:该攻击标记不能挡住点击。3.使用一个简单工厂创建、管理这些的标记,并自动收回这些标