
java
文章平均质量分 50
beirdu
这个作者很懒,什么都没留下…
展开
-
简述 运行时异常RunTimeException和检查性异常Checked Exception
原文连接 1. 检查性异常如IOException,SQL异常;运行时异常如NullPointerException; 2. checked exception必须捕获并处理;Runtime Exception发生时,jvm会把异常一层层往上抛,如果程序是多线程则由Thread.run()抛出并结束此进程,如果是单线程则由main()抛出并退出程序;运行时异常可以不捕获,也可以捕获进行日志处转载 2017-10-17 18:21:26 · 612 阅读 · 0 评论 -
静态方法和成员变量
阿里java编程规约中将“实例调用对应类的静态成员/方法”视为错误,因为“会增加编译器解析成本,直接通脱类名调用即可”。stack flow上相关讨论也说这是一个尾大不掉未解决的问题。关于阿里给出的理由,猜想是“通过实例调用静态成员是会多一步:通过反射取得类,然后通过类取得静态变量”,只是猜想,查阅相关资料如下:原创 2017-12-03 16:12:52 · 400 阅读 · 0 评论 -
java并发-Thread类基本方法介绍
待更新java.lang.SecurityManager;Thread中基本方法1.void suspend()方法 这是一个过时的方法,与void resume()搭配使用来暂停和唤醒一个线程。这两个方法有可能造成独占和不同步的问题—详见《java多线程编程核心技术》。方法源码如下: @Deprecated public final void suspend() {原创 2017-12-11 18:12:34 · 333 阅读 · 0 评论 -
java线程工厂
Thread构造函数 java的Thread类构造函数打字分为三类,我们可以认为线程工程基本元素基于则三个元素—— 构造参数中指定线程名称;构造参数为Runnable/或者其实现类;构造参数指定所在线程组; 以上三个中元素时有多种排列组合,可以混用的//每种一个示例: public Thread(Runnable target) { init(null, t原创 2017-12-11 23:37:34 · 559 阅读 · 0 评论 -
线程本地存储—ThreadLocal,map实现
Entry和Map的关系???ThreadLocal简介 public static修饰的变量可以让所有线程共享,但是如果让每个线程有自己独享的数据对象,则使用java.lang.ThreadLocal类。他可以将线程和数据对象绑定在ThreadLocal的静态内部类ThreadLocalMap中,以实现线程独享数据对象。1.使用示例package me.demo;public class Ac原创 2017-12-12 14:29:53 · 3724 阅读 · 0 评论 -
线程执行器的创建:Executor及其子类
一.Executors创建线程执行器的基本方式及其弊端1.四种创建执行器方法的简介 java创建线程执行器(Executor接口实现类)时常用以下代码 //合理的首选:CachedThreadPool会在程序执行的时候创建与需要同等数量的线程,回收九线城市停止创建新线程; ExecutorService executorService= Executors.newCa原创 2017-11-29 15:37:08 · 320 阅读 · 0 评论 -
Executor框架(二)
本部分内容来自于《java并发编程实战》6.2小节。觉得讲的很好但是很多地方还是不太理解,觉得还是需要扎实的功底和比较多的相关经验才能够透彻的理解。前言 任务是一组逻辑工作单元,线程则是使任务异步执行的机制。java类库中,线程执行的主要抽象是Executor,而不是Thread。Executor源码及:package java.util.concurrent;public interface E原创 2017-12-17 15:30:45 · 239 阅读 · 0 评论 -
crawl4j:记录在印象笔记中的笔记汇总
WebCrawlerPageFetcherfetcher包原创 2018-01-16 17:12:56 · 388 阅读 · 0 评论 -
crawler4j_01_authentication
如标题所示,本博文系列是对github上项目crawler4j的分析。第一篇介绍了此项目的验证机制。所写内容只做个人理解记录使用,正确性无法保证。 前言 本博文一共分为两个部分,前四个部分介绍了包含验证信息的“数据类”,第五个部分也是最重要的部分讲解了怎样使用这些类。 crawler4j的验证方式分为三类:对于某个url进行用户名和密码验证的基本验证方式、针对Mi原创 2018-01-07 22:56:01 · 324 阅读 · 0 评论 -
crawler4j_01_authentication
如标题所示,本博文系列是对github上项目crawler4j的分析。第一篇介绍了此项目的验证机制。所写内容只做个人理解记录使用,正确性无法保证。 前言 本博文一共分为两个部分,前四个部分介绍了包含验证信息的“数据类”,第五个部分也是最重要的部分讲解了怎样使用这些类。 crawler4j的验证方式分为三类:对于某个url进行用户名和密码验证的基本验证方式、针对Mi原创 2018-01-09 11:02:49 · 292 阅读 · 0 评论 -
crawler4j_01_parser_ParseData,Parser
前言 本文讲解的第一个部分是parser包中的“解析数据结果类”,即接口ParseData及其实现类,包括BinaryParseData、HtmlParseData和TextParseData。三者之间的关系及包含属性如下图所示: 讲解的第二个部分是实现数据解析的工具类,如Parser、AllTagMapper、ExtractedUrlAnchorPair、ExtractedR原创 2018-01-09 15:27:49 · 1089 阅读 · 0 评论 -
Spring中bean的三种装配机制之——自动装配
基本介绍 关于各种配置,从来没搞懂过。但是觉得框架发展这么快,而且结构这么宏大,其实现微观上来讲应该从来没有一种标准方式、更没有说是固定的几种。比如Spring专有的@Component、@Autowired注解,大多数情况下都可以被javax.inject包下的@Named和@Inject代替。本博文汇总《Spring 实战 第四版》2.1和2.2内容。 自动装配是使用spring满足be原创 2017-12-10 23:20:40 · 9085 阅读 · 0 评论 -
Spring中bean的三种装配机制之一—java configure
基本介绍 上一篇博文我们已经讲了怎样使用@ComponentScan和@Autowired实现自动装配,这里将讲解使用java config实现bean装配的方式。之所以还需要使用java config装配,是因为当我们使用第三方库中的组件时,就不能再使用@Component和@Autowired了。 java config是配置代码,一般不应该出现任何业务逻辑,以使得相关人员对其功能不产生原创 2017-12-11 16:15:26 · 972 阅读 · 0 评论 -
java8特性:Collectors.groupingBy进行分组、排序等操作 (二)
参考博文 Stream类的函数<R, A> R collect(Collector<? super T, A, R> collector);可以对数据集进行简单的分组统计。函数参数为接口Collector,其实现在final class Collectors的内部静态类CollectorImpl。Collector接口代码如下:public interface Collector<T, A, R>原创 2017-11-21 13:53:57 · 34152 阅读 · 0 评论 -
流程控制—try_catch_finally中的return/throw
规则一return和throw等价,都会结束方法;程序运行时在catch中遇到return或者throw后,会先运行finally代码块所有的代码,包括return和throw;综上return 和 throw new Exception()不能同时运行;示例一:finally中有return/throw导致catch中return未运行public class TryCatchFinall原创 2017-10-28 21:16:04 · 502 阅读 · 0 评论 -
流程控制—静态代码块、构造器、常量以及Spring的@AutoWired注释
五种类型变量:静态代码块,父类构造器,普通变量/静态变量类,一般代码块(放在{}中),构造器以及@Autowired的执行顺序及注意细节是: 静态代码块—>父类构造器—>变量(包含静态变量类)—>一般代码块—>子类构造器—>@Autowired;每次新建对象都会调用静态变量类构造器,同普通变量;静态变量与静态代码块不同;静态代码块只运行一次,普通代码每次初始化对象都运行;构造器中如果使原创 2017-10-28 22:07:55 · 1287 阅读 · 0 评论 -
lambda表达式-java中的应用
转载来源Lambda表达式的好处:在java8之前,如果想将行为传入函数,只能使用匿名内部类,而java引入的lambda表达式取代了匿名内部类,允许函数式风格编写代码,示例: java8之前的匿名内部类 new Thread(new Runnable(){ @Override public void run() {转载 2017-10-21 14:15:15 · 311 阅读 · 0 评论 -
Optional-java8特性
使用场景:结合lambda表达式使用;将返回值元素放进Optional中;重要方法:1.Optional的构造函数全部私有,因此获取起实例只能根据三个方法of(obj)、empty()和ofNullable(obj)获取,如函数名所示,三个方法分别返回有元素实例,无元素实例和和可能当无元素的实例。obj为null时,创建实例采用了单例模式,节省内存。具体即解释如下: /*原创 2017-10-22 00:30:11 · 194 阅读 · 0 评论 -
Functional Interface- java8引入特性
为什么要了解在学习Lambda表达式和Optional类的使用过程中,发现多涉及到java.util.function包下边的接口。因此猜想了解函数式接口是学习Lambda表达式的基础,或者是深入学习javaf8的必经之路。本篇博客仅限抽象理解,知道其基本概念,详情请参考后续博客或其他资料详情。简介function包下接口称为函数式接口,又称SAM(Single Abstrac原创 2017-10-22 14:37:25 · 455 阅读 · 0 评论 -
java内存分配浅析
转载来源java内存非配区域主要有以下一个区域:寄存器:程序中无法控制,最快的一个区域;栈:存放基本数据类型和对象的引用,速度仅次于寄存器;堆:存放动态生成的数据,比如new出来的对象,包括数组;静态域:用static定义的静态成员;常量池:存放常量;转载 2017-10-31 21:16:39 · 308 阅读 · 0 评论 -
动态SQL-Spring Data Jpa
官方文档很有用一.注意事项 根据关键词,jpa可以构造许多SQL,满足基本需要。但是一些诸如更新的SQL,仍需要使用@Query动态构造。动态构造SQL时有几个对于新手来说很坑的地方需要注意下,也算是jpa的基本常识。 @Query里边的内容表名和字段名都需要替换成对应实体列的类名和变量名。由于思维一直停留在mybatis,笔者在这里浪费了一些时间;更新操作和删除操作需要加@Transa原创 2017-10-31 21:42:26 · 3261 阅读 · 0 评论 -
java8特性:Collectors.groupingBy进行分组、排序等操作
本篇是对博文进行汇总和拓展。假设已有实体类public class Student{ private Integer id; private String name; ... }重点1:Collectors类里边相关函数重点2:collect函数稍后进行源码分析1.相关测试代码package javaX.util.function;import javaX.Model转载 2017-11-20 19:57:37 · 64801 阅读 · 3 评论 -
控制反转IoC(Inversion of Control)
基本介绍 IoC同DI(依赖注入),是同一个概念不同角度的描述。IoC是不在对象中直接控制自己设计的对象,而是交给容器(比如Service对象?)。了解IoC概念,同名,我们必须了解:1.谁控制了谁的什么;2.为何反转、在哪些方面反转了。1.谁控制了谁的什么 传统程序在程序内部通过new创建 程序/此对象 所依赖的对象对象,而IoC有专门的容器创建这些对象。即IoC容器控制对象的创建,控制了外部原创 2017-12-10 14:24:44 · 605 阅读 · 0 评论 -
crawler4j_01_parser_WebURL、FetcherResult、Page和ParseData
几个常用的实体类,WebURL存储每个URL的相关数据;PageFetchResult是执行请求后返回结果类;Page存放请求返回结果解析后的内容;ParseData是Page中的一个属性,存放网页解析的内容。详情请见截图原创 2018-01-09 21:33:25 · 371 阅读 · 0 评论