自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(854)
  • 资源 (7)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Java开发四年,分享我收藏的网站和资源(不看亏一亿)

并发脑图Java内存模型知识体系:https://naotu.baidu.com/file/60a0bdcaca7c6b92fcc5f796fe6f6bc9线程8大核心:https://naotu.baidu.com/file/07f437ff6bc3fa7939e171b00f133e17JUC并发工具知识体系:https://naotu.baidu.com/file/89fb...

2020-03-09 17:44:23 3637 6

原创 Java计算机IT编程文档常见单词翻译

单词翻译park挂起unparkpark挂起park挂起park挂起park挂起

2020-02-13 21:11:01 2569 1

原创 BAT华为等一线大厂Java工程师必读书单

0 要做一名高级点儿的代码民工,我们首先要有如下各项技能 !Google more and Baidu less! Stackoverflow First!Stack Overflow - Where Developers Learn, Share, & Build Careers​stackoverflow.com汇聚最多编程问题且有世界各路大佬解答尝试着阅读官方原版...

2020-01-21 02:50:17 7525 4

原创 Java校招入职华为,半年后我跑路了

何来我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。毕业后,直接入职开始了嵌入式苦旅,由于从未...

2020-01-21 01:02:04 345399 622

原创 Swagger报错:missed comma between flow collection entries

控制台warn提示 Illegal DefaultValue null for parameter type integer java出现这个问题主要是使用了 ApiModelProperty 注解修饰了非 String 类型的变量,而此时,example 未赋值造成。@ApiModelProperty(value = "用户 id", dataType = "int", example = "1")private int id;上面这种写法就不会报警告了。除了上面这种方式,还可以使用如下配置避

2020-12-04 12:51:21 1

原创 Kafka Partition Leader选举机制原理详解

1 大数据常用的选主机制Leader选举算法非常多,大数据领域常用的有以下两种:1.1 Zab(zookeeper使用)Zab协议有四个阶段Leader electionDiscovery (E#epoch establish)Synchronization (5X#sync with followers)Broadcast比如3个节点选举leader:编号为1、2、3。 1先启动,选择自己为leader,然后2启动首先也选择自己为leader,由于1,2都没过半,选择编号大的为lea

2020-12-03 23:49:18 11

原创 《Kafka成神之路》- 三图搞懂分区、组消费模式

点击上方“JavaEdge”,关注公众号设为“星标”,好文章不错过!1 分区消费模式直接由客户端(任一语言编写)使用Kafka提供的协议向服务器发送RPC请求获取数据,服务器接受到客...

2020-12-03 23:32:08

原创 Kafka Server Reactor设计模型

Acceptor监听客户端的连接请求,并建立和客户端的数据传输通道,然后为这个客户端指定一个Processor,它的工作就到此结束,这样它就可以去响应下一个客户端的连接请求了。Processor主要职责是负责从客户端读取数据和将响应返回给客户端,它本身不处理具体的业务逻辑,每个Processor都有一个Selector,用来监听多个客户端,因此可以非阻塞地处理多个客户端的读写请求,Processor将数据放入RequestChannel的RequestQueue中和从ResponseQueue读取..

2020-12-03 22:34:40 9

原创 Kafka生产者消息发布模式源码解析

1 同步发送模式源码2 异步发送模式源码流程3 总结3.1 同步发送模式特点同步的向服务器发送RPC请求进行生产发送错误可以重试可以向客户端发送ack3.2 异步发送模式特点最终也是通过向服务器发送RPC请求完成的(和同步发送模式一样)异步发送模式先将一定量消息放入队列中,待达到一-定数量后再一起发送;异步发送模式不支持发送ack,但是Client可以调用回调函数获取发送结果所以,性能比较高的场景使用异步发送,准确性要求高的场景使用同步发送。...

2020-12-03 19:57:52 6

原创 一文给你讲明白SQL注入原理

sql注入是一种网络攻击,持久层框架都会自己处理该问题,所以日常开发感觉不到,但是为了面试我们还是得熟悉。原理将sql代码伪装到输入参数,传递到服务器解析并执行的一种攻击手法。即在一些对server端发起的请求参数中植入一些sql代码,server端在执行sql操作时,会拼接对应参数,同时也将一些sql注入攻击的“sql”拼接起来,导致会执行一些预期之外的操作。案例在登录界面包括用户名和密码输入框,以及提交按钮,输入用户名和密码,提交。登录时调用接口/user/login/ 加上参数userna

2020-12-03 17:38:51 11

原创 Kafka分区、组消费模式源码解析

1 分区消费模式直接由客户端(任一语言编写)使用Kafka提供的协议向服务器发送RPC请求获取数据,服务器接受到客户端的RPC请求后,将数据构造成RPC响应,返回给客户端,客户端解析相应的RPC响应获取数据。Kafka支持的协议众多,使用比较重要的有:获取消息的FetchRequest和FetchResponse获取offset的OffsetRequest和OffsetResponse提交offset的OffsetCommitRequest和OffsetCommitResponse获取Met

2020-12-03 17:07:49 3

原创 阿里Java高并发锁面试题集

面试题加锁和释放没有配对锁自动释放导致的重复逻辑执行的问题有什么方法来发现和解决这两种问题?讲解锁释放和重复执行问题:锁建议使用synchronized,在JDK1.6后,synchronized与Lock性能上差距很小了(优化了很多,自旋锁,自适应自旋锁、偏向锁,轻量级锁等),synchronized也不用程序获取和释放锁,同步代码块是通过monitorenter monitorexit实现的,同步方法是方法头中有ACC_SYNCHRONIZED标志;在分布式场景下,可以考虑etcd,etc

2020-12-02 13:01:36 35

原创 《Kafka成神之路》- 索引类型

点击上方“JavaEdge”,关注公众号设为“星标”,好文章不错过!在Kafka的数据路径下:.index文件,即Kafka中的位移索引文件.timeindex文件,即时间戳索引文件...

2020-12-01 22:30:28 21

原创 Kafka的位移索引和时间戳索引

在Kafka的数据路径下有很多.index和.timeindex后缀文件:.index文件,即Kafka中的位移索引文件.timeindex文件,即时间戳索引文件。1 OffsetIndex - 位移索引索引中的索引项是如何定义的?如何向索引写入新的索引项?1.1 定义每当Consumer需要从topic分区的某位置开始读消息时,Kafka就会用OffsetIndex直接定位物理文件位置,避免从头读取消息的I/O性能开销。不同索引类型保存不同的 K.V 对。OffsetIndex的K

2020-12-01 20:50:02 30

原创 Kafka竟然也用二分搜索算法查找索引!

索引应用二分查找算法快速定位索引项。难得的是,Kafka的索引组件中应用了二分查找算法,而且社区还针对Kafka自身的特点对其进行了改良。索引类图及源文件组织架构都位于core包的/src/main/scala/kafka/logAbstractIndex.scala定义了最顶层的抽象类,这个类封装了所有索引类型的公共操作。LazyIndex.scala定义了AbstractIndex上的一个包装类,实现索引项延迟加载。这个类主要是为了提高性能,并无功能上的改进OffsetIndex.s

2020-12-01 19:14:33 18

原创 Elasticsearch实战(六)-mapping映射

1 mapping 作用类似数据库中的表结构定义,主要作用如下:定义Index下的字段名( Field Name )定义字段的类型,比如数值型、字符串型、布尔型等定义倒排索弓|相关的配置,比如是否索引、记录position等2 查看 mapping{ "index" : { "mappings" : { "properties" : { "JSON 数据" : { "type" : "text", "fields

2020-11-30 21:48:27 24

原创 Java8计算日期时间差

1 Period类方法getYears(),getMonths()和getDays()。import java.time.LocalDate;import java.time.Month;import java.time.Period;public class Test { public static void main(String[] args) { LocalDate today = LocalDate.now(); System.out.prin

2020-11-30 10:11:16 29

原创 Mac使用Homebrew极速安装启动RabbitMQ一把梭

1 安装brew install rabbitmq默认安装路径安装成功后,文件在该路径下:/usr/local/Cellar/rabbitmq/版本号/2 启动服务器2.1 命令行启动进入安装路径后输入sbin/rabbitmq-server 启动服务器,启动成功之后会显示completed with N plugins,我这里的N显示的6,可能不同电脑会不同。brew启动brew services start rabbitmq3 启动插件重新开启一个终端tab(若是brew

2020-11-30 09:43:23

原创 Elasticsearch实战(五)-倒排索引与分词

1 倒排索引1.1 书的目录和索引正排索引即目录页,根据页码去找内容倒排索引即索引页,根据关键词去找对应页码1.2 搜索引擎正排索引文档Id =》文档内容、单词的关联关系倒排索引单词 =》 文档Id的关联关系左:正排索引 =》 右:倒排索引倒排索引查询流程查询包含"搜索引擎”的文档通过倒排索引获得"搜索引擎”对应的文档Id有1和3通过正排索引查询1和3的完整内容返回最终结果1.3 倒排索引的组成1.3.1 单词词典( Term Dictionar

2020-11-29 18:41:40 40

原创 MySQL的Schema是什么?

1 Schema概念schema在数据库中表示的是数据库对象集合,它包含了各种对像,比如:表,视图,存储过程,索引等等。一般一个用户对应一个集合,所以为区分不同集合就需给不同集合起名。用户的schema名就相当于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。例如当我们访问一个数据表时,若该表没有指明属于哪个schema,系统就会自动加上缺省的schema。2 Schema的创建在不同的数据库中要创建的Schema方法是不一样的,但是它们有一个共同的特点就是都支持CR

2020-11-29 14:25:04 29

原创 阿里百度华为消息队列MQ异步场景面试题

1 在用户注册后发送消息到MQ,然后会员服务监听消息进行异步处理的场景下,有些时候我们会发现,虽然用户服务先保存数据再发送MQ,但会员服务收到消息后去查询数据库,却发现数据库中还没有新用户的信息。你觉得,这可能是什么问题呢,又该如何解决呢?解决方案当时倒不是因为主从的问题,而是因为业务代码把保存数据和发MQ消息放在了一个事务中,有概率收到消息的时候事务还没有提交完成,当时开发同学的处理方式是收MQ消息的时候sleep 1秒,或许应该是先提交事务,完成后再发MQ消息,但是这又出来一个问题MQ消息发送失

2020-11-28 23:04:48 53

原创 用了这么久的RabbitMQ异步编程竟然都是错的!

优秀的项目都由同步、异步和定时任务三种处理模式相辅相成。异步处理相比同步处理无需同步等待流程处理完毕,可得适用场景:服务于主流程的分支流程。比如,在注册流程中,把数据写入数据库的操作是主流程,但注册后给用户发优惠券或欢迎短信的操作是分支流程,时效性不那么强,可以进行异步处理。用户不需要实时看到结果的流程。比如,下单后的配货、送货流程完全可以进行异步处理,每个阶段处理完成后,再给用户发推送或短信让用户知晓即可。同时,异步处理因为可以有MQ中间件的介入用于任务的缓冲的分发,所以相比于同步处理,在应对流量

2020-11-28 15:17:20 39 1

原创 微服务、容器、DevOps的三角恋

容器的普及,带来了微服务架构和DevOps的高速发展。1 微服务的弊端1.1 测试、发布工作量剧增单体应用拆分成多个微服务后,虽能实现快速开发迭代,但带来更大测试和运维部署的成本。很多业务早期就是一个大的单体Web应用,测试和运维时,只需把Web应用打WAR包,部署到Tomcat完事拆成微服务后,很多业务需求就需同时修改多个服务的代码,那么这些服务都要打包、测试和发布上线,还要测试这些服务接口的功能,最后发布上线多个系统,测试和运维工作量增都剧增。这个时候就需要有办法能够减轻测试和运维的负担,我

2020-11-26 23:54:03 35

原创 阿里百度华为都在用的追踪微服务调用方案

点击上方“JavaEdge”,关注公众号设为“星标”,好文章不错过!1 服务追踪系统的意义1.1 快速定位请求失败原因微服务架构下,服务众多,如果一次上游请求失败,想查清楚到底是哪个...

2020-11-25 23:36:50 40

原创 阿里百度华为等大厂是如何追踪微服务调用的?

1 服务追踪系统的意义1.1 快速定位请求失败原因微服务架构下,服务众多,如果一次上游请求失败,想查清楚到底是哪个应用导致,简直是梦魇!倘若有一系统,可跟踪记录一次用户请求都发起了哪些调用,经过哪些服务处理,并且记录每一次调用所涉及的服务的详细信息,调用失败,不就可通过日志快速定位问题环节!优化系统瓶颈通过记录调用经过的每一条链路上的耗时,能快速定位整个系统的瓶颈点。比如你访问xxx网站首页发现很慢,可能是运营商网络延迟、网关系统异常、某服务异常、缓存或DB异常。通过服务追踪,可在上帝视角观得整

2020-11-25 23:23:05 133 1

原创 大厂都是怎么用Java8代替SimpleDateFormat?

1 SimpleDateFormat 之坑1.1 格式化1.1.1 案例初始化一个Calendar,设置日期2020年12月29日日志这是由于混淆SimpleDateFormat的各种格式化模式:小写y是年大写Y是week year,即所在的周属于哪一年一年第一周的判断方式从getFirstDayOfWeek()开始,完整的7天,并且包含那一年至少getMinimalDaysInFirstWeek()天。该计算方式和区域相关,对zh_CN区域,2020年第一周条件:从

2020-11-25 20:43:36 42

原创 大厂日期时间处理最佳实践(上)

1 背景Java8前,处理日期时间时,使用的“三大件”DateCalenderSimpleDateFormat以声明时间戳、使用日历处理日期和格式化解析日期时间。但这些类的API可读性差、使用繁琐,且非线程安全,如同设计的翔一样的IO,也是Java让人诟病的一大原因。于是Java8推出全新日期时间类。这些类的API功能强大简便、线程安全。但毕竟Java8刚出这些类,诸如序列化、数据访问等类库都不支持Java8日期时间类,需在新老类中来回切换。比如,在业务逻辑层使用LocalDateTime

2020-11-23 17:44:08 40

原创 使用Mybatis报错:java.lang.NullPointerException排查方案

nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: java.lang.NullPointerException### The error may involve com.hzgroup.switchproject.dao.inter.mysql.DistributionBookingDao.updateByPrimaryKeySelecti

2020-11-23 12:49:00 217

原创 token bucket限流算法原理及代码

1 概述限流算法主要有如下几种:基于信号量Semaphore只有数量维度,没有时间维度基于fixed window带上了时间维度,不过在两个窗口的临界点容易出现超出限流的情况,比如限制每分钟10个请求,在00:59请求了10次,在01:01又请求了10次,而从00:30-01:30这个时间窗口来看,这一分钟请求了20次,没有控制好基于rolling window就是要解决fixed window没解决的窗口临界问题,主要有基于token bucket的算法,以及基于leaky bucket的

2020-11-22 00:46:55 31

原创 全网最全HTTP响应码

HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。状态代码由 section 10 of RFC 2616定义信息响应100 Continue这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。101 Switching Protocol该代码是响应客户端的 Upgrade 标头发送的,并且

2020-11-22 00:45:39 37

原创 Golang如何优雅连接MYSQL数据库?

点击上方“JavaEdge”,关注公众号设为“星标”,好文章不错过!Go原生就支持连接数据库,所以在使用 Golang 开发时,当需要数据库交互时,即可使用database/sql包...

2020-11-21 23:29:37 41

原创 Go get报错:terminal prompts disabled

原因go get disable “terminal prompt” by default(Go get 命令默认禁用terminal prompt,即终端提示)解决方案环境设置GIT_TERMINAL_PROMPT=1export GIT_TERMINAL_PROMPT=1go get XXX

2020-11-20 23:14:43 24

原创 Go报错:$GOPATH/go.mod exists but should not

产生原因开启模块支持后,并不能与$GOPATH共存,所以把项目从$GOPATH中移出即可解决方案框里内容移除

2020-11-20 23:07:31 51

原创 大厂面试题典-注解可以继承吗,show me code?

注解可以继承吗?注解可为Java代码提供元数据,框架也会利用注解暴露功能,比如Spring框架中的@Service、@Controller。框架可通过类或方法等元素上标记的注解了解它们的功能或特性,并以此来启用或执行相应的功能。通过注解而非API调用来配置框架,属于声明式交互,可以简化框架配置,也可和框架解耦。你可能会认为,类继承后,类的注解也可继承,子类重写父类方法后,父类方法上的注解也能作用于子类,真的吗?案例定义一个包含value属性的MyAnnotation注解,可以标记在方法或类上:@

2020-11-20 22:56:43 32

原创 synthetic

内部类会用到,类在JVM是最顶级的,即使是内部类,编译以后,都会存在外部类$1这样的class文件;外部类是能完全访问内部的方法的,即使是private,但编译后编程2个文件了,怎么访问的,就是通过synthetic标识位实现的。在额外分享两篇R大关于逃逸分析的文章,里面涉及到了。http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2016-September/024535.htmlhttp://mail.openjdk.java.n

2020-11-20 22:28:43 13

原创 iTerm2+Oh My Zsh最佳终端体验

安装Oh my zsh安装方法有两种,可以使用curl或wget,看自己环境或喜好:# curl 安装方式sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"# wget 安装方式sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/

2020-11-20 15:57:41 30

原创 Go实战之常用命令行工具

Golang具有一套可以构建和处理go源代码的程序,作为命令行工具,这些程序也并非直接运行,而是由go程序调用。运行这些程序最常见的方式是作为go程序的子命令,例如 go fmt,该命令的运行方式是由go程序使用适合于包级处理的参数调用底层二进制文件,对go源代码的完整包进行操作;这些程序也可以作为独立的二进制文件运行,使用go tool子命令(如go tool cgo)使用未修改的参数;某些命令(如pprof)只能通过go tool子命令访问。go命令行作为日常开发的工具,能大大方便编译、调试、诊断程序.

2020-11-20 13:22:52 39 1

原创 macOS 安装go配置GOROOT GOPATH

1 获取go相关信息brew info go2 安装brew install go此处我下载的是最新版本1.15brew安装go是在目录/usr/local/Cellar3 配置GOROOT、GOPATH、PATH编辑文件GOROOTgo 安装目录,此处brew安装,进入go目录之后可看到bin目录是在libexec下面如果是源码,可以按照习惯直接复制到/usr/local/go下面,那么此时GOROOT 为/usr/local/goGOPATHgo的工作目录,

2020-11-20 12:43:48 40

原创 反射和泛型的这些坑,你踏空了吗?

1 当反射遇到方法重载重载grade方法,入参分别是int和Integer。不通过反射,选用哪个重载方法很清晰,比如传入666走int参数重载方法,传入Integer.valueOf(“666”)走Integer重载。但你若墨守成规认为反射调用方法也是根据入参类型确定方法重载。使用getDeclaredMethod获取 grade方法,然后传入Integer.valueOf(“36”)因为通过反射进行方法调用都是通过方法签名来确定方法本例的getDeclaredMethod传入的参数类型

2020-11-20 00:00:09 53

原创 拼夕夕三轮面经:被问到反射和泛型的bug,你踏空了吗?

点击上方“JavaEdge”,关注公众号设为“星标”,好文章不错过!1 当反射遇见方法重载重载grade方法,入参分别为int、Integer。若不通过反射这种高级编程方式,选用哪个...

2020-11-19 23:34:40 35

EvgenyMandrikov_Marc_Hoffmann_Java_Coverage_mechanics.pdf

jacoco 官方原理解析文档,由领导者亲自执笔编写!

2020-04-03

Spring源码深度解析2019最新版第二版

Spring源码深度解析2019最新版第二版,详细解析Spring5.x版本,高清无码,物超所值!!!快下载一起学习吧!!

2019-03-23

人工智能蔡自兴课件 PPT

人工智能及其应用第四版,最新版本课程使用课件,适合期末复习

2019-01-06

Spartk 电影PPT资料

Spartk 电影的PPT资料,这是一个很好的视频教程哦,由于原文件太大,想要可以联系我哦

2019-01-06

南邮微机原理课件

南邮微机原理课件.....................................................................

2018-01-08

南邮Windows编程课件

南京邮电大学Windows编程课件1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

2017-11-26

微机原理课件-南邮

南邮的微机原理课件

2017-11-15

公众号-JavaEdge的留言板

发表于 2020-01-02 最后回复 2020-08-01

空空如也

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

TA关注的人 TA的粉丝

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