自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(178)
  • 资源 (15)
  • 收藏
  • 关注

原创 10. Docker Swarm(一)

上篇文章中我们讲到了Docker Compose来作为服务编排的工具,而Docker Compose只是用于单个宿主机上创建多个容器而进行服务编排的工具;而实际大型集群项目中,会面临多个服务器或宿主机上创建容器,从而组成集群提供相应的服务,而这时候就需要另一个服务编排工具Docker Swarm。

2023-08-10 21:22:41 2505 47

原创 09. Docker Compose

随着应用架构的不段复杂和微服务的应用,通常在一个系统中需要包含多个模块,而一般情况下这些模块都会被部署到不同的 Docker 容器中。如果每一个模块都通过手动方式来完成部署,则效率是非常低,且也不利于系统的维护和扩展。

2023-08-07 21:31:19 2452 58

原创 08. 容器间通信

上一篇《07.Docker网络通信模式》我们初步认识了Docker中的几种网络通信模式,分别有bridge,host,container,none。通过这些不同的网络通信模式,运行在宿主机上的容器就可以相互通信。

2023-08-04 13:02:41 794 50

原创 07. Docker网络通信模式

前面我们介绍了Docker容器的相关内容,Docker 的容器运行在宿主机的虚拟机上。这些虚拟机彼此独立,彼此之间没有任何接口,即容器彼此之间是逻辑隔离的。那么,如何实现容器的相互通信?这个就是我们今天要讲的内容。

2023-08-01 22:10:38 932 49

原创 06. 管理Docker容器数据

在生产环境中使用 Docker,一方面,需要对数据进行保存或者在多个容器之间进行数据共享;另一方面,在 Docker 的容器被删除后,并不会保留容器的状态信息。那么如何实现信息的持久化呢?这必然涉及容器的数据管理。

2023-07-30 09:15:07 1632 91

原创 05. 容器资源管理

通常情况下,我们一台宿主机上会同时启动多个Docker容器,而在默认情况下,Docker是没有限制其运行的容器所使用的硬件资源,比如CPU,内存,IO等。而在实际环境中,往往一个容器的负载过高,会占用宿主机的大部分资源,会导致其他容器的访问资源被抢占,而出现响应超时或无法响应等情况。因此,我们往往会对同时启动的Docker容器做资源的分配和管理。这就是我们今天要说的容器资源管理。

2023-07-27 22:22:42 560 85

原创 04. Idea集成Docker

上一节中,我们介绍了Dockerfile的方式构建自己的镜像。但是在实际开发过程中,一般都会和开发工具直接集成,如Idea。今天就介绍下idea和Docker如何集成。

2023-07-24 20:41:18 7383 103

原创 03. 自定义镜像 & Dockerfile

在前面章节中docker部署的nginx或者tomcat都是镜像仓库中已有的镜像,或是别人已经开发好的镜像。那么,在实际项目中,我们除了使用已有的镜像外,还有我们自己构建的镜像,比如项目的基础服务应用等等。

2023-07-21 08:10:46 988 89

原创 02. 第一个Docker部署应用

上一篇文章我们认识了什么是Docker,以及搭建Docker基础环境。那么今天我们就来使用Docker部署我们的第一个应用,从部署中我们加深认识关于Docker的各个组件和概念,记住这张体系结构图。

2023-07-18 21:51:05 717 88

原创 01. Docker基础环境构建

在这里我们将学习关于Docker的一些技能知识,那么首先我们应该对Docker有一个基础的认识,以及动手搭建一个基础的环境。

2023-07-16 08:41:16 2782 51

原创 【JUC进阶】12. 环形缓冲区

上一篇《【JUC进阶】11. BlockingQueue》中介绍到ArrayBlockingQueue,在物理上是一个数组,但在逻辑上来说是个环形结构。这就衍生出来我们今天要介绍的主题,环形缓冲区。

2023-07-13 08:17:47 1175 34

原创 【JUC进阶】11. BlockingQueue

对于并发程序而言,高性能自然是一个我们需要追求的目标,但多线程的开发模式还会引入一个问题,那就是如何进行多个线程间的数据交换和共享呢?而JUC库中提供了多种并发队列和环形缓冲区的实现,为我们提供了高性能和线程安全的数据结构。

2023-07-10 21:53:09 610 69

原创 【JUC进阶】10. 使用JMH进行性能测试

软件开发中,除要写出正确的代码之外,还需要写出高效的代码。这在并发编程中更加重要,原因主要有两点。首先,一部分并发程序由串行程序改造而来,其目的就是提高系统性能,因此,自然需要有一种方法对两种算法进行性能比较。其次,由于业务原因引入的多线程有可能因为线程并发控制导致性能损耗,因此要评估损耗的比重是否可以接受。无论出自何种原因需要进行性能评估,量化指标总是必要的。在大部分场合,简单地回答谁快谁慢是远远不够的,如何将程序性能量化呢? 这就是本节要介绍的 Java 微基准测试框架JMH。

2023-07-06 19:33:49 681 83

原创 【JUC进阶】09. 关于锁升级

在并发编程中,锁是保证线程安全的重要机制。然而,传统的锁在高并发场景下性能可能受到限制。为了解决这个问题,JUC引入了锁升级的概念,通过在运行时动态调整锁的状态,提升并发性能。前面我们分别介绍了无锁,偏向锁,轻量级锁,自旋锁,重量级锁的知识。这些其实就是JUC中对锁的优化而会转换的几种状态,也就是我们经常听到的锁升级。

2023-07-03 13:00:13 800 53

原创 【JUC进阶】08. 重量级锁

前面我们介绍了偏向锁,轻量级锁,自旋锁相关知识。初次之外,锁升级过程还会涉及到重量级锁。重量级锁是并发编程中常用的同步机制之一,它能够确保对共享资源的互斥访问,但由于其较高的开销,需要在合适的场景中使用。今天我们就来深入聊聊关于重量级锁,以及他的原理和性能分析。

2023-06-30 00:25:52 326 27

原创 【JUC进阶】07. 自旋锁

从JDK6版本开始,HotSpot虚拟机开发团队就花费了大量的资源来实现各种的锁优化技术,前面介绍到的轻量级锁(Lightweight Locking)、偏向锁(Biased Locking)就是其中的两种方式,而今天要讲的自旋锁(Adaptive Spinning)也是为了在线程之间更高效地共享数据及解决竞争问题,从而提高程序的执行效率。

2023-06-29 08:18:10 515 27

原创 【JUC进阶】06. 轻量级锁

前面一节我们讲到了偏向锁。当偏向锁被撤销,或其他线程竞争的时候,偏向锁会撤销并且升级为轻量级锁。轻量级锁(Lightweight Lock)机制,它是一种介于偏向锁和重量级锁之间的锁实现。

2023-06-28 08:21:04 1204 33

原创 【JUC进阶】05. 偏向锁

偏向锁是Java并发编程中一种重要的锁机制,它针对特定的线程进行优化,从而提高了并发性能。这种锁机制在多线程场景下非常常见,特别适用于一些读写分离的应用场景。

2023-06-26 08:21:36 2617 33

原创 【JUC进阶】04. 无锁CAS

无锁的Compare and Swap(CAS)操作是一种高效的并发编程技术,通过原子性的比较和交换操作,实现了无锁的线程同步。在我之前的文章《简单理解CAS》中已经有介绍过关于CAS了,今天我们再来重新回顾以及整理一遍。

2023-06-25 13:06:15 478 24

原创 【JUC进阶】03. Java对象头和内存布局

为了后面更好的学习锁优化以及运作过程,需要我们对HotSpot虚拟机的Java对象内存布局有一定的了解,也作为技术储备。

2023-06-21 08:24:49 1678 44

原创 【JUC进阶】02. volatile关键字

volatile 是 JVM 提供的轻量级的同步机制。volatile 关键字可以保证并发编程三大特征(原子性、可见性、有序性)中的可见性和有序性,不能保证原子性。

2023-06-19 08:15:06 705 92

原创 【JUC进阶】01. Synchroized实现原理

Synchronized是在并发编程中很经常使用,Java中除了提供Lock等API来实现互斥以外,还提供了语法(关键字)层面的Synchronized来实现互斥同步原语,今天闲来聊聊Synchronized关键字。

2023-06-16 08:20:07 592 36

原创 【JUC基础】17. 并发编程常见问题

多线程固然可以提升系统的吞吐量,也可以最大化利用系统资源,提升相应速度。但同时也提高了编程的复杂性,也提升了程序调试的门槛。今天就来汇总一些常见的并发编程中的问题。

2023-06-14 08:28:21 500 29

原创 01. Springboot集成magic-api

今天项目中遇到一个问题,springboot后端项目经常使用log4j输出日志,同时会配置相应日志级别。但是由于开发过程中不经意间都会log.info("xxxx")来打印日志,而线上级别也会控制在info级别。正常不会有什么问题,但是今天有个超长报文传输,恰好日志在控制台输出了这段报文用作跟踪。而log并没有开启缓存以及并行写入,导致IO阻塞,程序无法正常响应。

2023-06-11 13:28:01 5829 56

原创 【JUC基础】16. Fork Join

“分而治之”一直是一个非常有效的处理大量数据的方法。著名的MapReduce也是采取了分而治之的思想。。简单地说,就是如果你要处理 1000 个数据,但是你并不具备处理 1000个数据的能力,那么你可以只处理其中的 10 个,然后分阶段处理 100 次,将 100 次的结进行合成,就是最终想要的对原始 1000 个数据的处理结果。而这就是Fork Join的基本思想。

2023-06-08 08:20:49 857 44

原创 【JUC基础】15. Future模式

Future 模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。当我们需要调用一个函数方法时,如果这个函数执行得很慢,那么我们就要进行等待。但有时候,我们可能并不急着要结果。因此,我们可以让被调者立即返回,让它在后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务,在真正需要数据的场合再去尝试获得需要的数据。

2023-06-06 08:07:22 558 62

原创 【JUC基础】14. ThreadLocal

一般提到多线程并发总是要说资源竞争,线程安全。而通常保证线程安全的其中一种方式便是控制资源的访问,也就是加锁。其实还有另一种方式,那么便是增加资源来保证所有对象不竞争少数资源。比如,有100个人需要填写信息表,如果只有一只笔,那么要么变成串行,一个一个填写,要么就是我写一半你写一半。那么如果准备100只笔,100个人每个人都有一只笔能够填写信息表,那么就不会出现竞争的情况,也就能顺利的保证信息表的填写。这支笔也就是我们今天要说的ThreadLocal。

2023-06-04 08:24:30 797 41

原创 【JUC基础】13. 线程池(二)

我们继续前面的《【JUC基础】12.线程池(一)》。

2023-06-02 12:45:47 859 52

原创 【JUC基础】12. 线程池(一)

我们知道多线程的使用,是为了最大限度发挥现代多核处理器的计算能力,提高系统的吞吐量和性能。但是如果不加以控制和管理,随意使用多线程,对系统性能反而会有不利的影响。线程数量和系统CPU资源是息息相关的,随意使用甚至可能会耗尽系统CPU资源和内存资源。

2023-05-31 08:33:26 1170 41

原创 【JUC基础】11. 并发下的集合类

我们直到ArrayList,HashMap等是线程不安全的容器。但是我们通常会频繁的在JUC中使用集合类,那么应该如何确保线程安全?

2023-05-28 13:13:42 881 32

原创 【JUC基础】10. Atomic原子类

Atomic英译为原子的。原子结构通常称为不可分割的最小单位。而在JUC中,java.util.concurrent.atomic 包是 Java 并发库中的一个包,提供了原子操作的支持。它包含了一些原子类,用于在多线程环境下进行线程安全的原子操作。使用原子类可以避免使用锁和同步机制,从而减少了线程竞争和死锁的风险,并提高了多线程程序的性能和可伸缩性。

2023-05-25 19:48:45 1489 51

原创 【JUC基础】09. LockSupport

LockSupport是一个线程阻塞工具,可以在线程任意位置让线程阻塞。线程操作阻塞的方式其实还有Thread.suspend()和Object.wait()。而LockSupport与suspend()相比,弥补了由于resume()方法而导致线程被挂起(类似死锁)的问题,也弥补了wait()需要先获得某个对象锁的问题,也不会抛出InterruptedException异常。

2023-05-22 20:16:42 708 51

原创 【JUC基础】08. 三大工具类

JUC包中包含了三个非常实用的工具类:CountDownLatch(倒计数器),CyclicBarrier(循环栅栏),Semaphore(信号量)。

2023-05-18 08:05:33 988 62

原创 【JUC基础】06. 生产者和消费者问题

学习JUC,就不得不提生产者消费者。生产者消费者模型是一种经典的多线程模型,用于解决生产者和消费者之间的数据交换问题。在生产者消费者模型中,生产者生产数据放入共享的缓冲区中,消费者从缓冲区中取出数据进行消费。在这个过程中,生产者和消费者之间需要保持同步,以避免数据出现错误或重复。今天我们就来说说生产者消费者模型,以及JUC中如何解决该模型的同步问题。

2023-05-15 21:41:48 796 37

原创 【JUC基础】05. Synchronized和ReentrantLock

前面两篇中分别讲了Synchronized和ReentrantLock。两种方式都能实现同步锁,且也都能解决多线程的并发问题。那么这两个有什么区别呢? 这个也是一个高频的面经题。

2023-05-10 20:52:13 1137 39

原创 【JUC基础】04. Lock锁

java.util.concurrent.locks为锁定和等待条件提供一个框架的接口和类,说白了就是锁所在的包。

2023-05-09 08:33:55 329 47

原创 【JUC基础】02. JUC思维导图

juc思维导图,用于JUC内容学习

2023-05-09 08:32:11 224 2

原创 【JUC基础】01. 初步认识JUC

前段时间,有朋友跟我说,能否写一些关于JUC的教程文章。本来呢,JUC也有在我的专栏计划之内,只是一直都还没空轮到他,那么既然有这样的一个契机,那就把JUC计划提前吧。那么今天就重点来初步认识一下什么是JUC,以及一些基本的JUC相关基础知识。

2023-05-01 16:02:09 985 45

原创 ChatGPT生成一篇文章:关于Docker

如今AI智能如火如荼,如果不会点ChatGPT总感觉有点落后了。最近刚好重新复习了一遍Docker,这里尝试通过ChatGPT来生成一篇关于Docker文章。来看效果。

2023-04-18 22:07:55 2524 11

原创 【JUC基础】03. 几段代码看懂synchronized

程序员经常听到“并发锁”这个名词,而且实际项目中也确实避免不了要加锁。那么什么是锁?锁的是什么?今天文章从8个有意思的案例,彻底弄清这两个问题。

2023-04-12 22:02:55 242 27

Java8 API CHM文档

Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。Java8 API CHM文档,查阅JAVA相关文档。

2023-04-30

myeclipse2014破解注册机

myeclipse2014破解注册机,内有教程 myeclipse2014破解注册机,内有教程

2019-01-02

使用jquery自定义星级评分插件demo

使用jquery自定义星级评分插件

2015-07-22

mysql-connector-java-5.1.11-bin

mysql-connector-java-5.1.11-bin

2014-10-27

mybatis-generator-core-1.3.2

mybatis-generator-core-1.3.2

2014-10-27

httpClient和htmlparse获取网页数据使用jar

httpClient和htmlparse获取网页数据使用jar

2014-08-14

模拟https请求工具类

httpClient模拟https请求,包含图片上传等。

2014-07-03

过滤字符串中包含表情字符

过滤一个字符串中包含有表情的字符,例如一个用户昵称中包含的表情

2014-07-03

pinyin4j相关的jar包跟demo

中文转成拼音相关工具类以及所用到的jar包

2013-08-08

javascript 身份证号码格式验证

运用javascript进行身份证号码格式验证。

2013-06-14

easyui-demo

easyui所用包,包含demo,js,css。

2012-12-21

eclipse_svn_site-1.6.15.zip

eclipse_svn_site-1.6.15.zip,提供myeclipse的svn插件

2012-12-08

futionchar完成版实例

包含functionchar的用法以及一些实例

2012-10-29

js 特效示例

提供一些 js 的特效示例以供大家参考

2012-10-17

formValidator

提供表单验证实例,里面的demo可供使用

2012-10-14

jquery-ui-1.7.2.custom.min.js

jquery-ui-1.7.2.custom.min.js 用于提供实现jquery特效的js

2012-09-30

空空如也

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

TA关注的人

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