自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(105)
  • 收藏
  • 关注

原创 Mybatis——整合SpringMVC

之前我们在写mybatis-config.xml的时候是这么写的 <environments default="MyBatisLearning"> <environment id="MyBatisLearning"><!-- 配置当前环境的事务管理--> <transactionMan...

2020-03-23 17:20:15 435

原创 Mybatis——mapper代理

使用mapper代理的好处就是,当我们写了DAO后,Mybatis会自动帮我们自动实现实现类,不用我们再写DAOImpl。而我们要做的就是:编写DAO接口编写与DAO中方法相对应的mapper.xmlmapper.xml标签编写规则namespace为DAO接口的全类名id为DAO接口中对应方法的名字parameterType为DAO接口中对应方法的参数类型resultTyp...

2020-03-23 10:47:47 493

原创 MyBatis——初识MyBatis与原生接口使用

MyBatis就是一个ORM(Object Relation Mapping)框架。在以前我们可能会用Java自带的JDBC,可是JDBC代码太冗余了,MaBatis对JDBC做了一个封装,提高我们的效率。具体是怎么提高效率的呢?MyBatis将SQL写在XML文件中,将其与Java代码分离,降低了耦合度,提高开发效率。所以根据上述简单理解,MyBatis使我们的程序可以动态的编写XML文件,并...

2020-03-23 00:46:06 934

原创 SpringMVC——@RequestBody和@ResponseBody

@RequestBody@RequestBody用于接收前台传来的java对象,注意@RequestBody的元注解@Target(ElementType.PARAMETER),说明@RequestBody只用方法的对应形参上。原理是读取http的请求,通过内置的HttpMessageConverter将读取到的内容转为json等格式,然后再转为java对象绑定到对应参数上。简单而言,就是将j...

2020-03-17 23:35:36 436

原创 SpringMVC——Model和转发重定向

可以使用Model,Map,ModelMap,ModelAndView,四种方式都可以,一般使用Model,且数据保存在request域中,若想保存在session中,需要使用@SessionAttributes注解package com.song.controller;import org.springframework.stereotype.Controller;import org....

2020-03-15 23:07:12 1123

原创 JavaSE——Optional类的正确用法,终于搞定NPE问题!

最近真的被NPE问题烦死了,于是准备学习Optional大杀器解决这个问题!当我们有两个POJO并且有这样的关联时public class User{ private Address address;}class Address{ private String province;}我们可能有这样的代码if(user != null){ Address address = us...

2020-03-15 16:34:35 415

原创 SpringMVC——@PathVariable, @RequestParam, @RequestHeader, @CookieValue

@PathVariable将请求路径中的参数拿来当作方法的参数使用public class HelloController { @RequestMapping(value = "/{name}") public String hello(Model model, @PathVariable("name")String name){ System.out.prin...

2020-03-15 14:51:21 380

原创 SpringMVC——入门使用SpringMVC和@RequestMapping

初步使用首先我们在springmvc.xml中加入 <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <!--下面两个...

2020-03-15 02:38:32 441

原创 SpringMVC——初入SpringMVC

什么是MVCMVC就是M(model,模型),V(view,试图),C(controller,控制器)的缩写,是一种软件设计规范。就是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。​Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和...

2020-03-15 00:41:54 329 1

原创 Spring——Spring IOC容器初始化过程

Spring IOC容器的初始化简单的可以分为三个过程:第一个过程是Resource资源定位。这个Resouce指的是BeanDefinition的资源定位。这个过程就是容器找数据的过程,就像水桶装水需要先找到水一样。(将xml, db.properties等文件打包成一个BeanDefinition)第二个过程是BeanDefinition的载入过程。这个载入过程是把用户定义好的Bean表...

2020-03-11 00:19:59 855

原创 Spring——声明式事务

Spring的声明式事务使用起来比较简单,只要在方法的上方添加@Transactional注解,就将一个方法变成事务方法了。使用声明式事务,可以将事务管理代码从业务方法中抽离出来(也就是不用在方法里写commit和rollback),以声明的方式来实现事务管理。Spring的核心事务管理抽象是PlatformTransactionManager,要想使用声明式事务,必须先在xml中先将其声明为b...

2020-03-08 20:40:07 446

原创 Zookeeper——Observer,Paxos算法,Zab协议和Watch观察

Observer在Zookeeper中,除了leader和follower以外,还有一个角色是Observer。Observer是比Follower更低级的橘色,它的功能与follower相似,可以为客户端提供查询的功能,同样把更新转移给leader。与follower不同的是,Observer不参与选主投票。所以Observer实际上是为了加强Zookeeper读的功能如何配置Observ...

2020-03-07 23:06:58 554

原创 Zookeeper——Zookeeper简单使用

在配置的各集群中使用zkServer.sh就可以开启集群,然后随便选择一台机器使用zkCli.sh开启zookeeper客户端在客户端中输入help可以看到所有zookeeper支持的命令下面列举几个常用命令stat:stat后面跟上路径,可以列举出当前目录的状态ls: 跟Linux中的ls一样,只不过zookeeper只支持绝对路径,所以在zookeeper中显示路径内容,要写全部路...

2020-03-07 01:26:17 486

原创 Zookeeper——分布式协调服务Zookeeper介绍

Zookeeper是一种用于分布式应用程序的分布式协调服务Zookeeper提供了一些简单的原语操作(create,delete,exists,get data,set data,get children,sync),分布式程序可以使用这些原语,来实现更高级别的服务,实现同步,配置维护等等。(可以理解为Zookeeper本身比较简单,但复杂的分布式程序可以使用它的操作,封装出复杂的功能)。在庞...

2020-03-06 22:16:11 452

原创 SLF4J——Java日志管理,SLF4J简单入门

SLF4J(Simple Logging Facade for Java)是多种日志框架(JDK logging,log4j,logback…)的一种集成抽象或者说是它们的门面,apache的commons-logging与SLF4J相同,也是一种日志门面。上述日志框架每个api都不同,如果项目中使用一种框架了,以后想要换成另一种,修改的地方简直不计其数,所以我们应当使用日志抽象。我们在编程时...

2020-03-06 17:28:50 352

原创 RocketMQ——消息选择器

发送消息时,我们除了可以向指定的Topic发送消息,还可以向指定的Queue发消息。有以下4种方法 DefaultMQProducer producer1 = new DefaultMQProducer(); //向固定的一个queue中写消息 producer1.send(msg, new MessageQueueSelector() { ...

2020-03-05 23:39:26 424

原创 RocketMQ——事务消息

事务消息就是事务里参杂着发消息的动作如果一个事务里牵扯到发消息的操作,那么一旦消息被消费了,想要回滚,这时就变的很难所以在没有commit的时候,消息只会暂时发送存在broker不会被消费,当commit成功的时候,在MQ中会将这个消息设置为真正可用,这时comusmer才会消费消息,如果执行的是rollback,在MQ中就会把这个消息撤回(就是两阶段提交的机制)下面是事务消息执行的顺序图...

2020-03-04 23:59:15 333

原创 RocketMQ——消息过滤机制

Tag过滤在Producer中使用Tag:Message msg = new Message("TopicTest","TagA" ,("Hello RocketMQ " ).getBytes(RemotingHelper.DEFAULT_CHARSET));在Consumer中订阅Tag:consumer.subscribe("TopicTest", "TagA || TagB");//...

2020-03-03 20:16:43 1435

原创 RocketMQ——Consumer消费模式及两种消费者辨析(DefaultMQPushConsumer和DefaultMQPullConsumer)

RocketMQ的Consumer有两种消费模式,通过consumer.setMessageModel(MessageModel.BROADCASTING)和consumer.setMessageModel(MessageModel.CLUSTERING)设置广播模式当使用广播消费模式时,MQ 会将每条消息推送给集群内所有订阅该topic和tag的客户端,保证消息至少被每台机器消费一次。...

2020-03-03 19:24:47 3433

原创 RocketMQ——IDEA开发RocketMQ程序简单入门

建立maven项目,导入下面依赖<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client --> <dependency> <groupId>org.apache.rocketmq</groupId> ...

2020-03-02 23:24:25 1486 1

原创 RocketMQ——RocketMQ与JMS的辨析(杂谈)

RocketMQ其实不怎么遵循JMS标准NameServer用于收集其他角色的信息,里面存了许多列表,用于保存各角色的信息,Producer发送和Consumer消费信息都不直接与Broker打教导,而是先向NameServer询问具体要发往和消费的Topic在哪,回NameServer向二者返回该Topic所在的具体Broker地址,然后二者再连该Broker。所以NameServer起了...

2020-03-02 20:49:11 1565

原创 RocketMQ——安装RocketMQ

本文在Linux环境下安装RocketMQRocketMQ 4.x以上版本安装需要JDK1.8 +, Maven首先在官网下载RocketMQ的源码包,如果没有安装Maven,首先使用wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.g...

2020-03-01 23:37:04 505

原创 RocketMQ——初识RocketMQ

下图是从官网摘过来的RocketMQ架构图RocketMQ架构分为四个部分:NameServer,Broker,Producer,Consumer。其中每一部分都可以水平扩展以避免单点故障。NameServer:NameServer集群的每一个节点都会记录完整的路由信息,提供可靠的读写服务,并支持存储扩展。NameServer负责管理以下两个部分:Broker Management:Br...

2020-03-01 20:03:39 609

原创 RocketMQ——初识消息中间件,JMS

JMS(Java MessageService)是一套Java的API,最初设计目的是为了让应用程序能访问现有消息中间件系统,后来直接被消息中间件开发商采用,直接用以开发消息中间件。常见的消息中间件有ActiveMQ,RocketMQ,RabbitMQ,Kafka。常用消息中间件对比如下:“消息”是两台计算机之间传送的数据单位。消息可以很简单,如只包含文件字符串信息;也可以很复杂,如包含自定...

2020-03-01 00:23:06 1179

原创 Hadoop——使用IDEA开发WordCount on Yarn

首先将之前配置好的mapred-site.xml和yarn-site.xml拷贝进resources文件夹,并在pom.xml中加入 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --> <dependency> <...

2020-02-29 02:21:06 416 1

原创 Hadoop——Yarn的HA模式搭建以及WordCount实验

Yarn和HDFS是两个概念,所以你完全可以在启动着Hadoop集群的时候,搭建Yarn并启动之前在没有Yarn时我们的角色分布是这样的搭建Yarn之后会新增RM和NM角色,我们将RM分配在node03和04上做主备RM,与node01和02的NN错开。NM必须与DN一一对应,所以在node02~04上搭建NM搭建之后的角色应该如下NN实现主备切换时需要一个ZKFC辅助,在Yarn中却...

2020-02-28 22:29:28 437

原创 Hadoop——JobTracker和TaskTracker,以及如何演变成Yarn架构

MapReduce计算框架是如何实现计算向数据移动的呢?计算向数据移动面临着诸多问题,如:怎么让机器自动移动,面对block的许多副本,怎么判别移动到的是最合适的Datanode这个问题牵扯到两个概念:资源管理,任务调度资源管理:掌握各机器当前可用内存,可用CPU等情况任务调度:根据可用资源,进行计算任务的分配(也就是向哪个Datanode移动)MapReduce想要完成资源管理和任务调...

2020-02-28 17:59:38 1948

原创 Hadoop——MapReduce计算框架详细讲解

MapReduce(MapReduce是批量计算模型,只有一批数据全部Map完,才会开启Reduce阶段)简单理解Map(映射):以一条记录为单位做映射,在处理当前记录时不关心其他记录的状态Reduce:以一组记录为单位做计算,所以计算前要分组,分组的数据是key-value的形式,分组由map完成Map:负责数据的映射,过滤,变换,1条记录进,n条记录出Reduce:负责数据的分解,...

2020-02-28 16:52:11 540

原创 Hadoop——使用idea+maven开发Hadoop项目入门

我们这里使用windows系统作为开发系统首先保证已在Linux中正确开启Hadoop集群,然后要在windows的环境变量里新加一个变量HADOOP_USER_NAME,值为集群里开启Hadoop服务的账户,笔者在服务器中用root用户使用的start-dfs.sh,所以这里的值为root。然后我们将Hadoop的两个配置文件core-site.xml和hdfs-site.xml传输到win...

2020-02-26 03:35:22 3675 8

原创 Hadoop——HA模式搭建

在增加了JN,ZKFC,ZK角色,取消SNN角色之后,按照以下规划搭建一个HA模式的分布式Hadoop集群

2020-02-25 00:05:00 397

原创 Hadoop——高可用(High Available,HA)模式与联邦机制(Federation)启蒙

虽说主从结构相对简单,但是公司中不会采用这种简单的主从结构,因为这会带来两个严重问题若主节点发生故障,即单点故障,会造成整个集群不可用主节点内存受限,压力过大这是两个独立的问题,业内对于这两个问题给出了不同的解决方案,下面具体说明Hadoop—高可用解决方案(HA)所谓Hadoop高可用(HA)实际上就是配置多个Namenode,一个作为主机(Active),其他作为备机(Stand...

2020-02-24 18:45:33 1073

原创 Servlet——Servlet过滤器和监听器

过滤器(Filter)是能够为请求和响应的header和内容进行操作的一种特殊的web组件。特殊之处在于其本身并不直接生成web响应,而是拦截过滤web请求和响应。下面直接用代码说明Servlet过滤器** * 完成请求的拦截,以及资源的统一管理功能 * 定义 * * @author Song X. * @date 2020/02/16 */public class MyFilt...

2020-02-16 23:30:45 409

原创 Servlet——ServletContext和ServletConfig

Session解决的相同用户在不同请求间的数据共享问题,那么不同用户的数据共享问题该如何解决?这时候就要使用ServletContext。帖子的浏览次数就是个经典的不同用户需要共享的数据。从Session的机制可以联想,如果服务器端有一个可以被所有用户访问的对象,并将这类数据存入该对象,就可以实现不同用户的数据共享了Servlet:每个JVM上的Web程序都有一个与之对应的ServletCont...

2020-02-14 20:18:40 238

原创 Servlet——Cookie和Session

首先介绍以下Servlet的请求转发和重定向。请求转发和重定向都是Servlet的跳转技术请求转发:request.getRequestDispatcher("dispatcher.jsp").forward(request,response)请求转发:request.getRequestDispatcher("dispatcher.jsp").include(request,respons...

2020-02-13 21:26:46 264

原创 Servlet——Servlet中文乱码问题

这是一个很烦人的小点,所以单独拿出来说一下,主要有以下解决方式get请求中出现乱码。解决方式有三种:1.获取字符串String name = request.getParameter("name")之后使用new String(name.getBytes("iso-8859-1"),"utf-8");重新构造字符串;2.设置request编码格式request.setCharacterEnco...

2020-02-12 20:38:43 222

原创 Servlet——Request和Response

Request和Response分别用来处理客户端发送的数据和服务器应该作出的响应,使用较为简单,主要都是api。读者可使用以下代码自行练习/** * HttpServletRequest用来存放客户端请求的参数 * 请求行 * 请求头 * 请求数据 * * @author Song X. * @date 2020/02/11 */public class RequestSer...

2020-02-11 23:24:14 297

原创 Servlet——Servlet的简单使用

Servlet的生命周期Servlet的生命周期就是指一个Servlet对象从被创建到销毁。一般来说,Servlet类从第一次接收到请求的时候被创建,且只创建一次(这说明Servlet是单例的),对应到下面的代码,init只会在第一次请求这个Servlet的时候在控制台输出一次,之后再请求就不会输出了,注意我们可以在web.xml的对应servlet配置里使用<load-on-srartu...

2020-02-10 23:37:07 374

转载 Mac获取finder文件或文件夹路径的方式

转载自Mac获取文件路径

2020-02-10 00:44:35 1065

原创 idea的Edit Configurations里没有tomcat选项

看到有人说他们idea的Run -> Edit Configurations里没有tomcat选项,现将解决方法列一下Settings(mac是Preferences) -> Plugins,搜索Tomcat and TomEE Integration有没有勾选上,没有的话勾选并重启ideaSettings(mac是Preferences) -> Build, Execut...

2020-02-10 00:09:42 6395 2

原创 Servlet——初识Servlet

Java的各种框架虽然好,但是这些框架底层的实现技术,才是真正核心的东西。框架会随着时间更迭,底层核心却永远不变。学习各种框架的时候,不能忘记实现它们的核心技术。最近我会花时间重温Serlvet的知识,这对理解SpringMVC和SpringBoot等框架的底层原理有很大的帮助。学习Servlet不免涉及到前后端交互的一些功能,所以在前端部分我也会简要回顾一下“曾经”的JSP,尽管现在用Sprin...

2020-02-09 23:17:47 1188

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除