自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

supersnow0622的专栏

没有人知道未来是怎样的,但自己的未来是自己走出来的!

  • 博客(123)
  • 资源 (11)
  • 收藏
  • 关注

原创 Spring4学习:任务调度和异步执行器之Quartz框架

一、Quartz基础知识1、Quartz基础结构(1)Job:接口,只有一个方法void execute(JobExecutionContext context),通过实现该接口来定义需要执行的任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在JobDataMap实例中。(2)JobDetail:Quartz在每次支持Job时,都重新创建

2017-04-06 17:31:09 2551 1

原创 Spring4学习:Spring Cache

一、缓存概述通常在Web应用开发中,不同层级对应的缓存要求和缓存策略不同,如下图是系统不同层级对应的缓存技术选型:1、缓存命中率即从缓存中读取数据的次数与总读取次数的比率。2、过期策略即如果缓存满了,从缓存中移除数据的策略。常见的有LFU、LRU、FIFO。FIFO:先进先出策略,即先放入缓存的数据先被移除。LRU:最久未使用策略,即使用时间距离现在最久的那个数

2017-04-06 15:20:04 855

原创 Spring4学习:Spring的事务管理

一、数据库事务知识1、数据库锁机制按锁定的对象的不同,可分为表锁定和行锁定。表锁定对整张表进行锁定,而行锁定对表中的特定行进行锁定。从并发事务锁定的关系上看,可以分为共享锁定和独占锁定。共享锁定会防止独占锁定,但允许其他的共享锁定。而独占锁定既防止其他的独占锁定,也防止其他的共享锁定。更新数据时,数据库必须在进行更改的行上施加行独占锁定,insert、update、delete和selec

2017-03-31 13:54:58 505

原创 Spring4学习:基于@AspectJ和Schema的AOP

一、使用@AspectJSpring在处理@AspectJ注解表达式时,需要将Spring的asm模块添加到类路径中。Spring采用AspectJ提供的@AspectJ注解类库及相应的解析类库,需要在pom.xml文件中添加aspectj.weaver和aspectj.tools类包的依赖。1、@AspectJ使用实例:首先是业务类的代码:public class NaiveWa

2017-03-23 18:37:46 1160

原创 Spring4学习:SpringAOP基础

AOP是有特定的应用场合的,它只适合那些具有横切逻辑的应用场合,如性能检测、访问控制、事务管理及日志记录一、AOP概述1、AOP术语(1)连接点(Joinpoint):由两个信息确定:一是用方法表示的程序执行点;二是用相对位置表示的方位。如在Test.foo()方法执行前的连接点,执行点为Test.foo(),方位为该方法执行前的位置。Spring使用切点对执行点进行定位,而方位则在增

2017-03-21 21:06:59 985

原创 Spring4学习:在Ioc容器中装配Bean

一、基于Schema的配置格式:命名空间的定义分为两步:第一步指定命名空间的名称;第二步指定命名空间的Schema文档格式文件的位置,用空格或回车换行进行分隔。在第一步中需要指定命名空间的缩略名和全名,比如:xmlns:aop="http://www.springframework.org/schema/aop",aop为命名空间的别名,一般使用简介易记的名称,文档后面的元素可通过

2017-03-20 21:15:23 991

原创 Spring4学习:Spring容器高级主题

一、Spring容器技术内幕如下图描述了Spring容器从加载配置文件到创建出一个完整Bean的作业流程及参与的角色:(1)ResourceLoader从存储介质中加载Spring配置信息,并使用Resource表示这个配置文件资源。(2)BeanDefinitionReader读取Resource所指向的配置文件资源,然后解析配置文件。配置文件中的每个解析成一个BeanDef

2017-03-17 20:52:55 1621

原创 Spring4学习:IoC容器

一、概念IoC(Inverse of Control)控制反转,及某一接口具体实现类的选择控制权从调用类中移除,转交给第三方决定,即由Spring容器借由Bean配置来进行控制。后来软件界的Martin Fowler提出了DI(Dependency Injection)依赖注入的概念用来代替IoC,即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的

2017-03-15 16:38:44 708 1

原创 Java并发编程实战:线程池的应用

一、任务与执行策略间的隐形耦合1、线程饥饿死锁当任务都是同类、独立的时候,线程池才会有最好的工作表现。如果将耗时的短期的任务混合在一起,除非线程池很大,否则会有“塞车”的风险;如果提交的任务要依赖其他的任务,除非池是无限的,否则有产生死锁的风险。如下代码所示,对于一个单线程化的Executor,一个任务将另一个任务提交到相同的Executor中,并等待新提交的任务的结果,第二个任务滞留在工

2017-03-07 17:30:59 410

原创 Java并发编程实战:取消和关闭

一、任务取消1、设置cancelled标志在程序中声明volatile类型的cancelled标志,当任务调用者设置cancelled为true时,任务在运行过程中通过不断检查是否被取消可以得知任务被取消的消息,从而不再执行任务。如下代码所示:class PrimeGenerator implements Runnable{ private final List primes = n

2017-03-06 15:57:50 602

原创 Java并发编程实战:任务执行

一、无限制创建线程的缺点:(1)线程生命周期的开销:线程的创建与关闭是需要时间的,带来处理请求的延迟,并且需要在JVM和操作系统直接进行相应的处理活动。如果请求时频繁且轻量的,那么为每个请求创建一个新线程的做法会消耗大量的计算资源。(2)资源消耗量:活动线程会消耗系统资源,尤其是内存。如果可运行的线程数多于可用的处理器数,线程将会空闲。大量空闲线程占用更多内存,给垃圾回收器带来压力,而且大

2017-03-04 15:12:57 523

原创 Java并发编程实战:并发基础构建模块

一、同步容器类同步容器类包括Vector和Hashtable以及一些功能相似的类,这些同步的封装器类是由Collections.synchronizedXxx等工厂方法创建的。这些类实现线程安全的方式是:将它们的状态封装起来(即设为私有,使得外部无法直接访问,只能通过公有方法来访问),并对每个公有方法都进行同步,使得每次只有一个线程能访问容器的状态。同步容器类的问题:同步容器类都是线程

2017-03-02 17:10:07 471

原创 Java多线程核心技术(六):单例模式与多线程

1、使用DCL双检查锁机制实现多线程环境中的延迟加载单例设计模式class MyObject{ private volatile static MyObject myObject; private MyObject(){ } public static MyObject getInstance(){ try{ if(myObject == null){ //模拟

2017-02-28 16:46:36 304

原创 Java多线程核心技术(五):定时器Timer

Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务。1、schedule(TimerTask task,Date time)方法schedule(TimerTask task,Date time)的作用是在指定的日期执行一次某一任务。如下代码是执行时间晚于当前时间的示例:public class TestClass{ private static Timer

2017-02-28 15:54:21 302

原创 Java多线程核心技术(四):Lock的使用

一、使用ReentrantLock类1、ReentrantLock的简单使用代码示例:import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class MyService{ private Lock lock = new ReentrantLock(); p

2017-02-28 14:43:08 796

原创 Java多线程核心技术(三):线程间通信

一、等待/通知机制1、wait()/notify()方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码行处停止执行,直到接到通知或被中断为止。在调用wait()方法之前,线程必须获得该对象的对象级别锁,即只能在同步方法或者同步块中调用wait()方法。如果调用wait()时没有

2017-02-27 21:09:37 353

原创 Java多线程核心技术(二):对象及变量的并发访问访问

一、synchronized同步方法1、方法内的变量为线程安全的2、实例变量非线程安全:不同的线程访问同一个对象的同一个实例变量是非线程安全的,必须在访问此实例变量的方法上加synchronized关键字。3、多个对象多个锁:如果多个线程分别访问同一个类的多个不同实例的相同名称的同步方法,会分别对每个实例产生一把锁,效果是以异步的方式运行的。4、synchronized方法与锁对象

2017-02-25 11:56:47 565

原创 Java多线程核心技术(一):基础知识总结

概念进程:进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个程序集合上运行的过程,它是系统进行资源分配和调度的一个基本单位。线程:线程是进程中独立运行的子任务。使用多线程技术后,可以在同一时间运行更多不同种类的任务。使用多线程第一种方式:继承Thread类,并实现run方法第二种方式:实现Runnable接口注意:1

2017-02-22 21:02:55 1815

原创 深入理解JAVA虚拟机(四):虚拟机类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。1、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期如下图所示:                          加载

2017-02-18 16:33:09 336

原创 深入理解JAVA虚拟机(三):类文件的结构

Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包括了Java虚拟机指令集和符号表以及若干其他辅助信息。例如,使用Java编译器可以把JAva代码编译为存储字节码的Class文件,使用JRuby等其他语言的编译器一样也可以把程序代码编译成Class文件,虚拟机不关心Class来源于何种语言。注意:任何一个Class文件都

2017-02-18 11:08:45 500

原创 深入理解JAVA虚拟机(二):垃圾收集器与内存分配

一、垃圾收集1、垃圾收集器在哪里收集?     程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知,因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题。而Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多

2017-02-11 13:39:32 299

转载 Java安全通信:HTTPS与SSL

1. HTTPS概念        1)简介           HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。这个系统的最初研发由网景公司进行,提供了身份验证

2017-02-09 13:12:51 3117

转载 全面解读Java NIO工作原理

◆  输入/输出:概念性描述I/O 简介I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。在 Java 编程中,直到最近一直使用 流 的方式完成 I/O。所有 I/O 都被视为单个的字节的移动,通过

2017-01-19 13:22:42 340

原创 Servlet工作机制解析

一、Web容器在研究Servlet在tomcat中的工作机制前必须先看看Servlet规范的一些重要的相关规定,规范提供了一个Servlet接口,接口中包含的重要方法是init、service、destroy等方法,Servlet在初始化时要调用init方法,在销毁时要调用destroy方法,而对客户端请求处理时则调用service方法。对于这些机制的支持都必须由Tomcat内部去支持,具

2017-01-18 17:32:54 2130

原创 滴滴出行2017秋招笔试编程题(二)——地下迷宫、数字和为sum的方法数

这个题可以用dfs或bfs遍历迷宫,用dfs是递归地查看每一个位置,这里在每次走到一个前都要先查看青蛙的体力值够不够,不够的话,这条路就pass掉了,够的话继续往下遍历。递归结束的条件就是已经到达了出口,即[0][m-1]这个位置,当到达此位置时还要查看是否所消耗的体力是最少的。另一个问题是要记录最小路径,这里每到达一个位置就把它加入到一个数组中,位置不合适的话就把数组的下标-1,相当于把这个位置

2017-01-07 16:27:46 1878

原创 滴滴出行2017秋招笔试编程题(一)——连续最大和、末尾0的个数、进制转换

这题比较简单,算法过程就是遍历数组,记录到第i个数的连续最大和,在计算第i个数的连续最大和时,先判断到第i-1个数的连续最大和是正还是负,如果是负数,则到第i个数的连续最大和就是第i个数本身;如果是正数,则到第i个数的连续最大和就是到第(i-1)个数的连续最大和加上第i个数。代码如下:public class MaxSubArray { public static int FindGreat

2017-01-07 16:08:33 1491 4

原创 深入理解Session和 Cookie

首先,Session与Cookie的作用都是为了保持访问用户与后端服务器的交互状态,也就是跟踪用户的整个会话。不同的是,Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。一、理解Cookie1、Cookie为什么会出现?Web应用程序是使用HTTP协议传输数据的,HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,

2017-01-07 13:01:42 411

原创 JAVA 泛型总结(结合JAVA核心技术和Effective Java两书)

一、基础知识1、类型擦除类型擦除指的是通过类型参数合并, 将泛型类型实例关联到同一份字节码上。 编译器只为泛型类型生成一份字节码, 并将其实例关联到这份字节码上, 因此泛型类型中的静态变量是所有实例共享的。(1) 一个static 方法, 无法访问泛型类的类型参数, 因为类还没有实例化, 所以, 若 static方法需要使用泛型能力, 必须使其成为泛型方法,(泛型参数稍后会

2016-12-18 15:23:20 1564

原创 Effective Java笔记——第4章类和接口

第13条:使类和成员的可访问性最小化好处:降低系统模块之间(包之间、类之间)的耦合,使得模块可以独立测试开发,提高可重用性和易维护性终极目标:尽可能的使每个类或者类的成员不被外接访问。保护级别和公有的都是类导出的API的一部分,必须永远得到支持,应尽量少用。注意:1、包级私有——声明该成员的包内部的任何类都可以访问这个成员,同时,这也是缺省访问级别,如果没有为成

2016-12-14 11:15:56 319

原创 String、StringBuffer和StringBuilder的区别

1、StringString:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。String类的包含如下定义:/** The value is used for character storage. */ private final char value[]; /** The offset is the first index of

2016-12-13 15:58:43 256

转载 并发数据结构----ConcurrentHashMap原理分析

在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制

2016-11-22 20:28:36 498

原创 KMP算法

一、算法的功能:主字符串:ababcababababcab模式串:abababab判断在主串中是否存在模式串,如果存在,在哪个位置。二、算法的思想:        设模式串为“P0...Pm-1",KMP匹配算法的思想是:当模式串中的字符Pj与主串中相应的字符Si不相等时,因其前j个字符(“P0...Pj-1”)已经获得了匹配,所以若模式串中的“P0...Pk-

2016-10-29 11:19:17 393

原创 深入理解JAVA虚拟机(一):内存区域与内存溢出异常

1、内存区域Java虚拟机在执行JAva程序的过程中会把它所管理的内存划分为若干个不同的数据区域,称为运行时数据区域,如图所示。Java虚拟机内存结构中的程序计数器、虚拟机栈和本地方法栈这三个区域随线程创建而生,随线程销毁而灭,因此这三个区域的内存分配和回收是确定的,java垃圾收集器重点关注的是java虚拟机的堆内存和方法区内存。其中方法区和堆是由所有线程共享的数据区

2016-08-24 15:10:25 1115

转载 C#的BackgroundWorker--启动后台线程

1、主要的事件及参数:(1)DoWork——当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递DoWorkEventArgs参数;(2)RunWorkerCompleted——异步操作完成或中途终止会触发该事件。如果需要提前终止执行后台操作,可以调用BackgroundWorker.CancelAsync方法。在处理DoWork事件的函

2016-06-01 14:24:16 3492

原创 使用ViewPager实现图片自动切换

1、ViewPager讲解   ViewPager是中的控件,使用时直接在布局文件中引用,跟正常控件一样。但是,要给ViewPager设置适配器PagerAdapter,其中有四个方法是适配器PagerAdapter必须实现的,以下列出:(1)public int getCount() :返回要滑动的VIew的个数;(2)public void destroyItem(View

2016-04-13 19:33:57 3631

原创 用RadioButton实现页签效果

先上效果图页面很简单,下面是三个RadioButton,当点击他们的时候上方的页面改变,上方是一个容器,用来盛放不同的页面。接下来看看代码是如何实现这个功能的:主界面main.xml代码:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_w

2016-04-11 19:42:05 482

原创 Android项目初始化数据的loding操作

1、使用背景       一般我们安装App之后,第一次打开app都会有个初始化app数据的操作,这时候需要一个loding的动画增强用户与界面的交互。2、制作方法       首先制作loding转圈动画,代码如下package com.wlx.utils;import com.example.hangzhouapp.R;import android.content.Co

2016-04-10 17:04:16 3273 1

转载 Java关键字synchronized详解

转载自:http://kb.cnblogs.com/page/73756/           synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方

2016-04-06 14:48:05 355

原创 Java内存模型和多线程基础

在多线程环境中,我们需要考虑的主要问题是:线程之间如何进行通信,在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信

2016-04-06 14:18:01 1020

原创 《挑战程序设计竞赛》2.1最基础的“穷竭搜索”

深度优先搜索:第一题:POJ1979Red and Black    http://poj.org/problem?id=1979题意:在一个W*H的矩形中,每个单位的格子是红色或是黑色的,'@'是初始位置,'.'是黑色的格子',#'是红色的格子,给出地图,要求输出从初始位置通过黑色的格子可以到达的所有位置的总数。代码:#includeusing namespace std;

2013-09-11 11:44:08 1403

Java多线程编程核心技术_完整版 PDF电子书下载 带书签目录.pdf

资深Java专家10年经验总结,全程案例式讲解,首本全面介绍Java多线程编程技术的专著   结合大量实例,全面讲解Java多线程编程中的并发访问、线程间通信、锁等难突破的核心技术与应用实践   Java多线程无处不在,如服务器、数据库、应用。多线程可以有效提升计算和处理效率,大大提升吞吐量和可伸缩性,深得广大程序员和公司的青睐。很多人学习完JavaSE/JavaEE之后想往更深入的技术进行探索,比如对大数据、分布式、高并发类的专题进行攻克时,立即遇到针对java.lang包中线程类的学习,但线程类的学习并不像JDBC一样简单,学习曲线陡峭,多弯路与“坑”。要学习这些热点技术,Java多线程技术避无可避。而本书将引领读者拿下该“技术高地”。

2017-02-23

java并发编程的艺术高清pdf版

并发编程领域的扛鼎之作,作者是阿里和1号店的资深Java技术专家,对并发编程有非常深入的研究,《Java并发编程的艺术》是他们多年一线开发经验的结晶。本书的部分内容在出版早期发表在Java并发编程网和InfoQ等技术社区,得到了非常高的评价。它选取了Java并发编程中核心的技术进行讲解,从JDK源码、JVM、CPU等多角度全面剖析和讲解了Java并发编程的框架、工具、原理和方法,对Java并发编程进行了为深入和透彻的阐述。   《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时通过实例介绍了如何应用这些技术。

2017-02-23

疯狂android讲义第三版源代码Part2(15-18章)

疯狂android讲义第三版源代码Part2(15-18章)

2016-09-27

疯狂android讲义第三版源代码Part2(7-9章11-14章)

疯狂android讲义第三版源代码第7-9章和11-14章

2016-09-27

疯狂android讲义第三版源代码Part1(1-6章)

疯狂的Android讲义第三版,详细介绍了Android的基础知识,并包含了大量的实践案例,可以边学理论边实践。该资源包含了书中的所有代码,可以供你学习参考。

2016-09-27

ViewPager实现图片自动切换

代码包括了项目加载数据时loding效果的实现,用RadioButton实现页签效果,以及ViewPager实现图片自动切换的效果。

2016-04-13

jquery实现图片自动切换

这是用jquery实现的图片自动切换效果,包括用鼠标划过时图片切换,自动切换等效果的实现。

2012-11-12

ajax基础教程

具体干什么的我也不知道,反正是一个好使的。不要后悔奥->_->.

2012-11-12

RLE行程编码

实现图像压缩的关键步骤,RLE行程编码。这是一份实验报告,比较详细的介绍了RLE行程编码。

2012-10-21

空空如也

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

TA关注的人

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