自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 L1 L2 缓存

因为各级存储硬件的参数和性能不同所以在计算机硬件当中分为以下几种:由此可见顶级空间小但处理速度最快,下层容量大但处理速度时间较长。存储器系统采用分层结构,顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的。        寄存器:即L1缓存,与cpu同材质构成,所以数据读写无延迟。典型容量是:在32位cpu中为32*32,在64位cpu中为6...

2018-10-31 22:13:44 1600 1

原创 并发编程要考虑的几点

并发编程的目的是为了让程序运行的更快,但是,并不是启动更多的线程就能让程序最大限度的并发执行。在进行并发编程时,如果希望通过多线程执行任务让程序运行的更快,会面临很多的问题,比如,上下文切换,死锁的问题,以及受限于硬件和软件的资源限制的问题。1.1上下文切换即使是单线程处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时...

2018-10-31 21:23:01 522

原创 jquery实现多选框全选全不选

其实是一个很简单的功能,有的时候在网上找的文档,里面写的根本就不管用,索性自己备份一下吧!代码如下,绝对好使:function bit(){ if($("#purchasingckAll").is(':checked')){ $('input[data="id"]').each(function(){ $(this).prop("checked",true); });...

2018-10-31 20:45:47 661 1

原创 a连接传递参数实现文件下载

Java后端代码如下: @RequestMapping(value="/atoDownLoad") private ModelAndView atoDownLoad(HttpServletResponse response,HttpServletRequest request) throws Exception { ModelAndView mv = this.getModelA...

2018-10-29 22:23:12 2080

原创 invalid LOC header (bad signature)

maven项目tomcat 启动报错 invalid LOC header (bad signature)原因是maven仓库中的某个jar包下载不完整或损坏等原因无法正常加载。解决方法:右击项目--》run as --》maven test :这里会有警告提示,项目启动时,读取到那个jar包时出现异常,然后我们找到maven仓库对应的jar包,删除,让maven重新下载就可以了。...

2018-10-22 10:26:44 2677

原创 ace input file 上传

HTML代码<div class="form-group"> <form id="addForm" action="" enctype="multipart/form-data"> <label class="col-sm-2 control-label text-right"><b cl

2018-10-11 16:47:18 5494 2

原创 解决this is incompatible with sql_mode=only_full_group_by

具体出错提示:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in ...

2018-10-11 13:48:30 579

原创 Java反射分析类的结构

在java.lang.reflect 包中有三个类 Field 、Method 、和Contructor 分别用于描述类中的实例域,方法和构造器。这三个类都有一个getName()方法,用来返回项目的名称。Field类中有一个getType方法,用来返回描述域所属类型的Class对象。Method 和 Contructor 类又能够报告参数类型的方法,Method类还有一个可以报告返回类型的方法,...

2018-10-09 16:50:31 387

原创 Java反射获取Class类对象

反射:能够分析类能力的程序称为反射,印象中sun公司在最初的两个版本就已经在jdk中发布了有关反向的声明,反射的功能及其强大,那它能做些什么呢?在运行时分析类的能力 在运行时查看对象 实现通用的数组操作代码 利用Method对象,这个对象很想C++中的指针看起来貌似很难理解,实际上呢,就是不好理解,索性就慢慢渗透吧。。。反射是一种功能及其强大且复杂的机制,使用它的主要人员是工具的构...

2018-10-09 14:59:21 180

原创 volatile关键字讲解(Java)

 package synchornizeds;import java.util.concurrent.TimeUnit;/* * volatile 关键字 是一个变量在多个线程间可见 * * A B线程都用到一个变量,Java默认是A线程中保留一份copy,这样如果B线程修改了该变量,则A线程未必会知道 * * 使用volatile关键字 会让所有的线程都会读到变量的...

2018-10-08 17:41:07 146

原创 线程异常释放锁

package synchornizeds;import java.util.concurrent.TimeUnit;import jishuqisuanfa.Main;/* * * 程序在执行过程中,如果出现异常,默认情况锁会被释放 * 所以在并发处理的过程中,有异常要多加小心,不然可能会发生不一致的情况 * 比如,在一个web app处理的过程中,有多个servlet线...

2018-10-08 17:01:37 939

原创 synchronized关键字(同步锁)详细解析

这里大部分的解释都在代码中。demo1package synchornizeds;public class Demo1 { private int count; private Object o = new Object(); public void m() { synchronized (o) { //任何线程执行一下代码都要申请o对应的锁。此处的o是堆内存中new...

2018-10-08 16:01:47 1887

原创 深入理解JVM之垃圾收集算法

我们这里将介绍4中垃圾收集算法标记-清除算法 复制算法 标记整理算法 分代收集算法标记-清除算法标记-清除算法是最基础的算法,顾名思义,这种算法分为两个过程,标记和清除两个阶段。这里对象是如何进行标记或者判断对象是否需要清除的呢,就是我们之前文章中提到的引用计数法和可达性分析算法,当然,比较主流的是可达性分析算法。在完成对对象的标记之后,就是清除工作了。之所以说这种算法是最基础的垃...

2018-10-07 17:21:36 163

原创 深入理解JVM之可达性分析法判断对象是否存活

之前已经讲述过利用引用计数器法来判断对象是否存活的方法,本文介绍另一种应用更加广泛,在内存回收方面效率更高的方法--可达性分析算法。在主流的程序设计语言(比如Java,C#等)的实现中,都是通过可达性分析算法来判断对象是否存活的,这个算法的基本思路是:通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots节点没有任...

2018-10-07 16:05:07 442

原创 深入理解JVM之引用计数法判断对象是否为垃圾

判断对象是否存活的算法一般是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1,当引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能在被使用的。客观的说,引用计数算法的实现简单,判定的效率很高,在大部分的情况下是一个不错的算法,也要一些著名的应用实例,比如微软公司的COM技术,使用ActionScript 3 的FlashPlayer,Python语言和在游戏脚...

2018-10-07 15:46:26 1152

原创 深入理解JVM之对象访问定位

当我们创建完成对象之后要使用对象,那么我们如何找到这个对象呢?这就用到本文所讲述的对象访问定位。建立对象是为了使用数据,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这哥引用应该通过何种方式去定位,访问堆中的对象的具体位置,所以对象访问方式也是取决于虚拟机的实现而定的。目前流行的...

2018-10-07 14:11:42 337

原创 java设计模式概述

Java设计模式概述        设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。一、设计模式的分类总体来说设计模式分为三大类(23种):创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适...

2018-10-07 00:36:01 154

原创 Java掩码

package javayanma;public class Override { /** * 掩码缓存,当所需掩码数量在0-16范围之内的时候 * 直接使用缓存,不需要创建内存对象,效率最高 * <p> * 如果不理解这里,可以参考JDK类库的 Integer 源码 sizeTable */ p...

2018-10-06 23:02:42 979

原创 深入理解JVM之探索对象结构

我们都知道现在高级语言都是面向对象思想,不管是用实例化创建对象还是使用工厂生产实例,你真的了解你的对象吗?之前的博文中已经介绍过对象的创建了,大家可以自己去翻看,我们这篇博文就简单介绍一下我们的对象,看看它的结构是怎样的。首先从以下三部分展开,对象头(Header),实例数据域(InstanceData),配置填充(padding):对象头对象头存储对象的原数据。对象中主要有两部分内容...

2018-10-06 21:44:19 343

原创 synchronized 同步锁(Java)

 引言在多线程应用场景中,同步锁是一种非常重要的机制,例如:ID号的分配,多个客户端分别与服务端建立连接,客户端并发请求的情况下,为提升吞吐量,服务端一般采用多线程处理请求,若无同步锁机制,不同线程分配到相同ID号的情况将不可避免,而这种情况与预期相违背。在现实中是有许许多多的例子的,比较典型的有购票,抽奖等。java 同步锁机制介绍java同步锁的关键字为:synchronized,...

2018-10-06 20:45:44 2949

原创 Java多线程之售票问题

三个售票窗口同时出售20张票程序分析:1.票数要使用同一个静态值2.为保证不会出现卖出同一个票数,要java多线程同步锁。设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!2.创建主方法调用类 创建一个站台类,继承Threadpackage se...

2018-10-06 17:29:39 4271

原创 抽象工厂模式(Java)

工厂模式可以分为:简单工厂模式,工厂方法模式,抽象工厂模式。简单工厂模式就没什么好说的了,无非是所有的东西都写在一个类里面,要什么就调用什么,如果要添加新的方法也是到这类里面添加,代码很多,看起来也是很乱,就像一个大工厂,什么都在里面。扩展性很低。而工厂方法模式,把说明的理论和生产的东西就分开一点。抽象工厂模式是工厂方法模式的升级。说简单点,后面两种工厂模式都是java三大特征的继承和多...

2018-10-06 15:13:10 252

原创 工厂设计模式(Java)

介绍在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式。它解决的仍然是软件设计中与创建对象有关的问题。它可以更好的处理客户的需求变化。引入我们继续来说"new"的问题,我们在简单工厂模式中,将实例化对象的工作推迟到了专门负责创建对象的工厂类中,这样,在我们事先预知的情况下,可以根据我们的需要动态创建产品类。但是,我们的预知是有限的,...

2018-10-06 14:49:32 162

原创 Java代码实现简单工厂模式

模式定义简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。模式结构简单工厂模式包含如下角色:Factory:工厂角色Product:抽象产品角色C...

2018-10-05 22:01:32 4779

原创 Java工厂模式

一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!",坐上Bmw后他说"开宝马车!",坐上Audi后他说"开奥迪车!"。你一定说:这人有病!直接说开车不就行了?! 而当把这个爆发户的行为放到我们程序语言中来,我们发现C语言一直是通过这...

2018-10-05 21:25:01 1641

原创 Java虚拟机--对象的创建

下面简单说一下Java虚拟机中对象常见的原理:我们编写代码肯定已经是很熟悉了,通过new关键字,给对象实例化并分配内存,但是实际上对象的创建是一步步很复杂的过程,我们先看一下对象创建的流程图。在对象创建之前先要实现Java类的加载。虚拟机类加载机制我们之后会有详细讲解,这里就不详细展开了,而是将重点放在对象的创建方面。我们看一下内存分配对象的几种方式指针碰撞我们首先假设堆内...

2018-10-04 21:46:13 191

原创 如何合理配置线程池的大小

一般需要根据任务的类型来配置线程池大小:  如果是CPU密集型任务,就需要尽量压榨CPU,参考值可以设为 NCPU+1  如果是IO密集型任务,参考值可以设置为2*NCPU  当然,这只是一个参考值,具体的设置还需要根据实际情况进行调整,比如可以先将线程池大小设置为参考值,再观察任务运行情况和系统负载、资源利用率来进行适当调整。 参考:https://blog.csdn.n...

2018-10-04 20:42:37 619

原创 深入剖析线程池实现原理

1.线程池状态    在ThreadPoolExecutor中定义了一个volatile变量,另外定义了几个static final变量表示线程池的各个状态:volatile int runState;static final int RUNNING = 0;static final int SHUTDOWN = 1;static final int STOP ...

2018-10-04 20:38:05 213

原创 使用ThreadPoolExecutor类创建线程池

一、采用这种方式的优点:可以实时获取线程池内线程的各种状态 可以动态调整线程池大小二、线程池的工作原理简介:如果当前线程池中的线程数目小于corePoolSize,则每来一个任务,就会创建一个线程去执行这个任务; 如果当前线程池中的线程数目>=corePoolSize,则每来一个任务,会尝试将其添加到任务缓存队列当中,若添加成功,则该任务会等待空闲线程将其取出去执行;若添加失败...

2018-10-04 20:24:11 255

原创 Java中的ThreadPooLExecutor类

java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。下面我们来看一下ThreadPoolExecutor类的具体实现源码。在ThreadPoolExecutor类中提供了四个构造方法:public class ThreadPoolExecutor extends Abstrac...

2018-10-04 20:17:55 191

原创 Java创建线程的三种方式

在Java中提供了3种创建线程的方法:1、通过实现Runnable接口2、通过继承Thread类本身3、通过Callable或者Future创建线程实现Runnable接口创建线程类 1、定义Runnable接口的实现类,重写run()方法2、创建Runnable实现类的实例,并以此作为Thread的target来创建对象,该对象才是真正的线程对象。package d...

2018-10-04 14:44:44 177

原创 Java线程的生命周期

Java多线程编程Java给多线程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发存在多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别形式。进程:一个进程包括有操作系统分配的内存空间,包含至少一个线程。一个线程不可能单独的存在,它必须是进程的一部分。一个进程会一直不断的进行,直到所有的非守护线程全部执行完毕之后,再能结束进程。线程是一个动态执...

2018-10-04 13:50:15 259 1

jsonview插件

jsonview插件,可在谷歌浏览器中安装,方便web开发中对json数据的查看和检查

2018-09-27

spring-boot-mybatis-mysql-demo

springboot+mybatis 实现对mysql数据的增删改查。可以直接导入项目使用启动springboot的启动类run.java,在浏览器中输入localhost:8080回车即可

2018-09-15

空空如也

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

TA关注的人

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