自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Beal的博客

随笔

  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

转载 9种 分布式ID生成方式

一、为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID...

2020-03-26 10:57:25 314

原创 Sublime Text3快捷键大全

选择类Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。 Alt+F3选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选中并更改所有相同的变量名、函数名等。 Ctrl+L选中整行,继续操作则继续选择下一行,效果和 Shift+↓ 效果一样。 Ctrl+Shift+L先选中多行,再按下快捷键,会在每行行尾插入光标,即可同时编辑这些行。 ...

2020-03-25 14:10:10 436

原创 Greenplum数据库与PostgreSQL数据库使用以及性能调优

一、PostgreSQL简介1、PostgreSQL教程2、postgresql与mysql比较3、阿里云德哥:PostgreSQL 数据库的前世今生4、PostgreSQL 好评如潮,它是如何做到的? - 开源中国二、greenplum简介GreenPlum是面向数据仓库应用的关系型数据库,基于PostgreSQL开发,跟PostgreSQL的兼容性非常好,大部分Post...

2020-03-24 18:46:16 2084

原创 spring启动流程图

2020-03-18 17:44:21 770

原创 @transactional注解失效

一,特性:1,一般在service里加@Transactional注解,不建议在接口上添加,加了此注解后此类会纳入spring事务管理中,每个业务方法执行时,都会开启一个事务,不过都是按照相同的管理机制。2,@Transactional注解只能应用到public修饰符上,其它修饰符不起作用,但不报错。3,默认情况下此注解会对unchecked异常进行回滚,对checked异常不回滚。那...

2020-03-18 16:07:17 667 1

原创 源码笔记

《后端架构师技术图谱》Github地址:https://github.com/xingshaocheng/architect-awesome1. java-design-patterns(Star:36k)Github地址:https://github.com/iluwatar/java-design-patterns介绍:设计模式是形式化的最佳实践,程序员可以在设计应用程序或系统...

2019-11-21 17:15:48 6826

原创 Quartz+spring任务调度+XXL-JOB源码接入项目

参考:https://blog.csdn.net/zht741322694/article/details/79303157XXL-JOB快速入门:https://www.jianshu.com/p/fa7186bea84b

2019-11-16 13:57:26 214

原创 深入理解幂等性

什么是幂等性HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。Methods can also have the property of “idempotence” in that (aside from error or expiration issue...

2019-10-24 18:35:26 102

原创 可重入锁 VS 非可重入锁以及AQS概述

可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。之前我们说过ReentrantLock和synchronized都是重入锁,那么我们通过重入锁Reent...

2019-10-17 18:30:13 386

原创 HashMap的扩容机制------resize()

参考:HashMap的扩容机制------resize()一:首先要知道HashMap什么时候扩容当元素向HashMap容器中添加元素的时候,会判断当前元素的个数,如果当前元素的个数大于等于阈值时,即当前数组table的长度*加载因子就要进行自动扩容。由于HashMap的底层数据结构是“链表散列”,即数组和链表的组合,而数组是无法自动扩容的,所以只能是换一个更大的数组去装填以前的元素和将...

2019-10-16 21:44:42 239

原创 CurrentHashMap详解(JDK1.8)

摘要在涉及到Java多线程开发时,如果我们使用HashMap可能会导致死锁问题,使用HashTable效率又不高。而ConcurrentHashMap既可以保持同步也可以提高并发效率,所以这个时候ConcurrentHashmap是我们最好的选择。为什么使用ConcurrentHashMap在多线程环境中使用HashMap的put方法有可能导致程序死循环,因为多线程可能会导致HashMap...

2019-10-16 21:38:58 4557 1

原创 ES分布式架构及底层原理

参考:es详解elasticsearch设计的理念就是分布式搜索引擎,底层实现还是基于Lucene的,核心思想是在多态机器上启动多个es进程实例,组成一个es集群。一下是es的几个概念:接近实时 es是一个接近实时的搜索平台,这就意味着,从索引一个文档直到文档能够被搜索到有一个轻微的延迟 集群(cluster) 一个集群有多个节点(服务器)组成,通过所有的节点一起保存你的全部数据并且...

2019-10-14 13:37:27 298

原创 线程池原理

详细内容可参见:Java并发编程:线程池的使用核心线程(corePool):线程池最终执行任务的角色肯定还是线程,同时我们也会限制线程的数量,所以我们可以这样理解核心线程,有新任务提交时,首先检查核心线程数,如果核心线程都在工作,而且数量也已经达到最大核心线程数,则不会继续新建核心线程,而会将任务放入等待队列。等待队列 (workQueue):等待队列用于存储当核心线程都在忙时,继续新增的...

2019-10-14 12:39:58 100

原创 数据库隔离级别及实现原理

版权声明:本文为CSDN博主「一粒沙cym」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/chenyiminnanjing/article/details/82714341所谓的数据库事务操作其实就是一组原子性的操作,要么全部操作成功,要么全部操作失败。 并行事务的四大问题: 1...

2019-09-23 11:10:44 460

原创 JAVA 23种设计模式

设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化...

2019-09-23 10:56:20 124

原创 java面试小结

JAVA跨平台的原理由于各操作系统支持的指令集不是完全一致的,这会让我们在不同的操作系统上执行不同的程序代码。JAVA开发了适用于不同操作系统及位数的JAVA虚拟机来屏蔽系统之间的差异,提供统一的接口。开发者只需要在不同的系统上安装对应的JAVA虚拟机,只要编写的程序符合规范就可以在所有的操作系统上运行java程序。Java中一共有八个基本数据类型Int占4个字节,32位...

2019-09-23 10:54:54 257

原创 Java 之 JUC

1. JUC 简介在 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类, 用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中 的 Collection 实现等;2. volatile 关键字volatile 关键字: 当多个线程进行操作共享数据时,可以保...

2019-09-20 21:00:12 108

原创 Kafka的Log存储解析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/jewes/article/details/42970799Kafka的Log存储解析标签(空格分隔): kafka引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又...

2019-09-20 17:29:28 144

原创 深入理解Java并发之synchronized实现原理

深入理解Java并发之synchronized实现原理深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoader)深入理解Java并发之synchronized实现原理Java并发编程-无锁CAS与Unsafe类及其并发包Atomic深入理解J...

2019-09-20 17:20:32 82

原创 Java Object类方法

基本描述:  (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入;  (2)Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。可以使用类型为Object的变量指向任意类型的对象Object的主要方法介绍: 1 2 3 4...

2019-09-20 17:10:43 84

原创 深入详解JVM内存模型与JVM参数详细配置

对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。JVM内存结构 由上图可以清楚的看到JVM的内存空间分为3大部分:堆内存 方法区 栈内存其中栈内存可以再细分为java虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代,新生代中还可以再...

2019-09-20 17:06:06 124

原创 MySQL innoDB索引底层原理详解以及与MyISAM区别

摘要本文介绍MySQL的InnoDB索引相对底层原理相关知识,涉及到B+Tree索引和Hash索引,但本文主要介绍B+Tree索引,其中包括聚簇索引和非聚簇索引,InnoDB数据页结构详解,B+Tree索引的使用以及优化,同时还有B+Tree索引的查询流程简介。此文是我对学习InnoDB索引的一个总结,内容主要参考MySQL技术内幕 InnoDB存储引擎一书,及网上一些博客(参考文献会给出)一、先...

2019-09-20 16:50:49 873

原创 关于SimpleDateFormat安全的时间格式化线程安全问题

SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。下面我们通过一个具体的场景来一步步的深入学习和理解SimpleDa...

2019-09-03 11:21:14 139

原创 Jackson进行json转对象时,遇到的字符串转日期的异常处理(Can not deserialize value of type Date from String)

出现的场景: 服务端通过springmvc写了一个对外的接口,返回一个json字符串,其中该json带有日期,格式为yyyy-MM-dd HH:mm:ss 客户端通过feign调用该http接口,指定返回值为一个Dto,Dto中日期的字段为Date类型 客户端调用该接口后抛异常了。报错异常如下:feign.codec.DecodeException: J...

2019-08-20 10:00:41 858 3

原创 Linux awk命令

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。使用方法 : awk '{pattern + action}' {filenames}尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内...

2019-08-05 15:32:38 157

原创 linux服务器查询java线程占用的资源

1、使用top命令 ,查询java进程比如选择86184这个进程2、用 top -H -p 86184 ,查询该进程下的线程资源3、使用jstack 86184 > jstack.txt ,输出 该进程下的线程信息,4、比如,观察到86344这个线程占用cpu 大, 将十进制的86344 转换成16进制 15148 (十进制转为其他进制 : echo "obas...

2019-08-01 17:18:21 1698

转载 Guava缓存值CacheBuilder介绍

范例LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .removalListener(MY_LISTENER) .build( ...

2019-05-31 17:59:02 881

原创 Java开发之@PostConstruct和@PreConstruct注解

从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct。这两个注解被用来修饰一个非静态的void()方法.而且这个方法不能有抛出异常声明。使用方式,例如:@PostConstruct //方式1 ...

2019-03-28 16:08:03 123

原创 @Scheduled cron表达式

@Scheduled cron表达式一、Cron详解:Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:1.Seconds Minutes Hours DayofMonth Month DayofWeek Year2.Seconds Minutes Hours DayofMonth Month DayofWeek...

2019-03-28 15:53:19 1840

转载 Java BigDecimal详解

1.引言  float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。先看下面代码public static void main(String[...

2019-03-22 16:37:01 92

原创 kafka + influxDB + grafana

A、influxDB# 安装influxDBbrew install influxdb# 要在登录时启动influxDB,运行:ln -sfv /usr/local/opt/influxdb/*.plist ~/Library/LaunchAgents# 配置文件在/etc/influxdb/influxdb.conf ,如果没有就将/usr/local/etc/influxdb.con...

2019-03-21 10:09:26 1296

原创 influx客户端基本操作

influx控制台基本操作数据库操作显示已存在的所有数据库格式: show databases示例如下:> show databases;name: databasesname----_internal创建新数据库格式:create database <dbname> 说明:dbname : 数据库名称示例如下:> cr...

2019-03-19 17:59:42 1166

原创 Java NIO

一、概述NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(选择区)用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道。NIO和传统IO(一下简...

2019-03-18 17:11:19 81

原创 InfluxDB基本概念和操作

InfluxdbInfluxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。它有三大特性:时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等); 度量(Metrics):对实时大量数据进行计算; 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。同时,它有以下几大特点:schemal...

2019-03-14 11:51:55 614

原创 Redis简书

【目录】1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis数据结构 – strings9.redis数据结构 – lists10.redis数据结构 – 集合11.redis数据结构 – 有序集合12.redis数据结构 – 哈希13.聊...

2019-01-28 18:47:56 472

转载 Spring中bean的作用域与生命周期

        在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义以及bean相互间的依赖关系将通过配置元数据来描述。  Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢?...

2019-01-21 17:57:00 118

原创 redis缓存和mysql数据库同步

解决方案一、对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从DB查询,保存到缓存;更新缓存时,先更新数据库,再将缓存的设置过期(建议不要去更新缓存内容,直接设置缓存过期)。二、对于并发程度较高的,可采用异步队列的方式同步,可采用kafka等消息中间件处理消息生产和消费。三、使用阿里的同步工具canal,canal实现方式是模拟mysql slave和master的同步机...

2019-01-21 17:56:04 1149

原创 spring cloud stream kafka实例

maven&lt;dependencyManagement&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.cloud&lt;/groupId&gt; &lt;artifactId...

2019-01-21 13:57:54 1716 2

原创 Amazon S3

Amazon S3:https://amazonaws-china.com/cn/s3/faqs/       Amazon S3 是一种对象存储,专为从 Internet 上的任意位置存储和检索任意数量的数据而构建。它是一种简单的存储服务,以非常低的成本提供极其持久、高度可用并可无限扩展的数据存储基础设施。       Amazon S3 提供一个简单的 Web 服务界面,使用该界面,您...

2019-01-18 11:04:47 1305

原创 MonggoDB

最近一直在做数据接入相关的工作,刚好用到了MongoDb,下面就简单介绍下MongoDB连接及查询语法。MongoDBMongoDB 是一个高性能,开源,无模式的文档型数据库,开发语言是C++。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富、最像关系数据库的。基本概念在MongoDB...

2018-11-30 10:44:32 1372

摄像头智能签到系统

利用ARM板连接摄像头,编写人脸识别算法,APP端实现注册登录,网页端实现签到人数查看

2017-04-24

空空如也

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

TA关注的人

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