自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

拿笔小星的博客

Stay hungry,Stay foolish

  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 项目经验1:缓存穿透

昨天线上系统报警,发现数据库QPS很高。经过排查后,发现是有一个接口没有走缓存,每次请求都透到了数据库。于是,找到接口代码看了一下。大致如下:(只是个描述逻辑的代码)CustomerObject obj = redisService.get("myKey");if (obj == null) { obj = CustomerObjMapper.findBy(id); redis...

2019-06-23 15:33:46 367

原创 Java8 effectively final

在Java8之前,我们在匿名内部类中如果使用外部局部变量a,那么变量a必须被声明为final的。但从Java8开始,我们不需要再去显示地声明这个局部变量为final了。

2019-03-31 19:23:38 2059

原创 Java反序列化与对象的创建

Java反序列化,创建对象,不会调用目标对象的构造方法。这是为什么?那么反序列化是如何创建对象的,让我们来看看他的底层机制吧。

2019-02-24 19:45:08 1872 2

原创 Java SPI机制

**SPI(Service Privoder Interface)**,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。

2019-01-26 19:33:12 344

原创 Java字节码结构剖析五:异常表

异常表实际上是Java代码的一部分,编译器使用异常表而不是简单的跳转命令来实现Java异常及`finally`处理机制。(注:在JDK1.4.2之前的Javac编译器采用了jsr和ret指令实现`finally`语句。在JDK1.7中,已经完全禁止Class文件中出现jsr和ret指令,如果遇到这两条指令,虚拟机会在类加载的字节码校验阶段抛出异常)

2019-01-05 00:31:06 2196 4

原创 Java字节码结构剖析四:属性表

了解了方法表的结构后,我们知道方法表有自己的属性表,用来存储与当前方法相关的附加属性。属性表每一个成员的值必须是`attribute`结构(如下所示:),一个方法可以有任意个与之相关的属性。

2018-12-09 18:09:40 1404

转载 浅析java内存模型

在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步?在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对顺序的机制,在共...

2018-12-02 14:41:30 194

原创 Java字节码结构剖析三:方法表

这里给大家介绍一款字节码分析小工具——jclasslib bytecode viewer。它可以将字节码文件结构化的展现给我们看。

2018-11-18 16:44:58 2255

原创 Java字节码结构剖析二:字段表

上篇介绍了字节码文件的结构和其常量池分析。紧接其后呢,我们要去了解字段表的概念和组成结构。接着上篇里的字节码的常量池往后分析。access_flags访问标志信息包括该class文件是类还是接口,是否定义成public,是否是abstract,如果是类,是否被申明为final。access_flags 的取值范围和相应含义见下表。标记名值含义ACC_PUBLIC0...

2018-10-28 16:44:27 1013

原创 Java字节码结构剖析一:常量池

这篇博客开始,我打算手把手的带大家去解读一下JVM平台下的字节码文件(熟悉而又陌生的感觉)。众所周知,Class文件包含了我们定义的类或接口的信息。然后字节码又会被JVM加载到内存中,供JVM使用。那么,类信息到了字节码文件里,它们如何表示的,以及在字节码里是怎么分布的呢?带着这些问题,让我们去深入了解字节码文件吧。

2018-10-14 15:01:42 2486 1

原创 Java与单例模式

最近在阅读《Effective Java 》这本书,第3个条款专门提到了单例属性,并给出了使用单例的最佳实践建议。让我对这个单例模式(原本我以为是设计模式中最简单的一种)有了更深的认识。单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在应用这个模式时,单例对象的类必...

2018-07-29 20:49:47 9838 2

原创 策略模式

最近我在项目中做了一个地图API相关的功能开发,需求就是,国内调百度地图API,海外就调谷歌地图API。功能实现很简单,但是这个功能开发完后,让我对策略模式有了更深的理解和印象。在这里我把当时的想法和遇到的问题完整记录下来。首先,定义一个地图接口。/** * 地图service */public interface IMapService { /** *...

2018-06-16 15:45:32 271

原创 类初始化阶段详解

一个Java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况。如图所示: 类的初始化做了什么为类的静态变量赋予正确的初始值。执行类的静态代码块。按照顺序自上而下运行类中的变量赋值语句和静态语句,如果有父类,则首先按照顺序运行父类中的变量赋值语句和静态语句。什么时候类会被初始化只有类或接口...

2018-03-04 20:46:24 4321 7

原创 Java NIO学习笔记四(零拷贝详解)

维基上是这么描述零拷贝的:零拷贝描述的是CPU不执行拷贝数据从一个存储区域到另一个存储区域的任务,这通常用于通过网络传输一个文件时以减少CPU周期和内存带宽。

2018-01-21 20:20:57 29529 12

转载 Java NIO学习笔记三(堆外内存之 DirectByteBuffer 详解)

堆外内存堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建的对象都处于堆内内存中,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理它们的内存。那么堆外内存就是存在于JVM管控之外的一块内存区域,因此它是不受JVM的管控。

2017-12-11 17:13:24 18359 1

原创 Java NIO学习笔记二(Buffer的flip()方法详解)

flip()反转Buffer,将Buffer从读状态反转到写的状态

2017-11-26 17:09:17 19144 10

原创 Java NIO学习笔记一(IO VS NIO)

JAVA中传统IO和NIO的区别

2017-11-18 17:11:50 2303

原创 foreach循环详解

不要在 foreach 循环里进行元素的 remove / add 操作。 remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁

2017-11-02 15:48:17 5868 1

转载 gradlew在基于Gradle项目构建中的应用分析

众所周知,在软件开发中,我们无论使用何种工具、库和软件,首先要做的事情就是先将所需的工具下载到本地,然后可能还需要进行一些基本的配置才能够正常使用。

2017-10-22 16:22:26 4402 1

原创 通过匿名内部类创建对象

通过匿名内部类的方式创建一个对象,并且完成一些操作。

2017-07-23 21:48:31 2885

原创 git用github搭建远程仓库

在github上新建远程库,然后和本地git库关联,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

2017-07-15 14:45:51 487

转载 MySQL数据库分区(Database partition)

数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。

2017-05-31 17:03:58 3095

原创 Lambda表达式和匿名内部类

初学lambda表达式的时候,以为lambda表达式就是对匿名内部类的一种简化写法,其他方面跟匿名内部类是一样的。这说的只是二者之间只存在简单的语法上的变化。但实际上,二者之间存在很多显著差异,其中有两点对于程序员来说非常重要:

2017-04-22 20:36:20 6092

原创 Java8中对Lambda表达式中方法参数的类型推断(二)

java8类型推断及它的默认类型推断行为

2017-04-13 12:43:35 5611 2

原创 Java泛型对方法重载的影响(二)

虚拟机没有泛型类型对象——所有对象都属于普通类。在泛型实现的早期版本中,甚至能够将使用泛型的程序编译为在1.0虚拟机上运行的类文件!这个向后兼容性在Java泛型开发的后期被放弃了。无论何时定义一个泛型类型,都自动提供了一个相应的原始类型(raw type)。原始类型的名字就是删去类型参数后的泛型类型名。擦出(erased)类型变量,并替换为限定类型(无限定类型的变量用Object)。

2017-04-09 15:19:42 1351 1

原创 Java泛型对方法重载的影响(一)

java泛型是在编译期有效,在运行期被删除,也就是说所有的泛型参数类型在编译后都会被清除掉。因为虚拟机没有泛型类型对象——所有对象都属于普通类。

2017-04-09 14:47:13 10154 1

原创 Java8中对Lambda表达式中方法参数的类型推断(一)

Java编译器通过上下文,目标类型和抽象方法的签名推断所传入的匿名函数实现

2017-04-05 22:58:19 15471 4

原创 sql查询员工请假详情——请假天数跨月问题

项目中要加个月签到详情页面。需求:就是用户选择月份,查询该月员工签到详情(包括请假)。数据库(mysql)中已有休假表(tt_offwork),表结构如下:CREATE TABLE `tt_offwork` ( `offwork_id` varchar(32) NOT NULL, `create_time` datetime DEFAULT NULL, `day_num` decimal

2017-03-09 11:33:25 7394 1

转载 2017年App开发趋势介绍详解(建议收藏)

2017 年的开年,朋友圈先被一圈小程序的新闻刷爆了。小程序未出之前,许多媒体声称这将颠覆App。可是小程序推出之后,媒体的声音不像之前那样一边倒了。App开发人员估计还要继续忙碌下去,因为整个App开发行业的创新依然保持着非常强劲的增长势头,而对于很多企业而言,移动营销策略也会显得愈发重要。身处在这个 ” 移动 ” 的时代,作为创业者的你是否也想从这个庞大的市场里分到一块蛋糕呢?

2017-01-21 11:41:35 2039

转载 jQuery AJAX回调函数this指向问题

jquery ajax回调函数this指向问题

2016-11-04 11:53:21 2168

转载 input 事件兼容处理以及中文输入法优化

移动端 js input事件如何解决输入汉字时,拼音在输入框内也会触发input事件

2016-10-20 16:02:24 11723

转载 MVC,MVP 和 MVVM 的图示

本文转自阮一峰的网络日志复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。昨天晚上,我读了《Scaling Isomorphic Javascript Code》,突然意识到,它们的区别非常简单。我用几段...

2016-10-15 15:26:55 504

转载 Java常量池理解与总结

java常量池

2016-07-31 22:03:37 318

转载 JS的几种创建函数方式

JS的5种函数创建方式

2016-07-09 16:53:20 9990

原创 Kettle连接ORACLE失败,报错IO异常:

之前用kettle从测试环境抽数据,连接的是oracle数据库,没有任何问题。今天,经理让我从生产环境抽数,于是我把之前连接的主机名称改成生产环境的地址,换一下用户名密码,其它不变(如:数据库名称)。连接时报错如下图: 感到很纳闷,用户名和密码都是正确的,测试环境可以连,怎么换个IP就失败了。 通过检查,觉得应该是错在连接ORACLE的SID上。我觉得kettle连接ORALCE应该是

2016-06-30 13:38:07 6411

原创 为什么我们要尽可能使用Iterator接口中的remove方法而不是用Collection接口中的remove方法

最近在看《数据结构与算法分析》(Java语言描述)一书,看到第3.3.2 这一节时介绍Iterator接口。书中说道,“Iterator接口中包含一个方法,叫做remove()。该方法可以删除next最新返回的项。虽然Collection接口也包含一个remove方法,但是,使用Iterator的remove可能有更多的优点。” 那么首先我们知道Collection接口是继承于Iterator接口

2016-06-26 22:42:34 6556

原创 Java中ListIterator和Iterator详解与辨析

Java中ListIterator和Iterator详解与辨析在使用java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置,如下图所示:这里假设集合List由四个

2016-06-18 17:33:43 598

原创 页面传中文参数给Struts2的Action类出现乱码问题

页面传中文参数给Struts2的Action类出现乱码问题

2015-12-25 15:53:00 447

原创 如何查看Oracle中同义词的表结构

select     column_name,    data_type,    data_length from     user_tab_cols@dblink   t  where      t.table_name='表名';注:   1.@dblink是你要查询的同义词对应的database link。   2.表名是在db link里

2015-12-12 20:28:25 10256

原创 Kettle执行transform时报错:错误打开转换

使用kettle进行数据库表记录迁移

2015-11-15 20:50:55 8156

PL/SQL Developer 11.0.4绿色破解版

PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势。

2015-11-23

google-gson-2.2.4

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

2015-11-06

空空如也

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

TA关注的人

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