
笔记
有点晚了.
Java菜鸡
展开
-
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 · 261 阅读 · 0 评论 -
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 · 154 阅读 · 0 评论 -
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 · 537 阅读 · 0 评论 -
设计模式
设计模式介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验, 模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern) 代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时 间的试验和错误总结出来的。设计模式的本质提高 软件的维护性,通用性和扩展性,并降低软件的复杂 度。<<设计模式>> 是经典的书,作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides原创 2020-07-29 11:27:16 · 182 阅读 · 0 评论 -
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 · 1417 阅读 · 0 评论 -
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 · 1451 阅读 · 1 评论 -
Java JVM栈帧的内部结构
每个栈帧中存储着:局部变量表(Local Variables);操作数栈(Operand Stack)(或表达式栈);动态链接(Dynamic Linking)(或指向运行时常量池的方法引用);方法返回地址(Return Address)(或方法正常退出或者异常退出的定义);一些附加信息;1.局部变量表(Local Variables)局部变量表也被称为局部变量数组或本地变量表;定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,这些数据类型包括各类基本数据类型、对象引原创 2020-07-02 21:35:25 · 815 阅读 · 0 评论 -
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 · 337 阅读 · 0 评论 -
JAVA JVM栈的存储单位
栈中存储什么?每个线程都有自己的栈,栈中的数据都是以栈帧(Stack Frame)的格式存在;在这个线程上正在执行的每个方法都各自对应一个栈帧;(一个方法的执行就相当于栈帧的入栈,执行完毕后就是栈帧出栈);栈帧是一个内存区块,是一个数据集,维系着方法执行过程中的各种信息数据;栈运行原理JVM直接对Java栈的操作只有两个,就是对栈帧的压(入)栈和出栈,遵循“先进后出”/“后进先出” 原则;在一条活动线程中,一个时间点上,只会有一个活动的栈帧。即只有当前正在执行的方法的栈帧(栈顶栈帧)是有效原创 2020-06-30 18:43:49 · 584 阅读 · 0 评论 -
JAVA虚拟机栈的常见异常与如何设置栈的大小
1.虚拟机常见异常Java虚拟机规范允许Java栈的大小是动态的或者是固定不变的。如果采用固定大小的Java虚拟机栈,那每一个线程的Java虚拟机栈容量可以在线程创建的时候独立选定。如果线程请求分配的栈容量超过java虚拟机栈允许的最大容量,java虚拟机将会抛出一个StackOverflowError异常;如果Java虚拟机栈可以动态扩展,并且尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那Java虚拟机将会抛出一个OutOfMemoryError异原创 2020-06-30 14:20:09 · 1940 阅读 · 0 评论 -
JAVA虚拟机栈的主要特点
虚拟机栈出现的背景由于夸平台性的设计,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器荣耀实现,缺点是性能下降,实现同样的功能需要更多的指令。初步印象有不少Java开发人员一提到JAVA内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有Java堆(heap)和java栈(stack) ?为什么?内存中的栈与堆栈是运行时的单位,而堆是存储的单位;即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆原创 2020-06-30 14:19:13 · 578 阅读 · 0 评论 -
JAVA JVM 程序计数器(PC寄存器)
JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟;作用?PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。P..原创 2020-06-29 22:49:16 · 910 阅读 · 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 · 252 阅读 · 0 评论 -
JVM 用户自定义类加载器实现步鄹
开发人员可以通过继承抽象类java.lang.ClassLoader类的方式,实现自己的类加载器,以满足一些特殊的需求;在JDK1.2之前,在自定义类加载器时,总会去继承ClassLoader类并重写loadClass()方法,从而实现自定义的类加载器,但是在JDK1.2之后已不再建议用户去覆盖loadClass()方法,而是建议把自定义的类加载逻辑写在findClass()方法中;在编写自定义类加载器时,如果没有太过复杂的需求,可以直接继承URIClassloader类,这样就可以避免自己去编写fi.原创 2020-06-29 10:56:35 · 244 阅读 · 0 评论 -
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 · 450 阅读 · 0 评论 -
JAVA JVM 类加载器与类的加载过程
类加载器与类的加载过程类加载器子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识。ClassLoader只负责Class文件的加载,至于它是否可以运行,则由ExecutionEngine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)类加载器ClassLoader角色class file存在于本地硬盘上,可以理解为原创 2020-06-29 09:00:20 · 163 阅读 · 0 评论 -
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 · 126 阅读 · 0 评论 -
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 · 726 阅读 · 0 评论 -
JVM的生命周期
虚拟机的启动java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。虚拟机的执行一个运行中的java虚拟机有着一个清晰的任务:执行java程序。程序开始执行时他才运行,程序结束时他就停止;执行一个所谓的java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程。虚拟机的退出程序正常执行结束程序在执行过程中遇到了异常或错误而异常终止由于操作系统出..原创 2020-06-25 03:17:49 · 116 阅读 · 0 评论 -
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 · 186 阅读 · 0 评论 -
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 · 210 阅读 · 0 评论 -
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 · 921 阅读 · 0 评论 -
自定义注解通过Reflections获取被注解过的类
pom.xml文件中导入Reflections架包 <!--使用 Reflections 可以查询以下元数据信息: 1)获得某个类型的所有子类型 2)获得标记了某个注解的所有类型/成员变量,支持注解参数匹配。 3)使用正则表达式获得所有匹配的资源文件 4)获得所有特定签名(包括参数,参数注解,返回值)的方法--> <dependency> <groupId>org.r原创 2020-06-16 17:09:31 · 1582 阅读 · 2 评论 -
java反射机制、自定义注解以及元注解的使用
什么是注解1.Annotation是从JDK5.0开始引入的新技术2.Annotation作用:不是程序本身,可以对程序作出解释可以被其他程序(比如:解析器等)读取3.Annotation的格式:注解是以“@注释名”在代码重存在的,还可以添加一些参数值例如:@SuppressWarnings(value=“unchecked”);4.Annotation在哪里使用?可以在package、class、method、field等上面;内置注解1.Override注解表示方法声原创 2020-06-16 11:49:05 · 317 阅读 · 0 评论 -
Spring Boot 进行国际化信息(i18n)解析
Spring Boot自动配置国际化信息解析@ConfigurationProperties(prefix = "spring.messages")public class MessageSourceAutoConfiguration { /** * Comma-separated list of basenames (essentially a fully-qualified classpath * location), each following the Resource原创 2020-06-14 01:07:53 · 813 阅读 · 0 评论 -
Web开发国际化资源文件命名规范
i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。包名命名: i18n18n_en.properties:所有英文语言的资源i18n_en_US.properties:美国地区,英文语言的资源i18n_zh.properties:所有中文语言的资源i18n_zh_CN.properties:中国大陆的,中文语言的资源i18n_zh_HK.properties:中国香港,中文语言的资源其他命名规范: i18n_加地原创 2020-06-13 22:07:40 · 592 阅读 · 0 评论 -
WebMvcConfigurerAdapter替代
Spring 5.0后,WebMvcConfigurerAdapter被废弃,取代的方法有两种:实现 WebMvcConfigurer 接口或继承WebMvcConfigurationSupport类implements WebMvcConfigurer(官方推荐)extends WebMvcConfigurationSupport使用第一种方法是实现了一个接口,可以任意实现里面的方法,不会影响到Spring Boot自身的@EnableAutoConfiguration,而使用第二种方法相当于原创 2020-06-13 11:14:15 · 547 阅读 · 0 评论 -
Thymeleaf链接表达式
由于它们的重要性,URL是Web应用程序模板中的一等公民,而Thymeleaf Standard Dialect对它们有一种特殊的语法,该@语法为:@{…}URL有不同类型:绝对网址: http://www.thymeleaf.org相对URL,可以是:相对页面: user/login.html上下文相关:(/itemdetails?id=3服务器中的上下文名称将自动添加)相对于服务器:(~/billing/processInvoice允许在同一服务器中的另一个上下文(=应用程序)中调用URL。原创 2020-06-13 09:49:46 · 3027 阅读 · 0 评论 -
使用Mybatis-Plus快速进行增删改查
pom.xml引入jar <!-- mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version>原创 2020-06-11 14:58:54 · 615 阅读 · 0 评论 -
日志框架
市面上的日志框架;JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…日志门面 (日志的抽象层) 日志实现JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging Log4j JUL(java.util.logging) Log4j2 Logback左边选一个门面(抽象层)、右边来选一个实现;日志门面: SLF4J;日志实现:Logback;Sp原创 2020-06-10 21:47:30 · 153 阅读 · 0 评论 -
Spring Boot介绍
spring boot是什么?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是一种思想,在操作方面是指在spring配置文件中创建,依赖注入即为由spring容器为应用程序的某个对象提供资源,比如 引用对象、常量数据等。SpringB.原创 2020-06-08 14:03:40 · 254 阅读 · 0 评论 -
Spring Boot配置文件的多环境实现
**1、多Profile文件我们在主配置文件编写的时候,文件名可以是application-{profile}.properties/yml //{profile}为自定义的名称默认使用application.properties的配置;2、yml支持多文档块方式server: port: 8081spring: profiles: active: prod //来指定使用的profile---//使用---进行隔层server: port: 8083sprin原创 2020-06-06 15:35:59 · 116 阅读 · 0 评论 -
Spring Boot的@PropertySource使用
标题@PropertySource注解的使用@PropertySource(value = {“classpath:parson.properties”})导入指定的配置文件注入值,配合@ConfigurationProperties一起使用我的JAVA Bean/** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = "person原创 2020-06-05 10:22:21 · 330 阅读 · 0 评论 -
Spring MVC 使用ajax进行文件上传
Maven的pom文件中导入jar<!--使用文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency> <de原创 2020-06-04 19:15:18 · 255 阅读 · 0 评论 -
使用Date和SimpleDateFormat获取当前系统时间
//创建一个Date类,得到当前系统时间 Date dateTime=new Date(); //日期格式函数 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //将当前时间转换格式,返回String类型 String currentTime=df.format(dateTime); //将String类型转换成date类型,主要格式必须是yyyy-MM-dd HH:mm:ss相同 Date dat原创 2020-06-04 16:51:20 · 3924 阅读 · 2 评论 -
JQuery选择器
JQuery选择器的优势:1.简介的写法2.完善的处理机制JQuery选择器的类型:1.通过CSS选择器选择元素。1).基本选择器2).层次选择器3).属性选择器2.通过过滤选择器选择元素。1).基本过滤选择器。2).可见性选择器。基本选择器1.标签选择器:匹配指定的标签名元素;2.类选择器:匹配指定的class元素;3.Id选择器:匹配指定的id元素;4.并集选择器:将每个选择器匹配的元素合并后一起返回,例如:KaTeX parse error: Expected 'EOF原创 2020-06-02 15:31:56 · 148 阅读 · 0 评论 -
mybatis面试题
1、什么是Mybatis?1、Mybatis 是一个半 ORM( 对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身, 不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能, 灵活度高。2、MyBatis 可以使用 XML 或注解来配置和映射原生信息, 将 POJO 映射成数据库中的记录, 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。3、通过 xml 文件或注解的方式将转载 2020-05-31 17:29:37 · 146 阅读 · 0 评论 -
SSM三级分类
查看数据库表结构这里是通过parentId去连接id,以下是mapper.xml文件代码<select id="selectAppCategoryAll" resultType="com.zgf.pojo.AppCategory"> select * from app_category <where> <if test="parentId !=null and parentId != ''">原创 2020-05-30 14:48:01 · 745 阅读 · 1 评论 -
Idea安装Vue
前提需安装Node.js,并配置好环境变量,不会配置的可自己百度然后在IDEA中的自带Terminal里,运行脚本以验证是否安装成功,IDEA终端Terminal打开方法:在IDEA中点击view→tool window→Terminal也可以用快捷键win+r弹出运行框,然后输入cmd,以打开cmd终端命令:Terminal在Terminal中输入 : npm install -g cnpm --registry=https://registry.npm.taobao.org, 然后回车原创 2020-05-29 11:11:48 · 621 阅读 · 0 评论 -
Linux命令
用户2种:1)系统用户 root(最大权限,类似于没有设置启动密码的电脑)2)用户 wuchao(局限性小,私密性高点)虚拟机注意事项:1)虚拟机中的文件不能直接拖拽,需要命令操作。2)从本地到虚拟机的文件传输也是一样的原理,因为系统不同(win10VS Linux),所以需要云端XFTP来传送。并且只能传给wuchao用户,不能直接传给系统用户root(无权限)3)那就只能从wuchao用户这里通过命令转给root(cp复制,mv移动)4)虚拟机的命令切记 一定要注意空格,严格区分大小写原创 2020-05-26 19:41:47 · 130 阅读 · 0 评论