自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 前端开发之日期控件、HTML5日期输入类型(date)

在很多页面和web应用中都有输入日期和时间的地方,最典型的是订飞机票,火车票,酒店,批萨等网站。在HTML5之前,对于这样的页面需求,最常见的方案是用Javascript日期选择组件。这几乎是无可争议、别无选择的做法。你可以在搜寻一下“javascript 日期选择框”,会发现有无数的可选择的JavaScript组件。大部分这些日期选择组件都提供将日期填充到指定的输入框里的功能。日

2016-06-26 21:20:40 86487 5

原创 【每天一道leetcode】1:N-Queens

The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle.

2016-06-25 16:20:42 824

原创 前端控件之树型结构dTree.js使用

dTree.js和dTree.css下载地址:http://www.destroydrop.com/javascripts/tree/对于小型的树型应用来说,dtree是一个不错的选择。先看一眼dtree给的例子构造静态树首先引入css文件和js文件12<link

2016-06-25 14:59:34 10603 2

原创 J2EE开发:struts2 文件下载

Struts2文件上传:http://blog.csdn.net/chenchaofuck1/article/details/51758192文件下载是一个很常见的功能,用struts2实现文件下载的步骤:一)定义一个Action类,FileDownload.java[java] view plain copy

2016-06-25 13:49:10 658

原创 J2EE开发:struts2 文件上传(单个文件与多个文件)

简述:Struts2的文件上传其实也是通过拦截器来实现的,只是该拦截器定义为默认拦截器了,所以不用自己去手工配置,指定用户上传文件的大小,有两种方式:1)默认是在default.properties 文件的 struts.multipart.maxSize=2097152  键值指定为2097152 也就是2M,通过计算 2097152/(1024*1024)

2016-06-25 13:44:50 1931

原创 【每天一道剑指offer】2:矩阵中的路径

题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字符串的第一个字符b占据了矩

2016-06-21 20:20:59 540

原创 【每天一道剑指offer】1:机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题思路 像这种在矩阵之中找路径,一般都是用回溯

2016-06-21 14:47:51 849 1

原创 Java并发编程-如何终止线程

我们知道使用stop()、suspend()等方法在终止与恢复线程有弊端,会造成线程不安全,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法:1.使用interrupt()中断方法。2.使用volatile boolean变量进行控制。在使用interrupt方法之前,有必要介绍一下中断以及与interrupt相关的方法。中断可以理解为线程的一个标志位属性,

2016-06-20 16:47:07 2978

原创 Java并发编程-非阻塞同步方式原子类(Atomic)的使用

非阻塞同步在大多数情况下,我们为了实现线程安全都会使用Synchronized或lock来加锁进行线程的互斥同步,但互斥同步的最主要的问题就是进行线程的阻塞和唤醒所带来的性能问题,因此这种阻塞也称作阻塞同步。从处理问题的方式上说,互斥同步属于一种悲观的并发策略,总是认为只要不去做正确的同步措施,那就肯定会出现问题,无论共享数据是否真的会出现竞争,它都会进行加锁、用户态核心态转换、维护锁的计数器和检查

2016-06-20 15:12:03 5101 1

转载 字符串匹配KMP算法的理解(详细)

1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修改本文。 然近期因开了个算法班,班上专门讲解数据结构、面试、算法,才再次仔细回顾了这个KMP,在综合了一些网友的理解、以及算法班的两位讲师朋友曹博、邹博的理解之后,写了9张PPT,发在微博...

2016-06-20 13:09:33 3426 3

转载 动态规划算法解最长公共子序列LCS问题

第一部分、什么是动态规划算法     ok,咱们先来了解下什么是动态规划算法。    动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。动态规划算法分以下4个步骤:描述最优解的结构递归定义最优解的值按自底向上的方式计算最优解的值

2016-06-20 12:05:43 4344

原创 腾讯2017暑期实习生编程题

上次做了乐视的暑期实习生编程题:http://blog.csdn.net/chenchaofuck1/article/details/51700143 今天也做了腾讯的的实习生编程题,整体感觉要比乐视的题难一些,但也没有涉及非常难的算法,题如下:1.构造回文 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 代

2016-06-19 16:55:32 3870

原创 求最长公共子串的Needleman/Wunsch算法

文本比较算法Needleman/Wunsch算法  在“文本比较算法Ⅰ——LD算法”中介绍了基于编辑距离的文本比较算法——LD算法。  本文介绍基于最长公共子串的文本比较算法——Needleman/Wunsch算法。  还是以实例说明:字符串A=kitten,字符串B=sitting  那他们的最长公共子串为ittn(注:最长公共子串不需要连续出现,

2016-06-18 21:36:41 1625

原创 Java并发编程-正确理解volatile关键字的两层语义

关于关键字volatile可以说是Java虚拟机提供的轻量级的同步机制,但是它并不容易完全被正常、完整地理解,以至于许多程序员都不习惯去使用它,遇到需要处理多线程数据竞争问题的时候一律使用Synchronized来进行同步。了解volatile变量的语义对了解多线程操作的其他特性很有意义。本篇文章将结束volatile关键字的两类语义:可见性和禁止指令重拍序。1.volatil

2016-06-17 20:16:32 3573 1

原创 Java单例模式中双重检查锁的问题

单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java 程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的 Java 内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含 Java 内存模型的一些隐秘细节。这些事实将导致代

2016-06-17 19:16:58 88743 44

原创 乐视2017暑期实习生笔试编程题

前几天做了在乐视的笔试题,整体的来说的题目还是比较简单。前面的选择题都是比较普遍的一些关于操作系统、网络、linux等的题。后面有三道编程题得吐槽一下,虽然题不是很难,不涉及什么复杂的算法,但是题目介绍弄了一大堆的故事,看来几遍才弄懂了,特别是第一个题,少点套路就好了。1.兵临城下卢卡斯的驱逐者大军已经来到了赫柏的卡诺萨城,赫柏终于下定决心,集结了大军,与驱逐者全面开战。 卢卡斯的手下有6名天之

2016-06-17 15:17:01 3428 2

转载 从各大软件公司笔试压轴题学习SQL语句

从博客园中看到一篇文章,介绍大软件公司面试时常常会出的两道SQL题(见附录)。我觉得受益很多,在此之前,我一直觉得,SQL2008似乎提供了这方面的支持,但更低的版本,包括2005,非游标做不出来(水平够菜)。总结心得如下:1、    强大的group by 1 select stdname,2 isnull(sum(case stdsubject wh

2016-06-16 13:44:49 1994

转载 Java 自动装箱和自动拆箱注意的问题

自动装箱和自动拆箱不是什么复杂的技术,自动装箱就是基本类型(int,long)数据可以先自动转换为对应的封装类(Integer,Long)对象,而自动拆箱相反。在本文中,笔者向大家介绍下Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,并从源码中解读自动装箱与拆箱的原理,同时这种特性也留有一个陷阱。开发者如果不注意,就会很容易跌入这个陷阱。自动装箱(Autobox

2016-06-15 17:00:48 3938

原创 Java并发编程-并发队列(ConcurrentLinkedQueue)的原理分析

在上一篇文章中我们学习了阻塞队列(BlockingQueue)的实现原理。我们知道要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。阻塞队列就是通过使用加锁的阻塞算法实现的,而非阻塞的实现方式则可以使用循环CAS(如原子类Atomic)的方式来实现,本文我们一起如何使用非阻塞的方式来实现线程安全队列ConcurrentLinkedQueue的。下面文章转

2016-06-13 20:58:54 10763

原创 Java并发编程-阻塞队列(BlockingQueue)的实现原理

阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。BlockingQueue 的操作方法

2016-06-13 19:37:30 71320 6

转载 Java并发编程-并发编程知识点总结

1) 什么是线程?  线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。J2) 线程和进程有什么区别?  线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程

2016-06-11 17:39:53 6576 5

原创 Java并发编程-Fork/Join框架同步与异常

前面学习了Executor框架,它将任务的创建和执行进行了分离,通过这个框架,只需要创建Runnable对象,把Runnable对象交给Executor执行器,Executor执行器在负者执行这些任务的线程创建,管理以及线程的结果。JDK1.7 Concurrent包提供了一个新的Fork/join框架。是ExecutorService接口的另一种实现。Fork/Join框架介绍Fork/join

2016-06-11 17:19:54 2561

原创 海量数据处理面试题方法总结

第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。      首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率

2016-06-09 18:45:52 2214

转载 阿里面试题总结

在阿里面试之前总结了一下内推同学的面经,把面试题总结到一块,并进行了分类。有些题目我也总结了一下答案,大家可以参考一下,仅仅参考就行了,因为可能自己知识储备不够,答案整理不够完整(也可能会有错误的地方,希望大家指出。嘿~嘿~嘿~嘿~)我面试的时候,自己总结的题竟然一个题都没问,并且问的题太深了,让自己想法实现Java虚拟机里的东西或者源码的底层。自己以前也看过部分源码,但不是太深入,一面直

2016-06-09 13:50:58 2103

原创 Java并发编程-Executor框架之CompletionService

在前面我们已经学习过Executor框架之Callable和Future接口,我们知道利用list保存submit的callable任务所返回的Future对象。再在主线程中遍历这个list并调用Future的get()方法取到任务的返回值进行处理。Java通过另一个类CompletionService进行改进。两者最主要的区别在于submit的任务不一定是按照加入自己维护的list顺序完成的。从l

2016-06-08 21:02:48 4394

原创 Java并发编程-Executor框架之ScheduledThreadPoolExecutor

ScheduledThreadPoolExecutor是线程池执行器的一种,继承ThreadPoolExecutor,在ThreadPoolExecutor的基础上添加了按计划执行线程的功能,如延迟执行、定时执行、周期性执行。还不了解Exector可以先查看Java并发编程-Executor框架: http://blog.csdn.net/chenchaofuck1/article/detail

2016-06-08 16:21:13 3887

转载 Java并发编程-一个线程的内心独白

最近正在学习Java并发编程实践,无意中发现了这边文章,特别的有意思,而且知识点也很多,忍不住分享给大家!我是一个线程, 我一出生就被编了个号: 0x3704, 然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900 待的时间比较长, 他带着沧桑的口气对我说: 我们线程的宿命就是处理包裹。 把包裹处理完以后还得马上回到这里,否则可能

2016-06-08 13:49:43 3011 4

原创 Java并发编程-Executor框架之Callable和Future接口

在上一篇文章中我们已经了解了Executor框架进行线程管理,这篇文章将学习Executor框架的另一个特性,我们知道执行Runnable任务是没有返回值得,但Executor可以运行并发任务并获得返回值,Concurrent包提供下面两个接口实现这个功能:Callable接口:这个接口声明call(),类似于Runnable的run(),可以在这个方法里实现任务的具体逻辑操作。Callable是

2016-06-07 20:58:57 6425

原创 Java并发编程-Executor框架

我们在并发编程创建线程时,常常是创建一些Runnable对象,然后创建对应的Thread对象执行它们,但是如果程序需要并发执行大量的任务时,需要为每个任务都创建一个Thread,进行管理,这将会影响程序的执行效率,并且创建线程过多将会使系统负载过重。Java 5之后通过了一套Executor框架能够解决这些问题,能够分解任务的创建和执行过程。该框架包括Executor,ExecutorService

2016-06-07 19:56:50 5645

转载 Java并发编程-同步辅助类之Exchanger

Exchanger是自jdk1.5起开始提供的工具套件,一般用于两个工作线程之间交换数据。在本文中我将采取由浅入深的方式来介绍分析这个工具类。首先我们来看看官方的api文档中的叙述: A synchronization point at which threads can pair and swap elements within pairs. Each thread presents some

2016-06-07 15:29:30 1721

原创 Java并发编程-同步辅助类之Phaser

在前面已经学习过 Java并发编程-同步辅助类之CountDownLatch Java并发编程-同步辅助类之CyclicBarrier 这篇文章介绍另一个辅助类Phaser,它是J在Dk 1.7才添加的新的功能,它可以实现和CountDownLatch/CyclicBarrier类似的功能,但Phaser的功能更多,更加的灵活,它支持任务在多个点都进行同步,支持动态调整注册任务的数量。当然你也

2016-06-07 14:37:36 2865 1

原创 Java并发编程-同步辅助类之CyclicBarrier

在上一篇文章中我们介绍了同步辅助类CountDownLatch,在Java Concurrent包下还有另一个同步辅助类CyclicBarrier与CountDownLatch非常类似,它也允许多个线程在莫个点进行同步,但CyclicBarrier类更加强大。 操作方法提供两种构造函数带Runnable的 CyclicBarrier(int parties, Runnable barrierAc

2016-06-06 21:48:12 2120

转载 Java并发编程-同步辅助类之CountDownLatch

CountDownLatch是Java Concurrent包下提供的同步辅助类。在完成一组正在其他线程中执行的操作之前,它允许线程一直等待。和Semaphore类似,它使用一个整数进行初始化,Semaphore中的计算表示可以同步访问共享数据的线程数,CountDownLatch中的计算表示线程要等待的操作数数目。操作方法 - 构造函数CountDownLatch(int count),co

2016-06-06 17:03:35 2442

原创 Java并发编程-同步辅助类之Semaphore

信号量Semaphore是一个计数信号量,用来保护一个或多个共享资源的访问,是Java Concurrent包下提供的另一种同步方式。Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。 Semaphore实现的功能就类似厕所有5个坑,假如有10

2016-06-06 15:58:47 1674

原创 Java并行编程-lock中使用多条件condition(生产者消费者模式实例)

Java 并发包下的提供Lock,Lock相对于Synchronized可以更好的解决线程同步问题,更加的灵活和高效,并且ReadWriteLock锁还能实现读、写的分离。但线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。阻塞队列(BlockingQueue)就是使用condition的和lock实现的。可以查看:Java并发编程-阻塞队列(Blockin

2016-06-05 23:37:27 25838 7

原创 Java并发编程-ThreadFactory接口

ThreadFactory是用来实现创建线程的工厂模式接口,其实它只有一个方法Thread newThread(Runnable r),所以这个接口没多大用,可以自己编写新接口。工厂模式是最常用的模式之一,在创建线程的时候,我们当然也能使用工厂模式来生产Thread,这样就能替代默认的new THread,而且在自定义工厂里面,我们能创建自定义化的Thread,并且计数,或则限制创建Thread的数

2016-06-05 15:44:26 18356

转载 Java并发编程-线程局部变量(ThreadLocal)

ThreadLocal与线程成员变量还有区别,ThreadLocal该类提供了线程局部变量。这个局部变量与一般的成员变量不一样,ThreadLocal的变量在被多个线程使用时候,每个线程只能拿到该变量的一个副本,这是Java API中的描述,通过阅读API源码,发现并非副本,副本什么概念?克隆品? 或者是别的样子,太模糊。 准确的说,应该是ThreadLocal类型的变量内部的注册

2016-06-05 14:45:24 2466

转载 Java并发编程-interrupt()方法

在java中,开启一个多线程是很简单的,只需要new一个runnable就可以了,但是要停止一个线程,却不能简单的使用Thread.stop()方法。首先来说说java中的中断机制,Java中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,而需要被中断的线程自己处理中断。当调用interrupt()方法的时候,只是设置了要中断线程的中断状态,而此时被中断的线程的可以通过isInter

2016-06-02 22:29:11 1103

转载 Java 的回调机制(同步与异步)

对回调很简单的理解就是a对象调用b对象方法,b对象开始执行,执行完以后,b对象又调用a对象方法,这就是回调。本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273)以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找

2016-06-02 20:26:07 1462 2

转载 Java 动态代理详解(JDK 和CGLIB,Javassist,ASM)

class文件简介及加载     Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象:      class字节码文件是根据JVM虚拟机规范中规定的

2016-06-02 16:18:31 1030

空空如也

空空如也

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

TA关注的人

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