自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 资源 (7)
  • 收藏
  • 关注

原创 DCI架构的理解

/ DCI,app层与domain层之间有了一个role的桥廊,app(context)不会耦合特别多的属性,只耦合少部分的行为。对聚合根的直接耦合,变成了对角色的使用。DDD里聚合根同时实现类的属性和方法,容易出现上帝类;传统的ddd架构,领域层是纯oop模型,应用层使用领域层的聚合根来完成业务,DCI是把。总结:app与domain层中间,添加一层role,用来切分聚合根。// context里面仅依赖角色,不直接依赖聚合根Person。// 纯DDD,聚合根是铁板一块,容易形成上帝类。

2022-11-23 17:05:52 494 1

原创 关于js的屏幕分辨率适配

5、显示效果:默认js不做任何自适应的时候(位置和大小都是固定像素值),os放大控件大小时,os的控件都放大了,chrome全屏时自己做了自适应,保证不会超出屏幕。html的渲染区域变大了,html里面的字体放大了,相对位置变大了,但是屏幕分辨率不变,所以导致部分内容会超出屏幕范围,需要左右拖拽来显示。3、操作系统的控件大小伸缩:操作系统会在默认屏幕分辨率的基础上,做大小的伸缩,操作系统提供的控件会做伸缩的自适应:分辨率变大时,字体和控件会等比例放大。2、显示器分辨率 硬件的分辨率,不一定和大小正相关。

2022-10-17 16:47:09 1761

原创 springdata jdbc设计理念

多对多的关系数据结构上用2个聚合实现,领域函数上使用实体。// 领域服务是添加作者,数据结构是存储关联关系。DDD里的核心关系,1、聚合 2、关联。

2022-09-02 21:04:24 242 1

原创 JVM GC

GC最佳实践

2022-08-29 17:49:20 91

原创 关于数据湖 数据仓库和湖仓一体

1、数据仓库:传统的数仓ETL建模和分析处理2、数据湖:基于原始的半结构化、非结构化数据,使用分布式的计算任务进行分析和处理,不是基于良好建模的数仓,强调数据的动态模型、原始的数据3、湖仓一体:数据就是一份,底层是企业的全部数据,包括结构化、半结构化、非结构化,中间通过统一的加工处理直接支撑上层所有仓的应用(BI、报表以及湖的应用),不再需要ETL连通(原来是存储2份数据,1份是原始的,1份是ETL之后的),数据能够直接用来进行分析。4、胡仓一体技术实现方案:1》Snowflake(分布式并行计算

2022-02-10 18:14:47 1529

原创 dataql的内部实现

1、整体是自定义了一门dsl,并实现了指令集和执行器2、核心数据结构QueryModel 语法树 QIL 指令集 Query:整体dsl解析执行的门面 DataModel:通用数据类型,可以解包成具体的object list 原子类型等UDF (User-Defined Function)用户定义函数,mysql的udf是用c写的,dataql的udf是用java写的(注册后可以在脚本中使用)3、运行时核心逻辑QueryResultImpl QueryImpl.execute(Custom...

2021-09-28 16:25:03 333

原创 mysql的锁 和可重复读 RR的实际业务场景与实际意义

mysql的锁锁的颗粒度,决定并发度和速度InnoDB的行锁是针对索引加的锁,不是针对记录加的锁。并且该索引不能失效,否则都会从行锁升级为表锁;rr的业务场景:多个相关的查询,同时取出来使用,并且要保证业务含义一致1》 对数。 上个月的余额,本月的账单(3个结果),当前的余额(修改了1个结果),正常应该是上月余额-本月账单==当前余额,现在因为2次读时,差了1个更新事务,所以对不上了2》 汇总数额不对。同一个事务内,先查详情,后聚合count,详情加起来和count返回的结果不一致3》..

2021-06-17 20:58:52 619

原创 nginx 常用配置

多进程模型:master负责管理,worker负责处理连接和http请求sendfile:从默认的 磁盘--内核(read文件)--用户态--内核(write数据)--协议栈,变成磁盘--内核--协议栈upstream 定义后端的多个服务器地址server { listen 80 default_server; # 域名不匹配时的默认server listen [::]:80 default_server; server...

2021-06-17 20:19:13 1497

原创 postman学习

1、全局变量 环境变量 测试集变量{{variable}}2、测试脚本pm.test("Status code is 200", function () { pm.response.to.have.status(200); });3、发送前的脚本pm.globals.set("filter", "user-1");4、工作流 用test脚本来实现postman.setNextRequest('Postman Echo PUT')5、取出数据塞入全局变量var jsonData = pm

2021-06-17 14:31:02 51

原创 关于mysql的 mvcc和read view

RR隔离级别下,整个事务开始时创建1个read view,后面的事务提交的结果,不会体现在读的结果里。RC隔离级别下,每个快照读,都会生成新的read view。mysql的所有的快照读,都不保证读到最新的结果,因为都不会加锁...

2021-06-17 09:52:58 134

原创 分布式session cas oauth2区别

不同公司)之间集成的场景。cas的本质是多个系统在一个集中的地方进行认证。3、oauth2:本质是协调用户、平台、第三方之间的权限的关系。解决的是开放平台开放自己的能力的问题,比如微信开放自己的账号体系,但是不会直接给原始的用户名和密码,而是使用与用户名、密码等效的token的机制,来让第三方使用。区分授权码和令牌的原因:用授权码获取令牌时,需要传递和server之间事先约定好的密码,用来验证换取token的客户端

2021-01-26 17:42:09 347

原创 spring session 原理

apSession4、web socket的支持5、DefaultCookieSerializer 通过cookie来传输sessionid6、HttpSessionAdapter 修改了标准servlet的HttpSessionspring-session-data-redis:redis做后端存储核心类是RedisOperationsSessionRepository 使用header传递session: @Bean    public HeaderHttpSessi

2021-01-26 15:22:33 209

原创 antd的默认配置

之后,自动处理

2021-01-11 15:32:53 142

原创 mybatis plus的插件扩展

参数映射 结果映射 二、mybatis的映射器MappedStatement = SqlCommandType(CRUD的类别)+SqlSource+ParameterMap+ResultMap+BoundSqlSqlSource:原始xml中设置的sql语句,还没有解释loop等语义BoundSql: loop、while等语义处理完之后的语句,一般带?和参数等信息BoundSql = sql(语句)+ parameterObject(入参) + ParameterMapping

2020-11-27 16:38:10 404

原创 spring容器内置的事件的顺序和说明

好了3、ApplicationContextInitializedEvent context上下文本身创建和初始化好了,ApplicationContextInitializer都已经执行了4、ApplicationPreparedEvent 容器完全准备好了,但是bean definition还没有加载refresh() --- 具体的注入bean5、ApplicationStartedEvent 初始化完成6、ApplicationReadyEvent 处在运行中了

2020-11-11 10:39:11 294

原创 数据开发 数据服务 数据中台

据服务:根据配置,自动的生成对应的通用查询接口,并发布到api网关,解决的是怎么把表映射成接口的问题 数据中台:基于同一的平台,开发了众多的数据服务,当有新的需求时,可以直接组合使用已有的实现。比如,组合使用 查询天气、物流单号、发货单等,实现对收货人的提醒。

2020-09-21 17:51:05 362

原创 几种分布式事务技术的比较

的表),但是保证强一致性。2、TCC:需要改造业务逻辑,手动实现 try的锁定的功能。对业务侵入很强。3、saga:默认执行成功,在需要的时候,再回调cancel。已经提交的事务,不保证隔离性。4、seata:对于update insert delete自动生成回滚的sql,需要时进行回滚,但是不保证数据的强一致性,回滚时会导致脏读(回滚和提交是2个本地的事务)5、lcn:发起方最后成功,触发各个阶段的真正提交。不会脏读,性能介于seata和2阶段之间。但是发起方挂了,会导致 数据不一

2020-09-04 18:20:46 269

原创 MongoDB动态代理

mpleMongoRepository对于findByXXX的解析在org.springframework.data.repository.core.support.RepositoryFactorySupport.QueryExecutorMethodInterceptor 

2020-05-15 09:42:35 190

原创 MongoDB 数据建模

m:n 使用reference ,关联表, 更新等要保证事务性 二、模型例子1、电商建模: https://blog.csdn.net/wanght89/article/details/77197400product和分类{   slug:"wheel-barrow-9092",   sku:"9092",   name:"Extra Large Wheel Barrow",   description:&q

2020-05-13 15:21:09 341

原创 camunda 源代码解析(一)

线下业务,比如打包货物,引擎不做任何处理5、receive task:等待runtimeService.signal 来触发的任务6、multiInstanceLoopCharacteristics 不确定数目的多个实例,一定会给相关的人同时发送任务(都是平级的),而不是一般意义上的上下级审批。使用场景:不确定人数的会签、投票 二、assignee VS owner(委派时很有用)assignee:办理人 使用claim:签收,改变办理人owner:拥有人,只有拥有人才能comple

2020-03-06 17:53:27 3046

spring cloud gateway 分析一 主流程和层次

efer<T>.subscribe(CoreSubscriber<? super T>) line: 45MonoPeekTerminal<T>.subscribe(CoreSubscriber<? super T>) line: 61MonoFlatMap$FlatMapMain<T,R>.onNext(T) line: 150MonoZip$ZipCoo

2020-02-14 19:27:44 110

原创 h2 sql 数据库相关

进url,可以支持不敏感5、默认事物隔离级别是读已提交, jdbc:h2:~/test;LOCK_MODE=3串行的并发级别 jdbc:h2:~/test;LOCK_MODE=1(在内存中可以考虑用这个)6、默认编码是utf-8的 https://www.jianshu.com/p/4a613dcf182c二、运行模式:1、内存模式jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1如果不指定DBName,则以私有方式启动,只允许一个连接 2、

2019-09-27 14:52:04 546

原创 Kubernetes与spring cloud的结合使用

底层使用同一个k8s集群(运维只需要管一个集群)2、基于RBAC对不同的环境授于不同的开发、测试访问Kubernetes权限,防止越权。3、通过Jenkins统一CI/CD编译发布过程。4、一个spring cloud服务的进程对应一个pod, 一个k8s service对应一组sc进程5、浏览器访问服务(k8s),ingress--》service--》pod6、集群内rpc调用(eureka), client--》zuul-->service实例(注册时使用pod的ip

2019-07-19 09:53:48 383

原创 spring cache 原理

并将其转换为对应的CacheOperation属性。2、BeanFactoryCacheOperationSourceAdvisor是一个PointcutAdvisor,是SpringCache使用Spring AOP机制的关键所在,该advisor会织入到需要执行缓存操作的bean的增强代理中形成一个切面。3、CacheInterceptor是一个拦截器,当方法调用时碰到了BeanFactoryCacheOperationSourceAdvisor定义的切面,就会执行CacheIntercepto

2019-05-10 15:47:18 99

原创 maven相关

三套生命周期  clean default site pre-clean 1)pre-clean:执行清理前需要完成的工作2)clean:清理上一次构建生成的文件3)post-clean:执行清理后需要完成的工作  default: validateinitializegenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resources     复制并处理资源文件,至目标目录,准备打包

2019-05-06 10:50:53 35

原创 mybatis-plus-3.0 通用crud实现原理

essConfigBeanDefinitions 处理@Configuration注解3》 依次处理 application(@SpringBootConfiguration)、@ComponentScan(会处理所有注入的bean)4》 处理各个Configuration5》 处理各种 ImportSelector 和ImportBeanDefinitionRegistrar6》 MapperScannerRegistrar.registerBeanDefinitions(ImportBe

2019-04-10 18:28:15 285

原创 美图端到端(客户端到服务端)一体化监控

ilebeat  https://blog.csdn.net/u014773389/article/details/81207017分布式trace三、AI opsruptures  https://pypi.org/project/ruptures/metis https://github.com/Tencent/Metis<企业级 AIOps 实施建议>

2018-12-01 22:26:29 87

原创 区块链场景化应用

,但是融资难。银行无法监控小企业还款,想响应国家号召落地有难处。例子:比亚迪--轮胎厂--轮毂厂--铝锭--铝矿。问题:中国特色,押款。解决方案:核心企业(银行相信一级供应商)授信成为数字资产上链,之后当债券流通。解决的问题:三角债 以债多还 降低小企业融资成本 必要性:是不是非要上链不可;链下是否真实;合规合法;参与动力适合情况:多方参与,互不信任;可信机构保证真实;提升效率,降低成本2、游戏(2C)数字资产确权;监测;分发去中心化(玩家去推广) 模式区块链化(规则由玩

2018-12-01 22:25:46 56

原创 B端产品学习笔记

与B端产品的区别:1、流转的数据归谁所有,归谁支配 2、谁来付钱四、产出竞品分析 产品分析 用户调研报告 发展路线图 需求说明文档 需求排期文档 站点地图   传统企业数字化一、行业现状审批复杂效率低;经营边际成本递增;国际上传统企业(walmart)曾经自己发射过卫星,非常重视it技术;对自己的客户完全不了解,复购率?消费者年龄段?; 产品战略倒挂,经理谈战略,总监谈战术,CEO谈按钮;总结:管理上成本高;营销上无法触达用户;认知上无数字化认知二、it总监干什么

2018-12-01 22:25:01 64

原创 常用大数据组件

2018-09-08 22:09:34 79

原创 消息队列mq的3个使用场景

态为init(设置定时时间,时间到后清除)3、client(app/h5/小程序) 通过msg id,定时向server获取msg处理状态(init时 画圈,没有时返回繁忙,fail时返回处理失败)4、server向redis查询处理的结果,返回 init/null/fail等状态 ------ 后台服务层1、原来controller里面的逻辑,改为使用rocketmq的消息来驱动2、processor(原来的controller里面的逻辑) 取出消息,rpc调用后台的服务,将结

2018-09-01 19:11:33 122

原创 大数据、数据仓库和ETL

况进行分析。比如,本周与上周相比销量增加还是减少了?原因是什么? 产品的库存周期长了还是短了?哪些产品需要及时补充库存?哪些供应商提供的商品,成本低、质量好、及时供货、客户比较喜欢?哪些地方的支出变多了?用户对我的产品满意吗?客户发生了哪些变化?需要招人吗?招什么样的人? 上面这些问题分别涉及 销售、库存、采购、会计、客户、HR等各个层面。    二、业务型系统与分析型系统的区别 OLTP  VS OLAP    OLTP:代表具体的操作,是对原来线下操作的模拟。    OLAP:关注整体的分析

2018-07-27 20:50:52 93

原创 单机与分布式的组件差异

用内存存储数据,    5、用多线程提高并发,    6、防止被kil掉(多个进程之间彼此守护,在合适的时候互相拉起)     二、分布式环境下:    1、消息队列 mq实现异步化(顶住流量洪峰)和解耦(适合彼此调用关系非常复杂的场景),    2、数据库hash实现分库分表,ES实现快速查询    3、分布式锁来同步各个服务(进程)或资源(比如db),    4、使用redis等替代内存,    5、使用多个service的RPC实现扩展性,    6、使用zoo

2018-07-25 15:51:01 85

原创 Webmagic 内部实现

产出page(封装下载的内容和http 状态码)4、PageProcessor 对下载的内容做处理pipeline:对processor处理的结果进行计算、持久化等处理5、spider 组织所有的流程和模块。核心逻辑 run:1》创建线程池,2》从scheduler获取URL 3》 调用downloader下载 4》 回调PageProcessor 4》 提取新的url和request 5》 回调pipeline 6》回调 SpiderListener 模型的顺序:Request-&am

2018-07-23 11:51:01 44

原创 大数据数据仓库 《大数据之路:阿里巴巴大数据实践》 读书笔记

据集合,用于支持管理决策(Decision Making Support)。    其中最核心的是集成。    2、ETL:抽取 转换 加载 把数据从不同的oltp系统中集成到数据仓库中的过程    3、数据模型:仓库里的数据怎么组织?(数据结构)目前业界的事实标准是 维度模型    4、大数据:大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度

2018-07-17 18:11:44 72

原创 dubbo 概览

;dubbo:reference id="userService" interface="org.huxin.dubbo.test.user.service.UserInterface"                     stub="org.huxin.dubbo.test.UserServiceStub" protocol="dubbo"/>         public class UserS

2018-07-09 21:34:20 48

原创 ElasticSearch 三 建立索引快的原因

、es的改进    1、新的segment不是fsync到磁盘,而是同步到内核文件缓存(默认1s),内核文件缓存再在合适的时间真正刷磁盘    2、fsync之前怎么保证可靠?使用translog记录这段时间的操作,translog本身每5秒刷一次磁盘    3、合并小的旧的segment  代码: Settings settings = ImmutableSettings.settingsBuilder()              .put("clien

2018-07-09 18:02:12 51

原创 ElasticSearch 二 查询快的原因

个term对应原来的一个field),并且term本身进行索引(trie 树)3、数据进行压缩4、组合查询时的优化注意点:ID尽量有规律、去掉不必要的索引、去掉不必要的analyzed

2018-07-09 17:25:25 64

原创 ElasticSearch 一 基本概念

:所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条又会被过滤,这种行为叫做映射(mapping)。一般由用户自己定义规则。定义后续数据如何建立索引,会定义数据的类型、是否索引、是否存储等,已有数据要改变映射关系需要reindex,mapping在整个index内有效(type不能作为作用域)。索引类型:analyzed 全文检索,not_analyzed:精确字符串匹配 6、shard:index的子部分,内部对应一个lucene,不同shard分布式存储,index的切分与合并

2018-07-09 17:22:47 49

原创 java spi机制

oader加载具体的实现(通过无参数构造函数实现对象创建)2、提供者在jar包的META-INF/services/目录里创建前面接口的全名文件3、在文本文件里写上具体实现类的全名4、具体的例子,数据库驱动spi META-INF/services/java.sql.Driver ,实现者 /mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.jar

2018-06-22 19:48:19 55

mongodb-win32-x86_64-2012plus-latest-signed.7z

mongodb msi安装包 4.1.4 2019.05.29 亲自测试,送给下载速度慢的网友

2019-05-29

MIT 算法导论 第三版 中文版

给想要,但是没有分的人。MIT 算法导论 第三版 中文版,带封皮、目录。内容完整且清晰。想要系统学习算法的人可以参考

2017-09-23

java用户界面编程指南

专门讨论用户界面相关的东西.其实现的例子是基于java语言的。

2009-11-30

java多线程设计模式

系统讲解java多线程设计模式及应用。其中包括 一般的os上讲的进程同步问题,以及数据库中的2段锁等问题的实现。

2009-11-30

structure_and_interpretation_of_computer_programs.pdf

此领域的国外经典教程

2008-07-10

tomcat技术手册

关于tomcat的英文手册,内容丰富!

2007-11-16

空空如也

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

TA关注的人

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