就个人理解而言,序列化是对象的一种固化方式,它实现了对象的持久化存储(当然实现方式不同,结果会有所差异).而Android存在两种序列化的方式,一种基于IO流的序列化,实现简单,仅需实现Serializable接口而已,可以不用添加额外的方法,源自Java;另一种就是Android的原生实现方式了,实现Parcelable接口了,相比Serializable方式,实现起来较为复杂.下面将详细介
一、前言Dubbo作为高性能RPC框架,已经进入Apache卵化器项目,虽然官方给出了dubbo使用的用户手册,但是大多是一概而过,使用dubbo时候要尽量了解源码,不然会很容易入坑。二、服务消费端ReferenceConfig需要自行缓存ReferenceConfig实例是个很重的实例,每个ReferenceConfig实例里面都维护了与服务注册中心的一个长链,并且维护了与所有服务提供者的的长链
JDK的源码都没人仔细看吗?我刚开始看JDK-1.8的ConcurrentHashMap的源码,就发现构造函数有问题,给Java提了bug,果然如此。Bug链接:https://bugs.openjdk.java.net/browse/JDK-8202422而且assign给了大神DougLea:我在so上也问了这个问题,有人认为这是一个优化技巧,但在逻辑上有一点说不太通,如果增加一个文档说明,把
之前写过一篇关于配置中心对配置内容加密解密的介绍:《SpringCloud构建微服务架构:分布式配置中心(加密解密)》。在这篇文章中,存在一个问题:当被加密内容包含一些诸如=、+这些特殊字符的时候,使用上篇文章中提到的类似这样的命令curllocalhost:7001/encrypt-d去加密和解密的时候,会发现特殊字符丢失的情况。比如下面这样的情况:$curllocalhost:7001/enc
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。本套课程将带领大家从零开始学习Zookeeper的使用以及部署课程大纲如下:课程介绍基本概念单机部署数据节点权限控制ZK客户端Curator事件监听集
为什么要有文件服务器呢,如果把文件存放到web容器下肯定不是好的办法,因为你时刻需要注意覆盖后文件消失的问题。如果想完全的搬出web容器,项目不大的话我们可以选择ftp+nginx的方式来实现文件服务器。如果文件需求量大点的,建议用分布式文件服务器,它对横向扩展的支持比较好。1.环境准备CentOS搭建ftp服务nginx环境搭建2.开始整合2.1修改nginx.conf我们需要再nginx.co
前言本文接着上文应用限流进行讨论。之前谈到的限流方案只能针对于单个JVM有效,也就是单机应用。而对于现在普遍的分布式应用也得有一个分布式限流的方案。基于此尝试写了这个组件:https://github.com/crossoverJie/distributed-redis-toolDEMO以下采用的是https://github.com/crossoverJie/springboot-cloud来做
什么是HTTP协议?HTTP协议是互联网上最普遍采用的一种协议,用于客户端和服务端通信,处于TCP/IP四层网络分层模型中的应用层。HTTP是一个无状态的协议。HTTPS是一个加密传输的协议。HTTP传输的基本过程在http传输的过程中,客户端向服务器发送一个请求文件。最基本的过程是:1客户端连接一个主机;2服务器接收连接,3客户端请求一个文件,4服务器发送一个应答.从输入URL到加载页面的过程都
本文主要介绍了Java中的回调机制,以及Java多线程中类似回调的机制。具体代码在我的GitHub中可以找到https://github.com/h2pl/MyTech喜欢的话麻烦star一下哈文章首发于我的个人博客:https://h2pl.github.io/2018/04/26/javase9更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net
缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。一、缓存概述缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。1.1缓存的原理(1)      将数据写入/读取速度更快的存储(设备);(2)  &n
本文首发于:https://h2pl.github.io/2018/04/20/blog更多内容请到我的个人博客查看https://h2pl.github.io本文记录了我从Java初学者到专注于Java后端开发技术栈的成长历程,主要是与写博客相关的内容,其他内容还包括实习历程,后端技术学习历程,校招计划等内容,我会陆续发表并且提供链接。Java后端学习之路https://blog.csdn.ne
概述:笔者近期接受一个大数据项目的性能优化,为期两周,2.6万/s的日志处理速度提升至需求目标值5万/s。从整理项目流程阅读代码到性能优化目标实现,整个过程颇多波折。准备记录其间的技术性问题以做总结,希望可以对大家有所助益。part1、你以为的真的是你以为的么---redis数据过期策略项目接手时,项目研发人员X告知的信息,是模块A的实现kafka单一消费者性能不足(其实模块A的原本所需的数据量仅
几大排序算法的Java实现更新中...注:该类中附有随机生成[min,max)范围不重复整数的方法,如果各位看官对此方法有什么更好的建议,欢迎提出交流。各个算法的思路都写在该类的注释中了,同时也方便各位进行本地环境验证。目前已完成的排序算法有:冒泡排序、选择排序、插入排序。暂时只提供这些排序算法的基本版,对算法的改进暂时不做考虑。如果想看的更直观些,欢迎访问一个可视化的排序网站importstat
在分布式系统中,各个子系统、节点之间需要进行及时的数据交换,消息中间件应运而生,现在比较常见的MQ产品主要是ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。消息中间件对比那么这么多的消息中间件之间有什么异同呢?带着这个疑问,阿里中间件测试组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了性能比较,并得出以下结论Kafka是Li
1.使用安装包安装mysql(网上下载实在是太慢了,需要安装包的可以在文章底部留言,我发给您)双击打开安装文件双击pkg文件安装一路向下,记得保存最后弹出框中的密码(它是你mysqlroot账号的密码)正常情况下,安装成功。此时只是安装成功,但还需要额外的配置:(1)进入系统偏好设置(2)点击mysql(3)开启mysql服务将mysql加入系统环境变量进入/usr/local/mysql/bin
之前连续写了几篇关于使用@Async实现异步调用的内容,也得到不少童鞋的反馈,其中问题比较多的就是关于返回Future的使用方法以及对异步执行的超时控制,所以这篇就来一起讲讲这两个问题的处理。如果您对于@Async注解的使用还不了解的话,可以看看之前的文章,具体如下:使用@Async实现异步调用使用@Async实现异步调用:自定义线程池使用@Async实现异步调用:资源优雅关闭定义异步任务首先,我
Netty的简单介绍Netty是一个NIOclient-server(客户端服务器)框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。Netty提供了一种新的方式来使开发网络应用程序,这种新的方式使得它很容易使用和有很强的扩展性。Netty的内部实现时很复杂的,但是Netty提供了简单易用的api从网络处理代码中解耦业务逻辑。Netty是完全基于NIO实现的,所以整个Netty都是
LogoutFilter过滤器对应的类路径为org.springframework.security.web.authentication.logout.LogoutFilter通过这个类的源码可以看出,这个类有两个构造函数这两个构造函数的参数,就是之前解析HTTP标签通过创建LogoutFilter过滤器的bean定义时通过构造参数注入进来的。下面的部分源码为LogoutFilter的bean定
一、前言TCP协议栈中,每层模型都有自己的协议报文格式,TCP协议是网络七层模型中的传输层,在TCP上层是应用层,应用层协议常见的有telnet等,Dubbo协议作为建立在TCP协议之上的一种协议,自然也有自己的协议包格式。二、Dubbo协议格式如下图Dubbo协议也是由header和body两部分组成,header用来存放一些协议信息,body具体存放要传输的经过序列化后的数据。header格式
学习Java的时间也过了这么久了,反射这个名词耳熟于心,在与小伙伴讨论时也能时常提起。说来惭愧,一直以来浮在技术表面,总是以了解了某个新技术的名词为傲,但当被问起其底层实现时却无话可说。为了改变现状,同时记录自己学习过程,希望通过JEESNS这个平台写下自己对技术的认识。接下来这篇文章我将谈谈对反射的认识、反射能获取的信息、反射的应用。那么,让我们开始挖掘反射相关的知识点吧^_^关于反射的理解谈及