自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 5.java多线程——线程池

线程池为什么推荐用线程池去创建线程?特点示例手动创建线程线程池创建线程为什么不推荐使用线程池工具类创建线程池线程池执行器线程池工具类创建的几种线程池newCachedThreadPoolnewFixedThreadPoolnewSingleThreadExecutornewScheduledThreadPool线程池深入分析线程提交优先级一个奇怪的现象线程执行优先级为什么推荐用线程池去创建线程?特点手动创建线程:频繁创建销毁开销大,疯狂抢占资源混乱,出错概率大。线程池创建线程很好的管理线程,复用

2021-08-06 18:30:39 457

原创 3.java多线程——线程安全

线程安全java中的各种锁synchronized简单案例锁优化附加:java对象组成锁升级代码演示(1). 无状态(2). 偏向锁(3). 轻量级锁(4). 重量级锁锁升级问题源码看锁升级cas什么是cascas机制原子性问题ABA问题分段cas优化AQS概述简介问题重现手写同步器锁AQS的可重入性AQS的公平与非公平ThreadLocal介绍官方介绍基本使用与synchronized比较与Thread配合使用原理ThreadLocal内部结构Thread的重要字段图解使用原理核心源码分析弱引用导致的内存

2021-08-06 17:56:17 475

原创 4.java多线程——原子操作类

原子操作类分类原子更新基本类型原子更新数组原子更新引用类型原子更新字段类累加器分类jdk1.5开始后,rt.jar增加了java.util.concurrent.atomic包,增加了一些专门进行原子操作的类。如下表: 类型 java类 原子更新基本类型 AtomicBoolean AtomicInteger AtomicLong 原子更新数组 AtomicIntegerArray

2021-08-06 17:54:56 389

原创 2.java多线程——java内存模型

Java内存模型计算机理论模型和基本结构计算机理论模型计算机基本硬件结构CPU 内部结构JMM( java内存模型)多核并发缓存架构JMM概述JMM数据原子操作JMM可见性案例使用volatile前分析缓存一致性协议(MESI)使用volatile后分析votaile缓存可见性实现原理JMM有序性案例什么是指令重排指令重排的前提as-if-serialhappens-before双重检测锁DCL真的安全吗内存屏障内存屏障规范jvm底层源码JMM原子性学习java内存模型之前呢,我们先来看看计算机的一些相关

2021-07-21 18:12:36 317

原创 1.java多线程——java线程

java多线程线程概述线程创建方式线程分类java 线程与 KLT 的关系java 线程生命周期为什么要用并发线程概述进程是系统分配资源的基本单位,线程是调度 CPU 的基本单位,一个进程至少包含一个执行线程,线程寄生在进程当中。每个线程都要一个程序计数器(记录要执行的下一条指令),一组寄存器(保存当前线程的工作变量),堆栈(记录执行历史,其中每一帧保存了一个已经调用但未返回的过程)。线程是调度 cpu 的最小单元,也叫轻量级进程 LWP(Light Weight Process)。线程创建方式继

2021-07-21 15:42:38 145

原创 8.JVM 调优

JVM概述与类的加载机制JVM 调优8 JVM 调优8.1 性能监控,故障处理工具8.1.1 jps:虚拟机进程状况工具8.1.2 jstat:虚拟机统计信息监视工具8.1.3 jinfo:Java 配置信息工具8.1.4 jmap:Java 内存映像工具8.1.5 jhat:虚拟机堆转储快照分析工具8.1.6 jstack:Java 堆栈跟踪工具8.2 可视化故障处理工具8.2.1 jhsdb 基于服务性代理的调试工具8.2.1.1 启动8.2.1.2 使用8.2.2 jconsole Java 监视与

2021-01-25 18:35:18 876

原创 6.垃圾回收算法详解、7.垃圾收集器全解

垃圾回收算法详解、垃圾收集器全解6 垃圾回收算法详解6.1 引用计数算法6.2 可达性分析算法6.3 判断对象可以被回收6.3.1 引用类型6.3.2 finalize 方法最终判定6.3.3 判断类是否可以被回收6.4 垃圾收集算法6.4.1 标记-清除算法6.4.2 复制算法6.4.3 标记-整理算法6.4.4 分代收集算法7 垃圾收集器全解7.1 垃圾收集器概述7.2 Serial 收集器7.3 ParNew 收集器7.4 Scavenge 收集器7.5 CMS 垃圾收集器7.5.1 运行过程7.5

2021-01-25 18:34:22 210

原创 4.对象逃逸分析、5.JVM 内存分配和回收策略

对象逃逸分析、JVM 内存分配和回收策略4 对象逃逸分析4.1 什么是逃逸分析4.2 JVM 三种运行模式5 JVM 内存分配和回收策略5.1 堆简述5.1.1 堆空间分配情况**5.1.2 查看堆空间使用情况****5.1.3 最大堆空间****5.1.4 GC 示例**5.2 分配策略5.2.1 长期存活的对象直接进入老年代5.2.2 Minor GC 后存活的对象 Survivor 区放不下5.2.3 大对象直接进老年代5.2.4 对象动态年龄判断5.2.5 老年代空间分配担保机制4 对象逃逸分析

2021-01-25 18:33:54 240

原创 3.JVM 内存模型

JVM 内存模型3 JVM 内存模型3.1 jvm 内存模型图3.2 线程栈3.2.1 初步介绍3.2.2 栈帧3.2.2.1 局部变量表3.2.2.2 操作数栈3.2.2.3 动态链接3.2.2.4 返回地址3.2.3 反汇编代码解读3.2.4 栈内存大小3.3 程序计数器3.4 方法区3.5 直接内存3.6 本地方法栈3.7 堆3.7.1 堆内存分代划分3.7.2 堆内存 GC 动态演示3 JVM 内存模型3.1 jvm 内存模型图我们先来看下 jvm 内存模型图:首先呢,字节码文件(例如,M

2021-01-25 18:33:24 441

原创 1.JVM概述、2.类的加载机制

JVM概述与类的加载机制1 概览1.1 jdk 体系结构1.2 java 虚拟机2 类加载机制2.1 类加载过程2.2 类加载器2.2.1 java 中有如下几种类加载器2.2.2 自定义类加载器2.2.3 双亲委派机制2.2.3.1 介绍2.2.3.2 原理1 概览1.1 jdk 体系结构java 虚拟机阵营:Sun HotSpot VM, BEA JRockit VM, IBM, J9 VM, Azul VM, Apache Harmony, Googole Dalvik VM, Microso

2021-01-25 18:32:42 159

原创 springboot连接达梦数据库

springboot连接达梦数据库这次实战主要说springboot项目连接达梦数据库。先准备好达梦数据库的驱动包,如下:在执行maven命令把该驱动包安装到自己的maven仓库,命令如下:mvn install:install-file -DgroupId=com.dm -DartifactId=DmJdbcDriver -Dversion=1.7.0 -Dpackaging=jar -Dfile=C:\Users\CHENGdd\Desktop\temp\DmJdbcDriver17.jar

2020-10-14 15:58:38 8544 5

原创 银河麒麟安装达梦数据库

本次实战主要内容是,在虚拟机里面装了一个银河麒麟系统,在该系统里面安装达梦数据库准备虚拟机 Oracle VM VirtualBox安可环境系统为银河麒麟Kylin-Desktop-V10-Release-Build1-20200313-x86_64.iso数据库为达梦dm8_setup_rh6_64_ent_8.1.1.84_20200526.iso一般情况下我们不用root用户去安装dm(root权限最大了),我们新建一个用户(执行命令时,如果提示权限不够,那么给要执行的命令前面加上sudo暂

2020-10-14 15:49:40 8926 1

原创 分布式事务解决方案之 seata 2pc

今天我们要学习的是spring cloud alibaba seata 之2pc实现分布式事务,有时候也叫spring cloud alibaba seata 之XA,基于数据库的XA协议来实现2PC又称为XA方案。微服务基础项目项目来源本次实战是在我们写好一个 spring cloud 项目的基础上去处理的,项目来源:https://gitee.com/cddofficial/distributed_transaction_project_code.git如下图:拿到项目代码后,项目重命名为

2020-09-30 16:30:55 571

原创 分布式事务理论

什么是分布式事务在说什么是分布式事务之前我们先来回顾下单体架构项目的事务。单体架构项目的事务简单来说就是,一件事要么成功要么失败。即,这件事所包含的所有环节要么全部成功,要么全部失败。事务的4个特性,ACID,如下:事务原子性(atomicity),一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作。一致性(consistency),事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。**隔离性(isolation),**

2020-09-30 16:05:35 188

原创 springboot使用外部servlet容器——国产中间件金蝶Apusic

近年来,我国高科技领域的一些公司,技术经常被某些国家干扰,阻挠发展。互联网领域也不可避免,大家都用的github有时候也会被强制区分国籍对待。还有前段时间的docker等甚至将来可能更多,为了避免以后落入被动局面,互联网技术的中国创造也迫在眉睫。越来越多的公司和企业开始加入到互联网国产化生态的建设当中。今天我们来看springboot如何使用国产servlet容器金蝶Apusic。开始之前这里可以先随便创建一个springboot项目,可以参考下面文档当然也可以自己搭建搭建springboot +

2020-09-30 11:27:57 5618 1

原创 搭建springboot + shiro 项目

这次我们搭建一个springboot + mybatis + shiro + mysql + redis + thymeleaf + hutool + layui项目。期望能够实现这样的效果:1. 能对登录及其他请求做到控制2. 对后端接口能做权限控制3. 对前台页面能做权限控制4. 实现session共享

2020-07-08 16:29:42 486 2

原创 搭建springboot + mybatis项目

我们来搭建一个springboo + mybatis + mysql 并且实现自动生成代码的功能

2020-07-08 16:24:30 1711 1

原创 搭建spring boot + mybatis plus项目

最近看到不少人在用mybatis plus,代码生成工具更好用。想起之前用mybatis 自己花了很大的功夫去实现这个代码生成工具,生成的代码只有dao层(即,那个mapper)层。我们今天就来搭建一个spring boot + mybatis plus 项目,实现一个代码生成器。

2020-06-19 14:38:54 5471 10

原创 00-JVM指令手册

00-JVM指令手册1 栈和局部变量操作1.1 将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入操作数栈iconst_2 将int类...

2020-04-15 16:36:01 299

原创 Nginx使用及可能遇到问题

最近有一个项目要部署到线上服务器,花了几天时间终于把所有的问题都完美解决了。在部署期间遇到一些与nginx相关问题及解决方法一并记录了下来。1 nginx概述1.1 nginx简介Nginx是俄罗斯人Igor Sysoev编写的轻量级Web服务器,它的发音为[ˈendʒɪnks],它不仅是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。...

2020-03-28 11:59:26 1528

原创 庚子年正月十六

今天是2020年2月9号,农历正月十六。年已经是彻彻底底过完了,现在我还在家里没有去上班。今天天气特别好,晴天,微风。刚刚午休起来,望了眼窗外,楼下有几个小孩在扔着篮球玩,想要记录点什么,便坐在了电脑前。从19年腊月底直到现在,新型冠状肺炎还在人们之间肆虐着。不出门了最基本能做到的防护措施了。这半月多来,前几日经历着“你为什么感动又为什么彻夜难眠”,近几日只是每天早上醒来第一件事就是拿起手...

2020-02-09 16:57:35 1629 3

原创 SpringCloud(八)Spring Cloud Config(3)——与Eureka配合使用

前面的文章中,我们学习了eureka的使用示例,学习了Spring Cloud Config的使用示例。在实际场景中,我们搭建一个Spring Cloud微服务可能只用到Eureka,但是绝不会搭建一个Spring Cloud微服务可能只用到Spring Cloud Config。所以今天我们来看看Spring Cloud Config 如何和Eureka配合使用。项目源码托管地址:htt...

2019-12-24 17:21:18 343

原创 SpringCloud(八)Spring Cloud Config(2)——配置详解

上一篇文章中我们实现了一个简单的sring Cloud Config配置中心的简单demo。接下来我们学习下一些在实际场景中可能遇到的一些的复杂情况下的应对方法。我们如何配置Spring Cloud Config Server的git配置信息让其从远程git仓库拉取配置信息更灵活;为了安全,如何为配置属性进行加密;如何配置安全认证,如何让配置的属性刷新呢?我们带着这一系列问题往下看。下面实例...

2019-12-20 16:19:51 561

原创 SpringCloud(八)Spring Cloud Config(1)——基础入门

前面我们已经知道如何搭建一个Spring Cloud微服务架构的系统。这个架构里面可能有几个微服务,可能有几十个微服务,也可能有上百个微服务甚至更多。假如,有一天我们改下日志打印级别这个想法,如果只有少量的微服务我们可以一个一个去改,那么如果有非常多的微服务也要一个一个去改吗,不仅工作量大而且容器出错。这该怎么办呢?不要着急我们今天来看下这个东西Spring Cloud Config,它可以帮...

2019-12-04 18:00:54 283

原创 SpringCloud(七)Zuul——网关与路由

目录1 引言2. Zuul2.1 Zuul简介2.2 实战2.2.1 简单实例2.2.2 Zull指定path + serviceId2.2.3 Zuul指定path + url2.2.4 Zuul路由的strip-prefix2.2.5 Zuul使用正则表达式2.2.6 Zuul的Filter1 引言源码托管地址:https://github....

2019-11-28 11:14:35 416

原创 SpringCloud(六)Hystrix——断路器

刚出差回来,忙完一阵子,今天得以有空,那就多多更新下博客了。源码托管地址:https://github.com/cddofficial/SpringCloudRepo目录1 雪崩效应2. 解决方案2.1 超时机制2.1.1 使用RestTemplate+Ribbon2.1.2 使用Feign2.2 断路器hystrix3 hystrix断路器3.1 简介...

2019-11-26 11:36:02 357

原创 SpringCloud(五)Feign——更好用的通信方式

在微服务架构中,我们经常需要和其他服务进行通信实现数据交互,常用的方式有两种:一是RPC((Romote Procedure Call),另一种是HTTP。SpirngCloud 中,默认是使用HTTP进行微服务间通信,其中最常用的有两种实现形式也有两种:一RestTemplate,二是Feign,前者的用法我们在上一篇文章中已经见识过了。接下来我们就来看看feign是怎么回事呢!源码托管地址...

2019-11-25 15:09:47 1449

原创 SpringCloud(四)Ribbon——负载均衡

在上一篇文章中,我们创建了一个服务注册(或服务发现)服务,一个可乐服务,一个用户服务,并且后两个服务都注册到了服务注册服务上。在真实环境中我们的微服务架构通常要承载几十万,几百万,几千万甚至更高级别的流量考验,面对这种高并发场景,服务往往都是分布式部署。那么问题来了,我们如何让服务器集群的每个节点处理的请求数量相当呢,不至于一台服务器快要撑爆了,一台服务器无人问津,如何让每台服务器负载均衡呢?...

2019-11-22 18:07:56 341

原创 SpringCloud(三)Eureka——开始实战

前面的理论点已经讲了很多了,从分布式过度到微服务,一点一点把微服务的思想渗透给大家。接着又宏观的角度概述了下微服务的星星点点。好了,东风已到,开始实战。 源码托管地址:https://github.com/cddofficial/SpringCloudRepo目录1 Eureka1.1 简介1.2 原理1.3 服务提供者和消费者2.开始实战...

2019-11-16 18:01:17 600

原创 SpringCloud(二)初识微服务——开篇

记得上大学那会,有次我去图书馆找算法书,无意间看到了书架上摆着一本《微服务架构与实践》。当即,拿起来开始阅读,可是奈何当时水平太低,很多东西都看不懂,只知道是一些微小的服务,这是我与微服务的第一次邂逅。 好了,不回忆往事了。开始进入正题。目录1 微服务概述1.1 单体架构1.2 微服务架构1.3 微服务特性与优点1.3.1 特性1.3....

2019-11-12 19:33:33 295 1

原创 SpringCloud(一)理解微服务与分布式思想

相信不少同学都听说过微服务与分布式了,我们将要学习的Spring Cloud就是一种微服务框架,我们在学习Spring Cloud之前,先来梳理下微服务和分布式的概念,先理解下的他们的思想。只要思想理解了,其他的都操作就更好理解了。目录1.分布式1.1 概念1.2场景1.3 物理架构图2. 微服务2.1 概念2.2 实例2.3 场景1.分布式1.1 概念...

2019-11-11 19:57:05 846

原创 北京的秋天

以往的文章都是谈技术,今天我们聊聊轻松点的东西。容我暂且胡侃之,大家可姑且听之,随意就好。 我有个不知道是好还是坏的特点,就是对小时候的事情记得特别清楚,不知道大家对儿时趣事还能记得多少呢!记得上中学的时候,记不清到底是初中还是高中,学过篇课文是老舍写的《济南的冬天》,当时就特别想去济南看看,直至现在只去过山东的青岛,济南还是没有涉足,以后有机会是一定要去的。 因为...

2019-10-24 08:39:44 486 4

原创 MySQL的疑难杂症汇总

mysql是每个互联网从业者不能避免的都要使用的数据库,在使用过程中难免会遇到各种各种各样的问题,下面就把我自己遇到的问题记录下来。一 远程连接 1.报错:“你的主机名is not allowed to connect to this MySQL server”。原因:安装mysql Server 不允许远程登登录。解决方案:(1).远程linux系统。...

2019-10-12 16:46:12 432

原创 mybatis(五).mybatis中的运算符

最近工作比较忙,好久没有更新了。刚好昨晚完成了一个项目的模块完成了,早上趁着这丁点的空闲,把最近遇到的mybatis的需要注意的地方记录下来。今天我们主要来看mybatis中的运算。一,逻辑运算说到逻辑运算,肯定逻辑运算符是重中之重了,这里的逻辑运算符和我们往常写的可不一样,接下来看看这个比对关系,如下图:逻辑运算符参照关系表 原符号 mybatis ...

2019-07-12 18:19:52 18226

原创 docker常见报错

在我们实际使用docker的过程中,难免出现各种各样的错误,下面我将自己遇到的比较难解决的错误和解决方法记录下来。1.docker启动报错一(1).描述docker启动报错 :Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot...

2019-05-10 19:37:43 3346

原创 浅谈docker

相信不少童鞋都听说过或者看过别人玩docker(大佬可以无视本文),那么docker到底是怎么回事呢,今天我来揭开docker的神秘面纱,看看她的本来面目!一.什么是dockerDocker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenSt...

2019-05-10 19:20:07 305

原创 springboot(五).springboot的数据访问

一个技术框架始终是要和数据库打交道的,前面的几篇文章都没有提及springboot的数据访问,接下来这篇文章重点来说下springboot的数据访问。 首先我们新建一个springboot项目,名称是demo3。一.jdbc1.依赖和配置(1).添加的依赖除了spring-boot-starter依赖和spring-boot-starter-test依赖外,还要添加下...

2019-05-10 00:33:03 618 2

原创 springboot(四).springboot的web开发

说起用springboot框架web项目,我们在刚开始第一篇文章中新建的springboot项目就是web项目,这个是前后端分离的只做服务器端,那么我们能用springboot来开发一个前后台不分的web项目(如:spring MVC中那样前端都放在WEB-INF/目录下)吗?当然可以了,在下面我们就来看看springboot开发web项目的一些其他要点。一.对静态资源的映射规则...

2019-05-06 19:49:45 914

原创 springboot(三).springboot与日志

我们都知道日志对于一个系统的重要性,在编码调试阶段我们可以通过控制台的输出来找出并解决bug,当向系统发一个请求时,我们可以通过日志来查看代码的执行流程是否与预期相符从而做出调整。下文中的Log指的是log4j、logback等日志工具。用到的IDE工具是IDEA。一.不用System.out.print1.System.out.print/printlnjava.Lang.Sys...

2019-04-26 14:00:51 850

原创 springboot(二).springboot的配置文件

上篇文章我们一起新建了一个springboot项目,那么如果我们的8080端口被占用了呢,该如何修改内嵌servlet服务器tomcat的端口呢?其实很简单只要在配置文件中做一下简单配置就行了。首先我们新建一个springboot的web项目,名称是demo1,当然也可以在我们上篇文章创建的springboot项目的基础上继续做,这个我们选择的工具是IDEA,接下来进入正题。一.appli...

2019-04-23 23:34:36 438

DmJdbcDriver17.jar

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是7.0版本,简称DM7。

2020-09-30

空空如也

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

TA关注的人

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