自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT小小鸟~~

我以为我在搬砖,其实是在建造天堂...

转载 四种常见的 POST 提交数据方式

原文链接https://imququ.com/post/four-ways-to-post-data-in-http.html 感谢作者分享^_^四种常见的 POST 提交数据方式HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE...

2017-03-20 00:24:54 914 0

转载 非 root 下安装 MySQL 5.6

假设你的home目录为/home/workmysql-server 安装 下载mysql.tar.gz wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz 下载cmake [5.5及以上的版本需要用cmake...

2017-02-25 12:46:49 1426 0

转载 Python 虚拟环境:Virtualenv

原文virtualenvvirtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够: 1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用安装sudo apt-get install python-virt...

2016-10-21 10:56:36 591 0

转载 使用 Docker 一步搞定 ZooKeeper 集群的搭建

原文链接背景原来学习 ZK 时, 我是在本地搭建的伪集群, 虽然说使用起来没有什么问题, 但是总感觉部署起来有点麻烦. 刚好我发现了 ZK 已经有了 Docker 的镜像了, 于是就尝试了一下, 发现真是爽爆了, 几个命令就可以搭建一个完整的 ZK 集群. 下面我简单记录一下使用 Docker 搭...

2016-09-16 08:35:01 11906 4

原创 MySQL 复杂查询

记录一些自己不常用的 SQL 查询语句。 例子:现有一张老员工表 staff,员工信息包括姓名,部门,薪水以及等级,公司将新员工放入数据库中的另一张表 newStaff。现在我需要我们查询哪一个部门的哪位员工薪水最高。 join 查询简单分析一下,两张表,我们要一起查询获得结果首先会用到连接查...

2016-09-02 02:01:30 1480 0

原创 实现一个 O(1) 查找的 LRU Cache

前几天百度面试,当时让实现一个 LRU Cache,要求 O(1) 完成查找。后来发现这个也可以用在自己简易的 key-value 数据库项目中。简单来说 LRU 是内存管理的一种算法,淘汰最近不用的页。O(1) 时间完成查找,那除了 hash 别无选择。LRU 用双向链表实现即可。数据结构选择好...

2016-09-01 19:13:19 2416 1

转载 分布式锁的三种实现方式

写在前面在进行大型网站技术架构设计以及业务实现的过程中,多少都会遇到需要使用分布式锁的情况。那么问题也就接踵而至。分布式锁zk和memcached以及redis三者都能实现,同样是分布式锁,三者的区别何在?各自适用什么场景?Zookeeper1、实现原理: 基于zookeeper瞬时有序节点实现的...

2016-08-17 21:05:34 5754 0

转载 高并发的核心技术-幂等的实现方案

一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱; 发送消息,也应该只...

2016-08-17 20:27:41 1165 0

转载 如何在数据库事务提交成功后进行异步操作

问题业务场景业务需求上经常会有一些边缘操作,比如主流程操作A:用户报名课程操作入库,边缘操作B:发送邮件或短信通知。业务要求 操作A操作数据库失败后,事务回滚,那么操作B不能执行。(失败后也可以重新进行自调度) 操作A执行成功后,操作B也必须执行成功 如何实现 普通的执行A,之后执行B,是可以满足...

2016-08-05 10:10:29 2435 0

原创 PHP 入门学习笔记(一)

PHP 变量变量以 $ 符号开始,后面跟着变量的名称。变量名是区分大小写的($y 和 $Y 是两个不同的变量)。PHP 和 python 一样是一门弱类型语言,不用声明类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。 local:局部作用域,一般在函数内部定义。 global:全局作...

2016-07-28 11:41:27 598 0

原创 ibatis 使用入门

简介 iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的 iBatis 已经改名为 Mybatis 与 Hibernat...

2016-07-27 14:56:55 2116 0

转载 【Java并发编程】之二十:并发新特性—Lock锁和条件变量(含代码)

原文链接 简单使用Lock锁     Java 5中引入了新的锁机制——java.util.concurrent.locks中的显式的互斥锁:Lock接口,它提供了比synchronized更加广泛的锁定操作。Lock接口有3个实现它的类:ReentrantLock、Reetran...

2016-07-25 15:10:43 480 0

原创 Java CountDownLatch 和 CyclicBarrier 使用

CountDownLatch 和 CyclicBarrierCountDownLatch 和 CyclicBarrier 适用场景都是某一个任务想要往下执行必须依靠其他任务的执行完毕才可以。 举个例子:工人干活,工人完工之后,老板才能检查。 CountDownLatchCountDownLat...

2016-07-24 16:51:50 415 0

原创 Java 锁机机制——浅析 Synchronized

剖析 SynchronizedSynchronized 介绍Synchronized 方面的文章网上有很多了。它主要是用来进行同步操作。也被称为重量级的锁,它的同步包括: 对于普通方法同步,锁是当前实例对象 对于静态方法同步,锁是当前类的 Class 对象 对于方法块同步,锁是 Synchroni...

2016-07-23 17:54:31 8370 1

转载 MySQL 乐观锁和悲观锁

原文出处 mysql悲观锁总结和实践 mysql乐观锁总结和实践感谢作者分享悲观锁最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下:悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因...

2016-07-22 11:22:31 844 0

转载 Java开发必须掌握的线上问题排查命令

转自 Java开发必须掌握的线上问题排查命令作为一个合格的开发人员,不仅要能写得一手还代码,还有一项很重要的技能就是排查问题。这里提到的排查问题不仅仅是在coding的过程中debug等,还包括的就是线上问题的排查。由于在生产环境中,一般没办法debug(其实有些问题,debug也白扯。。。),所...

2016-07-19 16:51:41 1412 0

转载 深入浅出CGlib——打造无入侵的类代理

原文链接CGlib是什么? CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 当然这些实际的功能是asm所提供的,asm又是什么?Java字节码操控框架,具体是什么大家可以上网查一查,毕竟我们这里所要讨论的是cglib, cgl...

2016-07-18 16:05:30 1184 0

原创 Mock 模拟测试简介及 Mockito 使用入门

Mock 是什么 mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。 简单的看一张图我们在测试类 A 时,类 A 需要调用类 B 和类 C,而类 B 和类...

2016-07-18 11:19:58 21345 1

原创 JVM 常见参数设置和分析

打印 GC 日志这里以 IDEA 为例:菜单栏: Run -> Edit Configurations -> VM options 添加 -XX:+PrintGCDetail 写个简单的测试程序package VM;/** * Created by andy.wwh on 2...

2016-07-16 16:20:15 4229 1

转载 Java深度历险(一)——Java字节代码的操纵

原文链接  在一般的Java应用开发过程中,开发人员使用Java的方式比较简单。打开惯用的IDE,编写Javaz代码,再利用IDE提供的功能直接运行Java 程序就可以了。这种开发模式背后的过程是:开发人员编写的是Java源代码文件(.java),IDE会负责调用Java的编译器...

2016-06-27 16:15:13 640 0

转载 事务的传播行为(讲得比较好)

文章一: 我们都知道事务的概念,那么事务的传播特性是什么呢?(此处着重介绍传播特性的概念,关于传播特性的相关配置就不介绍了,可以查看spring的官方文档)  在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层 那么当我们调用Service层的一个方法的时候它能够保证我们的...

2016-06-22 20:15:06 18614 3

原创 设计模式 —— 动态代理(Dynamic Proxy)

动态代理(Dynamic Proxy)静态代理的缺点: 静态代理是有缺点的,看下图。 我们为每个类实现代理,但代理的内容却可能是相同的,比如一个项目中的日志代理,对象缓存代理等等。为每个类实现代理大大提高了代码量,可能会变得难以控制。动态代理: 用一句话来简单概述:动态代理按功能固定代理类...

2016-06-21 10:30:22 776 0

转载 理解Java对象序列化

原文地址 理解Java对象序列化感谢作者分享:)理解Java对象序列化关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thinking in Java...

2016-06-19 16:55:00 494 2

原创 设计模式 —— 代理模式(Proxy Pattern)

代理模式(Proxy Pattern)概念: 定义:代理模式 为另一个对象提供一个替身或占位符以控制这个对象的访问。 代理模式很好理解,在生活中也很常见。举个简单的例子,我们自己能做很多事情(动作),比如写作业,出去玩等。当我们和父母在家的时候,同学叫我们出去玩,父母先收到消息,然后忽略掉出去...

2016-06-02 10:11:26 706 0

原创 设计模式 —— 状态模式(State Pattern)

状态模式(State Pattern) 概念:状态模式 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 在软件设计中,我们经常会遇需要编写有很多状态的程序。最简单的如乘坐电梯程序,当我们要坐电梯时需要判断电梯的状态,只有当电梯处于当前楼时我们才能乘坐,当电梯不在当前楼层时我...

2016-06-01 01:08:42 3902 0

原创 设计模式 —— 组合模式(Composite Pattern)

组合模式(Composite Pattern)概念: 定义:组合模式 允许你将对象组合成树型结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。在大多数情况下,我们可以忽略对象组合和个别对象之间的差别。 在日常生活中我们经常会遇到树型结构的问题,比如典型的公司...

2016-05-31 15:33:20 629 0

原创 设计模式 —— 迭代器模式(Iterator Pattern)

迭代器模式(Iterator Pattern)概念: 定义:迭代器模式 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 迭代器模式是一种简单常见的设计模式,在我们使用编程语言中的集合容器都会有迭代器。 组成:Aggregate(抽象聚合):共同的接口供所有的聚合使用。...

2016-05-30 23:06:06 597 0

原创 设计模式 —— 模板方法模式(Template method Pattern)

模板方法模式(Template method Pattern)概念: 模板方法模式 在一个方法中定义一个算法的 骨架,而将一些步骤延迟到子类。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 组成:templateMethod(模板方法):定义了某个算法的模板顺序或一组...

2016-05-30 11:20:15 514 0

转载 设计模式(九)外观模式Facade(结构型)

原文:设计模式(九)外观模式Facade(结构型) 感谢作者博文^_^ 设计模式--外观模式Facade(结构型): 1. 概述      外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用...

2016-05-30 01:52:44 470 0

原创 设计模式 —— 适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern)概念: 定义:适配器模式 将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 组成:Client:客户端,直接操控适配器。 Target(目标接口):适配器实现的目标接口。 Adapter:适配器,当被调用时委托...

2016-05-30 01:13:15 499 0

原创 设计模式 —— 命令模式(Command Pattern)

命令模式(Command Pattern)概念: 概述:在软件设计中,我们经常会遇到某些对象发送请求,然后某些对象接受请求后执行,但发送请求的对象可能并不知道接受请求的对象是谁,执行的是什么动作。此时可通过 命令模式 来实现,让发送者和接受者完全的松耦合,这样可大大增强程序的灵活性。 定义:...

2016-05-29 18:34:53 8292 1

转载 使用 hsdis 查看 JIT 生成的汇编代码

原文:使用hsdis查看jit生成的汇编代码 感谢博主分享背景 JVM 有 HotSpot引擎可以对热代码路径进行有效的 JIT优化,大幅度提升计算密集代码的性能。默认一个方法至少被调用10k次以上才可能被JIT优化。查看JIT工作情况 Java代码public class Volatile...

2016-05-26 16:02:10 1974 0

原创 设计模式 —— 单例模式(Singleton)

单例模式(Singleton)概念: 单例模式 确保一个类只有一个实例,并提供一个全局访问点。 经典单例:public class Singleton { private static Singleton uniqueInstance; //构造函数设定为 private,避免...

2016-05-24 14:18:02 477 0

原创 设计模式 —— 抽象工厂模式(Abstract Factory)

抽象工厂模式(Abstract Factory)上一篇文章中的工厂模式仅仅产生食物,如牛奶、糖。但如果不同城市的奶和糖加工制造和口味都是不同的。普通的工厂模式就无法满足了,此时我们来看 抽象工厂模式概念: 提供一个创建 一系列 相关或相互依赖对象的接口,而无须指定它们具体的类。 组成: Abs...

2016-05-24 02:30:05 512 0

原创 设计模式 —— 工厂模式(Factory Pattern)

工厂模式(FactoryPattern)概念: 工厂模式 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 组成:工厂模式由 Product 和 Factory 组成。抽象产品(Product):所有产品实现的接口 具体产品(ConcretePro...

2016-05-24 01:25:23 479 0

原创 设计模式 —— 装饰器模式(Decorator Pattern)

装饰器模式(Decorator Pattern)概念 装饰器模式 允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,以达到特定的目的。 组成装饰器模式由组件和装饰者组成。抽象组件(Component):需要装饰的抽象对象。 具体组...

2016-05-23 11:46:16 8098 1

原创 设计模式 —— 观察者模式(Observer Pattern)

观察者模式(Observer Pattern)概念 观察者模式:定义了对象之间的一对多个关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 组成图片来源wiki观察者模式由 主题 和 观察者 组成。接口主题类(Subject):主题接口,对象使用该接口成为观察者,主题...

2016-05-23 10:01:27 493 0

原创 设计模式 —— 策略模式(Strategy Pattern)

策略模式(Strategy Pattern)概念 策略模式 定义了算法族,分别封装起来,让它们之前可以相互替换,此模式让算法的变化独立于使用算法的客户。 策略模式把 对象本身和运算规则 区分开来,其功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性的思想。 组成策略模式...

2016-05-12 21:10:45 632 0

原创 Thinking in Java -- 并发(一)

并发的多面性基本的并发定义任务 线程可以驱动任务,我们通过实现 Runnable 接口来提供,需要实现 Runnable 接口的 run() 方法。 package concurrency;/** * Created by wwh on 16-3-24. */ public class L...

2016-04-07 22:06:15 2948 0

原创 Thinking in Java -- 类型信息

运行时类型信息(RTTI:Run-Time Type Identification)使得你可以在程序运行时发现和使用类型信息 RTTI为什么需要 RTTI通常,我们希望大部分代码尽可能的少了解对象的具体类型,仅仅与对象家族中的一个通用表示打交道。这样的代码会更容易写,更容易读,且更容易维护;设计也...

2016-03-21 21:55:30 1195 4

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