wangqi的blog

贫,气不改;达,志不改


  • 首页

  • 关于

  • 归档

  • 搜索

Guava Cache与Redis的性能对比

发表于 2018-06-19

最近遇到一个需求:在程序中缓存接口的一些信息,以便尽可能快的查询到这些信息。

根据缓存应用的耦合度,可以分为local cache(本地缓存)和remote cache(分布式缓存):

  • 本地缓存:指的是在应用中的缓存组件,其最大的优点是应用和cache在同一个进程内部,请求缓存非常快速,没有过多的网络开销等,在单应用不需要集群支持或者集群情况下各节点无需互相通知的场景下使用本地缓存较为合适;同时,它的缺点也是因为缓存跟应用程序耦合,多个应用程序无法直接共享缓存,各应用或集群的各节点都需要维护自己的单独缓存,对内存是一种浪费。
  • 分布式缓存:指的是与应用分离的缓存组件或服务,其最大的优点是自身就是一个独立的应用,与本地应用隔离,多个应用可直接共享缓存。
    阅读全文 »

MyBatis探究(五)——枚举类处理

发表于 2018-05-21

在数据库的使用过程中,经常会遇到用某个数值来表示某种状态、类型或者阶段的情况。

以前我都是使用Integer来表示的,缺点是数值的含义不明确,最好的解决方案是使用枚举来替换整型类型。比如有这样一个枚举:

1
2
3
4
5
6
7
8
public enum Sex {
MALE(1), FEMALE(0);

private int code;
Sex(int code) {
this.code = code;
}
}

我们希望将表示性别的值存入数据库,即Sex.MALE存入数据库的值为1,Sex.FEMALE存入数据库的值为0

阅读全文 »

Jackson枚举类处理

发表于 2018-05-21

在MyBatis探究(五)——枚举类处理一文中,我们知道了如何在mybatis中使用枚举类型。这之后我们还需要正确处理与前端的交互,即正确处理枚举类型的序列化与反序列化操作。

本文将讨论如何在Jackson中处理枚举类型的序列化和反序列化。

阅读全文 »

Java接口中的成员变量

发表于 2018-05-18

接口中的成员变量为什么必须声明为public static final?

为什么要用final

接口中如果能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量。虽然可以直接修改这些静态成员变量的值,但所有实现类对应的值都被修改了,这跟抽象类有何区别?又接口是一种更高层面的抽象,是一种规范、功能定义的声明,所有可变的东西都应该归属到实现类中,这样接口才能起到标准化、规范化的作用。所以接口中的属性必然是final的。

为什么要用static

这个问题和Java语言本身机制有关。我们知道Java不支持多继承,但是一个类可以实现多个接口。我们假设有两个接口A和B,而类C实现了接口A和B。假设,此时,A和B中都有一个变量N,如果N不是static类型的,那么在C中该如何区分N到底是A的还是B的呢?如果是static类型,我们可以通过A.N和B.N来区别调用A或者B中的成员变量N。

最后,接口只是对事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则(Open-Closed Principle)的一种体现。

https://www.cnblogs.com/chengdabelief/p/6204281.html
https://www.aliyun.com/jiaocheng/591486.html

char与varchar的比较

发表于 2018-05-15

今天在回顾mysql数据类型的时候关注了一下两个常用类型char和varchar。发现网上的博客绝大多数要么一知半解要么干脆是错误的,这里我根据mysql的官方文档来整理一下char有varchar的比较。

char和varchar类型是非常相似的,区别在于存取的方式、最大长度、末尾空格的处理这三个方面。

阅读全文 »

maven整理

发表于 2018-05-10

Maven命令整理

阅读全文 »

RabbitMQ系列——管理命令整理

发表于 2018-05-09
  • 查看当前所有用户

    rabbitmqctl list_users

  • 删除用户

    rabbitmqctl delete_user username

    阅读全文 »

RabbitMQ系列——基础概念整理

发表于 2018-05-09

消息队列的历史

了解一件事情的来龙去脉,将不会对他感到神秘。让我们来看看消息队列(Message Queue)这项技术的发展历史。

Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的产品,当时的Message queueing软件叫做:the information bus(TIB)。TIB被电信和通讯公司采用,路途社收购了Teknekron公司。之后,IBM开发了MQSeries,微软开发了Microsoft Message Queue(MSMQ)。这些商业MQ供应商的问题是产商锁定,价格高昂。2001年,Java Message queueing试图解决锁定和交互性的问题,但对应用来说反而更加麻烦了。

于是2004年,摩根大通和iMatrix开始着手Advanced Message Queuing Protocal(AMQP)开放标准的开发。2006年,AMQP规范发布。2007年,Rabbit技术公司基于AMQP标准开发的RabbitMQ 1.0发布。

RabbitMQ采用Erlang语言开发。Erlang语言由Ericson设计,专门为开发concurrent和distribution系统的一种语言,在电信领域使用广泛。OTP(Open Telecom Platform)作为Erlang语言的一部分,包含了很多基于Erlang开发的中间件/库/工具,如mnesia/SASL,极大方便了Erlang应用的开发。OTP就类似于Python语言中众多的module,用户借助这些module可以很方便的开发应用。

阅读全文 »

Jackson整理

发表于 2018-05-08

Jackson是最流行的JSON API之一,它提供多种不同的方式来处理JSON。

Jackson包含2个不同的JSON解析器:

  • ObjectMapper
  • JsonParser

包含2个不同的JSON生成器:

  • ObjectMapper
  • JsonGenerator

Jackson包含一个核心JAR文件和2个另外的JAR文件:

  • Jackson Core
  • Jackson Annotations
  • Jackson Databind

Jackson Annotation使用Jackson Core,Jackson Databind使用Jackson Annotaion。

如果使用maven来管理依赖的话,只需要加入jackson-databind,它会自动依赖另外的两个包。

阅读全文 »

Linux操作整理

发表于 2018-05-07

sudo命令免密码

配置sudo文件,通过visudo安全地进行设置

1
sudo visudo

文件最后为用户robin添加免密码,改成你的用户名即可。

1
2
# Members of the admin group may gain root privileges
robin ALL=(ALL) NOPASSWD:ALL
阅读全文 »
1…121314…20

wangqi

199 日志
GitHub E-Mail
© 2025 wangqi
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4