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
统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。

阅读更多

业务实践系列(3):项目重构思路

重构了一个项目,项目相对复杂,对外提供了很多接口产品给第三方调用,也调用多个第三方的数据,数据结构各种格式都有,业务有用户、登录、产品、订单、预付费/扣费、报表、客户、财务、对账等十多项服务。由单一架构拆分成多个Spring Boot微服务,Spring Cloud做服务管理。

重构后的项目也许在架构上仍存在缺陷,但比之前的单一架构则有较大的改进,非常方便横向扩展,大大降低了业务系统之间的耦合。本篇记录下重构的思路。

重构的目的主要是解决问题,如果问题不存在则重构没有意义,如果重构没有解决问题那更没有意义还浪费资源带来不可预知的风险,主要问题有:

  • 架构开发效率低,业务高耦合,难以扩展,不适合现在的业务体系。
  • 系统功能和性能遇到了瓶颈,难以支撑高速扩展的业务。
  • 代码不规范,难以理清逻辑,改动风险大,代价高。  
阅读更多

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

阅读更多

前端分页组件-集成jqPaginator插件

  一个开发团队里如果没有前端工程师,或项目里如果没有做前后端分离,或仍在使用JSP, 那 Java后端工程师必要负责前端的开发,可以算半个前端工程师。

  在前端的列表页面经常要用到翻页, 就需要用到翻页插件, 对后端工程师来说,直接引用开源成熟度高的、美观的分页插件是个高效的选择。

  jqPaginator简洁、高度自定义的jQuery分页组件,适用于多种应用场景, GitHub

阅读更多

Spring Context Utils 获取上下文中的 bean

在使用多线程环境时,有些对象不是拖管在 Spring 容器中,但需要拿到 Bean 资源,是无法通过注入的方式的,就需要通过外部工具类来获取 Spring 上下文,再获取 Bean。

阅读更多

MyBatis:不同类型的日期时间入参的范围查询

  最近做报表统计,对日期时间范围查找的比较多,经常会遇到,也有些之前涉及相关的零散笔记,现整理如下。

  MyBatis 在接收日期时间参数进行日期时间范围查询时,有些需要注意的地方,例如日期时间参数的数据类型可能是DateString类型,或传参与数据库存储的日期时间格式并不一致等情况。

  此情况更多与 SQL 的字符串拼接或日期时间格式转换有关。

阅读更多

Spring Boot 2系列(二十四):内嵌Tomcat SSL配置

  现在https的请求链接已非常普遍了,https可理解为 http的安全版,是基于 http 下加入了SSL(Secure Sockets Layer 安全套接层)层,为数据通讯提供安全支持。

  SSL 配置是基于服务端的,Nginx 和 Tomcat 都可以配置 SSL,SSL证书可以自己通过JDK工具生成,也可以购买认证的证书。

  SSL 协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等(- -百度百科)。

  Java Web 项目的部署环境通常在 Servlet容器(Tomcat)外面一层使用 Nginx 来做返向代理,在 Nginx 服务器里面配置 SSL 并将 HTTP 重定向到 HTTPS,或者在 Tomcat 容器里配置 SSL,将HTTP 请求重定向 到 HTTPS。

  本篇针对 Spring Boot 内嵌 Tomcat 配置 SSL 进行讲解,实际使用可能并不多,但可以了解Spring Boot 内嵌 Tomcat 对 SSL 的支持和配置。

阅读更多

Spring Boot 2系列(二十三):自动配置之@Conditional条件注解

  要理解 Spring Boot 的自动配置,就必须先理解 Spring 的 @Conditional注解,在自动配置类中常看到该注解的使用。

  该注解指定了在什么条件下创建 Bean 进行配置。 Spring Boot包含多个 @Conditional 注释,可以在@Configuration注解的类和@Bean注解方法中使用。

  @Conditional类型的注解,可以注解在类上,可以注解在Bean方法上,可以允许基于Spring Environment属性包含配置,可以仅允许在存在特定资源时包含配置。

  官方文档 -> Spring Boot自动配置之条件注解

  也可自定义,通过实现Condition接口,并重写其matches方法来构造判断条件。

阅读更多