- 博客(55)
- 资源 (16)
- 问答 (1)
- 收藏
- 关注
原创 第一个还不太成熟的爬虫项目(dubbo-monitor)
最近两天为了爬取dubbo-monitor中各个服务的运行情况,特地去看了一下python基础,然后花了点时间写了个爬虫项目。from io import StringIOfrom urllib import requestimport refrom bs4 import BeautifulSoupdef urlopen(data): with request.urlo...
2018-10-24 15:28:45
539
原创 二分查找(折半查找)
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找...
2018-03-01 10:46:19
540
原创 关于==,equals和hashCode
关于==,equals和hashCode的比较是一个经常被问到的问题,要牢记答案必须先知道其原理,下面先从他们的原理,使用和注意事项来阐述他们:1.原理==比较的是2个对象是否指向的同一个引用,只有指向同一个引用才返回true;equals方法在Object类中return this == obj,默认指向同一个引用才返回true;hashCode方法在Object类中定义返回一个int类型。2....
2018-02-28 17:00:32
455
转载 Java并发编程:Callable、Future和FutureTask
Java并发编程:Callable、Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Call...
2017-02-23 14:57:50
515
原创 分布式交易一致性问题
下面是一个订单系统向支付系统发送请求的一个场景:这是一个极具代表性的例子,用户提交一次请求,订单系统向支付系统发出支付请求并处理回执。通常在开发这种订单交易系统的时候,会遇到几种常见的问题,下面是个人对此的一些总结:1.支付系统API通常需要一个“订单号”作为入参,而实际调用API接口时使用到的往往不是正在意义上的订单号,而是交易流水号。这个很好理解,像银行或者其他
2016-10-19 00:42:37
5099
原创 java序列化Serializable接口
序列化将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。反序列化就是读取序列化后保存在存储区的序列化信息或反序列化对象的状态,重新创建该对象。Serializable接口下面是一个实现了Serializable接口的类Serializable是java提供的一个序列化接口,它
2016-10-18 16:43:21
815
转载 Druid常见问题
1. Druid是什么?Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。2. 在哪里下载druid正式版本下载:maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/ 3. 怎么获取Druid的源码Druid是一个开源项目,源码托管在gi
2016-10-14 16:58:06
2912
原创 mysql索引
MySQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍
2016-10-13 14:21:27
381
原创 mysql性能优化
1. 目标l 了解什么是优化l 掌握优化查询的方法l 掌握优化数据库结构的方法l 掌握优化MySQL服务器的方法2. 什么是优化?l 合理安排资源、调整系统参数使MySQL运行更快、更节省资源。l 优化是多方面的,包括查询优化、更新优化、服务器优化等很多方面。没有特定方式特定的方法,总是要具体场景,具体分析,但是我们要掌握基本的优化手段。l 原则:减
2016-10-13 12:10:14
1371
3
转载 MySQL数据库MyISAM和InnoDB存储引擎的比较
MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义;数据文件是MYD (MYData);索引文件是MYI (MYIndex)。InnoDB是
2016-10-13 12:09:46
422
转载 通过show status 优化数据库性能
mysql数据库的性能状态监控点非常多,其中很多量都是不能忽视的必须监控的量,且90%以上的内容 可以在连接上mysql后执行show status 或是 show veriables的输出值 获得,需要注意的是以上的命令获得的状态值实际上是累计值,所以如果 要计算时段内的变化 量还需要稍加处理,下面看下几项需要重点关注的性能状态:1. key buffer 命中率
2016-10-13 12:08:30
728
原创 java 8 新特性(5.Date-Time API)
Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。对日期与时间的操作一直是Java程序员最痛苦的地方之一。标准的 java.util.Date以及后来的java.util.Calendar一点没有改善这种情况(可以这么说,它们一定程度上更加复杂)。这种情况直接导致了Joda-Time——一个可替换标准日期/时间处理且功能非常强大的Java
2016-09-28 12:28:49
637
原创 代理模式(静态代理、jdk动态代理)
1.代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。2.组成的角色:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。真实角色:实现抽象角色
2016-09-27 17:56:12
402
转载 java 8 新特性(4.Stream API)
为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对
2016-09-27 11:05:57
677
原创 java 8 新特性(3.接口的默认方法和静态方法)
java8中允许使用default关键字定义接口的默认方法,默认方法与抽象方法不同,不需要被实现类来具体实现,但是可以被实现类继承或重写。默认方法的出现提供了在不破坏接口的兼容性的前提下对接口进行扩展。java8中使用static关键字定义接口的静态方法,与一般java类中的静态方法一样。public interface AA { static void helloWorld
2016-09-27 10:06:25
1169
原创 深入浅出MyBatis
1.深入浅出MyBatis-快速入门2.深入浅出MyBatis-Configuration3.深入浅出MyBatis-MapperBuilder4.深入浅出MyBatis-Sqlsession5.深入浅出Mybatis-插件原理6.深入浅出Mybatis-分页7.深入浅出Mybatis-sql自动生成8.深入浅出Mybatis-改造Cache
2016-09-26 17:26:10
387
转载 Hibernate与MyBatis比较
第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.html
2016-09-26 16:57:52
332
原创 MyBatis 分页插件详解(带源码)
Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量和limit取结果),在大数据量的情况下这样的分页基本上是没有用的。本文基于插件,通过拦截StatementHandler重写sql语句,实现数据库的物理分页。1.分页参数既然要分页,肯定得有分页参数吧,下面提供了一个排序、分页的参数类。package yjc.framework.orm.db;impo
2016-09-23 17:02:16
4430
1
转载 java 8 新特性(2.Lambda表达式)
1. lambda表达式(lambda expressions)匿名类型最大的问题就在于其冗余的语法。有人戏称匿名类型导致了“高度问题”(height problem):比如前面ActionListener的例子里的五行代码中仅有一行在做实际工作。lambda表达式是匿名方法,它提供了轻量级的语法,从而解决了匿名内部类带来的“高度问题”。下面是一些lambda表达式:(
2016-09-22 17:44:16
770
原创 java 8中forEach遍历
public class ForEachTest { public static void main(String[] args) { /** list */ //ArrayList in Arrays.forEach(Consumer action) Arrays.asList("a", "b", "d").forEach(e -> Sys
2016-09-22 11:31:36
11879
原创 java 8 新特性(1.函数式接口 - Functional Interface)
1.函数式接口(Functional Interface):所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。这种类型的接口也称为SAM接口,即Single Abstract Method interfaces。1.1 函数式接口里允许定义默认方法:函数式接口里是可以包含默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的
2016-09-22 11:18:49
11411
原创 责任链模式(Chain of Responsibility)
责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。涉及角色:1.抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义出一
2016-09-19 11:30:34
446
原创 组合模式(Composite Pattern)
组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式让你可以优化处理递归或分级数据结构。有许多关于分级数据结构的例子,使得组合模式非常有用武之地。
2016-09-18 15:49:00
399
原创 map的遍历性能测试
java中遍历通过不同的元素遍历map的方式有3种:1.通过keySet遍历;2.通过entrySet遍历;3.获取values遍历value。通过不同的方式遍历又分为foreach和iterator。因为本文按照这几个维度,以不同数据量来分别测试所需时间。主要测试方法如下:private static void valuesIterator(Map, String> map)
2016-09-18 13:38:01
1468
原创 迭代器模式(Iterator)
迭代器模式,提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。JDK中已经为我们设计好了一套完善的迭代器------java.util.Iterator。通过这个包名可以发现所谓的迭代器之前是一种工具,这个工作提供的功能就是用来顺序访问一个聚合对象中的各种元素。/** * 迭代器模式,使用JDK中的Iterator * 这里的聚合元素指的就是List,Set
2016-09-18 10:42:07
334
原创 策略模式(Strategy Pattern)
概述:在应用程序开发过程中,实现一种功能存在多种不同的方法或者说是策略,如排序,计算等等。如何选择策略就成了编写代码是否优雅的关键。硬编码并不可取,写多种方法分别实现策略然后公开给客户端调用,或者通过if...else分支语句来选择,都不够优雅,加大了代码维护的难度。这个时候我们就可以考虑使用策略模式。策略模式:策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共
2016-09-13 14:13:53
412
原创 状态模式(Stats Pattern)
在实际项目中,应用程序往往需要根据不同的情况做出不同的处理。在开发工程中,需要考虑到各种场景、分支,常常会使用到if..else或者switch case等分支,通过判断条件处理不同的情况。当这种判断变得复杂的时候,分支增多,代码量增多,对代码的维护和可读性、扩展性带来了不好的影响。这种时候就可以考虑使用状态模式。状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改
2016-09-13 10:32:22
493
原创 模板方法模式(Template Pattern)
1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。2. 模式中的角色 2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。模板方法模式是结构最简单的行为型设计模式
2016-09-12 13:57:47
547
原创 slf4j优于log4j
之前已经写过以前简要的《log4j》,讲述了log4j的配置及使用。现在来说说slf4j优于log4j的几个点。先说结论吧:请尽量使用slf4j。1.依赖抽象而不是依赖具体实现slf4j对比Log4J,logback和java.util.Logging,slf4j是接口,其他都是具体的实现类。当客户端调用slf4j打印日志的时候,将通过Log4jLoggerAdapter这样一个log4j
2016-09-12 10:01:39
653
原创 命令模式(Command Pattern)
1命令模式是一个高内聚的模式。定义如下:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 2.角色说明:● Receive接收者角色该角色就是干活的角色,命令传递到这里是应该被执行的。● Command命令角色需要执行的所有命令都在这里声明。● Invoker调用者角色
2016-09-11 15:04:28
464
原创 AES对称加密
public class AES { private static final String KEY = "99ssavv"; /** * base 64 encode * @param bytes 待编码的byte[] * @return 编码后的base 64 code */
2016-09-10 15:00:27
535
原创 ArrayStoreException
最近看到一段JDK中ArrayList类中的源码,其中一段注释吸引了我的眼球,为了弄清其含义,特意找了一些资料,写了一点测试代码。源代码如下:/** * Constructs a list containing the elements of the specified * collection, in the order they are returned by the collec
2016-09-09 17:21:46
15322
原创 外观模式(Facade Pattern)
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。有什么用处:(1)实现了子系统与客户端之间的松耦合关系。(2)客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。用代码说话:完成一件事,需要3个步骤:步骤A,步骤B,步骤Cpublic class S
2016-09-09 13:37:50
444
原创 两种适配器模式(Adapter Pattern)
1. 概述 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。2. 解决的问题 举个例子:有一个三相插座,可是此时使用的小台灯的插头是一个两相插头,插不进去呀。这个时候就会想到使用插线板,插线板的插头可以插入家里的三相插座,同时插线板提供了两相插孔给小台灯使用。这里的插线板就是我们所说的适配器。
2016-09-09 10:28:15
5327
原创 三个工厂模式(Simple Factory & Factory Method & Abstract Factory)
简单工厂模式(Simple Factory ):简单工厂又叫做静态工厂方法,其实不是一种设计模式,反而更像是一种编码习惯。角色及其职责:工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。抽象产品(Product)角色简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共
2016-08-29 15:18:56
893
原创 java中assert关键字
Java2在1.4中新增了一个关键字:assert。在程序开发过程中使用它创建一个断言(assertion)。,它的语法形式有如下所示的两种形式:1、assert condition; 这里condition是一个必须为真(true)的表达式。如果表达式的结果为true,那么断言为真,并且无任何行动如果表达式为false,则断言失败,则会抛出一个AssertionError对象。
2016-08-29 12:14:02
17016
原创 装饰模式(Decorator Pattern)
装饰模式:以对客户透明的方式动态地给一个对象附加上更多的责任。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。若要扩展功能,装饰者比继承提供了更有弹性的替代方案。装饰模式的类图如下:在装饰模式中的角色有: ● 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 ● 具体构件(ConcreteCompon
2016-08-28 10:16:10
369
转载 JDK里的设计模式
下面是JDK中有关23个经典设计模式的示例,在stakeoverflow也有相应的讨论:http://stackoverflow.com/questions/1673841/examples-of-gof-design-patternsStructural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList
2016-08-25 17:25:23
335
原创 观察者模式(Observer Pattern)
1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2. 解决的问题 将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带
2016-08-25 12:41:33
447
原创 RocketMQ入门(5.单向(Oneway)发送)
原理:单向(Oneway)发送特点为只负责发送消息,不等待服务器回应且没有回调函数触发,即只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别。应用场景:适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。生产者package yangjiachang.mq.producter;import com.aliyun.opense
2016-08-12 20:53:53
9909
mysql性能优化_数据库_onlyyjco的专栏-优快云博客.7z
2020-05-26
服务器推送功能详细设计.docx
2020-05-26
activiti工作流在风控业务中的应用.docx
2020-05-26
CAT监控中心技术总结.doc
2020-05-26
Spring Boot 中文文档 参考手册 中文版.pdf
2020-05-26
互联网金融微服务架构设计.pptx
2020-05-26
即时通讯协议:xmpp
2020-05-26
mysql按周一到周日分段统计
2015-06-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人