我想使用 Spring Boot Cache Abstraction 来缓存一些数据(https://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html)。
我愿意使用任何可用的提供商。
我需要的主要内容是:我希望能够设置对象级别 TTL,而不仅仅是全局缓存级别 TTL。
例如,对于我存储在缓存中的每个对象,我想根据该对象的某些属性为该对象指定一个自定义 TTL。
我知道要设置这样的东西,必须直接通过缓存提供程序来完成;但我无法找到我的用例的示例 - 只找到设置全局 TTL 的用例。有人可以帮忙吗?
我正在尝试实现对领域的抽象,以便在对数据库使用 CURD 操作时可以节省一些时间。
我构建的抽象是controller数据库操作,以便我可以使用controller它对任何表执行 CURD 操作。
即controller我所说的只是一个 Javaclass有四种方法
create update read delete。
这是create使用反射来创建db objects和绑定传递data object给那个的字段db object
/**
* this method will delete the old data "you can change that"
* of the table then store the passed data array in the table
*
* @param datum the data Object you want to
* save in the database
* @param map this map will contain …Run Code Online (Sandbox Code Playgroud) 我的代码库中有一个模式,看起来很像这样:我们正在处理来自队列的消息,然后将该消息传递到下一个队列。到目前为止的用例是我们处理和生成相同类型的消息。
public interface Processor<T> {
T process(T thing);
}
Run Code Online (Sandbox Code Playgroud)
该用例已演变为处理和生成不同类型的用例。此外,我们可能需要处理一种类型并生产一系列其他类型。
所以像:
public interface NewProcessor<I, O> {
O process(I thing;)
}
Run Code Online (Sandbox Code Playgroud)
并且将来可能需要类似的东西
public interface FutureProcessor<I, O1, O2> { //potentially N number of O
Pair<O1, O2> process(I thing);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法比拥有三个单独的类更清晰地表达这种情况?我可以在这里使用一个很好的已知层次结构吗?
我们有第一种处理器的抽象用户,我希望每次添加新处理器时不必重新编写。它今天做了这样的事情:
public abstract AbstractModule<T> {
private Processor<T> processor;
public AbstractModule(Processor<T> processor) {
this.processor = processor;
}
T runModule(T input) {
// abstract validateInput(input);
T result = processor.process();
// record results
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
任何已知的模式或关于如何做到这一点的建议将不胜感激!
我正在使用DDD技术编写应用程序.这是我第一次尝试DDD项目.这也是我的第一个绿地项目,我是唯一的开发商.我充实了域模型和用户界面.现在我开始使用持久层.像往常一样,我开始进行单元测试.
[Test]
public void ShouldAddEmployerToCollection()
{
var employerRepository = new EmployerRepository();
var employer = _mockery.NewMock<Employer>();
employerRepository.Add(employer);
_mockery.VerifyAllExpectationsHaveBeenMet();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我没有对Add()函数写任何期望.我做到了这一点,并意识到我还没有确定一个特定的数据库供应商.事实上,我甚至不确定它是否需要数据库引擎.平面文件或xml可能同样合理.所以我想知道我的下一步应该是什么.
我应该添加另一层抽象...说一个DataStore接口还是找一个已经为我完成工作的现有库?如果可以的话,我想避免将程序绑定到特定的数据库技术.
您何时鼓励对接口进行编程而不是直接针对具体类?
我遵循的准则是在代码需要跨越逻辑/物理边界时创建抽象,尤其是涉及与基础架构相关的问题时.
另一个检查点是,由于可能存在额外的关注代码(例如缓存,事务感知,调用Web服务而不是进程内执行),或者此类依赖关系是否直接引用基础结构集成点,因此将来可能会更改依赖关系.
如果代码依赖于不需要控制来跨越逻辑/物理边界的东西,我或多或少都不创建抽象来与那些进行交互.
我错过了什么吗?
我有一个或多或少的大约100行的Perl脚本.该脚本接受一些参数,它直接运行.没有模块,没有功能.该脚本可以分为三个部分,初始化部分,参数解析部分和工作部分,但我不知道该怎么做.一切都必须保存在一个文件中.请问,任何人都可以给我指示/建议如何构建我的Perl脚本吗?
谢谢.
是否有与Python的OutputStream或PrintWriter相当的Python等价/伪等价?
我希望能够有一个句柄,表示像stdout/sterr这样的流,或者文件,或其他东西(管道或套接字或虚拟接收器)并抽象出它是什么类型的东西,所以我可以只是发送输出到它.
我怎样才能做到这一点?
我正在开始SDL程序,显然需要为文件系统加载资源.我希望程序中的文件调用与平台无关.我最初的想法是定义一个宏(让我们称之为路径的PTH),它是基于系统类型在预处理器中定义的,然后使用它在程序中进行文件调用.例如
SDL_LoadBMP(PTH("data","images","filename"));
Run Code Online (Sandbox Code Playgroud)
只会转换为与文件系统相关的东西.
如果宏是可以接受的方式,那么这些宏会是什么样的(我如何检查正在使用哪个系统,在宏中连接字符串?)
如果没有,这样做的可接受方式是什么?
我目前正在编写一个具有大量数学计算的应用程序.在某些情况下,这些计算需要快速完成,我们可以处理少量的精度损失,以尽快完成数学计算.另一方面,有时我们要求计算非常精确地完成(并且在两者之间存在用例,我们将实现我们自己的乘法/除法/加法/减法/幂等方式,这更精确,即浮点数*float(或double*double,我知道float是一个糟糕的选择),但比BigDecimal.multiply(BigDecimal)更快......甚至比apfloat而不是BigDecimal更快.
是否有任何现有的库允许抽象这些数字格式,以便抽象出不同的数学方法,或者我是否必须创建自己的数学格式?
我已经开始编写一些东西了,这似乎工作正常,但是如果有一个经过良好测试的库而不是重新发明轮子,我认为会好得多.
已编辑以通过以下评论中的内容澄清情况:
问题是BigDecimal明显慢于double*double等.我们需要能够在精度和速度之间切换.这背后的原因是我们需要能够运行快速测试以进行调试和使用真实世界数据进行交叉检查(这不需要非常准确),但最终模拟(通常需要数天到数周):不可接受调试)将需要高精度.因此需要能够随意切换.
我正在为C++中基于Cortex-M4的微控制器开发软件.我有很多代码高度依赖于机器的代码(驱动程序等).我有更高级别的代码,它通过直接使用驱动程序密切依赖于低级代码.示例:低级别部分是例如.UART驱动程序,它是非常特定于硬件的,而高级部分是基于UART的通信协议.(该软件在"裸机"上运行,即下面没有操作系统.)
此代码目前紧密耦合,因此无法进行单元测试.
我想让它变得可测试.
所以我想我会创建一个低级部分的抽象,并使高级部分仅依赖于抽象.然后,我可以创建抽象的模拟,这些模拟将由单元测试使用,并且可以在微控制器上运行.
总而言之,我想创建一个硬件抽象层(HAL),但我问的是如何做到这一点?我应该virtual在C++中使用继承,还是有另一种更好的方法?
abstraction ×10
java ×4
c++ ×2
android ×1
bigdecimal ×1
c ×1
c# ×1
caching ×1
embedded ×1
filesystems ×1
interface ×1
math ×1
oop ×1
perl ×1
python ×1
realm ×1
refactoring ×1
reflection ×1
repository ×1
spring ×1
spring-boot ×1
unit-testing ×1