自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Alen

不想当将军的程序员不是好厨子,前进的哈尔西

  • 博客(91)
  • 收藏
  • 关注

原创 服务治理实践总结

配置中心实现方式/生效方式/管理模式业界/apollo/spring cloud config/consul/nacos统一异常处理最外层统一抓取处理统一错误码形式不同平台六位策略 00/0000服务注册发现zookeeper/供应商使用zk作为注册中心 验证注册中心全部挂掉之后,服务是否能正常运行eureka/nacos/consulCI/CDgit/jekins/sonarqube/自动化运维这一套在流水线上 可集成/接入其他功能可以插件化限流/熔断限流算法/漏斗/令牌桶/.

2021-07-07 14:02:18 210

原创 微服务下Java开发实践

从写下第一篇对 分布式系统 的理解 ,转眼过去两年,技术在快速迭代发展 微服务, 云原生, 服务网格, Service Mesh等新概念层出不穷,本文旨在回顾2018.11-2020.10这两年在Java开发中的技术实践。1.关于Java语言的深入2.基于SpringBoot&Spring Cloud如何快速搭建自己后端服务3.基于K8S进行服务弹性部署,快速伸缩4.中间件的深入(KafKa Redis MySQL)5.服务监控和稳定性的思考6.Java技术之外的延申...

2020-10-13 23:51:26 393 1

原创 MySQL-查询成绩为第二名(第N名)的所有学生数据

1.需求如下查询成绩(grade)为第二名的所有学生,从下图数据可以看到,97分为分数第二,有三个学生成绩为第二,找出来。相关表数据相关语句SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for score-- ----------------------------DROP T...

2020-05-08 00:32:48 10804

原创 Java Stream编程回顾

Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。获...

2019-12-27 10:49:12 371

原创 Callable Future FutureTask

并发包下边的三个可以异步计算的工具类Callable实现线程的一种方式,带有返回值Future带有返回值的的接口FutureTask具体的实现类1.Callable和Runnable的区别Callablepublic interface Callable<V> {  V call() throws Exception;}Runnableinterface ...

2019-10-16 18:11:49 150

原创 Kafka生产者参数

参数实例ack 确认机制buffer.memory 缓存大小compression.type 压缩类型retries 尝试次数batch.size 批次大小linger.ms等待时间client.id客户端Id生产者demofinal String kafkazk="localhost:9092"; String topic="testAPI"; Prope...

2019-10-11 17:17:07 929

原创 Java实现多线程的区别

Java中为什么要单继承,多实现,总结如下:若为多继承,那么当多个父类中有重复的属性或者方法时,子类的调用结果会含糊不清,因此用了单继承。为什么是多实现呢?通过实现接口拓展了类的功能,若实现的多个接口中有重复的方法也没关系,因为实现类中必须重写接口中的方法,所以调用时还是调用的实现类中重写的方法。那么各个接口中重复的变量又是怎么回事呢?接口中,所有属性都是 static final修饰的,...

2019-10-11 11:53:07 319 1

原创 联合索引生效,失效的情况

联合索引:两个或更多个列上的索引被称作复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不...

2019-10-11 11:38:24 2174 1

原创 Kafka回顾

1 请说明什么是Apache Kafka?Apache Kafka是由Apache开发的一种发布订阅消息系统,它是一个分布式的、分区的和重复的日志服务。2 请说明什么是传统的消息传递方法?传统的消息传递方法包括两种:排队:在队列中,一组用户可以从服务器中读取消息,每条消息都发送给其中一个人。发布-订阅:在这个模型中,消息被广播给所有的用户。3 请说明Kafka相对于传统的消息传递方...

2019-10-11 01:00:16 223

原创 Linux命令--cat

文件合并命令1.将两个文件file1.txt ,file2.txt合并起来存放到file3.txt中vi file1.txthello Javavi file2.txthello pythonhello flink spark kafkacat file1.txt file2.txt > file3.txt查看file3.txt中的内容cat file3.txt...

2019-09-30 22:52:21 121

原创 Kafka-数据持久化

Kafka很大程度上依赖文件系统来存储和缓存消息。有一普遍的认识:磁盘很慢—这让人们怀疑使用磁盘作为持久化的性能。实际上,磁盘是快还是慢完全取决于我们是如何使用它。就目前来说,一个 6块 7200rpm SATA RAID-5磁盘线性(顺序)写入的性能能达到600MB/sec,而任意位置写(寻址再写)的性能只有100k/sec。这些线性读写是所有使用模式中最可预测的,并且由操作系统进行了大量优化...

2019-09-23 16:43:55 4049 2

原创 Spring AOP回顾

基本概念“横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect”,即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。使用"横切"技术,AOP 把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流...

2019-09-18 15:41:01 367

原创 Java8-Optional

Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。类声明以下是一个 java.util.Optional 类的声明:...

2019-08-27 16:26:39 102

原创 Java8-时间日期API

Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。在旧版的 Java 中,日期时间 API 存在诸多问题,其中有:非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有...

2019-08-27 15:48:55 169

原创 Java8-函数式接口

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。如定义了一个函数式接口如下:@FunctionalInterfaceinterface GreetingService { void sayM...

2019-08-27 15:31:23 103

原创 Java8-Lambda

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }以下是lambda表达式的重要特征:可选类型声明:不需要声明参数类型,编译器可以统一识别...

2019-08-26 18:14:37 118 1

原创 Java8-默认方法

Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个 default 关键字即可实现默认方法。为什么要有这个特性?首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的 java 8 之前的集合框架没有 foreach 方法,通常能想到的解决办法...

2019-08-26 14:29:55 101

原创 Java8-Stream

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理,...

2019-08-26 14:15:46 121

原创 Java新特性

Java 8 新特性Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。Java8 新增了非常多的特性,我们主要讨论以下几个:Lambda 表达式 − Lambda允许把函数作为一个方...

2019-08-23 17:04:00 107

原创 Java中synchronized 用在static方法和非static方法上面的区别

在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized到底有什么不同呢?大家都知道,static的方法属于类方法,它属于这个Class(注意:这里的Class不是指Class的某个具体对象),那么static获取到的锁......

2019-08-20 16:27:05 2583

原创 推荐系统中冷启动问题

冷启动问题是什么?推荐系统是建立在大量的用户行为数据上的,如果一个个性化推荐系统在启动之初,不具备大量的用户行为数据,怎么设计一个个性化推荐系统并且让用户对推荐的结果满意,初步产生用户粘性。这就是冷启动问题需要考虑的范畴。利用用户的注册信息主要是如何通过用户注册时填写的人口统计信息给用户提供粗粒度的个性化推荐。人口统计学信息包括:年龄、性别、工作、学历、居住地、国际、民族等。基于注册信...

2019-08-13 14:54:19 289

原创 Spark Job记录查看

修改配置文件cd /opt/spark/confcp spark-defaults.conf.template spark-defaults.confvi spark-defaults.conf#开启日志服务spark.eventLog.enabled true #日志存放位置spark.eventLog.dir hdfs://master:8020/var/log/spark ...

2019-07-12 18:16:25 797

原创 Flink-Kafka-MySQL

2018年开始处理大数据相关的业务,Flink作为流处理新秀,在实时计算领域发挥着越来越大作用,本文主要整理在以往开发中Flink使用Kafka作为数据源,计算处理之后,再将数据存到MySQL的处理过程。前置条件启动zookeeper,启动kafka业务系统发送消息到Kafka,使之作为数据源import com.alibaba.fastjson.JSON;import com.exa...

2019-06-26 16:30:39 1748

原创 分布式事务之-TCC服务设计与实现一

一致性前言严格遵守ACID的分布式事务我们称为刚性事务,而遵循BASE理论(基本可用:在故障出现时保证核心功能可用,软状态:允许中间状态出现,最终一致性:不要求分布式事务打成中时间点数据都是一致性的,但是保证达到某个时间点后,数据就处于了一致性了)的事务我们称为柔性事务,其中TCC编程模式就属于柔性事务,本文我们来阐述其理论。一、TCC简介TCC是一种比较成熟的分布式事务解决方案,可用于解决...

2019-06-18 23:05:41 5545 2

原创 分布式事务理论

基础理论先简单介绍下数据一致性的基础理论。强一致当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。根据 CAP 理论,这种实现需要牺牲可用性。弱一致性系统并不保证续进程或者线程的访问都会返回最新的更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到...

2019-06-18 23:05:24 208

原创 分布式系统特点和常见问题

分布式系统的特点分布式系统是一个由硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。其拥有如下特点-分布性分布式系统中的多台计算机都会在空间中随意分布,同时,机器的分布情况也会随时变动。-对等性分布式系统中的计算机没有主/从之分,既没有控制整个系统的主机,也没有被控制的从机,组成分布式系统的所有计算机节点都是对等的,副本指的是分布式系统对数据和服务提供...

2019-06-18 23:05:06 1263

原创 分布式事务一致性-XA两阶段提交协议

因为事务需要实现ACID,即原子性、一致性、隔离性、持久性,所以需要采用一定的机制来保证,通常采用的是分阶段提交的方式。XA:XA协议,规定事务管理器和资源管理器接口,采用二阶段提交协议。一阶段提交协议一阶段提交协议相对简单,如下图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190618151125298.png?x-oss-proc...

2019-06-18 23:04:43 691

原创 MySQL索引方法

B-TREE索引方法B-TREE索引的特点B-TREEB-TREE以B+树结构存储数据,大大加快了数据的查询速度B-TREE索引在范围查找的SQL语句中更加适合(顺序存储)B-TREE索引使用场景全值匹配的查询SQL,如 where act_id= ‘1111_act’联合索引汇中匹配到最左前缀查询,如联合索引 KEY idx_actid_name(act_id,act_name...

2019-06-10 11:09:42 259

原创 MySQL索引类型

Mysql索引类型normal,unique,full text的区别是什么?normal:表示普通索引unique:顾名思义,唯一索引,即是唯一的意思,在数据库表结构中对字段添加唯一索引后进行数据库进行存储操作时数据库会判断库中是否已经存在此数据,不存在此数据时才能进行插入操作。这虽然是个小技能,但实际上在业务开发中是个很实用的技能, 比如在高并发业务中,数据库单实例的话如何杜绝数据并发插...

2019-06-10 11:04:50 1095

原创 SpringBoot启动异常

项目启动异常"C:\Program Files\Java\jdk1.8.0_161\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBea...

2019-05-16 12:04:54 708 1

原创 外观模式

Alen自从毕业后开始做软件开发,做着做着发现不爽了,钱赚不了太多,头发也白了。于是拿着一点小资本,想着做点小生意。瞅着眼前的餐饮行业还不错,于是打算开一家正新鸡排。烤鸡排可不是一件容易的事,仅仅行政类的审批流程就不少。至少包括办理卫生许可证,办理税务登记,办理工商登记等。行政审批总接口public interface Executive { public void approve(...

2019-05-13 07:16:27 109

原创 JDK1.8源码-java.lang.object

1.hashcode()方法在hashmap中如果用自己自定义的对象作为Key,必须重写hashcode()方法,equals()方法hashCode 在 Object 类中定义如下:public native int hashCode();这也是一个用 native 声明的本地方法,作用是返回对象的散列码,是 int 类型的数值。那么这个方法存在的意义是什么呢?我们知道在Java ...

2019-04-11 17:27:02 126

原创 Java有了基本数据类型,为什么还要实现包装器类型。

基本类型包装器类型byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean为什么存在这两种类型呢?我们都知道在Java语言中,new一个对象存储在堆里,我们通过栈中的引用来使用这些对象;但是对于经常用...

2019-04-08 12:21:16 949

原创 leetcode-26 删除数组中重复的项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...

2019-04-08 12:08:41 92

原创 HashSet如何保证元素唯一

hashset基于hashmap去实现,但是hashset如何保证集合内元素是唯一的呢,以下文章接下来去记录一下这个过程。1.HashSet原理我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降低了使用equals()方法的次数当HashSet调用add()方法存储对象的时候, 先调用对象的hashCode()方...

2019-04-04 19:35:07 695

原创 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方案一:暴力法很...

2019-03-20 13:49:38 11203 2

原创 二叉树相关操作

1.求一个二叉树的高度public static int getMaxDepth(TreeNode root){ if(root == null){ return 0; } int left = getMaxDepth(root.left); int right = getMaxDepth(root.right); return Math.max(left,right)+1...

2019-03-20 13:38:54 118

原创 替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。public class Soulation{ public String replaceSpace(StringBuffer str){ for(int i = 0;i&lt;str.length;i++){ char a ...

2019-03-17 19:27:09 115

原创 二维数组的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Soulation{ public boolean find(int [] [] nums ,int target){ for(int i = 0;i&lt;nums.le...

2019-03-17 19:17:51 186

原创 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

方法一:public class Number{ public int NumberOf1(int n){ int count = 0; while(n!=0){ n=n&amp;(n-1); count++; } return count; }}方法二:public class Soluation{ public int Number(int n){...

2019-03-17 18:58:54 329

空空如也

空空如也

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

TA关注的人

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