自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

柏修的专栏

人生就是一场修行

  • 博客(225)
  • 资源 (6)
  • 收藏
  • 关注

原创 SaaS 电商设计 (十) 记一次 5000kw 商品数据ES迁移 (详细的集群搭建以及线上灰度过程设计)

行文总结了一次线上的由技术侧发起的一起ES集群数据迁移过程.从集群搭建到线上灰度以及灰度切换之后的资源释放的这样一个完整技术方案上线的闭环过程.欢迎大家一起讨论交流. 最后也放上了一个比较传统可能大家仍在使用的使用api封装.持续更新中.后续将更新Restful,欢迎大家的关注,交流.赠人玫瑰 手有余香 我是柏修 一名持续更新的晚熟程序员您的鼓励是我更新的最大动力↓↓↓↓↓↓。

2024-03-31 21:56:05 1198

原创 SaaS 电商设计 (九) 动态化且易扩展的实现购物车底部弹层(附:一套普适的线上功能切量的发布方案)

如上是大概的技术方案,整体的迭代过程中仅仅是完成了功能的改造.能感受到整体的改动还是非常大的.尤其是作为技术侧的一个优化.再加上本身是一个黄金流程中非常重要的一环.本身来说稳定性是第一位的.所以这里关于升级发布的流程也做一个大致的介绍.要知道,如此高并发的场景出了一个问题,不用问就是要被拖入**“广进”**的,小伙子你也不想的吧.机房.摘除001机房流量.这样保持尽量长的时间(12h),利用线上的用户流量做一次灰度流量验证.(一般的功能验证),其实如果是较大的功能且功能较大,可以在整体之前加一个内部。

2024-03-02 00:54:42 1028

原创 SaaS 电商设计 (八) 直接就能用的一套电商商品池完整设计方案(建议收藏)

以上主要是本次商品池相关的内容设计,涵盖了从业务分析到业务流程分析以及具体的用例分析以及最后的核心代码实现,具体的dbmapping结构参考gitrepo,后续将持续完善这个工程.赠人玫瑰 手有余香 我是柏修 一名持续更新的晚熟程序员您的鼓励是我更新的最大动力↓↓↓↓↓↓。

2024-02-05 20:50:07 812

原创 SaaS 电商设计 (七) 利用 Spring 扩展点 ImportBeanDefinitionRegistrar 实现 toB 系统对接(附源码)

未完待续,以上 基于搭配@Import的形式以及自定义注解的方式来实现了.toB场景中,如何使用一次服务调用做到的多次业务客户不同业务逻辑适配.后续还会继续迭代更新,做到通过数据库配置不同业务逻辑服务的形式来实现业务配置可配,流量超时配置.以及动态加载的能力.赠人玫瑰 手有余香 我是柏修 一名持续更新的晚熟程序员您的鼓励是我更新的最大动力↓↓↓↓↓↓。

2024-01-26 23:21:49 722 2

原创 记一次 stackoverflowerror 线上排查过程

区别Error与Exception尽量不使用,少使用数组式使用.如String… args.Integer… args .即使要用,也尽量不要用Object… args .避免调用错误.在做技术优化时,尽可能评估影响,对线上抱有充分的敬畏.慎之又慎.如没有特别的收益,可不上线.上线也要保证每一行改动与本次受影响的代码做到测试修改代码找到所有find usage ,避免出现错改,漏改.可以利用自带IDE的工具 做到.

2024-01-19 18:21:55 1118 1

原创 SaaS 电商设计 (六) 实现 id 生成器本地化生产 (附源码)

目前梳理系统中存在以下几种生成的场景.财务在生产财务单的时候,获取财务单,满足分布式场景下能够获取全局即可.:订单系统在进行外部提单过程中,需要将生成的订单号与外部的支付平台做对接.在具体开发调试过程中出现这种情况.客户需要支持私有化交付.我们在的开发环境部署联调时,已经与外部的支付平台进行了对接.完成联调结束后.在客户的私有化环境中再次进行测试回归出现了,出现了因为订单号重复导致了支付失败的场景.商品系统在生产具体的形式上有几种业务侧的诉求.现有的不同系统中存在不同的。

2024-01-10 11:38:41 1003 1

原创 SaaS 电商设计 (五) 私有化部署-实现 binlog 中间件适配(附源码)

抽象。

2023-12-12 17:07:22 1426 1

原创 SaaS 电商设计 (四) 谈一谈电商系统高并发多耦合上下游的系统压测怎么做

大厂完整的高并发系统压测流程,帮你梳理,值得收藏.

2023-11-13 17:23:01 194

原创 SaaS 电商设计 (三) 电商黄金流程(商详,购物车,提单)梳理,持续更新(建议收藏)

业务目标:完成多业态,多渠道的数字化运营自有业务: O2O,B2C,B2B2C,S2B2b平台业务:POPB2c,POPB2b,POPS2B2b**O2O:**全称Online to Offline.泛指的线上线下的业务融合.这种的情况分为两种情况,第一种通过线上的数字化运营引导线上用户线下消费;第二种通过线下的运营推广,引导用户线上消费.我们常见的比较多就是美团外卖.淘票票等.我们通过线上的APP进行外卖点单,电影院线上购票.线下进行外卖自提或者配送.电影票核销等.第二种情况我们并不多见,能想到的就

2023-10-06 17:39:44 755

原创 SaaS 电商设计 (二) 私有化部署-缓存中间件适配

持有抽象cacheClient的引用.并生产决定具体使用哪一个client抽象client 对象中常见的方法和属性.目前是适配了三个比较常见的client .JimDBCacheClient(XX公司自研产品),RedisCacheClient(Redis产品),LocalCacheClient(本地缓存目前是简单的Map版)

2023-06-05 20:46:29 935

原创 记一次多线程导致 CPU 飚高以及排查过程

收到系统频发的cpu超过90%的告警.虽然是在非线上环境出现.接到告警后第一反应还是去重启了机器,重启后cpu如期的下降了下来.以为能高枕无忧,不过一会儿还是收到了告警.

2023-01-30 17:06:12 3743 2

原创 SaaS 电商设计 (一) 如何设计一套适应多规格的商品服务

Standard Product Unit(标准化产品单元),一种商品,各种规格集合,如:RedMi K50;Stock Keeping Unit(库存量单位),也称单品,一种商品的具体规格,如:一部 雅黑 8G+128G 的RedMi K50手机.规格项颜色#版本#购买方式 就是商品的具体规格项.规格值颜色=>雅黑.版本=> 8G+128G 就是商品的具体规格值。

2022-10-10 18:42:06 1734 3

原创 2021 回头看看这一年

一、序一个对2021年的流水序言。 关键词:# 疫情 # # 国家 # # 担当 #    终究2022还是在疫情的笼罩下开启了,2021年尾里有这样那样的疫情突发。有新闻里令人感动的流调行程卡故事的寻子旅程,背后的故事让人辛酸。当然除了这样辛酸的故事也有暖心无比的感动。2021年7月下的河南灾区,鸿星尔克定向捐赠5kw物资,冲向大众眼球的并不是5kw的捐款,而是在事情背后,一个民营企业在经历2020年亏损2。2亿元后的善举,一个作为民营企业的担当。诸如此类还有孟晚舟归国,也让我们

2022-01-29 16:47:40 720 1

原创 LeetCode 两数之和(1)

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。力扣 地址: https://leetcode-cn.com/problems/two-sum拿到题的第一眼马上能想到的方法通过两层遍历得到对应的下标数据.这样下来最坏的时间的时间复杂度是o(2n).先看这种解法.public static

2021-10-25 22:09:02 481

原创 Java进阶(三)synchronized 的加锁过程

*java 1.8 以上.64位机器.**synchronized 在1.6 之前通过monitor 指令来实现线程同步执行,重量级实现。相比1.6 ,1.8版本后,通过锁升级或者说锁膨胀实现了在一些场景下的优化。是有一个前提的就是在并发场景并不是所有的线程都是竞争执行,大多数场景下都是交替执行或者说是没有多线程执行,你写了一个sync 但是只有一个线程。总结如下:启用偏向锁的场景下一个线程进入同步块,为偏向锁同时记录当前线程Id;

2021-08-15 21:11:55 1001 2

原创 Java NIO(五)图解 Netty 服务端启动的过程

一.启动概述上文了解了整体Netty常用的核心组件,并且对比了传统IO模式。在对比过程中,找到了传统IO对应Netty中是如何实现的。最后我们了解到在netty中常用的那些组件。本文在了解下这些核心组件的前提下,进一步了解组件如何在整个服务器启动过程如何被创建,如何组件之间配合来使用。首先也是先了解下大概服务端的启动过程,并且在了解过程中我们带着自己的问题去在学习过程中探寻答案。1.1 启动概述1.2 启动问题0.netty服务端启动是如何设置非阻塞模式的?1.服务端启动后事件是如何注册到s

2021-06-13 15:09:20 1544 4

原创 Java NIO(四)Netty 核心组件

一.前言在介绍NIO 核心组件之前,先了解下比较常见的socket编程客户端和服务端的模式。1.1 服务端1.1.2 Server 服务端入口import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server { private ServerSocket SERVER=null; private Integer PORT; publ

2021-05-30 18:14:10 523 4

原创 Java NIO(三)手写自己的第一个tomcat

一.什么是servlet为防有些读者忘却了当时大学老师在讲J2EE的场景,简单做个回忆杀.servlet 是JavaEE的web规范之一,简单来说就是一个定义了处理网络请求规范.而具体到代码来说是个接口.定义了这样几个方法:initdestoryservicegetServletConfiggetServletInfo那就是说所有[JAVA]来处理网络请求的家伙都需要继承实现我,不然你什么网络请求都别干了.那就是如下这张图.1.1 为什么要定义标准接口自己可以不可以写,可以,每个

2021-05-16 20:55:03 513 2

原创 Java NIO(一)NIO入门-你需要知道的网络通信要点

网络通信基础一.数据传输流程上图描述了应用数据从计算机A到计算机B的大致流程.图中网络传输这一步将是我们着重将要讨论的部分.网络可以大体分为网络协议与网络物理设备.二.TCP/IP五层模型详解计算机之间的通信有一套标准规则才能够进行通信,这一套标准规则称之为互联网协议.从不同的角度分为如下几种每一层常用的设备对应关系如下2.1 物理层功能:为数据端设备提供传送数据通路、传输数据。说白了就是给数据链路层传送和接收比特流.让数据链路层安心的处理比特流,不同媒体之间的通信我帮你搞好了兄弟.

2020-07-05 18:54:57 489

原创 MySQL(四)事务的隔离级别及MVCC实现

一.概念事务就是一组原子性的sql查询,或者说一个独立的工作单元.1.1 原子性在事务执行的过程中要么全执行,要么全部执行失败示例:小明的总余额为1000,小明从银行转账200元钱给小明的儿子,整个行为可以视为一个事务;如下概要三个步骤:1.判断账户余额是否大于2002.从当前余额扣减2003.在小明儿子的账户增加余额200如上可视为一个事务,要么成功,要么失败.如第三步失败,则回滚所有操作.1.2 一致性数据库总是从一个一致性的状态转换到另外一个一致性的状态如上的例子中还

2020-06-07 18:06:48 376

原创 深入学习 JIT

##一.jit全称:just in time compiler.java 即时编译器.通过监测jvm在解释运行过程中代码执行的频率.将认定的热点代码通过优化直接编译为机器代码并保留下.当再次执行时直接运行相应代码.###1.1知识回顾这里其实需要从代码的运行来讲.我们都知道cpu只能识别机器码.而诸如c++,java都是比较接近人类语言的高级语言.c++在执行过程中,直接可以编译得到机器可以直接运行的.但在实际的编程过程中需要考虑平台cpu架构[x86与x64]的适配.即使得到编译后的二进制文件

2020-06-01 01:35:29 323

原创 Java NIO(二)NIO 入门简介

      在正式学习NIO这部分之前有几个常见的疑问需要了解清楚。什么是同步,异步,阻塞,非阻塞?一次正常的IO操作分为两个阶段 1.发起IO 2.执行IO如上图:当发起IO请求时,如果当前线程需要一直等待结果。那么就可以认为当前是同步。反之,当前线程就可以认为异步。搭配一个经典例子:隔壁老王去烧水,老王一直不放...

2019-06-23 15:45:17 433

原创 Python (三)Python 类和函数

一.函数常见的函数定义如下:def function_name(args): 函数体function_name(args)#调用示例# functiondef hello_world(): print("hello_world")hello_world()1.参数a.定义参数默认值# 可以在定义函数的时候指定参数默认值def desc_pet(pet_name...

2019-01-27 17:53:19 573

原创 Python (二)Python 数据类型

一、代码规范    整体遵从PEP8规范,大体上是空格和回车换行这两种要求。常见的例如:类class与import引用之间的代码是两个换行,函数之间也是两个换行,在参数之间的逗号之后需要有一个空格。具体的参见:PEP8规范。开发过程中作为开发者往往想能够专注于代码的开发,实际上可以借助于代码格式化插件来处理,

2019-01-19 18:57:45 430 1

原创 2018年度总结-修行在路上

前言       2018年可能还有几个小时就要过去了,回想一下今年,虽然作为一个屁民,但也是真真实实的经历这些,简单的做一个回顾吧。永远都在今年头条新闻的就是特朗普的特立独行,中美的贸易战,直至演化为对中兴、华为的制裁。房地产全年的各种限购令,各大城市人才计划的“抢人大战”。作为最近几年最冷的“冬天”,尤其在互联网行业,...

2018-12-31 20:11:15 761 2

原创 Java 进阶(二)synchronized 使用

一.synchronized基本介绍在多线程的应用程序中,经常会遇到这样的场景。多个线程竞争同一个资源,最后需要一些错误的,不可预见的结果。所以我们就需要这样一个同步的方法来确保在多线程操作时,在某一个时刻仅仅只有一个线程来操作这个方法。Java 在基于JVM的基础上提供了这样一种方式,在需要进行同步操作的方法,对象,代码块,对象对应的类上使用一个关键字synchronized。这样在多线...

2018-08-11 23:47:37 546

原创 Python (一)Python 入门概述

一、Python的一些特点通俗易学相比c语言晦涩难懂[至今仍搞不懂,为什么各大高校纷纷使用c语言作为计算机相关专业的入门语言,no comment],python更为的接近人类的语言。就这么说吧,如果你的英语不错,那么基本的python代码你都能够看懂。胶水语言个人觉得这可能是python近年来兴起的最为重要的原因了。python底层是c来编写的,能够很方便的调用c或者是c plu...

2018-04-22 18:13:55 6629 1

原创 Docker (二)Docker 安装与常见命令

一、安装yum install -y epel-release #安装epel软件源yum install docker-io # 安装dockerchkconfig docker on # 加入开机启动service docker start # 启动docker服务二、常见命令1.镜像管理搜索镜像 docker search + name获取镜像 docker pull查看镜像

2017-06-30 22:24:49 1258 1

原创 Docker (一)Docker 入门

1. 什么是docker  Docker 一个基于go语言开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到的 Linux 机器上,也可以实现虚拟化。  为什么要使用docker?在没有使用docker之前,代码在开发到生产这个过程中往往需要经过一系列的环境的搭建以及数据的准备。例如:部署安装生产环境的的redis集群环境,在这之前需要ruby的底层环境等其他众多

2017-06-18 20:21:00 1741

原创 Java进阶(一)常见多线程概念汇总及实例演示

一、什么是线程和进程进程:1.操作系统结构的基础 2.操作系统进行资源分配和调度的独立单位线程:进程中独立运行的子任务,程序的执行单元。例如:在启动jvm 之后,相当于启动一个系统进程。而jvm除了在执行java程序的main方法的同时,肯定还在执行着垃圾回收。这里的main方法以及后面的垃圾回收都相当于多个线程。二、多线程技术目的cpu是运算和控制的中心,在cpu运行过程中,同一时刻只能运行

2017-05-03 21:59:32 1206

原创 RocketMQ (二) RocketMQ 4.1.0 安装与入门实例

一、安装环境:Linux version 2.6.32-573.el6.x86_64RocketMQ 4.1.0java 1.8maven 3.3.9 步骤:1.下载源代码并编译git clone https://github.com/apache/incubator-rocketmq.git mvn clean package install -Prelease-all

2017-04-21 21:25:14 7093 3

原创 RocketMQ (一) 认识JMS (Java Message Service)

一、简介Java Message Service 是一种允许应用程序创建、发送、接受和读取消息的Java API 。二、JMS 特点大致总结了一下JMS有以下几个特点异步通信 低耦合高可用这几个特点之间也是相辅相成的,异步就能够一定程度上决定了低耦合。异步的操作方式,就能够极大的去缓冲同步操作带来的阻塞问题。三、JMS 模型1.Point-to-Point 点对点模型在点对点消息模型中,由消

2017-04-20 21:16:07 4093 1

原创 从数组、链表到集合

一、数组概念使用连续的一块内存空间保存,长度在初始化时确定。时间复杂度访问第n个元素时,时间复杂度为O(1);当访问某个特定的元素时,时间复杂度为O(n); 怎么理解这两个时间复杂度不一致的情况,举个例子String[]strings=newString[]{"1","2","3"}; System.out.println(strings[0]); for(Stringst

2017-03-10 11:37:51 3250 1

原创 详解 HTTP与HTTPS

前言 通俗来讲,协议就是协定商量之后的一套规则。打个比方来说,在工作中每个公司都有一个数据库命名原则,例如:禁止大写、驼峰命名等。这个规则就是可以理解为协议,只要按照这个数据库协议来就知道如何来给数据库命名。当新员工过来只要执行这个数据库协议,那么就可以去做数据库命名这样一个事情,这就是协议的作用。 换回来,无论是http协议还是https协议都是经过人们商定的一些规则、标准,用来定义数据

2017-02-20 22:25:41 1593 2

原创 2016年关总结 让爱更有力量

前言  在这样一个夜深人静的夜晚,一个辞旧迎新的日子里,选择来坐下来好好思考过去这一年经历的事情和遇到的人,以及展望一下接下来的一年。工作  2016年,在工作上可以说是经历了很多。就好似走过一生的老人从热血澎湃的青年小伙,到中年的波波折折,而后年老的种豆南山下、悠然见南山。作为一个程序员,其实有时候非常的单纯。可能是习惯了程序世界里的选择、循环、判断,搞的以为世界就这么三件事。其实对于程序来说这是

2017-01-30 00:15:08 1157 8

原创 Android 手记基础篇 (一)图解第一个Android项目

一、前言  在开始行文之时,AndroidStudio 已经发布了2.2.2版本了,不再像之前的 Eclipse 需要配置各种的SDK以及logcat等诸多的基础环境。可爱而强大的AndroidStudio已经为我们处理了这些基础的工作这样也能够让开发者能够尽情的专注在代码的开发上面。当然再次之前,还是需要我们准备一个java环境,由于我的机器已经准备好了java环境,想要了解如何java环境的同学

2017-01-19 11:55:19 897 2

原创 MySQL(二)主从同步原理

一、前言mysql 提供一套操作十分简便的方案来实施主从数据库进行数据同步,使得开发人员能够十分快速的构造一套高可用的主从数据库环境。这里主要探讨一下mysql的同步过程,以及出现的一些概念、和简单的原理做一下解释。二、binlog日志1.描述  如果想了解 mysql 主从数据库之间是如何进行同步的,不可避免的就需要了解一下 binlog 日志。 binlog 日志又称二进制日志,从字面上的意思就

2017-01-17 16:17:18 1269 1

原创 设计模式(5)工厂模式-后记

一、前言工厂方法模式:抽象创建对象方法,将创建对象的细节移步到子类实现。在维护新的具体产品,无需修改抽象工厂。 抽象工厂模式:与工厂方法模式一致,只是工厂方法的延伸和扩展,适合维护同一个产品族。具体在不同场景下,根据场景来确定即可。二、简单工厂模式   通过一个静态方法来包装创建对象的细节。但在增加新的对象时,需要维护创建对象的方法。角色工厂类  简单工厂模式的核心,用来维护创建对象的细节。

2017-01-13 16:06:17 898

原创 ElasticSearch (三)ElasticSearch 常见REST API 操作

一、前言ElasticSearch 提供了一套非常强大并且易操作的 REST API 用于我们开发人员进行操作。主要 REST API 能完成以下几项功能:管理功能 i:检查集群、节点、索引的状态以及相关的统计数据ii:管理集群、节点、索引数据以及源数据维护索引i:基本操作。 提供针对索引的CRUD操作(Create【PUT】, Read【GET】, Update, and Dele

2017-01-10 19:36:31 9622

原创 ElasticSearch (二)ElasticSearch 安装

环境Red Hat 4.4.7-4 ElasticSearch 5.1.1 java 1.8.0_40 环境说明:ElasticSearch 在跳跃到版本号 5.1.1 之后 ,要求 java 版本号至少为 1.8 。附: jdk 1.8 下载地址:http://download.csdn.net/detail/chenfanglincfl/9732958ElasticSea

2017-01-09 20:37:41 2444

chenfast-simple-tomcat-master.zip

使用传统模式和nio模式如何手写自己的第一个tomcat

2021-05-30

RocketMQ 4.1.0 版本。已经编译通过版本

RocketMQ 4.1.0 版本,已经通过编译,并生成了target 文件,可以直接使用的RocketMQ 绿色文件

2017-04-21

jdk 1.8 绿色版

windows jdk1.8 绿色版,免安装。

2017-01-09

springmvc+spring+Mybatis+Maven整合

springmvc+spring+maven

2015-07-20

ejb3.0 分布式事务

关于ejb3.0 分布式事务的demo,涉及到相关persistence.xml 配置以及数据源配置。

2014-11-27

工作流 实例验证用户名和密码

实例演示工作流从整个过程,验证用户名以及密码。

2014-08-23

空空如也

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

TA关注的人

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