- 博客(144)
- 资源 (7)
- 收藏
- 关注
原创 git rebase研究
3》重置当前分支的提交历史,使它和dev分支的提交历史保持一致,即:原本只出现在dev分支上的提交记录c1,现在也出现在了当前分支上;1》找到当前分支和dev分支各自的最新提交c1和c2;然后从c1和c2开始向前回溯,找到它们在提交历史上的“共同祖先”c0;4》在这个基础上,然后再逐一追加只在当前分支上出现的提交记录,比如:c2,整个过程才算结束。2》把当前分支上从c0往后的每个提交记录和c0进行对比,并把对比结果存到临时文件里;一、把别的分支的commit顺序迁移到当前分支(重建基线),线性化提交历史。
2024-09-13 14:10:46
265
1
原创 DCI架构的理解
/ DCI,app层与domain层之间有了一个role的桥廊,app(context)不会耦合特别多的属性,只耦合少部分的行为。对聚合根的直接耦合,变成了对角色的使用。DDD里聚合根同时实现类的属性和方法,容易出现上帝类;传统的ddd架构,领域层是纯oop模型,应用层使用领域层的聚合根来完成业务,DCI是把。总结:app与domain层中间,添加一层role,用来切分聚合根。// context里面仅依赖角色,不直接依赖聚合根Person。// 纯DDD,聚合根是铁板一块,容易形成上帝类。
2022-11-23 17:05:52
651
原创 关于js的屏幕分辨率适配
5、显示效果:默认js不做任何自适应的时候(位置和大小都是固定像素值),os放大控件大小时,os的控件都放大了,chrome全屏时自己做了自适应,保证不会超出屏幕。html的渲染区域变大了,html里面的字体放大了,相对位置变大了,但是屏幕分辨率不变,所以导致部分内容会超出屏幕范围,需要左右拖拽来显示。3、操作系统的控件大小伸缩:操作系统会在默认屏幕分辨率的基础上,做大小的伸缩,操作系统提供的控件会做伸缩的自适应:分辨率变大时,字体和控件会等比例放大。2、显示器分辨率 硬件的分辨率,不一定和大小正相关。
2022-10-17 16:47:09
2081
原创 springdata jdbc设计理念
多对多的关系数据结构上用2个聚合实现,领域函数上使用实体。// 领域服务是添加作者,数据结构是存储关联关系。DDD里的核心关系,1、聚合 2、关联。
2022-09-02 21:04:24
295
1
原创 关于数据湖 数据仓库和湖仓一体
1、数据仓库:传统的数仓ETL建模和分析处理2、数据湖:基于原始的半结构化、非结构化数据,使用分布式的计算任务进行分析和处理,不是基于良好建模的数仓,强调数据的动态模型、原始的数据3、湖仓一体:数据就是一份,底层是企业的全部数据,包括结构化、半结构化、非结构化,中间通过统一的加工处理直接支撑上层所有仓的应用(BI、报表以及湖的应用),不再需要ETL连通(原来是存储2份数据,1份是原始的,1份是ETL之后的),数据能够直接用来进行分析。4、胡仓一体技术实现方案:1》Snowflake(分布式并行计算
2022-02-10 18:14:47
1727
原创 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
389
原创 mysql的锁 和可重复读 RR的实际业务场景与实际意义
mysql的锁锁的颗粒度,决定并发度和速度InnoDB的行锁是针对索引加的锁,不是针对记录加的锁。并且该索引不能失效,否则都会从行锁升级为表锁;rr的业务场景:多个相关的查询,同时取出来使用,并且要保证业务含义一致1》 对数。 上个月的余额,本月的账单(3个结果),当前的余额(修改了1个结果),正常应该是上月余额-本月账单==当前余额,现在因为2次读时,差了1个更新事务,所以对不上了2》 汇总数额不对。同一个事务内,先查详情,后聚合count,详情加起来和count返回的结果不一致3》..
2021-06-17 20:58:52
752
原创 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
2056
原创 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
79
原创 关于mysql的 mvcc和read view
RR隔离级别下,整个事务开始时创建1个read view,后面的事务提交的结果,不会体现在读的结果里。RC隔离级别下,每个快照读,都会生成新的read view。mysql的所有的快照读,都不保证读到最新的结果,因为都不会加锁...
2021-06-17 09:52:58
186
原创 分布式session cas oauth2区别
不同公司)之间集成的场景。cas的本质是多个系统在一个集中的地方进行认证。3、oauth2:本质是协调用户、平台、第三方之间的权限的关系。解决的是开放平台开放自己的能力的问题,比如微信开放自己的账号体系,但是不会直接给原始的用户名和密码,而是使用与用户名、密码等效的token的机制,来让第三方使用。区分授权码和令牌的原因:用授权码获取令牌时,需要传递和server之间事先约定好的密码,用来验证换取token的客户端
2021-01-26 17:42:09
419
原创 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
251
原创 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
458
原创 spring容器内置的事件的顺序和说明
好了3、ApplicationContextInitializedEvent context上下文本身创建和初始化好了,ApplicationContextInitializer都已经执行了4、ApplicationPreparedEvent 容器完全准备好了,但是bean definition还没有加载refresh() --- 具体的注入bean5、ApplicationStartedEvent 初始化完成6、ApplicationReadyEvent 处在运行中了
2020-11-11 10:39:11
335
原创 数据开发 数据服务 数据中台
据服务:根据配置,自动的生成对应的通用查询接口,并发布到api网关,解决的是怎么把表映射成接口的问题 数据中台:基于同一的平台,开发了众多的数据服务,当有新的需求时,可以直接组合使用已有的实现。比如,组合使用 查询天气、物流单号、发货单等,实现对收货人的提醒。
2020-09-21 17:51:05
410
原创 几种分布式事务技术的比较
的表),但是保证强一致性。2、TCC:需要改造业务逻辑,手动实现 try的锁定的功能。对业务侵入很强。3、saga:默认执行成功,在需要的时候,再回调cancel。已经提交的事务,不保证隔离性。4、seata:对于update insert delete自动生成回滚的sql,需要时进行回滚,但是不保证数据的强一致性,回滚时会导致脏读(回滚和提交是2个本地的事务)5、lcn:发起方最后成功,触发各个阶段的真正提交。不会脏读,性能介于seata和2阶段之间。但是发起方挂了,会导致 数据不一
2020-09-04 18:20:46
310
原创 MongoDB动态代理
mpleMongoRepository对于findByXXX的解析在org.springframework.data.repository.core.support.RepositoryFactorySupport.QueryExecutorMethodInterceptor
2020-05-15 09:42:35
233
原创 MongoDB 数据建模
m:n 使用reference ,关联表, 更新等要保证事务性 二、模型例子1、电商建模: https://blog.youkuaiyun.com/wanght89/article/details/77197400product和分类{ slug:"wheel-barrow-9092", sku:"9092", name:"Extra Large Wheel Barrow", description:&q
2020-05-13 15:21:09
454
原创 camunda 源代码解析(一)
线下业务,比如打包货物,引擎不做任何处理5、receive task:等待runtimeService.signal 来触发的任务6、multiInstanceLoopCharacteristics 不确定数目的多个实例,一定会给相关的人同时发送任务(都是平级的),而不是一般意义上的上下级审批。使用场景:不确定人数的会签、投票 二、assignee VS owner(委派时很有用)assignee:办理人 使用claim:签收,改变办理人owner:拥有人,只有拥有人才能comple
2020-03-06 17:53:27
3463
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
161
原创 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
686
原创 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
431
原创 spring cache 原理
并将其转换为对应的CacheOperation属性。2、BeanFactoryCacheOperationSourceAdvisor是一个PointcutAdvisor,是SpringCache使用Spring AOP机制的关键所在,该advisor会织入到需要执行缓存操作的bean的增强代理中形成一个切面。3、CacheInterceptor是一个拦截器,当方法调用时碰到了BeanFactoryCacheOperationSourceAdvisor定义的切面,就会执行CacheIntercepto
2019-05-10 15:47:18
160
原创 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
53
原创 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
315
原创 美图端到端(客户端到服务端)一体化监控
ilebeat https://blog.youkuaiyun.com/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
143
原创 区块链场景化应用
,但是融资难。银行无法监控小企业还款,想响应国家号召落地有难处。例子:比亚迪--轮胎厂--轮毂厂--铝锭--铝矿。问题:中国特色,押款。解决方案:核心企业(银行相信一级供应商)授信成为数字资产上链,之后当债券流通。解决的问题:三角债 以债多还 降低小企业融资成本 必要性:是不是非要上链不可;链下是否真实;合规合法;参与动力适合情况:多方参与,互不信任;可信机构保证真实;提升效率,降低成本2、游戏(2C)数字资产确权;监测;分发去中心化(玩家去推广) 模式区块链化(规则由玩
2018-12-01 22:25:46
79
原创 B端产品学习笔记
与B端产品的区别:1、流转的数据归谁所有,归谁支配 2、谁来付钱四、产出竞品分析 产品分析 用户调研报告 发展路线图 需求说明文档 需求排期文档 站点地图 传统企业数字化一、行业现状审批复杂效率低;经营边际成本递增;国际上传统企业(walmart)曾经自己发射过卫星,非常重视it技术;对自己的客户完全不了解,复购率?消费者年龄段?; 产品战略倒挂,经理谈战略,总监谈战术,CEO谈按钮;总结:管理上成本高;营销上无法触达用户;认知上无数字化认知二、it总监干什么
2018-12-01 22:25:01
94
原创 消息队列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
169
原创 大数据、数据仓库和ETL
况进行分析。比如,本周与上周相比销量增加还是减少了?原因是什么? 产品的库存周期长了还是短了?哪些产品需要及时补充库存?哪些供应商提供的商品,成本低、质量好、及时供货、客户比较喜欢?哪些地方的支出变多了?用户对我的产品满意吗?客户发生了哪些变化?需要招人吗?招什么样的人? 上面这些问题分别涉及 销售、库存、采购、会计、客户、HR等各个层面。 二、业务型系统与分析型系统的区别 OLTP VS OLAP OLTP:代表具体的操作,是对原来线下操作的模拟。 OLAP:关注整体的分析
2018-07-27 20:50:52
121
原创 单机与分布式的组件差异
用内存存储数据, 5、用多线程提高并发, 6、防止被kil掉(多个进程之间彼此守护,在合适的时候互相拉起) 二、分布式环境下: 1、消息队列 mq实现异步化(顶住流量洪峰)和解耦(适合彼此调用关系非常复杂的场景), 2、数据库hash实现分库分表,ES实现快速查询 3、分布式锁来同步各个服务(进程)或资源(比如db), 4、使用redis等替代内存, 5、使用多个service的RPC实现扩展性, 6、使用zoo
2018-07-25 15:51:01
128
原创 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
74
原创 大数据数据仓库 《大数据之路:阿里巴巴大数据实践》 读书笔记
据集合,用于支持管理决策(Decision Making Support)。 其中最核心的是集成。 2、ETL:抽取 转换 加载 把数据从不同的oltp系统中集成到数据仓库中的过程 3、数据模型:仓库里的数据怎么组织?(数据结构)目前业界的事实标准是 维度模型 4、大数据:大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度
2018-07-17 18:11:44
111
原创 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
78
原创 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
83
原创 ElasticSearch 二 查询快的原因
个term对应原来的一个field),并且term本身进行索引(trie 树)3、数据进行压缩4、组合查询时的优化注意点:ID尽量有规律、去掉不必要的索引、去掉不必要的analyzed
2018-07-09 17:25:25
118
原创 ElasticSearch 一 基本概念
:所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条又会被过滤,这种行为叫做映射(mapping)。一般由用户自己定义规则。定义后续数据如何建立索引,会定义数据的类型、是否索引、是否存储等,已有数据要改变映射关系需要reindex,mapping在整个index内有效(type不能作为作用域)。索引类型:analyzed 全文检索,not_analyzed:精确字符串匹配 6、shard:index的子部分,内部对应一个lucene,不同shard分布式存储,index的切分与合并
2018-07-09 17:22:47
74
mongodb-win32-x86_64-2012plus-latest-signed.7z
2019-05-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人