**架构模式:**使用类似甚至相同的功能组件或模块组个一个整体来解决共性的问题;问题重复出现,解决方案可重用。
**架构模式:**使用类似甚至相同的功能组件或模块组个一个整体来解决共性的问题;问题重复出现,解决方案可重用。
大型网站应用是随着业务的扩张发展从小型网站演化而来,适合的架构才是最好的架构,满足业务需求,没有资源浪费。在互联网行业,技术为业务服务,架构演进由业务需求驱动。
Linux命令(六):ls,grep,wc组合命令统计目录下的文件数
Linux下的 ls、grep、wc 三个命令可组合成统计目录下文件及文件夹的个数
统计当前目录下文件的个数(不包括目录)
$ ls -l | grep “^-“ | wc -l统计当前目录下文件的个数(包括子目录)
$ ls -lR| grep “^-“ | wc -l查看某目录下文件夹(目录)的个数(包括子目录)
$ ls -lR | grep “^d” | wc -l
命令解析:
ls -l
每一行对应一个文件或目录(目录、链接、设备文件),ls -lR是列出所有文件,包括子目录。
drwxr-xr-x 10 root root 4096 Mar 30 00:57 bower_components
-rw-r–r– 1 root root 505 Mar 30 00:52 bower.json
第一位是d
表示目录(directory),是-
表示普通文件。
grep “^-“
过滤ls的输出信息,只保留一般文件,只保留目录是grep “^d”。wc -l
统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。
重构了一个项目,项目相对复杂,对外提供了很多接口产品给第三方调用,也调用多个第三方的数据,数据结构各种格式都有,业务有用户、登录、产品、订单、预付费/扣费、报表、客户、财务、对账等十多项服务。由单一架构拆分成多个Spring Boot微服务,Spring Cloud做服务管理。
重构后的项目也许在架构上仍存在缺陷,但比之前的单一架构则有较大的改进,非常方便横向扩展,大大降低了业务系统之间的耦合。本篇记录下重构的思路。
重构的目的主要是解决问题,如果问题不存在则重构没有意义,如果重构没有解决问题那更没有意义还浪费资源带来不可预知的风险,主要问题有:
Spring Boot 2系列(二十六):JPA @GeneratedValue四种主键生成策略
JPA规范中主键生成策略@GeneratedValue
四种用法:TABLE,SEQUENCE,IDENTITY,AUTO
。
Spring Boot集成 JPA,在实体类映射表主键列的属性上使用**@GeneratedValue**注解来指示主键生成策略,主键生成策略的类型由枚举类GenerationType
的值确定。
Spring Boot 2系列(二十五):WebSocket详解与使用
Spring Boot为内嵌的Tomcat 8.5,Jetty 9和Undertow提供了 WebSockets 自动配置。 如果打包 war 文件部署到独立容器,则Spring Boot会认为容器负责其对WebSocket支持的配置。
Spring Framework提供了丰富的WebSocket支持,可以通过spring-boot-starter-websocket模块轻松的集成使用。
Spring Boot -> WebSockets, Spring Framework -> Web on Servlet Stack -> WebSockets。
一个开发团队里如果没有前端工程师,或项目里如果没有做前后端分离,或仍在使用JSP, 那 Java后端工程师必要负责前端的开发,可以算半个前端工程师。
在前端的列表页面经常要用到翻页, 就需要用到翻页插件, 对后端工程师来说,直接引用开源成熟度高的、美观的分页插件是个高效的选择。
jqPaginator简洁、高度自定义的jQuery分页组件,适用于多种应用场景, GitHub。
根据 CPU 内核数计算出合理的线程并发数,线程池管理和关闭。
Spring Context Utils 获取上下文中的 bean
在使用多线程环境时,有些对象不是拖管在 Spring 容器中,但需要拿到 Bean 资源,是无法通过注入的方式的,就需要通过外部工具类来获取 Spring 上下文,再获取 Bean。
最近做报表统计,对日期时间范围查找的比较多,经常会遇到,也有些之前涉及相关的零散笔记,现整理如下。
MyBatis 在接收日期时间参数进行日期时间范围查询时,有些需要注意的地方,例如日期时间参数的数据类型可能是Date
或String
类型,或传参与数据库存储的日期时间格式并不一致等情况。
此情况更多与 SQL 的字符串拼接或日期时间格式转换有关。