Java
文章平均质量分 90
小霸戈
资深码农,记录学习,分享个人经验
展开
-
学习 DDD - 通用语言的模式
大家好,我是霸戈,这周学习了一些关于领域驱动设计的知识 ,对比较深刻的地方做了不少笔记,分享给大家。在日常需求讨论的时候,经常会碰到一个需求会议开了一个多小时还没有达成共识。作为业务方(领域专家)明明表达的很清楚,但是开发人员却始终无法理解透彻,很明显的原因就是由于双方的知识体系不一致 ,没有形成一种双方互相都能理解的语言。语言的鸿沟虽然领域专家对软件开的技术所知有限,但他们熟悉使用自己的领域术语——可能还具有各种不同的风格。另一方面,开发人员可能会用一些描述性的,功能性的术语来理解和讨论系统,而这原创 2021-12-05 20:37:16 · 350 阅读 · 0 评论 -
开放平台SDK设计思路
大家好,我是霸戈!上次写完 “淘宝” 开放平台接口设计思路后,有不少粉丝就提到什么时候会出下一篇,所以今天打算写一篇开放平台SDK设计的一些思路,同时我也会做一些实践,一步步把我的设计思路进行落地。在写这篇文章之前,我个人因为工作的原因使用过淘宝、京东开放平台的一些SDk,也学到不少设计思路,这次准备将我的思路落地成可以使用的SDK,大概的设计会分为三个模块,分别为:数据传输模块:主要用于传输请求数据,本文使用http协议传输数据序列化模块:用户序列化和反序列化数据,SDK是给客户使用应该尽可能的去原创 2021-10-10 15:38:37 · 576 阅读 · 0 评论 -
“淘宝” 开放平台接口设计思路
最近对接的开放平台有点多,像淘宝、京东、快手、抖音等电商平台的开放平台基本对接了个遍,什么是CRUD BODY也许就是这样的吧!!!虽然对接各大开放平台没啥技术含量,但咱也得学点东西不是,不能白对接哈!经过这几天的整理,脑子里大概有了个开放平台接口的设计套路,故整理成文章方便有需要的时间去实现自己的开放平台接口。开放平台比较关注的几个点:易用性:接口设计要简洁,请求参数要见名知意,使服务商能快速接收,为用户提供服务安全性:开放平台接口是暴露在外网,必须保证用户数据的安全稳定性:开放平台接口是给上原创 2021-09-25 18:57:04 · 304 阅读 · 0 评论 -
ElasticSearch 面试 4 连问,你顶得住么?
来源:https://github.com/doocs/advanced-java面试题ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗?面试官心理分析问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是…对 es 基本就是个黑盒,你还能干啥?你唯一能干的就是用 es 的 api 读写数据了。要是出点什么.转载 2021-02-18 10:16:30 · 454 阅读 · 0 评论 -
企业级微服务架构统一安全认证设计与实践!
来源:https://juejin.cn/post/6906149001520037902作者:mars名词定义Third-party application:第三方应用程序,本文中又称"客户端"(client)。HTTP service:HTTP服务提供商,本文中简称"服务提供商"。Resource Owner:资源所有者,本文中又称"用户"(user),即登录用户。User Agent:用户代理,本文中就是指浏览器。Authorization server:认证服务器,即服务提供商.转载 2021-02-05 18:39:45 · 104 阅读 · 0 评论 -
长沙社区团购独角兽《兴盛优选》 18k 面试题记录,已拿offer!
长沙或者想从北上广大回长沙的小伙伴,应该都听说过《兴盛优选》,一家位于长沙市从事社区团购业务的独角兽企业。 目前日订单1000+万,在长沙薪资也较有诱惑力,要不要来挑战一下?我在里面潜伏过一段时间,发现里面缺人非常严重,大家都知道长沙互联网发展的晚,目前《兴盛优选》的招人要求也比较高(相对长沙其他企业),所以招到满意的人非常少,100份简历可能只能进几个。目前里面主要分两大业务线:电商和物流,电商是比较早的业务业,现在业务非常稳定需求不多,但是物流是比较新的业务线需求挺多了,所以建议在投简历时要选好哪条原创 2021-01-28 11:56:29 · 3458 阅读 · 3 评论 -
MyBatis if 标签的坑,居然被我踩到了。。。
事件的原因是这样的,需求是按条件查数据然后给前端展示就行了,写的时候想着挺简单的,不就是使用 MyBatis 动态 SQL 去查询数据吗?现实还是很残酷的,等我写完上完 UAT 后,前端同学说根据state查的数据与理想的数据不一致,这个state当时设计时只有两个值:0和1。/** * 数据状态 */@Range(min = 0, max = 1, message = "状态只能为0(未处理),1(已处理)")private Integer state;理想情况下通过前端传递过来的值,然原创 2020-12-09 09:15:48 · 603 阅读 · 1 评论 -
面试官:Spring @Autowired 注解自动注入流程是怎么样?
面试中碰到面试官问:”Spring 注解是如果工作的?“,当前我一惊,完了这不触及到我的知识误区了吗?,还好我机智,灵机一动回了句:Spring 注解的工作流程倒还没有看到,但是我知道@Autowired注解的工作流程,后面不用说了一顿巴拉,面试官都连连点头。面试中要活用转移话题,要避免回答 ”不知道“,要引导面试官掉入你擅长的技术,然后才有机会教他作人。@Autowired 相关的类@Autowired 注解的主要功能就是完成自动注入,使用也非常简单(Spring都安排好了),但是要想知道 @Aut原创 2020-11-22 21:20:35 · 733 阅读 · 0 评论 -
AQS 自定义同步锁,挺难的!
AQS是AbstractQueuedSynchronizer的简称。AbstractQueuedSynchronizer 同步状态AbstractQueuedSynchronizer 内部有一个state属性,用于指示同步的状态:private volatile int state;state的字段是个int型的,它的值在AbstractQueuedSynchronizer中是没有具体的定义的,只有子类继承AbstractQueuedSynchronizer那么state才有意义,如在Reentr原创 2020-10-24 15:57:44 · 180 阅读 · 0 评论 -
RPC 基本原理以及如何用Netty来实现RPC
来源:https://www.jianshu.com/p/8876c9f3cd7f作者:清幽之地前言在微服务大行其道的今天,分布式系统越来越重要,实现服务化首先就要考虑服务之间的通信问题。这里面涉及序列化、反序列化、寻址、连接等等问题。。不过,有了RPC框架,我们就无需苦恼。一、什么是RPC?RPC(Remote Procedure Call)—远程过程调用,是一个计算机通信协议。...转载 2020-04-30 09:13:43 · 186 阅读 · 0 评论 -
强大的 Spring Security 是如何在 Servlet 应用中执行的?
Spring Security 是一个强大的认证和授权框架,它的使用方式也非常简单,但是要想真正理解它就需要花一时间来学习了,最近在学习 Spring Security 时有一些新的理解,特意记录下来防止知识忘记的太快,毕竟好记性不如烂笔关,也给即将准备学习 Spring Security 的同志做一个参考。由于我在学习和使用是基于 Servlet Applications 的,所以文中的大部分...原创 2020-04-26 20:16:37 · 232 阅读 · 0 评论 -
4 种分布式session解决方案
作者:断橋殘雪链接:https://blog.csdn.net/qq_35620501/article/details/95047642cookie和session的区别和联系cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储的数据量小session是服务器用来存储部分数据信息,保存在服务器,用户不容易获取,安全性高,储存的数据量相对大...转载 2020-04-08 09:07:27 · 126 阅读 · 0 评论 -
30分钟理解GraphQL核心概念
来源:https://segmentfault.com/a/1190000014131950作者:littleLyon写在前面在上一篇文章RPC vs REST vsGraphQL中,对于这三者的优缺点进行了比较宏观的对比,而且我们也会发现,一般比较简单的项目其实并不需要GraphQL,但是我们仍然需要对新的技术有一定的了解和掌握,在新技术普及时才不会措手不及。这篇文章主要介绍一些我...转载 2020-04-05 09:59:59 · 214 阅读 · 0 评论 -
分享下被偷走的那些年,我在做外包的心得体会
前言先说一说做外包的原因和经历,我是在17年开始接触外包,当前也没有花太多的时间去做外包项目,大部分精力还是主要的工作上,下班/周末的时候花一些时间来做那些项目。17 年和朋友一起注册了一家公司,然后开始在八戒上挂服务。有时候觉得:只有你进入某个你没有接触的领域时,你才知道竞争有多激烈,这里不得不说下八戒的一些坑:单子质量比较差,有很多假单服务五花八门,各种变相收费手续费也不少(现在改...原创 2020-04-03 10:54:10 · 2314 阅读 · 1 评论 -
十分钟入门RocketMQ
阿里中间件团队博客http://jm.taobao.org/2017/01/12/rocketmq-quick-start-in-10-minutes/本文首先引出消息中间件通常需要解决哪些问题,在解决这些问题当中会遇到什么困难,Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件否可以解决,规范中如何定义这些问题。然后本文将介绍RocketMQ的架构设计,以...转载 2020-04-02 10:00:22 · 152 阅读 · 0 评论 -
记一次Maven发布Jar包中文乱码解决方法
Maven deploy 乱码今天使用Maven发布Jar包时,发布功能都是正常的也成功上传到了仓库,就是项目跑越来后出中文中现了乱码:{ "code": "SUCCESS", "success": true, "message": "鎿嶄綔鎴愬姛", "data": [ { "key": "app_force_login", "value": ...原创 2020-03-22 09:16:07 · 892 阅读 · 0 评论 -
基于 Canal 和 Kafka 实现 MySQL 的 Binlog 近实时同步
Throwablehttps://juejin.im/post/5e6a6746f265da575c16d678前提近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存、更新或者软删除)到一个另一个数据源,持久化之前需要清洗数据并且构建一个相对合理的便于后续业务数据统计、标...转载 2020-03-16 10:07:01 · 130 阅读 · 0 评论 -
【并发编程】深入理解Java内存模型
作者:_fan凡https://www.jianshu.com/p/15106e9c4bf3Java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内存访问的一致性。可以避免像c++等直接使用物理硬件和操作系统的内存模型在不同操作系统和硬...转载 2020-03-13 11:04:15 · 98 阅读 · 0 评论 -
【并发编程】MESI--CPU缓存一致性协议
概念MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议。MESI协议中的状态CPU中每个缓存行(caceh line)使用4种状态进行标记( 使用额外的两位(bit)表示):M: 被修改(Modified)该缓存行只被缓存在该CPU的缓存中,并且是被修改...转载 2020-03-12 10:26:41 · 140 阅读 · 0 评论 -
彻底搞懂 MySQL 分区!
GrimMjxhttps://www.cnblogs.com/GrimMjx/p/10526821.html一.InnoDB逻辑存储结构首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。段段就是上图的segment区域,常见的段有数据段、索引段、回滚段等,在InnoDB存储引擎中,对段的管理都是由引擎自身所完成的。...转载 2020-02-13 09:58:39 · 999 阅读 · 0 评论 -
5亿整数的大文件,怎么排?
作者:foreach_breakhttps://www.cnblogs.com/foreach-break/p/external_sort.html问题给你1个文件bigdata,大小4663M,5亿个数,文件中的数据随机,如下一行一个整数:61963023557681612158020393452095006174677379343122016371712330...转载 2020-02-12 10:13:23 · 924 阅读 · 0 评论 -
如何在Gihub上面精准搜索开源项目?
作者:觉非https://juejin.im/post/5e3d01c56fb9a07c91100801很多的小伙伴,经常会有这样的困惑,我看了很多技术的学习文档、书籍、甚至视频,我想动手实践,于是我打开了GitHub,想找个开源项目,进行学习,获取项目实战经验。这个时候很多小伙伴就会面临这样的问题:“我不会搜啊,我该怎么找呀?”,最终只能放弃。相信看完这篇文章,你就可以学会如何精准地...转载 2020-02-11 09:35:10 · 819 阅读 · 0 评论 -
你真的知道如何设置数据库连接池的大小吗?
rickiyanghttps://www.cnblogs.com/rickiyang/p/12239907.html前段时间在一个老项目中经历过一个问题:一个 Dubbo 服务,启动的时候慢的要死,后来看日志查原因整个过程一直在初始化数据库连接。一看数据库连接参数,连接池大小:1024。很多入行晚的同学没有经历过手写 JDBC 连接的日子。那个时候没有数据库连接池的概念,都是原生代码...转载 2020-02-09 13:06:09 · 1892 阅读 · 0 评论 -
一个基于 RabbitMQ 的可复用的分布式事务消息架构方案!
作者:Throwable博客园:https://www.cnblogs.com/throwable/p/12266806.html前提分布式事务是微服务实践中一个比较棘手的问题,在笔者所实施的微服务实践方案中,都采用了折中或者规避强一致性的方案。参考Ebay多年前提出的本地消息表方案,基于RabbitMQ和MySQL(JDBC)做了轻量级的封装,实现了低入侵性的事务消息模块。本文的内...转载 2020-02-07 10:05:45 · 977 阅读 · 0 评论 -
这一顿神操作!我把 3000 行代码重构成 15 行!
作者:马非码博客园:https://www.cnblogs.com/marvin/p/4133973.html如果你认为这是一个标题党,那么我真诚的恳请你耐心的把文章的第一部分读完,然后再下结论。如果你认为能够戳中您的 G 点,那么请随手点个赞。把三千行代码重构为 15 行那年我刚毕业,进了现在这个公司。公司是搞数据中心环境监控的,里面充斥着嵌入式、精密空调、总线、RFID的概念,...转载 2020-03-07 09:58:20 · 430 阅读 · 0 评论 -
Mysql高性能优化规范建议
作者:听风。博客园:cnblogs.com/huchong/p/10219318.html数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过32个字符临时库表必须以tmp为前缀并以日期为后缀,备份表必须以bak为前...转载 2020-02-05 09:46:06 · 790 阅读 · 0 评论 -
为什么我们做分布式使用Redis?
作者:姚登晏www.cnblogs.com/yaodengyan/绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里对 Redis 常见问题做一个总结,解决大家的知识盲点。1、为什么使用 Redis在项目中使用 Redis,主要考虑两个角度:性能和并发。如果只是为了分布式锁...转载 2020-02-04 19:54:22 · 935 阅读 · 0 评论 -
Git 如何优雅的回退代码?
作者:枕边书博客园: cnblogs.com/zhenbianshu/p/12018714.html前言从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 Linus 大神。出来混总是要还的,前些天就遇到了...转载 2020-02-03 09:59:11 · 1405 阅读 · 0 评论 -
为什么我使用了索引,查询还是慢?
作者:张飞洪地址: cnblogs.com/jackyfei/p/12122767.html经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考我的另外一篇。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Lin...转载 2020-01-16 15:01:54 · 949 阅读 · 0 评论 -
MyBatis 中的九种设计模式
虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementB...转载 2020-01-13 20:45:56 · 884 阅读 · 0 评论 -
微服务架构下的鉴权,怎么做更优雅?
作者:王海龙来源:微信公众号EAWorldhttps://mp.weixin.qq.com/s/x0CZpovseOuofTA_lw0HvA从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化,身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用,如何保证高效安全的身份认证?面对外部的服务访问,该如何提供细粒度...转载 2020-01-08 10:19:22 · 1102 阅读 · 0 评论 -
这 20 多个高并发编程必备的知识点,你都会吗?
转载自并发编程网 – ifeve.comhttp://ifeve.com/高并发编程必备基础/一、前言借用Java并发编程实践中的话”编写正确的程序并不容易,而编写正常的并发程序就更难了”,相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的,本文算是对多线程情况下同步策略的一个简单介绍。二、 什么是线程安...转载 2020-01-04 10:01:26 · 882 阅读 · 0 评论 -
一文带你了解 OAuth2 协议与 Spring Security OAuth2 集成!
OAuth 2.0 允许第三方应用程序访问受限的HTTP资源的授权协议,像平常大家使用Github、Google账号来登陆其他系统时使用的就是 OAuth 2.0 授权框架,下图就是使用Github账号登陆Coding系统的授权页面图:类似使用 OAuth 2.0 授权的还有很多,本文将介绍 OAuth 2.0 相关的概念如:角色、授权类型等知识,以下是我整理一张 OAuth 2.0 授权的脑...原创 2020-01-01 17:58:10 · 839 阅读 · 2 评论 -
知道这些 IntelliJ IDEA 实用小技巧,能让你少写 1,000 行代码!
前言工欲善其事必先利其器最近受部门的邀请,给入职新人统一培训IDEA,发现有很多新人虽然日常开发使用的是IDEA,但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀的IDE。 同时,在这次分享之后,本人自己也学习到了一些新的使用技巧,所以借着这次机会,一起分享出来。希望可以帮到一些人。基于的 IDEA 版本信息:IntelliJ IDEA 2018....转载 2019-12-31 09:27:52 · 861 阅读 · 0 评论 -
一文教你使用 Jenkins 设计多环境、多项目持续集成环境!
滴答的雨https://www.cnblogs.com/heyuquan/p/jenkins-multi-env-cicd-architecture.html自动化部署主要是为了解决项目多、环境多、持续集成慢、部署操作麻烦、手动操作易出错、自动化运维等问题。Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。目标:支...转载 2019-12-30 09:21:33 · 344 阅读 · 0 评论 -
一文带你了解强大的 Spring Security 架构原理!
作者:before31https://my.oschina.net/xuezi/blog/3126351本指南是Spring Security的入门,它提供了对该框架的设计和基本构建的见解。我们仅介绍了应用程序安全性的最基本知识,但是这样做可以解除使用Spring Security的开发人员所遇到的一些困惑。为此,我们会看一下使用过滤器(更通常是使用方法注释)在Web应用程序中应用安全...转载 2019-12-29 11:22:16 · 1559 阅读 · 2 评论 -
史上更全的MySQL高性能优化实战总结!
作者 :惨绿少年来源:http://clsn.io/clsn/lx287.html一、前言MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。今天给大家体验MyS...转载 2019-12-28 09:36:14 · 904 阅读 · 0 评论 -
高频使用的 Git 命令集合,看完自信 git push!
CRPERhttps://juejin.im/post/5de8d849e51d455808332166前言汇总下我在项目中高频使用的git命令及姿势。不是入门文档,官方文档肯定比我全面,这里是结合实际业务场景输出。使用的 Git版本:git version 2.24.0git log查看日志,常规操作,必备# 输出概要日志,这条命令等同于# git log --pret...转载 2019-12-27 09:24:05 · 818 阅读 · 0 评论 -
老生长谈的数据仓库 3 种建模方法,附猫眼娱乐数仓架构演进!
猫眼技术团队https://juejin.im/post/5d5be159f265da03970bbc3a数据仓库存在的初期,甚至没有数据仓库的时候,猫眼的日常需求报表和数据接口提供方式如图一:数据散落在企业各数据散落在企业各部门应用的数据存储中,它们之间有着复杂的业务连接关系,从整体上看就如一张巨大的蜘蛛网:结构上错综复杂,却又四通八达。在企业级数据应用上单一业务使用方便,且灵活...转载 2019-12-26 10:43:29 · 363 阅读 · 0 评论 -
知道这20个正则表达式,能让你少写1,000行代码
技匠https://www.jianshu.com/p/e7bb97218946正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升。正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码:var reg = /^(\...转载 2019-12-25 09:36:34 · 1034 阅读 · 0 评论