摘要: 什么是幂等 这里的幂等是参考的数学上的一个概念,在服务中的定义为多次执行所产生的影响均与一次执行的影响相同。 如何实现幂等 幂等没有一种专门的规则或者方法来实现,都是针对业务具体来做的。 幂等有多个可以讨论的维度。可以从大方向上按照操作(增删改查)来讨论。 查天然是幂等的。 按照唯一标识的删除也是天 阅读全文
posted @ 2022-03-18 22:25 青石向晚 阅读(103) 评论(0) 推荐(1) 编辑
摘要: 对于读多写少的场景,缓存是提升系统读性能的一个常见技术。而数据系统一旦引入了新的组件,必然会带来数据一致性的问题。这里不考虑强一致性,强一致性带来的性能问题在高并发的场景下是不可接受的,因此这里说的是最终一致性。 对于缓存和数据库一起使用的模式,一般来说有以下几种。其中最常用的应该是 Cache A 阅读全文
posted @ 2022-03-18 00:02 青石向晚 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 用法 ThreadLocal 包装了一个 get 和 set 方法,在当前线程内,可以 get 到之前 set 进的值: ThreadLocal<String> tl = new ThreadLocal<>(); tl.set("a"); String a = tl.get(); 实现 Thread 阅读全文
posted @ 2022-03-16 17:34 青石向晚 阅读(33) 评论(0) 推荐(0) 编辑
摘要: Spring 有几个异常是在通过 url path 访问 Controller 方法时,由于参数不匹配而抛出的,比如 MethodArgumentTypeMismatchException 和 MissingServletRequestParameterException 异常。由于抛出该异常的时候 阅读全文
posted @ 2022-03-04 21:30 青石向晚 阅读(1662) 评论(0) 推荐(0) 编辑
摘要: R.C.Martin 的这本架构书讨论的是如何设计一个架构,并不会涉及到实现层面的东西,比如语言、框架、缓存和数据库之类的东西。这些在他的理念中属于具体的细节,不是架构应该考虑的东西。在他看来,架构其实就是设计。 一句话总结好的软件架构:围绕业务逻辑和用例而非技术框架展开架构设计,将软件策略分为高低 阅读全文
posted @ 2021-12-08 20:54 青石向晚 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 对象池模式是一种 creational 设计模式。该模式下,池中所包含的对象将不再是每次需要时创建,使用完毕后销毁,而是初始化好后放入池中等待使用。使用该池的 client 每次需要时都会向对象池请求一个对象,在上面进行一些操作,使用完之后返回给对象池。这个过程可以是手动执行或自动执行。使用对象池的 阅读全文
posted @ 2019-04-07 22:19 青石向晚 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 保证一个应用程序在系统中只有一个运行的方式就是用一些特殊的信息来判定唯一性。一种思路是通过线程的信息,比如名字等来判断,另一种是通过线程同步互斥信号来达到目的。 第一种是查看线程的名字,看是否已经存在了: 这种方式不太严谨,首先如果两个程序同时运行,可能会检测不出同名然后继续运行。另外多个终端里名字 阅读全文
posted @ 2019-04-07 22:16 青石向晚 阅读(150) 评论(0) 推荐(0) 编辑
摘要: Base64 编码是日常的编程中经常用到的编码方案之一,尤其是在传输信息的时候。有些初学者搞不清楚它和普通字符串的区别,也有些初学者把它和文本加密混淆。这里对 Base64 编码做一个详细的介绍。 可打印字符和控制字符 介绍 Base64 编码之前,先介绍下什么是可打印字符。可打印字符(printa 阅读全文
posted @ 2019-04-06 22:59 青石向晚 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 缓存是计算机世界中最常见的概念,从底层的 CPU 的缓存到应用层面的 Web 服务器缓存以及分布式的 Redis 和 Memcached 缓存。缓存存在的作用主要是为了以较小的空间代价提升较大的时间节省,当然前提是类似于二八原则这样的原理生效并且加以较好的策略来配置缓存。 本文谈的缓存是实际后端编程 阅读全文
posted @ 2019-04-06 14:28 青石向晚 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 这些年来工作中的开发任务主要集中在用代码处理业务层面,对数据库的操作一直是用的原来项目沿用下来的数据访问层。这次由于要想在项目中使用Dapper.NET,所以系统学习了下ADO.NET,并对知识点做了相应的整理。本篇近限于 ADO.NET 中直接访问数据源的组件的方式,不包括后来的 LINQ 和 E... 阅读全文
posted @ 2015-04-13 13:30 青石向晚 阅读(182) 评论(0) 推荐(0) 编辑