自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 线程池源码解析

线程池源码解析线程池解决两个问题:通过减少任务间的调度开销 (主要是通过线程池中的线程被重复使用的方式),来提高大量任务时的执行性能;提供了一种方式来管理线程和消费,维护基本数据统计等工作,比如统计已完成的任务数;Executors 为常用的场景设定了可直接初始化线程池的方法Executors#newCachedThreadPool 无界的线程池,并且可以自动回收;Executors#newFixedThreadPool 固定大小线程池;Executors#newSingleTh

2021-03-26 23:07:38 193

原创 Spring doGetBean源码解析

doGetBean源码解析:https://www.processon.com/view/link/5f8aadd57d9c0806f27c684b

2021-03-11 13:45:18 253

原创 Seata

Seata一:什么是事务?1.1)什么是事物?事务是逻辑上的一组执行单元,要么都执行,要么都不执行.1.2)事物的特性(ACID)ACID是指数据库管理系统DBMS中事物所具有四个特性 eg:在数据库系统中,一个事务由一系列的数据库操作组成一个完整的逻辑过程,比如银行转账,从原账户扣除金额,目标账户增加金额①:atomicity【原子性】原子性表现为操作不能被分割,那么这二个操作 要么同时完成,要么就全部不完成,若事务出错了,那么事务就会回滚②:Consistency【一致性】一致性也比较

2021-03-07 17:36:08 229 1

原创 MySql索引SQL优化,Explain

EXPLAIN使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈示例在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中)**使用的表和数据 **DROP TABLE IF EXISTS `actor`;CREATE TABLE `actor` (

2021-01-07 21:06:28 190

原创 Docker 常用命令

Docker 常用命令镜像相关docker pull docker search 容器相关docker rundocker start/stop <容器名>docker ps <容器名>docker logs <容器名>docker run [OPTIONS] IMGAE [COMMAND] [ARG…]选项-d ,后台运行-e ,设置环境变量–expose / -p 宿主端口:容器端口–name, 指定容器名称–link, 链接不同容器

2020-12-24 20:29:37 130 2

原创 Git-暂存区/HEAD比较-查看差异-删除文件-stash暂存-指定不需要git管理的文件

暂存区/HEAD比较git diff --cached将暂存区回复成和HEAD一样git reset HEAD取消暂存区部分文件更改git reset HEAD – 文件名工作区回复成和暂存区一样git checkout – 文件名取消最近几次提交(回退到指定commit)git reset --hard commitId查看不同提交的指定文件的差异git diff 分支1名称 分支2名称 – 要比较的文件名git diff commitId1 commitId2 – 要比较的文件名

2020-11-04 09:28:53 642

原创 Git分离头指针-合并commit-变更提交信息-删除分支

分离头指针不在任何分支下,做变更;当你切换到一个分支的时候,你前面所作的变更会被清除掉。HEAD可以指向任何一次提交,也可以指向分支git checkout -b newbr b // 基于b分支,新建newb分支git diff commit1 commit2// 比较两次提交,commit1/commit2为提交idgit diff HEAD HEAD^ 1^1 // 比较当前commit 与上上次提交HEAD^ 1^1= HEAD~2 = HEAD ^ ^删除分支git bran

2020-11-04 09:28:34 398

原创 Git建立仓库/查看分支/提交/日志/Git对象关系及原理

git配置信息添加用户名和邮箱git config --global user.name = '你的用户名'git config --global user.name = '你的邮箱'=前后空格要注意上面是添加全局的用户名和邮箱,如果要指定当前项目邮箱,则不加--global参数,默认设置的是当前的。注意: 如果local配置与global配置有相同的配置,local 配置会覆盖global配置查看git config --local --list // 查看当前项目配置git conf

2020-11-04 09:20:50 317

原创 idea git bash输出乱码解决

idea git bash输出乱码解决找到bash.bashrc文件在文件末尾追加下面内容export LANG=“zh_CN.UTF-8”export LC_ALL=“zh_CN.UTF-8”

2020-10-20 09:32:56 169

原创 java字节码技术

1. Java字节码简介Java bytecode 由单字节( byte )的指令组成, 理论上最多支持 256 个操作码(opcode)。实际上Java只使用了200左右的操作码, 还有一些操作码则保留给调试操作。操作码, 主要由 类型前缀 和 操作名称 两部分组成。例如,' i ' 前缀代表 ‘ integer ’,所以,' iadd ' 很容易理解, 表示对整-- 数执行加 法运算。根据指令的性质,主要分为四个大类:栈操作指令,包括与局部变量交互的指令程序流程控制指令对象操作指令,

2020-10-19 12:50:10 302

原创 jvm基础知识

JVM基础知识1. 常见编程语言类型高级语言分类2. 跨平台3. 运行时(Runtime)与虚拟机(VM)4. 内存管理和垃圾回收(GC)1. 常见编程语言类型从底向上划分为最基本的三大类:机器语言、汇编 语言、高级语言。机器语言:直接给计算机执行的语言,这种语言主要是利用二进制编码进行指令发送,也就是二进制内容形式的文件汇编语言:主要是以缩写英文作为标符进行编写的,介于高级语言与集器语言之间高级语言:以更人性化的方式形式进行编码,代码编写完成后通过编译或解释,转换成汇编 码或机器码,之后再传递

2020-10-19 12:49:42 191 1

原创 模板方法模式(Template Method Pattern)

模板方法模式(Template)模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。业务场景假设我们现在要实现一个对单据审批功能,有请假申请、加班申请。他们的算法逻辑都一样,只有同意或拒绝后的操作不一样。你先不要为什么是这些功能,你只要知道我们现在有这么多的申请功能,然后有这么多申请的逻辑需要你实现。怎么做,是分别再各个模块的service里面实现一边吗?注意,他们有一样的算法逻辑。接下来看怎么实现。

2020-10-13 19:39:30 158

原创 查询优化

count(*)一般情况下,三者执行的效率为 COUNT(*)= COUNT(1)> COUNT(字段)。我们尽量使用COUNT(*),当然如果你要统计的是某个字段的非空数据行数,则另当别论,毕竟比较执行效率的前提是结果一样才可以。如果要统计COUNT(*),尽量在数据表上建立二级索引,系统会自动采用key_len小的二级索引进行扫描,这样当我们使用SELECT COUNT(*)的时候效率就会提升,有时候可以提升几倍甚至更高。limit 1如果确定结果集只有一条,那么加上LIMIT 1的时

2020-09-26 21:29:37 161

原创 事务隔离级别

数据库事务的隔离性是事务的基本特性之一,可以防止数据库在并发处理时出现数据不一致的情况。事务并发处理时会存在的异常情况:脏读(Dirty Read)不可重复读(Nnrepeatable Read)幻读(Phantom Read)脏读读到了其他事务还没有提交的数据。比如有一张表,拥有5条数据。小明正在插入一条数据,但是还没有提交事务。此时,小黑来读取这张表的数据,正确情况是读取到5条数据,而他却读取到了6条数据(包含了小明未提交的那一条),这就是脏读。不可重复读对某数据进行读取,发现两次

2020-09-26 21:27:55 94

原创 事务的特性:ACID

事务的特性:ACIDA,也就是原子性(Atomicity)。原子的概念就是不可分割,你可以把它理解为组成物质的基本单位,也是我们进行数据处理操作的基本单位。C,就是一致性(Consistency)。一致性指的就是数据库在进行事务操作后,会由原来的一致状态,变成另一种一致的状态。也就是说当事务提交后,或者当事务发生回滚后,数据库的完整性约束不能被破坏。I,就是隔离性(Isolation)。它指的是每个事务都是彼此独立的,不会受到其他事务的执行影响。也就是说一个事务在提交之前,对其他事务都是不可见的。

2020-09-26 21:26:41 130

原创 sql聚集函数

聚集函数函数说明COUNT()总行数MAX()最大值MIN()最小值SUM()求和AVG()平均值查询最大生命值大于 6000,且有次要定位的英雄数量SELECT COUNT(role_assist) FROM heros WHERE hp_max > 6000 #运行结果是 23有些英雄没有次要定位,即 role_assist 为 NULL,这时COUNT(role_assist)会忽略值为 NULL 的数据行,而 COUNT(*

2020-09-23 19:37:08 112

原创 sql函数

算术函数函数名定义ABS()去绝对值MOD取余ROUND()对传入的字段值四舍五入,传参为字段名、小数位数SELECT ABS(-2) 运行结果为 2SELECT MOD(101,3) 运行结果 2SELECT ROUND(37.25,1) 运行结果 37.3字符串函数函数名定义CONCAT()将多个字符串拼接LENGTH()计算字段长度(一个汉字算3个字符,数字字母算1个字符)CHAR_LENGTH计算字段长度(

2020-09-23 19:34:27 153

原创 SQL数据过滤

约束sql查询返回结果的数量和筛选符合条件的结果返回,减少不必要的数据行是提升sql效率最简单最常用的方法比较运算符含义运算符等于=不等于<> 或 !=小于<小于等于 / 不大于<= 或 !>大于>大于等于 / 不小于>=或!<在指定的两个数值之间BETWEEN为空值IS NULL逻辑运算符含义逻辑运算符并且AND或者OR在指定范围内

2020-09-23 19:33:47 108

原创 SELECT 查询的基础语法

查询列SELECT name FROM heros; (单列)SELECT name, hp_max, mp_max FROM heros; (多列)SELECT * FROM heros; (所有列)起别名SELECT name AS n FROM heros; (AS 可以省略)查询常数字符串都用单引号SELECT '王者荣耀' as platform, name FROM heros去除重复行SELECT DISTINCT attack_range FROM heros;

2020-09-23 19:32:30 509

原创 DDL 的基础语法

常用的功能是:增、删、改,分别对应的命令是CREATE、DROP 和 ALTER。需要注意的是,在执行 DDL的时候,不需要 COMMIT,就可以完成执行任务。对数据库进行定义CREATE DATABASE nba; // 创建一个名为 nba 的数据库DROP DATABASE nba; // 删除一个名为 nba 的数据库对数据表进行定义CREATE TABLE table_name创建表结构CREATE TABLE player ( player_id int(11) NOT NU

2020-09-23 19:31:41 293

原创 SQL分类

DDL,Data Definition Language,也就是数据定义语言,它用来定义我们的数据库对象,包括数据库、数据表和列。通过使用 DDL,我们可以创建,删除和修改数据库和表结构。DML, Data Manipulation Language,数据操作语言,我们用它操作和数据库相关的记录,比如增加、删除、修改数据表中的记录。DCL, Data Control Language,数据控制语言,我们用它来定义访问权限和安全级别。DQL, Data Query Language,数据查询语言,我.

2020-09-23 19:30:50 94

原创 SQL是如何执行的

Oracle 中的 SQL 是如何执行的语法检查:检查 SQL 拼写是否正确,如果不正确,Oracle 会报语法错误。语义检查:检查 SQL 中的访问对象是否存在。比如我们在写 SELECT 语句的时候,列名写错了,系统就会提示错误。语法检查和语义检查的作用是保证 SQL 语句没有错误。权限检查:看用户是否具备访问该数据的权限。共享池检查:共享池(Shared Pool)是一块内存池,最主要的作用是缓存 SQL 语句和该语句的执行计划。Oracle 通过检查共享池是否存在 SQL 语

2020-09-23 19:30:04 2025

原创 加载指定包的所有类(代码、注释很详细)

加载指定包的所有类获取包所在路径获取路径下的所有后缀为class的文件1. 获取包所在路径/** * 获取指定包下的所有类 * 1.获取包所在路径 * 2.获取路径下的所有class文件 * * @param packageName * @return Class对象集合 */ public static Set<Class<?>> extractPackageClass(String packageName)

2020-08-20 19:21:24 712 1

原创 SOLID 设计原则

设计原则单一职责原则Single Responsibility Principle:A class or module should have a single reponsibility一个类或者模块只负责完成一个职责(或者功能)开闭原则Open Closed Principle:software entities (modules, classes, functions, etc.) should be open for extension , but closed for modi

2020-08-20 16:44:45 181

原创 Spring-依赖注入:如何给静态成员变量注入

一、问题引入我们常用的注入方式如图,使用@Autowired注解,或者使用构造函数/setter的形式。@Controllerpublic class HeadLineOperationController { @Autowired private HeadLineService headLineService;}当我们需要给一个static修饰的成员变量注入时,上面的形式是否可行呢?二、解决方案答案时不可行的,这是因为静态成员变量时在类初始化的时候就已经初始化了,时属于类级

2020-08-13 13:30:02 800

原创 Spring-控制反转IoC(Inversion of Control)

控制反转依托一个类似工厂的IoC容器将对象的创建、依赖关系的管理以及生命周期交给IoC容器来进行管理降低系统在实现上的复杂度和耦合度,易于扩展,满足开闭原则依赖注入的方式SetterInterfaceConstructorAnnotation优势避免在各处使用new来创建类,并且可以做到统一维护创建实例的时候不需要了解其中的细节反射+工厂模式的混合体,满足开闭原则...

2020-08-13 13:20:28 151

原创 集合分组:泛型、反射构建通用分组方法

业务场景当前有多个集合,每个集合中有两种数据,一种是需要插入的数据,一种是需要更新的数据。(数据实体的某个字段,用于判断是插入还是更新)一般思路循环集合,然后根据那个字段进行判断,然后插入或更新一条记录。但是每次插入一条或更新一条,数据库链接关闭与建立,带来性能消耗,我们可以想到批量插入或更新(batchInsert/batchUpdate)批量操作我们需要对集合进行分组,而且是每个集合,是每个集合都写一遍重复的代码还是封装一个通用方法呢?当然是封装一个通用方法嘛。但是,每个集合所包含的数据类

2020-08-06 20:53:37 370

原创 操作系统内存管理——段页式存储

页式存储管理页面:字块是相对物理设备的定义页面则是相对逻辑空间的定义过程:将进程逻辑空间等分成若干大小的页面把物理内存空间分成与页面大小的物理块分散的物理块以页面为单位吧进程空间装进物理内存中注意:页面大小应该合适,过大难以分配,小容易碎片化页面大小通常是512B~8K页表:记录逻辑空间与物理空间的映射页面——字块地址:页号——页内偏移段式存储管理段页式存储管理...

2020-08-06 13:42:14 255

原创 dubbo项目笔记

启动检查,验证提供者可用性验证过程中出现问题,则阻止spring容器初始化负载均衡Random 随机,配置权重主要使用这两种RoundRobin 轮询,第一次第一个,第二次第二个,循环访问LeastActive 最少活跃调用数,针对记录数进行调用ConsistentHash 一致性Hash,相同参数给同一个服务器...

2020-08-06 13:41:41 79

原创 java注解-自定义注解

自定义注解实现自定义注解格式 java.lang.annotation.Annotationpublic @interface 注解名{ 修饰符 返回值 属性名() 默认值; ...}注解属性支持类型所有基本数据类型String类型Class类型Enum类型Annotation类型以上这些类型的数组package demo.annotation;import java.lang.annotation.ElementType;import java.lang.annota

2020-08-06 13:39:51 145

原创 java注解-基本介绍

什么是注解提供一种为程序元素设置元数据的方法元数据是添加到成员元素(方法、字段、类、包等)上的额外信息注解是一种分散式的元数据设置方式,XML是集中式的方式注解不能干扰程序代码的运行注解的功能作为特定的标记,用于告诉编译器一些信息如@Override,用于检测重写的方法是否与源方法一致编译时动态处理,如生成动态代码运行时动态处理,作为额外的信息载体,如获取注解信息注解分类标准注解:Override、Deprecated、SuppressWarnings元注解:@Reteni

2020-08-06 13:39:08 87

原创 React-起步:创建第一个项目

准备好npm环境安装react构建工具:nmp install create-react-app -g 创建第一个项目:create-react-app [project name]进入项目:cd [project name]查看package.json文件:cat package.json运行:npm start会自动跳转到浏览器:...

2020-08-06 13:36:17 88

原创 Mybatis引入报红

问题Mybatis引入报错:如图解决方案File>Settings

2020-08-06 13:35:06 1095

原创 Git-配置多个ssh密钥

ssh-keygen -t rsa -C "2email@github.com” -f ~/.ssh/github_rsa可以看到红色框中的路径名,就是密钥所在文件路径将.pub后缀的文件内的内容copy,添加到你的github的SSH配置中具体打开步骤如下:点击头像>Setting>SSH and GPG keys>new SSH keys...

2020-08-06 13:34:39 218

原创 单例模式(Singleton Pattern):为什么要用枚举实现

单例模式(Singleton Pattern)确保一个类只有一个实例,并对外提供统一的访问方式分类饿汉模式:类被加载时就立即初始化并创建唯一实例懒汉模式:被客户端首次调用时才创建唯一实例1)加入双重检查锁检测机制来保证懒汉模式的线程安全2)枚举单例模式来防止反射入侵饿汉模式/** * 饿汉模式 */public class StarvingSingleton { /** * 类加载时就实例化 * 私有的构造函数,与类实例 */ priv

2020-08-03 13:37:24 155

原创 java反射

反射的作用在运行时判断任意一个对象所属类在运行时获取类的对象在运行时访问java对象的属性,方法,构造方法等java.lang.reflect类库的主要类Field:表示类中的成员变量Method:表示类的方法Constructor:表示类的构造方法Array:提供了动态创建数组和访问数组元素的静态方法反射依赖的Class用来表示运行时类型信息的对应类每个类都有唯一一个与之对应的Class对象Class类为类类型,而Class对象为类类型的对象Class 类的特点C

2020-08-01 12:48:12 92

原创 Git-git拉取远程分支,然后建一个自己的分支,并提交到git远程仓库上

本地创建一个文件夹(我这里已经创建srm)本地git init与远程仓库建立链接git remote add [origin] [远程仓库地址]列出所有远程分支·git branch -r远程分支拉取到本地git fetch [origin] [远程分支名]创建本地分支并切换git checkout -b [创建的分支名]拉去远程分支下的内容到本地git pull [origin] [远程分支名]提交本地分支到远程git push [origin] [本..

2020-07-31 10:17:28 1158

原创 流式编程-Stream实操

Stream实操一、filter /** * filter:过滤不符合断言判断的数据 */ @Test public void filerTest(){ list.stream() // 筛选书籍类的商品 .filter(sku -> SkuCategoryEnum.BOOKS

2020-07-30 20:01:00 351

原创 流式编程-方法引用

指向静态方法的方法引用指向任意实例方法的方法引用指向现有对象的实例方法的方法引用

2020-07-30 17:24:46 136

原创 流式编程-Stream介绍

whart:jdk8引入将基础操作链接起来,处理复杂的流水线提供透明的并行处理流与集合区别时间与空间流组成三部分:数据源、数据操作、终端操作流操作分类

2020-07-30 17:21:28 176

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除