idea如何打包发布springboot

1.1.环境准备
window系统,jdk8环境,springboot项目,maven3.5.4环境

1.2.进行打包发布

打开idea编辑器,打开一个写好的demo项目

在这里插入图片描述
然后打开idea编辑器下方的terminal窗口,当你打开这个窗口的时候,所在的位置就是目录的根位置了
在这里插入图片描述
输入命令 mvn clean install -Dmaven.test.skip,这条命令就是用maven打成jar包的方式了,然后回车键。
在这里插入图片描述
当看到BUILD SUCCESS的时候,就说明打包成功,在项目的target目录下就会出现一个jar包,默认的jar包名就是artifactId+version在这里插入图片描述
此时再进入到target目录,输入java -jar SpringBoot-Mybatis-0.0.1-SNAPSHOT.jar命令就可以运行jar包了在这里插入图片描述
当你看到Started DemoApplication in …的时候说明启动成功,就能在本地访问了在这里插入图片描述

结论:这就是SpringBoot项目的在Windows环境发布,linux环境也是一样的,同样要安装jdk和maven环境。这也是springboot的神奇之处,不需要发布到Tomcat下,因为SpringBoot内嵌了web服务器包括Tomcat

特点简介

  • 由于传统的ssm、ssh等框架繁琐的配置文件,springboot的出现就是为了简化配置文件
  • 内嵌Web服务器包括Tomcat,只需要打成jar包就可以运行项目
  • SpringBoot基于全注解式的开发

SpringBoot整合Servlet

3.1.方式一

步骤:

  • 写一个类MyFirstServlet继承HttpServlet,并重写doGet方法
  • 在类的上面用@WebServlet标识Servlet并指明name和urlPatterns
  • 在标识有@SpringBootApplication的主类上加上
    @ServletComponentScan

FirstServlet.java

 1package com.example.servlet.myservlet; 2 3import javax.servlet.http.HttpServlet; 4import java.io.IOException; 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 910/**11 *SpringBoot整合Servlet方式一12 *@WebServlet(name="MyFirstServlet",urlPatterns="/myFirst")相当于如下:13 *14 *<servlet>15 * <servlet-name>MyFirstServlet</servlet-name>16 * <servlet-class>ah.szxy.servlet.FirstServlet</servlet-class>17 *</servlet>18 *<servlet-mapping>19 * <servlet-name>MyFirstServlet</servlet-name>20 * <url-pattern>/first</url-pattern>21 *</servlet-mapping>22 *23 */2425@WebServlet(name="MyFirstServlet",urlPatterns="/myFirst")26public class FirstServlet extends HttpServlet {2728    @Override29    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {30        System.out.println("MyFirstServlet init............");31    }32}

ServletApplication.java

 1package com.example.servlet; 2 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5import org.springframework.boot.web.servlet.ServletComponentScan; 6 7@SpringBootApplication 8@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化 9public class ServletApplication {1011   public static void main(String[] args) {12      SpringApplication.run(ServletApplication.class, args);13   }1415}

然后启动项目

在这里插入图片描述

最后在浏览器输入localhost:8080/myFirstServlet,页面显示空白,在控制台打印MyFirstServlet init…………

在这里插入图片描述

3.2.方式二
步骤:
创建一个类SecondServlet继承HttpServlet,并重写doGet方法。
在@SpringBootApplication标识的主类中加@Bean的一个方法。
SecondServlet.java

 1package com.example.servlet.myservlet; 2 3import javax.servlet.ServletException; 4import javax.servlet.http.HttpServlet; 5import javax.servlet.http.HttpServletRequest; 6import javax.servlet.http.HttpServletResponse; 7import java.io.IOException; 8 9/**10 * 整合Servlet的第二种方式11 */12public class SecondServlet extends HttpServlet {1314    @Override15    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {16        System.out.println("MySecondServlet init..........");17    }18}

ServletApplication.java

 1package com.example.servlet; 2 3import com.example.servlet.myservlet.SecondServlet; 4import org.springframework.boot.SpringApplication; 5import org.springframework.boot.autoconfigure.SpringBootApplication; 6import org.springframework.boot.web.servlet.ServletComponentScan; 7import org.springframework.boot.web.servlet.ServletRegistrationBean; 8import org.springframework.context.annotation.Bean; 910@SpringBootApplication11//@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化12public class ServletApplication {1314   public static void main(String[] args) {15      SpringApplication.run(ServletApplication.class, args);16   }171819  /**20 * 整合Servlet的第二种方式,创建ServletRegistrationBean并添加路径21 * @return22 */23@Bean24public ServletRegistrationBean getServletRegistrationBean(){25   ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());26   bean.addUrlMappings("/mySecond");27   return bean;28}

然后启动项目,在浏览器中访问localhost:8080/mySecondServlet,页面也是空白,在控制台就会打印MySecondServlet init……….

在这里插入图片描述

项目,结构如图所示

在这里插入图片描述

结论:
上面的两种方式推荐使用第一种基于注解的整合
虽然现在几乎用不到servlet了,但是学习SpringBoot整合servlet有助于学习的深入了解,更好的理解框架

4.SpringBoot整合Filter
4.1.方式一
步骤:
创建一个MyFirstFilter类实现Filter接口,并在类上面标注@WebFilter
在@SpringBootApplication的主类上加上@ServletComponentScan注解
MyFirstFilter.java

 1package com.example.servlet.myfilter; 2 3import javax.servlet.*; 4import javax.servlet.annotation.WebFilter; 5import java.io.IOException; 6 7/** 8 * 基于@WebFilter注解整合Filter方式一 9 */10@WebFilter(filterName = "MyFirstFilter",urlPatterns = "/myFirst")11public class MyFirstFilter implements Filter {12    @Override13    public void init(FilterConfig filterConfig) throws ServletException {1415    }1617    @Override18    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {19        System.out.println("进入Filter中了.....");20        arg2.doFilter(arg0,arg1);21        System.out.println("离开Filter了.......");22    }2324    @Override25    public void destroy() {2627    }28}

ServletApplication.java

 1package com.example.servlet; 2 3import com.example.servlet.myservlet.SecondServlet; 4import org.springframework.boot.SpringApplication; 5import org.springframework.boot.autoconfigure.SpringBootApplication; 6import org.springframework.boot.web.servlet.ServletComponentScan; 7import org.springframework.boot.web.servlet.ServletRegistrationBean; 8import org.springframework.context.annotation.Bean; 910@SpringBootApplication11@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化12public class ServletApplication {1314   public static void main(String[] args) {15      SpringApplication.run(ServletApplication.class, args);16   }1718   /**19    * 整合Servlet的第二种方式,创建ServletRegistrationBean并添加路径20    * @return21    */22   @Bean23   public ServletRegistrationBean getServletRegistrationBean(){24      ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());25      bean.addUrlMappings("/mySecond");26      return bean;27   }28}

4.2.方式二
步骤:
创建一个类MySecondFilter实现Filter接口,重写方法。
在@SpringBootApplication标识的主类中加@Bean的一个方法,将MySecondFilter对象注入容器中。

MySecondFilter.java

 1package com.example.servlet.myfilter; 2 3import javax.servlet.*; 4import java.io.IOException; 5 6/** 7 * 整合Filter的第二种方式 8 */ 9public class MySecondFilter implements Filter {10    @Override11    public void init(FilterConfig filterConfig) throws ServletException {1213    }1415    @Override16    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {17        System.out.println("进入MySecondFilter了......");18        arg2.doFilter(arg0, arg1);19        System.out.println("离开MySecondFilter了......");20    }2122    @Override23    public void destroy() {2425    }26}

ServletApplication.java

 1package com.example.servlet; 2 3import com.example.servlet.myfilter.MySecondFilter; 4import com.example.servlet.myservlet.SecondServlet; 5import org.springframework.boot.SpringApplication; 6import org.springframework.boot.autoconfigure.SpringBootApplication; 7import org.springframework.boot.web.servlet.FilterRegistrationBean; 8import org.springframework.boot.web.servlet.ServletComponentScan; 9import org.springframework.boot.web.servlet.ServletRegistrationBean;10import org.springframework.context.annotation.Bean;1112@SpringBootApplication13//@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化14public class ServletApplication {1516   public static void main(String[] args) {17      SpringApplication.run(ServletApplication.class, args);18   }1920   /**21    * 整合Filter的第二种方式22    * 注册Filter23    */24   @Bean25   public FilterRegistrationBean getFilterRegistrationBean() {26      FilterRegistrationBean bean = new FilterRegistrationBean(new MySecondFilter());27      // bean.addUrlPatterns(new String[]{"*.do","*.jsp"});//拦截多个时28      bean.addUrlPatterns("/mySecond");29      return bean;30   }31}

然后在浏览器访问localhost:8080/mySecond,就可以看到控制台打印如下

在这里插入图片描述

5.SpringBoot整合Listener
5.1.方式一
步骤:
创建一个类MyFirstListener实现ServletContextListener接口,重写方法
在该类上加上@WebListener注解

 1package com.example.servlet.mylistener; 2 3import javax.servlet.ServletContextEvent; 4import javax.servlet.ServletContextListener; 5import javax.servlet.annotation.WebListener; 6 7/** 8 * springBoot 整合Listener第一种方式 9 * 创建一个Servlet上下文的监听器10 * @WebListener 自动注册,相当于在web.xml中添加如下代码11 *12 *<listener>13 * <listener-class>ah.szxy.listener.FirstListener</listener-class>14 *</listener>15 */16@WebListener17public class MyFirstListener implements ServletContextListener {1819    @Override20    public void contextDestroyed(ServletContextEvent arg0) {21        // TODO Auto-generated method stub22        System.out.println("MyFirstListener执行销毁了。。。");23    }2425    @Override26    public void contextInitialized(ServletContextEvent arg0) {27        // TODO Auto-generated method stub28        System.out.println("MyFirstListener执行初始化了。。。");29    }30}

执行项目会打印如下,因为用了@ServletComponentScan注解,在项目启动的时候就会扫描包中是否含有servlet,若有就初始化。由于FirstServlet是基于注解初始化的,所以在项目启动的时候,就会执行初始化servlet,被Listener监听到

在这里插入图片描述

5.1.方式二
步骤:
创建一个类MySecondListener实现ServletContextListener接口,重写方法
在@SpringBootApplication标识的主类中加@Bean的一个方法,将MySecondListener对象注入容器中。

 1package com.example.servlet.mylistener; 2 3import javax.servlet.ServletContextEvent; 4import javax.servlet.ServletContextListener; 5 6/** 7 * 整合Listener的第二种方式 8 */ 9public class MySecondListener implements ServletContextListener {1011    @Override12    public void contextDestroyed(ServletContextEvent arg0) {13        // TODO Auto-generated method stub14        System.out.println("MySecondListener执行销毁了。。。");15    }1617    @Override18    public void contextInitialized(ServletContextEvent arg0) {19        // TODO Auto-generated method stub20        System.out.println("MySecondListener执行初始化了。。。");21    }2223}
 1package com.example.servlet; 2 3import com.example.servlet.myfilter.MySecondFilter; 4import com.example.servlet.mylistener.MySecondListener; 5import com.example.servlet.myservlet.SecondServlet; 6import org.springframework.boot.SpringApplication; 7import org.springframework.boot.autoconfigure.SpringBootApplication; 8import org.springframework.boot.web.servlet.FilterRegistrationBean; 9import org.springframework.boot.web.servlet.ServletComponentScan;10import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;11import org.springframework.boot.web.servlet.ServletRegistrationBean;12import org.springframework.context.annotation.Bean;1314@SpringBootApplication15@ServletComponentScan //在springBoot启动时会扫描@WebServlet,并将该类实例化1617public class ServletApplication {1819   public static void main(String[] args) {20      SpringApplication.run(ServletApplication.class, args);21   }2223   /**24    * 注册listener25    */26   @Bean27   public ServletListenerRegistrationBean<MySecondListener> getServletListenerRegistrationBean() {28      ServletListenerRegistrationBean<MySecondListener> bean = new ServletListenerRegistrationBean<MySecondListener>(29            new MySecondListener());30      return bean;31   }3233}

执行项目,在控制台可以看到输出如下,两个Servlet监听器都执行了

在这里插入图片描述

总的项目目录包结构如下:

在这里插入图片描述
6.SpringBoot整合静态资源
6.1.在resource/static路径下
在这里插入图片描述
然后启动项目,在浏览器访问localhost:8080/images/1.jpg
在这里插入图片描述
6.2.在webapp目录路径下
6.2.1.idea中为SpringBoot项目添加web
因为SpringBoot的初始化后是没有webapp目录的,需要在idea中手动加入,但不是直接创建,而是配置出来的,下面是SpringBoot项目配置webapp的教程

6.2.2.选中项目然后是ctrl+alt+shift+s,就会弹出如下页面

在这里插入图片描述

6.2.3.选中Modules,然后点击+号,如下

在这里插入图片描述
配置的目录的路径分别为:
E:\liduchang\servlet\src\main\webapp\WEB-INF\web.xml
E:\liduchang\servlet\src\main\webapp

6.2.4出现如下界面,点击铅笔进行编辑web.xml的路径,然后双击第二处同理编辑webapp的路径

在这里插入图片描述
6.2.5最后配置出来的目录结构,如下图所示
在这里插入图片描述

6.2.6然后再webapp先新建一个images文件夹,复制一张图片到images文件夹下,名为2.jpg,并再webapp下新建一个index.html内容如下

 1<!DOCTYPE html> 2<html lang="en"> 3<head> 4    <meta charset="UTF-8"> 5    <title>Title</title> 6</head> 7<body> 8<h1>静态资源访问方式一</h1><hr> 9<img alt="" src="data:images/2.jpg">10</body>11</html>

6.2.7启动项目,然后再浏览器访问localhost:8080,出现如图所示,配置成功

在这里插入图片描述

7.SpringBoot文件上传
7.1.文件上传
项目结构图

在这里插入图片描述

  • 上传到本地磁盘,名字为原文件名
  • 上传到本地磁盘,名字为随机名
  • 上传到项目webapp文件夹下的images文件夹下

upload.html(文件上传主页)

 1<!DOCTYPE html> 2<html lang="en"> 3<head> 4    <meta charset="UTF-8"> 5    <title>Title</title> 6</head> 7<body> 8<!-- 9    表单提交的方式为   :  post10    enctype的值为 : multipart/form-data11    file类型的输入框的name属性要和 MultipartFile 的形参一样 ,这样才能进行文件的上传12-->13<h1>文件上传到本地e盘</h1><hr>14<form action="/uploadToPC" method="post" enctype="multipart/form-data">15    <input type="file" name="file" ><br>16    <input type="submit" value="点击上传">17</form>1819<h1>文件上传到e盘名字随机</h1><hr>20<form action="/fileUploadToPCWithNameRandom" method="post" enctype="multipart/form-data">21    <input type="file" name="file" ><br>22    <input type="submit" value="点击上传">23</form>2425<h1>文件上传到本项目</h1><hr>26<form action="/uploadToProject" method="post" enctype="multipart/form-data">27    <input type="file" name="file" ><br>28    <input type="submit" value="点击上传">29</form>3031</body>3233</html>

FileUploadController.java(文件上传Controller)

 1package com.example.servlet.controller; 2 3import com.example.servlet.util.FileUtils; 4import org.springframework.web.bind.annotation.RequestMapping; 5import org.springframework.web.bind.annotation.RestController; 6import org.springframework.web.multipart.MultipartFile; 7 8import javax.servlet.http.HttpSession; 9import java.io.File;10import java.io.IOException;11import java.util.HashMap;12import java.util.Map;1314/**15 * 文件上传Controller16 */17@RestController18public class FileUploadController {1920    /**21     * 测试文件上传到本地e磁盘22     * @return23     */24    @RequestMapping("/uploadToPC")25    public Map<String,Object> fileUploadToPC(MultipartFile file) throws IOException {26        // 获取文件名 df8306e403c49fdf701230317dc99d9.jpg27        System.out.println(file.getOriginalFilename());28        // 将上传的文件放在e盘下29        file.transferTo(new File("e:/"+file.getOriginalFilename()));30        Map<String, Object> map= new HashMap<>();31        map.put("msg", "上传文件成功");32        return map;33    }3435    @RequestMapping("/fileUploadToPCWithNameRandom")36    public Map<String, Object> fileUploadToPCWithNameRandom(MultipartFile file) throws IOException {37        String name = file.getOriginalFilename();38        String prefix = FileUtils.getRandomName();39        String suffix = name.substring(name.lastIndexOf("."));40        name = prefix+suffix;41        file.transferTo(new File("e:/"+name));42        Map<String, Object> map = new HashMap<String, Object>();43        map.put("msg", "ok");44        return map;45    }4647    /**48     * 上传文件到项目的webapp下的images文件夹下49     * 不过一般文件不会上传到项目下,一般上传到本50     * 服务器的其它磁盘上,或者上传到专门的服务器51     * 上,所以这个方法只要了解就好52     * @param file53     * @return54     */55    @RequestMapping("/uploadToProject")56    public String uploadToProject(MultipartFile file, HttpSession session){57        // 通过session获取绝对路径,方法内部加上/WEB-INF/images,58        // 表示在项目的images目录下,需要创建该文件夹并进行静态资源放行59        String path= session.getServletContext().getRealPath("/images");60        System.err.println(path);61        String fileName= file.getOriginalFilename();62        File f= new File(path, fileName);63        try {64            file.transferTo(f);65        } catch (IOException e) {66            e.printStackTrace();67        }68        return "ok";69    }70}

FileUtils.java(文件随机命名工具类)

 1package com.example.servlet.util; 2 3import java.util.Random; 4import java.util.UUID; 5 6/** 7 * 文件名随机生成工具类 8 * @version 1.0 9 */10public class FileUtils {1112    /**13     * 图片名生成14     */15    public static String getRandomName() {16        //取当前时间的长整形毫秒数17        long millis = System.currentTimeMillis();18        Random random = new Random();19        //获取0-1000不包含1000,的整形20        int end3 = random.nextInt(1000);21        //如果不足三位前面补022        String str = millis + String.format("%03d", end3);23        return str;24    }2526    /**27     * 商品id生成28     */29    public static long getRandomId() {30        //取当前时间的长整形值包含毫秒31        long millis = System.currentTimeMillis();32        Random random = new Random();33        //随机获取0-99不包含99,之间的整形34        int end2 = random.nextInt(99);35        //如果不足两位前面补036        String str = millis + String.format("%02d", end2);37        long id = new Long(str);38        return id;39    }4041}

在配置文件配置文件的上传的配置信息

1application.properties2#设置单个文件上传大小3spring.http.multipart.maxFileSize=200MB4#设置一次请求上传文件的总容量5spring.http.multipart.maxRequestSize=200MB

最后分享一波java的资源,资源包括java从入门到开发的全套视频,以及java的26个项目,资源比较大,大小大概是290g左右,链接容易失效,获取的方式是关注公众号:非科班的科班,让后回复:java项目即可获得,祝大家学习愉快

SpringBoot初级知识总结,太难了,未完待续.......的更多相关文章

  1. 初进MFC的世界,太奇妙。第六次作业----未完待续

    又一次的迁徙.我希望能够早些抵达. 第六次作业-未完待续!图形界面,计算器文件 本次的作业是给自己的计算器加一个可视化的窗口,我开始也是很激动和憧憬的,看了很多的界面库,发现并没有想象的那么简单,因为 ...

  2. ASP.NET Core 2.2 基础知识(八) 主机 (未完待续)

    主机负责应用程序启动和生存期管理.共有两个主机 API : 1.Web 主机 : 适用于托管 Web 应用,基于 IWebHostBuilder ; 2.通用主机 : 适用于托管非 Web 应用. 基 ...

  3. 省钱版----查找 IoT 设备TTL线序__未完待续

    作者:仙果 原文来自:省钱版—-查找 IoT 设备TTL线序 省钱版----查找 IoT 设备TTL线序__未完待续 缘由 在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能 ...

  4. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  5. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  6. [python]爬代理ip v2.0(未完待续)

    爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...

  7. C++语言体系设计哲学的一些随想(未完待续)

    对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...

  8. 2017-2-17,c#基础,输入输出,定义变量,变量赋值,int.Parse的基础理解,在本的初学者也能看懂(未完待续)

    计算机是死板的固定的,人是活跃的开放的,初学c#第一天给我的感觉就是:用人活跃开放式的思维去与呆萌的计算机沟通,摸清脾气,有利于双方深入合作,这也是今晚的教训,细心,仔细,大胆 c#基础 1.Hell ...

  9. 布隆过滤器(Bloom Filter) 未完待续

    布隆过滤器雏形 未完待续..... 计算错误率 现在有一个空额布隆过滤器, 过滤器里的bit array的大小是m. 咱来插入一个元素. 这次插入过程中的第一个hash函数会算出一个位置, 然后把这个 ...

  10. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

随机推荐

  1. codeforces 540E 离散化技巧+线段树/树状数组求逆序对

    传送门:https://codeforces.com/contest/540/problem/E 题意: 有一段无限长的序列,有n次交换,每次将u位置的元素和v位置的元素交换,问n次交换后这个序列的逆 ...

  2. 搭建个人/企业私有云盘-seafile

    一.安装依赖组件 安装前的准备工作安装 Seafile 服务器之前,请确认已安装以下软件MariaDB 或者 MySQL 服务器 (MariaDB 是 MySQL 的分支),python 2.7 (从 ...

  3. 错误 1 未能找到类型或命名空间名称“”, 引入DLL文件出现提示文件不存在问题

    在所有引入都正确的情况下,查看项目目标框架是否正确

  4. java xml的读取与写入(dom)

    首先,先获取到文档对象 private static Document getDocument(String path) { //1.创建DocumentBuilderFactory对象 Docume ...

  5. ajax异步发送时遇到的问题

    问题原因是:controller中方法名与url中的名字不一样造成的 解决办法:找到错误的方法名,将其与url中的方法名统一:

  6. HashMap、lru、散列表

    HashMap HashMap的数据结构:HashMap实际上是一个数组和链表("链表散列")的数据结构.底层就是一个数组结构,数组中的每一项又是一个链表. hashCode是一个 ...

  7. mysql主从之binlog日志

    mysql的binlog说明 主从复制依赖于二进制日志文件,简称为binlog binlog里面有存放了偏移信息 mysql主库binlog信息查看命令 [root@master ~]# mysql ...

  8. mysql 时间函数总结

    1. 获取当前时间   select now(); // 2018-08-24 11:01:26   select unix_timestamp(); // 1535079695   总结:unix_ ...

  9. 洛谷$P2150\ [NOI2015]$寿司晚宴 $dp$

    正解:$dp$ 解题报告: 传送门$QwQ$. 遇事不决写$dp$($bushi$.讲道理这题一看就感觉除了$dp$也没啥很好的算法能做了,于是考虑$dp$呗 先看部分分?$30pts$发现质因数个数 ...

  10. [gitHub实践] 实践记录

    [gitHub实践] 实践记录 版权2019.4.19更新 Q1:本地仓库和远程仓库连接提示输入用户名密码 本地仓库和远程仓库连接有两种方式 本地初始化建立一个仓库,远程也建立了一个仓库 本地建立仓库 ...