- 博客(8)
- 收藏
- 关注
原创 java并发内存模型
java并发编程: 一些事先需要知道的基本概念 并发编程要解决的问题就是线程之间的通信和线程之间的同步问题。 通信:交换信息。 线程之间的两种通信方式:共享内存和消息传递。 共享内存方式中的是对程序的公共状态进行读写的操作---显式的通信。 消息传递的方式是对线程之间发送明确的消息进行通信---隐式的通信。 为什么共享内存是显示的? 答:因为程序员需要显示的指明某个方法和某段代
2017-05-15 23:39:59
421
原创 Spring相关
一. spring的关键在于它的AOP和IOC,所以首先要弄懂AOP和IOC的原理,深入理解了这两方面才算是入门了。 1.IoC(Inversion of control): 控制反转 (将以前我们在代码中new的工作交给了spring容器) 概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系 核心:bean工厂;在Spring中,bean工厂创
2017-05-15 12:27:54
253
原创 Leetcode 494. Target Sum
题目描述: You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symbols + and -. For each integer, you should choose one from + and - as its new symbol.
2017-04-17 21:11:45
253
转载 HashMap源码分析1.8
摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。 简介 Java为数据结构中的映射定义了一个接口j
2017-04-01 15:54:10
433
原创 常见的排序算法以及实现
1.冒泡排序算法:冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名; 具体代码实现如下:package sort; import static java.util.Arrays.swap; /** * Created by hzdmm on 2017/2/24. */ public class Bubb
2017-02-24 19:33:33
267
原创 两个栈实现一个队列
两个栈实现一个队列。 要求:支持队列的基本操作(add,poll,peek) 分析:一个栈作为压入栈(stackPush),一个作为弹出栈(stackPop)。 两个注意点:如果stackPush 要往stackPop压入数据,要把一次性数据全部压入 如果stackPop不为空,stackPush绝对不能向stackPop中压入数据。 package alg;
2016-09-26 23:41:49
181
原创 java设计模式之命令模式
定义 -把方法调用封装起来,命令模式请求或者操作封装到一个对象之中,调用的对象需要知道是如何实现的,只要明白如何使用就好。 应用场景 -记录日志,是用这些命令实现撤销或者恢复的 命令模式对命令进行封装,发出和执行分派给两个不同的对象(把请求命令和执行命令分开了)这样做的好处是(a)便于新的命令加入(b)命令队列(c)实现撤销和恢复(d)可以将命令加入日志角色 1.客户端角色:创建命令并确定
2016-08-02 19:24:21
181
原创 java设计模式之单例模式
定义-单例模式是用来创建独一无二,只能有一个实例的对象的模式(确保一个类只有一个实例,并提供一个全局访问点) -先说应用的场景吧:主要应用于只需要一个对象的地方,eg:线程池(threadpool),缓存(cache),日志对象等。 -在学习单例模式之前的可能想法,通过开发者之间的约定或者通过java的静态变量就可能能做到 -这种方法可能产生的问题是:如果把对象赋值给一个全局变量,那么全局对象
2016-07-30 00:52:32
195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人