![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
企业架构
文章平均质量分 72
Java架构师笔记
这个作者很懒,什么都没留下…
展开
-
Java架构师笔记丨数据结构中B树,B-树和B+树的区别
B树即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找...原创 2019-08-07 20:57:36 · 904 阅读 · 0 评论 -
java用正则方法验证文件名是否合法
Java中用到文件操作时,经常要验证文件名是否合法. 用File类的createNewFile()方法的确很管用.但当要批量验证时,效率上就会有问题.正则匹配的开销比创建文件少了很多. 那么一个合法的文件(Win下)应该符合如下规则:1.文件名不能为空,空在这里有两个意思:文件名(包括扩展名)长度为0或仅由空字符组成(包括\t\b等不可见的转义字符)文件名和扩展名不能同时为空.但实际上我们可...原创 2018-12-06 15:07:52 · 4154 阅读 · 0 评论 -
Java架构-Mybatis源码正确打开方式
精心挑选要阅读的源码项目;饮水思源——官方文档,先看文档再看源码;下载源码,安装到本地,保证能编译运行;从宏观到微观,从整体到细节;找到入口,抓主放次,梳理核心流程;源码调试,找到核心数据结构和关键类;勤练习,多折腾;整体架构mabatis源码思维导图mybatis三大核心流程:mybatis初始化:进入光标选中的propertiesElement方法内发现...原创 2018-12-03 17:20:02 · 288 阅读 · 0 评论 -
spring AOP为什么配置了没有效果?
spring Aop的配置一定要配置在springmvc配置文件中注意:spring AOP的配置一定要写在springmvc配置文件中,直接在spring中配置是没有效果的欢迎大家和我一起学习Spring Boot构建微服务云架构,我这边会将近期研发的Spring Boot微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发Spring Boot框架的朋友,大家来一起探讨Spring ...原创 2018-12-03 16:14:23 · 695 阅读 · 0 评论 -
GIT分支管理规划说明
1. 总览master : 主分支,主要用来生产版本发布。develop:日常开发分支,从主分支开出来的一个分支,该分支正常保存了开发的最新代码。(格式:功能名+版本号, 如planbook.1.1.x)test: 测试分支,会将所有的日常开发分支合并到test分支,进行发布。release:release 分支可以认为是 master分支的未测试版,用于UAT环境的发...原创 2018-12-03 12:58:51 · 624 阅读 · 0 评论 -
使用SpringBoot+Dubbo 搭建一个简单的分布式服务,超详细,新手都能看懂 !
使用 SpringBoot+Dubbo 搭建一个简单分布式服务实战之前,先来看几个重要的概念开始实战之前,我们先来简单的了解一下这样几个概念:Dubbo、RPC、分布式、由于本文的目的是带大家使用SpringBoot+Dubbo 搭建一个简单的分布式服务,所以这些概念我只会简单给大家普及一下,不会做深入探究。什么是分布式?分布式或者说 SOA 分布式重要的就是面向服务,说简单的分布式就是我...原创 2018-11-28 20:13:43 · 546 阅读 · 0 评论 -
Java架构-Java开发中的一些小技巧
一、 Java获取URL地址中传递的参数二、获取请求的URL地址三、获取请求的IP地址四:判断字符串是否能够转换成指定格式的日期希望此文能帮到大家的同时,也听听大家的观点。欢迎留言讨论,加关注,分享你的高见!持续更新!我本人邀约各大BATJ架构大牛共创Java高级架构交流社区群,(群号:673043639)致力于免费提供Java架构行业交流平台,通过这个平台让大家相互学习成长,提...原创 2018-11-28 19:48:19 · 219 阅读 · 0 评论 -
Spring Boot 工程集成全局唯一ID生成器 Vesta
Vesta 是一款通用的 ID产生器,互联网俗称统一发号器,其具有几大很具有优势的特性:全局唯一粗略有序可反解可制造分布式而且支持三种发布模式:嵌入式发布模式中心服务器发布模式REST 发布模式根据业务的性能需求,它可以产生 最大峰值型 和 最小粒度型 两种类型的 ID,它的实现架构使其具有高性能,高可用和可伸缩等互联网产品需要的质量属性,是一款通...原创 2018-11-28 17:04:37 · 429 阅读 · 0 评论 -
分布式事务中间件 TCC-Transaction 源码分析 —— Dubbo 支持
1. 概述本文分享 Dubbo 支持。TCC-Transaction 通过 Dubbo 隐式传参的功能,避免自己对业务代码的入侵。可能有同学不太理解为什么说 TCC-Transaction 对业务代码有一定的入侵性,一起来看个代码例子:代码来自 tcc-transaction-http-sample 。声明远程调用时,增加了参数 TransactionContext。当然你也可以通过自己...原创 2018-11-28 16:26:23 · 273 阅读 · 0 评论 -
Spring Boot WebFlux 入门案例
为什么要使用WebFlux1.WebFlux异步编程,拥有更好的性能2.WebFlux完全基于java8开发,在编写代码时可以更加简洁明了例如(官网图):以前的风格WebFlux风格WebFlux入门案例WebFlux主要基于Reacotr,下面代码一段入门demo,分别使用Mono和Flux代码示例:测试代码:测试结果:WebFlux Mono...原创 2018-11-28 16:21:33 · 431 阅读 · 0 评论 -
SpringBoot 与 Kotlin 完美交融
本文讲解 Spring Boot2 基础下,如何使用 Kotlin,并无缝整合与完美交融。为了让读者更加熟悉 Kotlin 的语法糖,笔者会在未来的几篇文章中,聊聊 Kotlin 的新特性及其语法糖。环境依赖修改 POM 文件,添加 spring boot 依赖。紧接着,我们需要添加 mysql 依赖。最后,添加 Kotlin 依赖。注意的是,在 Kotlin 中,data cla...原创 2018-11-28 15:01:52 · 1316 阅读 · 0 评论 -
Java架构-代码分层的设计之道
分层思想,是应用系统最常见的一种架构模式,我们会将系统横向切割,根据业务职责划分。MVC 三层架构就是非常典型架构模式,划分的目的是规划软件系统的逻辑结构便于开发维护。MVC:英文即 Model-View-Controller,分成模型层、视图层、控制层。将页面和业务逻辑分离,提高应用的可扩展性及可维护性。如图所示。事实上,MVC 三层架构只是概念层面的指导思想,我们会将层次结构划分的更加细致...原创 2018-11-28 14:48:11 · 1566 阅读 · 0 评论 -
Java架构-不要成为项目风险的奴隶
一个项目经理如果一直在项目中处于救火状态,那他就不是一个好项目经理。我所接触到的项目经理中,大家最常犯的一个错误,就是低估项目难度导致进度不可控制。由此,我今天想和大家讨论的主题,就是项目风险管理了。项目中不可能没有风险,正如理财一样,没有风险就没有收益。低风险低收益,高风险高收益。而我们都知道著名的墨菲定律,既有可能出错的事就一定会出错。项目中也一样,风险如果存在,就代表他一定会发生。项目...原创 2018-11-30 16:45:00 · 401 阅读 · 0 评论 -
Java架构/一致性Hash算法在数据库分表中的实践
最近有一个项目,其中某个功能单表数据在可预估的未来达到了亿级,初步估算在90亿左右。与同事详细讨论后,决定采用一致性Hash算法来完成数据库的自动扩容和数据迁移。整个程序细节由我同事完成,我只是将其理解并成文,供有相同问题的同行参考。参看此文的兄弟,默认各位已经熟悉一致性hash算法了。此文仅仅阐述代码细节,实现语言为Java。项目背景1.项目是一个实验室项目2.其中有一个表叫做试验表,用...原创 2018-11-30 15:46:58 · 2219 阅读 · 0 评论 -
Spring Websocket实现文本、图片、声音、文件下载及推送、接收及显示(集群模式)
相关环境 Nginx,Spring5.x当前(要选择4.0+),tomcat8.x,Quartz 2.x集群(实际运用是Quartz的集群模式和单机模式共存的)测试面页:http://sms.reyo.cn/socket.html每20秒随机显示不同类型的广告:文字、图片、声音),效果如下:服务器端代码:发送图片提供了两种方式处理,方便以后调用。客户端接受并显示图片代码:欢...原创 2018-12-06 15:22:13 · 2041 阅读 · 1 评论 -
Java架构-面试前必须知道的MySQL命令【explain】
刷面试题的时候,不知道你们有没有见过MySQL这两个命令:explain和profile(反正我就见过了)…之前虽然知道这两个命令大概什么意思,但一直没有去做笔记。今天发现自己的TODO LIST有这么两个命令,于是打算来学习一番,记录一下~使用的MySQL的版本为5.6.38一、explain命令1.1体验explain命令首先我们来体验一下explain命令是怎么使用的,以及输出的...原创 2018-12-06 15:53:24 · 354 阅读 · 1 评论 -
攻破MySQL性能瓶颈必知的调优技巧-巴分巴秒
一、前言MySQL调优对于很多程序员而言,都是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。今天给大家讲解MySQL的优化实战,助你高薪之路顺畅!图 - MySQL查询过程二、优化的哲学注意:优化有风...原创 2019-08-05 14:56:48 · 272 阅读 · 0 评论 -
Java架构师笔记丨深入谈谈架构师,以及架构师该掌握的技术-巴分巴秒
架构师是一个充满挑战的职业,知识面的宽窄往往决定着一个架构师的架构能力,所以在这一点上我比较赞成你的学习方式,就是要阅读大量的技术书籍,但我希望你不要仅限于软件相关的书籍,经常泡技术论坛,一方面可以结交朋友,一方面可以增加自己的知识面。公司的大小往往决定了所做的项目规模,一般的大项目不太可能直接总包给小公司去做,但这并不妨碍小公司可以分包到大项目的一部分。在做小项目的同时也可以积累丰富的经验,我...原创 2019-08-04 14:50:46 · 266 阅读 · 0 评论 -
终于明白为什么要加 final 关键字了!【巴分巴秒】
在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日常开发的情况。但是当你使用超过一种语言进行开发的时候就会发现,虽然都是高级语言,但是它们之间很多特性都是不太相同的。现象描述在 Java 8 之前,匿名内部类在使用外部成员的时候,会报错并提示 “Cannot refer to a non-final variable arg inside an i...原创 2019-08-03 17:05:51 · 192 阅读 · 0 评论 -
阿里Java架构师谈谈架构和如何成为一个Java架构师-巴分巴秒
架构的定义我们来看看软件架构的一般定义:程序和计算系统软件体系结构是指系统的一个或多个结构。 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系。该体系结构不是可操作的软件。 具体来说,这是一个表达式,它使软件工程师能够:分析满足监管要求的设计有效性。在设计更改相对容易的阶段,请考虑架构的可能选项。降低与软件构建相关的风险。软件架构的重要性我为什么说软件...原创 2019-08-03 17:06:57 · 269 阅读 · 0 评论 -
Java架构师笔记丨Java进阶架构学习之旅-巴分巴秒
关于巴分巴秒巴分巴秒学院是一家专门面向中高端技术人才培养的在线教育培训平台,大牛讲师一对一指导+班主任全程在线服务,督促学习+技术社区交流互动,学习之路不孤单.公司旨在于帮助中高端技术人员提高在互联网行业的竞争力。学院内所有课程均由一线大型互联网公司技术大牛精心研发,汇集多年工作积累,让你的职业生涯不再困惑 让你的知识价值最大化。IT行业是21世纪的朝阳产业。成功的开始源自于接受好的教育,...原创 2019-08-04 21:17:39 · 2875 阅读 · 0 评论 -
Java架构师丨美团员工拒绝了猎头推荐的offer,竟然被报复举报!
不知大家近期找工作都是通过什么渠道?身边很多朋友问我,我一般都建议他们优先找朋友内推,海投被邀请的概率小,找猎头有时候又会碰上一些不靠谱的。近日就有美团员工在网上发帖吐槽,称自己找猎头推简历拿到了offer,后来因为感觉薪资没达到预期所以拒了,于是猎头就给原公司leader打电话说他出去面试了…真是千算万算还抵不过小人算计,底下程序员兄弟们纷纷吐槽,这种猎头还不爆等着过年吗?...原创 2019-08-03 19:33:18 · 519 阅读 · 0 评论 -
阿里 P10、腾讯 T4、华为 18,互联网公司职级、薪资、股权大揭秘-巴分巴秒
BAT、头条、华为们的最新技术职级序列是如何划分的?各个职级的大致薪资范围、股票都是多少?不同职级之间的晋升难度有多大,如何评审?校招、社招程序员想去大厂应该如何准备?本篇文章搜集整理了最新版数据,为你一一解答!写在前面相信很多读者朋友在网上看过不少互联网公司薪资的问题和数据报表,其中很多数据的更新时间都停留在 2 到 3 年前。关注这个问题的人如此之多,但信息却很久没有更新了,有没有可能...原创 2019-08-03 19:32:07 · 9512 阅读 · 1 评论 -
「阿里面试系列」搞懂并发编程,轻松应对80%的面试场景-巴分巴秒
作为一个合格的Java程序员,必须要对并发编程有一个深层次的了解,在很多互联网企业都会重点考察这一块。可能很多工作3年以上的Java程序员对于这一领域几乎没有太多研究。所以在接下来内容中,我会将并发编程整个领域由浅到深做非常全面的分析。内容导航从操作系统的发展了解进程、线程模型线程的优势线程的生命周期线程的应用场景了解进程、线程模型每次学习一个新技术,我会先去了解这个技术的背景,...原创 2019-08-03 19:39:42 · 346 阅读 · 0 评论 -
Java 中初始化 List 集合的 6 种方式!
List 是 Java 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下。1、常规方式这种就是我们平常用的最多最平常的方式了,没什么好说的,后面缺失的泛型类型在 JDK 7 之后就可以不用写具体的类型了,改进后会自动推断类型。2、Arrays 工具类注意,上面的 asList 是 Arrays 的静态方法,这里使用...原创 2018-12-06 15:57:55 · 393 阅读 · 0 评论 -
Java架构-程序员如何修炼管理思维
一个技术精湛的程序员,只要有机会,就有可能被公司提拔为项目管理人员,掌控项目中的一切。但所谓权力越大责任越大,要想成为一个合格的项目管理人员,我认为最重要的首先是扭转自己的思想。正如老子说的“道为体,术为用。”我们的思维模式改变了,各种管理的方法和工具自然的就会去学习使用了。正所谓“有道者术能长久,无道者术必落空。”所以在本文中,我就要和大家聊一聊管理中的道。聊一聊我们程序员如何修炼管理思维。...原创 2018-11-30 15:36:52 · 331 阅读 · 0 评论 -
Java架构-面试算法:计算堆栈当前元素的最大值
有一道堆栈相关算法题,我被面试过两次以上,看似其在算法面试中出现的概率很高,由此值得我们好好分析下。题目是这样的:对于堆栈的常用操作有, pop 弹出堆栈顶部的元素;push 向堆栈压入一个元素;peek 获得堆栈顶部的元素值,但不弹出堆栈。现在要去你增加一个操作max, 它的作用是返回堆栈当前所有元素中值最大的那个,例如堆栈当前元素有:stack: 5,4,2,3那么max() 返回的值就...原创 2018-11-30 15:26:48 · 331 阅读 · 0 评论 -
Java架构-数据建模 NoSQL 数据库的概念和对象建模符号
在最近的2018数据架构峰会上,Ted Hills主持了一个研讨会,该研讨会的主题是关系数据库和 NoSQL 数据库的数据建模。他表示,NoSQL 运动帮助了数据库社区明白了两件事。首先,并非每个应用程序都需要 ACID,并且,放宽 ACID 以能扩展到互联网规模。其次,表格数据组织很适合大量的数据,但未必适合所有的数据集。但是,随着时间的流逝,SQL/NoSQL 的显著区别将会消失,DBMS ...原创 2018-11-26 14:50:22 · 335 阅读 · 0 评论 -
Java架构-苏宁 11.11:苏宁易购订单搜索系统架构及实现
背景随着苏宁易购平台规模的飞速发展,平台的订单量呈现指数级的增长,存储容量已达 TB 级,订单量更是到了万亿级别,尤其在双 11 大促流量洪峰的场景下,面临两个挑战:1、如何存储如此巨大的数据量2、如何提供高并发、低延迟、多维度的检索服务传统关系型数据库无法支撑多维度的模糊检索,为此,我们选用了 elasticsearch 来提供索引服务,原因如下:1、技术及配套组件成熟2、有较大的...原创 2018-11-26 14:39:58 · 829 阅读 · 1 评论 -
从架构角度来谈区块链的十年发展历程-巴分巴秒
以比特币为旗帜的区块链技术转眼间已经走过十年了,人们常感慨“十年一代人”,对于现在这个三年就会有代沟的快速发展时代,十年似乎已经很久了。我接触区块链大概一年时间,据说在这个领域三年就是资深或者专家了,可见,这个领域尽管有十年历史,却还差些积累,同样十年左右历程的云计算,目前已经是“铺天盖地”了。虽然有诸多不尽人意,但我依然觉得这是个有趣、有想象力的领域,所以,我把自己通过这一年学习得来的对区块链...原创 2019-08-04 14:29:40 · 468 阅读 · 0 评论 -
Java架构-数据库如何确保其操作被 100% 正确执行?
我想你在使用数据库的时候,心里会假定这里面的数据都是 100% 准确的。回想一下,你在工作中有没有这样做过:有人给你反映了一个问题,说数据错了,你的自然反应是去检查代码有没有问题,而不会想到去确认数据库有没有问题?为了更快更方便地执行单元测试,你认为通过 Mock 数据加上断言(assertion)来代替数据库中实际存储的数据是完全没问题的。如果你这样做过,或者有过这样的看法,那你...原创 2018-11-26 13:52:50 · 361 阅读 · 0 评论 -
Java架构-跨进程通信,到底用长连接还是短连接
一个完整的软件系统大多数情况下是由多个进程共同协作进行的,哪怕它们在同一台服务器上。所以,进程之间如何进行高效的通信至关重要。单个应用程序 + 单个数据库这套基础开发套餐我相信每个人都经历过,甚至在初期它们还有可能部署在同一台服务器上。既然应用程序和数据库分属于两个不同的进程,所以这个问题本质上还是两个进程之间的通信问题。两个进程之间如果要通信,很显然必须要建立一个连接,通过它来相互传输数据...原创 2018-11-26 13:14:27 · 589 阅读 · 0 评论 -
Java架构-别忽视分布式系统这六大“暗流”
任何事物都有两面性。你只有了解了分布式系统背后的“暗流涌动”现象是什么,才能避免掉到“坑”里去。暗流的含义是流动的地下水,是潜伏在“深层”的,我们往往过度地沉迷于表面的美好,而忽略了它。在分布式系统当中,最容易被我们忽略的是下面这六大“暗流”:网络并不是可靠的不同节点之间的通信是存在延迟的带宽是有上限的分布式并不直接意味着是“敏捷开发”了数据由一份冗余成多份后如何...原创 2018-11-25 22:19:17 · 244 阅读 · 0 评论 -
Java架构-详解分布式系统本质:“分治”和“冗余”
站在全局角度看,分布式系统的本质是什么?其实说白了,就是两点:“分治”和“冗余”。分治和冗余使得分布式系统具备了核心价值,那么它的价值是什么?分布式系统的价值谈到分布式系统的价值,可能就得从 1953 年说起了。在这一年,埃布·格罗希(Herb Grosch)提出了一个他观察得出的规律——Grosch 定律。维基百科中是这样描述的:计算机性能随着成本的平方而增加。如果计算机 A 的成本是...原创 2018-11-25 20:17:04 · 436 阅读 · 0 评论 -
Java架构-拨云见日看什么是分布式系统?
本文是分布式系统系列文章的第一篇,后续还会有分布式系统的本质、分布式系统的暗流、数据库如何确保操作被 100% 正确执行?等文章陆续刊发,敬请期待。如果现在让你阐述一下什么是“分布式系统”,你脑子里第一下跳出来的是什么?我想,此时可以用苏东坡先生的一句诗,来形象地描述大家对分布式系统的认识:横看成岭侧成峰,远近高低各不同。“分布式系统”等于 SOA、ESB、微服务这些东西吗?我觉得每个...原创 2018-11-25 19:51:31 · 263 阅读 · 0 评论 -
Java架构-在一个成熟的分布式系统中 如何下手做高可用?
对于企业来说,随着规模越来越大,整个系统中存在越来越多的子系统,每个子系统又被多个其他子系统依赖或者依赖于其他子系统。大部分系统在走到这一步的过程中,大概率会发生这样的场景:作为某个子系统的负责人或者 OnCall 人员,休息的时候都不安稳,心里老是忐忑着系统会不会挂。导致周末不敢长时间出门,晚上睡梦中被电话叫醒,痛苦不堪。那么,在一个成熟的分布式系统中,我们该如何去保证它的可用性呢?迫切的需要...原创 2018-11-25 19:41:52 · 4007 阅读 · 2 评论 -
Java架构-美团即时物流的分布式系统架构设计
背景美团外卖已经发展了五年,即时物流探索也经历了 3 年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点:即时物流业务对故障和高延迟的容忍度极低,在业务复杂度提升的同时也要求系统具备分布式、可扩展、可容灾的能力。即时物流系统阶段性的逐步实施分布式系统的架构升级,最终解决了系统宕机的风险。围绕成本、效率、体验核心三要素,即时物流体系大量结...原创 2018-11-25 17:21:40 · 5512 阅读 · 3 评论 -
Java架构-Java序列化的状态
关键要点Java序列化在很多库中引入了安全漏洞。对序列化进行模块化处于开放讨论状态。如果序列化能够成为模块,开发人员将能够将其从攻击表面上移除。移除其他模块可以消除它们所带来的风险。插桩提供了一种编织安全控制的方法,提供现代化的防御机制。多年来,Java的序列化功能饱受 安全漏洞 和zero-day攻击,为此赢得了“ 持续奉献的礼物 ”和“ 第四个不可饶恕的诅咒...原创 2018-11-23 20:47:01 · 253 阅读 · 0 评论 -
Java架构-Java代码规范那些事
Java开发中所要遵守的编码规范大体上有如下7点。命名规范、注释规范、缩进排版规范、文件名规范、声明规范、语句规范以及编程规范。1.命名规范(1)所有的标示符都只能用ASCⅡ字母(A-Z或a-z)、数字(0-9)和下划线“_”。(2)一个唯一包名的前缀总是全部小写的字母。例如:www.tonysun.cc(3)类名是一个名词,采用大小写混合的方式,每个单词的首字母大写。例如:Tony。(...原创 2018-11-23 20:04:20 · 277 阅读 · 0 评论 -
Spring Bean的生命周期
欢迎大家和我一起学习Spring Boot构建微服务云架构,我这边会将近期研发的Spring Boot微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发Spring Boot框架的朋友,大家来一起探讨Spring Boot架构的搭建过程及如何运用于企业项目。我本人邀约各大BATJ架构大牛共创Spring Boot构建微服务架构的交流社区。 (群号:364677697)欢迎各路架构...原创 2018-11-29 14:32:39 · 192 阅读 · 0 评论