SpringBoot快速入门
SpringBoot起步依赖Starter
SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的
parent
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
spring-boot-starter-parent(2.5.0)与spring-boot-starter-parent(2.4.6)共计57处坐标版本不同
实际开发
使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供
如发生坐标错误,再指定version(要小心版本冲突)
SpringBoot程序启动启动方式
SpringBoot的引导类是项目的入口,运行成main方法就可以启动项目
SpringBoot在创建项目时,采用jar的打包方式
更变起步依赖(starter)
使用maven依赖管理变更起步依赖项
Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty
基础配置配置格式SpringBoot提供了多种属性配置 ...
后端配置教程
9c46282a414f3fd7b78b088c22392b3efaa7b08e6e5a793636c60cb1c9461409380168888b7cc349280c5ea843874108543c84474f71e45c36d66ab27db3d3936a6bf633c683f86671c90bd96827ff8b3263f0407937abe8216f370c1f67255a8ec8e32117aacc160a09497ec31aa56482f6a254c5b184b5fd7e024d33f2682ed53fed0ceedd8b5ceb425a8a094879fc05c48b5a0c1ac626d9faf270009a3c006f9f34c010144753a36298ea490247489650c9bfd5b28d1cd104bcd985863fb0a4ebb628dcd3612d12da2243cd862f8e51343ac4e0e2aa2447caaa6ab7c67803c49d7cd10b959dfc43c95798b6c8f5a4abb1caf76a8d81528 ...
SpringMvc快速入门
概述SpringMVC是一种基于]ava实现MVC模型的轻量级Web框架
优点
使用简单,开发便捷(相比于Servlet)
灵活性强
入门案例
使用SpringMVC技术需要先导入SpringMVC坐标与Servlet坐标
12345678910111213<!--SpringMVC--><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.10.RELEASE</version></dependency><dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1&l ...
MyBatis入门
介绍什么是MyBatis
MyBatis是一款优秀的持久层(Dao)框架,用于简化JDBC开发
MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github
官网:https://mybatis.org/mybatis-3/zh/index.html
MyBatis 优点
如何写Mapper代理开发
定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
设置SQL映射文件的namespace属性为Mapper接口全限定名
在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
编码
通过SqlSession的getMapper方法获取Mapper接口的代理对象
调用对应方法完成sq的执行
细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一目录下,则可以使用包扫描的方式简化SQL映射文件 ...
Spring入门
Spring快速入门开发步骤
导入Spring开发的基本包坐标(Maven)
编写Dao接口和实现类
创建Spring核心配置文件
在Spring配置文件中配置UserDaoImpl
使用Spring的API获得Bean实例
applicationXml配置文件Bean标签的属性scope:指对象的作用范围
注:
singleton:加载配置文件时创建bean对象
prototype:getBean时创建bean对象
init-method:指定类中的初始化方法名称
destroy-method:指定类中销毁方法名称
Bean实例化三种方式
无参构造方法实例化(常用)
工厂静态方法实例化
工厂实例方法实例化
Bean的依赖注入依赖注入:它是Spring框架核心IOC的具体实现。
在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是代码中不可能出现没有依赖的情况。
IOC解耕只是降低他们的依赖关系,但不会消除。例如:业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系,在使用 Spring 之后,就让Spring 来维护了。
简单的说,就是 ...
Java垃圾回收机制
Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。
该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。
垃圾回收机制的核心思想对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。
触发主GC(Garbage Collector)的条件JVM进行次GC的频率很高,但因为这种GC占用时间极短,所以对系统产生的影响不大。更值得关注的是主GC的触发条件,因为它对系统影响很明显。总的来说,有两个条件会触发主GC:
当应用程序空闲时,即没有应用线程在运行时,GC会被调用。因为GC在优先级最低的线程中进行,所以当应用忙时,GC线程就不会被调用,但下面这点的条件除外;
Java堆内存不足时,GC会被调用。当应用线程在运行,并在运行过程中创建新对象,若这时内存空间不足,JVM就会强制地调用GC线程,以便回收内存用于新的分配。若GC一次之后仍不能满足内存分配的要求,JVM会再进行两 ...
非对称加密和对称加密
非对称加密和对称加密在加密和解密过程、加密解密速度、传输的安全性上都有所不同,具体介绍如下:
加密和解密过程不同
对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。
非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密;也可以私钥加密,公钥进行解密。一般公钥是对所有人公开的,原始数据使用公钥加密后,只有拥有私钥的人才能解密。 也就是说只有公钥的情况下是无法解开加密的数据的。
非对称加密流程图:
对称加密流程图:
加密解密速度不同
对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。
传输的安全性不同
对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。
非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。
...
JavaScript判断设备类型的实现
项目中碰到前端某个页面提供APP的不同设备版本下载,需要在用户打开的时候识别用户设备并跳转到对应的选项卡,Js代码如下:
1234567891011121314151617181920212223242526272829303132333435<script> // 判断不同设备的方法 var isMac = /macintosh|mac os x/i.test(navigator.userAgent); var isAndroid = /(Android)/i.test(navigator.userAgent); var isWin = /(win32|win64)/i.test(navigator.userAgent); var isIos = /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent); if(isWin) { // 通过id获取标签 var twin = document.getElementById("tab_windows"); var pwi ...
Java中的移位运算符:<<,>>,>>>
Java中有三种移位运算符
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
二进制
十进制
备注
代码
1010
10
原始数
number
1010
20
左移一位
number = number << 1;
1010
10
右移一位
number = number >> 1;
用代码看一下具体实现:
12345678910111213141516171819202122public class Test {12 13 public static void main(String[] args) {14 int number = 10;15 //原始数二进制16 printInfo(number);17 number = numbe ...
Maven快速入门
认识Maven没有Maven管理项目会出现的问题
很多模块,模块之间没有关系,手动管理关系,比较繁琐
需要很多第三方功能,需要很多jar文件,需要手动从网络中获取各个jar包
需要管理jar的版本
管理jar文件之间的依赖。项目中a.jar需要用到b.jar里面的类
Maven的用处人工管理项目很麻烦,于是maven就来了,用maven有如下好处:
maven可以管理jar文件
自动下载jar和他的文档,源代码
管理jar直接的依赖,a.jar需要b.jar,maven会自动下载b.jar
管理需要的jar版本
编译、打包、测试、部署程序
Maven的构建构建主要包含项目的编译、测试、运行、打包、部署等,Maven支持的构建包括:
清理(clean),把之前的项目编译的东西删除,为新的编译代码做准备
编译(compile),把程序源代码批量编译为执行代码
测试(test),maven可以执行测试程序代码,验证你的功能是否正确,并生成测试报告
打包(package),把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中
这个压缩文件就是项目的结果文件,通常 ...