自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (2)
  • 收藏
  • 关注

原创 【为了传文件临时搞得】

残忍温柔·

2024-03-18 13:52:53 103

转载 分布式事务,这一篇就够了

随着互联网技术的不断发展,系统越来越复杂,几乎所有 IT 公司的系统都已经完成从单体架构到分布式架构的转变,分布式系统几乎无处不在。谈到分布式系统,特别是微服务架构,我们不得不谈分布式事务。今天就跟大家一起聊聊分布式事务以及常用解决方案。

2021-03-23 10:53:45 655

原创 CSS之页面布局三大核心

文章目录1. CSS 盒子模型1.1 看透网页布局的本质1.2 盒子模型(Box Model)组成1.2.1 边框(border)1. CSS 盒子模型页面布局要学习三大核心, 盒子模型, 浮动 和 定位. 学习好盒子模型能非常好的帮助我们布局页面1.1 看透网页布局的本质网页布局过程:先准备好相关的网页元素,网页元素基本都是盒子 Box 。利用 CSS 设置好盒子样式,然后摆放到相应位置。往盒子里面装内容网页布局的核心本质: 就是利用 CSS 摆盒子1.2 盒子模型(Box Mod

2020-09-30 16:10:43 1229

原创 一个后端人员的前端笔记之CSS

文章目录1. CSS 简介1.1 HTML 的局限性1.2 CSS-网页的美容师1.3 CSS 语法规范1.4 CSS 代码风格1.4.1 样式格式书写1.4.2 样式大小写1.4.3 空格规范2. CSS 选择器2.1 CSS 选择器的作用2.2 选择器分类2.2.1 标签选择器2.2.2 类选择器2.2.3 id 选择器1. CSS 简介1.1 HTML 的局限性说起 HTML,这其实是个非常单纯的家伙,他只关注内容的语义。比如 h1 表明这是一个大标题,p 表明这是一个段落img 表明这儿有一

2020-09-30 11:17:03 524

原创 一个后端人员的前端笔记之HTML

HTML 简介1:网页1.1什么是网页网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。网页是构成网站的基本元素,它通常由图片、链接、文字、声音、视频等元素组成。通常我们看到的网页,常见以 .htm 或 .html 后缀结尾的文件,因此将其俗称为 HTML 文件。1.2 什么是 HTMLHTML 指的是超文本标记语言 (Hyper Text Markup Language) ,它是用

2020-09-29 09:03:49 1118

原创 Spring Security三

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求

2020-06-01 17:16:04 444

原创 Spring Security系列二

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求

2020-06-01 15:24:28 290

原创 Spring Security使用笔记

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求新建一个springboot工程,导入Spring Security依赖 <dependency> <groupId>org.spring

2020-06-01 13:44:35 394

原创 并发流程工具Semaphore的使用

一个计数信号量。 在概念上,信号量维持一组许可证。 如果有必要,每个acquire()都会阻塞,直到许可证可用,然后才能使用它。 每个release()添加许可证,潜在地释放阻塞的线程。 记得以前校招,一个公司对应很多面试的学生,因为人数太多每次至多面试5个人,其他人只能等待,除非有人出来,等待的人才有机会进去,一般是排队公平进去,但是大家为了找工作都是抢着进去面试,大概是这么个意思。等待就是acquire(),有人出来就是release(),Semaphore底层使用AQS实现

2020-05-26 16:03:59 230

原创 并发流程工具CyclicBarrier

允许一组线程全部等待彼此达到共同屏障点。 循环阻塞在涉及固定大小的线程的程序中很有用,这些线程必须偶尔等待彼此。 屏障被称为循环 ,因为它可以在等待的线程被释放之后重新使用。这和CountDownLatch有明显的区别。通俗点讲就是:让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。

2020-05-20 12:19:25 101

原创 并发容器CopyOnWriteArrayList解析

ArrayList<E>是线程不安全的,在早期可以用Vector代替,或者利用Collections工具类,通过包装实现线程安全,但是这两种方方式效率低下。

2020-05-16 13:52:51 229

原创 线程同步工具Condition详解

Condition可以代替Object监视器方法( wait , notify和notifyAll ),必须和Lock配合使用, Lock替换synchronized方法和语句的使用, Condition取代了对象监视器方法的使用。可以使某个线程挂起,直到其他线程唤醒,就像Object.wait()方法,一个Condition实例本质上绑定到一个锁。 要获得特定Condition实例,请使用lLock的newCondition()方法。

2020-05-15 17:18:43 271

原创 并发流程工具CountDownLatch解析

**CountDownLatch**是一个线程并发流程工具,它允许一个或者多个线程阻塞直到一些线程执行完毕,才会继续执行,CountDownLatch会存在一个计数器,当 await方法调用,那么后面的线程都会被阻塞,直到由于countDown()方法的调用而导致当前计数达到零,后续被阻塞的线程才会继续执行,这个计数器是一次性的,不能重置,如果需要重置计数,请考虑使用**CyclicBarrier**

2020-05-15 13:20:46 167

原创 并发容器ConcurrentHashMap原理解析

HashMap是线程不安全的,如并发下键相同的put后面的put会覆盖前面的put,这样得到的结果会与实际不符,所以有线程安全的情况下就必须使用一些手段让HashMap变得线程安全,或者用其他线程安全的map替代,而这个安全的map就是**Hashtable**,但是其效率低下

2020-05-12 22:48:28 296

原创 小辣椒Lombok用法

工程中不可避免会在实体类中写大量的set或者get方法,如果工程变化,生成的一些方法会跟着改变,这就是要改变源代码,违背了开闭原则,有什么方法可以避免功能变化而不用更改生成的诸如set放法人呢?答案就是Lombok小辣椒

2020-05-12 20:17:49 452 1

原创 创建线程的正确姿势

简介:多线程,作为实现软件并发执行的一个重要方法,也是越来越重要。多线程可以在时间片里被cpu快速切换,所以资源能更好被调用、程序设计在某些情况下更简单、程序响应更快。本系列博客主要介绍多线程的核心知识,对多线程核心知识进行归纳总结,本博客暂时不涉及并发包和线程池的内容,希望能对阅读本博客的人有所帮助,如有不足之处欢迎留言指正

2020-05-12 19:49:52 284

原创 如何正确的停止线程

停止线程的正确方法**原理:**通过interrup通知线程,是否中断,什么时候中断由线程决定,而不是强制中断,保证安全最佳实践:如何正确停止线程1: 通常线程会在什么时候停止:run方法执行完毕或者抛出异常未捕获2: 正确的停止方法interrupta:通常线程会在什么情况下停止普通情况c: 线程可能被阻塞如果线程睡眠中,收到中断通知,会抛出异常,需要异常处理d:如果线程...

2020-05-12 19:49:30 400

原创 一文搞定线程的生命周期

话不多说,直奔主题,看图:线程的6个状态new:已经创建没有调用start方法启动,已经做好准备Runnable:调用start方法,可运行,即使在运行也是Runnable而不是runningBlocked:monitor被其他线程占有,也就是被synchronized修饰Waiting:一般习惯而言,把Blocked(被阻塞)、Waiting(等待)、Timed Waiting(计...

2020-05-12 19:49:13 128

原创 线程安全知多少

线程是把多人剑:多线程会导致性能问题(线程引入的开销和上下文切换)

2020-05-12 17:29:51 236

原创 一文彻底搞懂线程池

创建线程本身开销大,反复创建并销毁,过多的占用内存。所以有大量线程创建考虑使用线程池**。线程池不用反复创建线程达到线程的服用,更具配置合理利用cpu和内存减少了开销,性能会得到提高,还能统一管理任务比如服务器收到大量请求,每个请求都分配线程去处理,对服务器性能考验就比较大,如果创建5个以上线程考虑使用线程池。

2020-05-12 17:29:13 308

原创 一文搞懂Synchronized

简介:对多线程可见,保证同一时刻最多只有一个线程执行代码,达到线程并发安全,被修饰的代码保证了可见性、一定程度上的原子性和禁止指令重排序。关键是独占一个锁。关键字,java原生支持,最基本的互斥同步手段。如果不使用并发手段的后果:比如两个线程同时执行a++,最后结果比预期的要少原因:a++包含三个操作不具有原子性,读取a值,a+1,然后写入内存,共分三个步骤抢占式调度引起,底层原理是jav...

2020-05-12 16:20:24 532 1

原创 springboot整合接口管理工具Swagger2

在前后端分离开发中,为了减少与其它团队的沟通成本,一般都会构建一份 RESTful API 文档来描述所有的接口信息。但传统的方式有许多弊端,不仅编写文档工作量巨大,而且维护不方便,测试也不方便(需要借助第三方工具,如 Postman 来测试) 为解决这些问题,可以使用 Swagger 2 来构建在线接口文档.

2020-05-12 14:09:10 386

原创 并发工具类ThreadLocal详解

一般用于每个线程需要独享的对象(通常是工具类,典型的SimpleDateFormat和Random)还有就是每个线程内需要保存全局变量(例如在拦截器中获取用户信息),可以让不同方法直接使用,避免参数传递的额麻烦能够线程安全,不需要枷锁,避免参数传递,代码耦合低...

2020-05-11 23:06:06 333

原创 RabbitMQ技术学习与应用

RabbitMQ是一个 异步通信中间件,可以在高并发下实现消峰限流,能实现消息的解耦,引入消息队列可以不用等待消息处理完成可以继续往下执行,不影响主要步骤的同步执行。在高并发下可以将任务放进队列中,让程序从队列中取出执行,而不是崩溃或者直接拒绝,起到消峰限流

2020-05-07 22:39:42 213

原创 CSS学习笔记

网页分成三个部分:结构(HTML)表现(CSS)行为(JavaScript)CSS层叠样式表网页实际上是一个多层的结构,通过CSS可以分别为网页的每一个层来设置样式而最终我们能看到只是网页的最上边一层总之一句话,CSS用来设置网页中元素的样式使用CSS来修改元素的样式第一种方式(内联样式,行内样式):在标签内部通过style属性来设置元素的样式...

2020-05-04 10:55:49 198

原创 Elasticsearch第一篇核心概念

elasticsearch的核心概念Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级Cluster:集群:包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,对于中小型应用来说,刚开始一个集群就一个节点很正常Node:节点,集群中的一个节点,节...

2020-05-01 22:39:00 100

原创 redis多实例缓存系统实现

redis是一个高可用,可持久化,基于内存的强大非关系型数据库,今天做个记录利用redis做一个简单的多实例缓存系统并实现主从复制缓。

2020-05-01 13:24:37 679 1

原创 分页查询实践

上次笔试,问分页查询,居然不知如何回答,其实也不难,今天做了一个测试,在1000万数据中做分页查询。

2020-04-30 00:48:38 166

原创 普通变量变为原子变量——AtomicIntegerFieldUpdater

有的时候我们不需要直接申明一个原子变量,比如申明一个AtomicInteger对象,因为原子变量本身就影响性能,还有就是只是偶尔进行原子操作,比如在某一时刻段,那么这个时候AtomicIntegerFieldUpdater就显得比较有用了

2020-04-29 00:05:48 275

原创 千万级别数据插入实现方案

上次面试问我上万级别的数据如何快速插入数据库,当时不知怎么回答,回来通过查资料和实践,通过线程池和事务管理实现了批量快速插入数据,特地总结一下。目录结构,一个简单的springboot工程首先建立一个普通的表只有三个字段:CREATE DATABASE IF NOT EXISTS demo;USE demo;CREATE TABLE IF NOT EXISTS t_user(t_id...

2020-04-28 22:04:24 2822

原创 并发编程之AtomicReference

此类属于原子并发包,可以对引用类型进行原子无锁操作

2020-04-26 22:06:38 216

原创 并发之原子数组

原子数组,可以对数组进行无锁原子操作,java.util.concurrent.atomic 中的类延伸了volatile,其中原子数组,可以对数组进行无锁原子操作,以AtomicIntegerArray为例子

2020-04-26 21:06:18 228

原创 mysql使用笔记

mysql通用建表语句:CREATE TABLE IF NOT EXISTS stuinfo ( id INT PRIMARY KEY AUTO_INCREMENT, #自增,主键非空唯一,会创建主键索引 stuname VARCHAR (20) NOT NULL,#非空 gender CHAR(1), seat INT UNIQUE,#唯一约束,会建立唯一索引 age IN...

2020-04-18 18:24:41 135

原创 RabbitMQ 实战教程(三) 发布订阅

RabbitMQ 消息模型的核心思想是,生产者不直接发送任何消息给队列。实际上,一般的情况下,生产者甚至不知道消息应该发送到哪些队列。 相反的,生产者只能将信息发送到交换器。交换器是非常简单的。它一边收到来自生产者的消息,另一边将它们推送到队列。交换器必须准确知道接收到的消息如何处理。是否被添加到一个特定的队列吗?是否应该追加到多个队列?或者是否应该被丢弃?这些规则通过交换器类型进行定义。

2020-04-07 17:34:10 201

原创 RabbitMQ 实战教程(二) 工作队列

工作队列,又称任务队列,主要思想是避免立即执行资源密集型任务,并且必须等待完成。相反地,我们进行任务调度,我们将一个任务封装成一个消息,并将其发送到队列。工作进行在后台运行不断的从队列中取出任务然后执行。当你运行了多个工作进程时,这些任务队列中的任务将会被工作进程共享执行。 这个概念在 Web 应用程序中特别有用,在短时间 HTTP 请求内需要执行复杂的任务。

2020-04-07 17:15:09 95

原创 RabbitMQ实战(一)

RabbitMQ 是一个消息代理:它接受并转发消息。你可以将其视为邮局:当你将要发布的邮件放在邮箱中时,您可以确信 Postman 先生最终会将邮件发送给收件人。在这个比喻中,RabbitMQ 是一个邮箱,邮局和邮递员。 RabbitMQ 和邮局之间的主要区别在于它不处理纸张,而是接受,存储和转发二进制数据块的消息。

2020-04-07 17:00:56 168

原创 java虚拟机垃圾回收

垃圾收集(Garbage Collection GC),很多人认为他就是java的附属产物,其实不然,它出现的时间比java早多了,1960年诞生于MIT的Lisp,诞生之初人们就绪思考一下几个问题:那些内存需要被回收什么时候回收如何回收一、怎么判断对象已死**引用计数算法:**当一个对象被引用一次,计数器就增加1,所以当一个对象的计数器为0的时候就代表这个对象已死,这个是很多语言中...

2020-04-07 15:57:24 91

原创 java虚拟机内存管理

java和C、C++之间素来有一堵墙,这堵墙就是内存动态分配和垃圾收集技术。java的内存分配如下图:程序计数器:当前线程所执行的字节码的行号指示器,是一块虚拟的很小的内存空间,线程私有的java虚拟机栈:线程私有的,生命周期与线程相同,里面存放的是基本数据类型,对象引用类型(reference类型,但是他们不是对象本身,一般是指向对象起始位置的引用指针,也有可能是指向一个代表对象的句柄或者...

2020-04-07 15:37:55 77

原创 全文检索第一篇lucene的使用

随着数据的快速增长,对数据的检索功能有了越来越高的要求,具体说就是要快,准,最早期涉及到全文检索技术的互联网企业只有搜索公司.对视频,图 片,文本信息,全部整理成索引文件,利用索引的特点(有序,结构,存储在磁盘,快速定位,文件)实现丰富查询功能的技术;

2020-04-03 21:39:23 218

原创 Redis详细笔记

Redis是基于内存可持续化的非关系型数据库,结构化数据: 将一批数据集合抽取共有特点形成结构--学生信息,人体信息.mysql中每一张表格都是结构化数据,redis不仅支持像mysql结构化查询,也支持非结构化数据:无法公用一批共有特点的数据集合--如日志数据.网页

2020-04-03 14:22:22 315

JAVA核心知识点整理.pdf

本PDF文档为java核心知识点整理,知识点全面,几乎涵盖所有java编程相的知识点,结构完整,目录清晰,有助于复习、面试、查漏补缺

2020-01-14

Spring Boot2 教程.pdf

本文档为springboot2的最新教程,从零到一深入浅出,整合各种主流技术,总结springboot的高频考点

2020-01-14

空空如也

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

TA关注的人

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