鱼儿塘


  • 首页

  • 归档

  • 分类

  • 标签

  • 搜索

深入详解Java中的Gson反序列化

发表于 2017-03-25 | 分类于 java | | 阅读次数

译自 GSON DESERIALISER EXAMPLE

在这篇文章中,我们将看到如何将复杂的JSON实体反序列化为已有的Java对象。我们将看到怎么使用GSON的deserialiser,以控制JSON实体映射到Java对象。

一、 前言

请注意,在这篇文章中我们将使用术语解析或反序列化。

下面列出的所有代码均放在: https://java-creed-examples.googlecode.com/svn/gson/Gson Deserialiser Example。

阅读全文 »

深入详解Java中的Gson序列化

发表于 2017-03-22 | 分类于 java | | 阅读次数

译自 GSON SERIALISER EXAMPLE

Java对象可以使用Gson API(Homepage)转换成JSON字符串。在本文中,我们将看到我们如何使用默认的Gson实现和自定义实现将Java对象转换为JSON字符串。

下面列出的所有代码均放在:http://java-creed-examples.googlecode.com/svn/gson/Gson Serialiser Example/

阅读全文 »

深入详解Java中的Gson注解

发表于 2017-03-20 | 分类于 java | | 阅读次数

译自 GSON ANNOTATIONS EXAMPLE

Gson提供了一组注解来简化序列化和反序列化过程。在本文中,我们将看到我们如何使用这些注释,以及如何简化Gson在Java对象和JSON对象之间的转换。

以下列出的所有代码在该链接可以找到:Gson Annotations Example。

Gson提供了四个注解,如Java文档中所述。这些注解可以分为三类。下面每个类别将分别讨论。

阅读全文 »

Protobuf协议代码生成器之wire

发表于 2017-03-15 | 分类于 java | | 阅读次数

一、 前言

首先要搞清楚 Protocol Buffers 和代码生成器。

Protocol Buffers 只是一种数据传输协议格式,是Google定义的,它是与语言和平台均无关的,用于描述和传输数据的语言。开发人员可以在不同的环境中使用相同的模式开发。Protocol Buffers中的 .proto 源文件是人类可读的,可以包含注释。Protocol Buffers定义了一种紧凑的二进制格式,允许项目结构在不破坏现有客户端的情况下发展。

而代码生成器则是根据这个协议文档自动生成相应语言代码,任何组织机构都可以开发该工具。也就是说,使用代码生成器来读取 .proto 文件,并以你选择的语言生成源代码。这种方法有助于加快开发速度。。下文中将Google自身的工具称为标准工具,即 protoc

阅读全文 »

使用Spring实现Java中的缓存

发表于 2017-03-10 | 分类于 java | | 阅读次数

译自 CACHING MADE EASY WITH SPRING

Spring3.1引入了一种新的简单的方法来缓存结果。在本文中,我们将看到如何在我们的项目中使用新的Spring缓存。本文的读者应该有一些关于Spring和依赖注入的基本知识(或者也称为:控制反转IOC)。

以下列出的所有代码均可在 http://code.google.com/p/java-creed-examples/source/checkout 中找到。

一、 简单缓存

看看如下的类:

阅读全文 »

Python中的异步编程详解

发表于 2017-03-05 | 分类于 python | | 阅读次数

一、 协程和线程

多线程的Python程序总是让你看起来像是同时在运行多个函数。但是多线程有三大问题:

  • 它们需要特殊的工具来协调各个线程之间的安全。这让编写代码比单线程程序更加的苦难。并且这让代码变得更加的难以维护和扩展。
  • 线程需要更多的内存,每个执行中的线程大概需要8M。这对于现在大部分计算机来说可能不算什么。但是如果你想让你的程序同时运行成千上万的功能,这可能就会导致有些线程不工作了。
  • 开启一个线程的代价是很高的。如果你频繁的创建和销毁一个线程,那么这开销将会是很大的,将拖慢整个系统。
阅读全文 »

为Protobuf编译器protoc编写插件

发表于 2017-02-20 | 分类于 python | | 阅读次数

Google的 Protocol Buffer 是一种以二进制格式对消息进行编码和解码的库,可针对不同平台之间的紧凑性和可移植性进行优化。目前,核心库可以为 C/C++,Java 和 Python 生成代码,但通过编写Protobuf编译器的插件可以实现自动生成其他语言代码。

已经有一个支持第三方语言的插件列表,但是你可以更加自己的需要来编写插件。在这篇文章中,将实践举例如何编写一个Protobuf编译器的插件。

一、 配置

在开始编写插件之前,我们需要安装 Protocol Buffer 编译器:

1
yum install protobuf

为了能够编译 .proto 文档,我们还需要安装相关语言的protobuf包, 这里我们用Python编写插件:

1
pip install protobuf

阅读全文 »

高效Python编程之方法参数

发表于 2017-02-18 | 分类于 python | | 阅读次数

一、 可变数量参数

1、 概述

可变数量参数是指参数前带 * 的。如 *args.
比如,你想要通过一些参数信息来打印日志。使用固定参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
def log(message, values):
if not values:
print(message)
else:
values_str = ', '.join(str(x) for x in values)
print('%s: %s' % (message, values_str))
log('My numbers are', [1, 2])
log('Hi there', [])
>>>
My numbers are: 1, 2
Hi there

可以看出,当你没有values值传递的时候,你也不得不传递一个 [] 。

阅读全文 »

深入了解Python中的装饰器

发表于 2017-02-07 | 分类于 python | | 阅读次数

一、 概述

Python的装饰器是AOP编程的一种实现,其他很多语言也都支持装饰器模式。
注:AOP是指面向切面编程,详见 AOP概念

一个装饰器允许你增加、修改或者完全修改一个方法或者函数的逻辑。使用装饰器,将与业务无关的逻辑移到装饰器中,这将会让你的代码更加的干净紧凑。

阅读全文 »

深入详解Java的NIO之Buffer

发表于 2016-12-18 | 分类于 java | | 阅读次数

一、 简介

Buffer是一个写入通道或者从通道中读取的数据块。Buffer是Java I/O和Java NIO的主要差异之一。对于早期的Java I/O,数据是基于流的方式进行读写的,而现在NIO是基于buffer的方式来读写的。NIO中的通道跟流是一个意思。

二、 Buffer特性

  • Buffer是Java NIO的基本构成组件。
  • Buffer提供了一个固定大小的容器来读写数据。
  • 每个buffer都是可读的,但是只有被选中的buffer才是可写的。
  • Buffer是通道的端点。
  • 在一个只读buffer中,内容是不可变的,但是它的 mark, position, limit 是可变的。
  • 默认的buffer是线程不安全的
阅读全文 »
12…6
tunsuy

tunsuy

一切只为变得更好

52 日志
14 分类
33 标签
GitHub Email
© 2015 - 2017 tunsuy