自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

feigeswjtu的专栏

菜鸟飛哥成长经历

  • 博客(145)
  • 资源 (2)
  • 论坛 (2)
  • 收藏
  • 关注

原创 String, StringBuilder, StringBuffer深入解析

网上太多讲解String, StringBuilder, StringBuffer的区别了,但是大多数都浅尝而止,大多数只是提到String是字符串常量,因为它是常量,所以也是线程安全的,StringBuilder和StringBuffer的区别是后者是线程安全的,还有很多细节没有介绍到,尽自己之能补充一下。先上一张类结构图。可变性总所周知,String类是一个不可变类也就是final 符...

2020-05-07 15:23:30 63

原创 零XML配置 SpringMVC 进阶之路 - 配置FreeMarker

上一篇文章,我们讲解了添加消息转换器的过程,消息转换器只有在@ResponseBody注解下才能生效,也就是我们说的Rest接口,那么渲染页面怎么配置呢? 一般情况下,SpringMVC肯定少不了Views层,主流的Views框架有FreeMarker, Velocity, Tiles, Groovy Markup 和JSP,而我比较喜欢FreeMarker,因为它的语法和Rails很像(笔者是...

2018-02-08 20:39:33 576

原创 零XML配置 SpringMVC 进阶之路 - 配置消息转换器

上一篇文章我们搭建好了基础环境,写了一个简单的controller。 使用RestController写一个简单的接口,返回了一串”helloWorld”字符串,现在我们改下controller的内容:@RestController@RequestMapping("/api")public class TestController { @GetMapping("/hello"

2018-02-07 16:07:26 1501

原创 零XML配置 SpringMVC 进阶之路 - 搭建环境

写了快两年的Java代码了,发现自己居然不会搭建一套Spring mvc环境出来,只会添砖加瓦,说来就惭愧了,为了弥补这点的缺陷,也为了以后更好的借助已有的SpringMVC项目学习更多的知识,我决定从零搭建一套自己的SpringMVC。网上搜索大部分都是基于XML配置的环境搭建,基于XML大部分是因为历史项目的原因无法切换成基于JavaConfig来进行配置,但是基于JavaConfig是未

2018-02-06 15:34:26 356

原创 Java源码分析 - ThreadLocal

为什么要写这篇文章网上很多文章都在讲ThreadLocal的意义所在,然后大部分都在说ThreadLocal是为了解决线程安全而生的,旨在解决并发安全问题,这种说法是片面的,导致很多人理解不到ThreadLocal真正用途ThreadLocal是什么ThreadLocal翻译过来是线程局部变量,而不是本地线程。ThreadLocal是为了解决在一个线程中,某个或者某些资源在不同层次

2018-02-05 11:06:13 195

原创 Java集合框架源码分析 - RandomAccess

在JDK的源码里有一个RandomAccess接口,这个接口没有任何方法需要实现,那么它是干什么用的呢?public interface RandomAccess {}官方文档解释如下:接口RandomAccess被List实现用来指示它们支持快速的(通常是恒定的)随机访问。此接口的主要目的是允许通用算法改变其行为,以便在应用于随机或顺序访问列表时提供良好的性能。 用于处理随机

2018-01-31 21:25:07 369

原创 Java集合框架源码分析 - Collection接口

Collection是所有列表类容器的顶层接口,在Collection框架的位置如下图所示,没有类直接实现Collection接口的,Collection和真正的实现类中间会有其他接口或者抽象类存在,后面我们一个一个的讲。 Collection接口作为Collection框架的顶层接口,几乎声明了所有Collection型容器的所有方法,是否重复List和Set接口对它进行了补充,我们看下C

2018-01-31 16:28:44 175

原创 Java集合框架源码分析 - Iterable

上一篇文章我们讲了Java容器的概况包括Collection和Map框架,Collection最顶上的接口是java.lang.Iterable,Collection里的其他类和接口都是在java.util里,但是Iterable确实在java.lang下。Iterable翻译成中文就是可迭代的,就是说实现了Iterable接口的类必须是可迭代的类,Iterable声明了以下三个方法:

2018-01-30 16:03:33 144

原创 Java集合框架源码分析 - 概览

概况容器,顾名思义,就是可以容纳东西的器物,在Java语言中就是可以容纳其他Java对象的对象,优点有很多:降低编程难度提高程序性能提高API间的互操作性降低学习难度降低设计和实现相关API的难度增加程序的重用性Java容器里只能放对象,对于基本类型(byte, int, long, float, double等),需要将其包装成其对象类型后(Integer, Long,

2018-01-29 20:38:47 200

原创 记一次方案设计的前瞻性

方案设计一定要有前瞻性,要从方方面面考虑,比如性能、扩展性等,这个是开发人员必备的一个素质,但是这次方案设计却是关于存储容量的考虑。需求背景商品的信息比如价格、优惠券字段是通根据淘宝的api来更新,这个更新是个定时任务,一小时更新一次,由于偶尔会有商品的信息不符合要求,为了更好的排查类似这样的问题,一个月前产品提了一个需求,对所有的抓取信息添加抓取日志,并且可以在商品列表页定位到这个日

2018-01-26 11:31:47 421

原创 Spring MVC的数据流图

Spring 大多数是用来搭建web程序的,Spring的web框架帮我们做了很多事情,让我们可以更多的专注于我们的业务代码,接触过Spring MVC开发的都知道什么是MVC(Model、View、Controller),但是Spring MVC的请求过程是怎么样的,估计一部分人都不清楚,下图是SpringMVC的请求流程。 用户发起请求到Servlet,也就是Spring MVC的Di

2018-01-15 20:04:02 1194

原创 Spring AOP 和 AspectJ 详解

最近在看《Spring 实战》,说真的第四章《面向切面编程的Spring》讲的真心很烂,看了几遍都不清楚到底要表达什么,也没有讲清楚Spring AOP 和 AspectJ的区别关系,终于让我找到了一篇文章关于 Spring AOP (AspectJ) 你该知晓的一切,写的是真好,这里记录一下。接下来举个我自己项目代码的例子。 我们知道,很多时候,要判断当前用户是否已经登录,也就是进行鉴权,

2018-01-14 20:16:05 891

原创 Java反射之java.lang.reflect.Constructor

我们知道每个类都至少有一个构造器,因为一个类如果没有显示定义一个构造器,编译器自动会自动生成一个默认无参的构造器,构造器作为一个类的入口方法,在使用类的成员变量和方法之前,类的构造器必须被调用,生成一个实例,另外构造器不能被继承,如果子类的构造器没有显示的调用父类的构造器,执行器会默认的调用父类的构造器。 说了这么多,我们该进入正题了,本文讲解一个反射中怎么获取一个构造器的声明、参数等信息,怎么

2018-01-14 10:42:24 3630

转载 Java中ReentrantLock和synchronized两种锁机制比较

原文出处: https://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 摘要新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronized。多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个

2018-01-12 08:37:19 242

原创 Spring高级装配之指定Bean

在我们使用@Autowired时,如果我们注入的Bean只有一个,那么自动装配会找到我们定义的那个Bean装配进去,如果我们定义了多个时,通过@Autowired装配时就会抛出异常,举个例子: 我们根据接口注入了一个Bean:@Autowiredprivate Dessert dessert;而我们声明了多个Bean:@Componentpublic class Cookie

2018-01-11 20:42:41 659

原创 Spring高级装配之条件化装配

根据环境变量装配Bean 我们将了怎么使用@Profile来装配对应的Bean,现在有时候,我们需要更细的条件来判断是否要装配某个Bean,比如在应用的类路径下有特定的库,某个环境变量是我们要的值等等,该怎么做呢?@ConditionalSpring提供给了我们一个注解@Conditional来做到这个事情,我们举个例子,例子的逻辑是如果环境变量里有magic属性,我们才会创建Magi

2018-01-11 20:15:55 368

原创 Spring高级装配之Profile

很多情况下,我们需要在不同的环境下装配不同的Bean,比如数据库,测试环境我们想用嵌入式数据库,开发环境我们想用mysql,线上环境我们想用oracle,总不能每次上线都要改代码吧。 Spring提供给了我们@Profile来根据我们的环境确定我们要装配哪儿种Bean。JavaConfig中使用Profile直接上代码:@Configurationpublic class

2018-01-11 19:37:31 130

原创 Java中的语法糖

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。Java语法糖的种类java7(含)之前的语法糖主要包括以下语法:泛型 自动装箱和

2018-01-08 21:25:47 877

原创 Java之常量折叠

常量折叠是Java在编译期做的一个优化,简单的来说,在编译期就把一些表达式计算好,不需要在运行时进行计算。 比如: int a = 1 + 2,经过常量折叠后就变成了int a = 3。 我们举个例子:public class Main { public static void main(String[] args) { String s1 = "a" + "b

2018-01-07 19:28:32 1085 2

原创 Java类加载机制(初始化顺序)

之前写过一篇关于Java中普通代码块和static代码块的区别,大致讲解了普通代码块和Static代码的区别,但是并没有讲它们的加载执行顺序,本章就细细的将一下类的加载机制(初始化顺序)。类生命周期类的字节码从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resoluti

2018-01-06 16:25:16 975

原创 Spring装配Bean之XML装配Bean

上一篇文章我们讲了如何使用Java告诉Spring怎么装配Bean,这章讲解一下一个古老的方式,也就是通过XML装配Bean,为什么称它古老呢,因为最开始的Spring版本都是通过XML进行装配的,虽然古老,但是我们还是要讲解一下它,毕竟很多老项目都是使用了XML配置。XML配置规范在JavaConfig时,我们需要以@Configuration标识某个类作为我们的类,然后在这个类中定

2018-01-05 15:53:46 212

原创 Spring装配Bean之Java代码装配Bean

上一篇文章 我们介绍了怎么让Spring自动扫描并装配Bean,这一章,我们接着讲我们怎么显式的告诉Spring每个Bean该怎么装配,有两种方式,一种是基于Java代码的,一种是基于XML文件的。 由于基于Java代码的比较简单,也是仅次于自动装配我们推荐使用的,所以本章先讲解一下基于Java代码显式声明的。 pom.xml、Bean的class这里就不详细贴代码了,可以见上一章,只需要@Co

2018-01-02 20:59:11 222

原创 Spring装配Bean之自动化装配Bean

装配方式使用Spring就是要让Spring帮助我们管理这些Class的实例也就是这些Bean,但是作为开发人员,我们需要告诉Spring哪儿些bean需要装配和怎么装配到一起,Spring提供了三类装配机制:自动化发现和装配Bean。在Java代码中显示配置Bean。在XML里显示配置Bean。这些方式可以单独使用,也可以配合一起使用。 虽然Spring给了我们很多种方式,但是如果我们滥

2018-01-01 20:57:16 347

原创 spring之AOP初探

去面试Java绝对少不了的就是AOP(切面编程),我也纳闷,AOP就这么重要么,后来看了Spring实战之后发现,AOP就是Spring的很多特性的基础,日志记录,性能统计,安全控制,事务处理,异常处理等等。 这篇文章,我们简单的写一个demo体会一下AOP,后面我们再详细介绍。 还记得上一篇 讲了一个人类打电话的例子,既然是打电话,打之前少不了拨号的操作,打完之后少不了挂电话的操作。那我们就

2018-01-01 20:08:41 108

原创 初探Spring

Spring是什么,这里就不介绍了,简单的来说,Spring就是一个可以简化我们开发的框架,它的结构图如下: 它的最基础的包有Beans、Core、Context、Expression、Context-support。 Spring怎么容纳我们的程序呢? 我们写一个最简单的基于XML配置的Spring程序,由Spring管理我们的Bean。例子是人类打电话。Spring的设计原则是面向接口

2017-12-31 11:56:28 142

原创 Java反射之java.lang.reflect.Method

前一篇文章讲了Class中的成员变量(java.lang.reflect.Field)的常用使用方式以及其注意事项。我们接着讲Class中的方法(java.lang.reflect.Method)。介绍方法就是一段可执行的代码,可以是被继承而来的,也可以进行重载和重写,或者被编译器强制隐藏。但是相反的,反射代码是使方法选择被限制在一个特定的类中,而不考虑它的父类,虽然我们有办法查找到它的父类,但是这

2017-12-31 10:41:46 4211

原创 Java反射之java.lang.reflect.Field

前面一章 讲了怎么通过Class获取到成员(成员变量、成员方法、构造器),本篇文章开始详细讲解成员变量(java.lang.reflect.Field)的详细用法。获取field的类型有两种方式可以获取到field的属性,Field.getType()和Field.getGenericType(),其中getGenericType可以获取到泛型的标识符,如果这个field是泛型,则返回泛型的标识,如

2017-12-30 10:45:35 4019

原创 Java反射之类成员

上一篇文章我们讲了怎么获取到类的标识符,比如类的访问权限、接口标识、static标识,final标识、strictfp标识等,下面我们继续跟着官方文档讲解一下怎么获取类的成员,类成员包括以下三种:成员变量、类方法(实例方法和类方法)、构造器(构造方法)。获取方式为了更好的描述,我们做个约定个通配符XXXX,如果是成员变量就代表Field,如果是类方法就代表Method,如果是构造器就代表Constructor

2017-12-30 10:18:36 293

原创 Spring Boot上传文件

Spring Boot上传文件只需要在controller的方法上设置一个MultipartFile 参数即可,当然可以用@RequestParam指定方法名,如果是上传多个file时,可以使用数组,另外也可以用一个成员变量为MultipartFile的类来接收文件和其他参数。 为了演示它,我们需要有页面来上传文件,引入thymeleaf模板引擎。 <dependency> <groupI

2017-12-26 20:33:30 136

原创 Java中普通代码块和static代码块的区别

Java中普通代码块和static代码块的区别。

2017-12-09 10:01:10 758

原创 Java反射之获取类的标识符

上一篇文章讲了如果获得一个类的类名,有没有什么办法可以获取到类的访问权限、是否是接口、是否是static类,是否final标识、是否strictfg标识等,获取类的注解等。 答案是肯定的。 访问权限、接口标识、static标识,final标识、strictfp标识等这些都是标识Class的标识符。 可以通过Class.getModifiers()获取,然后自己做遍历判断。 Class.get

2017-12-08 16:30:18 474 1

原创 Java反射之查找一个类

Java里面的类型是一个引用或者一个基本类型,类、枚举、或者数组都是继承于java.lang.Object,它们和接口一样都是引用类型,对于这些类型,JVM提供了方式可以在运行中获取对象对应类型,也就是它属于哪个Class。java.lang.class也提供了创建Class和Class对应的对象的方式。本文讲一下目前有哪儿些方式可以获取到一个类(Class)。所有的反射操作的切入点都是java.l

2017-12-07 21:43:20 928

原创 Java实现AOP的两种方式

知道Spring的都知道Spring的切面编程AOOP(Aspect Oriented Programming),这里我们不讲Spring的切面,后面有机会我们再来解剖Spring的切面编程,我们想讲解一下普通的Java代码中怎么实现AOP,有两种方式实现AOP切面,一种是原生SDK实现,一种是基于三方包cglib。

2017-12-07 14:43:32 21539 4

原创 spring boot集成redis

遵守“约定大于配置”原则的Spring boot集成常用的NO SQL是很方便的,本例拿redis做一个简单的demo,使用Redis的set和get命令。 引入redis的依赖包。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b

2017-12-07 13:59:39 1748

原创 Spring之RestTemplate介绍

RestTemplate设计是为了Spring更好的请求并解析Restful风格的接口返回值而设计的,通过这个类可以在请求接口时直接解析对应的类。 在前一篇文章《搭建简单的Restful风格的web服务》的基础上,我们写一个client调用一下http://localhost:8080/hello这个接口,返回为我们自定义的ResultBean。 先重写一下ResultBean的toString

2017-12-06 17:16:20 535

原创 搭建简单的Restful风格的web服务

笔者最近在学习Spring相关的知识,坚信一句话,任何教程都没有官网教程全面、易懂,所以笔者计划参照官网的教程写一些例子,自己学习一下,也做下记录,由于官方教程大部分都是基于Spring boot,所以笔者也按Spring boot框架来编写代码。 工具用的Idea和包管理器用的通用的Maven,教程。 第一个例子肯定就是程序员的开始——Hello World。 首先我们定义一个类,用来作为R

2017-12-05 23:43:10 1201

原创 Thread之sleep方法

为什么要用sleep,主要是为了暂停当前线程,把cpu片段让出给其他线程,减缓当前线程的执行。 方法的定义: public static void sleep(long millis); public static native void sleep(long millis) throws InterruptedException;通过定义可以看出sleep方法是本地方法,通过系统调用暂停

2017-12-03 10:14:23 75384

原创 Spring IO Platform介绍

为什么要用Spring IO Platform今天无意间看到了一个关键词:”Spring IO Platform”,第一直觉是不是有关于IO方面的框架或者包呢,查了一下,居然是为了解决包冲突而生的。做了半年Java Web开发,经常遇到问题,编译没有报错,启动时报一些奇奇怪怪的问题,90%的都是包冲突导致的,虽然有一些包冲突解决插件,比如”Dependency Analyzer”等,也能很容易解决,

2017-11-29 11:28:46 2315

原创 rails中active_record的delete和destroy方法

rails对删除一个active_record对象有两个方法: obj.delete和obj.destroy方法,但是两种方法是有差别的。 delete方法不是在事务里进行删除,也不会触发active_record的回调。而destroy是在事务里处理,并且会触发active_record的回调。 所以要慎用delete。

2017-11-28 10:56:51 861

原创 Rails的after_commit和transaction_include_any_action?

了解rails的,都知道activerecord有一个after_commit的回调方法,可以在这个方法里做一下提交后的操作,比如同步数据等。 但是如果要区分本次commit是create、update还是delete怎么做呢? 有两种方式: 第一种方式是写多个方法分布处理 after_commit :hook_on_create, :on => :create after_commit

2017-11-28 10:35:54 357

Visual Assist X破解

Visual Studio很好用的一个插件,编码的过程中可以进行提示,加快开发进度,适用于VS2010,亲自试用过,有可能不支持其他的版本,里面有破解方法。

2013-08-21

JAVA学生管理系统

完整的JAVA编写的学生管理系统,包括学生信息添加、修改、删除、课程的添加、课程成绩的添加修改等,是一套完全实现学生管理系统的代码。

2012-10-27

QAxWidget的用法的一个问题

发表于 2013-09-29 最后回复 2013-10-17

求这个JS代码的错误,一直在return那一行有错,求解!!!

发表于 2012-06-26 最后回复 2013-09-29

空空如也

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

TA关注的人 TA的粉丝

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