java-ee
java-ee 标签描述

一当我们谈领域驱动设计的时候,到底在谈论什么? 当我们接触到一块未知的业务时,要想搞清楚它,首先需要把问题的边界定义好,针对一个没有边界的问题去找解决方案时无从下手的。这里问题的边界对应到DDD就是领域的边界。 对于某些业务场景的时候,需要不同的角色、不同的事件和命令一起配合才能完成,这里就需要在领域内找到所有的角色(领域实体)、所有的事件(领域事件)、所有的命令(领域服务); 还需要做更进一步的子问题的拆分,这样可以将问题具体化、更聚焦,对需要找的解决方案也可以更有落地实施的可能性。这里拆分...

一背景 软件开发初期,需求相对简单和明确,开发出来的应用只需要满足需求能够快速上线就好,这个时候的应用在代码和业务逻辑上都比较清晰。 随着业务的不断增长,各种各样的需求也接踵而至。有倒排需求(时间紧,项目周期根据上线时间点往前推)、紧急需求(可能是某个业务逻辑漏洞需要立刻修复上线)、定制化需求(为了某种特殊场景提出的定制化功能),当这些需求不断在应用上实现,应用内会存在大量ifelse的代码,就算引入了良好的设计模式,也会使应用越来越臃肿,最后难以维护。 随着时间的推移,公司人员的变动也是...

  qbian   2020年12月09日   149   3   2 javaspringjava-ee

一测试demo 我们先来写一个测试demo java publicclassSimpleDateFormatTest{ privatestaticfinalSimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); staticclassParseDateimplementsRunnable{ inti=0; ParseDate(inti){ this.i=i; } @Override publicvoidrun(){ try{ Datedate=sdf.parse("2018-08-2810:10:"+i%60); ...

  qbian   2019年11月13日   83   1   0 javajava-ee

RabbitMQ是AMQP(高级消息队列协议)协议的一种实现,RabbitMQ的基本讲解也就是围绕着AMQP协议的讲解。 一角色讲解 1.1消息代理(messagebrokers):大家可以理解为RabbitMQ服务器,起到了消息接收,持久化和转发等作用。 1.2发布者(publishers)或生产者(producers):消息的产生来源,具有生产消息的角色。 1.3消费者(consumers):消息的接收者,消费消息的角色。 1.4交换机(exchange):用于接收生产者生产的消息...

  qbian   2019年11月13日   32   1   0 javarabbitmqjava-ee

一消息为什么丢失 RabbitMQ默认情况下的交换机和队列以及消息是非持久化的,也就是说在服务器重启或者宕机恢复后,之前创建的交换机和队列都将不复存在,之前未消费的消息也就消失不见了。原因在于每个队列和交换机的durable属性。该属性默认情况是false,它决定了RabbitMQ是否需要在崩溃或者重启之后重新创建队列(或者交换机)。 二持久化交换机和队列 将交换机和队列的durable属性设置为true,这样你就不需要在服务器断电后重新创建队列和交换机了。你也许会认为把队列和交换机的durable属性设置为true就足够可以让消息幸免于重启后丢失了,真的是这样吗?队列和交换机当然必须被...

  qbian   2019年11月13日   31   1   0 javarabbitmqjava-ee

一消息代理(RabbitMQserver)配置 代码示例: js finalstaticStringBINDING_KEY="binding_key";//bindingkey publicfinalstaticStringROUTING_KEY="binding_key";//routingkey publicfinalstaticStringEXCHANGE_NAME="exchange_a";//交换机名 finalstaticStringQUEUE_NAME="queue_a";/...

  qbian   2019年11月13日   60   1   0 javarabbitmqjava-ee

一为什么用单例模式 单例模式是设计模式中使用最为普便的模式之一。它是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例。在java中,这样的行为能带来量大好处: 1.对于频繁使用的对象,可以省略new操作花费的时间; 2.由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻gc压力,缩短gc停顿时间; 二单例模式的实现方式 2.1饿汉模式 java publicclassSingleton{ privateSingleton(){ System.out.println("Singletoniscreate."); } private...

  qbian   2019年11月13日   28   1   0 javajava-ee

记录一次大版本上线后回滚的案例 一问题 一个大版本的迭代,保存到Redis中的缓存数据实体类增加了一些属性,就用了一个子类继承旧实体类。获取缓存数据时可以通过Redis的class类型判断是新数据,如果不是,就用旧实体类序列化,代码如下: 旧的实体类 java classOldEntity{ //旧的属性 privateIntegerage; } 新的实体类 java classNewEntityextendsOldEntity{ //新增属性 privateStringname; } 从Redis获取数据,适配旧数据 java Map<byte[],byte[]loadedHa...

  qbian   2019年11月13日   34   1   0 tomcatredisjava-ee

一问题 我们的待序列化对象上有getXxx或setXxx等方法时,fastjson的JSONObject.toJSONString()方法默认会认为我们存在xxx这个属性,在序列化的时候就会帮我们序列化出xxx这个属性来。 例子 java publicclassUser{ privateStringname; privateIntegerage; publicStringgetDesc(){ returnname+":"+age; } } 序列化结果 json { "name":"xxx", "age":20, "desc":"xxx:20" } 二解决方法 JSONOb...

  qbian   2019年11月13日   140   1   0 javajsonjava-ee

一PDF转图片 1.1maven配置 js <dependency <groupIdorg.apache.pdfbox</groupId <artifactIdpdfbox-app</artifactId <version2.0.2</version </dependency 1.2具体代码 java packagecom.qbian.util; importorg.apache.pdfbox.pdmodel.PDDocument; importorg.apache.pdfbox.rendering.PDFRenderer; importorg.slf4j.Logger; impo...

  qbian   2019年11月13日   42   1   0 javajava-ee