Java动态编程初探——Javassist
摘要:最近需要通过配置生成代码,减少重复编码和维护成本。用到了一些动态的特性,和大家分享下心得。 我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使用反射,因为反射的性能开销较大。其实还有一种和反射一样强大的特性,但是开销却很低,它就是Ja
阅读全文
posted @
2014-02-27 12:55
duanxz
阅读(20988)
推荐(3) 编辑
Disconf —— 来自百度的分布式配置管理平台
摘要:摘要 为了更好的解决分布式环境下多台服务实例的配置统一管理问题,本文提出了一套完整的分布式配置管理解决方案(简称为disconf[4],下同)。首先,实现了同构系统的配置发布统一化,提供了配置服务server,该服务可以对配置进行持久化管理并对外提供restful接口,在此基础上,基于zookeep
阅读全文
posted @
2014-02-26 10:33
duanxz
阅读(4246)
推荐(0) 编辑
linux参数之max_map_count
摘要:“This file contains the maximum number of memory map areas a process may have. Memory map areas are used as a side-effect of calling malloc, directly
阅读全文
posted @
2014-02-25 16:27
duanxz
阅读(28480)
推荐(1) 编辑
declare handler 声明异常处理的语法
摘要:声明异常处理的语法 上述定义包括: Handler Type (CONTINUE,EXIT)//处理类型 继续或退出 Handler condition (SQLSTATE,MYSQL ERROR,CONDITION)//触发条件 Handler actions(错误触发的操作) 注意: 1、exi
阅读全文
posted @
2014-02-25 16:13
duanxz
阅读(1912)
推荐(0) 编辑
mysql存储过程获取sqlstate message_text
摘要:群里有人询问,在mysql的proc中如何获取错误信息、错误编号呢?我们知道在oracle、mssql中比较简单; oracle中sqlcode,sqlerrm ;mssql中ERROR_PROCEDURE(), ERROR_MESSAGE(); 那么在mysql中呢? 下面给出示例: mysql>
阅读全文
posted @
2014-02-25 11:08
duanxz
阅读(5602)
推荐(0) 编辑
mongoTemplate操作内嵌文档
摘要:关系型数据库中,表与表的关联关系有1:1,也有1:n的。在java的面向对象的世界里就是主对象嵌子对象,与主对象嵌集合<子对象>的两种形式。 主对象嵌子对象操作: 新增、修改都直接用如下方法: mongoTemplate.updateFirst(new Query(criteria), update
阅读全文
posted @
2014-02-25 10:51
duanxz
阅读(40020)
推荐(5) 编辑
mysql索引之七:组合索引中选择合适的索引列顺序
摘要:组合索引(concatenated index):由多个列构成的索引,如create index idx_emp on emp(col1, col2, col3, ……),则我们称idx_emp索引为组合索引。 在组合索引中有一个重要的概念:引导列(leading column),在上面的例子中,c
阅读全文
posted @
2014-02-24 16:51
duanxz
阅读(3949)
推荐(0) 编辑
mongoDB的操作总结
摘要:1、mongodb副本集数据同步 从mongodb2.0开始支持链式复制,并且默认是开启的,是根据second节点之间的ping time和网络距离进行选择那个second作为数据的同步节点,链式复制的优点:可以减少master的资源消耗,减少负载。缺点:节点之间同步数据本来就不可避免会有数据的延迟
阅读全文
posted @
2014-02-24 15:14
duanxz
阅读(973)
推荐(0) 编辑
explain之三:MYSQL EXPLAIN语句的extended 选项学习体会,分析诊断工具之二
摘要:MySQL 的explain命令有一个extended选项,我想可以很多人都没有注意,因为它对命令的输出结果没有任何改变,只是增加了一个warning。这个 warning中显示了MySQL对SQL的解释,从这个解释中我们可以看到SQL的执行方式,对于分析SQL还是很有用的。也即explain 的e
阅读全文
posted @
2014-02-24 13:31
duanxz
阅读(3319)
推荐(0) 编辑
状态模式
摘要:一、状态模式简介 首先了解一下基本的概念! 1.什么是状态模式 状态模式(State Pattern),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 2.状态模式是用来解决什么问题的?是用来干什么的? 状态模式主要解决的是当控制一个对象状态装换的条件表达式过于复杂时的情况
阅读全文
posted @
2014-02-24 12:58
duanxz
阅读(893)
推荐(0) 编辑
代码重构----使用java有限状态机来消除太多的if else判断
摘要:1. 状态机基本概念 http://zh.wikipedia.org/wiki/%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E6%9C%BA 状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述
阅读全文
posted @
2014-02-24 12:57
duanxz
阅读(1402)
推荐(0) 编辑
断路器(CircuitBreaker)设计模式
摘要:断路器是电器时代的一个重要组成部分,后面总是有保险丝熔断或跳闸的断路器是安全的重要保障。 微服务最近几年成为软件架构的热门话题,其益处多多。但需要知道的是,一旦开始将单块系统进行分解,就上了分布式系统的山头。 在云或分布式系统环境中,任何对一致性或可靠性的表述就是谎言。我们必须假设微服务的行为或其服
阅读全文
posted @
2014-02-24 11:20
duanxz
阅读(1869)
推荐(0) 编辑
断路器之一:Hystrix 使用与分析
摘要:一:为什么需要Hystrix? 在大中型分布式系统中,通常系统很多依赖(HTTP,hession,Netty,Dubbo等),如下图: 在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机等. 如下图:QPS为50的依赖 I
阅读全文
posted @
2014-02-21 15:48
duanxz
阅读(1671)
推荐(0) 编辑
Lock的实现原理
摘要:1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制。本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\locks中),它包含以下方法 Lock有三个实现类,一个是ReentrantLock,另两个是Ree
阅读全文
posted @
2014-02-21 15:23
duanxz
阅读(13266)
推荐(0) 编辑
Disconf web管理端安装
摘要:1.环境配置配置java、maven环境,并安装mysql,reids,zookeeeper,Nginx2.下载disconf下载https://codeload.github.com/knightliao/disconf/zip/master解压:unzip disconf-master.zip3
阅读全文
posted @
2014-02-21 14:58
duanxz
阅读(1530)
推荐(0) 编辑
倒排索引原理和实现
摘要:关于倒排索引 搜索引擎通常检索的场景是:给定几个关键词,找出包含关键词的文档。怎么快速找到包含某个关键词的文档就成为搜索的关键。这里我们借助单词——文档矩阵模型,通过这个模型我们可以很方便知道某篇文档包含哪些关键词,某个关键词被哪些文档所包含。单词-文档矩阵的具体数据结构可以是倒排索引、签名文件、后
阅读全文
posted @
2014-02-21 11:28
duanxz
阅读(2751)
推荐(1) 编辑
MongoDB 存储引擎:WiredTiger和In-Memory
摘要:存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上。从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引擎(Storage Engine),MongoDB支持的存储引擎有:WiredTiger,MMAPv
阅读全文
posted @
2014-02-21 10:13
duanxz
阅读(699)
推荐(0) 编辑
SpringBoot自动化配置之一:SpringBoot内部的一些自动化配置入门介绍
摘要:springboot用来简化Spring框架带来的大量XML配置以及复杂的依赖管理,让开发人员可以更加关注业务逻辑的开发。 比如不使用springboot而使用SpringMVC作为web框架进行开发的时候,需要配置相关的SpringMVC配置以及对应的依赖,比较繁琐;而使用springboot的话
阅读全文
posted @
2014-02-20 17:00
duanxz
阅读(2270)
推荐(0) 编辑
SpringBoot中通过SpringBootServletInitializer如何实现容器初始化
摘要:相关文章 《Servlet3.0之四:动态注册和Servlet容器初始化》 《SpringBoot中通过SpringBootServletInitializer如何实现组件加载》 《SpringMVC之五:自定义DispatcherServlet配置及配置额外的 servlets 和 filters
阅读全文
posted @
2014-02-20 15:45
duanxz
阅读(11509)
推荐(1) 编辑
SpringBoot之二:部署Spring Boot应用程序方式
摘要:衡量多种部署方式 Spring Boot应用程序有多种构建和运行方式,其中一些你已经使用过了。 在IDE中运行应用程序(涉及Spring ToolSuite或IntelliJ IDEA)。 使用Maven的spring-boot:run或Gradle的bootRun,在命令行里运行。 使用Maven
阅读全文
posted @
2014-02-19 15:34
duanxz
阅读(1590)
推荐(0) 编辑
Zookeeper学习(八):Zookeeper的数据发布与订阅模式
摘要:http://blog.csdn.net/ZuoAnYinXiang/article/category/6104448 1.发布订阅的基本概念 1.发布订阅模式可以看成一对多的关系:多个订阅者对象同时监听一个主题对象,这个主题对象在自身状态发生变化时,会通知所有的订阅者对象,使他们能够自动的更新自己
阅读全文
posted @
2014-02-19 14:46
duanxz
阅读(3173)
推荐(1) 编辑
Dubbo各种协议详解
摘要:(1)协议支持 Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebService协议 Thrift协议 Memcached协议 Redis协议 在通信过程中,不同的服务等级一般对应着不同的服务质量,那么选择合适的协议便是一件非常重要的事情。你可以
阅读全文
posted @
2014-02-19 14:42
duanxz
阅读(5904)
推荐(1) 编辑
Annotation之四:java -Xlint:unchecked和 -Xlint:deprecation(SuppressWarning抑制警告)
摘要:Java Lint 选项 Java 编译器的选项包括所谓的标准选项和非标准选项。 标准选项是指在当前版本的开发环境中支持,且在未来版本中也将被支持的选项。常用的标准选项比如 -classpath 以及 -d 等等。 非标准选项是在当前版本的开发环境中支持,但不能保证将来一定会继续支持的选项。非标准选
阅读全文
posted @
2014-02-19 13:03
duanxz
阅读(3835)
推荐(0) 编辑
mina在spring中的配置多个端口
摘要:本次练习中是监听2个端口 applicationContext-mina.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//spring//DTD BEAN//EN" "http://www.springfr
阅读全文
posted @
2014-02-19 09:42
duanxz
阅读(1219)
推荐(0) 编辑
Mina2中IoService
摘要:Apache MINA 2 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架。它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式。 首先,mina server端acceptor启动方法: 1、NioSocketAcceptor.b
阅读全文
posted @
2014-02-18 17:41
duanxz
阅读(1123)
推荐(0) 编辑
thrift rpc 使用常见问题解答和经验
摘要:Thrift是一个非常棒的工具,是Facebook的开源项目,目前的开发非常的活跃,由Apache管理,所以用的是Apache Software License,这非常重要,因为可以放心的对其修改并用到自己的项目中。 谈到修改Thrift,这非常重要。因为我觉得如果要严肃的使用Thrift,不可避免
阅读全文
posted @
2014-02-18 15:30
duanxz
阅读(1578)
推荐(0) 编辑
mongo shell命令
摘要:https://docs.mongodb.com/manual/mongo/ 一、MongoDB客户端使用 1、mongo:启动mongo的客户端,和mongo客户端的登录 如果连接远程的mongoDB的话 二、MongoDB数据库层管理相关命令 2.1、use 创建自定义数据库 use datab
阅读全文
posted @
2014-02-18 11:08
duanxz
阅读(1572)
推荐(0) 编辑
Mina APR传输与串口传输讲解---zhengli
摘要:原文地址:Mina Transports(Apache Mina user guide Chapter6 Transport) 1.1.1.APR传输 1.1.1.1.介绍 APR (Apache Portable Runtime)Apache便携式运行时库提供卓越的可扩展性、性能和能够更好地与本地
阅读全文
posted @
2014-02-18 10:38
duanxz
阅读(1494)
推荐(0) 编辑
MongoDB 3.4 高可用集群搭建(二)replica set 副本集
摘要:转自:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章《MongoDB 3.4 高可用集群搭建(一):主从模式》提到了几个问题还没有解决。 主节点挂了能否自动切换连接?目前需要手工切换。 主节点的读写压力过大如何解决?
阅读全文
posted @
2014-02-18 10:19
duanxz
阅读(3329)
推荐(0) 编辑
java.nio.ByteBuffer中flip、rewind、clear方法的区别
摘要:对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: flip、rewind、clear这三个方法便是用来设置这些值的。 clear方法 public final Buffer clear(){ position = 0; //重
阅读全文
posted @
2014-02-17 15:48
duanxz
阅读(4200)
推荐(3) 编辑
Mockito为什么不能mock静态方法
摘要:因为Mockito使用继承的方式实现mock的,用CGLIB生成mock对象代替真实的对象进行执行,为了mock实例的方法,你可以在subclass中覆盖它,而static方法是不能被子类覆盖的,所以Mockito不能mock静态方法。 但PowerMock可以mock静态方法,因为它直接在byte
阅读全文
posted @
2014-02-17 14:51
duanxz
阅读(21383)
推荐(1) 编辑
框架Mockito
摘要:一、什么是mock测试,什么是mock对象? 先来看看下面这个示例: 从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks 从图中可以清晰的看出 mock对象就是在调试期间用来作为真实对象的替代品。 mock测试就是在测试过程中
阅读全文
posted @
2014-02-12 14:52
duanxz
阅读(869)
推荐(0) 编辑
传统Java Web(非Spring Boot)、非Java语言项目接入Spring Cloud方案--temp
摘要:技术架构在向spring Cloud转型时,一定会有一些年代较久远的项目,代码已变成天书,这时就希望能在不大规模重构的前提下将这些传统应用接入到Spring Cloud架构体系中作为一个服务以供其它项目调用。我们需要使用原生的Eureka/Ribbon手动完成注册中心、查询服务列表功能。如果是非Ja
阅读全文
posted @
2014-02-12 14:12
duanxz
阅读(1479)
推荐(0) 编辑
mongodb的存储引擎
摘要:mongodb版本为3.4 mongodb存储引起的一些概述 存储引擎是MongoDB的核心组件,负责管理数据如何存储在硬盘和内存上。从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引擎,MongoDB支持的存储引擎有:WiredTiger,MMAPv1和In-Memory。 从m
阅读全文
posted @
2014-02-10 16:31
duanxz
阅读(2316)
推荐(0) 编辑
各种排序算法的分析及java实现
摘要:排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下。 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果
阅读全文
posted @
2014-02-10 14:33
duanxz
阅读(552)
推荐(0) 编辑
MySQL导入MongoDB
摘要:一、MongoDB的导入导出 mongoDB的导入导出,分为mongoDB官方提供的工具类,和第三方的工具类。下面依次介绍下: 1.1、mongoDB提供的工具 1.1.1、mongoimport工具 源数据只接受json、csv等格式的源文件。 第一步:将user表从MySQL中导出,右键,点击导
阅读全文
posted @
2014-02-10 14:26
duanxz
阅读(2677)
推荐(0) 编辑
Java 8新增的日期、时间格式器
摘要:在计算机中,应该如何表示日期和时间呢? 我们经常看到的日期和时间表示方式如下: 2019-11-20 0:15:00 GMT+00:00 2019年11月20日8:15:00 11/19/2019 19:15:00 America/New_York 如果直接以字符串的形式存储,那么不同的格式,不同的
阅读全文
posted @
2014-02-10 14:26
duanxz
阅读(2002)
推荐(0) 编辑
try-with-resources语句
摘要:try-with-resources语句是一个声明一个或多个资源的 try 语句。一个资源作为一个对象,必须在程序结束之后随之关闭。 try-with-resources语句确保在语句的最后每个资源都被关闭 。任何实现了 Java.lang.AutoCloseable的对象, 包括所有实现了 jav
阅读全文
posted @
2014-02-10 14:25
duanxz
阅读(682)
推荐(0) 编辑
MockMVC
摘要:随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的。从Spring 3.2开始Spring了Spring Web测试框架 Spring MVC测试框架提供了对服务器端和客户端(基于RestTemplate的客户端)提供了支持。 对于服务器端:在Spri
阅读全文
posted @
2014-02-10 14:24
duanxz
阅读(2928)
推荐(1) 编辑
SpringBoot JPA 中无法注入 JpaRepository 接口的问题及解决方案
摘要:错误: 在Springboot 框架中使用JPA的过程中,怎么来实现数据库操作底层的交互呢?Spring JPA其实已经提供了一套很全面的解决方案,实现对数据库的增、删、查、改只需要继承JPA实现类: org.springframework.data.jpa.repository.query.Sim
阅读全文
posted @
2014-02-10 11:27
duanxz
阅读(7372)
推荐(1) 编辑
HashMap的实现原理
摘要:数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特
阅读全文
posted @
2014-02-10 11:26
duanxz
阅读(621)
推荐(0) 编辑
CXF之一 基础理论介绍
摘要:WebService介绍 WebService让一个程序可以透明地调用互联网程序,不用管具体的实现细节。只要WebService公开了服务接口,远程客户端就可以调用服务。WebService是基于http协议的组件服务,WebService是分散式应用程序的发展趋势。WebService的开源实现
阅读全文
posted @
2014-02-10 11:15
duanxz
阅读(495)
推荐(0) 编辑
Metaspace 之一:Metaspace整体介绍(永久代被替换原因、元空间特点、元空间内存查看分析方法)
摘要:回顾 根据JVM内存区域的划分,简单的画了下方的这个示意图。区域主要分为两大块,一块是堆区(Heap),我们所New出的对象都会在堆区进行分配,在C语言中的malloc所分配的方法就是从Heap区获取的。而垃圾回收器主要是对堆区的内存进行回收的。 而另一部分则是非堆区,非堆区主要包括用于编译和保存本
阅读全文
posted @
2014-02-10 11:15
duanxz
阅读(63987)
推荐(9) 编辑
RabbitMQ介绍
摘要:(一)RabbitMQ基本概念 RabbitMQ是流行的开源消息队列系统,用erlang语言开发。我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持。RabbitMQ是 AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不过它也只有几个关键概念,这里
阅读全文
posted @
2014-02-10 09:55
duanxz
阅读(4006)
推荐(0) 编辑
Dubbo实现RPC调用使用入门
摘要:使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian、HTTP、RMI、Memcached、Redis、Thrift等等。由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证
阅读全文
posted @
2014-02-08 15:12
duanxz
阅读(2031)
推荐(0) 编辑
Android Dialog用法
摘要:摘要: 创建对话框 一个对话框一般是一个出现在当前Activity之上的一个小窗口. 处于下面的Activity失去焦点, 对话框接受所有的用户交互. 对话框一般用于提示信息和与当前应用程序直接相关的小功能.Android API 支持下列类型 ...创建对话框 一个对话框一般是一个出现在当前Activity之上的一个小窗口. 处于下面的Activity失去焦点, 对话框接受所有的用户交互. 对话框一般用于提示信息和与当前应用程序直接相关的小功能. Android API 支持下列类型的对话框对象: 警告对话框 AlertDialog: 一个可以有0到3个按钮, 一个单选框或复选框的列表...
阅读全文
posted @
2014-02-07 17:52
duanxz
阅读(2063)
推荐(0) 编辑
RabbitMQ 入门指南(Java)
摘要:RabbitMQ是一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。本文简单介绍了如何使用 RabbitMQ,假定你已经配置好了rabbitmq服务器。 RabbitMQ是用Erlang,对于主要的编程语言都有驱动或者客户端。我们这里要用的是Java,所以先要获得J
阅读全文
posted @
2014-02-07 17:26
duanxz
阅读(1481)
推荐(0) 编辑
RabbitMQ 四种Exchange
摘要:AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。同理,消费者也是如此。Exchange 就类似于一个交换机
阅读全文
posted @
2014-02-07 15:41
duanxz
阅读(1652)
推荐(0) 编辑