![](https://img-blog.csdnimg.cn/20190829115519487.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java - Programming
文章平均质量分 68
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
Roger_CoderLife
项目开发的六个阶段:1.充满热情2.醒悟3.痛苦4.找出罪魁祸首5.惩罚无辜6.褒奖闲人
展开
-
Java新人入职——配置环境及安装开发工具(完全)
很多新人对于进入新公司,相关工具的安装和环境变量的设定很苦恼。又苦于没有完整的配置开发环境的资料,我这里写一篇操作步骤的案例, 至少让你能把开发工具安装起来,并实用起来,就不会那么无助了。毕竟连开发环境都弄不好的人,leader对你肯定也不抱希望。废话少说,具体操作如下:一、首先肯定是安装jdk1、下载jdk版本这里我的电脑是64位的,用的是Java8 , jdk版本是jdk1.8....转载 2019-09-26 14:13:11 · 360 阅读 · 0 评论 -
利用Java反射机制实现对象相同字段的复制
一、如何实现不同类型对象之间的复制问题?1、为什么会有这个问题?近来在进行一个项目开发的时候,为了隐藏后端数据库表结构、同时也为了配合给前端一个更友好的API接口文档(swagger API文档),我采用POJO来对应数据表结构,使用VO来给传递前端要展示的数据,同时使用DTO来进行请求参数的封装。以上是一个具体的场景,可以发现这样子一个现象:POJO、VO、DTO对象是同一个数据的不同视...转载 2018-12-20 16:57:14 · 1733 阅读 · 0 评论 -
Java登陆验证码的实现流程
我们访问电商网站,登录账号时。都需要验证码的输入。那么在java中,我们是如何实现验证码的呢?这里,我简单介绍一下流程:一、先写一个验证码工具类:package com.yx.cus.util;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.awt.Graphic...转载 2018-12-13 14:32:58 · 1623 阅读 · 0 评论 -
Java代码生成器
来公司一个月了,时间虽然不长,但是我感觉自己还是学到了不少的东西,至少在学校从没有过这样的感觉。并且我也从现在开始写博客了,希望博友能多来浏览,提出批评指正。先来看看我的第一篇博客。事情起源于修改项目的UI(这个过程就不多说了)。我的指导人让我把项目的生成模版修改一下,适应我们的新样式,可是模版是freemarker写的,我完全都不会,没办法,只能自己去摸索了,费了九牛二虎之力终于修改好了。闲...转载 2018-12-03 08:25:16 · 790 阅读 · 0 评论 -
Java8 - 更优雅的字符串连接(join)收集器 Collectors.joining
Java8中的字符串连接收集器在JDK8中,可以采用函数式编程(使用 Collectors.joining 收集器)的方式对字符串进行更优雅的连接。Collectors.joining 收集器 支持灵活的参数配置,可以指定字符串连接时的 分隔符,前缀 和 后缀字符串。代码参考如下:// 定义人名数组final String[] names = {"Zebe", "Hebe",...转载 2018-12-06 09:21:13 · 3684 阅读 · 0 评论 -
Java8 - 对流(数据)进行自定义分块:partitioningBy收集器
partitioningBy收集器在JDK8中,可以对流进行方便的自定义分块,通常是根据某种过滤条件将流一分为二。例如:有一组人名,包含中文和英文,在 JDK8 中可以通过 partitioningBy 收集器将其区分开来。下面是代码例子:// 创建一个包含人名称的流(英文名和中文名)Stream<String> stream = Stream.of("Al...转载 2018-12-05 08:08:10 · 411 阅读 · 0 评论 -
Java - 局部变量和StackOverflowError
本文目的对Java栈内存进行简单学习总结,并了解 -Xss JVM参数的配置,学会在代码中尽量减少不必要的局部变量声明,从而提高程序效率和编码水平。Java栈内存简介Java栈内存空间中主要存放的是局部变量,包括基本数据类型(int、short、byte、long、float、double、char、boolean)和引用数据类型。例如:int a = 1 或者 double x = ...转载 2018-12-07 08:07:50 · 235 阅读 · 0 评论 -
Java8 - 对流(数据)进行自定义分组:groupingBy收集器
groupingBy收集器在JDK8中,可以对流进行方便的自定义分组,就像 SQL 语句中的 groupBy 一样,在JDK8中对应的分组函数是 Collectors 类的 groupingBy 方法。这种特性很有用:把数据拆分成不同的组,可以使处理数据更加灵活方便,在某些情况下例如按需处理、分块处理时更高效。 例如:有一组人名,需要根据首字母(姓氏)进行分组,则可以通过 g...转载 2018-12-04 08:18:59 · 2305 阅读 · 0 评论 -
版本控制工具的必要性、作用、分类和发展历程
一、版本控制工具的作用和必要性所谓版本控制系统(Version Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自...原创 2018-12-03 08:11:20 · 3751 阅读 · 0 评论 -
什么是java的序列化,怎么实现序列化?
一、什么是序列化:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化(将对象转换成二进制)。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 二、在Java中如何实现序列化:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializ...原创 2018-11-23 08:25:35 · 1527 阅读 · 0 评论 -
Java过滤器Filter详解
一、过滤器的定义:过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。如图,浏览器发出的请求先递交给第一个filter进行过滤,符合规则则放行,递交给filter链中的下一个过滤器进行过滤。过滤器在链中的顺序与它在web.xml中配置的顺序有关,配置在...原创 2018-11-22 08:33:19 · 536 阅读 · 0 评论 -
Java8-惰性求值
什么是惰性求值(惰性计算)惰性求值也叫惰性计算、延迟求职,在函数式编程语言中随处可见。可以这样通俗地理解为:**不对给出的表达式立即计算并返回值,而是在这个值需要被用到的时候才会计算。**这个是个人理解,有关专业的术语定义请参考百度百科:https://baike.baidu.com/item/惰性计算什么是及早求值(热情求值)和惰性求值相反的是及早求值(热情求值),这是在大多数编程语...转载 2018-11-15 11:39:54 · 774 阅读 · 0 评论 -
Java8 - Map新增的方法:computeIfAbsent
computeIfAbsent这个方法是JDK8中Map类新增的一个方法,用来实现当一个KEY的值缺失的时候,使用给定的映射函数重新计算填充KEY的值并返回结果。computeIfAbsent 方法的JDK源码如下:default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFuncti...转载 2018-11-19 11:47:55 · 308 阅读 · 0 评论 -
Java8 - Map更优雅的迭代方式:forEach
BiConsumer用于两个参数之间进行操作的函数式接口是 BiConsumer。这个函数式接口正好用来操作 Map 的 key 和 value。JDK8强化了针对 Map 类的迭代方式,新增了一个默认方法 forEach,它接收一个 BiConsumer 函数。JDK给出的描述如下:Performs the given action for each entry in this m...转载 2018-11-21 10:52:54 · 658 阅读 · 0 评论 -
Java8 - 定制归一化收集器(reducing)得到自定义结果集
reducing简介reducing 是一个收集器(操作),从字面意义上可以理解为“减少操作”:输入多个元素,在一定的操作后,元素减少。reducing 有多个重载方法,其中一个方法如下:public static <T> Collector<T,?,Optional<T>> reducing(BinaryOperator<T> o...转载 2018-11-19 09:04:40 · 1217 阅读 · 0 评论 -
Java8-高阶函数及判断高阶函数的方式
什么是高阶函数高阶函数是指接受另外一个函数作为参数,或返回一个函数的函数。什么样的参数是函数类型的参数?要看该参数是否是一个函数式接口,函数式接口只会有一个方法,会使用 @FunctionalInterface 这个注解来修饰。高阶函数在 Java8 中很常见,如以下的例子:Stream<Integer> numUp = Stream.of(1, 2, 5).map(nu...转载 2018-11-16 10:45:06 · 1136 阅读 · 1 评论 -
Java8-Lambda表达式的5种形式
形式一:这种写法没有参数,用一对圆括号表示。Runnable noArguments = () -> System.out.println("Hello World");形式二:这种写法只有1个参数,可以省略括号,下面的 event 相当于 (event)。ActionListener oneArgument = event -> System.out.pri...转载 2018-11-16 09:38:23 · 1776 阅读 · 0 评论 -
Java9模块化简明例子
个人对Java9的模块化的理解个人对Java9模块化的简单理解是:模块是 package 的容器,是 package 的上一层。在模块里,可以输出(管理)当前模块哪些包是对外暴露(exports)的。同样的,当前模块需要别的模块,就要引用(requires)进来。Java9模块化的例子使用Idea创建一个项目 java-9-module-demo,添加两个模块:module-mai...转载 2018-12-10 08:35:46 · 349 阅读 · 0 评论 -
Java 11 中 11 个不为人知的瑰宝
作者 | 作者 | Nicolai Parlog译者 | 罗昭成本篇译文首发于 CSDN 微信(ID:CSDNnews) Java 11 的升级介绍里面没有什么跨时代的特性,但是有一些不为人知的瑰宝,像沙砾中的钻石一般。当然,你肯定了解到了一些特性,比如说响应式的 HTTP/2 的 API ,不需要编译就可以直接运行源代码等。但是,你是否有去尝试过 String 、Optio...转载 2018-12-11 08:04:04 · 341 阅读 · 0 评论 -
Java工程师成神之路
一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, jstack, jmap, jconsole, jinfo,...转载 2019-09-25 09:32:08 · 141 阅读 · 0 评论 -
浅谈StringBuffer构造方法及扩容
目录StringBuffer的构造方法 StringBuffer的扩容StringBuffer的构造方法这是StringBuffer的类图,StringBuffer继承AbstractStringBuilder。StringBuffer中的构造方法都调用了其父类的构造方法,因此在了解StringBuffer的构造方法前有必要了解一下它们俩的成员变量。以上是Abst...原创 2020-05-21 08:28:11 · 768 阅读 · 0 评论 -
为什么阿里巴巴禁止工程师直接使用日志系统(Log4j、Logback)中的 API
作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用。很多时候,日志可能是我们了解应用程序如何执行的唯一方式。所以,日志在Java Web应用中至关重要,但是,很多人却以为日志输出只是一件简单的事情,所以会经常忽略和日志相关的问题。在接下来的几篇文章中,我会来介绍介绍这个容易被大家忽视,但同时也容易导致故障的知识点。Java语言之所以强大,就是因为他很成熟的生态体...转载 2019-03-11 09:28:16 · 272 阅读 · 0 评论 -
运用 Java 8 写一个 HTTP 请求工具类
三年多以前写过一个 HTTP 请求类,然后又将其改进为“链式风格”的调用方式。虽然目标上可以实现需求,大致也没用重复的逻辑,但是编码上总是觉得怪怪的,当时又说不上哪里不对劲,总之尽管逻辑没错能实现,然而就是感觉谈不上“优雅”。限于当时水平就那样,想不出办法也就没去专研了。应该说,现在的 Java 8 的函数式风格给予了我完全不一样的灵感。使用 lambda(匿名函数),与使用普通 Java 函...转载 2019-02-13 08:25:25 · 1107 阅读 · 0 评论 -
Response + Servlet实现文件下载功能
1、获取文件名:request.getParameter()方法2、获取文件类型名称:getServletContext().getMimeType()方法3、设置响应文件类型名称(解决文件类型无法识别问题):response.setContentType()方法4、设置浏览器以附件形式进行识别(可以实现直接弹窗下载):response.setHeader("Content-Dispo...转载 2019-02-11 09:11:31 · 294 阅读 · 0 评论 -
java 注解实现一个可配置线程池
前言 项目需要多线程执行一些Task,为了方便各个服务的使用。特意封装了一个公共工具类,下面直接撸代码:PoolConfig(线程池核心配置参数):/** * <h1>线程池核心配置(<b style="color:#CD0000">基本线程池数量、最大线程池数量、队列初始容量、线程连接保持活动秒数(默认60s)</b>)</h1&...转载 2019-02-11 08:40:33 · 416 阅读 · 0 评论 -
Java泛型中E、T、K、V等的含义
Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型)? - 表示不确定的java类型 S、U、V - 2nd、3rd、4th typesObject跟这些标记符代表的java类型有啥区别呢? Obje...转载 2019-02-02 10:35:13 · 415 阅读 · 0 评论 -
深度解析单例与序列化之间的爱恨情仇~
本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏。单例模式,是设计模式中最简单的一种。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。关于单例模式的使用方式,可以阅读单例模式的七种写法但是,单例模式真的能够实...转载 2019-02-01 23:49:40 · 210 阅读 · 0 评论 -
Java8新特性之Stream流实战
Stream 流的各种实战学习了 Stream 之后,我们会遇到一个问题,就是如何使用Stream 流来进行我们的数据处理。准备工作创建一个 Employ 类public class Employ{ private String id; private String name; private int age; private String dept; privat...转载 2019-02-15 10:08:07 · 294 阅读 · 0 评论 -
Java:那些关于集合的知识都在这里了!
前言在Java中,集合的使用可谓是重中之重 本文将献上一份 全面 & 详细的Java集合学习攻略,希望您们会喜欢。 目录 1. 简介 2. 与数组的区别Java集合 与 常用数组的区别如下: 3. 集合类型Java集合的类型可分为Set、List、Map、Queue 4种 具体介绍如下 下面会更加详细地说明 ...转载 2018-12-19 09:16:10 · 149 阅读 · 0 评论 -
Java:多态乃幸福本源
01 多态是什么在我刻板的印象里,西游记里的那段孙悟空和二郎神的精彩对战就能很好的解释“多态”这个词:一个孙悟空,能七十二变;一个二郎神,也能七十二变;他们都可以变成不同的形态,但只需要悄悄地喊一声“变”。Java的多态是什么呢?其实就是一种能力——同一个行为具有不同的表现形式;换句话说就是,执行一段代码,Java在运行时能根据对象的不同产生不同的结果。和孙悟空和二郎神都只需要喊一声“变”...转载 2018-12-17 16:49:57 · 134 阅读 · 0 评论 -
Java接口的实例应用:致敬我的偶像——何塞·穆里尼奥
文/沉默王二曹操在《短歌行》中为杜康酒打过一个价值一亿个亿的广告——“何以解忧,唯有杜康”,我替曹操感到惋惜的是他本人并不会收到这笔不菲的代言费。想一想,要是三国时期的明星人物们有这个代言意识的话,保证各家的军费收入会多出来一个重量级的来源。不过,酒真的能解忧吗?我不大敢相信。李白就曾质疑过:“举杯消愁愁更愁,抽刀断水水更流。”我和李白持相同的观点,酒啊,真的不容易解忧,但绝对可以增...转载 2018-12-21 15:19:38 · 302 阅读 · 0 评论 -
js 实现 pdf 在线预览 打印 【完整版】
今天想写的内容 因为网上有用的太少了,自己半摸索的实现了【文末有源码代码下载链接】。1.说下需求:点击标题 跳转 预览的pdf 页,下载功能 可选【最好有】。 2.实现结果 : 3.代码实现:依赖pdf.js 【需要下载完整 控件】下载官网:http://mozilla.github.io/pdf.js/点击 ‘Download ’ 到下载...转载 2018-12-12 08:09:11 · 5092 阅读 · 0 评论 -
用JS在html页面实现打印功能
用JS在html页面实现打印功能打印方式一: 打印方式二: 打印方式三(此方式会重新打开一个浏览器窗口):做项目时,有在网页实现全局和局部打印的需求,百度许久,现总结如下: 打印方式一:1.首先在head里面加入下面一段js代码:<script language="javascript">function preview(fang){if (fang...转载 2018-12-11 13:08:47 · 4927 阅读 · 0 评论 -
java实现音频文件的播放
实现思路1、首先获取音频文件的地址,然后通过IO流读取音频文件,加缓冲区,实现Player类的对象。2、Player类主要用于播放器的初始化,以及通过它来实现一些音视频文件的播放,这个类需要手动去网上下载,然后添加路径到我们Eclipse的library中。3、Player类有两种方法比较常用,play()方法和close()方法,前者用于启动音频文件,后者用于退出音频文件的播放,这两个方...转载 2018-12-21 08:25:54 · 3229 阅读 · 0 评论 -
Java8-转为流为基本数据类型求最大值、最小值、平均值、求和、计数
基本数据类型在高阶函数中的运用众所周知,在Java中使用基本数据类型的性能和产效率远高于包装类型。由于装箱类型是对象,因此在内存中存在额外开销。比如,整型在内存中占用4 字节,整型对象却要占用 16 字节。这一情况在数组上更加严重,整型数组中的每个元素只占用基本类型的内存,而整型对象数组中,每个元素都是内存中的一个指针,指向 Java堆中的某个对象。在最坏的情况下,同样大小的数组, Integ...转载 2018-11-14 14:38:22 · 1062 阅读 · 0 评论 -
Java并发编程的艺术:Condition的实现分析
ConditionObject是同步器AbstractQueuedSynchronizer的内部类,因为Condition的操作需要获取相关联的锁,所以作为同步器的内部类也较为合理。每个Condition对象都包含着一个队列(以下称为等待队列),该队列是Condition对象实现等待/通知功能的关键。下面将分析Condition的实现,主要包括:等待队列、等待和通知,下面提到的Conditio...转载 2018-11-12 14:19:20 · 126 阅读 · 0 评论 -
Java高效编程之Builder模式
前言在《Effective Java 第2版》中有提到,遇到多个构造器参数时要考虑使用构建器(Builder模式)。相比于重叠构造器(telescoping constructor)模式和JavaBeans模式,Builder模式实现的对象更利于使用。 下面从一个Person例子进行分析以上三种设计模式的使用,Person类有两个必要参数(id和name),有5个可选参数(age,sex,p...转载 2018-10-23 17:08:14 · 113 阅读 · 0 评论 -
远程通信(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比
总结这些概念都是易混淆,最基本概念定义复习和深入理解,同时也是架构师必备课程RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成“classname.methodname”形式。优点是跨语言跨平台,C端、S端有更大的独立性,缺点是不支持对象...转载 2018-10-25 15:10:59 · 401 阅读 · 0 评论 -
Java RMI与RPC的区别
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6542811.html 一:RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。 一次RPC调用的过程大概有10步: 1.执行客户端调用语句,传送参数 2.调用本地系统发送网络消息 ...转载 2018-10-25 14:52:04 · 103 阅读 · 0 评论 -
Java 下载 Excel模板
/** * 下载导入应用模板 * * @return */ @ResponseBody @RequestMapping(method = RequestMethod.GET) public Response getApplicationTemplate(HttpServletRequest req, HttpServletRespo...转载 2018-10-17 17:09:15 · 1176 阅读 · 0 评论