IDEA 去掉 xml、jsp、js 文件的屎黄色和淡绿色

2019-06-15   龙德   杂七杂八   IDEA  

如图,一堆的屎黄色实在是不好看

image

SpringBoot 项目为什么没有 web.xml

2019-06-11   龙德   SpringBoot   SpringBoot web.xml  

前言

我们在开发 SpringMVC 项目时,都会在 web.xml 里配置 listener、servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" metadata-complete="true" version="3.1">
  
  <!-- 因为配置了spring的ContextLoderListener监听器,所以需指定spring核心文件的位置 ,
 	       否则默认加载/WEB-INF/applicationContext.xml这个文件-->
  <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/spring-*.xml</param-value>
  </context-param>
  
   <!-- Spring监听器 -->
  <listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
 
</web-app>

SpringBoot 的出现极大的简化了我们的开发流程,细心地同学可能会发现,SpringBoot 是没有 web.xml 的,那么 Servlet、 Filter 和 Listener 等繁琐的 web 的相关配置,SpringBoot 是用什么替代的呢?

这个问题不难回答,Servlet、Filter 和 Listener 并不会凭空的帮我们自动配好,SpringBoot 既然抛弃了 web.xml,那么它肯定是在代码里提供了配置功能的类。

其实开发一个 Java Web 项目,不用 web.xml 配置,并不是 SpringBoot 开创的新特性。早在 Serlvet3.0 之后,我们开发一个 Java Web 项目就可以不用 web.xml 配置了,而 SpringMVC 又是基于 Servlet 的,所以要弄清楚 SpringBoot 是用什么替代 web.xml 的,得先从 Servlet 说起。

Java 动态代理

2019-06-07   龙德   Java   动态代理  

引言

动态代理是 Java 技术中最重要的一点,如果不会动态代理,那么在学习 Spring、MyBatis 等框架的源码时是学不明白的!

代理的概念

动态代理简单来说就是动态的产生一个代理对象,代理对象会负责将所有的方法调用分派到委托对象上反射执行。

举一个生活中的例子:一个人还没有出名时,如果想找他唱歌跳舞,那就直接找他本人就完事了。但是当他出名后,成了明星,就不能直接找他唱歌跳舞了,得找他的经纪人来沟通。比如刘德华,他是一个非常出名的明星,会唱歌,会跳舞。如果你想找他唱歌跳舞,刘德华(被代理类)就会说,你先去找我的经纪人(代理类)吧。所以你这时只能去找经纪人了,因此这个经纪人就拦截了我们对刘德华的直接访问。

所以现实生活中的例子跟我们开发是一样的,我们在开发时,产生一个代理对象,拦截对被代理对象的访问,并做出相应的业务处理。

微服务入门-SpringBoot+Dubbo搭建一个简单的 Maven 多模块的 Demo

2019-06-03   龙德   杂七杂八   微服务 SpringBoot Dubbo Maven  

微服务

微服务就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在微服务结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在 web 容器中,它们之间通过 RPC 方式通信。

Dubbo

Dubbo 是一款高性能 Java RPC 框架,也叫微服务系统的协调者。在它这套体系中,一共有三种角色,分别是:服务提供者(provider)、服务消费者(consumer)、注册中心(zookeeper)。

服务提供者启动时,向注册中心注册自己提供的服务。服务消费者在启动时,向注册中心订阅自己所需的服务。注册中心返回服务提供者地址列表给消费者。此时消费者调用提供者提供的服务时,就跟在本地调用一样。

本文只是一个入门的 Demo,更多的 Dubbo 原理不在本文阐述范围内。

pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法

2019-05-30   龙德   杂七杂八   Maven pom.xml  

pom.xml 文件在添加了新的依赖后,一直报:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter) 的错误,Maven Update 后依然如此。

我用的 Eclipse 是 Eclipse Neon (4.6)版本,自带 Maven 插件。

更新eclipse中的maven插件方法如下:

点击:help -> Install New Software -> add -> http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/

一直下一步即可。

image

SpringMVC的静态资源映射

2019-03-15   龙德   SpringMVC   静态资源映射  

XML配置

1.mvc:resources

spring3.0.4以后版本提供了mvc:resources

<!--对静态资源文件的访问-->
<mvc:resources mapping="/images/**" location="/resources/images/" />

/images /**映射到 ResourceHttpRequestHandler 进行处理,location指定静态资源的位置,这里是webapp目录下的resources/images文件夹

MyBatis的批量操作

2019-02-28   龙德   MyBatis   MyBatis批量  

批量新增

表结构

CREATE TABLE `customer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(250) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

实体类

public class Customer implements Serializable {

	private static final long serialVersionUID = -1545195873576249731L;

	private Integer id;
	
	private String name;
	
	private Integer age;
	
	// get、set 和 toString 方法省略
}

mysql group_concat函数和oracle listagg函数的作用和区别

2019-01-23   龙德   数据库   MySQL Oracle group_concat listagg  

mysql group_concat的作用和语法

  • 作用:将组中的字符串连接成为具有各种选项的单个字符串

  • 语法:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

分隔符默认是逗号

比如有这样一个表

image

有这样一个需求:将分数用分隔符’-‘以降序的方式连接在一起

我们可以这样写

SELECT GROUP_CONCAT(A.SCORE ORDER BY A.SCORE DESC SEPARATOR '-') FROM GRADE A;

结果如下

image

springBoot freemarker 无法加载static 中 js css 文件(报错404)

2019-01-06   龙德   SpringBoot   freemarker 无法加载static  

注入一个继承WebMvcConfigurationSupport的配置类,并重写addResourceHandlers方法

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport{

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/","file:./static/");
    }
}

contos7升级Python

2018-12-29   龙德   杂七杂八   Python  

contos7默认安装的python版本是2.7,可以用以下步骤升级到指定版本

安装编译环境

yum -y install gcc

创建安装目录

cd /usr/local/
mkdir python-3.6.3

下载python3.6.3的安装包

cd src/
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz