在之前解释Spring事物不生效时,列举了很多方面的原则,详细参考Spring事物不生效的原因http://www.javacui.com/framework/560.html 其中说到了一点:在类内部调用调用类内部@Transactional标注的方法。这种情况下也会导致事务不开启。假如有如下实例类:@Service public class T1ServiceImpl extends ServiceImpl<T1EntityMapper, T1Entity> implements T1Servic...阅读全文>>
在分布式系统中,做事务跟踪,数据分片,都需要使用全局唯一ID。全局唯一ID的生成方式需要满足的需求一般包括:1.全局唯一:最基本的要求2.趋势递增:在MySQL的innoDB引擎中使用的是聚集索引,由于使用Btree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。3.单调递增 :保证下一个ID大于上一个ID,例如事务版本号、IM增量信息、排序等特殊需求4.信息安全: 如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定URL即可 所以在一些应用场景下,需要ID无规则 不规则,让竞争对手不好猜5.含时间戳:这样就能在开发中快速了解分布式id的...阅读全文>>
Win10操作系统新增的windows沙盒是一种安全机制,为执行中的程式提供的隔离环境。通常是作为一些来源不可信、具有破坏力或无法判定程序意图的应用程序提供实验之用。Windows 沙盒https://docs.microsoft.com/zh-cn/windows/security/threat-protection/windows-sandbox/windows-sandbox-overview Windows 沙盒具有以下属性:Windows 的部件:此功能所需的一切内容都包含在 Windows 10 专业版和企业版中。 无需下载 VHD。原生:每次 Windows 沙盒运行时...阅读全文>>
edis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。...阅读全文>>
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步...阅读全文>>
Base64能够将二进制转码成可见字符方便进行http传输,可是base64转码时会生成“+”,“/”,“=”这些被URL进行转码的特殊字符,致使两方面数据不一致。能够在发送前将“+”,“/”,“=”替换成URL不会转码的字符,接收到数据后,再将这些字符替换回去,再进行解码,将避免该问题。我们以hutool为例,以下是其Base64源码:package cn.hutool.core.codec; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import ...阅读全文>>
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。严格来说,属于使用失误,但是依然记录一下防止再次踩坑,相关问题已经提交到Issues:多个Nacos时配置文件无法读取的BUG · Issue #8158 · alibaba/nacos (github.com)一般正规来说,开发测试是两套数据库,这里项目没有那么严格,刚起步为了调试方便使用...阅读全文>>
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。每次都要写点这东西我也烦透了,但是基本格式还是要遵守的,就加上吧。一个项目是基于SpringClo...阅读全文>>
OkHttps 是 2020 年开源的对 OkHttp3 轻量封装的框架,它独创的异步预处理器,特色的标签,灵活的上传下载进度监听与过程控制功能,在轻松解决很多原本另人头疼问题的同时,设计上也力求纯粹与优雅。链式调用,一点到底BaseURL、URL占位符、HTTP、WebSocketJSON、Xml 等自动封装与解析,且支持与任意格式的数据解析框架集成同步拦截器、异步预处理器、回调执行器、全局监听、回调阻断文件上传下载(过程控制、进度监听)单方法回调,充分利用 Lambda 表达式TCP连接池、Http2OkHttps 非常轻量(最新版仅 90KB),除 Okhttp 无第三方依赖,并且更加的...阅读全文>>
RocketMQ是阿里巴巴开源的分布式消息中间件。支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。它里面有几个区别于标准消息中件间的概念,如Group、Topic、Queue等。系统组成则由Producer、Consumer、Broker、NameServer等。官方网站https://rocketmq.apache.org/docs/quick-start/ 集群模式:1)单Master模式这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。2)多Master模式一个集群无Slave,全是M...阅读全文>>