- 博客(24)
- 收藏
- 关注
原创 【说透区块链系列】区块链是怎么运行的?
上一次,我们聊到了区块链的概念及整个行业的发展过程,今天我想稍微深入一下,尽可能通俗地介绍一下:区块链到底是如何运行的?
2022-07-07 11:05:24
3421
原创 如何设计一个秒杀系统?
核心两个问题:并发读并发写秒杀整体架构:稳准快稳:系统架构高可用,保障活动顺利完成准:不超卖快:rt低,整体链路协同优化<–深化一下–>高性能:涉及大量秒杀的并发读和并发写,如何支持高并发?1.设计数据动静分离2.热点的发现与隔离3.请求的削峰与分层过滤4.服务端的极致优化一致性:核心:如何设计秒杀减库存方案高可用:planB兜底设计秒杀系统的5个架构原则:4要1不要1.数据尽量少1.1 用户请求数据能少就少,请求的数据包括上传给系统的数据和系统返回给用户
2022-05-18 10:40:39
3282
原创 最优雅的实现java参数校验的方式
缘起数据校验是我们日常开发过程中常做的工作,其目的性是为了提升我们系统的健壮性,举个简单的例子,我们要做一个创建用户的api接口服务,用户昵称是必填项,那么接口就需要对用户昵称进行非空校验。如果没填昵称抛出异常或者返回一些错误码。那么问题来了,一次调用可能有n多个参数需要校验,比如用户手机绑定的注册服务,入参如下所示:public class MobileRegisterDTO extends BaseDTO { /** * 手机号 */ private Strin
2022-05-07 14:41:25
2906
3
原创 最优雅的告别if-else方式(function、策略模式)
缘起在开发过程中,经常会遇到业务逻辑扩展的情况,如果在编码之初没考虑到扩展性,我们很容易在代码中通过大量if-else实现将请求路由到不同的逻辑中。随着需求场景的无止境迭代,会出现大量if-else和冗余逻辑,一段200的代码可能有80行if-else,维护成本十分高昂,这时候就需要使用一定的设计模式来进行重构了。这么说肯能有点抽象,举一个实际开发过程中遇到的例子;在开发内容生产加工链路中,期初内容类型比较单一,只有视频类型的内容以及对应的视频内容处理逻辑。随着业务的丰富,后续衍生出了图片、文本、短视
2022-04-29 17:03:09
545
原创 五月分享内容目录(关注收藏不迷路)
1.代码怎么写常用设计模式,代码编写优化的方式2.系统的设计方法论互动系统:网关、用户、动态、评论、榜单、抽奖、安全、流量分发交易系统:商品、订单、支付、退款、对账工具类:二方包、日志、统一返回值,pandora插件、maven插件监控运维体系如何建设3.面试经验-如何成为面霸基础八股文(java、中间件、网络等)如何讲好一个项目4.我的不足,后续规划...
2022-04-29 10:49:50
1511
原创 谈谈对faas的几点思考
前言最近在项目中使用到了fc-ginkgo来作为系统faas层的实现,初接触新领域,整理下这块的相关知识和自己的一些思考为什么会出现faasfaas全称function as a service,是基于servless架构下实现的无服务器服务的一种形式,谈到servless不得不提一下基础设施的发展历史Ecs -> docker虚拟机 -> servless从历史趋势看,基础设施的演变都是朝着敏捷开发,减少成本的方向优化servless为何而生在servless风靡的现况下
2021-07-20 14:36:17
342
原创 封装、抽象、集成、多态可以分别解决哪些问题
封装信息隐藏或者数据保护,类通过暴露有限的对外访问接口提供访问或修改的功能,现状问题,lombok太方便,其实不该使用的1.id,gmt_create2.钱包余额只会加减,不回设置如果不做访问限制,那任何代码都可以随意访问或者修改属性,灵活性高但是可控性降低,比如新人无意修改idpublic class Wallet { private String id; private long createTime; private BigDecimal balance; private
2021-07-04 18:08:55
233
原创 java面试宝典之数据库mysql
一、考察点1.联结1.1 联结的概念: 简单的说,联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。1.2 联结的分类注意:联结并不代表只有使用join关键字的才算是联结,where也算是联结的一种实现方式。1.2.1内部联结 内部联结也成为等值联结,它基于两个表之间的相等测试,基本实现方式由以下两种格式: 1.SELECT name,price FROM 表1 INNER JOIN 表2 ON 表1.id = 表2.id 2.SELEC..
2021-03-08 17:28:38
190
1
原创 Java面试准备之探究源码
摘要:之前虽然对集合框架一些知识点作了总结,但是想想面试可能会问源码,于是又大致研究了一下集合框架的一些实现类的源码,在此整理一下。一.集合框架二.深究实现类1.ArrayList源码实现 ArrayList内部维护了一个动态数组,如果没有显式的初始化的话,动态数组的默认容量是10,当数组容量已满时,每次将容量扩大至1.5倍加1。 ArrayList的remove、add、clear等方法的实现原理都是对内部的Object数组进行操作,需要注意的是,在add方法执行前,都会.
2021-03-01 20:31:59
350
原创 Java面试准备之JVM(java虚拟机)知识点
介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明程序计数器:看做当前线程所执行的字节码行号指示器。是线程私有的内存,且唯一一块不报OutOfMemoryError异常。Java虚拟机栈:用于描述java方法的内存模型:每个方法被执行时都会同时创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每一个方法被调用直至执行完成的过程就对应着一个栈帧在虚拟机中从入栈到出栈的过程。如果线程请求的栈深度大于虚拟机所允许的深度就报StackOverflowError, 如果虚拟机栈可.
2021-02-26 14:53:13
318
原创 java面试准备之集合框架(java集合必知必会)
集合框架Collection:List列表,Set集 Map:Hashtable,HashMap,TreeMapCollection 是单列集合 List 元素是有序的(元素存取是有序)、可重复 有序的 collection,可以对列表中每个元素的插入位置进行精确地控制。可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。可存放重复元素,元素存取是有序的。 List接口中常用类: Vector:线程安全,但速度慢,已被ArrayList替代。底层数据结构是数组结构ArrayL.
2021-02-25 19:37:34
382
原创 Java面试准备之Java基础
1.Java 语言的优点面向对象,平台无关,内存管理,安全性,多线程,Java 是解释型的2.Java 和 C++的区别多重继承(java接口多重,类不支持,C++支持)自动内存管理预处理功能goto语句(java不支持)引用与指针。在Java中不可能直接操作对象本身,所有的对象都由一个引用指向,必须通过这个引用才能访问对象本身,包括获取成员变量的值,改变对象的成员变量,调用对象的方法等。而在C++中存在引用,对象和指针三个东西,这三个东西都可以访问对象。其实,Java中的引用和C++中的指针
2021-02-25 14:11:42
209
3
原创 qq音乐排行榜数据爬取
废话不多说,直接上教程qq音乐排行榜链接:https://u.y.qq.com/cgi-bin/musicu.fcg?format=json&inCharset=utf8&outCharset=utf-8platform=yqq.json&needNewCode=0&data={“detail”:{“module”:“musicToplist.ToplistInfoServer”,“method”:“GetDetail”,“param”:{“topId”:26,”offs
2021-02-24 19:45:51
2816
8
原创 如何创建最优的线程池?
目录线程池有哪些配置如何创建最优线程池1.根据经验和通用共识,按照需求的顺序创建相对合理的参数2.根据度量指标进行调整对于每个服务端开发工程师,在日常开发中肯定会用到多线程去提高任务执行效率,谈到多线程,每个人都能熟练的给出几种多线程的使用方式。在几种方式中,使用线程池管理线程是比较规范的方式,可以减少在创建和销毁线程上所花的时间,充分利用系统资源带给用户更快速的相应,创建一个线程池来处理并发任务看起来简单,其实不然,线程池的参数是非常有讲究的,初学者常犯的错误就是线程要么阻塞忙死,要么闲死,讲到这里不
2021-02-19 00:11:08
713
原创 面了BAT 大厂,我总结了他们会问的Redis基础知识
一、缓存的常规使用流程传统行业时代,缓存使用还没普及,当时的互联网产业并不发达,很多传统行业的公司并发量并不高,靠着几台ecs及其搭建的集群对外提供分布式服务,不使用缓存一样能够把项目运行的很好。后面互联网快速兴起,项目的并发量越来越大,原有技术已经远远不能满足当下的产品需要,所以很多项目开始快速迭代升级,对于缓存的使用也就全面进入了互联网行业。随着缓存使用的普及,也暴露出一些使用上的问题,比如缓存穿透的解法有哪些,如何避免缓存雪崩效应?首先我们来看一下一般系统是如何使用缓存的。当系统收到一个查询请求时
2021-01-26 00:13:50
215
原创 深度剖析如何建设数据中台
一、数据中台发展历史1.服务端数据 可以实时产生数据,做一些简单的数据分析,缺点是数据一般不会备份,比如用户数据一般只会保存一份。2.离线数据,数字仓库诞生 数据仓库是企业管理和决策中,面向主题的、与时间相关的,不可修改的数据集合。随着上个世纪90年代的商业智能概念的兴起,越来越多的企业重视基于数据做出的决策,基于服务端实时数据无法实现商业分析,在原有基础上,提出了数字仓库的概念,用于存储历史快照数据。3.大数据平台随着业务飞速发展,随之产生的用户行为以及各种领域沉淀下来的数据呈几何倍数增长
2020-12-17 09:29:21
1154
原创 cubic与bbr性能实测
自1988年第一代TCP算法Tahoe诞生依赖,相继出现了reno、new reno、sacks、cubic、bbr等多种拥塞控制算法,在较常见的有reno、cubic以及linux 4.9以上内核搭载的bbr算法,在ubuntu 16.04包括之前的系统版本之前,默认使用cubic算法,在19.04之后的版本已经切换为默认bbr算法了,以这两大经典算法为例,分析一下优劣。1.cubic谈到c...
2020-04-04 13:56:30
5982
2
原创 设计思想之六大设计原则
设计思想之六大设计原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则六大设计原则总结单一职责原则定义:有且只有一个原因引起类的变更。比如用户类中定义了用户属性和行为,应该把用户信息抽取成一个DO,行为抽象成Biz接口方法。歧义点:有时为了适配单一职责原则,会将老接口一分为二,通过一个实现类去实现两个接口,可能会觉得实现类的引起变化原因有两个,需要注意的是我们是面向...
2020-03-15 00:44:40
549
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人