自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 资源 (10)
  • 收藏
  • 关注

原创 GO控制与循环语句

条件语句:条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。循环语句:在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。

2023-04-07 17:41:25 119

原创 GO语言运算符

运算符用于在程序运行时执行数学或逻辑运算。咱们之间看代码,进行实操。

2023-04-07 16:40:43 127

原创 GO语言变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

2023-04-07 16:35:38 114

原创 Go 语言基础语法

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。

2023-03-30 16:20:06 73

原创 GO语言教程-认识与介绍

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

2023-03-30 13:12:19 55

原创 dapr-hello world 体验

dapr-快速入门

2022-04-24 11:49:03 712

原创 云原生-分布式运行时-dapr

从今天开始介绍下dapr(是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架);任何语言,任何框架,任何地方...

2022-04-24 10:13:41 450

原创 Rust-构建系统与包管理工具

简介:Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代码所需要的库叫做依赖(dependencies))。最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。所以如果使用 Cargo 来构建 “Hello, world!” 项目,将只会用到 Cargo 构建代码的那部分功能。在编写更复杂的 Rust 程序时,你将添加依赖项,如果使用 Ca.

2022-03-04 10:46:33 574

原创 Rust 入门第一个程序

1.创建对于的文件目录,也可用于idea创建2.创建main.rs文件,并打印相关内容fn main() { println!("Hello, world!");}3.支持对于的命令,先编译,后执行rustc main.rs 编译运行 ./main如果你更熟悉动态语言,如 Ruby、Python 或 JavaScript,则可能不习惯将编译和运行分为两个单独的步骤。Rust 是一种预编译静态类型(ahead-of-time compiled)...

2022-03-03 23:14:04 800

原创 Rust安装说明

官网地址如下:Rust中文官网说明:我本身是做java开发及架构方面的工作,但是,随着对于各种技术栈的认识的越深,除C++外,常见的语言,java/go等都是有一套垃圾回收机制。虽然go的性能已经很高了,但是,还是想找到一个新的语言,而这时,一个高性能,又安全,同时没有垃圾回收机制的语言进行我的世界,而这们语言就是rust。(悄悄告诉你Rust应该是对于想了解他的人,是非常友好的),博主预测,未来的serverless rust是有一席之地的。(未来是通过rust(目前是go的方式来实现,随着rust的

2022-03-02 23:01:58 632

原创 步入Service Mesh微服务时代

为什么要进入Service Mesh时代pring Cloud为代表的微服务体系相比Service Mesh而言已经存在技术代差,那凭什么这么说呢?接下来,我们回顾下使用Spring Cloud构建微服务体系的大致技术流程!要构建微服务体系,首先我们需要独立部署一款实现服务注册/发现功能的组件服务,目前可供选择的主流方案一般有Eureka、Consul、Nacos等,搞定服务注册/发现后,我们编写一个Java微服务,此时为了将该服务注册到服务注册中心,一般会引入Spring Cloud提供的支持对应

2021-12-31 13:21:32 326

转载 Redis与MySQL双写一致性如何保证?

前言四月份的时候,有位好朋友去美团面试。他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题。 公众号:捡田螺的小男孩 谈谈一致性一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大 弱一致性:这种一致性级别约

2021-05-27 17:10:26 117

原创 性能优化-缓存使用(Spring Cache)

简介:程序运行中,在内存保持一定时间不变的数据就是缓存。简单到写一个Map,里面放着一些key,value数据,就已经是个缓存了所以缓存并不是什么高大上的技术,只是个概念,把要多次使用的东西存在一个变量里,时不时取出来使用,就达到了缓存的目的,缓存就是存放数据的容器那为什么要用缓存呢,是因为要多次使用。一个程序总有一些数据时可预见被多次使用(预见的准不准就是常说的命中率)比如一个复杂的计算结果,一次数据库访问取得的数据等耗时耗资源的数据就能放入缓存,目的就是为了节省开销,我们要用有限的资源(

2021-05-07 14:46:37 734

原创 高并发下如何保证接口的幂等性?

前言 1. insert前先select 2. 加悲观锁 3. 加乐观锁 4. 加唯一索引 5. 建防重表 6. 根据状态机 7. 加分布式锁 8. 获取token 前言接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。不知道你有没有遇到过这些场景: 有时我们在填写某些form表单时,保存按钮不小..

2021-05-06 14:05:38 175

转载 Redis、Kafka 和 Pulsar 消息队列对比

市面上有非常多的消息中间件,rabbitMQ、kafka、rocketMQ、pulsar、 redis等等,多得令人眼花缭乱。它们到底有什么异同,你应该选哪个?本文尝试通过技术演进的方式,以redis、kafka和 pulsar为例,逐步深入,讲讲它们架构和原理,帮助你更好地理解和学习消息队列。一、最基础的队列最基础的消息队列其实就是一个双端队列,我们可以用双向链表来实现,如下图所示: push_front:添加元素到队首; pop_tail:从队尾取出元素。 有了这样的数据

2021-04-29 16:29:44 280 1

转载 RPC 调用和 HTTP 调用的区别,RPC 的好处

OSI 网络七层模型在说 RPC 和 HTTP 的区别之前,我觉的有必要了解一下 OSI 的七层网络结构模型(虽然实际应用中基本上都是五层)。它可以分为以下几层:(从上到下) 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口。 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等。 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断。 第四层:传输层。管理着网络中的端到端的数据传输。 第五层:网络层。定义网络设.

2021-04-29 11:17:56 547

原创 高并发下:库存处理

每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其是春节期间,大家不仅使用12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。“12306服务”承受着这个世界上任何秒杀系统都无法超越的QPS,上百万的并发再正常不过了!笔者专门研究了一下“12306”的服务端架构,学习到了其系统设计上很多亮点,在这里和大家分享一下并模拟一个例子:如何在100万人同时抢1万张火车票时,...

2021-04-19 16:39:19 1162

原创 Java线程池实现原理与源码解析(JDK11)

线程池优势线程池能够对线程进行统一分配,调优和监控:- 降低资源消耗(线程无限制地创建,然后使用完毕后销毁)- 提高响应速度(无须创建线程)- 提高线程的可管理性线程池源码关系图ScheduledThreadPool初始化的线程池可以在指定的时间内周期性的执行所提交的任务,在实际的业务场景中可以使用该线程池定期的同步数据。工作原理当一个任务提交至线程池之后,...

2020-10-11 15:43:14 279

原创 JDK11-WeakHashMap集合

介绍WeakHashMap 继承于AbstractMap,实现了Map接口。 和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。 不过WeakHashMap的键是“弱键”。在 WeakHashMap 中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除。更精确地说,对于一个...

2020-04-10 21:19:31 164

原创 JDK11-LinkedHashMap集合

介绍inkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap 对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。数据结构HashMap数据结构LinkedHashMap 继承自 HashMap,所以它的底层仍然是基于拉...

2020-04-04 15:45:43 184

原创 JDK11-HashTable集合

介绍和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射,底层实现由“数组+链表”实现,相对于hashMap来说简单很多。 Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。 Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、val...

2020-04-04 10:20:20 140

原创 JDK11-HashMap集合

1.HashMap介绍HashMap为Map接口的一个实现类,实现了所有Map的操作。HashMap除了允许key和value保存null值和非线程安全外,其他实现几乎和HashTable一致。HashMap使用散列存储的方式保存kay-value键值对,因此其不支持数据保存的顺序。如果想要使用有序容器可以使用LinkedHashMap。在性能上当HashMap中保存的key的哈希算法...

2020-04-03 18:44:55 422

原创 JDK11-Map集合源码

Map集合结合一览图Map集合:大部分比较重要的数据结构需要实现的接口public interface Map<K, V> { // Query Operations /** * Returns the number of key-value mappings in this map. If the * map contains...

2020-04-03 12:12:55 380

原创 JDK11-vector集合源码

1.介绍 Vector同样继承自AbstractList,与ArrayList、LinedList一样,是List的一种实现,是线程安全的2.类定义public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, ...

2020-04-03 10:45:38 141

原创 JDK11-LinkedList集合源码(3)

1.介绍 LinkedList 是线程不安全的,允许元素为null的双向链表。就是这么简单2.LinkedList继承结构一览图3.类定义public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque&l...

2020-04-02 20:02:44 161

原创 JDK11-ArrayList集合源码(2)

List集合一览图JDK11-ArrayList1.List接口public interface List<E> extends Collection<E> { // Query Operations /** * Returns the number of elements in this list. If this list contains ...

2020-04-01 21:50:57 193

原创 Java集合-基于JDK11(1)

Java集合体系一览图(UML)JDK11-Iterable1.Iterable 接口Iterable,即迭代器的意思。其作用是为集合类提供for-each循环遍历的支持,只要让一个类实现这个接口,该类的对象就可以成为for-each循环遍历的目标。换句话说,想让一个Java对象支持for-each遍历,只要让它的类实现Iterable接口即可。而这具体又是如何做到的呢?我们来看下它的源码。public...

2020-04-01 11:41:01 257

原创 Spring cloud Erueka

1.服务发现的由来 服务发现及注册中心或是命名服务(后文统一称为服务发现),不是凭空出现的,其演进与软件开发的架构方式的演进有密切关联,大致如下: 1.1 单体架构时代 早期的互联网开发,多使用单体架构,服务自成一体,对于依赖的少数外部服务,会采用配置域名的方式访问,比如要使用外部短信供应商的短信发送接口,会使用appId和appKey,调用该供应商的域名...

2020-02-15 12:11:41 225

原创 微服务架构概述

1.1微服务架构概述1.1.1应用架构的发展 应用是可独立运行的程序代码,提供相对完善的业务功能。目前软件架构有三种架构类型,分别是业务架构、应用架构、技术架构。他们之间的关系是业务架构决定应用架构,技术架构支撑应用架构。架构的发展历程是从单体架构、分布式架构、SOA架构再到微服务架构,如图1-1所示。正在上传…重新上传取消单体应用架构单体架构在Java领域可以理解为一...

2020-02-13 10:23:03 516

原创 为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作

在阿里巴巴Java开发手册中,有这样一条规定:但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考。1foreach循环foreach循环(Foreachloop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素。Java语言从JDK1.5.0开始引入foreach循环。在遍历数组、集合方面,foreach为开发人员提供了极大...

2019-04-15 17:38:47 183

原创 多线程下的数据安全

前言 多线程下的线程安全,主要是由于无法控制线程的执行顺序,无法确定那个线程是先执行,是由CPU确定的,出现线程不安全的情况-》每次运行的结构都不相同(程序无法按照我们想要的结果)下面是一个简单的多线程例子,来说明下多线程下的数据安全 package com.el.jichu.thread.writerlock;import java.util.concurrent.a...

2019-04-10 15:20:34 955

原创 微服务架构-Hystrix

分布式存在的问题 服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕...

2019-03-20 10:39:11 502

原创 微服务架构-feign

Feign简介 Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feig...

2019-03-19 17:08:12 391

原创 微服务架构-Ribbon

Ribbon介绍 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balanc...

2019-03-19 16:28:17 4493 2

原创 微服务架构-Eureka(服务注册与发现)

Eureka是什么 Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。原理说明...

2019-03-19 15:46:24 2956

原创 微服务架构

1.微服务与微服务架构微服务 强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面的一个个微服务工程/或者Module。微服务架构 微服务架构是⼀种架构模式,它提倡将单⼀应⽤程序划分成⼀组⼩的服务,服务之间互相协调、互相配合,为⽤户提供最终价值。每个服务运⾏在其独⽴的进程中,服务与服务间采⽤轻量级的...

2019-03-19 14:29:31 202

原创 使用Spring ,Springboot搭建分布式(dubbo,zookeeper)

github地址

2019-02-28 09:33:34 168

原创 tomcat7 1000并发量配置以及配置优化

首先,修改tomcat/conf/server.xml配置文件。&lt;Executor name="tomcatThreadPool" namePrefix="catalina-exec-"     maxThreads="500" minSpareThreads="400" /&gt;           &lt;Connector executor="tomcatThreadP

2019-01-04 11:53:48 401

原创 详解tomcat的连接数与线程池

一:前言在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。Tomcat配置文件server.xml中:Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine(也就是Servlet容器)来处理这个请求,并把产生的Request和...

2019-01-04 11:52:21 285

原创 分布式系统-dubbo

 一、基础知识1、分布式基础理论1.1)、什么是分布式系统?《分布式系统原理与范型》定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”分布式系统(distributed system)是建立在网络之上的软件系统。      随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,...

2018-12-20 14:27:18 353

Apache Flink 入门及进阶 (1).pdf

介绍flink的基本概念,提供对应的demo

2021-12-30

Java反射机制.docx

java 的反射技术,详细介绍了java反射机制及如何对java反射的使用

2019-08-02

Docker入门及核心技术

本文主要介绍了docker的入门及核心技术,可以帮助大家了解docker,使用docker.

2018-10-16

Oracle的SQL语句的优化

该文档为思维脑图,讲述了,如何在Oracle数据库中写出高质量的SQL语句

2018-08-16

Shiro入门源码

该源码包括shiro的基本技术内容,以及快速入门的内容,同时还包括与Spring框架的整合。

2018-08-06

Git&GitHub;介绍

Git的介绍,安装,常用命令,以及GitHub的搭建等技术。

2018-07-18

Vue项目-前端框架

使用vue-cli搭建一个前端框架,要使用到node.js的相关知识,具体的操作步骤,可以参考我的博客

2018-07-18

Spring boot访问jsp页面

使用spring boot访问jsp页面,以及使用maven的插件,mybatis逆向生成mapper,model,*.xml。

2018-07-13

idea创建的SpringCloud微服务项目

使用idea创建的微服务架构,用于解决负载均衡,高并发等

2018-07-06

Spring注解源码

Spring注解驱动开发的源码,包括Spring常用的注解,工具使用idea创建的maven项目

2018-06-24

空空如也

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

TA关注的人

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