自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

a327369238的专栏

浊酒凭栏听风雨,青衫仗剑走江湖

  • 博客(50)
  • 收藏
  • 关注

原创 Java线程池执行流程及坑

咳咳,详见:https://www.cnblogs.com/trust-freedom/p/6681948.html#label_3_2网上有很多讲的很详细得了,上面的文章,博主已经讲得非常详细了(但要注意上述文章是jdk1.7,1.8的大同小异),我这边总结下主要流程(忽略中途线程池关闭等异常情况)以及标注下一些重点或者可能忽略的点1.运行初,新任务(runnable)过来,判断当前活跃线程数量(注1)是否小于核心线程数,小于,直接新建线程运行之2.若大于核心线程数,直接加入队列;若当前活跃线程=0

2021-08-25 19:28:04 252

原创 Java父子类同名变量

嗯,继承的一个小知识点,前段时间线上碰到的一个问题,不说废话,直接上一个demo看下吧class Parent{ public int value = 5; public int getValue(){ return value; }}class Child extends Parent{ public int value = 10; ...

2020-04-09 19:46:29 945

原创 Java源码解析(8) —— ClassLoader(3)

//检查类签名private void checkCerts(String name, CodeSource cs) { int i = name.lastIndexOf('.'); String pname = (i == -1) ? "" : name.substring(0, i); Certificate[] certs = null;...

2019-12-04 19:44:47 359

原创 Spring统一异常处理器无法处理非法请求异常

1.问题描述Forwarding to error page from request [/aaa/bbb/ccc/bookhistory/] due to exception [账号未登录] com.xxx.web.base.exception.BusinessException: 账号未登录at com.xxx.web.core.interceptor.LoginInterceptor....

2018-09-06 15:55:29 22163 1

转载 面向切面编程AOP

看到知乎有个关于AOP的解说,很精彩,特意转过来记录分享下: 转自: 作者:Javdroider Hong 链接:https://www.zhihu.com/question/24863332/answer/350410712 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。看到一高赞回答有Bug,所以还是简单说几句吧。先上结论:AOP不一定都像S...

2018-05-23 11:07:41 424

原创 Java源码解析(7) —— ClassLoader(2)

/** * 由虚拟机调用,这是一个private方法,但我在ClassLoader源码中并未看到有地方调用 * 看名字及源码说明,是由虚拟机加载类的时候内部调用,百度查询估计是加载jdk类时 * 系统类加载器通过反射调用该方法(jdk类中有许多类似用法) */ private Class loadClassInternal(String name) throws C...

2018-05-11 19:56:04 644

原创 Java双亲委派

1.Java加载器组织结构简单说明每一个类加载器都有一个父加载器,这种父加载器不是通过继承来实现,即: (类的加载可参见:Java类的加载)Class MyClassLoader extends ClassLoader{}//这种只是声明定义自己的加载器,而不是ClassLoader是其父加载器,事实上ClassLoader是抽象类它事实上是通过组合关系来实现的://ClassLoader源码:

2017-06-14 20:42:01 1327

原创 Java源码解析(6) —— ClassLoader(1)

ClassLoader —— 类加载核心类类加载核心类,关于类加载详见:Java类的加载。

2017-02-13 20:45:45 575

原创 Java源码解析(5) —— Class(4)

Class最后一部分源码,这一部分大都是private方法、属性、类,都是Class本身各种方法的实现细节,涉及到了很多Class的实现原理,较为深奥,网上能找到的资料也比较少,目前只懂皮毛,仅供参考,所以,我这一部分说的可能是不正确的,需要抱着怀疑的态度看待!咳,就这样,闪人。

2017-02-13 17:59:07 1615

原创 Java源码解析(4) —— Class(3)

@CallerSensitive public Class[] getDeclaredClasses() throws SecurityException { // be very careful not to change the stack depth of this // checkMemberAccess call for security reas

2017-02-08 20:46:14 874

原创 Mac Charles乱码解决办法

用到Charles,下载最新的4.0.1版本,但是发生乱码问题。百度好久才找到个靠谱的,那些说什么在Info.plist文件加字符串的,都是假的,反正我是试了都没用,这里记下详细的操作步骤解决: 1.安装SSL证书 3.10之前的,需要去http://www.charlesproxy.com/ssl.zip 下载 CA 证书文件,然后双击 .crt 文件,选择「总是信任」按钮,在钥匙串访问中即可

2016-11-14 14:25:47 35574 18

原创 高性能MySQL学习笔记(5) —— MVCC

多版本控制  Multi-Version Concurrency Control,多版本控制,每次操作,copy一份所要改的数据作为副本,副本之间通过一个版本号字段区分,并将副本的版本号+1,如果是更新操作,数据在副本上修改完后,要更新时候查看原纪录的版本号是否是副本版本号-1,是,更新,否(说明有其他修改事务在这期间修改了数据,使其版本号更新了),失败,重新取数据重新更新;如果是读操作,则是根据隔

2016-10-17 11:22:13 4563 3

原创 高性能MySQL学习笔记(4) —— 事务隔离级别

事务隔离级别事务的ACID属性中的隔离性,如何实现呢?在SQL标准中定义了四种隔离级别。 但要注意,标准中定义的这四个级别,在实际上各个存储引擎的实现是不尽相同的,有些细节地方还是不一样的,学习的时候需要注意下。并发问题在说明事务隔离级别之前,先说说事务并发可能引发的问题。 1、更新丢失:一个事务的更新覆盖了另一个事务的更新。事务A:向银行卡存钱100元。事务B:向银行卡存钱200元。A和B同时

2016-10-13 16:40:45 943

原创 Java源码解析(3) —— Class(2)

Class 源码详解续(2)关于Class,详见:Java源码解析(2) —— Class(1)。源码//如果该Class对象是本地类或匿名类,返回包含这个类的方法的信息(Method对象)public Method getEnclosingMethod() {...}//如果该类具有(内部)本地类或匿名类,获取其信息,包括Class对象、name以及描述。private

2016-10-12 15:54:26 1918

原创 Java 内部类、成员类、局部类、匿名类等

Java各种称呼类详解Java有各种各样类,内部类、嵌套类、成员类、局部类(本地类)、静态类、匿名类、文件类以及这些组合起来的称呼类,成员内部类,成员匿名类,成员嵌套类,本地匿名类等,真是多的不行,但有些其实是一个意思,在这里好好理一理。声明1.注意,这些称呼都是翻译过来的,但是同一个英文单词或一个词组翻译过来可能有不同叫法,比如local nested class,local有局部、本地意思,其实

2016-10-11 17:49:15 19390 10

转载 优秀程序员必备技能大全

转自:中华科技网 转载地址:优秀程序员必备技能大全我特别支持软件开发者在他们掌握技术技能的同时去学习“软技能”——事实上,我写了一本关于这方面的书——但是不可否认的是:技术技能很重要。我的意思是,如果你不能编写代码和开发软件,那么你学习众多软技能有个卵用。也许你可以成为一名优秀的管理人员或指导人员,但不会是软件开发人员。如果你正在阅读这篇文章,那么我假设你有兴趣成为一个软件开发人员——或者是更优秀

2016-10-09 20:41:33 3338 1

转载 cracking the coding interview 中文版 (程序员面试金典)

转自:CTCI面试系列——谷歌面试官经典作品 | 快课网谷歌面试官经典作品(CTCI)目录1.1 判断一个字符串中的字符是否唯一1.2 字符串翻转1.3 去除字符串中重复字符1.8 利用已知函数判断字符串是否为另一字符串的子串2.1 从链表中移除重复结点2.2 实现一个算法从一个单链表中返回倒数第n个元素2.3 给定链表中间某结点指针,删除链表中该结点2.4 求由两个链表结点组成的

2016-10-09 20:16:26 6836 1

原创 Java源码解析(2) —— Class(1)

Class——反射基石Java基本类之一,反射机制的基础,是一个运行时类。其意义为:类的抽象,即对“类”做描述:比如类有修饰、字段、方法等属性,有获得该类的所有方法、所有公有方法等方法。声明1.Class的源码太长,这里分5部分解析,一些方法的实现源代码较长,这里就没有贴出来了,我会着重将叙述其作用,至于其实现逻辑,以本人现有水平估计也很难一一讲解清晰,大家姑且看之,若其中有错误地

2016-10-09 14:53:43 8895 1

原创 Type Java类型

Type —— Java类型  Type是一个空接口,所有类型的公共接口(父接口),其意义表示Java所有类型,这里所谓的类型是从Java整个语言角度来看的,比如原始类型、参数化类型(泛型)、类型变量及其数组等。Type的子孙概述  注意区分类型(Type)与类(Class)的区别,这里Class是Type的一种,而像数组、枚举等“类型”是相对于Class来说。Type的直接子接口1.Paramet

2016-10-08 14:49:24 16359 4

原创 Java源码解析(附录)(5) —— WildcardType

WildcardType 泛型表达式通配符表达式,泛型表达式,也可以说是,限定性的泛型,形如:? extends classA、?super classB。源码public interface WildcardType extends Type { //获得泛型表达式上界(上限) Type[] getUpperBounds(); //获得泛型表达式下界(下限) Typ

2016-09-30 15:18:50 5454

原创 Java源码解析(附录)(3) —— GenericDeclaration

GenericDeclaration可以声明类型变量的实体的公共接口,也就是说,只有实现了该接口才能在对应的实体上声明(定义)类型变量,这些实体目前只有三个:Class(类)、Construstor(构造器)、Method(方法)(详见:TypeVariable —— 类型变量)。源码public interface GenericDeclaration { //获得声明列表上的类型变量数组

2016-09-30 13:46:19 1914

原创 Java源码解析(附录)(4) —— GenericArrayType

GenericArrayType —— 泛型数组泛型数组,描述的是形如:A<T>[]或T[]类型。源码public interface GenericArrayType extends Type { //获得这个数组元素类型,即获得:A<T>(A<T>[])或T(T[]) Type getGenericComponentType();}概述GenericArrayType,泛型数组

2016-09-30 11:07:11 3322

原创 高性能MySQL学习笔记(3) —— 数据库事务

数据库事务概述  数据库事务,简称事务,指的是访问并可能更新数据库中各种数据项的一个程序执行单元。事务通常由高级数据库操纵语言(DML)或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。   事务由事务开始(begin transaction)和事务结束(end transacti

2016-09-29 16:40:19 722

原创 高性能MySQL学习笔记(2) —— 并发控制

MySQL 并发控制前一节已经说过了,MySQL是多线程应用,并且共享存储数据,很显然,当两个及以上线程对同一块数据进行写将会发生数据不一致等各种问题,比如,同时对一个表增加一条记录,后一个增加的记录可能会覆盖前一条,造成数据丢失。若仅仅是读不会发生错误,但是当读写一同,就有可能发生读错误,所以,对读也是需要必要的控制。 关于数据读写错误的会有哪几种情况,可以参考:事务隔离级别。 以上问题就需要

2016-09-29 11:44:38 756

原创 Java源码解析(附录)(2) —— TypeVariable

TypeVariable —— 类型变量  TypeVariable,类型变量,描述类型,表示泛指任意或相关一类类型,也可以说狭义上的泛型(泛指某一类类型),一般用大写字母作为变量,比如K、V、E等。源码public interface TypeVariable<D extends GenericDeclaration> extends Type { //获得泛型的上限,若未明确声明上边界则默

2016-09-27 20:35:09 5946

原创 Java源码解析(附录)(1) —— ParameterizedType

Java类型之参数化类型源码public interface ParameterizedType extends Type { //1.获得<>中实际类型 Type[] getActualTypeArguments(); //2.获得<>前面实际类型 Type getRawType(); //3.如果这个类型是某个类型所属,获得这个所有者类型,否则返回null

2016-09-22 14:44:43 4174

原创 synthetic Java合成类型

Synthetic  看Class源码的时候,看到有个关键字Synthetic以及isSynthetic()方法,遂有兴趣查阅了一番。   一开始以为,就是复合类型(引用类型),也就是非基本类型,可后来看到Java语言规范的描述(以及写代码测试),才知道不是,但看了许久,也不知道具体:Any constructs introduced by a Java compiler that do not

2016-09-21 15:41:18 16658 9

原创 Java源码解析(1) —— Object

Java基类Objectjava.lang.Object,Java所有类的父类,在你编写一个类的时候,若无指定父类(没有显式extends一个父类)编译器(一般编译器完成该步骤)会默认的添加Object为该类的父类(可以将该类反编译看其字节码,不过貌似Java7自带的反编译javap现在看不到了)。 再说的详细点:假如类A,没有显式继承其他类,编译器会默认添加Object为其父类;若有,那么那个显

2016-09-09 20:32:13 4643 2

原创 高性能MySQL学习笔记(1) —— MySQL架构

MySQL逻辑架构MySQL逻辑架构图如下: 这里分为三层: 1.连接层:连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理、授权认证、安全等。 2.SQL处理层:包括缓存查询、解析器、优化器,这一部分是MySQL核心功能,包括解析、优化SQL语句,查询缓存目录,内置函数(日期、时间、加密等函数)的实现 3.数据存储层:负责数据存储,存储引

2016-09-02 11:20:02 3047

原创 Java基础

Java基础之前看的Java核心技术的笔记,记录一些Java基础注意点:数据1.Java大小写敏感,空格多少不影响句子。 2.一个class文件只能有一个public类,且文件名与该public类类名相同;类名只能以字母开头,其后跟字符和数字任意组合(不能使用关键字);标准命名规范(只是个标准):大写字母开头,若名字由多个单词组合,则每一个单词第一个字母大写(骆驼命名法)。 3.Java是强类型

2016-09-01 10:21:17 697

原创 Java中的引用

Java中的引用1.什么是引用?引用就是一个地址,对象寻址地址,通过它可以找到所指向的对象:ClassA o = new ClassA();//o就是一个引用,指向对象new ClassA()要注意引用和对象并不是同一个东西,引用是存在栈中,对象存在堆中,以上一行代码可以拆解成以下两行代码理解:ClassA o;//声明一个ClassA类型引用o,这个时候JVM会在栈中申请一个引用大小(4字//节

2016-08-31 19:19:54 1073 1

原创 Java数据类型转换

Java数据类型转换  在说明数据类型转换(下简称类型转换)之前,得先说明什么是数据,数据可不仅仅是一个值,而是包括描述数据的种类(数据类型)、值以及基于其类型基础上可进行的操作的集合。从类型A转换到类型B,这需要类型B拥有类型A的相关性质,他们之间的转换需要准从一定规则,并不是可以任意转换的,最基本的转换思想:只有同类可转换,低级转高级可自动转换,基本数据类型中高级转低级需要强制转换,引用类型高级

2016-08-30 20:33:38 3508

原创 Java中float/double取值范围与精度

Java浮点数浮点数结构  要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用某种方法,比如,简单点的,float四个字节,前两个字节表示整数位,后两个字节表示小数位(这就是一种规则标准),这样就组成一个浮点数。而Java中浮点数采用的是IEEE 754标准。IEE

2016-08-29 21:10:11 84353 20

原创 Java 变量数据类型

Java 变量之变量数据类型Java数据类型图: 1.基本数据类型  基本数据类型,也称内置类型,是可以在栈直接分配内存的,Java保留基本数据类型最大的原因也在此:性能。关于这一点可以参考:Java为什么需要保留基本数据类型。   另外,要注意,Java是基于JVM的,所以,其所占字节固定,与机器平台无关,所有地方统一占用内存大小(除了boolean,以及byte/short/boolean数

2016-08-26 15:05:00 5377 1

原创 Spring IoC容器初始化

Spring IoC容器初始化详解

2016-08-15 19:00:10 2056

原创 Spring Bean生命周期详解

Spring Bean生命周期详解

2016-08-12 17:40:08 46747 9

原创 Spring IoC容器结构

Spring IoC容器IoC容器主要作用就是创建并管理Bean对象以及Bean属性注入。如何创建Bean对象?是通过读取Bean配置文件生成相应对象。这些配置文件格式可能多种多样,xml、properties等格式,所以需要将其转换(ResourceLoader/Resolver)成统一资源对象(Resource),存储的位置也不一样,可能是ClassPath,可能是FileSystem

2016-08-11 14:44:13 6342 1

原创 关于ApplicationContextAware

今天,看了ApplicationContextAware,然后自己写了个例子,最后运行出了问题,报错:NullPointerException,再最后,发现自己这个问题真的很蠢,很白痴。好吧,我就当没发生这件事。。。 关于ApplicationContextAware,这是个接口,作用是实现了该接口的类,在Spring初始化的时候,会去执行该接口唯一的方法setApplicationContext

2016-08-09 18:05:08 4641

原创 (5) Java GC算法及种类

GC算法主要有以下三种方法(都是以GC Roots可达性为依据,引用计数算法实现简单,但由于存在循环引用问题,故已不采用,详见:Java GC(概述))(1).复制收集算法针对Young区,依次扫描这个区的所有可达对象(如何确定可达对象,请参考前一节),扫描只扫描GC维护的一张对象关系有向图(以下称为可达对象链),只要在这个图上的,就将这个对象复制到另一个区域(实现这种算法需要堆内

2016-08-05 21:04:36 6753

原创 Spring简单例子

1.引入包强烈建议,学习使用下maven及类似依赖包管理工具,如果你以后学Java,基本上会用到的吧maven:在pom添加依赖:    org.springframework    spring-context    3.2.7.RELEASE点击工程,选中Maven选项,点击Reimport(各个IDE可能不一样),它将会自动导入相关依赖包。如

2016-08-05 16:33:23 612

空空如也

空空如也

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

TA关注的人

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