Java
文章平均质量分 63
Stangor
99%的原因都是因为懒
展开
-
关于java中的异常
程序离开try 块之前,finally 中的代码都会被执行。它是会在catch 块之前执行。因此当你需要一个地方来执行在任何情况下都必须执行的代码时,就可以将这些代码放入finally块中。对于重写父类中的方法,如果父类中这个方法没有抛出异常,那么在子类的这个方法中,就必须捕获可能出现的每一个已检查异常,而不能抛出去。应该捕获那些知道如何处理的异常,将那些不知道如何处理的异常继续传递,即用throws 告知调用者这个方法可能会抛出异常。是否理解了为什么程序中需要有Exception?原创 2022-08-22 16:20:36 · 196 阅读 · 1 评论 -
library source does not match the bytecode for class transactionautoconfiguration
有问题的transaction包,全是spring-tx下面的东东。所以这个小问题,本来以为spring-boot-starter-parent会把这些依赖自动加进来,但是看来是没有这么做。原创 2022-07-22 13:02:31 · 305 阅读 · 0 评论 -
Spring Boot 正常启动,为何打印出的log 却是红色?
如果需要用到spring boot 之外的log output, 可能会出现控制台输出的log 会不在期望中。原创 2022-07-20 22:02:04 · 1898 阅读 · 2 评论 -
Install Navicat(for free)on Mac and test connection
安装免费的数据库管理工具Navicat.原创 2022-07-19 19:26:03 · 328 阅读 · 0 评论 -
Java 8 Stream API features --- map/reduce methods
在 jdk 1.8 里面新增加了 Stream API ,为了去更高效的处理 huge data。那么怎么使用这些 API 呢,一点一点了解,先走马观花看一遍: 要做的事情是先把每个 element * 2 , 然后再相加。public static void main(String... args){ List<Integer> values = Arrays.asList(1,原创 2016-12-14 15:35:23 · 417 阅读 · 0 评论 -
Java 8 Stream API features --- filter/reduce & predicate Interface test method
现在要对下面一组 number ,过滤掉被5整除的,再*2 .jdk1.7 之前是这么做的:public static void main(String... args){ List values = Arrays.asList(11,22,33,44,55,60,75); int result = 0; for (int i : values) {原创 2016-12-14 23:44:26 · 681 阅读 · 0 评论 -
Method Reference in Java 8
在介绍 method reference 之前,应该回忆一下在 java 中有 pass by value (values , reference ) ,在其他语言中可能有 pass by reference ,但是 java 中只有 pass by value ,如果是引用类型,传递的也是引用类型的地址,也是一个 value。public class ParamTest { public原创 2016-12-11 12:34:22 · 457 阅读 · 0 评论 -
Interface in Java 8(Default/Static methods)
在 jdk1.7之前,在 Interface中只能 declare method, 是不可以 define method的。所以在 jdk 1.8 里面有什么不一样呢。Default method在1.7 里我们这样定义一个 interface 并且 declare 一个 method :public interface Play{ void show();}show()方法它默认也就原创 2016-12-08 00:11:20 · 4383 阅读 · 0 评论 -
ForEach Method in Java8
在 jdk1.7 之前,我们去遍历一个 List 集合中的元素,我们可以这么做: List<Integer> values = Arrays.asList(4,2,3); for (int i = 0; i < values.size(); i++){ System.out.println(values.get(i)); }or原创 2016-12-08 22:35:53 · 379 阅读 · 0 评论 -
Lambda Expression in Java 8
在上一篇中最后 forEach(): 用到了 Lambda expression,这是 jdk1.8 的新特性。List<Integer> values = Arrays.asList(4,2,3);values.forEach(i -> System.out.println(i));这里就看它是怎么演变过来的:下面这个 demo 很简单,最终输出 『hello lambda』interface原创 2016-12-09 00:13:41 · 1174 阅读 · 0 评论 -
Java 8 Stream API Features Intermediate operations & Terminal operations
Stream API 中提供了findFirst(),orElse() 这样的 method, 这些 method 具体是做什么,可以看看文档:一目了然。public static void main(String... args){ List values = Arrays.asList(11,22,33,44,55,60,75); System.out.println(原创 2016-12-15 15:33:44 · 612 阅读 · 0 评论 -
Spring Journey -- AOP basic concept
什么是面向切面编程?软件系统中的某些功能(横切关注点,但这些功能又很重要,像日志,安全,事务)需要被用到应用程序的多个地方,但又不想在每个点都调用它们,它们不应该是应用对象应该主动参与的任务,即应用对象只会关注到自己的业务领域问题,其他的交由其他对象来处理。那么这种把横切关注点与业务相分离就是面向切面编程所要解决的问题。切面(aspect)可以用来模块化横切关注点,成为特殊的类。在 AOP原创 2017-04-15 15:02:07 · 342 阅读 · 0 评论 -
JavaSE review -- 面向对象、封装、继承、多态、抽象
1. 计算机系统中的数据表示,最小单位是『位,bit』,只有0和1两种状态 1 byte = 8 bit; 00000000,可以取到2的8次方个数,即256个值:-128~127。 但是为什么从-128开始呢,这得研究一下进制问题,待解决。可以参考这里: http://jun123.blog.51cto.com/9893428/1657732 2. 单精度浮点型 float 双精度原创 2017-11-04 09:25:12 · 251 阅读 · 0 评论 -
JavaSE review -- final 、static
1. 对于final类型的成员变量,它的赋值方式一般有两种,第一是声明的时候直接赋值,第二种是在声明的时候不予于赋值,而在该类的所有构造方法中都要给该成员变量赋上值:public class FinalTest{ final int a; public FinalTest(){ a = 0; } public FinalTest(int b){原创 2017-11-05 15:14:54 · 242 阅读 · 0 评论 -
Log4j 的详细介绍
1 简介 Log4j(log for java)是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不转载 2017-12-11 11:09:43 · 500 阅读 · 0 评论 -
JDK与JRE
Java源代码是*.java的纯文本文件,可以使用任何文本编辑器编写,但不可执行JDK是Java语言的开发包,可以将*.java文件编译为可执行Java程序可执行Java程序需要JVM才可以运行JRE包含了JVMJDK包含了JREJRE:Java Runtime Environment,Java运行环境,运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库。仅能够完成Java的原创 2016-07-20 08:04:50 · 440 阅读 · 0 评论 -
Spring in action 01 -- 装配 Bean(@Autowired)
昨天走马观花,看一遍Spring,当然也比较的片面,今天就从第一个知识点详细些再学习。温故而知新,可以为师也,如此而而一个概念 装配(wiring) : 创建应用对象之间协作关系的行为通常称为装配。它是DI的本质,而DI是Spring的最基本要素。三种装配机制:在XML中进行显式配置在Java中进行显式配置隐式的bean发现机制和自动装配根据项目的需要,你可以选择一种方式,也可以选择多种进行原创 2016-05-29 18:40:32 · 671 阅读 · 0 评论 -
快速排序--quickSort
其实每个程序员都应该或多或少的知道几个排序的算法,这是考察基本功的地方,排序的算法有很多种,像冒泡排序、快速排序、归并排序等等,个人觉得自己的基本功还是有太多的地方需要加强的地方,月末了回头看一下,平常用的东西,还有很多没有及时总结和归纳,实属于懒惰,今天简单写一个基本的快速排序,督促自己应该及时总结与学习新知识,废话说多了有个卵用!package test;import java.util.Arr原创 2015-11-30 22:05:45 · 410 阅读 · 0 评论 -
抽象类是否可继承实体类
问: 抽象类是否可继承实体类 (concrete class)答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数答案很明确,可以继承。其实从Object就是个实体类,java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思。一般学习者会写的简单试验原创 2015-01-03 10:09:23 · 799 阅读 · 0 评论 -
Stringstr=new String("abc") 这行代码究竟创建了几个对象?
Stringstr=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。 我们可以把上面这行代码分成Stringstr、=、"abc"和new String()四部分来看待。S原创 2015-01-03 10:32:24 · 8564 阅读 · 4 评论 -
String 笔记
1、字符串都是对象。2、字符串是常量。它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String 对象是不可变的,所以可以共享。例如: String str = "abc";等效于:char data[] = {'a', 'b', 'c'}; String str = new String(data);3、String s1 =原创 2015-01-03 12:51:23 · 612 阅读 · 0 评论 -
自定义类的对象作为TreeSet元素的两种方法排序浅谈
我们知道TreeSet是Set接口下的一个实现类,TreeSet中的元素的排列顺序是和添加的顺序是没有关系的,并且它里面元素也是不能重复的 但是,TreeSet集合有它独有的特点,比如:import java.util.*;public class Test{ public static void main(String[] args){ TreeSet ts = new原创 2015-03-25 20:59:23 · 1054 阅读 · 0 评论 -
装饰器模式浅谈
今天继续学习一种叫做装饰器模式的设计模式。 当相对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有功能,提供加强功能。自定义的类称为装饰类 装饰类通常通过构造器接收被装饰的对象,并基于被装饰对象的功能,提供更强的功能 简单点说,就是这种模式是将已有对象的功能增强,并且以原对象已有的功能方法制作增强方法。好像越说越复杂了!! 比如,我们知道系统内置的BufferedReader类原创 2015-03-21 11:32:08 · 833 阅读 · 0 评论 -
Statement的注入问题浅谈
前天有人问我说,我知道用Statement可能会产生注入问题,但是啥是注入问题?其实我知道他了解过,但是现在忘记了….. 谁说不是呢,我也是有些遗忘了,我就知道如果在sql语句后直接拼接条件,是可能产生注入问题 ,当然了如果你设置的条件是你想要,肯定不会出现注入问题的 话不多说,既然说到了注入问题,就去看看这个传说中的“注入问题”…. 先让问题暴露出来,看下面的代码: 现在是这样,假设现在我原创 2015-03-22 21:35:49 · 740 阅读 · 0 评论 -
策略模式浅谈
其实策略模式,从字面意思上理解,类似于我想达到某一种效果时,不用去煞费苦心的再去想方法,而是已经做好的方法只要去调用就可以了那么体现到java程序设计里,也可以这么理解,如果过程是随着参数的变化而变化的,这个时候就可以用策略模式好像有点类似于开车,想要车跑的速度不一样,只需要轻轻的换下档位就O了,每个档位对应的速度范围都是设计好的从下面的这个小小的遍历文件的例子来看效果:现在我想遍历E盘下的abc文原创 2015-03-22 23:58:10 · 566 阅读 · 0 评论 -
模版方法设计模式简单应用
java中大概有21种设计模式,先看第一种,模版方法设计模式。 从一个简单的例子引出模版方法设计模式: 用for、while、do-while三种循环分别测出1到100的和; 一般的写法是:public class Test{ pubic static void main(String[] args){ //for循环 long start = System.curre原创 2015-03-14 15:18:56 · 477 阅读 · 0 评论 -
适配器模式浅谈
继上篇策略模式,可以引出一个叫做适配器模式的设计模式 先看下面的代码,还是上篇策略模式的代码段interface Process{ public void process(File file);}public class Test{ public static void walkDir(Process p,File file){ File[] files = f原创 2015-03-23 11:31:37 · 488 阅读 · 0 评论 -
单例模式浅谈
所谓单例模式,就是让一个类在该类的外面只有一个实例 我们知道我们一旦把一个类给声明好了,它有多少个实例,取决于我们new多少次 那什么情况下能让一个类在该类的外面只有一个实例呢? 看下面代码:class Foo{ private Foo(){}}public class Test{ public static void main(String[] args){ }原创 2015-03-23 11:47:32 · 551 阅读 · 0 评论 -
ArrayList与LinkedList底层实现与增删查效率比较
我们知道ArrayList是List接口的一个实现类,它的特点是查询效率高,增删效率低,线程不安全 原因是因为ArrayList底层是封装了一个数组,它是用数组实现的。 看下图,数组在内存中的存储方式:现在定义一个int[] a数组,假设它的首地址是2000,int类型占4个字节,所以a[0]的首地址是2000,a[1]的首地址就是2004,以此类推….到a[n] 所以上面的这张图,就很形象的原创 2015-03-23 18:41:51 · 13462 阅读 · 7 评论 -
oracle学习笔记 ---- 常用SQL*PLUS命令(一)
在sql*plus环境中使用oracle数据库,除了使用sql语句外,用户接触比较多的是sql*plus命令。 sql*plus工具提供了许多操作oracle数据库的命令,具体如下:help命令:每个命令都有许多的选项,把所有命令都记住是不科学的,通过help命令就可以帮助用户去查询指定的命令选项,它可以向用户提供被查询命令的标题、功能描述、缩写形式和参数选项,如查询startup命令相关描述:原创 2015-08-26 15:32:48 · 863 阅读 · 0 评论 -
浏览器关闭后,Session会话结束了么?
今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了?我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保存当前用户的状态信息,初学它的时候,认为Session的生命周期是从打开一个浏览器窗口发送请求到关闭浏览器窗口,但其实这种说法是不正确的!下面就具体的去解释:当用户第一次访问Web应用中支持Session的某个网页时,就会开始原创 2015-07-31 20:22:18 · 56164 阅读 · 32 评论 -
重载不是多态的体现形式
下面这段文字来字《Java In Thinking 3》Polymorphism means “different forms.”In object-oriented programming, you have the same face(the common interface in the base class) and different forms useing the face: the翻译 2015-09-02 11:44:55 · 4539 阅读 · 0 评论 -
关于 线程
1、进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间。2、线程:进程中的一个执行单元,负责进程中的程序的运行,一个进程中至少要有一个线程。一个进程中可以有多个线程的,这个应用程序也可以称之为多线程程序。3、程序启动多线程,有什么应用呢?可以实现多个程序同时执行,专业术语称为并发。多线程的使用可以合理使用cpu的资源,如果线程过多导致降低性能。4、创建线程的方式两原创 2015-01-03 13:46:34 · 710 阅读 · 1 评论