
Java 编程思想
文章平均质量分 71
0-21
让积累在潜移默化中不断发生
展开
-
求数组最大最小值差小于m的最大子串长度
最近看了一道题目,主要是求出一个数组中子串的最大和最小值的差不大于m的最长子串的长度。在编程的过程中就体会到了小函数的强大之处,因为函数短小,功能单一明确,非常有利于编程。在一个很长的上下文思考问题,脑子理不清楚,而那种一个函数五六行,则非常便于理解前后逻辑关系。import java.util.*;public class Main { public static void main(String[] args) { int input[] = {10, 1, 3原创 2022-01-25 20:43:52 · 1051 阅读 · 0 评论 -
使用Stream实现统计计算
问题引入 在之前的工作中,笔者曾经结果部门领导的一个需求,当时正在进行态势的项目开发,要求是能够统计出一些指标以反映态势的实时的状态,类似于DashBoard的功能。当时笔者因为一些其他的工作,所以一开始没有理解其意思,结果就被喷了一脸,之后理解了其意图是想要开发一个能够反映态势实时状态的指标。这样的问题场景其实在程序员编程生活中经常出现。应该如何应对和解决呢。实现过程思想过程 在这里我们要实现的目标是统计出每种类型的实时目标,目标从生产者哪里源源不断的出现,统计程序作为消费者,计算出在整个态势原创 2022-01-10 22:16:59 · 3127 阅读 · 4 评论 -
SpringBoot使用策略模式彻底消除if-else
使用策略模式和工厂模式彻底消除if-else分支原创 2022-01-07 21:22:57 · 3580 阅读 · 4 评论 -
阿里笔试之Java分词统计
阿里笔试原来计划的是昨天下午7:00到8:00进行的,结果刚看完乔司南敏捷的房子,回去之后和鹏伟 一起去吃火锅,所以只好把时间推迟到8:30,结构再次推迟到今天早晨9:00到10:00.题目是这样的:给出一个英文文章,统计出其中的单词数目,并且按照次数进行排序。忽略大小写解答如下:主题思想是分词统计把Map转换成List对List进行排序输出import java.util.ArrayList;import java.util.HashMap;import java.util.原创 2021-11-28 21:06:19 · 362 阅读 · 2 评论 -
Java多线程知识总结
typora-root-url: imgs多线程知识总结在日常开发过程中,作为一个需要经常编写代码的码农,多线程的知识在开始进入编程工作时,或许多线程的知识并不必要,可当深入代码的海洋,总是会遇到一些使用场景,传统的单线程编程无法应对,此时就需要采用多线程技术处理复杂的应用场景,进而获得更好的用户体验。另外,在因特网上下载一个文件时,多会提示如下的内容:延迟下载,可以理解为,快速响应,延迟下载。本质上就是多线程的一种下载。 在bm审查期间,和同事合作,抽空优化了同事开发的考勤项目,通过代码重构.原创 2020-11-07 22:19:38 · 439 阅读 · 0 评论 -
JDK8中Lambda深入理解和Stream实践
1 lambda描述Lambda 表达式是一种匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和名字。它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使 Java 语言的表达能力得到了提升。实际上,在开发过程中,也许会写出如下的代码public boolean verifyRequestParam(JSONObject requestParam) { ...原创 2019-10-16 00:17:43 · 1808 阅读 · 0 评论 -
Java List数据结构支持分页
1问题简介在进行Java Web开发的过程中,如果数据过多则需要进行分页展示,即需要返回所查询到的数据中的一部分内容,如果是进行数据库操作,则可以进行数据库相关的代码通过传入分页参数自然实现相关联的代码。2代码实现public List getListByPage(List list,int page,int pageSize) { if(list.size() > 0...原创 2018-11-27 10:17:06 · 622 阅读 · 0 评论 -
Java异常执行路径
1 问题引入public class Test{ public static void main(String[] args) { int str = getMsg(); System.out.println(str); //控制台会输出什么?"123"还是"456" } public static String getMsg() { try{ int a ...原创 2018-10-24 21:35:08 · 549 阅读 · 0 评论 -
Java删除中文前后的空格和指定内容
1简介正则表达式是一种强大而灵活的文本处理工具,使用正则表达式,我们能够构造复杂的文本模式,并对输入的字符串进行搜索,一旦找到了匹配这些模式的部分,你就能能够随心所欲的对它们进行处理。有一种场景,在进行工资excel解析时,由于excel第一行中标题很可能有空格,这会给我们后续的处理带来很多麻烦,比如说如下的情形,一般工资excel含有如下字段姓名, 人员类别,入职时间,结算部门,职业年金等...原创 2018-10-18 09:07:29 · 2362 阅读 · 1 评论 -
Java使用正则表达式(-|\\+)?(\\d+)*.?\\d+匹配正数、负数、浮点数
1简介可以使用正则表达式对字符串进行匹配,比如对用户输入的字符串进行有效性验证。2Java正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别3代码片段import com.sun.xml.internal.ws.util.StringUtils;public class Number { ...原创 2018-10-12 22:28:33 · 15311 阅读 · 0 评论 -
异常:继承体系中异常的限制
/* * 2018年3月28日11:16:43 * 代码目的: * 核心: * 当覆盖方法的时候,只能抛出在基类方法的声明里列出的那些异常。这个限制很有用, * 因为这意味着,当基类使用的代码应用到其派生类对象的时候,一样能够工作 * * * 在Inning类中,可以看到构造器和event方法都声明将抛出异常,而实际上...原创 2018-03-28 11:21:44 · 308 阅读 · 0 评论 -
异常:重新抛出异常
/* * 2018年3月28日10:56:48 * 代码目的: * 演示异常重新抛出时,调用栈信息,如果不做处理,直接抛出原来的异常对象的引用,则 * 调用栈信息不会更新。 * 核心主题: * 如果只是把当前异常对象重新抛出,那么printStackTrace方法显示的将是原来抛出点的调用栈信息, * 而非重新抛出点的信息。要想更新这个消息,可...原创 2018-03-28 11:06:28 · 656 阅读 · 0 评论 -
异常:异常链
/* * 2018年3月28日10:43:45 * 代码目的: * 演示异常链的使用 * 常常会想要在捕获一个异常好抛出另外一个异常, * 并且希望把原始异常的消息保存下来,这被称为异常链 * * Throwable的子类在构造器中都可以加收一个cause因由对象作为参数, * 这个cause就表示原始异常,这样通过把原始异常传...原创 2018-03-28 10:55:01 · 763 阅读 · 0 评论 -
使用Java类Calendar获取当前时刻年月日周分秒
1 简介在实际项目中,经常需要对时间的处理,例如在网页上会显示今天是2018-12-18 09:44:29 周二 第51周等信息。对于这类经常出现的问题,Java为开发人员提供了Calendar类来进行日期-时间的操作。Calendar类位于包util工具包,使用时用import导入import java.util.CalendarCalendar类是一个抽象类,它为特定瞬间与一组...原创 2018-12-18 21:26:02 · 26133 阅读 · 1 评论 -
Java分页类定义和使用
1 简介在后端与前端进行交互的过程中,需要对后端得到的数据进行分页推送给前端,比如说在某个博客网站上某用户编写了100篇文档,但在页面展示时,可能在每个页面仅仅展示10条数据,如下图所示因此,而且此类需求是一个常见需求,所以可以总结一下这个用法。一般需要实现该情景,需要返回的类似数据如下:{ "result": "success&原创 2018-12-24 20:42:15 · 6338 阅读 · 1 评论 -
Java中静态子句的使用
1 简介随着计算机的发展,“不安全”编程方式已逐渐成为编程代价高昂的主因之一。而初始化与清理正是涉及安全的两个因素。C++中引入了构造器的概念,这是一个在创建对象时会被自动调用的特殊方法,Java也采用了构造器,并额外提供了垃圾回收器。由于Java中使用构造器来完成对象的创建过程,(清理工作由垃圾回收机制进行保证),因此熟悉构造过程中类对象的创建顺序对于程序员开发良好的程序是必不可少的。在J...原创 2019-01-26 18:26:38 · 1901 阅读 · 0 评论 -
《重构 改善既有代码的设计》之JUnit测试框架以及IDEA与JUnit整合
1简介在使用Java开发新功能时,作为一个编写较多代码的程序员来说,一定会发现编写代码仅仅占据非常小的一部分。有些时间花在设计上,而最多的时间则花在调试上。当你修改好一个错误,总是会有另一个错误出现,而且肯定要很久以后才会注意到它。那时候你又要花上大把时间去寻找它。因此在代码中进行测试是一个非常重要的步骤,甚至有些编程人员开发应该由测试驱动,即TTD编程。2关于重构在《重构 改善既有代码结构...原创 2019-01-22 00:17:13 · 961 阅读 · 0 评论 -
Package name 'com.cetc52.platform' does not correspond to the file path 'java.com.cetc52.platform'问题
1简介在《重构 改善既有代码的设计》一书中,我们知道要进行重构,首要前提就是要拥有一个可靠的测试环境,有一个可以自动进行重构的工具,还是需要进行测试。Martin Fowler发现,编写优良的测试程序,可以极大的提高编程速度,即使不重构也是一样的。确保所有测试都完全自动化,让它们检查自己的测试结果只要把期望的输出放进测试代码中,然后做一个比较就可以,于是就可以舒服的执行每个类的测试函数。...原创 2019-01-31 20:59:49 · 6779 阅读 · 3 评论 -
Java反射之Constructor、Method、Field使用及说明
1 简介在编程生活中,一般处理业务时不需要使用反射的内容,因为反射属于Java编程中的高级知识。但当我们需要迈向更高级的Java编程时,运行时类型信息是必须深刻理解的,在Spring MVC中,各种注解底层实现的方式就是使用了类型信息。运行时类型信息(runtime type infomation)使得你可以在程序运行时发现和使用类型信息。它使得我们从只能在编译期执行面向类型的操作的禁锢中解脱...原创 2019-01-16 16:18:36 · 3046 阅读 · 0 评论 -
使用HttpClient从一个接口跳转到另一个url对应的Controller控制器
1简介最近在南京出差时,在对接一个平台时,根据事件类型订阅关注的事件,通过传送目标地址,平台会自动推送相关的把请求体封装成JSONObject,自己呢则是需要对这部分的事件进行简单的数据组织,然后以一种特定的形式把数据发送到上一层。由于在程序运转时使用Http协议,因此尝试使用HttpClient来实现该功能。超文本传输协议HTTP是当今互联网上最火的传输协议,因此熟练的掌握HTTP协议的类型和...原创 2019-02-25 22:05:48 · 2003 阅读 · 0 评论 -
Java枚举深入理解以及HttpStatus类的使用
1枚举1.1枚举基础由于每个程序员在开始编程时一般会首先学习C/C++,然后再学习Java,在C++中枚举是可以定义枚举值为特定的整数的,但这在Java中却没有得到支持,大概C/C++中的枚举代表了数值型常量多一些,而Java中枚举值,更确切的说为枚举类型对象。在Java中定义一个简单的枚举类如下所示:public enum Season { SPRING, SUMMER, AUTU...原创 2019-03-23 20:50:01 · 7769 阅读 · 1 评论 -
Java.io.File类的使用
1简介在一个程序员编程生涯的过程中,File类的使用是不可跨越的基础,因为有些应用场景导致程序员们必须掌握常用类的使用,比如说文件上传,用户上传附件,程序则要把文件保存到指定位置,从服务器下载文件到指定位置,文件的删除,文件的检索,对于文件的增删改查CURD,当然这主要是针对文件的属性来说的,并非针对文件的内容。File类是java.io包中唯一代表磁盘文件本身对象。File类定义了一些与平台...原创 2019-04-15 12:18:19 · 14278 阅读 · 4 评论 -
Java灵活使用枚举表示一组字符串
public class HelloWorld { public static void main(String []args) { System.out.println("Hello World!"); System.out.println(Season.SPRING.toString()); System.out.println(Season.SPRING.val...原创 2019-05-28 17:45:14 · 8640 阅读 · 0 评论 -
异常:异常与记录日志
/* * 2018年3月28日09:26:29 * 代码目的: * 演示异常与记录日志的使用。 * java.util.logging工具将输出记录到日志中。 * 日志消息被转发到已注册的 Handler 对象, * 该对象可以将消息转发到各种目的地,包括控制台、文件、OS 日志等等。 * 静态的Logger.getLogge...原创 2018-03-28 09:34:11 · 2914 阅读 · 0 评论 -
持有对象:Foreach与迭代器
/* * 2018年3月27日11:22:22 * 代码目的:通过让类型实现Iterable接口,使得IterableClass对象可以用于foreach语句 * public interface Iterable<T>实现这个接口允许对象成为 "foreach" 语句的目标。 体会匿名内部类的使用。和实现Iterable接口 * *///: holding/Iter...原创 2018-03-27 15:15:11 · 355 阅读 · 0 评论 -
字符串:正则表达式的使用
/* * 2018年3月30日15:53:17 * 代码目的: * 演示正则表达式java.util.regex中两个类的使用。 * 1, 导入java.util.regex * 2, 使用static Pattern.compile()方法来编译你的正则表达式, 它会根据你的String类型的正则表达式生成一个Pattern对象。 * 3, 把你想要检索...原创 2018-03-30 16:01:03 · 1097 阅读 · 0 评论 -
字符串:Formatter类应用不同转化时的问题
/* * 2018年3月30日15:45:15 * 代码目的: * 演示使用Formatter类时,不同的转换所带来的效果 * 注意: * 不同类型都可以转换为boolean,对各种类型都是合法的。 * 对于boolean基本类型或Boolean对象,转换结果为对应的true和false * 对其他类型的参数,只要该参数不为n...原创 2018-03-30 15:51:47 · 320 阅读 · 0 评论 -
字符串:Formatter类
/* * 2018年3月30日15:28:34 * 代码目的: * 演示Java中通过Formatter类进行字符串格式化的过程。 * Formatter的构造器经过重载可以接受多种输出目的地,最常用的还是控制台 * public static final PrintStream out = null; out为System类中定义的static final * ...原创 2018-03-30 15:40:54 · 540 阅读 · 0 评论 -
Java类中静态成员的初始化
//: initialization/StaticInitialization.java// Specifying initial values in a class definition./* * 2018年3月20日10:09:27 * 代码位置: java编程思想 P95 * * 代码片目的,为了说明: * 无论创建多少个对象,静态数据都只占用一份存储区域。 *...原创 2018-03-20 10:21:55 · 3728 阅读 · 0 评论 -
Java类中普通成员的初始化顺序
//: initialization/OrderOfInitialization.java// Demonstrates initialization order./* * 2018年3月20日09:53:26 * 代码位置:java编程思想 Page94 * 代码片段主要目的是为了说明: * 1, 在类的内部,变量定义的先后顺序,决定了初始化的顺序。即使变量 * 定义散步于方法定...原创 2018-03-20 10:00:28 · 308 阅读 · 0 评论 -
函数重载时,基本类型的自动提升
//: initialization/PrimitiveOverloading.java// Promotion of primitives and overloading./* * 2018年3月20日09:37:11 * 代码片段说明了: * 基本类型能从一个“较小“的类型自动提升至一个“较大”的类型。 * boolean Boolean * char ...原创 2018-03-20 09:50:20 · 308 阅读 · 0 评论 -
java中break和continue的用法
//: control/LabeledWhile.java// While loops with "labeled break" and "labeled continue."/* * 2018年3月19日15:44:49 * 本代码片段位于Thinking in java Page 73 * 要说明的核心主旨是: * 1, 一般的continue会退回到最内层循环的开头顶部,并继续执...原创 2018-03-19 15:58:40 · 393 阅读 · 0 评论 -
多态:初始化和清理,Java 引用计数的实现
/* * 2018年3月22日19:37:30 * 代码目的: * 通过代码段体会Java引用计数的实现 * *///: polymorphism/ReferenceCounting.java// Cleaning up shared member objects.import static net.mindview.util.Print.*;class Shared...原创 2018-03-22 19:41:16 · 422 阅读 · 0 评论 -
多态缺陷:域与静态方法不会产生多态行为
/* * 2018年3月22日19:08:59 * 代码目的: * 对于域和静态方法的访问不会出现多态行为 * *///: polymorphism/FieldAccess.java// Direct field access is determined at compile time.class Super { public int field = 0; publ...原创 2018-03-22 19:15:08 · 323 阅读 · 0 评论 -
多态缺陷:“覆盖”私有方法
/* * 2018年3月22日18:52:46 * 代码的目的: * 说明“覆盖”私有方法的缺陷。 * 在代码执行的结果中,我们期望能够输出public f(),但输出的是 * private f(), * 这是因为private void f(),是private的,会被编译器自动认为是final方法, * 而且对导出类是屏蔽的。所以导出类定义的f(...原创 2018-03-22 19:05:51 · 311 阅读 · 0 评论 -
字符串:正则表达式组和模式标记的使用
/* * 2018年3月30日16:17:27 * 代码目的: * 演示正则表达式中组的概念和模式标记的使用。 * 组是用括号划分的正则表达式,可以根据组的编号来引用某个组。 * 组号为0表示整个表达式 * A(B(C))D,其中有三个组,组0ABCD, 组1,BC,组2C * "(?m)(\\S+)\\s+((\\S+)\\s+...原创 2018-03-30 16:31:21 · 490 阅读 · 0 评论 -
字符串:正则表达式用于替换操作
/* * 2018年3月30日16:34:22 * 代码目的: * 演示正则表达式用于替换操作。 * 方法见名知义。 * replaceFirst和replaceAll均为类Matcher的普通方法。 * appendReplacement(StringBuffer sbuf, String replacement)执行渐进式的替换 。 * ...原创 2018-03-30 16:49:26 · 3556 阅读 · 0 评论 -
持有对象:Map统计数字分布
/* * 2018年3月27日10:35:02 * 代码目的: * 简单的使用Map统计数字出现频率 * 可以使用containsKey,containsValue来测试一个Map,以便查看它是否半酣某个键或者值 * Map可以轻易的扩展到多维。 * public interface Map<K,V>将键映射到值的对象。一个映射不能包含重...原创 2018-03-27 10:43:30 · 243 阅读 · 0 评论 -
持有对象:List接口的常用方法
/* * 2018年3月27日10:05:52 * 代码位置:P223 * 代码目的: * 说明List接口的常用方法和特征。 * list的常用方法需要多多实践才能灵活使用 * */package holding;//: holding/ListFeatures.javaimport typeinfo.pets.*;import java.util.*;import st...原创 2018-03-27 10:16:30 · 501 阅读 · 0 评论 -
持有对象:添加一组元素
/* * 2018年3月27日09:30:50 * 代码目的:显示向容器中批量添加一组元素的方法。 * 代码位置:P220 * Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5)); 这种方式也是最常用的。 ...原创 2018-03-27 09:38:13 · 486 阅读 · 0 评论