- 博客(66)
- 资源 (1)
- 收藏
- 关注
原创 Jenkins10分钟搭建使用文档(jar包版,可用)
jenkins快速使用1.为什么使用jenkins?1.持续部署任何安装完成及时测试,确保其可以正常工作。项目开发开发过程中进行单元测试能够通过,但是部署到服务器上运行出现问题。那怎么做会好一些呢?仅仅单元测试还不够,各个模块都必须能够在服务器上运行。关注点持续部署的关注点在于项目功能部署至服务器后可以运行,为下一步测试环节或最终用户正式使用做好准备。2.持续集成项目开发各个小组分别负责各个具体模块开发,本模块独立测试虽然能够通过,但是上线前夕将所有模块整合到一起集成测试却发现很多问题
2020-11-10 11:01:35
396
原创 Shiro安全框架 授权+认证快速上手
Shiro+SpringBoot+Vue-Cli+Mybatis1.简介Apache Shiro 是 Java 的一个安全框架。目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 Ja
2020-09-25 15:42:25
408
原创 Mysql SQL优化
mysql数据库SQL优化1.Mysql逻辑分层,及存储引擎连接层:提供与客户端连接的服务;服务层:提供各种用户使用的接口(select.)提供SQL优化器(Mysql Query Optimizer)引擎层:提供了各种存储数据的方式(InnoDB、MyISAM);存储层:存储数据;常用执行引擎有:InnoDB(默认):事务优先(适合高并发操作,行锁)MyISAM:性能优先(表锁)查询数据库中有哪些执行引擎show engines;2.指定数据库对象的引擎:create
2020-09-25 11:44:32
243
原创 小白快速掌握Mysql以及JDBC
数据库的设计初识MysqlMySQL中数据库的类型:高级查询(一)事务、视图、索引、 备份和恢复JDBCDAO模式Jdbc连接mysql模糊查询三种操作方法:pk表示主键设计数据库的步骤:(三阶段,需求分析阶段,概要设计阶段,详细设计阶段。)需求分析阶段: 分析客户的业务和数据处理需求。概要设计阶段:绘制数据库E-R图,用于在项目团队内部,设计人员和客户之间进行沟通,确认需求信息的正确性。详细设计阶段:将E-R图转换为多张表,进行逻辑设计,确认各表的主外键,并应用数据库设计的三大范式的审核。收
2020-09-22 09:10:16
339
原创 快速对Axios进行使用
Axios使用终端使用: npm install --save axios vue-axiosmain.js添加:import axios from 'axios'Vue.prototype.$axios = axios;1.get方式this.$axios.get('/user', { params: { ID: 12345 } }) .then(function (response) { console.log(response); })
2020-09-15 20:37:13
172
原创 Vue-Cli对于Java开发工程师来说其实也容易上手
vue-cli快速上手1.简介2.安装Vue-Cli3.创建一个Vue-Cli项目4.运行创建好的项目5.组件、页面以及路由作用6.关于其他开源的组件7.作者有话说1.简介Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:通过 @vue/cli 搭建交互式的项目脚手架。通过 @vue/cli + @vue/cli-service-global 快速开始零配置原型开发。一个运行时依赖 (@vue/cli-service),该依赖:可升级;基于 webpack 构建,并带有合理
2020-09-13 01:47:35
461
原创 Quartz快速从入门到精通,不实用你给我寄刀片
通过Quartz实现定时任务1. Quartz 概述2. Quartz特点3. Quartz基本原理4.Quartz使用5.Quartz API,Jobs和Triggers1.Quartz API的关键接口:2.Job 和 Trigger6.Job与JobDetail介绍1.JobDetail(工作细节)2.JobDataMap(工作数据图)7.Quartz中Triggers介绍1.Trigger的公共属性2.优先级(priority)3.错过触发(misfire Instructions)4.日历(cal
2020-09-10 23:59:06
1719
原创 java发送QQ邮件
java发送QQ邮件1.pom.xml文件中导入依赖<dependencies> <!--JavaMail--> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</ve
2020-09-07 14:31:43
247
原创 Hexo+github搭建个人博客
hexo+github快速搭建个人博客1.需要使用的相关工具Node.js,下面是下载地址node-x86.jsnode-x64.jsGitgit-32-bit.exegit-64-bit.exeHexo#安装Hexonpm install hexo-cli -g#检查是否安装成功hexo -v检查是否安装成功,显示版本号表示成功#检查node.jsnode -vnpm -v#检查gitgit -version2.创建Github仓库3.
2020-09-01 01:36:04
381
原创 SpringCloud快速上手
SpringCloud学习SpringCloud介绍Eureka服务注册与发现Eureka如何管理服务调用服务续约、下线、剔除Eureka和Zookeeper区别搭建Eureka服务服务注册客户端负载均衡Ribbon源码分析feign详解Feign简介RestTemplate和feign区别Feign使用Hystrix详解服务雪崩的过程为什么需要断路器?Hystrix特性:Hystrix流程结构解析集成Hystrix功能路由网关(zuul)为什么需要服务网关什么是网关?使用zuulzuul过滤器分布式配置中
2020-08-27 19:54:00
1347
原创 redis快速上手
分布式缓存数据库Redis1.什么是Redis&Redis版本介绍2.Redis的获取和下载安装3.通过xftp5上传4.修改redis.conf文件5.启动redis6.SpringBoot整合Redis7.RedisUtil工具类使用8.创建一个Controller使用redis进行缓存ValueOperations 源码1.什么是Redis&Redis版本介绍redisRedis 是一个基于内存的高性能key-value数据库,是一个开源(BSD许可)的,内存中的数据结构存储
2020-08-25 15:43:36
331
原创 Linux开放端口报FirewallD is not running解决
报错FirewallD is not running的原因是防火墙未开启1.通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。使用命令:systemctl start firewalld #开启防火墙2.再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。3.再次执行执行firewall-cmd --permanent --zone=public --add
2020-08-24 17:08:21
26949
1
原创 JWT之30分钟快速使用
1.什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认.
2020-08-20 22:28:56
352
原创 mybatis+spring快速入门
SSM框架初始MyBtisSql映射文件动态SQLSpring核心概念Spring IoCSpring AOPIoC和AOP的使用扩展使用注解定义切面初始MyBtis框架的概念:框架(Framework):是一个提供了可重用的公共结构的半成品。它为我们构建新的应用程序提供了极大的便利。一方面提供了可以拿来就用的工具,更重要的是,提供了可重用的设计。框架这个词最早出现在建筑领域,指的是在建造房屋前期构建骨架。持久层框架:数据可以持久化;作用:读写数据库,简化JDBC开发;主流框架的介绍1.Str
2020-08-19 20:11:10
473
原创 Java JVM堆空间的概述
Java JVM堆空间的概述1.设置堆空间初始值和最大值2.堆的核心概述内存细分3.堆空间大小的设置4.新生代与老年代5.图解对象分配的过程6.常用调优工具7.Minor GC、Major GC与Full GC8.堆空间分代思想9.内存分配策略10.对象分配过程: TLAB11.堆空间常用的VM参数12.通过逃逸分析看堆空间的对象分配策略1.堆是分配对象存储的唯一选择吗?2.逃逸分析概述3.逃逸分析:代码优化4.逃逸分析的缺点1.设置堆空间初始值和最大值通过idea 的-VM参数设置,如下图:2.
2020-08-18 16:17:08
790
原创 Git及GitHub快速上手
Git及GitHub快速上手Git及GitHub快速玩转1.GitHub的基本概念2.登陆使用GitHub3.开源项目贡献流程4.Git安装5.Git初始化及仓库创建和操作Git安装完成之后,需要进行一些基本的信息设置初始化一个新的Git仓库创建文件修改文件删除文件6.Git管理远程仓库使用远程仓库的目的Git克隆操作Git上传文件7.分支管理1.克隆项目2.查看项目中所有分支3.创建分支4.切换分支5.提交代码至缓存区6.提交到本地仓库8.提交到远程仓库Git常用命令1. 强制上传(提交)覆盖远程文件2.
2020-08-16 23:43:23
335
原创 SpringBoot拦截器(新手快速使用)
SpringBoot快速使用拦截器编写配置类WebConfig编写拦截器TokenInterceptor编写配置类WebConfig/*** 添加@Configuration注解将配置类交于springboot托管*/@Configuration//实现WebMvcConfigurer接口public class WebConfig implements WebMvcConfigurer {//重写addInterceptors方法 @Override public void
2020-08-15 00:02:16
844
原创 URL连接外部接口工具类
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;/** * 外部接口调用工具类 */public class HtppCommonUtil { /** * * @param url 请
2020-08-13 20:48:03
257
原创 Docker指令
Docker查看内核版本#如果低于3.1是不能进行安装的uname -r卸载docker$ sudo yum remove docker docker-common docker-selinux docker-engine#或者$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-
2020-08-13 19:57:01
152
原创 Docker学习文档
DockerBuild once,Run anywhereDocker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC
2020-08-12 20:01:26
524
原创 设计模式
设计模式介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验, 模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern) 代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时 间的试验和错误总结出来的。设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂 度。<<设计模式>> 是经典的书,作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides
2020-07-29 11:27:16
178
原创 JSONArray的使用
顾名思义,JSONArray就是用来操作JSON格式中的数组例如我要获取group_id_list中的2020:{"group_id_list": ["2020"]}实现如下: //jsonObject中的数据为:{"group_id_list": ["2020"]} JSONObject jsonObject = new JSONObject(); //通过jsonObject中的getJSONArray()方法获取一个JSONArray对象 JSONArray jsonArray=jso
2020-07-12 23:29:56
1412
原创 Java+OpenCV实现人脸抓拍并保存至本地
首先下载OpenCV并安装下载后目录结构环境配置打开IntelliJ IDEA 导入opencv的jar选择前面安装好的opencv下,里面的build->java目录下有一个jar添加虚拟机指令(不添加报错!)-Djava.library.path=F:/opencv/opencv/build/java/x64(路径根据自己的实际路径来定)测试类FaceCapturedimport org.opencv.core.Core;import org.opencv.co
2020-07-07 12:04:10
1438
1
原创 Java JVM栈帧的内部结构
每个栈帧中存储着:局部变量表(Local Variables);操作数栈(Operand Stack)(或表达式栈);动态链接(Dynamic Linking)(或指向运行时常量池的方法引用);方法返回地址(Return Address)(或方法正常退出或者异常退出的定义);一些附加信息;1.局部变量表(Local Variables)局部变量表也被称为局部变量数组或本地变量表;定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引
2020-07-02 21:35:25
801
原创 JAVA JVM字节码指令集
指令码 助记符 说明0×00 nop 什么都不做0×01 aconst_null 将null推送至栈顶0×02 iconst_m1 将int型-1推送至栈顶0×03 iconst_0 将int型0推送至栈顶0×04 iconst_1 将int型1推送至栈顶0×05 iconst_2 将int型2推送至栈顶0×06 iconst_3 将int型3推送至栈顶0×07 iconst_4 将int型4推送至栈顶0×08 iconst_5 将int型5推送至栈
2020-07-01 12:16:35
312
原创 JAVA JVM栈的存储单位
栈中存储什么?每个线程都有自己的栈,栈中的数据都是以栈帧(Stack Frame)的格式存在;在这个线程上正在执行的每个方法都各自对应一个栈帧;(一个方法的执行就相当于栈帧的入栈,执行完毕后就是栈帧出栈);栈帧是一个内存区块,是一个数据集,维系着方法执行过程中的各种信息数据;栈运行原理JVM直接对Java栈的操作只有两个,就是对栈帧的压(入)栈和出栈,遵循“先进后出”/“后进先出” 原则;在一条活动线程中,一个时间点上,只会有一个活动的栈帧。即只有当前正在执行的方法的栈帧(栈顶栈帧)是有效
2020-06-30 18:43:49
578
原创 JAVA虚拟机栈的常见异常与如何设置栈的大小
1.虚拟机常见异常Java虚拟机规范允许Java栈的大小是动态的或者是固定不变的。如果采用固定大小的Java虚拟机栈,那每一个线程的Java虚拟机栈容量可以在线程创建的时候独立选定。如果线程请求分配的栈容量超过java虚拟机栈允许的最大容量,java虚拟机将会抛出一个StackOverflowError异常;如果Java虚拟机栈可以动态扩展,并且尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那Java虚拟机将会抛出一个OutOfMemoryError异
2020-06-30 14:20:09
1923
原创 JAVA虚拟机栈的主要特点
虚拟机栈出现的背景由于夸平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器荣耀实现,缺点是性能下降,实现同样的功能需要更多的指令。初步印象有不少Java开发人员一提到JAVA内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有Java堆(heap)和java栈(stack) ?为什么?内存中的栈与堆栈是运行时的单位,而堆是存储的单位;即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆
2020-06-30 14:19:13
567
原创 JAVA JVM 程序计数器(PC寄存器)
JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟;作用?PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。P..
2020-06-29 22:49:16
905
1
原创 JAVA JVM双亲委派机制
什么是双亲委派机制?JAVA虚拟机对Class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种认务委派模式。第三方API加载双亲委派机制的优势是什么?避免类的重复加载保护程序安全,防止核心API被随意篡改,例如自己创建一个java.lang包,在java.lang包下创建一个String类,这个String并不会篡改核心API中的Str
2020-06-29 11:31:38
243
原创 JVM 用户自定义类加载器实现步鄹
开发人员可以通过继承抽象类java.lang.ClassLoader类的方式,实现自己的类加载器,以满足一些特殊的需求;在JDK1.2之前,在自定义类加载器时,总会去继承ClassLoader类并重写loadClass()方法,从而实现自定义的类加载器,但是在JDK1.2之后已不再建议用户去覆盖loadClass()方法,而是建议把自定义的类加载逻辑写在findClass()方法中;在编写自定义类加载器时,如果没有太过复杂的需求,可以直接继承URIClassloader类,这样就可以避免自己去编写fi.
2020-06-29 10:56:35
238
原创 JVM 引导类、扩展类、系统类加载器的实现
虚拟机自带的加载器启动类加载器(也称引导类加载器,Bootstrap、ClassLoader)这个类加载使用C/C++语言实现的,嵌套在JVM内部。它用来加载Java的核心库(JAVA_HOME/jre/lib/rt.jar、resources.jar或sun.boot.class.path路径下的内容),用于提供JVM自身需要的类;并不继承自java.lang.ClassLoader,没有父加载器;加载扩展类和应用程序加载器,并指定为他们的父类加载器;出于安全考虑,Bootstrap启动
2020-06-29 09:50:35
445
原创 JAVA JVM 类加载器与类的加载过程
类加载器与类的加载过程类加载器子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识。ClassLoader只负责Class文件的加载,至于它是否可以运行,则由ExecutionEngine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)类加载器ClassLoader角色class file存在于本地硬盘上,可以理解为
2020-06-29 09:00:20
159
原创 JVM 类加载器的使用
/** * 创建人: 渣高帆 <br/> * 创建时间: 2020/6/28 20:58<br/> * JDK 1.8 */public class jvm_Lodaer { public static void main(String[] args) { //获取系统类加载器 ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); //
2020-06-28 21:06:44
122
原创 JVM发展历程
1.Sun Classic VM早在1996年Java1.0版本的时候,Sun公司发不了一款名为Sun Classic vm的java虚拟机,它同时也是世界上第一款商业java虚拟机,jdk1.4时完全被淘汰这款虚拟机内部只提供解释器。如果使用JIT编译器,就需要进行外挂。但是一旦使用了JIT编译器,JIT就会接管虚拟机的执行系统。解释器就不再工作。解释器和编译器不能配合工作。现在Hotspot内置了此虚拟机;2.Exact VM为了解决上一个虚拟机问题,jdk1.2时,sun提供了此虚
2020-06-27 01:57:01
717
原创 JVM的生命周期
虚拟机的启动java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。虚拟机的执行一个运行中的java虚拟机有着一个清晰的任务:执行java程序。程序开始执行时他才运行,程序结束时他就停止;执行一个所谓的java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程。虚拟机的退出程序正常执行结束程序在执行过程中遇到了异常或错误而异常终止由于操作系统出..
2020-06-25 03:17:49
111
原创 Java JVM学习
JVMjava虚拟机(java virtual machine 简称JVM):一种能够运行java字节码的虚拟机,作为一种编程语言的虚拟机,实际上不只是专用于java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。比如kotlin、scala等。JVM有很多,不只是Hotspot,还有JRockit、J9等等JVM的基本结构JVM由三个主要的子系统构成类加载子系统运行时数据区(内存结构)执行引擎JVM又称为跨语言平台:JVM可以运行各种
2020-06-24 13:24:40
177
原创 Java8新特性Lambda表达式
java8新特性1.简介为什么使用java8新特性?速度更快代码更少(增加了新的语法lambda表达式)强大的Stream API便于并行最大化减少空指针异常OptionalNashom引擎,允许在JVM上运行JS应用java8是oracle公司于2014年3月发布,可以看成是自java5以来最具革命性的版本。java8为 java语言、编译器、类库、开发工具与JVM带来了大量新特性2.lambda表达式Lambda是一个匿名函数,我们可以把lambda表达式理解为是一
2020-06-23 18:26:15
207
原创 Maven Web项目使用MD5加密数据库
pom.xml文件导入jar <!-- MD5加密 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency&g
2020-06-23 12:13:08
913
Binary Viewer.exe
2020-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人