自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

扬帆舟的博客

未老已些许白发,青春已然献给代码

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

原创 深入理解Java双冒号(::)运算符的使用

Jdk8中有好多新的特性,比如引入Lambda,简化代码的书写等等我们先看一个关于Lambda的使用/*** 输出list */@Testpublic void test() { String[] array = {"aaaa", "bbbb", &quot

2019-02-20 15:12:53 174888 32

原创 如何获取到Java对象的地址

最近在整理final相关的测试用例,所以对final进行了重新思考,final 可以修饰类、方法、实例、参数!final修饰类时,表示该类不可以被继承final修饰方法时,表示该方法不可以被(子类)重写final修饰实例时,表示该实例不可以被修改,但是具体是指实例的内存地址不可以被修改? 还是实例里的值不可以被修改?还是实例的内存地址和值都不可以被修改?其实是蛮简单的一个问题,当fin...

2019-02-02 16:15:31 33997 3

原创 深入理解Java中的enum(枚举)

项目中如果要定义组变量,你可能会这样定义: public static final String KEY_PRE = "api-key"; //前缀 public static final String KEY_PRE_VERIFY_IMG = &amp

2019-01-30 19:39:44 2308 2

原创 解决SQLException: Incorrect string value异常

解决SQLException: Incorrect string value异常

2023-06-01 18:43:18 3140

转载 历练个性,对每个人的成长至关重要

所谓的“历练个性”是什么意思呢?就是对于有些你不愿意面对的东西,要想办法去面对,因为你不去面对的话,这件事情就永远留在那儿,永远也解决不了,到最后甚至会发酵,会越来越麻烦。如果我历练成了快刀斩乱麻的个性,再跟我的个性中好的一面结合起来,那么新东方的推动力、发展力可能会比现在好很多。...

2022-06-20 11:50:01 246

原创 【 GUI系列一 】JAVA开发指南

JAVAGUI开发指南一:环境准备本人习惯于Java Swing开发,而且对开界面开发,如果不采用工具的话,调样式太费劲。所又采用了界面开发工具windowbuilder,可以从下面的地址进行插件下载,http://www.eclipse.org/windowbuilder/,这里安装的过程是采用的下面页面的教程进行安...

2019-10-16 14:36:56 510

原创 【JAVA中的那些事】init与clinit的区别

背景那天我在进行代码测试,debug操作,看到如下情况:发现在执行类ParentBean的static代码块的时候,出现了:ParentBean.()那疑问来了:是什么东东?是什么东东带着疑问我进行了疯狂google(技术的路上万事都是问自己,自己不懂问google,哈哈)在oracle的官网有这么一段文献:At the level of the Java Virtual Mach...

2019-07-31 15:28:39 656

原创 Java文件流下载

用java流的形式输出到页面,实现文件下载 @RequestMapping(value = "/page/file/download") @ResponseBody public void download(HttpServletRequest request, HttpServletResponse response,String fileName) throws Exc...

2019-06-06 18:12:26 7454 5

翻译 JVM预热

背景讲JVM的预热,就离不开JVM的类加载, JVM的三个类加载器:Bootstrap、ExtClassLoader、AppClassLoader什么是JVM预热JVM预热 : JVM Warm Up一旦类加载完成,所有重要的类(在进程启动时使用)都会被推送到JVM缓存(本机代码)中,这使得它们在运行时可以更快地访问。其他类是根据每个请求加载的。对Java Web应用程序的第一个请求通...

2019-05-06 18:29:02 7473

原创 【并发编程】CAS与FAA

在并发编程中,原子性操作无处不在,不管程序中是怎么实现原子性操作,底层都是通过CPU的指令来实现的,这里来介绍一下最著名的:CAS与FAA!CAS: 比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 该操作通过将内存中的值与指定...

2019-04-24 11:15:44 2035 1

原创 Springboot中mapper的配置

关于mapper怎么配置,如果去网上查资料大概分下面两类配置方法:配置一:mybatis.type-aliases-package=mybatis.mapper-locations =classpath:/mappers/*.xml配置二:mybatis.typeAliasesPackage=com.sivalabs.demo.domainmybatis.mapperLocation...

2019-03-13 11:36:17 31800

原创 深入理解Java中Functionl Interface

在上一篇《深入理解Java双冒号(::)运算符的使用》的结尾,讲到了Functionl Interface。Functionl Interface:函数式接口(或称功能接口),它是只包含一个抽象方法的接口,它们只能显示一个功能。从Java 8开始,lambda表达式可以用来表示函数式接口的实例。函数接口可以有任意数量的默认方法。例如:Runnable、ActionListener和Compara...

2019-02-28 18:49:13 2802

原创 【阿里笔试题】线程篇

前些日子面试阿里,其中有一笔试题如下:补充如下程序通过N个线程顺序循环打印从0至100,如给定N=3则输出:thread0: 0thread1: 1thread2: 2thread0: 3thread1: 4...注意线程号与输出顺序间的关系。当拿到题之后,内心分析:大概知道该题是要考试Java里线程之间协作相关的知识 当时是这样写的:pack...

2019-01-27 18:01:13 894 5

原创 死锁

死锁(英语:Deadlock),又译为死结,计算机科学名词。当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。在多任务操作系统中,操作系统为了协调不同进程,能否获取系统资源时,为了让系统运作,必须要解决这个问题。死锁产生的条件:在上面的图片中,线程1持有一个资源R1,需要另一个资源R2来完成执行,但R2被线程2锁定,而线程2需要R3,而R...

2019-01-20 11:17:09 232

原创 Memory barrier(内存屏障)

内存屏障(英语:Memory barrier),也称内存栅栏,内存栅障,屏障指令等,是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。大多数现代计算机为了提高性能而采取乱序执行,这使得内存屏障成为必须。语义上,内存屏障之前的所有写操作都要写入内存;内存屏障之后的读操作都可以获得同步屏障之前的写操作的结...

2019-01-18 17:57:15 3693

原创 Spring源码(4)Context篇之AbstractApplicationContext(下)

上一篇讲解了Spring的AbstractApplicationContext类refresh()方法, 前六步(其中五步)都是针对BeanFactory的处理…下面接着讲其七:initMessageSource();/*** Initialize the MessageSource. * Use parent's if none defined in this context. */...

2019-01-10 16:58:58 728 1

原创 Spring源码(4)Context篇之AbstractApplicationContext(上)

上一篇讲解了Spring的ContextLoader类在初始化Spring应用上下文时,调用了refresh()方法,该方法的具体实现就在AbstractApplicationContext类里下面就来看一下refresh方法都做了哪些事:@Overridepublic void refresh() throws BeansException, IllegalStateException {...

2019-01-03 17:49:27 1083 2

原创 Spring源码(3)Context篇之ConfigurableWebApplicationContext

上一篇讲解了Spring通过ContextLoader类的initWebApplicationContext方法创建的WebApplicationContext实为XmlWebApplicationContext实例再看initWebApplicationContext方法的源码:/** * 为了讲重点,省略了部分源码 */public WebApplicationContext in...

2018-12-27 18:55:45 3800

原创 Spring源码(2)Context篇之WebApplicationContext

上一篇讲解了Spring加载Context的起源来自工程下web.xml配置的Listener<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class&amp

2018-12-26 11:03:41 643

原创 Spring源码(1)Context篇之ContextLoader

spring源码之Context篇Spring项目如此强大 , 以至于现在的项目都是依赖Spring搭建,天天与spring打交道,自问一下,你是否真的了解它?Servlet与Spring的关系J2EE标准ServletSpring我们经常在web.xml里配置如下代码:<listener> &

2018-12-25 14:56:02 1750

原创 java实现动态编译并动态加载

在D盘test目录下有个java文件:AlTest.javapublic class AlTest { public String sayHello(){ System.out.println("AlTest类 sayHello()方法正在执行...."); return "hello word"; }}现需要实现在工程已经运行过程中,进行java文件到class文件...

2018-09-19 09:40:55 28998 2

原创 java实现动态编译的几种方法

所谓动态编译,就是在程序运行时产生java类,并编译成class文件。  在D盘test目录下有两个java文件:AlTest1.java、AlTest2.java,现需要通过java代码实现java文件到class文件的编译操作:import java.io.BufferedReader;import java.io.InputStream;import java.io.In...

2018-09-19 09:05:00 14237

原创 关于@Autowired的那些事

先抛个问题: 接口package com.che.api.test;/** * @author zhoufy * @date 2017年9月8日 下午2:25:12 */public interface OrderService { /** * 下单处理 */ public void createOrder(); }实现类:package com.che.a

2017-09-08 14:52:39 689

原创 深入理解Java中的final关键字

一 final修饰变量客套话:Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。 工作里,final经常与static

2017-04-13 16:25:34 430

原创 oracle 分页总结

1)分页查询一select * from (select a1.*,rownum rn from (select * from student) a1 where rownum =2;2)分页查询二select a1.* from (select student.*,rownum rn from student where rownum =3;3)分

2017-03-09 10:47:22 252

原创 【Java内核】C++文件

想查看Java内核C++文件,在下面的地址查看:http://hg.openjdk.java.net/jdk6/jdk6/hotspot/file/8389681cd7b1/src/share/vm/memory/heap.hpp如下代码:#ifndef SHARE_VM_MEMORY_HEAP_HPP#define SHARE_VM_MEMORY_HEAP_HPP#in

2017-01-20 10:54:28 475 1

原创 【synchronized关键词】从字节码层面解析

java中我们都知道synchronized关键字是用来加锁,在多线程并发情况下实现同步的,那它底层是怎么实现的呢?代码清单1-1public class SyncTest { public void test(){ synchronized(this){ System.out.println("-------call test() method---------")

2017-01-19 14:30:40 1859

转载 【Java对象解析】不得不了解的对象头

一:对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。  HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数...

2017-01-18 15:02:41 41031 11

原创 【GC那点事】垃圾收集算法

一:标记-清除算法   标记-清除(Mark-Sweep)算法是最基础的算法,就如它的名字一样,算法分为”标记”和”清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的。它主要有两个缺点:一个是效率问题,标记和清楚过程的效率都不高;另外一个是空间问题,标记清楚后会产生大

2017-01-16 11:22:24 296

原创 【JVM内存模型】实例分析

In a nutshell primitive, object and class data are stored in 3 different memory areas: heap space, method area and native area. The heap space holds object data, the method area holds class code, an

2017-01-12 11:14:46 318

原创 【JVM内存模型】程序计数器

程序计数器 (The Program Counter)程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功

2017-01-11 14:11:04 524

原创 【消息队列MQ】ActiveMq的通信方式

消息规范里面定义最常见的几种消息通信模式主要有发布-订阅、点对点这两种。ActiveMq是JMS消息通信规范的一个实现,除了这两种通信方式,还衍生出来了一种请求应答的模式.1) publish-subscribe 发布/订阅方式用于多接收客户端的方式.作为发布订阅的方式,可能存在多个接收客户端,并且接收端客户端与发送客户端存在时间上的依赖。一个接收端只能接收他创建以后发送客

2017-01-05 16:55:44 2904

原创 【消息队列MQ】从MQ种类说起

目前MQ有以下几个,各有自己的使用场景,简单介绍一下先.....1)ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线;2)RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。;

2017-01-05 16:32:46 8216

原创 String常量池

常量池:在java用于保存在编译期已确定的,已编译的class文件中的一份数据。它包括了关于类,方法,接口等中的常量,也包括字符串常量.代码清单1-1public class StringPoolTest { public static void main(String[] args) { String str = "abc";

2016-12-27 20:32:50 331

原创 【JVM内存模型】入门篇

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的内存将会包括以下几个运行时数据区域。这里一定要注意的是:方法区和Java堆是线程共享区,而虚拟机栈、本地方法区和程序计数器都是线程私有的。

2016-12-26 15:20:51 326

原创 局部变量表影响GC之实例解析

最近GC相关的资料,看到一些好玩的东西,在些总结一下!代码清单1-1public static void main(String[] args){ byte[] placeholder = new byte[64*1024*1024]; System.gc();}代码清单1-1中的代码很简单,即向内存填充了64MB的数据,然后通知虚拟机进行垃圾收集。我们在虚拟

2016-12-22 13:11:44 845

原创 【synchronized关键词】高并发下地单例模式

单例模式有以下特点:  1、单例类只能有一个实例。  2、单例类必须自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。通常单例模式会这样写:package cn.com.test.p201612.test3;public class MemcachedUtil { private static MemcachedUtil instance

2016-12-12 11:37:45 754

原创 多线程环境下的计数器

package cn.com.test.vol.p201612;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.atomic.AtomicInteger;public class Counter { privat

2016-12-12 09:28:51 4784

空空如也

空空如也

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

TA关注的人

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