09 2022 档案
代码生成器(mybatis逆向工程)
摘要:代码生成前: 代码生成后: controller: entity: mapper: service: impl: mapper.xml 引入依赖: <!--版本号--> <mybatis-plus.version>3.2.0</mybatis-plus.version> <!--使用之前需要导包--
锁的分类及使用
摘要:锁在Java中是一个非常重要的概念,Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率,在当今的互联网时代,尤其在各种高并发的情况下,我们更加离不开锁。那么到底什么是锁呢?在计算机中,锁(lock)或者互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中
慢查询 MySQL 定位优化技巧,从10s优化到300ms
摘要:文章目录 如何定位并优化慢查询SQL? 如何使用慢查询日志? 慢查询例子演示,新手都能看懂 查询语句慢怎么办?explain带你分析sql执行计划 当主键索引、唯一索引、普通索引都存在,查询优化器如何选择? 1.如何定位并优化慢查询SQL? 一般有3个思考方向 1.根据慢日志定位慢查询sql 2.使
多线程
摘要:进程 每个应用程序在运行期间,操作系统为应用程序分配一个独立的内存空间,称为进程;多个进程之间的数据是相互隔离的; windows查看后台进程命令 tasklist linux查看后台进程命令 ps -aux 线程 进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个程序可同一时间执行多个线
TCP的三次握手与四次挥手理解
摘要:序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序
双亲委派
摘要:ClassLoader类中负责根据类的完整路径加载class的过程 /* * @param name 类的完整路径 */ protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
Cglib动态代理
摘要:最底层的是字节码ByteCode,字节码是Java为了保证“一次编译,到处运行”而产生的一种虚拟的指令格式。 位于字节码之上的是ASM,这是一种直接操作字节码的框架,应用ASM需要对Java字节码、Class结构比较熟悉。 位于ASM之上的是CGLIB、Groovy、BeanShell,后两种并不是
Java 动态代理
摘要:一、简介 1.1 定义 给某一个对象提供一个代理,并由代理对象控制对真实对象的访问,代理模式是结构型设计模式的一种 代理模式详解 根据字节码文件的创建时机来分类,可以分为静态代理和动态代理 1.2 静态代理 在程序运行前就已经存在代理类的字节码文件,代理类和被目标类的关系在运行前就确定了 1.3 动
反射
摘要:java是一门编译型语言;与之对应的称之为解释性(JavaScript,python)。编译型语言在编写完源代码后必须要编译之后才能够运行。解释性语言内置了解释器,程序一边解释,一边执行。 java语言编译之后产生.class字节码文件。字节码文件包含了对类的定义(类的名字,类的属性,类的方法,类实
Java IO
摘要:Java输入输出流 Ω文件可以认为是相关记录或存放在一起的数据的集合; 文件一般是存放在磁盘上的,例如:硬盘、软盘和光盘等等; 可断电式存储设备中,能够识别的只有两类东西;目录和文件; File类 ΩFile类的对象不但可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录;
Stream API的练习题
摘要:题目: 找出2011年发生的所有交易,并按交易额排序(从高到低)。 交易员都在哪些不同的城市工作过? 查找所有来自Cambridge的交易员,并按姓名排序。 返回所有交易员的姓名字符串,按字母顺序排序。 有没有交易员在Milan工作 打印生活在Cambridge的交易员的所有交易额。 所有的交易额中
Lambda表达式和Stream API
摘要:Lambda表达式和Stream API Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda表达式还
java8新特性:方法引用
摘要:java8新特性:方法引用 我们用Lambda表达式来实现匿名方法。但有些情况下,我们用Lambda表达式仅仅是调用一些已经存在的方法,除了调用动作外,没有其他任何多余的动作,在这种情况下,我们倾向于通过方法名来调用它,而Lambda表达式可以帮助我们实现这一要求,它使得Lambda在调用那些已经拥
排序
摘要:冒泡排序 最简单的一种排序算法,效率也是最低下的排序算法。多个数字通过冒泡排序时,会依次将数组中最大的那个数移动到数组的末尾。 int[] arr = {2,3,1,5,4}; //第一次:2,3,1,4,5 最大数为5,下一轮在2,3,1,4中找出最大数 //第二次:2,3,1,4,5 最大数为4
对HashMap的理解
摘要:jdk8之后的hashMap基于数组+链表+红黑树结构构成 hashMap初始化长度为16,之后的每一次扩容都翻倍扩。 hashMap内部维护了一个增长因子,默认为0.75;集合中保存的元素的个数 >= 数组长度 * 0.75后就会扩容 每次在调用map集合的put方法时,首先根据键的hashCod
集合框架部分源码分析
摘要:ArrayList ArrayList add方法源码分析 public boolean add(E e) { // 1 ensureCapacityInternal(size + 1); // Increments modCount!! // 先将e保存到数组下标为size处,然后在自加,表示数组
HashMap底层原理
摘要:正文 说明:本篇主要以JDK1.8的源码来分析,顺带讲下和JDK1.7的一些区别。 HashMap存储结构 这里需要区分一下,JDK1.7和 JDK1.8之后的 HashMap 存储结构。在JDK1.7及之前,是用数组加链表的方式存储的。 但是,众所周知,当链表的长度特别长的时候,查询效率将直线下降
Git使用
摘要:git命令的使用 #配置git用户信息$ git config --global user.name "用户名" $ git config --global user.email 123456@qq.com$ git init #将当前目录作为工作区,生成.git目录;.git目录为git仓库的目录
Git
摘要:什么是Git git是一种版本同步工具;实际项目开发中,涉及到多人的团队性质的协同开发; Git的三种状态 现在请注意,如果你希望后面的学习更顺利,请记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能 处于其中之一: 已提交(committed)、已修改(modified) 和 已