记一次因在spring中动态注入自定义bean报出的异常
在dubbo系列中我写了一篇探究Dubbo服务注册发现的原理,为了在spring中动态注入payservice接口,我利用了BeanDefinitionRegistryPostProcessor接口,中间利用factorybean来实现了一个自定义bean的创建过程. 但是待我运行之后报了这样的错误Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameter, 不得以跟着refresh方法debug,一点点端详,查出了猫腻... 下面是整个代码链路跟踪图,看看这个PayService自定义接口是怎么一步一步注入到spring中的 refresh : 这就不说了,spring的核心方法都在这里 finishBeanFactoryInitialization : 完成此上下文的bean工厂的初始化,初始化所有剩余的单例bean preInstantiateSingletons : 确保所有非延迟初始单例都实例化,同时考虑到Factory...
sqlserver
函数记录: DateAdd:函数在日期中添加或减去指定的时间间隔,DATEADD(day/month..,number,date) getdate():系统时间 STUFF结合FOR XML PATH拼接字符串不是 varchar类型,先转CAST (xx as VARCHAR) 1234567SELECT id, [text] = '[' + stuff((SELECT ',{"bizDate":"' + CAST ( business_date AS VARCHAR ) + '","pkgCode":"' + [package_code] + '","guestType":"' + [guest_type] + '","count":' + CAST ( COUNT AS VARCHAR ) + ',&...
CDN-jsDelivr的使用
什么是cdn 作者:阿里巴巴淘系技术链接:https://www.zhihu.com/question/36514327/answer/1604554133 CDN工作原理内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。 CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。 借用阿里云官网的例子,来简单介绍CDN的工作原理。 假设通过CDN加速的域名为www.a.com,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下: 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。 LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。 当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。 域名解析请求发送...
关于分布式/集群/微服务的一个理解
关于分布式/集群/微服务的一个理解 分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题 集群:同一个业务部署在多台机器上,提高系统可用性 微服务:一个大服务被拆成多个小服务,提高可拓展性以及可用性 举例 小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。 为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。 而微服务则是将厨房这整个部门分成: 一个专门的切菜部, 洗菜部, 备菜部, 炒菜部...,每个部如果忙不过来了,还可以继续横向扩展多个同部门
本地事务和分布式事务
本地事务本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则: 基本概念事务的概念:事务是逻辑上一组操作,组成这组操作各个逻辑单元,要么一起成功,要么一起失败。 事务的四个特性(ACID): 原子性(atomicity):“原子”的本意是“不可再分”,事务的原子性表现为一个事务中涉及到的多个操作在逻辑上缺一不可。事务的原子性要求事务中的所有操作要么都执行,要么都不执行。 一致性(consistency):“一致”指的是数据的一致,具体是指:所有数据都处于满足业务规则的一致性状态。一致性原则要求:一个事务中不管涉及到多少个操作,都必须保证事务执行之前数据是正确的,事务执行之后数据仍然是正确的。如果一个事务在执行的过程中,其中某一个或某几个操作失败了,则必须将其他所有操作撤销,将数据恢复到事务执行之前的状态,这就是回滚。 隔离性(isolation):在应用程序实际运行过程中,事务往往是并发执行的,所以很有可能有许多事务同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。隔离性原则要求多个事务在并发执行过程中不会互相干扰。 持久性(dura...
记一次生产项目的实施部署
记一次生产项目的实施部署<谨供参考> 架构图 0001机器docker安装 更新yumyum update 安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源sudo yum install -y yum-utils yum添加软件源sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo 然后刷新缓存sudo yum makecache fast 然后安装docker-cesudo yum install docker-ce 启动 dockersudo systemctl start docker 验证是否安装成功sudo docker info 开机启动sudo systemctl enable docker docker-compose安装1将docker-compose文件上传到 /usr/local/bin/ 文件夹下,修改此文件的权限,增加可执行:chmod +x ...
windows查看自己的电脑支持的内存规模
windows查看自己的电脑支持的内存规模 最近打算趁着618给自己的电脑升级下内存,所以记录下怎么"内存"怎么买才合适 确定好自己的电脑最大支持的内存是多少 123451. 进入cmd2. 在命令窗口输入“wmic memphysical get maxcapacity”然后敲下回车键。3. 然后电脑会给出一串以千字节为单位的数字。我们再把这串数字换算成我们常见的GB单位的。 换算方法是:“得出来的数字/(除以)1024/(除以)1024“ 我的是33554432,换算成GB就是32G 查看自己的内存规格 121. 进入任务管理器2. 在内存模块的右侧就是显示内存规格的地方 查看自己的内存条属于DDR几 1234567891.运行cmd2.输入wmic回车3.输入memorychip回车4.往右拉找到Speed Status下面的数字,如果是133-266就是属DDR1400-800就是DDR21066-1600就是DDR31866-3200就是DDR4 查看内存工作频率
GitLabPipeline语法
GitLabPipeline语法
gitlab-runner的一些配置相关
设置并行度 默认concurrent设置了1,只能有1个job并行执行,把concurrent参数改一下,比如改成6,就可以一次并行6个job了 1vim /etc/gitlab-runner/config.toml 修改打包路径 默认存放在/home/gitlab-runner,是存放在系统盘 全局修改方法1vim /etc/systemd/system/gitlab-runner.service 把基础目录改成:想要改动的路径 重启runner 12systemctl daemon-reloadsystemctl restart gitlab-runner 注意需要给gitlab-runner-build-dir目录权限 局部修改,针对每个runner修改修改文件 1vi /etc/gitlab-runner/config.toml 重置执行目录:想要改动的路径 重启runner 1gitlab-runner restart (默认启动项目会作用在gitlab-runner用户下)修改 gitlab runner 默认...
