process-与操作系统中的进程进行交互-编程思维

1、Process介绍 在Java中,Process类是一个抽象类,它提供了与操作系统中的进程进行交互的方法。当你在Java程序中启动一个新的进程(例如,运行一个外部程序或脚本)时,JVM会创建一个Process实例来代表这个新的进程。 Process类提供了以下主要的方法: getInputStream():获取进程的标准输出流。你可以从这个流中读取进程的输出。 getErrorStream

java时间类型总结-编程思维

1.为什么需要新的时间类型 1.8之后为什么需要LocalDate、LocalTime、LocalDateTime 因为之前原生的Date如果不格式化,那么打印出来的日期可视化差,例如下面 Tue Sep 10 09:34:04 CST 2019 你会说使用SimpleDateFormat()方法,如下所示。 public class FormatDateTime { public

java 子父类型集合之间的转换-编程思维

假设现在有这样一个方法,入参是父类型的集合参数,这是个通用方法,你需要共用它,你现在要传子类型集合进去,怎么办? class Animal { } class Dog extends Animal { } public class Service { public void doSth() { List<Animal> animals = new Arra

java两个list对象取差集-编程思维

在Java开发中,我们经常会遇到需要对两个List对象进行比较并取得它们的差集的情况。差集是指在第一个List中出现而在第二个List中没有出现的元素集合。本文将介绍如何使用Java来实现这个功能,并提供代码示例。 方法一:使用循环嵌套遍历比较一种常见的方法是通过嵌套循环遍历比较两个List对象中的元素。具体步骤如下:    遍历第一个List,对于每个元素,都在第二个List中进行遍历比较。 

java基础——泛型-编程思维

泛型的引入 看下面这段代码: private static int add(int a, int b) { System.out.println(a + "+" + b + "=" + (a + b)); return a + b; } private static float add(float a, float b) { System.out.println(a +

领域驱动设计 ddd-编程思维

DDD 是什么 一般情况下,系统分析和系统设计都是分离的。比如,当我们拿到一个需求后,先梳理业务逻辑,再确定需要哪些表。表确定后再构建数据模型(DO),DO 只有属性和 setter、getter 方法,然后通过一个或多个service来完成业务逻辑的处理。这种模式我们可以称它为面向数据库开发。 而 DDD 则打破了这种隔阂,提出了领域模型的概念,统一分析和设计,使得软件能够更灵活快速跟随需求变

【进阶玩法】策略+责任链+组合实现合同签章-编程思维

前置内容 掌握策略模式 掌握责任链模式 掌握类继承、接口的实现 掌握参数的传递与设置 GitHub地址 ps:【文章由来】公司项目中所用的合同签章处理流程,本人基于责任链上使用策略模式进行优化。 签章的处理流程 合同文本初始化 合同文本生成 签章挡板是否开启 合同签章发送mq 合同签章流水更新 合同上传文件服务器 签章渠道选择 签章渠道的实际调用 执行的流程如下: 整个结构类似于递归调用

hashmap-编程思维

HashMap hashmap会将key和value生成一个entry对象。 将entry放在数组中。放的位置,将key进行hashcode后取余,获取数组下标。 链表:头插法、尾插法。头插法更快。 1.7创建HashMap的底层源码 1.创建HashMap HashMap map = new HashMap(); 2.查看底层调用方法 /** * Constructs

java基础——异常-编程思维

为什么需要异常 引出 public static void main(String[] args) { int a = 10; int b = 0; int number = a / b; System.out.println("程序继续向下运行"); } 上面的代码运行时会报如下的错,意思是分母为0异常。 Exception i

lamda表达式与函数式接口-编程思维

认识函数式接口 概述 在编程语言中,一等公民可以作为函数参数,可以作为函数返回值,也可以赋值给变量。 比如八大基本类型、自定义实体类等等,以前这些类型都是对客观世界实体的一个数据抽象,而在java7之后,函数也晋升为一等公民。它是对客观实体动作的一个行为抽象。 从我们对接口的定义上来说,我们实现了【用不同的数据,做一样的的事情】到【用不同的数据,做不同的事情】的转变。  函数式接口只负责

java基础之行为抽象-编程思维

我在开发热部署的项目过程中,遇到了以下的情况: 有好几个热部署的场景,比如说: java类热部署(场景A) mybatis的xml热部署(场景B) 属性配置文件热部署(场景C) 然后这些场景大致有两种热部署的操作,那就是: 操作a:新增与修改; 操作b:回退, 而所有的场景的所有操作,处理的文件是一个列表,处理的场景需要根据文件后缀自己区分,每个文件的处理不管成功失败都要记录日志。 这是

javaweb(笔记)-编程思维

目录JavaWeb1、基本概念1.1 前言1.2 web应用程序1.3 静态web1.4 动态web2、web服务器2.1 技术讲解2.2 web服务器3、Tomcat3.1 安装tomcat3.2 Tomcat启动和配置3.3 配置3.4 发布一个web网站4、HTTP4.1 什么是HTTP4.2 两个时代4.3 Http请求1、请求行2、消息头4.4 Http响应1、响应体2、响应状态码5、

构造方法的特点及作用-编程思维

构造方法 特点: 1.方法名称和类名相同 2.不用定义返回值类型 3.不可以写return语句 作用: 给对象初始化 构造方法细节: 当一个类中没有定义构造函数时,系统会默认添加一个无参的构造方法。 当在类中自定义构造方法后,默认的无参构造方法会消失(如果需要无参构造方法需要手动添加) 构造方法与一般方法在写法上的不同: 构造方法: public(修饰符) class(定义类的关键字) Te

为什么线程池执行完任务不会自动关闭?-编程思维

想搞清楚这个问题,需要先看线程池原理:👉线程池原理 原因是,池子中已有线程数不超过核心线程数的前提下,线程池每添加一个任务,就会 new 一个Worker线程,Worker线程启动后,会不断轮询,从阻塞队列中取任务,因为已有线程数不超过核心线程数、默认情况下也不允许回收核心线程,所以看代码: private Runnable getTask() { ... boolean tim