自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 JUC---java锁----悲观与乐观锁,, 公平锁与非公平锁,, 自旋锁(CAS)/重入锁 ,,,重量级锁与轻量级锁,,, 独占锁与共享锁

java有哪些锁的分类:悲观与乐观锁公平锁与非公平锁自旋锁/重入锁重量级锁与轻量级锁独占锁与共享锁文章目录java有哪些锁的分类:乐观锁悲观锁:什么是悲观锁,什么是乐观锁悲观锁:乐观锁:乐观锁的实现方式:一二公平锁与非公平锁公平锁与非公平锁的直接的区别独占锁与共享锁独占锁与共享锁之间的区别可重入性CAS(自旋锁)优点:缺点:Cas 本质的原理:基于 cas 实现锁机制原理Cas 无锁机制原理:实现细节:CAS获取锁:CAS 释放锁:CAS 如何解决 ABA 的问题利用原子类手写 CAS 无锁

2021-04-25 21:22:38 411

原创 Votatile--JMM--单例模式

Votatile文章目录VotatileJMMVotatile什么是JMMVolatile保证了可见性不保证原子性避免指令重排指令重排volatile可以避免指令重排单例模式饿汉式DCL懒汉式DCL懒汉式反射破环唯一性解决: 继续加锁但是双反射继续破环继续解决: 采用红略灯经行.加标志进行判定破环: 利用反射破环其私有权限枚举通过读取源码得值,反射不能破环枚举,利用枚举利用枚举注: 枚举的最终反编译源码JMMVotatileVotatile是java虚拟机轻量级的同步机制保证了可见性不保证原子

2021-04-23 19:24:46 524 2

原创 LC1312---- 让字符串成为回文串的最少插入次数

1312. 让字符串成为回文串的最少插入次数难度困难93给你一个字符串 s ,每一次操作你都可以在字符串的任意位置插入任意字符。请你返回让 s 成为回文串的 最少操作次数 。「回文串」是正读和反读都相同的字符串。示例 1:输入:s = "zzazz"输出:0解释:字符串 "zzazz" 已经是回文串了,所以不需要做任何插入操作。package com.nie.o4;/* * *@auth wenzhao *@date 2021/4/15 23:33 */public cl

2021-04-22 23:15:41 158

原创 LC198--- 打家劫舍----LC213--- 打家劫舍II

198. 打家劫舍优秀的题解package com.nie.o2;/* * *@auth wenzhao *@date 2021/2/22 20:44 */public class LEE198 { public int rob1(int[] nums) { if (nums == null || nums.length == 0) { return 0; } if (nums.length == 1) {

2021-04-22 22:56:23 179

原创 JUC-线程池---四大方法,七大参数,四种拒绝策略...等...{完结}

线程池:文章目录线程池:前言:阻塞队列SynchronousQueue同步队列线程池:什么是线程池:为什么要使用线程池什么是上下文切换那些地方使用到线程池线程池有那些作用线程池的四大创建方式为什么阿里巴巴不建议使用 Executors线程池底层是如何实现复用的`ThreadPoolExecutor`七大核心参数四种拒绝策略线程池如何合理配置参数常见的任务分为两种:CPU密集型任务和IO密集型任务CPU密集型任务(CPU-bound):IO密集型任务(IO-bound):两种任务的线程数设置如下CPU密集型

2021-04-22 13:03:53 848

原创 LC516--- 最长回文子序列

516. 最长回文子序列难度中等431给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。示例 1:输入:"bbbab"输出:4动态规划1 public int longestPalindromeSubseq(String s) { int len = s.length(); if (len == 1) { return 1; } in

2021-04-22 00:43:48 116

原创 JUC-----Callable--Runnable---常用的辅助类{CountDownLatch,,CyclicBarrier,,Semaphore}

文章目录Callable学习参考链接常用的辅助类(重点)1.CountDownLatch2、CyclicBarrier3. Semaphore补充:信号量与互斥锁之间的区别:Callable前言线程Runnable和Callable的主要区别解决方法:两者区别主要以下两点1.Runnable接口的run()方法没有返回值,而Callable接口的call()方法可以有返回值。2…Runnable接口的run()方法不可以声明抛出异常,而Callable接口的call()方法可以声明抛出异常。

2021-04-21 17:32:39 346

原创 JUC--集合安全大全详解

集合安全java中hashmap多线程并发问题详解HashMap多线程操作下的问题总结ConcurrentHashMap & HashTable的知识点LIstpublic class ListTest { public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++)

2021-04-21 12:34:23 214

原创 生产者与消费者Synchronized--JUC 两版本----Condition简单使用

生产者与消费者Synchronized版本package com.nie.juc.shxf;/* * *@auth wenzhao *@date 2021/4/20 13:15 *//** * 生产者消费者 */public class Demo01 { public static void main(String[] args) { Data data = new Data(); new Thread(() -> {

2021-04-21 11:25:52 115

原创 LC72--- 编辑距离

72. 编辑距离难度困难1562收藏分享切换为英文接收动态反馈给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros (删

2021-04-21 00:23:25 186

原创 LC179---- 最大数

179. 最大数难度中等691收藏分享切换为英文接收动态反馈给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"//compareTo()方法比较的时候是按照ASCII码逐位比较的/

2021-04-21 00:06:43 275

原创 剑指 04--- 二维数组中的查找----剑指05. 替换空格

剑指 Offer 04. 二维数组中的查找难度中等308在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23

2021-04-20 23:06:09 102

原创 SpringBoot-----集成Swagger

SpringBoot集成Swagger文章目录SpringBoot集成Swagger前后端分离:产生的问题:SwaggerSpringBoot集成Swagger配置Swagger配置扫描接口配置Swagger开关配置API分组实体配置常用注解总结简介:前后端分离:前端 ->前端控制层,视图后端 ->后端控制层,服务层,数据访问层前后端通过API进行交互前后端相对独立且松耦合产生的问题:前后端集成,前端或者后端无法左到"“及时协商,今早解决”",最终问题集中爆发Swag

2021-04-18 23:04:05 1044 4

转载 SpringBoot--06--整合Druid

狂神说:狂神说SpringBoot08:整合Druid

2021-04-15 21:16:07 65

原创 Mybatis---一级缓存--二级缓存------缓存穿透,缓存击穿,缓存雪崩

Mybatis缓存文章目录Mybatis缓存为什么使用缓存一级缓存一级缓存的生命周期二级缓存二级缓存二级缓存详解配置二级缓存配置cache可以配置的属性如下:MyBatisUtils相关的动态sql生命周期和作用域SqlSessionFactoryBuilderSqlSessionFactory缓存穿透,缓存击穿,缓存雪崩缓存穿透解决方案:缓存雪崩解决方案缓存击穿解决方案相关优秀文章为什么使用缓存缓存(也成为cache)的作用是为了减去数据库的压力,提高数据库的性能,缓存实现的原理是从数据库中查询处理

2021-04-14 11:16:11 867

原创 快速排序-归并排序-堆排序

十大排序动图快速排序数组取标pivot,将小的元素放在pivot左边,大元素在右侧,然后依次对右边的子数组继续快排,以达到整个序列有序public class QuickSort { public static void quickSort(int[] array, int beain, int end) { if (beain >= end) return; int pivot = partition1(array, beain, end);

2021-04-12 17:14:24 149

原创 SpringBoot--04--JSR303

SpringBoot–04:JSR303Springboot中可以用@validated==来校验数据,如果数据异常则会统一抛出异常@Component@ConfigurationProperties(prefix = "person")@Validated//数据校验public class Person { @Email(message = "非法邮箱") private String name; private Integer age; private Bo

2021-04-10 13:59:21 151

原创 SpringBoot--05--自动配置原理

SpringBoot-05-自动配置原理分析自动配置原理解释自动配置原理以**HttpEncodingAutoConfiguration(Http编码自动配置)**为例解释自动配置原理;总结:根据当前不同的条件判断:决定这个配置是否生效一旦这个配置类生效,这个配置类就会给容器添加各种组件这些组件的属性是从对应的properties类中获取的这些类里面的每一个属性是和配置文件绑定的所有在配置文件中能配置的属性都是可以在XXXXProperties类中封装着配置文件能配置

2021-04-10 13:55:07 113

原创 Mybatis---查询resultMap-多表关联{association-collection}--延迟加载

Mybatis查询文章目录Mybatis查询resultMap多表关联处理结果集associationcollection相关的association与collection区别案例associationcollection相关类EmpDeptMybatis延迟加载的实现方式概念:加载时机resultMapresultMap: 结果映射。 自定义列名和java对象属性的对应关系。 常用在列名和属性名不同的情况。用法:1.先定义 resultMap标签, 指定列名和属性名称对应关系2.在select

2021-04-09 21:56:23 839

原创 SpringBoot---03---yaml配置注入

SpringBoot03:yaml配置注入SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的application.properties语法结构 :key=valueapplication.yml语法结构 :key:空格 valueyaml概述YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Lang

2021-04-09 13:00:50 160

原创 SpringBoot--02---运行原理初探

待定…

2021-04-08 23:23:26 112

原创 SpringBoot--01---Hello,Word!

Spring01:Hello,Word!回顾什么是SpringSpring是一个开源的框架,Spring是为了解决企业级应用开发的复杂性而创建,简化开发Spring是如何简化java开发的为了减低java开发的复杂性,Spring采用了一下4种关键的策略基于POJO的轻量级和最小侵入性编程,所有东西都是bean通过IOC,依赖注入(DI)和面向接口实现松耦合基于切面(AOP)和惯例进行声明式编程通过切面和模板减少样式代码RedisTemplate,xxxTemplate什么式Sp

2021-04-08 23:07:15 114

原创 Spring--事务处理--速览

Spring事务处理事务处理,事务隔离@Transactional事务处理Spring事务传播行为事务传播行为 指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行.例如,方法A事务方法调用方法B事务方法时.方法B是继续调用者方法A的事务中运行,还是为自己开启一个新的事务运行,这就是由方法B的事务传播行为决定的Spring事务的传播行为事务隔离级别—mysql传播行为 属于 Spring 中A方法调用B方法## `PROPAGATION`required:

2021-04-08 11:10:28 216

原创 spring-概述-速览

springspring是javaEE开源的轻量级别的框架,可以解决企业开发中遇到的难题,能够让编程变得简单,核心组件IOC容器和AOP面向切面编程IOC控制反转:把整个对象创建的过程,统一交给我们的SpringIOC容器进行管理来实现管理,底层使用反射+工厂模式Aop面向切面编程:对我们功能(方法)前后实现增强,比如打印日志,事务原理,权限管理,底层是基于动态代理模式实现的减少到我们代码冗余的问题优势:方法的解耦,简化开发AOp技术支持提供声明事务支持Junit单元测试方

2021-04-08 11:07:52 137 1

原创 整合SSM-及配置环境

整合SSM基本环境搭建新建一个Maven项目! SSMbuild,添加web的支持导入相关的pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m

2021-04-07 18:53:10 122

原创 剑指 03--- 数组中重复的数字

剑指 Offer 03. 数组中重复的数字难度简单372找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 方法一:利用set集合,如每次添加的时候判重class Solution { public int findRepeatNumber(int[

2021-04-06 23:06:31 73

原创 Java-JDK动态代理(AOP)

Java-JDK动态代理(AOP)使用及实现原理分析动态代理的应用SpringAOP实现原理什么是动态代理?使用JDK反射机制,创建对象的能力,创建的是代理类的对象,而不用你创建类,不用写java文件动态:在程序执行时,调用JDK提供的方法才能创建代理类的对象JDK动态代理,必须有接口,目标类必须实现接口,没有接口时需要使用cglib动态代理知道动态代理能做什么 ?在不改变原来的目标方法功能的前提下,可以在代理中增强自己的功能代码1.什么是代理代理:在我们生活之中就有体会,代购,中介,

2021-04-06 18:17:20 473

原创 LC146--- LRU 缓存机制

146. LRU 缓存机制难度中等1299运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存

2021-04-05 23:26:53 142

原创 布隆过滤器

布隆过滤器的原理和实现使用布隆过滤器解决缓存击穿、垃圾邮件识别、集合判重布隆过滤器 Python 代码示例布隆过滤器 Python 实现示例高性能布隆过滤器 Python 实现示例布隆过滤器 Java 实现示例 1布隆过滤器 Java 实现示例 2...

2021-04-05 23:01:46 89

原创 JVM(完结)

JVM探究1.JVM的位置2.JVM的体系结构百分之99的JVM调优都是在堆中调优,Java栈,本地方法栈,程序计数器是不会有垃圾存在的jvm特点:一次编译多处运行zid内存管理自动回收功能堆,栈,JVM分为四个部分类加载器运行时数据区执行引擎本地方法接口程序在执行前要先把java 文件转换成(Class文件),JVM首先要需要把字节码通过一定的方式类加载器(ClassLoader)把文件加载到内存中 运行时数据区,而字节码文件JVM的一套指令集规范并不能直接

2021-04-05 20:45:50 1804 1

原创 SpringMVC---Ajax使用

Ajax研究Ajax的核心是XMLHttpRequest对象(XHR){内置对象},XHR为服务器发送请求和解析服务器响应提供了接口,能够以异步方式从服务器获取新数据简介AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAx是一种无需重新加载整个页面的情况下,能够更新部分页面的技术AJAx 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术传统页面(不适用ajax技术的

2021-04-05 17:53:22 593

原创 SpringMVC---json

JSON文章目录JSON什么是json要求和语法格式JSON 和 JavaScript 对象互转案例:Jackson配置SpringMVC需要的配置web.xmlspringmvc-servlet.xmlUser的实体类User1也可用lombokController层次1.编写一个Controller;2.简化书写3.测试集合输出4.时间 出输为时间戳5.正常输出时间6.编写一个时间工具类引用工具类`controller`完整代码什么是jsonjson是一种轻量级的数据交换格式,采用完全独立于

2021-04-05 14:32:25 99 1

原创 Spring5--06---事务操作:(Spring事务管理介绍)

事务操作:(Spring事务管理介绍)1.事务添加到JavaEE三层结构里面的Service层(业务逻辑层)2.在Spring进行事务管理操作两种方式:编程式事务管理声明式事务管理3.声明事务管理基于注解方式(使用)基于XML配置文件方式4 在Spring经行声明事务管理,底层使用了AOP原理5 Spring事务管理API提供一个接口.代表事务管理器,这个接口针对不同的框架提供不同的实现类事务操作(注解声明式事务管理)1、在 spring 配置文件配置事务管理器&l

2021-04-04 22:46:23 113

原创 Spring5--05---JdbcTemplate

JdbcTemplate什么是JdbcTemplateSpring框架对JDBC进行封装,使用JbdcTemplate方便实现对数据库操作准备工作引用jar包在Spring配置文件中配饰数据看连接池<!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name

2021-04-04 22:44:17 169

原创 Spring5--04---AOP(概念)

AOP(概念)1,什么是APO面向切面编程(方面), 利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得 业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。通俗描述:不通过修改源代码方式,在主干功能里面添加新功能使用登录例子说明 AOPAOP(底层原理)1、 AOP 底层使用动态代理(1)有两种情况动态代理第一种 有接口情况,使用 JDK 动态代理创建接口实现类代理对象,增强类的方法第二种 没有接口情况,使用 CGLIB 动态代理创建子类的代理对象,

2021-04-04 22:39:06 121

原创 Spring5--03---IOC 操作 Bean 管理--bean 生命周期

IOC 操作 Bean 管理(FactoryBean)1、 Spring 有两种类型 bean,一种普通 bean,另外一种bean(FactoryBean)2、普通 bean:在配置文件中定义 bean 类型就是返回类型3、工厂 bean:在配置文件定义 bean 类型可以和返回类型不一样第一步 创建类,让这个类作为工厂 bean,实现接口 FactoryBean第二步 实现接口里面的方法,在实现的方法中定义返回的 bean 类型IOC 操作 Bean 管理(bean 作用域)1、在 S

2021-04-04 22:29:42 124

原创 Spring5--02---Bean管理

Bean管理1什么是 Bean管理(概念)(0)Bean 管理指的是两个操作(1)Spring 创建对象(2)Spirng 注入属性2、Bean 管理操作有两种方式(1)基于 xml 配置文件方式实现(2)基于注解方式实现IOC操作Bean 管理(基于 xmL 方式)1.基于xml方式创建对象在Spring配置文件中,使用Bean标签,标签里面添加对应属性,就可以实现对象创建在baen标签有很多属性,介绍常用的属性id:唯一标识符class:类路径,也是包路经创建对象

2021-04-04 22:21:53 146

原创 Spring5--01--Spring5框架概述

Spring5Spring5框架概述:spring是轻量级的开源的javaEE框架Spring可以解决企业级应用开发的复杂性Spring有两个核心部分:IOC和AOPIOC:控制反转,把创建对象过程交给Spring进行管理AOP:面向切面,不修改源码进行功能增强Spring特点:1.方便解耦.简化开发2.AOP编程支持3.方便程序测试4.方便和其他框架进行整合5.方便进行事务操作6.降低API开发难度创建普通类,在这个类创建普通方法public

2021-04-04 22:14:22 113 1

oracle数据库sql-笔记.zip

以思维导图的形式(xmind),呈现oracle数据库知识点.包括(集合操作,处理语句,约束,链接,运算符。函数,表达式,聚合函数,子查询,分组查询,分页查询,视图,序列等)以及数据库的整体框架,以便你更好的学习,阅读。。感谢各位的支持,谢谢大家赏识

2020-04-29

空空如也

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

TA关注的人

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