自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (1)
  • 收藏
  • 关注

原创 【项目经验】分布式ID生成解决方案

分布式唯一ID生成解决方案——snowflake雪花算法如何在分布式集群中,生成全局唯一的ID?1. UUIDUUID是通用唯一识别码 (Universally Unique Identifier),在其他语言中也叫GUID,可以生成一个长度32位的全局唯一识别码。String uuid = UUID.randomUUID().toString()优点:简单,生成方便生成Id...

2019-09-08 16:14:47 260

原创 【JavaSe】网络编程篇(四) 使用网络编程模拟B/S服务器

JavaSe·网络编程篇(四) 使用网络编程模拟B/S服务器1. 分析模拟服务器端,ServerSocket类监听端口,使用浏览器访问public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8000); Socket socket = serv...

2019-09-02 23:39:41 503 3

原创 【JavaSe】网络编程篇(三) 使用网络编程完成文件上传

JavaSe·网络编程篇(三) 使用网络编程完成文件上传1. 文件上传分析图解【客户端】输入流,从硬盘读取文件数据到程序中。【客户端】输出流,写出文件数据到服务端。【服务端】输入流,读取文件数据到服务端程序。【服务端】输出流,写出文件数据到服务器硬盘中。2. 基本实现文件上传服务端实现:public class FileUpload_Server { public st...

2019-09-02 23:09:49 408

原创 【JavaSe】网络编程篇(二) TCP通信程序

JavaSe·网络编程篇(二) TCP通信程序1. TCP通信概述TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)*** 两端通信时步骤:服务端程序,需要事先启动,等待客户端的连接。客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。在Java中,提供了两个类用于实现TCP通信程序:客户端: ...

2019-09-02 21:56:14 258

原创 【JavaSe】网络编程篇(一) 网络编程入门

JavaSe·网络编程篇(一) 网络编程入门1. 软件结构C/S结构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、百度网盘等软件B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通...

2019-09-02 21:06:24 319

原创 【Spring】基础入门篇(二十一) Spring5新特性

Spring·基础入门篇(二十一) Spring5新特性1. jdk 版本升级spring5.0 在 2017 年 9 月发布了它的 GA(通用)版本。该版本是基于 jdk8 编写的,所以 jdk8 以下版本将无法使用。同时,可以兼容 jdk9 版本tomcat 版本要求 8.5 及以上我们使用 jdk8 构建工程,可以降版编译。但是不能使用 jdk8 以下版本构建工程。2 利...

2019-08-30 19:17:08 314

原创 【Spring】基础入门篇(二十) SpringMVC 中的拦截器

Spring·基础入门篇(二十) SpringMVC 中的拦截器1. SpringMVC拦截器作用SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有区别过滤器是Servlet规范的一部分,任何框架都可以使...

2019-08-30 18:34:19 279

原创 【Spring】基础入门篇(十九) SpringMVC中的异常处理

Spring·基础入门篇(十九) SpringMVC中的异常处理1. 异常处理的思路系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc ...

2019-08-30 17:18:06 384

原创 【Spring】基础入门篇(十八) SpringMVC实现文件上传

Spring·基础入门篇(十八) SpringMVC实现文件上传1. SpringMVC 传统方式的文件上传1.1 说明传统方式的文件上传,指的是我们上传的文件和访问的应用存在于同一台服务器上。1.2 实现步骤第一步: 导入相应的文件上传jar包坐标<dependency> <groupId>commons-fileupload</groupId&gt...

2019-08-30 17:06:33 286

原创 【Spring】基础入门篇(十七) SpringMVC响应数据和结果视图

Spring·基础入门篇(十七) SpringMVC响应数据和结果视图1. 返回值分类1.1 返回字符串controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/WEB-INF/pages/success.jsp@RequestMapping("/testReturnString")publi...

2019-08-30 13:43:05 312

原创 【Spring】基础入门篇(十六) SpringMVC常用注解

Spring·基础入门篇(十六) SpringMVC常用注解1. RequestParam1.1 使用说明作用:把请求中指定名称的参数给控制器中的形参赋值属性:value:请求参数中的名称required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错1.2 使用示例jsp:控制器:1. RequestParam1.1 使用...

2019-08-30 09:54:53 342

原创 【Spring】基础入门篇(十五) SpringMVC请求参数的绑定

Spring·基础入门篇(十五) SpringMVC请求参数的绑定1. 绑定的机制表单中请求参数都是基于 key=value 的。SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的。例如:2. 支持的数据类型基本类型参数:包括基本类型和 String 类型POJO 类型参数:包括实体类,以及关联的实体类数组和集合类型参...

2019-08-30 01:42:05 428

原创 【Spring】基础入门篇(十四) SpringMVC的入门案例

Spring·基础入门篇(十二) SpringMVC的入门案例1. 编写入门程序案例1.1 创建Maven的WEB工程1.2 导入pom.xml坐标<!-- 版本锁定 --><properties> <spring.version>5.0.2.RELEASE</spring.version></properties>...

2019-08-30 00:18:14 419

原创 【Spring】基础入门篇(十三) SpringMVC的基本概念

Spring·基础入门篇(十一) SpringMVC的基本概念1. 关于三层架构和 MVC1.1 三层架构我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构中,每一层各司其职...

2019-08-29 22:46:10 365

原创 【Spring】基础入门篇(十二) Spring中的事务控制

Spring·基础入门篇(十一) Spring中的事务控制1. Spring 中事务控制的 API 介绍1.1 PlatformTransactionManager此接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的方法:获取事务状态信息TransactionStatus getTransaction(TransactionDefinition definition...

2019-08-29 20:09:01 337

原创 【Spring】基础入门篇(十一) SpringJDBC之JdbcTemplate

Spring·基础入门篇(十一) SpringJDBC之JdbcTemplate1. JdbcTemplate 概述它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。Spring 框架为我们提供了很多的操作模板类。操作关系型数据的:JdbcTemplateHibernateTemplate操作 nosql 数据库的:RedisTemplat...

2019-08-29 19:00:19 416

原创 【Spring】基础入门篇(十) 基于注解的SpringAOP配置

Spring·基础入门篇(十) 基于注解的SpringAOP配置1. 环境搭建基于注解方式配置AOP实现日志系统为案例第一步:创建普通Maven工程第二步:导入pom.xml坐标<dependency> <groupId>org.springframework</groupId> <artifactId>spring-...

2019-08-29 16:40:20 333

原创 【Spring】基础入门篇(九) 基于XML的SpringAOP配置

Spring·基础入门篇(九) 基于XML的SpringAOP配置1. 环境搭建基于XML方式配置AOP实现日志系统为案例第一步:创建普通Maven工程第二步:导入pom.xml坐标<dependency> <groupId>org.springframework</groupId> <artifactId>sprin...

2019-08-29 15:55:13 378

原创 【Spring】基础入门篇(八) SpringAOP相关概念

Spring·基础入门篇(八) SpringAOP相关概念1. AOP概述1.1 什么是 AOPAOP:全称是 Aspect Oriented Programming 即面向切面编程简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。1.2 AOP 的作用及优势作用:在程序运行期间,不修改源码对已有...

2019-08-29 15:08:53 447

原创 【Spring】基础入门篇(七) 基于注解方式的SpringIoC实现CRUD

Spring·基础入门篇(七) 基于注解方式的SpringIoC实现CRUD1. 需求和技术要求1.1 需求实现账户的 CRUD 操作1.2 技术要求基于注解方式使用 spring 的 IoC 实现对象的管理使用 DBUtils 作为持久层解决方案使用 c3p0 数据源2. 环境搭建2.1 创建Maven的普通工程2.2 导入pom.xml坐标<depende...

2019-08-28 23:04:16 387

原创 【Spring】基础入门篇(六) Spring基于注解的IOC配置

Spring·基础入门篇(六) Spring基于注解的IOC配置1. 认识注解IoC配置注解配置和 xml 配置要实现的功能都是一样的,都是要降低程序间的耦合。只是配置的形式不一样2. 环境搭建2.1 创建Maven的普通工程2.2 导入pom.xml坐标<dependency> <groupId>org.springframework</gr...

2019-08-28 22:53:31 347

原创 【Spring】基础入门篇(五) 使用SpringTest整合JUnit编写测试类

Spring·基础入门篇(五) 使用SpringTest整合JUnit编写测试类1. 分析测试中的问题在测试类中,每个测试方法都有以下两行代码:ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");IAccountService as = ac.getBean("accountService",IAc...

2019-08-28 20:08:50 1556

原创 【Spring】基础入门篇(四) 基于XML方式的SpringIoC实现CRUD

Spring·基础入门篇(四) 基于XML方式的Spring IoC实现CRUD1. 需求和技术要求1.1 需求实现账户的 CRUD 操作1.2 技术要求使用 spring 的 IoC 实现对象的管理使用 DBUtils 作为持久层解决方案使用 c3p0 数据源2. 环境搭建2.1 创建Maven的普通工程2.2 导入pom.xml坐标<dependencie...

2019-08-28 19:49:07 361

原创 【Spring】基础入门篇(三) IoC的概述和SpringIoC解决程序耦合

Spring·基础入门篇(三) IoC的概述和Spring IoC解决程序耦合1. 控制反转(Inversion Of Control)使用工厂类解耦合,我们在程序启动时工厂就负责读取配置文件,并创建好所有对象,存进一个Map容器中,此时我们获取对象的方式就发生了改变:原来: 我们在获取对象时,都是采用 new 的方式。是主动的。现在:我们获取对象时,同时跟工厂要,有工厂为我们查找或者...

2019-08-28 18:34:13 363

原创 【Spring】基础入门篇(二) 程序的耦合和解耦

Spring·基础入门篇(二) 程序的耦合和解耦1. 程序的耦合和解耦1.1 什么是程序的耦合耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独...

2019-08-28 16:12:42 697

原创 【Spring】基础入门篇(一) Spring概述

Spring·基础入门篇(一) Spring概述1. Spring是什么?Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 SpringMVC 和持久层 Spring JDBC 以及业...

2019-08-28 15:10:25 521

原创 【JavaSe】高级特性篇(十五) Java12新特性Switch表达式

JavaSe·高级特性篇(十五) Java12新特性Switch表达式前言:JDK12发布2019年3月20日,Java 12 正式发布了新特性:Switch Expressions这是一个为开发者准备的特性,我们可以利用具体代码快速了解一下,下面是传统 statement 形式的 switch 语法:switch (day) { case MONDAY: case FRID...

2019-08-28 01:18:33 812

原创 【JavaSe】高级特性篇(十四) Java11的五大新特性

JavaSe·高级特性篇(十四) Java11的五大新特性前言: JDK 11发布北京时间 2018年9 月 26 日,Oracle 官方宣布 Java 11 正式发布。这是 Java 大版本周期变化后的第一个长期支持版本,非常值得关注。从官网即可下载,最新发布的 Java11 将带来 ZGC、Http Client 等重要特性。JDK 11 将是一个 企业不可忽视的版本。从时间节点...

2019-08-28 00:47:34 797

原创 【JavaSe】高级特性篇(十三) Java10新特性局部变量类型推断

JavaSe·高级特性篇(十二) Java10新特性局部变量类型推断前言:JDK10发布2018年3月21日,Oracle官方宣布Java10正式发布。需要注意的是 Java 9 和 Java 10 都不是 LTS (Long-Term-Support) 版本。和过去的 Java 大版本升级不同,这两个只有半年左右的开发和维护期。而未来的 Java 11,也就是 18.9 LTS,才是...

2019-08-28 00:29:35 443

原创 【JavaSe】高级特性篇(十二) Java9主要的9大新特性

JavaSe·高级特性篇(十二) Java9新特性前言: JDK9的发布经过4次跳票,历经曲折的Java 9 终于终于在2017年9月21日发布。从Java 9 这个版本开始,Java 的计划发布周期是 6 个月,下一个 Java 的主版本将于 2018 年 3 月发布,命名为 Java 18.3,紧接着再过六个月将发布 Java18.9。这意味着Java的更新从传统的以特性驱动的发...

2019-08-28 00:17:16 464

原创 【JavaSe】高级特性篇(十一) Java8新特性Optional类

JavaSe·高级特性篇(十一) Java8新特性Optional类1. Optional类引入到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成...

2019-08-27 23:17:29 638

原创 【JavaSe】高级特性篇(十) Java8新特性Stream流

JavaSe·高级特性篇(十) Java8新特性Stream流1. 引言1.1 传统集合的多步遍历代码几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历public static void main(String[] args) { List<...

2019-08-27 23:02:15 883

原创 【JavaSe】高级特性篇(九) Java8新特性方法引用

JavaSe·高级特性篇(九) Java8新特性方法引用1. 方法引用引入1.1 冗余的 Lamdba 场景在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑?来看一个简单的函数式接口以应用Lambda表达式:@Functiona...

2019-08-27 22:26:24 513

原创 【JavaSe】高级特性篇(八) Java8新特性函数式接口

JavaSe·高级特性篇(八) Java8新特性函数式接口1. 函数式接口1.1 概念函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。“语法糖”是指使用更加...

2019-08-27 19:45:10 567

原创 【JavaSe】高级特性篇(七) Java8新特性Lambda表达式

JavaSe·高级特性篇(七) Java8新特性Lambda表达式1. 函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成...

2019-08-27 19:02:25 537

原创 【JavaSe】高级特性篇(六) Java高级特性动态代理

JavaSe·高级特性篇(六) Java高级特性动态代理1. 动态代理概述动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象,在不改变目标对象方法的情况下对方法进行增强2. Java动态代理相关APIProxy :专门完成代理的操作类,是所有动态代理类的父类。通过此类为一个或多个接口动态地生成实现类。提供用于创建动态代理类和动态代理对象...

2019-08-27 18:17:17 502

原创 【JavaSe】高级特性篇(五) Java高级特性类加载和类加载器

JavaSe·高级特性篇(五) Java高级新特性类加载和类加载器1. 了解类加载过程当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口(即引用地址)。所有需要...

2019-08-27 16:15:16 475

原创 【JavaSe】高级特性篇(四) Java高级特性反射机制

JavaSe·高级特性篇(四) Java高级新特性反射机制1. Java Reflection 概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整...

2019-08-27 15:43:51 540

原创 【JavaSe】高级特性篇(三) Java高级特性注解

JavaSe·高级特性篇(三) Java高级新特性注解1. 注解(Annotation)概述1.1 定义定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。1.2 与注释的区别注解:说明程序的。给计算机看...

2019-08-27 14:07:50 531

原创 【JavaSe】高级特性篇(二) Java高级特性枚举

JavaSe·高级特性篇(二) Java高级新特性注解1. 为什么需要枚举一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值。此类问题在JDK 1.5 以前采用自定义带有枚举功能的类解决,Java 5.0以后可以直接使用枚举予以解决。 JDK 1.5 新增的Enum 关键字用于定义一个枚举类。2. 枚举的使用类的对象只有有限个,确定的。举例如下:星期:Monday...

2019-08-27 13:30:53 529

Java程序员的学习指南.xmind

Java程序员从初级到架构师最全学习指南,分别从JavaSe,数据库,JavaEE,前端,分布式,微服务,开源框架...

2019-08-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除