- 博客(57)
- 资源 (14)
- 收藏
- 关注
原创 Java开发四则运算-使用递归和解释器模式
四则运算Expression implement。ExpressionParser 核心实现类。Context 编写测试代码。
2024-02-02 15:44:52
944
原创 Istio-解决Zipkin对项目的侵入性问题
Istio采用SideCar模式注入的Enovy代理在某些情况下不能完全解决对项目的无侵入性,比如需要用到Istio的链路追踪功能的时候。需要在代码中手动注入链路追踪需要的header,这样就出现了Istio对业务功能的侵入性。istio服务网格的调用链跟踪需要依赖在服务之间传递trade和span相关的header来实现,否则无法把不同的服务调用关联到同一个调用链,envoy可以实现流量拦截和指标上报,但是无法协助应用程序传递。关于手动埋点的例子,可以在istio官网的bookinfo的例子中见到。
2024-02-02 10:25:24
604
原创 第7章 总结与展望
腾讯以前的slogan,我记得是做值得尊敬的互联网公司,公司的企业文化里面有四个词,我印象最深刻呢,只有其中一个,那就是正职正职放到公司的文化里面,这本身确实是一件值得尊敬的事情吧,可能也是腾讯里面不择手段的内耗,相对于其他大公司来说,少一点的原因。慕课王老师的介绍还是比较内敛了啊,上面写的是十年,其实已经有十二年了,我工作时间最长的两家公司呢啊,一家是网易,一家是腾讯网易,当时是在网易宿州这家公司给我的感觉是比较务怀,比较有产品情怀印象,尤其深刻的是员工的福利相当不错。
2024-02-01 16:09:50
220
原创 第6章 实践中的问题和关键点
然后呢,如果用户之前没有在手机支付平台上面签署过免密支付协议的话呢,他要先对免密支付进行授权,然后后柜机才能够解锁柜门,用户打开柜门,然后拿取商品关闭柜门,货柜机锁定柜门之后呢,货柜机就会对订单进行结算,最后支付平台上会对订单进行支付,整个过程看起来很流畅,好像并没有什么问题。比如说如果我们的交易上下文和支付上下文的同学经过了一两周的开发,在集成测试的时候,才发现双方对接口的理解是有误差的,或者某一方的同学在这一两周的开发过程中,不经意的调整了共享内核中的模型或者调整的接口,而没有通知到另一方。
2024-02-01 16:06:26
147
原创 第5章 DDD和微服务(架构升级:从单体到微服务的重构)
大家好,前面的课程中呢,我们有讲到在微服务架构中,我们要解决一些问题,包括服务的注册和发现服务的管理流量的控制熔断降级配置管理等等。这些问题呢我们要通过微服务的框架或者基础设施来解决。这些解决微服务的底层服务治理问题的方案呢,统一称为微服务的底层方案。在这节课中呢,我们就来对微服务的主流的底层方案,做一个简单的介绍。总的来说呢,这些方案分为两大类。第一类就是通过接入微服务的SDK或者说框架。
2024-01-31 17:21:14
301
原创 第4章 深入战术设计(使用DDD对运营域进行分析、建模和设计)
我们双击点开它数据来源,我们选择OSS好数据源呢,我们选择我们刚才创建的smartRMOS这个数据源文件名呢是我们的存储桶里面保存商品的文件名,文本类型是text分隔符呢,怎么感想好的好,我们预览一下数据,我们可以看到已经能够读到那个桶里面的数据了。然后呢,我们编译打包,然后把价包上传到我们之前创建的服务器,这里打包上传的操作呢,我就不演示了,我们直接登录到我们的服务器,除了价包呢,我们还需要把我们项目工程里面的静态资源文件和我们的商品数据文件也都上传到服务器。
2024-01-31 12:33:13
228
原创 第3章 初涉战术设计(使用DDD对交易域进行分析、建模和设计)
大家好,在本章前面部分,我们通过对案例中交易域进行建模设计和编码学习了DDD中战术设计的一些基本概念和方法。本节呢我们会完成现阶段案例的设计和编码工作,并且看一下运行效果。然后呢,对本章的学习做一个梳理和总结。在本节中。首先我们会学习四配层的实现。由于适配层的工作相对比较简单和繁琐,所以我们不会对代码进行逐行讲解,也不会现场编码。但是我们需要通过案例来了解适配层的职责,以及它的实现方式。接下来我们会与阿里云的IOT平台进行对接。
2024-01-30 08:59:54
102
原创 第2章 战略设计
大家好,这一节重点介绍我们的案例项目DDD是一门实践学科,因此案例呢就显得尤为重要。我们的课程也会用一个案例来贯穿,始终。通过这个案例来学习应用DDD进行系统建模和设计的完整过程,从需求分析到战略设计,再到战术设计,一直到编码阶段都会有详细的涉及,从截标题就能知道这是一个智慧零售相关的项目。那么为什么我们会选择这样一个行业呢?首先,零售行业规模巨大,二零二零年的市场规模达到了三十九点二万亿,在GDP中呢占比是非常高的,差不多是在百分之四十左右。
2024-01-29 20:43:23
227
原创 第1章 领域驱动设计的背景和来源
此外呢还有一些其他的资料,包括领域驱动设计这本书,它还有一个精简版以及事件风暴建魔法,也有相关的资料,包括其他资料呢我们也会统一整理成一个清单发给大家方便大家学习OK在这节课呢我们学习了领域驱动设计的过去现在与未来通过这节课的学习,我们知道了领域驱动设计中比较重要的理论的发展意识,也知道了比较重要的几位大佬是谁?那为了提高搜索的实质性呢,商品服务的同学,他可能会和负责商品接入的同学进行商量,最终他们决定让数据接入服务的同学在写入商品数据和门店数据的时候呢,同时构建搜索服务,他们所需要的数据。
2024-01-29 20:00:52
549
原创 MYSQL最佳实践
【强制】 不要使用 count(列名)或 count(常量)来替代 count() ,count()是 SQL92 定义的标 准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。说明: count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。【强制】count(distinct col) 计算该列除 NULL 之外的不重复行数 ,注意 count(distinct col1, col2) 如果其中一列全为 NULL ,那么即使另一列有不同的值,
2022-05-11 20:40:33
386
原创 周月季年换算(按每年48周)
package com.example.dateinvestigate;import cn.hutool.core.date.DateField;import cn.hutool.core.date.DateTime;import cn.hutool.core.date.DateUtil;import cn.hutool.core.date.Week;import org.assertj.core.util.Lists;import org.junit.jupiter.api.Test;im
2022-04-25 16:34:23
564
转载 DATETIME vs TIMESTAMP
DATETIME vs TIMESTAMP vs INT,怎么选?在做表结构设计时,对日期字段的存储,开发人员通常会有 3 种选择:DATETIME、TIMESTAMP、INT。INT 类型就是直接存储 ‘1970-01-01 00:00:00’ 到现在的毫秒数,本质和 TIMESTAMP 一样,因此用 INT 不如直接使用 TIMESTAMP。当然,有些同学会认为 INT 比 TIMESTAMP 性能更好。但是,由于当前每个 CPU 每秒可执行上亿次的计算,所以无须为这种转换的性能担心。更重要的是,
2022-04-13 10:18:15
113
转载 数据库字段设计该使用 驼峰还是下划线还是 纯小写?
无疑是下划线命名法下划线命名法因为单词之间有明显的间隔,更容易读懂字段的含义,另外序列化和反序列化一般都默认下划线命名法和驼峰命名法的互转的或者可以配置互转的,而驼峰命名法在有些数据库不区分大小写的情况下,反而会造成不必要的麻烦,也不建议在数据库上使用,另外中划线应该严禁在数据库命名上使用,所以从程序的可读性以及编程约定的广泛性上来看,显然应该使用下划线命名法。...
2022-04-12 14:51:52
3236
原创 Thread join方法
join 当前线程等待子线程运行结束。当前线程等待调用join方法的那个线程结束之后再执行。在哪个区域里面new的Thread的,当前线程就是该区域所在的线程。public class ThreadJoin { // 在Application的main方法中new的线程,当前线程是main线程,main线程等待T1和T2线程执行结束之后才执行 // 但是T1和T2是并行执行的关系 public static void main(String[] args) throws Inter
2022-03-12 15:24:23
197
原创 守护线程详解
package com.lastinglate.concurrency.chapter4;public class DaemonThread { public static void main(String[] args) throws InterruptedException { Thread t = new Thread() { @Override public void run() { t
2022-03-12 08:46:51
3026
原创 Scala编程入门
文章目录003_Scala编程详解:基础语法Scala与Java的关系安装ScalaScala解释器的使用声明变量数据类型与操作符函数调用与apply()函数004_Scala编程详解:条件控制与循环if表达式语句终结符、块表达式输入和输出循环高级for循环005_Scala编程详解:函数入门函数的定义与调用在代码块中定义包含多行语句的函数体递归函数与返回类型006_函数入门之默认参数和带名参数默认参数Java与Scala实现默认参数的区别带名参数007_函数入门之变长参数变长参数使用序列调用变长参数008
2021-09-10 17:40:12
222
原创 ThreadLocal上下文模式应用
文章目录ActionContextContextQueryFromDBActionQueryFromHttpActionExecutionTaskContextTestActionContextpackage com.lastinglate.concurrent.chapter11;public final class ActionContext { private static final ThreadLocal<Context> threadLocal = new Thre
2021-09-06 09:54:09
234
原创 MyBatis使用与源码解析
文章目录一、MyBatis核心概念基本概念核心对象的作用域与生命周期SqlSessionFactoryBuilder:SqlSessionFactory:SqlSession:接口式编程二、全局的 configuration 配置属性环境配置设置别名类型处理器mappers映谢器三、mapper 文件sql语句块statementMapper中的元素:select 用法及属性insert&update&delete 用法参数映射参数拼接${}结果集映射结果集自动映射resultMap嵌套结果
2021-09-05 19:19:57
83
原创 Spring Boot源码分析之外部tomcat启动war包的原理
文章目录1 从servlet3.0的特性说起1.1 web应用启动, 会创建当前Web应用导入jar包中的 ServletContainerInitializer类的实例1.2 ServletContainerInitializer 类必须放在jar包的 META-INF/services目录下,文件名称为 javax.servlet.ServletContainerInitializer1.3 文件的内容指向ServletContainerInitializer实现类的全路径1.4 使用@HandlesT
2021-09-05 17:33:08
123
原创 17_Spring Boot源码解析
今天内容1文章目录一 spring注解之如何导入Bean的几种方式1.1 通过@Import注解来导入ImportSelector组件1.3 spring底层条件装配的原理@Conditional二 Spring Boot自动装配原理2.1 @Springboot注解组合图三 上面我们分析了springboot 自动装配原理,接下来我们依靠自动装配原理来分析出Spring Boot的jar包的启动流程.3.1 我们先来看springboot 怎么来自动装配tomcat 相关的组件1 com.tuling.
2021-09-05 16:01:06
154
原创 Spring Boot自动装配原理详解
1 传统ssm整合redis的时候 需要在xml的配置文件中 进行大量的配置Bean我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis第一步:加入配置<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>2
2021-09-05 14:05:50
128
原创 Spring Boot自定义启动器
文章目录1 写一个自动装配的jar包,用来写自己启动器的核心逻辑.2 在自动装配工程中导入redis原生的jar包(不要导入启动器的包)3 在自动装配工程中创建一个meta-inf/spring.facotries文件4 把你的自动装配类 安装到自己本地maven仓库中5 创建一个启动器工程 什么都不做,只做一个自动装配工程的依赖就可以了6 把启动器工程同样安装到本地maven仓库中.7 写一个测试工程来使用你自己的启动器好不好用.7.1 导入你自己的启动器工程(不是自动装配工程)7.2 在applicat
2021-09-05 12:35:03
99
原创 16_Spring Boot整合篇
文章目录1 spring boot整合jdbc1.1 导入的maven依赖1.2 配置相关数据源:1.3 测试1.4 jdbc以及数据源的自动装配原理1.4.1 数据源的自动装配1.4.2 jdbcTemplate自动装配2 springboot如何优雅的整合druid+监控2.1 加入druid的依赖2.2 配置druid的数据源属性3 spring boot整合 mybaits3.1 导入maven依赖3.2 让我们看下mybatis自动配置类给我们配置了什么组件3.3 把sql写在方法上(mapper
2021-09-05 12:09:52
90
原创 15_Spring Boot快速开始
第一节:一 springboot微服务开发利器1.1 什么是微服务,微服务和微服务架构的区别?目前而已,对于微服务业界没有一个统一的标准定义,但是通常而言提倡把一个单一的应用程序划分为一组小的服务,每个小的服务都会运行在自己的进程中,服务之间通过轻量级的通信机制(http的rest api)进行通信,那么一个个的小服务就是微服务。①:单体架构与微服务架构图示传统的的单一电商应用来说, 订单,支付,用户,商品,库存等模块都在一个项目中, 若某一个模块出现线上bug,会导致整个版本发布回退.若把
2021-09-04 18:10:33
114
原创 09_Spring MVC原理深度解析
文章目录一、spring mvc 功能特性1、回顾servlet 与jsp 执行过程2、spring mvc 功能特性:3、请求处理流程4、spring mvc 示例:二、mvc 体系结构详解spring mvc 框架解决的问题HandlerMapping 详解HandlerAdapter详解ViewResolver与View详解一、spring mvc 功能特性1、回顾servlet 与jsp 执行过程流程说明:请求Servlet处理业务逻辑设置业务Modelforward jsp Se
2021-09-04 13:07:14
241
原创 08_Spring5.0新特性之日志框架
文章目录一 日志框架场景:二 我们Java中常用的日志框架是什么2.1 我们常常听说的就是如下的日子框架,还不知道这么选?2.2 加入我们系统使用的是SLF4J作为日志门面,我们是如何匹配三 Spring4.X spring底层使用的日志技术四 Spring5.x 底层使用的日志技术一 日志框架场景:某项目开发人员二蛋,为了了解项目运行情况,在我们代码中加入了, System.out.println("…")来记录 日志,有一天,项目经理觉得通过这种,System.out.println("…")的方
2021-09-04 10:06:50
275
原创 07_Spring 事务源码解析
文章目录一 事务概念解析1.1 什么是事务?1.2事务的特性(ACID)二 Spring事务三大接口介绍2.1 PlatformTransactionManager接口介绍2.2 TransactionDefinition 事务属性的定义2.3 TransactionStatus接口介绍三:我们来分析@EnableTransactionManagement注解来给我们容器加入了什么组件3.1 @EnableTransactionManagement开始分析3.2 我们从3.1处的源码可以分析处他通过@Imp
2021-09-04 07:46:51
104
原创 电商产品中,下单减库存与付款减库存的优缺点?
没有哪种好,最关键是看自己的业务适合哪种1、下单减库存。生成一个订单,库存减1 。但其实用户并没有完成付款,没有走完订单流程这种情况,用户量大的时候,会出现恶意下单情况,即只下单,不付款。因此很多电商平台都会设置一个订单保留时间,超过时间,订单失效,库存返还这种情况还会有一种,库存不多的时候(比如促销),实际意义上是有库存。但是因为一小部分人的订单没有完成,因此其他用户会看到已售罄的情况,会在某个时间点阻止其他用户购买。淘宝这点做得蛮好的,当有其他用户未付款时,淘宝会提示“其他用户正在付款中”2、付
2021-06-14 13:23:29
6559
原创 Linux性能优化笔记
如果你想知道某个命令是如何命名的,只需要使用man指令查看,例ps - report a snapshot of the current processes
2021-05-26 16:19:14
139
原创 05_Spring AOP源码分析
文章目录一:AOP1.1)AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性、异常处理和透明的持续性也都是
2021-05-22 15:00:11
96
原创 04_Spring IOC源码解析之循环依赖
getBean的完整流程invokeBeanFactoryPostProcessorsSpring IOC循环依赖解决方案
2021-05-19 10:51:49
110
原创 03_Spring Bean的实例化过程
比如我们容器中 TulingLog tulingLog = tcx.getBean(TulingLog.class);容器中的过程是什么?i1:>org.springframework.beans.factory.support.AbstractBeanFactory#getBean(java.lang.String)i2>org.springframework.beans.factory.support.AbstractBeanFactory#doGetBeani2.1>:org
2021-05-19 09:24:50
99
原创 02_Spring源码解析之扩展原理以及容器创建前期工作
文章目录零: 扩展点【BeanFactoryPostProcessor】【BeanDefinitionPostProcessor】【ApplicationListener】一: Spring是如何发布事件的? ApplicationListener1.1 自己写一个TulingApplicationListener 实现ApplicationListener接口,并且把该组件加入到容器中.二: BeanDefinitionRegistryPostProcessor 的处理源码流程三: BeanFactory
2021-05-18 22:34:50
125
原创 Web性能258原则
所谓的“2-5-8原则”,简单说,就是当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。...
2021-05-18 21:46:58
765
原创 分布式事务TCC异常场景以及优化
文章目录TCC的异常场景幂等处理产生原因应对策略空回滚产生原因应对策略资源悬挂产生原因应对策略三种异常总结幂等空回滚资源悬挂共通点优化动机和指导原则最末参与者优化(LPO)同库优化二阶段异步化TCC的异常场景在分布式系统中,随时随地都需要面对网络超时,网络重发和服务器宕机等问题。所以分布式事务框架作为搭载在分布式系统之上的一个框架型应用也绕不开这些问题。具体而言,有以下常见问题:幂等处理空回滚资源悬挂这些异常的应对需要TCC框架的支持和解决方案。幂等处理产生原因因为网络抖动等原因,分布
2021-05-18 21:40:49
237
原创 01_Spring源码分析之常见底层核心注解
文章目录一:Spring框架功能整体介绍1: Spring Core Container:1.1 Core1.2 Beans (BeanFacotry的作用)1.3 Context(处理BeanFactory,,一下还是ApplicationContext的作用)1.4 Expression Language2: Spring Data Access/Integration2.1 JDBC2.2 ORM 模块为流行的对象-关系映射 API,2.3 OXM 模块提供了一个对 ObjecνXML 映射实现的抽象
2021-05-17 23:20:36
135
redis+tcl8.6.1.rar
2020-09-07
IDEA的代码模板.rar
2020-09-07
keymap-shkstart.rar
2020-09-07
IntelliJIDEA的安装、配置与使用.rar
2020-09-07
com.github.eclipsecolortheme.updatesite-1.1.0-SNAPSHOT.zip
2020-07-20
DreamweaverCS4、PhotoshopCS4、MyEclipse7.5、Eclipse汉化包及汉化方法
2009-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人