- 博客(129)
- 资源 (2)
- 收藏
- 关注
原创 再谈java多线程
线程与进程进程正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。线程是进程中的单个顺序控制流,是一条执行路径一个进程如果只有一条执行路径,则称为单线程程序。一个进程如果有多条执行路径,则称为多线程程序。关系➢Java对操作系统提供的功能进行封装,包括进程和线程➢运行一个程序会产生一个进程,进程包含至少一个线程➢每个进程对应一个JVM实例,多个线程共享JVM里的堆➢Java采用单线程编程模型,程序会自动创建主线程➢主线程可以创建子线程,
2020-07-11 20:13:56
425
原创 Vue-Cli脚手架的使用
步骤安装node.js,并配置环境变量使用nmp命令,安装vue Cli,npm install -g vue-cli在要创建项目所在的文件夹下使用命令vue init webpack 项目名创建项目。创建过程中会有询问一些问题,根据实际需求选择回答即可,就能创建了。直到出现Project init finished!,即创建完成。进入项目后使用npm start,当看见Compiled successfully就说明编译成功了,使用提供的端口就可以看见项目主页了。目录介绍在
2020-07-06 19:21:36
301
原创 数据结构-动态数组实现栈
栈Stack栈也是一种线性结构,相比数组,栈对应的操作是数组的子集栈是一种后进先出的数据结构,只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶手写一个栈创建一个栈接口,包含哪些具体方法。public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}利用动态数组,实现一个栈结构public class
2020-07-01 15:39:44
292
原创 数据结构-数组
数组数组的概念这里不在赘述了。手写一个数组容器包含查询元素、添加元素、获取元素、删除元素自动扩容等功能,支持泛型。根据数组特性在对数组进行删除元素时,要对元素进行移位,头插和尾插添加元素时也要对数组元素进行移位。扩容时扩容因子,先暂时设置为2,因为在扩容时,对新的数组容量其实不好判断,扩容时应该与当前数据量是有关的,也就是应该和当前数组的元素个数是同一个数量级的。“缩容”时,size 为 data.length / 4 时才进行缩容,这里不设置为size 为 data.length / 2,是
2020-06-29 17:42:12
227
原创 MySQL锁问题
文章目录锁概述锁分类Mysql的锁MyISAM 表锁如何加表锁读锁案例写锁案例结论查看锁的争用情况InnoDB 行锁行锁介绍背景知识InnoDB 的行锁模式案例准备工作行锁基本演示无索引行锁升级为表锁间隙锁危害InnoDB 行锁争用情况总结锁概述锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库
2020-06-27 21:41:49
192
原创 常用SQL技巧
SQL执行顺序编写顺序SELECT DISTINCT <select list>FROM <left_table> <join_type>JOIN <right_table> ON <join_condition>WHERE <where_condition>GROUP BY <group_by_list>HAVING <having_condition>ORDER BY <o
2020-06-27 21:19:50
131
原创 sql优化的具体方法
文章目录使用索引避免索引失效查看索引使用情况优化insert语句优化order by语句优化group by语句优化嵌套查询优化or语句优化分页查询方式1方式2使用SQL提示USE INDEXIGNORE INDEXFORCE INDEX使用索引索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。create table `tb_seller` ( `sellerid` varchar (100), `name` varchar (100),
2020-06-27 16:57:06
1233
原创 sql优化相关概念,explain的使用说明
文章目录背景查看sql执行效率定位低效率执行SQLexplain分析执行计划explain 之 idexplain 之 select_typeexplain 之 tableexplain 之 typeexplain 之 keyexplain 之 rowsexplain 之 extrashow profile分析SQL背景在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生
2020-06-27 12:43:28
624
原创 MySQL存储引擎介绍
MySQL体系结构整个MySQL Server由以下组成连接层最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。服务层第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化
2020-06-27 10:04:00
207
原创 事务、触发器、视图
DELIMITER该关键字用来声明SQL语句的分隔符 , 告诉 MySQL 解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。触发器介绍触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。使用别名 OLD
2020-06-27 09:24:22
153
原创 MySQL中的索引
文章目录索引概述索引优势劣势索引结构BTREE 结构B+TREE 结构索引分类索引语法索引设计原则索引概述索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二
2020-06-27 08:56:40
578
原创 网络中的7层协议
物理层机械、电子、定时接OK通信信道上的原始比特流传输。例如:机器a给机器b发送比特流,机器b接收的过程,物理层,定义了物理设备的标准,如网线类型、光纤的接口类型、各种传输介质的传输速率。作用就是传输比特流,或者是2进制流转为电流强弱进行传输,到达目的后再转换为2进制机器码(数模转换、模数转换),例如网卡就是工作在这一层的。数据链路层物理寻址,同时将原始别特流转变为逻辑传输线路。在传输比特流的过程中可能会出现错传、重复传、漏传(数据包的丢包、重复包、出错、乱序)等的可能,数据链路层定义了如何格式化数.
2020-06-21 19:19:49
303
原创 垃圾回收器总结、G1回收器详解
文章目录导论Serial回收器:串行回收ParNew回收器:并行回收Parallel Scavenge回收器:吞吐量优先CMS回收器:低延迟G1回收器:区域化分代式特点使用场景分区Region:化整为零回收过程导论7个经典收集器与垃圾分代之间的关系图垃圾收集器的组合关系最新图(jdk14之前),(虚线是jdk8不包括jdk8之前的关系,实线是jdk8之后的关系)Serial回收器:串行回收Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。Seria
2020-06-15 11:35:40
1037
原创 垃圾回收器相关概念
文章目录GC分类与性能指标GC分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。...
2020-06-14 11:43:37
185
1
原创 垃圾回收的相关概念
System.gc()在默认情况下,通过system.gc ()或者Runtime. getRuntime() .gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。其底层是调用了System.getRuntion().gc();然而System. gc ()调用附带一个免责声明,无法保证对垃圾收集器的调用(不一定执行或者说不一定及时执行,这个方法仅仅只是提醒jvm希望jvm去调用gc)。与System.runFinalization();相反的是,S
2020-06-12 16:15:44
350
原创 常见的垃圾回收算法详解
什么是垃圾➢ 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。➢ 外文: An object is considered garbage when it can no longer be reached from any pointer in the running progr am.如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。随着应用程序所应付的业务越来越庞大、复杂,用户越
2020-06-11 17:37:11
1420
1
原创 String特性再探究、intern()方法详解
String基本特性String:字符串,使用一对""引起来表示。|String声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte[]String:代表不可变的字符序列。简称:不可变性当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋
2020-06-10 11:49:30
273
原创 对象的创建、对象的内存布局、对象访问定位
对象实例化的几种方式创建对象的步骤虚拟机遇到一.条new指令,首先去检查这个指令的参数能否在Metaspar e的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。( 即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名为Key进行查找对应的.class文件。如果没有找到文件,则抛出ClassNotF oundException异常,如果找到,则进行类加载(加载、解析和初始化),并生成对应的Clas
2020-06-08 10:13:53
200
原创 java方法区
文章目录栈、堆、方法区的交互关系方法区理解设置方法区大小OutOfMemoryError栈、堆、方法区的交互关系方法区理解《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non- Heap (非堆),目的就是要和堆分开。所以,方法区看作是一块独立于Java堆的内存空间。方法区(Method Area) 与Java堆一样,是各个线程共享的内存区域方法区
2020-06-05 15:54:35
2333
原创 了解逃逸分析
堆是分配对象存储的唯一选择吗?否,在《深入理解Java虚拟机》中关于Java堆内存有这样一段描述: .随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是**如果经过逃逸分析(Escape Analysis)后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。**这样就无需在堆上分配内存,也无须进
2020-06-04 13:51:18
1559
原创 java堆内存(Heap)
文章目录堆的核心概述内部细分堆空间大小设置年轻代和老年代对象分配过程堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大1块内存空间。堆内存的大小是可以调节的。-Xms、-Xmx表示初识堆空间大小和最大堆空间大小。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local
2020-06-03 23:04:41
1361
1
原创 day11-栈的相关面试题
举例栈溢出的情况?StackOverflowError,通过-Xss设置大小,1.局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。2.递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太多时,也会导致堆栈溢出。3.指针或数组越界。这种情况最常见,例如进行字符串拷贝,或处理用户输入等等。调整栈大小,就能保证不出现溢出吗?不能,如果说一个执行6000次递归就结束的程序,在可执行递归5000次的内存空间中会出现StackOverflowError,而在调整为可递归7000次的内存空
2020-06-02 22:45:22
233
原创 双亲委派机制
文章目录双亲委派机制工作原理举例优势沙箱安全机制双亲委派机制Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一“种任务委派模式。工作原理1)如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;|2)如果父类加载器还存在其父类加)载器,则进一步向上委托,依次递归,请求最终将到达项
2020-05-31 16:56:47
320
原创 类加载器分类
类加载器分类JVM支持两种类型的类加载器,分别为引导类加载器( Bootstrap ClassLoader它不是java语言编写)和自定义类加载器(User- Defined ClassLoader)从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器无论类加载器的类型如何划分,在程序中我们最常见的类加载器始终只有3个,如下所示:ExtClassLoader和
2020-05-31 12:34:24
291
原创 类加载子系统详解
类加载子系统类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常最池信息,可能还包括字符串字而量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)例子class file存在于本地硬盘上,可以理解为设计师画在纸上的模板,而
2020-05-31 11:22:24
1935
原创 SpringMVC中静态html页面之间带参数访问方式总结
交流学习真的是一个很不错的习惯,遇见问题一个人闷头学、闷头想,就算是网上资源千万,获得的也只是一叶扁舟也许遇见的这个问题不是很难也许很low,但是通过和同学交流,向老师、大佬请教,QQ微信学习群交流,博客查看……,获得的远比解决一个小问题多的多的知识,还有不同思考方式这样的软知识。和你的伙伴交流起来,这个过程可能会觉得没有必要、感到浪费时间,但是交流完真的收获颇多。文章目录场景解决1解决2解决3(待检测)场景说明一下项目服务端SSM实现,客户端用html+js实现,请求数据用异步交互。spr.
2020-05-25 12:44:47
1517
原创 @DatetimeFormat与@JsonFormat的应用
注解@JsonFormat主要是后台到前台的时间格式的转换@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date time;注解@DataFormAT主要是前后到后台的时间格式的转换@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")private Date time;...
2020-05-24 17:16:42
259
原创 SSM整合Mybatis-Plus自动填充MyMetaObjectHandler
概述先说一下在springboot中,我们要使用mybatis-plus做自动填充的步骤实体类中公共字段,添加@TableField注解@Data@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)@TableName("bbs_module")public class Module implements Serializable { private static final long serialVersion
2020-05-22 19:27:09
7219
4
原创 ssm如何整合mybatis-plus
说明之前使用ssm时,使用mybatis,已经帮助我们简化了很多持久化操作,但是仍然要自己写很多sql语句,Mybatis-plus的有点就不多介绍了,其是国内团队苞米豆在MyBatis基础上开发的增强框架,扩展了一些功能,以提高效率。引入 Mybatis-Plus 不会对现有的 Mybatis 构架产生任何影响,而且 MyBatis-plus 支持所有 Mybatis 原生的特性。这里结合自己遇到的问题总结一下。步骤删除原来的mybatis依赖<dependency> <g
2020-05-22 10:03:54
2683
1
原创 ssm中controller如何每次返回json数据
说明在使用了springboot后,再使用ssm框架时,发现真的很繁琐,配置真的太多了。在学习ssm时,当时的页面是用jsp,所以只要配置了视图解析器,在接口处返回一个字符串或者是ModelAndview对象即可。本次项目前端部分使用vue框架,页面自然是html。所以应该返回json数据,为了有统一优雅的返回对象供前端解析,需要在项目中进行配置。步骤在我们自定义的spring.xml配置文件中添加<mvc:annotation-driven/>注解,这个不用说一定是添加了。添加依赖
2020-05-22 09:24:20
1182
原创 java内存区域
文章目录概述StackOverflowError&OutOfMemoryError运行时数据区程序计数器java虚拟机栈本地方法栈方法区java堆运行时常量池直接内存参考书籍:[(深入理解JAVA虚拟机)]概述在内存管理领域,对C和C++程序开发人员来说,他们拥有每个对象的所有权,但是也担负着每个对象生命从开始到销毁的维护责任。对于java程序员来说,在jvm自动内存管理机制的帮助下,不在需要为每个new操作去管理,不容易出现内存泄漏和内存溢出的问题,但是正因为如此一旦出现了内存泄漏和内存溢
2020-05-20 14:34:07
473
1
原创 day10-类成员加载顺序
类成员加载顺序class A { private static int numA; private int numA2; static { System.out.println("A的静态字段 : " + numA); System.out.println("A的静态代码块"); } { System.out.println("A的成员变量 : " + numA2); System
2020-05-19 21:46:44
174
原创 写了Access-Control-Allow-Origin,还报跨域错误解决过程
如果出现,XXX属性值为null,而且前端报Access-Control-Allow-Origin这样的错误。这种时候由于前端的报错不像后端那样具体明显,可以快速的根据异常信息定位到那一行代码发生的错误,让人很头疼,我在多次碰壁后总结了一下这个问题:第一:首先Access-Control-Allow-Origin这个问题,第一个想到的应该是跨域问题是否解决,一般解决办法是在你的应用中添加跨域组件(配置类),或者是加@CrossOrigin注解解决。第二:当然如果你使用了nginx做反向代理,那一
2020-05-09 18:42:44
5890
2
转载 git-最详细的安装教程
感谢作者:https://blog.csdn.net/sanxd/article/details/82624127##一、安装前准备 1. 廖雪峰老师Git教程 :推荐Git入门教程。 2. 按照自己的系统版本下载Git软件,我的操作系统:Windows7 64位,安装版本为Git-2.18.0-64-bit.exe(截至2018.8.27最新版本)。 Git下载地址:国外网站,可确保为最新版本。 百度网盘下载:国内镜像,如果网速慢可以到网盘下载。##二、安装过程 1. 下载完
2020-05-09 12:07:36
1171
转载 Postman-Post请求上传文件表单
感谢作者:https://blog.csdn.net/maowendi/article/details/80537304 Postman Post请求上传文件一、选择post请求方式,输入请求地址二、填写HeadersKey:Content-TypeValue:multipart/form-data[{"ke...
2020-04-14 17:20:45
3008
转载 day09(二)-ConcurrentHashMap原理-CAS
文章目录ConcurrentHashMap原理细节初始化添加元素扩容源码执行图ConcurrentHashMap原理我们都知道HashMap不是线程安全的,所以在处理并发的时候会出现问题。而HashTable虽然是线程安全的,但是是通过整个来加锁的方式,当一个线程在写操作的时候,另外的线程则不能进行读写。而ConcurrentHashMap则可以支持并发的读写。跟1.7版本相比,1.8版本又...
2020-04-12 18:38:42
564
原创 day09-HashMap原理-1.8优化
文章目录Hashmap底层数据结构HashMap原理初始化添加元素扩容机制源码执行图Hashmap底层数据结构jdk1.7之前,Hashmap底层数据结构是数组+链表实现的,1.8之后采用了红黑树对Hashmap进行了优化。jdk1.8后HashMap采用数组+链表+红黑树的数据结构。HashMap原理在1.7之前,HashMap底层采用数组加链表的数据结构,当在数据量大的时候,出现ha...
2020-04-12 14:21:05
247
Spring&Mybatis&SpringMVC总结笔记-最全最基础.pdf
2020-10-31
My-C-book.docx
2020-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅