- 博客(34)
- 收藏
- 关注
原创 如何高效管理API文档
API文档管理工具推荐背景方便管理、查阅API文档,提高日常代码(CV)效率Dash(mac os平台)zeal (离线工具:下载地址)devdocs(在线工具:在线地址)
2020-10-24 09:50:09 1986
原创 字节码文件详解
前言我们都知道,Java程序最终是转换成class文件执行在虚拟机上的,那么class文件是个怎样的结构,虚拟机又是如何处理去执行class文件里面的内容呢,这篇文章带你深入理解Java字节码中的结构。1.Demo源码首先,编写一个简单的Java源码:package com.april.test;public class Demo { private int num = 1; public int add() { num = num + 2; r
2020-10-24 08:55:35 4925 2
原创 基本类型和包装类对象使用==和equals
基本类型和包装类对象使用==和equals背景:在回文链表判断算法题中,测试案例[-129, 129]通不过,查资料得到以下结果。class Solution { // 思路1:将链表的元素存储到数组中,然后数组进行回文判断 public boolean isPalindrome(ListNode head) { if (head == null || head.next == null) return true; // 将元素存储到数组中
2020-10-23 15:25:25 166
原创 SpringBoot自动装配原理
SpringBoot自动装配原理pom.xml父依赖其中它主要是依赖一个父项目,主要是管理项目的资源过滤及插件!<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</versio
2020-10-22 09:14:18 57
转载 MySQL事务的底层实现原理
MySQL事务的底层实现原理特点:原子性(Atomicity)一致性(Consistency)隔离型(Isolation)持久性(Durability)一、事务的目的1、可靠性和并发处理**可靠性:**数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有了undo log和redo log。并发处理:也就是说当多个并发请求过来,并且其中有一个请求是对数据修
2020-10-15 09:33:28 3010 1
转载 innodb下幻读是如何在RR级别下被解决的
innodb下幻读是如何在RR级别下被解决的?先来简单的复习一下数据库隔离级别RU(Read Uncommitted)一个事务A读取到另一个事务B未提交的修改,B回滚了,就造成了数据不一致。(现象:脏读)RC(Read Committed)一个事务A在事务执行过程中第一次读取的值和第二次读取的值不一致,这是由于事务B在俩次读取之间修改了数据并提交了事务。(现象:不可重复读)RR(Repeatable Read)一个事务A在事务执行过程中第一次读取的值和第二次读取的值一致(
2020-10-15 08:45:42 589
原创 利用fiddler抓包爬取微信小程序数据
利用fiddler抓包爬取微信小程序数据1.背景原理有些微信小程序无法在PC端进行访问原因判断非微信‘内嵌浏览器’,则禁止访问解决方法模拟微信‘内嵌浏览器’进行访问,需要获取的数据有:User-Agent,以及登录信息cookie2.Fiddler获取cookie和User-Agent-使用:使用Filddler获取cookie和User-Agent3.愉快的下载数据import reimport requestsimport timeimport jsonimport pa
2020-10-14 14:22:06 7064 2
原创 了解Spring源码
了解Spring源码1.实现@Autowired原理:反射实验:public class UserController { // 注入 private UserService userService; public UserService getUserService() { return userService; } public void setUserService(UserService userService) {
2020-10-13 21:04:34 64
转载 数据库-MVCC
什么是 MVCCMVCC (Multiversion Concurrency Control) 中文全称叫多版本并发控制,是现代数据库(包括 MySQL、Oracle、PostgreSQL 等)引擎实现中常用的处理读写冲突的手段,目的在于提高数据库高并发场景下的吞吐性能。如此一来,不同的事务在并发过程中,SELECT 操作可以不加锁而是通过 MVCC 机制读取指定的版本历史记录,并通过一些手段保证保证读取的记录值符合事务所处的隔离级别,从而解决并发场景下的读写冲突。下面举一个多版本读的例子,例如两个事
2020-10-13 10:24:26 125
原创 数据库-事务和隔离级别
事务和隔离级别原理:1.原则ACID:原子性,一致性,隔离性,持久性;2.多并发事务导致数据出现的错误脏读:事务A读取事务B未提交的数据,如果事务B回滚,将导致读取错误数据;不可重复读:事务A两次读取数据不一致;导致的原因是破坏了隔离性,事务B对数据进行了修改操作;幻读:事务A两次读取数据,第二次发现数据新增了;导致的原因是破坏了隔离性,事务B对数据新增了;3.解决错误的方法读未提交:全都不能解决读已提交:可以解决脏读可重复读:可以解决脏读、不可重复读串行化:把并发变成串行等待,全都
2020-10-13 10:03:27 86
转载 MySQL为什么要选B+数作为底层的数据结构
一: MySQL为什么要选B+数作为底层的数据结构推荐的算法演示平台MySQL的底层算法有B数、红黑树、hash、B+树,为什么就选择了B+树作为数据库的底层物理结构二叉树的特点是左节点小于根节点、根节点小于右节点B树由于存在特殊情况,如左节点为空,节点全在右节点上,这样导致的结果会造成和没有索引一样,依次查找,效率很低,同时也会造成树的深度很深,IO次数太多导致查询效率很低。红黑树由于存在树的深度问题导致查数据IO消耗很大,索引降低了性能。Hash索引把数据以hash形式组织起来,因
2020-10-12 12:32:48 348
转载 笛卡尔乘积与数据库连接(join)
一、笛卡尔乘积与数据库连接(join)数据库连接是从两个关系的笛卡尔乘积中选取属性间满足一定条件的元组。现有两个关系R、S:关系R:关系S:关系R与S的笛卡尔乘积为:在连接中有两种非常重要的连接:等值连接与自然连接。等值连接:(条件R.B = S.B)当然也可以有非等值连接(比如R.C < S.E)自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名的属性值,并且在结果中把重复的属性列去掉。自然连接:在自然连接时候,关系R中的某些元祖有可能在S中不
2020-10-10 21:04:13 1114
原创 HashMap问题
Q0:HashMap是如何定位下标的?A:先获取Key,然后对Key进行hash,获取一个hash值,然后用hash值对HashMap的容量进行取余(实际上不是真的取余,而是使用按位与操作,原因参考Q6),最后得到下标。Q1:HashMap由什么组成?A:数组+单链表,jdk1.8以后又加了红黑树,当链表节点个数超过8个(m默认值)以后,开始使用红黑树,使用红黑树一个综合取优的选择,相对于其他数据结构,红黑树的查询和插入效率都比较高。而当红黑树的节点个数小于6个(默认值)以后,又开始使用链表。Q2:
2020-10-09 13:35:26 193
转载 JVM面试总结
Java内存区域说一下 JVM 的主要组成部分及其作用?JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。Execution engi
2020-10-08 16:28:45 79
转载 JVM调优-JProfiler
一.JProfiler是什么JProfiler是由ej-technologies GmbH公司开发的一款性能瓶颈分析工具(该公司还开发部署工具)。其特点:使用方便界面操作友好对被分析的应用影响小CPU,Thread,Memory分析功能尤其强大支持对jdbc,noSql, jsp, servlet, socket等进行分析支持多种模式(离线,在线)的分析跨平台 (图1)二.数据采集Q1. JProfiler既然是一款性能瓶颈分析工具,这些分析的相关数据来自于哪里?Q2. JPr
2020-10-08 09:39:48 389
转载 JDK1.8 JVM
一、JDK1.8 JVM运行时数据区域概览这里介绍的是JDK1.8 JVM运行时内存数据区域划分。1.8同1.7比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。二、各区域介绍1. 程序计数器每个线程一块,指向当前线程正在执行的字节码代码的行号。如果当前线程执行的是native方法,则其值为null。2. Java虚拟机栈线程私有,每个线程对应一个Java虚..
2020-10-07 19:42:03 611 2
转载 破坏双重委派机制
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。对于JVM来说:*因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相同的class,会优先加载CLASSPATH目录中的文件。*1、既然 Tomcat 不遵循双亲委派机制,那么如果我自己定义一个恶意的HashMap,会
2020-10-07 16:18:47 110
转载 JVM的认识
什么是jvmJVM(Java Virtual Machine),俗称Java虚拟机。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。运行流程java程序经过一次编译之后,将java代码编译为字节码也就是class文件,然后在不同的操作系统上依靠不同的java虚拟机进行解释,最后再转换为不同平台的机器码,最终得到执行。这样我们是不是可以推演,如果要在mac系统上运行,是不是只需要
2020-10-07 13:57:40 79
转载 JVM-本地方法
前言:JAVA中有两种方法:JAVA方法和本地方法JAVA方法是由JAVA编写的,编译成字节码,存储在class文件中本地方法是由其它语言编写的,编译成和处理器相关的机器代码本地方法保存在动态链接库中,即.dll(windows系统)文件中,格式是各个平台专有的JAVA方法是与平台无关的,但是本地方法不是。http://blog.sina.com.cn/s/blog_5b9b4abe01016zw0.html一. 什么是Native Method简单地讲,一个Native Method就是一
2020-10-07 10:51:01 302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人