- 博客(35)
- 资源 (3)
- 收藏
- 关注
原创 MongoDB常用的CRUD(MongoTemplate实现)
1.准备PO对象import org.springframework.data.mongodb.core.index.Indexed;import org.springframework.data.mongodb.core.mapping.Document;import org.springframework.data.mongodb.core.mapping.Field;/** * @author * @createTime 2017/9/25 * @description //@D
2022-04-07 14:01:54
1033
原创 Mysql 启动报错解析:
Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/dat别人的解决方法并不一定适合你。。错误显示如下:Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/B-26NNG8WN-0833.local.pid).解决方法:进入目录/usr/
2022-03-17 20:47:20
4134
原创 DDD学习笔记---基于DDD的微服务设计实例
项目基本信息项目的目标是实现在线请假和考勤管理。功能描述如下:请假人填写请假单提交审批,根据请假人身份、请假类型和请假天数进行校验,根据审批规则逐级递交上级审批,逐级核批通过则完成审批,否则审批不通过退回申请人。 根据考勤规则,核销请假数据后,对考勤数据进行校验,输出考勤统计。战略设计战略设计是根据用户旅程分析,找出领域对象和聚合根,对实体和值对象进行聚类组成聚合,划分限界上下文,建立领域模型的过程。战略设计采用的方法是事件风暴,包括:产品愿景、场景分析、领域建模和微服务拆分等几个主..
2022-03-10 17:47:44
1212
1
原创 Mysql从json字段中取值
json_extract(ext, '$.stationSource') =#{stationSource}ext是数据库中的字段,$.xxxx是取json中对应key的value
2022-03-10 11:30:48
1336
原创 mysql 查询一个字串是否在一个字符串中
<if test="XXXXXXX"!= null"> and instr("字段名",#{"传进来的值",jdbcType=VARCHAR})>0</if>不要忘记有 >0
2022-03-10 11:18:11
1127
原创 DDD学习笔记---从后端到前端:微服务后,前端如何设计?
从单体前端到微前端为了解决单体前端的问题,我们可以借鉴微服务的设计思想,引入微前端概念。将微服务理念扩展到前端,解决中台微服务化后,前端由于仍为单体而存在的逻辑复杂和臃肿的问题。在前端设计时我们需要遵循单一职责和复用原则,按照领域模型和微服务边界,将前端页面进行拆分。同时构建多个可以独立部署、完全自治、松耦合的页面组合,其中每个组合只负责特定业务单元的 UI 元素和功能,这些页面组合就是微前端。微前端与微服务一样,都是希望将单体应用,按照规则拆分,并重组为多个可以独立开发、独立测试、独立部署和独
2022-03-09 15:21:53
678
原创 DDD学习笔记---如何实现服务和数据在微服务各层的协作?
服务的协作1. 服务的类型按照分层架构设计出来的微服务,其内部有 Facade 服务、应用服务、领域服务和基础服务。各层服务的主要功能和职责如下。Facade 服务:位于用户接口层,包括接口和实现两部分。用于处理用户发送的 Restful 请求和解析用户输入的配置文件等,并将数据传递给应用层。或者在获取到应用层数据后,将 DO 组装成 DTO,将数据传输到前端应用。应用服务:位于应用层。用来表述应用和用户行为,负责服务的组合、编排和转发,负责处理业务用例的执行顺序以及结果拼装,对外提供粗粒度
2022-03-09 14:23:48
560
原创 DDD学习笔记---微服务的各种边界在架构演进中的作用
演进式架构如何判断微服务设计是否合理呢?其实很简单,只需要看它是否满足这样的情形就可以了:随着业务的发展或需求的变更,在不断重新拆分或者组合成新的微服务的过程中,不会大幅增加软件开发和维护的成本,并且这个架构演进的过程是非常轻松、简单的。这也是微服务设计的重点,就是看微服务设计是否能够支持架构长期、轻松的演进。微服务还是小单体?有些项目团队在将集中式单体应用拆分为微服务时,首先进行的往往不是建立领域模型,而只是按照业务功能将原来单体应用的一个软件包拆分成多个所谓的“微服务”软件包,而这些“微
2022-03-08 17:43:26
257
原创 DDD学习笔记---如何保证领域模型与代码模型的一致性?
领域对象的整理完成微服务拆分后,领域模型的边界和领域对象就基本确定了。我们第一个重要的工作就是,整理事件风暴过程中产生的各个领域对象,比如:聚合、实体、命令和领域事件等内容,将这些领域对象和业务行为记录到下面的表格中。你可以看到,这张表格里包含了:领域模型、聚合、领域对象和领域类型四个维度。一个领域模型会包含多个聚合,一个聚合包含多个领域对象,每个领域对象都有自己的领域类型。领域类型主要标识领域对象的属性,比如:聚合根、实体、命令和领域事件等类型。从领域模型到微服务的设计领域对象与微
2022-03-08 15:56:17
305
原创 DDD学习笔记---如何使用DDD设计微服务代码模型?
微服务落地时首先要确定的就是微服务的代码结构。DDD 分层架构与微服务代码模型我们参考 DDD 分层架构模型来设计微服务代码模型。没错!微服务代码模型就是依据 DDD 分层架构模型设计出来的。那为什么是 DDD 分层架构模型呢?用户接口层:面向前端提供服务适配,面向资源层提供资源适配。这一层聚集了接口适配相关的功能。 应用层职责:实现服务组合和编排,适应业务流程快速变化的需求。这一层聚集了应用服务和事件相关的功能。 领域层:实现领域的核心业务逻辑。这一层聚集了领域模型的聚合、聚合根、..
2022-03-08 15:21:03
308
原创 DDD学习笔记---实战篇
如何构建中台业务模型?我们可以用 DDD 领域建模的方法来构建中台业务模型。你可以选择两种建模策略:自顶向下和自底向上的策略。具体采用哪种策略,你需要结合公司的具体情况来分析。1. 自顶向下的策略第一种策略是自顶向下。这种策略是先做顶层设计,从最高领域逐级分解为中台,分别建立领域模型,根据业务属性分为通用中台或核心中台。领域建模过程主要基于业务现状,暂时不考虑系统现状。自顶向下的策略适用于全新的应用系统建设,或旧系统推倒重建的情况。由于这种策略不必受限于现有系统,你可以用 DDD 领域逐
2022-03-08 11:28:10
1169
原创 Mybatis中TypeHandler的简单应用
数据库中某个字段的列类型是json类型。java类中某个属性是String类型。在项目工程里加入下面这个:/***这个类的第一个方法是对预处理语句(PreparedStatement)设置参数,之后的三个函数都是从ResultSet或*者用于执行存储过程的CallableStatement语句中获取String类型的数值,用于向Sring类型的*Java字段赋值。*这个Handler继承的BaseTypeHandler是个泛型类,其他的TypeHandler也是通过继承这个抽*象类,实现
2022-02-18 17:30:58
386
原创 数据库某个字段是json类型,存放的是[“1“,“2“,“3“]
数据库某个字段是json类型,存放的是["1","2","3"]用下面这种方式查:SELECT * from wdk_local_region where area_codes like concat ('%','330102','%');下面这种方式查不出来:SELECT * from wdk_local_region where json_contains(area_codes, '330102');...
2022-02-18 11:53:11
350
原创 DDD学习笔记---进阶篇
领域事件用来表示领域中发生的事件。举例来说的话,领域事件可以是业务流程的一个步骤,比如投保业务缴费完成后,触发投保单转保单的动作;也可能是定时批处理过程中发生的事件,比如批处理生成季缴保费通知单,触发发送缴费邮件通知操作;或者一个事件发生后触发的后续动作,比如密码连续输错三次,触发锁定账户的动作。领域事件相关案例事件起点:客户购买保险 - 业务人员完成保单录入 - 生成投保单 - 启动缴费动作。1. 投保微服务生成缴费通知单,发布第一个事件:缴费通知单已生成,将缴费通知单数据发布..
2022-02-16 10:26:09
728
原创 DDD学习笔记---基础篇
为什么 DDD 适合微服务?DDD 是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂性,并围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。DDD 不是架构,而是一种架构设计方法论,它通过边界划分将复杂业务领域简单化,帮我们设计出清晰的领域和应用边界,可以很容易地实现架构演进。1.领域、子域、核心域、通用域和支撑域领域就是范围,范围即边界。领域可以进一步划分为子领域。我们把划分出来的多个子领域称为子域,每个子域对应一个更小的问题域或更小的业务范围。..
2022-02-08 15:33:12
488
转载 详解MySQL主键唯一键重复插入解决方法
转载:https://www.jb51.net/article/222079.htm目录解决方案: 1. IGNORE 2. REPLACE 3. ON DUPLICATE KEY UPDATE 我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值:CREATE TABLE stuInfo ( id INT NOT NULL COMMENT '序号', name VARCHAR(20) NOT NULL DEFAULT '' COM
2022-01-13 10:25:49
3348
原创 Kibana搜索小记
# 索引员工(放一个员工数据到ES中),id=1PUT /megacorp/employee/1{ "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ]}# 同上PUT /megacorp/employee/2{ .
2021-12-28 18:17:28
237
原创 Kibana的安装(mac版)
Elastic的官网: http://www.elastic.co/cnKibana的版本要和Elasticsearch的版本一致。不然启动很有可能会报错。右键打开。然后: localhost:5601出现以上界面说明打开成功。
2021-12-28 14:53:37
1712
原创 SpringMVC乱码问题
狂神学习笔记:老式方法:测试步骤:1、我们可以在首页编写一个提交的表单<form action="/e/t" method="post"> <input type="text" name="name"> <input type="submit"></form>2、后台编写对应的处理类@Controllerpublic class Encoding { @RequestMapping("/e/t") public
2021-12-15 11:51:01
110
原创 SpringMVC:数据处理及跳转
结果跳转方式1.通过ModelAndView方式 (不常用)设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 .页面 : {视图解析器前缀} + viewName +{视图解析器后缀}<!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewR.
2021-12-15 11:43:45
181
转载 RestFul 风格
概念Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。功能资源:互联网所有的事物都可以被抽象为资源资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。分别对应 添加、 删除、修改、查询。传统方式操作资源 :通过不同的参数来实现不同的效果!方法单一,post 和 gethttp://127.0.0.1/item/queryItem.action?id=1.
2021-12-15 10:53:53
86
原创 数据库和索引设计简要笔记
列设计规范 正确区分tinyint、int、bigint的范围 使用varchar(20)存储手机号,不要使用整数(请求参数可能是字符串,防止类型的隐式转换) 使用int存储ipv4 不要使用char(15) 涉及金额使用decimal/varchar,并指定精度 不要设计为null的字段、而是用空字符,因为null需要更多的空间、并且是的索引和统计变得更为复杂。 索引规范 唯一索引使用uniq_[字段名]来命名 非唯一索引使...
2021-12-14 19:26:11
507
原创 IDEA live template的使用示例
mac电脑,command+逗号,可以调出设置界面。最好自己建一个分组,最右上角点击建立group1.Abbreviaton(缩写) :这个就是到时候你直接在写代码的时候写的缩略词,比多打test,就会跳出一大段你需要的代码。2.把代码配置在Template text中。3.定义变量,点击Edit variablescamelCase:驼峰命名。 方法名会随着TEST_NAME的变动而变动。4.设置语言。不设置不生效。点击change。我这里选java...
2021-12-08 19:57:44
1242
1
原创 Seata AT事务模型
Seata AT事务模型包含TM(事务管理器),RM(资源管理器),TC(事务协调器)。其中TC是一个独立的服务需要单独部署,TM和RM以jar包的方式同业务应用部署在一起,它们同TC建立长连接,在整个事务生命周期内,保持RPC通信。 其中全局事务的发起方作为TM,全局事务的参与者作为RM ; TM负责全局事务的begin和commit/rollback,RM负责分支事务的执行结果上报,并且通过TC的协调进行commit/rollback。...
2021-12-07 17:18:58
236
原创 笛卡尔积产生的原因
首先说下结论:链接查询,如果on条件是非唯一字段,会出现笛卡尔积(局部笛卡尔积);如果on条件是表的唯一字段,则不会出现笛卡尔积。测试大法:首先构建两张表,一张用户表(5条数据)、一张工作部门表(4条数据)。CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `addr` varchar(255) DEFAULT NULL, `email` var
2021-12-07 16:11:41
2992
原创 分库分表策略
关于分表策略通常分为三种1、取模2、范围分表-通常是时间3、城市-有明显业务特征的分表时间范围策略通常用于冷热数据分离,例如美团限查近3个月的订单,量体比较大,而且历史数据使用相对较少城市这种分表策略,类似于多租户的概念,业务处理场景一样,但是数据独立...
2021-12-07 15:47:37
931
原创 Java基础面试题摘录
目录按值传递和按引用传递的区别?值传递:方法调用时,实际参数把它的值的副本传递给对应的形式参数,此时形参接收到的其实只是实参值的一个拷贝,所以在方法内对形参做任何操作都不会影响实参 引用传递:当参数是对象的时候,其实传递的对象的地址值,所以实参的地址值传给形参后,在方法内对形参进行操作会直接影响真实内容。如果传递的参数是八大基本类型的话,是值传递。如果参数传递的是对象实例、数组或者是接口的话,看起来是引用传递,其实还是传对象地址值,是值传递。public class Call
2021-10-27 17:28:56
77
转载 jQuery学习之jQuery Ajax用法详解
[导读] jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍。我们先从最简单的方法看起,处理复杂的ajax请求时,jQuery使用jQuejQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几
2017-01-13 17:02:10
1697
原创 JSON和GSON
JSON是一种与开发语言无关的、轻量级的数据格式。全称JavaScript Object Notation.优点:易于人的阅读和编写,易于程序解析与生产。1.java后端利用JSONObject对象来生成json曰据JSONObjecO j=new JStNObject();Object 0ullObj=null;j.putb"name","王Ű�于
2016-09-26 11:08:24
1208
原创 小知识点集中--容易搞混--经常忘记--
String str="ABC"; str=str+"DE"; String str1="ABCDE"; System.out.println(str==str1);//false String str2="ABC"+"DE"; System.out.println(str1==str2);//true String ss="AB"; String str3
2016-09-22 14:33:58
443
转载 Java 中的 ==, equals 与 hashCode 的区别与联系
一、概述1、概念== : 该操作符生成的是一个boolean结果,它计算的是操作数的值之间的关系equals 本意 : 比较两个对象的 content 是否相同hashCode : 获取对象的哈希值,用于确定该对象在哈希表中的索引位置,它实际上是一个int型整数二、关系操作符 ==1、操作数的值在Java中有八种基本�E95�据%%7��型:
2016-09-08 10:08:19
1061
原创 关于拦截器
什么是拦截器?拦截器,一般指的是在浏览器页面向服务端发出请求后,拦截誷求�EBC�对%%8��求进�28C一�s�列뚄操作�%%B或�%8%�在�09C�务器连回�9B0据�%%7�,在数5E6���P达滏览器界%%9���%8%,�D9A一些操뽜。63Cbr />%E%��截器�%%0般�%9%�于�49D�限验诎、�AB1码�%%4�理等操7E4��拦�%%8�器%E%��基7E6
2016-09-05 17:07:54
1734
原创 使用SmartUpload批量上传文件
在实际开发中为了提高开发效率,一般都是使用FileUpload(Struts2用的就是这个)和SmartUpload组件进行文件上传下载使用SmartUpload批量上传文件1.导入相关jar包2.后端使用Servlet,doGet方法做doPost方法,doPost方法中: //设置上传文件保存路径 String filePath=getServletCo
2016-09-05 11:05:35
1523
原创 通过Hibernate API编写访问数据库的代码
private Configuration config;// 1.声明私有配置对象类private ServiceRegistry serviceRegistry;// 2.声明私有服务注册对象类private SessionFactory sessionFactory;// 3.声明私有会话工厂对象类private Session session;// 4.声明私有会话对象类p
2016-09-05 10:27:01
341
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人