红黑树

总体介绍

Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natural ordering),也可以通过构造时传入的比较器(Comparator)。

阅读全文

MD5和base64

本文代码下载

MD5和base64加密

在网络发展趋势日渐迅猛的今天,数据的安全性也越来越重要。因此,如何保证用户数据的安全就成为了我们不得不考虑的一个问题。在iOS中最常见的两种加密方式是base64加密码和MD5加密。base64加密属于可逆性的加密,意思就是既可以加密,也可以解密。而MD5加密属于不可逆性的加密,只能够给我们提供加密的方式,却没有解密的方式,一般情况多应用与登录注册界面。

阅读全文

Base64

一. Base64编码由来

为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情 况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码应运而生,Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法。

阅读全文

Java Web 网站架构搭建的技术演进

初始搭建

最开始,就是各种框架一搭,然后扔到 Tomcat 容器中跑,这时候我们的文件、数据库、应用都在一个服务器上。

阅读全文

Android so的热升级

一、so的热升级尝试

在Android代码中,加载so库是通过调用System.loadLibrary函数实现的。但和Android的许多特性一样,只提供了加载,而没有卸载和更换等功能。为了研究能否实现卸载和升级等功能,首先要了解清楚JNI so加载的流程。网上有很多加载流程的解析,例如《Dalvik虚拟机JNI方法的注册过程分析》这篇文章中分析出的流程:

阅读全文

使用 Image Loader 和自定义 schema 加载特殊来源的图片

Image Loader 一般拿来加载哪些图片?

不管是早期的 Universal-Image-Loader,还是后来的 Picasso,Glide 以及 Fresco,它们都是很优秀的图片加载库,我们可以很轻松地通过它们来加载各种网络图片(http://, https://),甚至是从

阅读全文

观察者模式、Reactor模式和Proactor模式

观察者模式:

  也可以称为为 发布-订阅 模式,主要适用于多个对象依赖某一个对象的状态并,当某对象状态发生改变时,要通知其他依赖对象做出更新。是一种1对多的关系。当然,如果依赖的对象只有一个时也是一种特殊的一对一关系。通常,观察者模式适用于消息事件处理,监听者监听到事件时通知事件处理者对事件进行处理(这一点上面有点像是回调,容易与反应器模式和前摄器模式的回调搞混淆)。

阅读全文

高性能IO模型浅析

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种

  • (1)同步阻塞IO(Blocking IO):即传统的IO模型。

  • (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。

阅读全文

Nginx快速入门之基本原理篇

Nginx快速入门之配置篇

阅读全文

Nginx + Tomcat 实现动静分离

目的:

nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能。

阅读全文