- 博客(101)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 完全开源的代码生成器之code-generator
code-generator是一个低代码平台, 可以解决90%单表增删改查工作量, 你可以通过自定义代码模板来生成适合自己的代码。目前该系统主要针对的是语言是java, 数据源是mysql(其他数据库待测试),数据源支持mysql, oracle, dm, PostgreSql等数据库。支持vue前端吗?理论上只要你定义好了vue代码模板, 也是可以支持前端代码生成java8运行环境, 数据存储使用的是内嵌h2数据库(可切换到mysql)构建代码采用 maven3.8简介常用代码模板。
2022-12-13 20:03:07
5767
原创 基于SpringBoot2.7和Vue3的快速开发平台
羚羊系统专注于实际业务场景, 集成多个功能模块, 方便快速开发功能, 避免重复开发,目前支持微服务和单体部署无缝切换,代码无需改动, 项目100%开源,允许商用基于SpringCloud 2023、SpringBoot2.7, Oauth2的RBAC权限系统封装很多常用通过框架组件, 开箱即用欢迎使用本项目并提出宝贵建议, 如果项目对你有用,麻烦点击一下star😀。
2023-07-08 13:49:43
445
原创 JVM之双亲委派机制&沙箱安全机制
双亲委托机制所谓双亲委托机制,就是加载一个类,会先获取到一个系统类加载器AppClassLoader的实例,然后往上层层请求,先由BootstarpClassLoader去加载,如果BootStrapClassLoader发现没有,再下发给ExtClassLoader去加载,还是没有,才由AppClassLoader去加载。如果还是没有,则报错JDK提供java.lang.String类,默认在rt.jar这个包里面,所以,默认会由BootstarpClassLoader加载,所以,我们自己编
2021-01-24 08:59:38
192
原创 JVM之深入理解堆
别名幸存区0(s0) —> from / to幸存区1(s1) —> to / from堆的核心概念堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。// 如果设置最小堆内存和最大堆内存,建议设置成相同值-Xms10m
2021-01-24 08:59:26
510
原创 JVM之类加载器
负责加载class文件,class文件在文件开头有棒定的文件标示, 将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定echo %JAVA_HOME%echo %PATH%echo %CLASSPATH%类加载器分为两种,一种是虚拟机自带的类加载器,另一种是自定义的类加载器。我们通常不会自定义类加载器,而是使用java自带的类加载器,但是在框架、服务
2021-01-24 08:59:03
187
原创 你说你做过JVM调优和参数配置,请问如何查看JVM系统默认值
JVM的参数类型标配参数 (了解)-version-helpjava -showversionx参数(了解)-Xint:解释执行-Xcomp:第一次使用就编译成本地代码-Xmixed:混合模式xx参数(重点)Boolean类型公式-XX:+或者-某个属性值+表示开启 -表示关闭如何查看一个正在运行中的java,它的jvm参数是否开启?具体参数是多少jps: 查看java后台进程jinfo: 正在运行的java程序后台信息eg:jinfo -flag PrintGC
2021-01-24 08:58:48
377
原创 JVM之栈 Java Stack
1.Stack 栈是什么栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就Over,生命周期和线程一致,是线程私有的。8种基本类型的变量+对象的引用变量+实例方法都是在函数的栈内存中分配。java培训2.栈存储什么栈帧中主要保存3 类数据:本地变量(Local Variables):输入参数和输出参数以及方法内的变量;栈操作(Operand Stack):记录出栈、入栈的操作;栈帧数据
2021-01-24 08:58:02
122
原创 对于JDK自带的JVM监控和性能分析工具用过哪些?一般怎么用
是什么命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。性能分析工具
2021-01-24 08:57:40
311
原创 你平时工作用过的JVM常用基本配置参数有哪些?
基础知识case常用参数-Xms初始化大小内存,默认为物理内存1/64等价于-XX:InitialHeapSize-Xmx最大分配内存,默认物理内存的1/4等价于-XX:MaxHeapSize-Xss设置单个线程栈的大小,一般默认为512K~1024K等价于-XX:ThreadStackSize-XX:ThreadStackSize = 0 , 表示使用默认512K~1024K-XX:ThreadStackSize != 0 , 表示使用自己设置的-Xmn设置年轻代
2021-01-24 08:57:25
184
原创 JVM之面试题
请谈谈你对JVM的理解?java8的虚拟机有什么更新?什么事OOM?是什么StackOverflowError?有哪些方法分析?JVM的常用参数调优你知道哪些?谈谈JVM中,对类加载器的认识?
2021-01-24 08:57:07
79
原创 jvm之常用的性能调优工具
JDK命令行Eclipse:Memory Analyzer ToolJconsoleVisual VM(实时监控 推荐~)Jprofiler(推荐~)Java Flight Recorder(实时监控)GCViewerGCEasy
2021-01-23 14:36:40
99
原创 JVM之堆内存调优
堆结构java7java8在Java8中,永久代己经被移除,被一个称为元空间的区域所取代。元空间的本质和永久代类似。元空间与永久代之间最大的区别在于:永久带使用的JVM的堆内存,但是java8以后的元空间并不在虚拟机中而是使用本机物理内存。因此,默认情况下,元空间的大小仅受本地内存限制。类的元数据放入native memory,字符串池和类的静态变量放入java堆中,这样可以加载多少类的元数据就不再由MaxPermSize控制,而由系统的实际可用空间来控制。默认出厂JVM元空间只会用
2021-01-23 14:35:45
286
原创 JVM之本地接口Native
本地接口的作用就是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,换而言之,Java的刚出现的时候(1995年10月)正式C/C++横行的时候,如果没有调用C/C++的程序很难立足,于是在内存中专门开辟了一块区域处理标记为native的方法,在Execution Engine执行的时候加载native libraies。目前该方法使用的越来越少了,除非是与硬件有关的应用,比如通过Java程序驱动打印机或者Java系统管理生产设备,在企业级应用中已经比较少见。因为现在的异构领域间的通信很发达
2021-01-23 14:33:54
160
原创 JVM之PC寄存器
PC寄存器( PC register ):每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器。PC寄存器里保存有当前正在执行的JVM指令的地址。 每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。保存下一条将要执行的指令地址的寄存器是 :PC寄存器。PC寄存器的内容总是指向下一条将被执行指令的地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用
2021-01-23 14:33:24
272
原创 JVM之GC垃圾回收
GC垃圾回收日志信息含义伊甸园区满了发生GC[GC (Allocation Failure) [PSYoungGen: 2039K->491K(2560K)] 2039K->731K(9728K), 0.0010255 secs][Times: user=0.00 sys=0.00, real=0.10 secs] Full GC垃圾回收日志信息含义养老区满了发生Full GC[Full GC (Allocation Failure) [PSYoungGen: 480K-&g
2021-01-23 14:31:21
536
原创 JVM之方法区、永久代(PermGen space)、元空间(Metaspace)三者的区别
JVM体系结构根据 JVM 规范,JVM 运行时区域大致分为 方法区、堆、虚拟机栈、本地方法栈、程序计数器 五个部分。1)、方法区方法区是JVM 所有线程共享。主要用于存储类的信息、常量池、方法数据、方法代码等。方法区逻辑上属于堆的一部分,但是为了与 堆 进行区分,通常又叫 非堆。 关于 方法区内存溢出 的问题会在下文中详细探讨。2)、堆堆内存也是 JVM 所有线程共享的部分,在虚拟机启动的时候就已经创建。所有的对象和数组都在堆上进行分配。这部分空间可通过 GC 进行回收。当申请不到空间时会抛
2021-01-23 14:27:45
1102
原创 前后端分离 , 如何保证接口安全性 ?
1. 完整的代码前端vue代码后端java代码2. Api有哪些安全问题?http接口—前后端分离mvvm3. Token授权机制用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证,如果Token不存在,说明请求无效。4. 时间戳超时机制时间戳,是客户端调用接口时对应的当前时间戳,时间戳用于防止DoS攻击。当黑客劫持了请求的url去DoS攻击,每次调用接口时接口都会判
2021-01-23 14:24:02
11686
18
原创 面试题之java代码块执行顺序
package com.itvip666.jucjvm;class CodeBlock1 { { System.out.println("CodeBlock1 ************ 构造块111"); } static { System.out.println("CodeBlock1 ************ 静态代码块222"); } public CodeBlock1() { System.out.print
2021-01-23 14:17:10
227
转载 使用列子讲解数据库三大范式
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。下面就简单介绍下这三个范式。第一范式(1NF)强调的是列的原子性,即列不能够再分成
2021-01-23 14:17:00
125
原创 请谈谈你对OOM的认识?
Throwable类关系java.lang.StackOverFlowError通过迭代,反复调用方法,使栈区撑爆,默认大小是512k/** * Created by gysui on 2020/12/7 */public class StackOverFlowError { public static void main(String[] args) { stackOverFlowError(); } private static void stac
2021-01-22 20:13:40
172
原创 强引用、软引用、弱引用、虚引用分别是什么?
整体架构强引用(默认支持模式)当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,死都不收。强引用是最常见的普通对象引用,只要还有前饮用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰到这种对象。在Java中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾机制回收的,即使该对象以后永远都不能被用到,JVM也不会回收。因此强引用是造成Java内存泄露的主要原因之一。
2021-01-22 20:10:28
889
原创 java之包装类
包装类java.lang包下为8种基本数据类型提供对应的包装类8中基本数据类型对应的包装类包装类的作用(重要)包装类提供了字符串、基本数据类型和包装类相互转化的方法包装类的基本使用数字基本数据类型的包装类都继承了Number类,它们的使用方式相似,下面以常用的基本数据类型int对应的包装类Integer为例说明数字类型包装类的使用。基本数据类型 int值转化为Integer类型对象int i = 20;Integer integer1 = new Integer(i);//方法一In
2021-01-22 20:09:01
116
原创 java之方法(非常重要)
1. 函数的概念java中的方法就是函数,只是叫法不同而已示意图2. 函数调用在主函数中调用自定义的函数。3. 函数中的参数参数 运行函数时需要的已知条件传一个参数传多个参数4. 形参与实参形参与实参一点关系也没有,即使一样也互不影响。5. 返回值返回值 函数执行结束后的结果,返回到调用的位置。只带返回值的函数...
2021-01-22 20:06:32
140
原创 maven 修改maven本地仓库的位置
<localRepository>D:\\Docments\\m2\\repository</localRepository>
2021-01-22 20:04:25
192
原创 java中Statement详细用法
java中Statement详细用法1、创建 Statement 对象建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法createStatement 创建,如下列代码段中所示:Connection con = DriverManager.getConnection(url, “sunny”,"");Statement stmt = con.createStatement();为了执行 Statement 对象,被发送到数据库的
2021-01-22 20:03:26
5056
1
原创 java之注释语法
1. 快速入门之无序列表/** * 这是一个用户登录方法 * <h1>你要遵循以下几点要求</h1> * <ul> * <li>雪碧</li> * <li>可乐</li> * <li>凉茶</li> * </ul> */ public void login(){ Syste
2021-01-22 20:02:46
244
原创 java之反射
1. java反射基础反射的概念主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射的应用 1. Spring框架:IOC(控制反转) 2. Hibernate框架:关联映射等 3. 白盒测试相关APIjava.lang包下 1. Class<T>:表示一
2021-01-22 20:00:43
133
原创 java网络编程基础知识
1. 计算机网络的基本概念网络:多台计算机使用网络设备互联在一起,计算机之间可以进行通信,这样就组成了一个计算机网络。网络设备:集线器(HUB),路由器,交换机,猫(ADSL),网卡网络媒介:网线,无线网络分类:局域网,校园网,城域网,广域网(互联网)网络功能:共享软件资源,硬件资源(打印机,硬盘),综合信息服务(百度),数据的传输。2. 常见的网络设备 猫(调制解调器):调制解调器,是调制器和解调器的缩写 ,一种计算机硬件 ,它能把计算机的数字信号翻译成可沿普通电话线传送的模拟信号,而这些
2021-01-22 20:00:36
364
原创 java网络编程之Socket
1. 建立Socket连接1.1. 基本知识TCP编程: 1. 客户端/服务端(Client/Server) 2. C/S架构我们开发一种产品时,需要编写客户端程序和服务端程序,服务端程序放在服务器上,客户端程序给用户使用。对于网络编程:一台电脑,代码也认为是多台电脑Socket(网络套接字):可以认为是一条网络连接ServerSocket:在指定端口建立监听,可以接收socketSocket对象中可以得到输入流和输出流,直接使用即可, 1. 输入流可以从网络对端接收数据, 2. 输出
2021-01-22 04:29:44
183
原创 java之解析线程不安全
线程不安全现在有一个文本文档,共享到网络上,甲乙丙丁(4个线程)可以访问该文档,同时操作文件,都对该文件进行追加内容,然后他们都对其进行了保存,谁最后保存的,该文档就显示谁的内容,其他人追加的内容丢失。线程安全现在甲打开文件,正在追加内容,这时乙想要打开文件,会提示有用户正在操作文件,请稍等,等甲修改完文件后,并保存后,这时乙才可以打开该文件,其他人也修改一样。线程同步就是排队问题。也称线程安全。...
2021-01-21 20:14:33
74
原创 java之泛型
1. 泛型的基本用法/** * 泛型的基本用法 泛型是就是参数化类型 * * @author 27823 * * @param <T>在实例化的时候指定类类型 */public class MyList<T> { public void add(T item) { } public T get(int index) { return null; }}public class Test { public static voi
2021-01-21 20:14:02
105
原创 java之UUID.randomUUID()简单介绍
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需
2021-01-21 20:13:31
2949
原创 java中的集合
1. java集合类简介 集合类存放于java.util包中,集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference),集合类型主要有3种:set(集)、list(列表)和map(映射)。通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器,而且不限制对象的数量。2. 集合和数组的区别 数组也可以把许多对象放在一起管理和维护,但是数组的长度是固定的,长度和空间创建之后不能进行修改。我们可以认为集合是一个长度自动化的
2021-01-21 20:12:54
494
原创 java之set转数组
列public class Test{ public void test1(){ Set<String> set = new HashSet<>(); set.add("1"); set.add("2"); set.add("3"); set.add("4"); set.add("5"); set.add("6"); }}String[] arr = set.toArray(new String[set.size()]);for(Stri
2021-01-21 20:06:46
13459
原创 java将Map转换为List
实例List<BlogComment> blogCommentListResult = new ArrayList<>(blogCommentMap.values());Map数据转换为自定义对象的List,例如把map的key,value分别对应Person对象两个属性:List<Person> list = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey())).
2021-01-21 20:06:14
12367
原创 Spring Boot出现 java.lang.IllegalArgumentException. Request header is too large 解决方法
问题分析:请求头超过了tomcat的限值。本来post请求是没有参数大小限制,但是服务器有自己的默认大小。java.lang.IllegalArgumentException: Request header is too large at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:766) ~[tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.c
2021-01-21 20:05:26
861
原创 java之多线程
程序与进程程序:一段静态的代码,是一个普通的文件。进程:程序一次动态执行过程,程序被加载到内存条中进行执行,最后释放,加载/执行/释放也是进程的生命周期。任务:进程也可以被称为任务,基于操作系统运行的。支持多任务的系统被称为多任务系统(Windows)。多线程与进程一个进程中也可以有多个任务一起执行,比如QQ,视频的同时也可以语音,打字,还可以发表情。每个任务都被称为一个线程。多线程奥义:并发:任务同时发生,同时进行,被称为并发(并行),也就是多线程。线程不能独立纯在,必须依赖于进程,在进
2021-01-21 20:04:30
156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人