自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

米勺-Michelle

lemon tea

  • 博客(40)
  • 资源 (7)
  • 问答 (1)
  • 收藏
  • 关注

原创 代理模式之jdk动态代理

之前我们分享了一篇静态代理,今天分享一下我对动态代理的理解=====相关链接====想了解静态代理的同学请点击幽暗城传送门静态代理有两种实现方式,同样动态代理也有两种,分别是通过jdk和cglib来实现,下面我们分别来说下两者的实现方式jdk代理:只能代理实现了接口的类,没有实现接口的类不能实现动态代理,看下面代码行驶时间代理类public class TimeHand

2017-07-29 23:01:58 177

原创 代理模式之静态代理

设计模式这种古老的问题现在好想没什么人问了,今天看曾经写的代码中,有一些关于代理模式的例子,不作为只是扩充,算是笔记吧,由于东西很简单并且只是用于当笔记所以开门见山代理模式分静态代理和动态代理,这篇博客主要说下静态代理。静态代理的实现很简单,可以通过继承或者聚合,接下来分别给出继承和聚合的demo原始接口public interface Moveable { void move

2017-07-29 01:27:36 185

原创 concurrent包之reentrantlock

接触过并发的同学对concurrent包肯定并不陌生,reentrantlock就是java.util.concurrent.locks包下面的东西,这里面还有我们熟悉的其他可提供线程安全的类,如读写锁,以及aqs这个最经典的类,今天我们主要简单分享下reentrantlock,其他的会在之后进行分享首先reentrantlock是什么,毫无疑问是一个锁,那他同我们曾经使用过的synchron

2017-07-29 00:54:15 299

原创 线程安全无处不在

这篇分享作为一个笔记,原因是今天有人问了我这么一个问题public class Test { private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) throws Interrup

2017-07-28 01:17:05 219

原创 线程同步之Semaphore

之前和大家分享过CountDownLatch和CyclicBarrier======相关链接=====想了解CountDownLatch的同学请点击埃索达传送门想了解CyclicBarrier的同学请点击铁炉堡传送门下面说个场景,例如我有一个资源,只想让2个线程访问,当一个线程释放了资源,其他线程才可以有机会访问这个资源,这样的场景用之前的线程同步工具好像都不太好使,所以这里给大家

2017-07-27 15:27:15 201

原创 线程同步之CyclicBarrier

我们之前分享了一个同步工具CountDonwLatch,它的作用是当一定线程执行完之后,才执行后面代码======相关链接====对CountDownLatch感兴趣的同学请点击达拉然传送门而CyclicBarrier的功能是当指定的所有线程处于同一个状态时,同时执行后序代码,我们看下面的例子public class CyclicBarrierDemo { public s

2017-07-27 14:54:01 249

原创 线程同步之CountDownLatch

如何保证线程安全我们都知道,像synchronized,lock等,线程同步使用什么方法呢,这里给大家介绍一个工具CountDownLatchCountDownLatch可以理解为一个线程同步门闩,它基于AbstractQueueSynchronizer包实现的,具体实现方式大家可以看下源码,这里只对其功能做一个分享我们看下面一个例子public class CountDownLatc

2017-07-27 14:35:13 294

原创 HashMap,TreeMap以及LinkedHashMap的区别

刚才看帖子发现有个人说了下他的面试,其中有一段是关于HashMap的问:HashMap是有序的么,回答无序,回答有序的同学请点下面=======相关链接======手写hashmap请点击雷霆崖传送门问:那有没有有序的map,回答treemap和linkedhashmap这里引出了这个问题,为什么这两个可以有序,我先给出一段网上随处可见的他们三者的区别1.HashMap里面

2017-07-26 17:57:35 508

原创 深度优先穷竭算法

今天和大家分享一篇深度优先穷竭算法,不废话直接进入正题有这么一个数组1,2,3,4,5,7,8,11,12,15,21,33,问有没有几个数组之和相加等于51的这种问题可以用穷竭算法来解决,大致思路是这样的从第一个数字开始,选择加不加第二个数字,分为加或者不加,然后下一步在加和不加中分别右选择加不加第三个数字,依次类推,这就是一个递归,下面给出一个图方便大家理解没有画完,一

2017-07-26 15:51:38 326

原创 排序算法之堆排序

之前分享过快速排序以及归并排序,现在和大家分享一篇堆排序=======相关链接=====想了解快速排序请点击雷霆崖传送门想了解归并排序请点击铁炉堡传送门堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[

2017-07-25 15:56:01 269

原创 排序算法之归并排序

今天分享的算法是归并排序,排序有很多种算法=====相关链接====有对快速排序感兴趣的同学请点击锦绣谷传送门进入我们今天的正题,首先引入概念归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。看

2017-07-25 10:36:06 292

原创 排序算法之快速排序

快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。可能光看字面有点难理解,下面我们按照他的定义写一个demo,大家就会掌握快排了首先给出一个无序数组int[] array = new int[]{3,2,5,4,3,

2017-07-24 13:37:21 481

原创 多线程(一)

多线程,互联网必备知识,这里分3次分享第一篇介绍多线程,如何实现多线程,以及多线程的几种状态第二篇通过代码实现多线程各种状态第三篇如何实现线程安全进入正题首先,弄清楚什么是线程,什么是进程进程:运行中的程序,系统分配资源的最小单位线程:可独立执行代码的子任务,系统执行代码的最小单位,进程中的代码总是由某个确定的线程执行弄清楚这些了我们来看下如何创建线程,方法有两种

2017-07-21 19:01:59 248

原创 手写HashMap,实现put,get以及扩容

很晚了不多说了,直接贴代码,看完就会了解HashMap是如何实现数组+链表存储的,希望能给大家带来帮助,如果有疑问和纠正,请留言,第一时间回复package coom.michelle.dream.myhashmap;import java.util.Objects;public class MyHashMap {public Node[

2017-07-20 23:38:03 1392

原创 生兔子问题-看这一篇就够了

生兔子是一个古老又经典的算法题,题目如下有1只兔子,第三个月开始每个月会生下1只兔子,生下来的兔子在它的第三个月又会生出一只兔子,以此类推第n个月有多少只 兔子我们可以简单列一下月份和兔子数月1234567兔子数11235813当然这种数据还可以继续往后写很多,我们主要找他们的规

2017-07-20 13:16:23 2805

原创 面向对象,多态

面向对象三个特性:封装,继承,多态封装是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。封装和继承可以说是为多态做准备,这里主要说下多态,下面是一个很古老的例子public class A

2017-07-20 11:08:18 143

原创 二叉树及其遍历

二叉树是一个很重要的存储结构,所以和大家分享一下我对二叉树的理解并结合代码,希望让大家都能对二叉树有一个最清晰的认识首先,二叉树是每个节点最多有两个子树的树结构,这是二叉树的定义,二叉树的结构如下图可以看到二叉树必要的是根节点,也就是A,每个节点都会有左子节点和右子节点,那么从B开始看,它又是一个二叉树,所以B也叫作A的左子树,同理C叫作A的右子树了解到这些以后,我们就可以实践写一

2017-07-19 14:18:02 284

原创 java注解(一)

所有开发应该都对注解不陌生,例如aop,就可以通过xml或者注解来实现,那么选择xml还是注解更好,首先要了解他们是什么,注解的东西很多,这篇分享主要让大家对注解有一个大概的认识,废话不多说了从网上我找到一个比较清晰的图,我们看下可以看到注解-Annotation左边有两个枚举,分别是一对一的RetentionPolicy和一对多的ElementType,我们看下这三个东西的源码

2017-07-18 10:53:48 188

原创 String,StringBuffer,StringBuilder的区别

String,StringBuffer,StringBuilder的区别,先简单说下StringBuffer和StringBuilder的区别就像HashTable和HashMap的区别一样,所以就不重点说了======相关链接======如果想了解更多HashMap和HashTable的区别请点击暴风城传送门那么很多面试都会问  String和StringBuffer的区别是什么?

2017-07-18 09:59:36 177

原创 数据库事务与其隔离级别

这个问题面试覆盖率估计超过50%,这里分两步分享我的理解一、数据库事务二、事务隔离级别这里用mysql的innodb数据库引擎======相关链接=====mysql相关分享请点击浅谈mysql进入正题,什么是数据库事务?数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处

2017-07-17 17:32:23 267

原创 静态锁和非静态锁

如何保证线程安全,这个问题并不陌生,通过使用synchronized和volatile关键字,又或者使用concurrent包里提供的Lock====相关链接======synchronized和volatile的区别请点击synchronized和volatile的区别Lock和synchronized的区别请点击Lock和synchronized的区别这里主要分享下sy

2017-07-17 17:20:54 2056

原创 HashMap详解,与HashTable区别

面试经常会有人问HashMap与HashTable区别,该怎样回答中心是HashMap线程不安全,HashTable线程安全,仅仅这样回答没问题,但是可能得不到加分再深一点的,会回答HashTable里面的方法都加了synchronized,所以HashTable是线程安全的,也因此HashTable的存储效率不如HashMap,由于加了锁,所以多线程的时候也可能造成线程阻塞那有没有更

2017-07-14 15:18:11 264

原创 Lock和synchronized的区别

synchronized并不陌生java关键字,锁,它可以用在方法锁,块锁,用它声明的变量也具有同样的性质,这里顺带提一下volatilevolatile和synchronized相似,它声明的对象具有可见性,单不具备原子性,因为volatile声明的变量只能获取到最后一次修改的记录,这是题外话,如果想了解synchronized和volatile的差异请点击synchronized和vola

2017-07-13 15:05:59 721

原创 synchronized和volatile的区别

这两个关键字都是java提供的为保证线程安全而存在的简单来说,他们的区别1.synchronized可以保证原子性,以及可见性,而volatile只能保证可见性,也因此性能上volatile更胜一筹2.volatile不会造成线程阻塞,因为他只是告诉jvm每次使用变量都要获取最新的值,而synchronized则是锁定该变量3.volatile只能用在变量,synchronized

2017-07-13 13:44:57 479

原创 hashset和treeset的比较

先说下hashset:由于hashset里面元素的位置是通过元素的哈希值来决定的,所以hashset不具备排序的功能且hashset可以放入null,但是只能放入一个nullhashset不是同步的hashset是不能重复放入元素的,它的比较标准是调用该对象的equals方法,然后在调用其hashcode方法,所以要比较对象,应该重写对象对应类的equals方法以及hashcode

2017-07-13 10:04:49 1447

原创 List以及arrayList,linkedlist,vector,以及stack的区别

List以及arrayList,linkedlist,vector,以及stack的区别首先List是接口,而后面四个是它的实现类1.arrayList是一个数组,查询效率快,但是插入删除效率低,这是由于数组的特性决定的2.linkedlist双链表,查询效率低,但是插入删除效率高,这是由于链表的特性决定的3.vector同arrayList相似,只不过vector是线程安全的

2017-07-13 09:46:44 1608

原创 interceptor和listener的比较

之前阐述过个人对servlet和filter的比较,这片文章简要说一下interceptor和listener的比较====相关链接====想了解servlet和filter的比较请点击servlet和filter的异同先简单介绍下interceptor和listener的概念interceptor,也叫作拦截器,一条请求每经过一个拦截器,就会触发一个相应的事件,如

2017-07-12 16:25:07 469

原创 filter和servlet的比较

经常会有人问filter和servlet的区别是什么,在这里简单阐述下个人对这两者的认知概念:servlet:Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。filter:过滤器,如果添加了过滤器,那么在访问servlet之前先进入过滤器,简单

2017-07-12 11:00:55 621

原创 经常被问的问题-jvm优化

中级或者高级开发面试或多或少都会被问到,你了解jvm内存结构吗,能说说jvm有哪些调优吗这里简单阐述下我个人对jvm优化的了解,欢迎大家帮忙补充虽然jvm内存模型分为5块,但是jvm优化主要在堆这里,堆是存放对象的内存空间,优化这个空间其实就是为了防止stop-the-world的发生,也就是full gc关于垃圾回收的请点击这个链接浅谈java垃圾回收回到正题,优化主要出现在以下

2017-07-11 17:27:13 575

原创 垃圾回收参数

jvm启动需要配置一些参数,例如堆内存大小等,以下为一些基本参数-Xms=n 初始堆大小。 -Xmx=n 最大堆大小。 -Xmn=n 新生代大小,该配置优先于-XX:NewRatio,即如果配置了-Xmn,-XX:NewRatio不会生效-XX:NewRatio=n 老生代和新生代的比值,例如该值为3,则表示新生代与老生代比值为1:3。 -XX:Survivor

2017-07-10 17:14:24 486

原创 写个单例模式吧@liuyanm

单例模式大家都知道,所以这片不算是分享,只是给我一个朋友写的单例懒汉式饿汉式就不做比较了,主要说下线程安全最简单的单例模式public class Singleton {    private static Singleton sin=new Singleton();        private Singleton(){       }    public stati

2017-07-10 11:32:31 304 1

原创 浅谈java垃圾回收

java垃圾回收,gc,全称gabage collection本文面对的都是开发者,所以多余的概念就不说了,直入主题我们知道所有创建的对象都在堆内存,jvm有五块,堆,虚拟机栈,本地方法栈,方法区和程序计数器,这里只讲堆我下面分享的垃圾回收机制都是按代分的,首先堆被分成了两块,新生代和老年代,如图可以看到新生代又有三个空间,伊甸园和两个幸存者我们先说下新生代的垃圾回收,

2017-07-10 10:52:03 271

原创 浅谈mysql

这片小文主要是阐述下个人对Mysql的了解,和大家分享一下,也希望大家可以提出宝贵意见,共同进步首先Mysql是一个关系型数据库,也是现在企业中使用比较多的一款数据库,使用Mysql的时候首先要选择引擎Mysql有以下几种引擎供选择1.ISAM,这个引擎读取数据非常快,但是不支持事务,并且如果硬盘坏掉的话是无法恢复数据,所以一般不作为重要数据的存储引擎2.MYISAM,ISAM的扩

2017-07-07 10:35:25 365

原创 java日志级别以及log4j简单配置

java日志级别大致分为5类,或者说是4类,因为fatal一般用的不多,真出现这个那系统就可以下线好好改改了由低到高级别依次为 debug,info,warn,error可以看到debug日志级别很低,正常来讲是在开发的时候调试所使用,所以一般不会开启debug打印,不然日志增长速度会过快,导致频繁清理日志info一般是打印一些与客户交互的信息,或是打印一些方便查询问题的信息,因此in

2017-07-06 16:02:04 891

原创 javadoc

作为一个开发,不光要多看文档,为了养成更好的变成习惯,我们也要多写文档,所以和大家分享一下javadoc,一个很简单但是又不一定都用的东西javadoc.exe在java的bin目录中如何使用javadoc,首先在编写注释代码上要养成良好的习惯,写完整注释,如图之后执行project生成javadoc的操作在选定目录中,可以查看到生成的javadoc的文档,内容如下

2017-07-05 18:23:46 210

原创 redis那点事儿(三)

最后一篇,给大家分享下redis在java开发中的使用想要在java中使用redis,首先需要下载 jedis.jar以下给出maven的配置,版本不是最新的redis.clientsjedis2.7.0下面可以看到测试内容以上是redis的存储,可以结合前两篇文章的例子,在java中编写一下看下效果,并且redis提供持久化,除了系统配置文件中设置的持久化

2017-07-05 17:14:19 314

转载 史上最全最强SpringMVC详细示例实战教程

一、SpringMVC基础入门,创建一个HelloWorld程序  1.首先,导入SpringMVC需要的jar包。  2.添加Web.xml配置文件中关于SpringMVC的配置123456789101112131415

2017-07-05 14:22:45 159

原创 redis那点事儿(二)

上一章,介绍了redis的基本配置,以及基本操作,本章分为三块,首先介绍一下redis的基本操作,这个在帮助手册里的可以找到,所以不过多解释1 DEL key该命令用于在 key 存在时删除 key。2 DUMP key 序列化给定 key ,并返回被序列化的值。3 EXISTS key 检查给定 key 是否存在。4 EXPIRE key seconds为给定 k

2017-07-05 09:48:23 257

原创 redis那点事儿(一)

redis,大家或多或少都会用到或接触过,再或者听说过,那么redis是什么?redis全成 remote dictionary server,通俗翻译是远程字典服务,专业些说就是一个kv数据库以上说明了redis是什么,那么提到redis不得不说的就是memcache,memcache也是缓存,那么redis和memcache有什么区别,以下简单总结一下(面试经常会问两者的区别):首

2017-07-04 11:00:05 321

原创 关于秒杀

这个问题总是被人问到,但是至今也没有什么毫无纰漏的答案,所以写下个人见解,请大神帮忙指正,以求进步秒杀个人认为需要注意的点有以下这么几块一,秒杀访问量巨大,不要和正式售卖用同一个服务器,以防崩溃二,秒杀高并发量巨大三,控制秒杀数量第一点,防止系统宕机,所以启用单独服务器给秒杀用,并且在秒杀开始之前,抢购者会频繁不断的刷新秒杀页面,所以该页面不应该是真正的购买页,最好使用

2017-07-03 15:22:47 255

beautifulsoup

pathon爬虫,beautiful,pathon爬虫,beautiful,pathon爬虫,beautiful

2018-08-09

pygame python

python游戏开发工具,需要配合32位python使用,64位的不要下载

2018-04-12

golang安装包

golang安装包

2018-04-12

distribute python

pygame必备包pygame必备包pygame必备包pygame必备包pygame必备包pygame必备包pygame必备包pygame必备包pygame必备包pygame必备包

2018-04-12

php教程(初级)

php初级教程

2014-10-16

ntko4.0.3.2

ntko4.0.3.2含完整程序,非演示版

2014-07-02

resin-3.0.22

resin3.0.22版本,完全好用的版本

2014-07-02

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

TA关注的人

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