自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (3)
  • 收藏
  • 关注

原创 DoubleAccumulator 源码详解

DoubleAccumulator 源码图文详解

2023-03-07 17:48:26 566

原创 ThreadLocal源码详解

threadlocal源码图文详解

2023-03-07 17:46:51 646

原创 forEachOrdered 和 forEach

forEachOrdered 执行结果有序forEach 执行结果无序下面代码拿走执行一下就行了 public static void main(String[] args) { List<Test> list = new ArrayList<>(); for (int i = 0; i < 30; i++) { Test test = new Test(i); list.add(test

2022-02-24 16:07:29 1150 1

原创 聊一聊为什么JAVA只允许单继承

聊一聊为什么JAVA只允许单继承在开始啊我首先给大家解释一个误区。JAVA并不是不允许多继承,而是不允许”实现多继承“,也就是class是不允许多继承的,interface允许多继承。为什么要这么设计呢?从语言方面说,JAVA是一个面向对象编程语言,JAVA更是抽象解释为万事万物皆对象,人是对象,桌子是对象,大海也是对象。public class Person extends Table,Sea{}看上面的代码,如果说我们允许多继承,从代码方面来看当然没啥问题。 但是你会发现人既是人又是桌子

2021-03-11 17:32:48 3964 2

原创 脏读、幻读、不可重复读

脏读P1 (“Dirty read”): SQL-transaction T1 modifies a row. SQL-transaction T2 then reads that row before T1 performs a COMMIT.If T1 then performs a ROLLBACK, T2 will have read a row that wasnever committed and that may thus be considered to have neverex

2021-02-23 10:37:58 4310

原创 一篇爽文带你全面了解mysql的索引

因为现在使用的mysql默认存储引擎是Innodb,所以本篇文章重点讲述Innodb下的索引,会介绍B+tree以及为什么使用B+tree作为索引结构。另外会在内容中为大家进行解惑。

2021-01-19 20:59:39 10427 6

原创 从0开始构建一个k8s集群

环境准备安装k8s集群需要的配置较高,官方建议是最低 2核2G。本篇安装k8s是在本地搭建的3台centos虚拟机,使用Vagrant构建centos。有关Vagrant的安装使用可以参考Vagrant快速构建虚拟机。构建3台centos7创建目录 ~/Documents/temp/k8s$ mkdir ~/Documents/temp/k8s在 ~/Documents/temp/k8s下创建Vagrantfile文件,下面是文件内容。# Vagrantfileboxes = [

2020-11-25 10:17:31 13518 3

原创 在CentOS上安装Docker(快速安装指南 超实用)

环境准备操作系统:centos7如果没有虚拟机可以参考这篇快速构建一个Vagrant快速构建centos开始安装卸载旧版本(如果存在的话)$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \

2020-11-24 20:03:16 13059

原创 Vagrant快速部署linux虚拟机

环境准备系统:macos(作者电脑是mac,win也没问题 下载对应的版本)vagrant: 2.2.14 下载VirtualBox:6.1下载具体安装过程就不叙述了,直接下载完安装上就可以。另外需要注意的是vagrant和virtualbox的版本兼容。开始操作查找所需要的box我们首先需要在vagrant box中查询centos7的box镜像。这里使用centos7如果想使用ubuntu或者其他的 可以直接在网站内搜索对应的镜像即可。初始化环境首先我们创建个目录 ~/Docume

2020-11-24 18:25:36 13076

原创 配置coredns解析公网域名

#查看当前的配置kubectl get configmap coredns -n kube-system -o yaml#以下是配置项apiVersion: v1data: Corefile: | .:53 { errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream

2020-10-26 18:26:35 17764

原创 mybatis写xml时数字类型千万别用 !=‘‘(不为空串)进行判断

前言最近项目内更新数据时,发现数字类型字段设置为0时不能正常的更新进数据库,我们打印了下mybatis的sql日志发现字段为0的sql没有被拼接。样例下面的是错误示例 ❌ <update id="update" parameterType="com.chengfengfeng.test.domain.People"> update people set <if test="age!=null and age !=''">

2020-09-21 13:10:01 21220

原创 惊呆了,高并发下System.currentTimeMillis()竟然有这么大的问题?!!!

前言最近在做滑动窗口的优化实现中,了解到在并发情况下System.currentTimeMillis()竟然有严重的性能问题,所以自己做测试测试下。在印象中我们感觉这是基于底层的api应该不会有什么大问题,也确实,在不是高并发下也不会出现什么问题。 /** * Returns the current time in milliseconds. Note that * while the unit of time of the return value is a millisecon

2020-09-19 16:33:11 23901 7

原创 手把手教会你使用建造者模式

什么是建造者模式建造者模式可以简单理解为搭积木建房子,是我们一步一步、一层一层来搭建对象的过程,属于创建型模式,一般对象会提供一个Builder来进行构造。在构建的过程中我们不需要知道构建的过程,我们只需要告诉构建者我想要什么就可以了。详细介绍举个例子,假如我们去肯德基点餐有大概以下几步:点一个汉堡点一杯可乐服务员下单其中 我们前三个的顺序其实是可以随意切换的,可以先要可乐再要汉堡,下单是最后的build操作,来生成我们最终的订单。当然我们如果学了装饰器模式后可以选择要冰可乐和双牛堡,这

2020-09-12 15:43:30 20407

原创 手把手教会你使用责任链模式

什么是责任链模式顾名思义,责任链就是将多个处理单元串成链路,是一种行为模式。例如我们的登录校验(用户判断 -> 账号密码判断 -> 验证码校验-> …)一系列的从处理逻辑进行了解耦,各自处理各自的业务,处理完成后交给后边的链路继续处理。优缺点优点解耦,各自的业务分开各自处理灵活,处理单元无需关心链路情况,并且非常方便的增删链路单元和改变处理顺序缺点链路过长会导致处理速度变慢如果出现循环引用,则会导致系统崩溃请求并不一定能够被责任链处理到(可能存在每个处理单元都无

2020-09-11 20:53:48 20579

原创 storm入门学习思维导图

2020-09-04 11:53:13 20962

原创 rabbitmq 启动报错 unknown exchange type ‘x-delayed-message‘

产生问题的原因rabbitmq中默认只有四中交换机类型:headers、direct、fanout、topic。所以我们需要自己安装一个x-delayed-message类型的交换机x-delayed-message的安装1、 下载插件 点击,下载 rabbitmq_delayed_message_exchange-3.8.0.ez。2、将下载的包放到 /RABBIT_HOME/plugins下。3、执行命令rabbitmq-plugins enable rabbitmq_delayed_me

2020-08-17 11:48:10 29485

原创 mac极速安装rabbitmq

rabbitmq安装就一行命令,当然前提是你得安装homebrew(mac必备工具)。brew install rabbitmq安装过程中你会看到安装erlang依赖,安装完成后会提示如下:==> rabbitmqManagement Plugin enabled by default at http://localhost:15672Bash completion has been installed to: /usr/local/etc/bash_completion.dT

2020-08-13 20:46:07 22690

原创 sharding-jdbc什么情况select会走主库

第一次使用sharding-jdbc然后就碰到了select for update不走主库,然后查了下官方文档并且自己验证了一下,以下几种情况会走主库。select前增加HintManager.getInstance().setMasterRouteOnly();类似于pagehelper只对下一条查询语句生效。存在事务的情况下,事务内的更新语句之后的select会走master,记住只有之后的,之前的select还是会走从库。目前测试就这两种情况,如果没有事务的话,select默认肯定是走从库了

2020-08-10 20:30:13 25115 5

原创 springcloud整合nacos(3)

nacos作为配置中心上节我们介绍了nacos作为注册中心,这节我们就说说nacos作为配置中心该怎么处理。配置1、pom中增加nacos依赖,我使用的是springboot2.2.1.RELEASE版本,对应的nacos版本为2.2.1.RELEASE,对应版本说明。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g

2020-08-10 13:37:06 23271

原创 springcloud整合nacos(2)

nacos做为注册中心nacos既可以做配置中心也可以做注册中心,这章节主要介绍作为注册中心使用。有关nacos的安装请看nacos安装配置1、pom中增加nacos依赖,我使用的是springboot2.2.1.RELEASE版本,对应的nacos版本为2.2.1.RELEASE,对应版本说明。 <dependency> <groupId>org.springframework.boot</groupId> &

2020-08-10 12:51:44 23564

原创 值得一看,ribbon装配调用过程

Ribbon的工作ribbon是用来进行客户端负载均衡的工具,client从eurekaServer将所有的服务信息拉取到本地,然后ribbon根据role来选择调用的client。发现很多新入手的同学容易把ribbon和RestTemplete搞混,大家需要理解ribbon只是一个选择器,他只是帮助RestTemplete选择调用的节点而已,真正调用服务的还是RestTemplate。ribbon调用图解上面的图解是直接使用restTempate进行请求,需要主要注意的是我们的RestTempla

2020-08-08 15:11:16 23252

原创 Visual Paradigm下载并设置中文

Visual Paradigm环境本人使用的MAC所以下载的mac版本的,社区版是免费的功能还是非常全,没必要使用专业版。下载中文设置路径 Window -> Application Options -> General -> Appearance

2020-08-07 14:39:00 35705 2

原创 ThreadLocal为什么会导致内存溢出

ThreadLocal为什么会导致内存溢出

2020-08-04 16:10:18 24379

原创 为什么SimpleDateFormat是线程不安全的

SimpleDateFormat主要是用来对日期进行格式化,那为什么说SimpleDateFormat是线程不安全的呢?详细的看一下源码。 // 全局时间对象 protected Calendar calendar; // Called from Format after creating a FieldDelegate private StringBuffer format(Date date, StringBuffer toAppendTo,

2020-08-04 10:26:43 23205

原创 mysql 根据date类型分组

我们业务报表需要按天进行统计,但是创建时间不一样怎么办呢,这样我们就使用到了DATE()函数;select count(*),DATE(create_time)from testgroup by DATE(create_time)

2020-07-30 18:01:58 23223

原创 如何单独配置ribbon调用服务的地址而不使用eureka

正常情况下ribbon是直接调用eureka来拉取服务的地址,当我们需要单独配置的时候只需要在配置文件增加以下配置。官方文档例如我们配置user服务user: ribbon: listOfServers: user1.test.com,user2.test.com...

2020-07-28 15:34:28 23924

原创 @Qualifier的作用和应用

@Qualifier的作用这是官方的介绍This annotation may be used on a field or parameter as a qualifier forcandidate beans when autowiring. It may also be used to annotate othercustom annotations that can then in turn be used as qualifiers.简单的理解就是:(1)在使用@Autowire自动注

2020-07-27 20:07:34 39397 7

原创 十分钟了解k8s service到pod转发机制

什么是serviceservice只是一个抽象概念,在逻辑上将一组pod(功能相同)给抽象出来一个统一入口。可以将他简单理解为做了一个服务的负载均衡。我们知道pod在重新部署之后ip会改变,所以一般会通过service来访问pod。core-dns会给service分配一个内部的虚拟ip(节点上根本查询不到这个ip,ping是不通的,具体是怎么访问到的继续往下看),因此内部服务可以通过这个ip或者是serviceName来访问到pod的服务。service提供的常用type:ClusterIP,也是

2020-07-23 20:40:36 34892

原创 二叉树遍历——先序遍历、中序遍历、后序遍历(递归+非递归)

二叉树遍历算法其中我把递归遍历算法注释掉了,因为比较容易理解。public class TreeTest { public static void main(String[] args) { Tree tree = initTree();// DLR(tree);// System.out.println("=====");// LDR(tree);// System.out.println("=====");

2020-06-22 16:49:18 23183

原创 Java弱引用WeakReference理解,这一篇就够了!

什么是弱引用如果一个对象具有弱引用(WeakReference),那么当GC线程扫描的过程中一旦发现某个对象只具有弱引用而不存在强引用时不管当前内存空间足够与否GC都会回收它的内存。由于垃圾回收器是一个优先级较低的线程,所以不一定会很快发现那些只具有弱引用的对象。为了防止内存溢出,在处理一些占用内存大而且生命周期较长的对象时候,可以尽量使用软引用和弱引用。抽象化具体我们通过学校、老师、代课老师的关系来介绍// 学校类 继承了WeakReference,引用对象是Teacherpublic clas

2020-06-11 18:05:26 25528 4

原创 Java中哪些对象可以作为GC Roots

#java哪些对象可以作为GC Roots在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的参数、局部变量、临时变量等。在方法区中类静态属性引用的对象,譬如Java类的应用类型静态变量在方法区中常量应用的对象,譬如字符串池中的引用在本地方法栈中JNI引用的对象Java虚拟机内部的引用,如基本数据类型对应的Class对象,一些常驻异常对象(如NPE),还有系统类加载器。所有被同步锁(synchronized)持有的对象反映Java虚拟机内部情况的JMXBean

2020-06-11 10:41:04 23154

原创 算法:最大子序列求和问题 (时间复杂度O(N))

问题描述存在队列A1、A2、A3…An,求最大子序列的和public static int max(int[] a) { int maxSum = 0, thisSum = 0; int maxNum = a[0];//主要用来考虑数组为全负数的情况 for (int I = 0; I < a.length; I++) { System.out.println(thisSum); thisSum +=

2020-06-09 20:50:47 23297

原创 手把手教你学会单例模式(2)

什么是单例模式单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,线程中的单例模式常用来做数据源的动态切换)。本章节主要是讲,线程单例模式、枚举单例模式、容器单例模式以及序列化和反射破坏单例模式的处理。

2019-12-07 23:41:26 22947

原创 手把手教你学会单例模式(1)

什么是单例模式单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,线程中的单例模式常用来做数据源的动态切换)本章节主要介绍饿汉式、懒加载模式、内部类单例模式等

2019-12-07 21:56:54 22889

原创 关于charles抓包https乱码的设置

关于charles抓包https乱码的设置charles安装本地证书首先我们点击help -> SSL Proxying -> Install Charles Root Certificate 安装证书。默认安装证书是不受信任的,双击打开证书,打开信任选择项,将使用此证书时这是为始终信任。安装手机证书点击help -> SSL Proxying -> Inst...

2019-11-21 13:47:58 25227

原创 记录Zuul socket超时 报错Hystrix Readed time out

在使用zuul作为springcloud网关时,会出现调用服务超时的情况。使用的是springcloud Finchley.SR2版本。springboot版本是2.0.5{ "timestamp": "2019-09-19T07:09:10.841+0000", "status": 504, "error": "Gateway Timeout", "messa...

2019-09-19 15:15:03 27437 1

原创 记服务器CPU飙升 使用jstack进行线程分析

cpu经常性会跑到90%多甚至是跑满,已排查完问题,进行下场景模拟。public class JstackDemo { private static int number = 0; private static Executor executor = Executors.newFixedThreadPool(10); public static void main(St...

2019-08-22 09:54:58 23035

原创 3分钟完成storm搭建

storm伪集群

2019-07-23 09:28:36 22988

原创 springcloud整合nacos(1)

springcloud使用nacos作为服务注册中心(1)nacos 介绍nacos安装1. 环境准备2. 下载安装包3. 启动服务器4. 服务注册&发现和配置管理5. 关闭服务器nacos 介绍有关nacos的详细介绍可查阅官方文档nacos安装1. 环境准备Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是...

2019-06-10 11:16:57 27315

原创 有关Feign传输对象无法接收参数的问题

今天碰到问题,当我们使用对象作为参数传输时,无法获得其参数值。 @RequestMapping(value = &quot;/oauth/client/save&quot;) Integer saveClient(@RequestBody ClientInfo clientInfo);发现接口内定义的@RequestBody注解是无法继承到实现中的,所以在impl中同样需要添加上@RequestB...

2019-02-27 17:14:16 27933

CheatSheet.app.zip

mac好用的查看每个软件快捷键的工具,长按command键,会弹出看板。windows的就不要下载了,只有macos能用。

2020-08-10

微服务设计

有关于微服务设计思想的书籍,很值得推荐,其中有很多大牛的设计思想。

2018-12-12

空空如也

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

TA关注的人

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