自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 动态表单技术难点与方案

如何解决索引问题一. 唯一性索引问题1. 预先创建50列首先每列都单独建个普通索引然第49~50列, 预先建一个唯一性索引第46~48,预先建一个三列唯一性索引

2021-12-09 10:39:29 383

原创 antlr4权威指南

2021-11-28 10:57:00 599

原创 Java代码质量工具

https://github.com/uber/NullAwayhttps://github.com/google/error-pronehttps://github.com/google/dagger

2021-11-22 16:04:30 281

原创 雪花算法改进 - butterfly 发号器 IDGenerator 分布式id

ppt分享 · 语雀

2021-11-16 14:05:35 290

原创 SpringCloud概述

最大区别: 抛弃Dubbo的rpc通信, 采用HTTP的REST方式选择REST性能会变差, 但是避免了RPC的问题REST相比RPC更为灵活, 服务提供方和调用方的依赖只依靠一纸契约, 不存在代码级别的强依赖, 这在强调快速演化的微服务环境下, 显得更加合适...

2021-11-14 16:59:39 938

原创 docker入门

概述之前的虚拟机技术容器化技术安装命令镜像命令容器命令操作命令Docker镜像容器数据卷DockerFileDocker网络原理IDEA整合DockerDocker ComposeDocker SwarmCI/CD jenkins...

2021-10-30 11:40:32 65

原创 RocketMQ

浏览官网hhhh

2021-08-07 23:35:42 69

原创 B端与C端产品差异

1 目标用户B端C端理性感性注重效率: 愿意花成本去学习系统使用注重体验: 希望简单易用, 消耗最少学习成本上手操作;角色分多种 决策者: 关注企业的总体效率管理者: 关注管理职责和工作成绩员工: 是否简单易上手, 能否减轻工作负担角色单一2 使用场景B端C端固定时间: 根据工作流程, 职责确定, 持续时间长, 有规律性碎片化: 时间短, 随机性强工作场景使用: 办公室, 沉浸生活场景使用: 家里, 床上, 地铁上, 很难沉浸

2021-07-03 16:23:19 145

原创 git常用命令

列出所有文件删除和新增的行数git log --pretty=tformat: --numstat粗略估计文件总数git log --pretty=tformat: --numstat |wc -l粗略估计总共add了多少行, 总共del了多少行, 以及当前有多少行git log --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s,

2020-12-14 20:30:29 321

原创 Spring

Spring的核心模块Spring的切面编程Spring的数据访问与集成Spring的Web组件Spring的通信报文Spring集成测试Spring集成兼容各模块之间的依赖关系

2020-11-24 08:57:41 82

原创 系统设计 - 大规模微服务稳定性保障实践

原创: 字节跳动 高威微服务的挑战 & 引言微服务相比单体应用, 整体复杂度更高, 成功的实施无法一蹴而就过程中基于传统服务框架和Service Mesh技术构建的微服务可能并存单一服务可能同时运行于不同数据中心的物理机, VM和容器之上技术栈和运行时的异构增加了微服务的运维成本, 并可能对敏捷交付产生影响为了应对以上挑战, 需要从研发流程和基础设施维度审视微服务生命周期稳定性保障需要解决哪些关键问题, 以及如何建设相应的配套设施平台实施落地的挑战...

2020-11-17 00:01:18 242

原创 系统设计 - 秒杀系统 偏后端

难点高并发秒杀在线人数都是10w起的,如此之高的在线人数对于网站架构从前到后都是一种考验。超卖任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难题。...

2020-11-14 18:53:52 120

原创 系统设计 - 会话管理 / 单点登录 SSO

背景在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便。但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录,而且每个系统的账号都不一样,这对于运营人员来说,很不方便。于是,就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

2020-11-14 16:08:24 294

原创 系统设计 - 短链接系统 short url

参考文章:https://hufangyun.com/2017/short-url/背景市面上有很多提供短址服务的网站你有没有发现,我们的任务中出现长 URL 就会比较麻烦?如果有一个短址生成器就好了做一个短链接生成器,可以将一个长链接缩短成一个短链接本文记录了开发短网址系统的整个过程,包括初期的算法调研、模块设计、数据库设计、功能扩展等。什么是短链接 ????就是把普通网址,转换成比较短的网址。比如:http://t.cn/RlB2PdD这种,在微博这些限

2020-11-13 23:27:31 243

原创 JAVA - 垃圾回收 GC ( Garbage Collector ) & GC tuning

YoungGC - Card Table主要用于分代模型中帮助垃圾回收。为什么需要 card table ?寻找存活对象并不是一件容易的事。从一个GC root对象寻找,可能被Old区对象引用,这个Old区对象又被Eden区对象引用,那么判断Eden区对象是否存活就需要遍历整个Old区存活对象看是否被Old区对象引用。这样的话每进行一次YGC就要扫描整个Old区。所以JVM内部,将内存区域分为一个个的card,对象存在一个个的card里。当老年代某个card中的对象指向了...

2020-11-11 22:26:17 184

原创 分布式系统 - 分布式锁

MySQL乐观锁versionzookeeper分布式锁性能较差, 适合写mysql时候用redis分布式锁性能较高, 但是有单点问题单节点redis实现分布式锁有单点问题, master挂了, 某个slave升级成为master之后 , 是没有之前的key的注意锁的续期红锁 RedLock...

2020-11-11 19:01:41 109

原创 ElasticSearch - 底层原理

测试数据"index": false 不生成倒排索引"doc_values": false 不生成正排索引正排索引(doc values)VS 倒排索引:概念:从广义来说,doc values本质上是一个序列化的列式存储。列式存储适用于聚合、排序、脚本等操作,所有的数字、地理坐标、日期、IP 和不分析(not_analyzed)字符类型都会默认开启。 特点:倒排索引的优势 在于查找包含某个项的文档,相反,如果用它确定哪些项是否存在单个文档里。 优化:es官方是建议,es...

2020-11-09 20:13:19 204

原创 ElasticSearch - 查询语法

debug: 分词分析器GET /_analyze{ "analyzer": "standard" ,"text": "xiaomi nfc zhineng phone"}返回"tokens" : [ { "token" : "xiaomi", "start_offset" : 0, "end_offset" : 6, "type" : "<ALPHANUM>", "position" : 0 ...

2020-11-09 10:14:21 166

原创 ElasticSearch - 如何做到高可用

ES Node类型1. Master:主节点,每个集群都有且只有一个尽量避免一个节点既是Master同时又是数据节点2.voting:投票节点node.voting_only = true(仅投票节点,即使配置了node.master = true,也不会参选, 但是仍然可以作为数据节点)3. coordinating:协调节点每一个节点都隐式的是一个协调节点,负责负载均衡4.Master-eligible node ( 候选节点 )5.Data node ( 数据节点 ...

2020-11-08 11:48:50 1228

原创 ElasticSearch - 常用入门命令

创建product索引PUT /product?pretty删除product索引DELETE /product?pretty插入数据PUT /product/_doc/1{ "name" : "xiaomi phone", "desc" : "shouji zhong de zhandouji", "price" : 3999, "tags": [ "xingjiabi", "fashao", "buka" ]}PUT /prod..

2020-11-08 10:08:07 92

原创 ElasticSearch - metadata命令

_Cat系列命令/_cat/allocation #查看单节点的shard分配整体情况/_cat/shards #查看各shard的详细情况/_cat/shards/{index} #查看指定分片的详细情况/_cat/master #查看master节点信息/_cat/nodes #查看所有节点信息/_cat/indices...

2020-11-08 10:06:47 268

原创 ElasticSearch - 安装ES, ES-head插件, Kibana

Elasticsearch安装1. 访问官网, 下载https://www.elastic.co/cn/elasticsearch/ES的最新版本https://www.elastic.co/cn/downloads/past-releases ELK任意历史版本的下载页2. 启动./elasticsearch -d 后台运行模式3. 也可以把bin目录配置到PATH环境变量里, 方便在任意目录直接执行启动命令vi ~/.bash_profilee...

2020-11-08 10:05:13 112

原创 ElasticSearch - 核心概念和原理

Lucenejar包, 帮我们创建倒排索引, 提供了复杂的API如果用Lucene做集群实现搜索, 会有哪些问题节点一旦宕机, 数据丢失, 后果不堪设想, 可用性差 自己维护, 麻烦 ( 自己创建管理索引 ), 单台节点的承载请求的能力是有限的, 需要人工做负载 ( 雨露均沾 )倒排索引mysql的做法ES中倒排索引的做法TF / IDF 算法...

2020-11-07 23:23:53 125

原创 分布式系统 - CAP & BASE

这里先写一部分另一部分待补充参考视频:070-亿级流量多级缓存高并发系统架构实战六(1)CAP理论CP 不同空间中的数据, 如果要求他们所有状态一致, 则必然不在同一时间AP 不同空间中, 如果要求同一时间都可以从任意的空间拿到数据, 数据的状态必然不一致CA 不同空间的数据, 如果要求任意时间都可以拿到状态一致的数据, 那么空间数必然为1 ( 单节点 )著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保

2020-11-05 12:08:00 90

原创 系统设计 - 微服务拆分

单体架构的优点架构单一, 容易维护开发, 测试, 部署都比较便捷为什么要拆成微服务单体架构的缺点复杂度高部署慢, 而且体积很大, 不利于发布阻碍新的技术创新什么是微服务微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法, 每个服务运行在自己的进程中, 服务间通信采用轻量级通信机制, 通常用http资源的api来实现, 这些服务围绕业务能力构建并且可通过全自动部署机制独立部署, 这些服务共用一个最小型的集中式的管理, 服务可用不同的语言开发, 使用不同的数据存储技术微服

2020-11-05 11:16:41 144

原创 系统设计 - 亿级流量多级缓存

设计之初, 一定要问这两个问题高并发 到底有多高, 这个是很不一样的数据一致性的要求有多高削峰 那么做削峰处理的服务(nginx), 必须能抗住最高峰值的流量如果并发量高于5w, 那么一台nginx扛不住1. 通过划分域名, 分流主站的流量down.qq.com 由down服务器集群去承担down业务的流量games.qq.com 由games服务器集群去承担games业务的流量2. 如果games.qq.com流量依然很高N个nginx + M个tomcat依然扛不住那就用C

2020-11-03 19:54:36 164

原创 设计模式 - 概览与总结 & 面向对象6大原则

1. 设计模式列表1.1 创建型模式1.1.1 Abstract Factory1.1.2 Builder1.1.3 Factory Method1.1.4 Prototype1.1.5 Singleton1.2 结构型模式1.2.1 Adapter1.2.2 Bridge1.2.3 Composite1.2.4 Decorator1.2.5 Facade1.2.6 Flyweight1.2.7 Proxy1.3 行为型模式1.3.1 Chain of Responsibil

2020-11-02 14:20:32 61

原创 设计模式 - 状态模式 ( State ) & 有限状态机 ( FSM Finite State Machine)

状态模式 和 有限状态机 并不完全是一回事状态模式是一种设计模式, 根据状态决定行为, 更多关注的是在某状态下, 行为Action是什么而有限状态机主要关注于: 状态之间是如何迁移和变化的状态模式根据状态决定行为老规矩, 先来举一个原始的例子public class MM { String name; MMState state; private enum MMState {HAPPY, SAD} public void smile() { .

2020-11-02 13:54:08 218

原创 设计模式 - 备忘录模式 ( Memento )

记录对象的某个瞬间, 类似照片记录快照 ( 瞬时状态 )存盘一般是用序列化存盘的时候, 把大对象序列化, 存在硬盘或内存里load的时候, 再把它反序列化回来就行

2020-11-02 11:39:37 120

原创 设计模式 - 原型模式 ( Prototype ) 平时用的不多

java中的原型模式自带 -> Object.clone()实现原型模式需要实现标记型接口Cloneable一般会重写clone()方法一般用于一个对象的属性已经确定, 需要产生很多相同对象的时候或者一个对象的属性过多, 可以省去大量setXXX的代码需要区分深克隆与浅克隆对于属性过多的对象, 也可以考虑用builder模式, 原型模式用的不多浅克隆只在Person类中加一个clone方法, 不在Location中加clone方法改了p1对象的某个属性, 发现p2的这个属性.

2020-11-02 11:04:31 164

原创 设计模式 - 命令模式 ( Command ) 结合cor实现undo

用于封装命令, 并实现回滚别名: Action / Transaction与Composite模式配合使用, 实现多个命令组成宏命令与责任链模式配合使用, 实现多次undo对于每一步的执行, 都要有办法回滚rollback / undopublic abstract class Command { public abstract void doit(); // exec run public abstract void undo(); // 回滚}public class

2020-11-02 10:06:38 175

原创 设计模式 - 桥接模式 ( Bridge ) 平时用的少

分离抽象与具体用聚合方式 ( 桥 ) 连接抽象与具体主要目的是抽象的也能发展, 不同的类去继承抽象类具体的也能发展, 不同的类去继承具体类举个GG追MM的例子原始代码public abstract class Gift {}public class Book extends Gift {}public class Flower extends Gift {}public class MM { String name;}public class GG { pub.

2020-11-02 09:40:45 77

原创 设计模式 - 适配器模式 ( Adapter / Wrapper )

包装器 / 接口转换器常见的例子电压转接头java.iojdbc-odbc bridge ( 不是桥接模式)ASM transformerJava只能调用JDBC接口, 而SQLServer提供的是odbc, 这中间有一层转换,就是适配器模式: JDBC-ODBC-BridgeBufferedReader不能直接调用InputStream, 所以中间搞了个Adapter(reader)用于适配java.io的这种模式也能称作装饰器模式, 设计模式就是这样, 有时候是混杂的误区

2020-11-02 09:03:27 142

原创 设计模式 - 构建器模式 ( Builder )

定义分离复杂对象的构建和表示同样的构建过程可以创建不同的表示无需记忆, 自然使用举个地形构建器的例子://地形构建器public interface TerrainBuilder { TerrainBuilder buildWall(); // build墙 TerrainBuilder buildFort(); // build暗堡 TerrainBuilder buildMine(); // build地雷 Terrain build();}3个b

2020-11-02 08:40:43 107

原创 JAVA - Spring - SpringBoot概览

SpringBoot里面没有新技术AutoConfiguration 自动装配StarterActuatorSpringBoot CLI约定优于配置的体现maven的目录结构( 默认会以jar的方式打包 / 默认会有resources文件夹 )spring-boot-starter-web. 内置tomcat / resource/ {template/static }默认application.properties...

2020-11-01 15:26:59 68

原创 设计模式 - 深度分析代理模式 ( Proxy 静态代理 or 动态代理 )

定义为其他对象提供一种代理, 以控制对这个对象的访问代理对象在客户端和目标对象之间起到中介作用数据结构型设计模式适用场景保护目标对象增强目标对象静态代理显式声明被代理对象JDK动态代理的实现原理拿到被代理类的引用, 并且获取他的所有的接口(反射获取)JDK Proxy类重新生成一个新的类, 实现了被代理类所有接口的方法动态生成Java代码, 把增强逻辑加入到新生成代码中编译生成新的Java代码的class文件加载并重新运行新的class, 得到类就是全新类CGLib

2020-10-31 13:07:47 186

原创 设计模式 - 享元模式 ( FlyWeight )

1111

2020-10-30 12:04:19 65

原创 设计模式 - 组合模式 ( Composite )

树状结构专用模式比较简单, 两个典型的例子菜单栏列表里, 可以add子菜单栏和具体的菜单选项文件系统里, 一个目录下面, 可以add子目录或具体的文件和享元模式(FlyWeight 共享元数据)搭配可以参考举个目录和文件的例子:文件系统里有directory和file两种类型directory就是图中的Branch, file就是图中的Leaf, 他们都是Node类型的一个direcotry可以add(Node n)到List lists里, 也就是可以add另一个director

2020-10-30 12:03:51 83

原创 JAVA - 多线程 - ConcurrentHashMap源码级讲解

ConcurrentHashMap跟HashMap, HashTable的对比我们都知道HashMap不是线程安全的,所以在处理并发的时候会出现问题。而HashTable虽然是线程安全的,但是是通过整个来加锁的方式,当一个线程在写操作的时候,另外的线程则不能进行读写。而ConcurrentHashMap则可以支持并发的读写。跟1.7版本相比,1.8版本又有了很大的变化,已经抛弃了Segment的概念,虽然源码里面还保留了,也只是为了兼容性的考虑。先感受一下 JDK7 VS JDK8 版本间宏观上

2020-10-28 22:50:26 90

原创 JAVA - 多线程 - AQS ( AbstractQueuedSynchronizer )

公平锁 & 非公平锁共享锁 & 排他锁AQS的底层是state, 以及监控这个state的双向链表一个线程想要执行, 核心代码都是围绕state变量来的, 不管是公平的还是非公平的private volatile int state; // The synchronization state.非公平锁一上来直接抢state: 先看下state是不是等于0, 如果等于0 , 就用compareAndSet的方式 ( 这个时候有可能其他的线程读到的也是0, 而且先一步抢着了 .

2020-10-27 23:09:05 57

空空如也

空空如也

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

TA关注的人

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