自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte 0x2d

bug 描述 :cordova项目 ,名字字段中使用了输入法中自带的表情文件,在网站上一切正常,同步到sqlite数据库的时候会显示乱码。同时一旦对该条数据进行查询操作,就会导致程序奔溃。Modified UTF-8 所谓的MUTF-8编码,其实是对UTF-16字符编码的再编码。 如果你的Android App里用了C++代码去处理一些字符, 可能会遇到崩溃inpu...

2019-07-16 16:25:01 2685

原创 ionic 3 项目 打包release 出现异常transformClassesWithDexForArmv7Release

事件描述: 项目调用了第三方的arr包,同时因为兼容1.8特性,从android6升级到android7;使用ionic打debug包和在Android Studio 中run项目都未发生项目,但当打release包的时候出现问题。耗时很久才找到解决办法。特此记录。 错误日志截图:org.gradle.api.tasks.TaskExecutionE...

2019-05-20 17:12:12 356

转载 MyBatis 源码阅读之旅一

MyBatis 作为一个框架,通过框架配置文件configuration.xml为框架的运行设置相关参数。 正如入门文档中开篇所说:Building SqlSessionFactory from XML ,源码阅读也从实际使用出发,即构建SqlSessionFactory并读取XML中的配置参数官方入门文档又给出使用示例:String resource = "org/mybatis/e

2018-01-29 15:58:48 148

转载 线程基础:线程池(7)——基本使用(下)

(接上文《线程基础:线程池(6)——基本使用(中)》,我要加快进度,以便在2月份恢复“系统间通信技术”专栏的写作)5、扩展ThreadPoolExecutor线程池实际上JAVA中提供的ThreadPoolExecutor线程池是鼓励各位程序员进行扩展的(虽然大多数情况下您无需扩展),并且JBOSS(Netty)、Apache(Camel)也正是这样在做。下面我们看看一些由ThreadPo

2018-01-25 13:49:27 197

转载 线程基础:线程池(6)——基本使用(中)

(接上文:《线程基础:线程池(5)——基本使用(上)》)3-4、JAVA主要线程池的继承结构我们先来总结一下上文中讨论过的内容,首先就是JAVA中ThreadPoolExecutor类的继承结构。如下图所示:ThreadPoolExecutor:这个线程池就是我们这两篇文章中介绍的重点线程池实现。程序员可以通过这个线程池中的submit()方法或者execute()方法,执

2018-01-25 13:48:02 149

转载 线程基础:线程池(5)——基本使用(上)

1、概述从本文开始,我将用两篇文章的篇幅,为各位读者呈现JAVA中原生的线程池技术。第一篇文章,我将讲解JAVA原生线程池的基本使用,并由此延伸出JAVA中和线程管理相关的类结构体系,然后我们详细描述JAVA原生线程池的结构和工作方式;第二篇文章,我们将继续深入,讲解JAVA原生线程池的高级特性,包括Thread工厂、队列、拒绝原则、钩子和相关工具类。如果您是JAVA语言的初学者,请从本篇

2018-01-25 13:46:45 151

转载 线程基础:线程(4)——JAVA中的基本线程操作(下)

(接上文《线程基础:线程(3)——JAVA中的基本线程操作(中)》)2-2、interrupt信号interrupt,单词本身的含义是中断、终止、阻断。当某个线程收到这个信号(命令)的时候,会将自生的状态属性置为“interrupted”,但是线程本身并不会立刻终止。程序员需要根据这个状态属性,自行决定如何进行线程的下一步活动。2-2-1、interrupt和InterruptedEx

2018-01-25 13:45:56 144

转载 线程基础:线程(3)——JAVA中的基本线程操作(中)

(接上文《线程基础:线程(2)——JAVA中的基本线程操作(上)》)1-4、注意synchronized关键字的使用在前面的文章中我们主要讲解的是线程中“对象锁”的工作原理和操作方式。在讲解synchronized关键字的时候,我们还提到了synchronized关键字可以标注的位置。大家经常看到相当部分的网贴,在它们的代码示例中将synchronized关键字加载到代码的方法体上,然后告...

2018-01-25 13:40:33 118

转载 线程基础:线程(2)——JAVA中的基本线程操作(上)

1、JAVA中线程的状态1-1、#对象锁在JAVA中每一个对象都有一把‘锁’,这个‘锁’可以是开放状态;也可以由某一个线程(或者多个线程)持有‘钥匙’;一旦在系统中某个对象的‘锁’存在至少一把‘钥匙’,那么任何线程操作这个对象,都必须验证是否有‘钥匙’,如果没有则会报IllegalMonitorStateException异常。可是‘锁芯’(对象独占权)只有一个,那么可以打开这把锁的多个‘钥匙’同...

2018-01-25 13:25:52 151

转载 线程基础:线程(1)——操作系统和线程原理

1、概述我在写“系统间通信技术专栏”的时候,收到很多读者的反馈。其中有一部分读者希望我抽空写一写自己关于对JAVA线程的使用经验和总结。巧的是,这个月我所在的技术团队也有很多同事跟我讨论关于JAVA中线程的操作。正好本月我工作也不是很忙,除了继续推进我的重点专栏“系统间通信技术”外,可以更多的空余时间跟各位读者分享自己对JAVA线程技术的理解和使用经验。本人不才,应读者要求新开专栏,与各位读者分享...

2018-01-25 13:23:31 150

转载 架构设计:系统间通信(44)——自己动手设计ESB(5)

接上文《架构设计:系统间通信(43)——自己动手设计ESB(4)》)5-4、ESB-Client端的ActiveBrokerContext本小节开始,我们将按照前文介绍的ESB-Client的核心步骤,一点一点的给出ESB-Client端和ESB-Broker进行交互的核心代码。为了方便在ESB-Client端进行ESB-Broker的交互,我们设计了一个ActiveBrokerConte

2018-01-25 13:20:17 188

转载 架构设计:系统间通信(43)——自己动手设计ESB(4)

============================== 接上文《架构设计:系统间通信(42)——自己动手设计ESB(3)》5、Borker Server选择在本文之前的三篇文章中,我们介绍了自行设计的ESB中间件的顶层设计、介绍了主控服务如何对多个ESB-Brokers动态节点进行日志采集和监控、还介绍了ESB-Broker节点如何进行动态路由定义的加载管理。这篇文章我们主要讨论

2018-01-25 13:19:24 193

转载 架构设计:系统间通信(42)——自己动手设计ESB(3)

==================================================== (接上文《架构设计:系统间通信(41)——自己动手设计ESB(2)》)4-2-3、业务层与Class文件管理zookeeper控制模块的业务相关层(封装层),负责根据Apache Curator层分析好的事件类型、Path Node名称信息、Path Node内容信息,进行Clas

2018-01-25 11:35:48 212

转载 架构设计:系统间通信(41)——自己动手设计ESB(2)

==================================== (接上文《架构设计:系统间通信(40)——自己动手设计ESB(1)》)4、Broker Server设计那么如何赋予ESB中间件原子服务整合、服务路由编排的关键能力呢?读者当然可以自行实现ESB中间件中这两个关键模块的功能,但问题的关键是即使是一个团队负责这部分的开发工作也不可能在短时间内完成该模块的开发,而且功

2018-01-23 11:33:22 321

转载 架构设计:系统间通信(40)——自己动手设计ESB(1)

1、概述在我开始构思这几篇关于“自己动手设计ESB中间件”的文章时,曾有好几次动过放弃的念头。原因倒不是因为对冗长的文章产生了惰性,而是ESB中所涉及到的技术知识和需要突破的设计难点实在是比较多,再冗长的几篇博文甚至无法对它们全部进行概述,另外如果在思路上稍微有一点差池就会误导读者。一个可以稳定使用的ESB中间件凝聚了一个团队很多参与者的心血,一个人肯定是无法完成这些工作的。但是笔者思索再三,

2018-01-23 11:25:54 270

转载 架构设计:系统间通信(39)——Apache Camel快速入门(下2)

======================== (接上文:《架构设计:系统间通信(38)——Apache Camel快速入门(下1)》)4-2-1、LifecycleStrategyLifecycleStrategy接口按照字面的理解是一个关于Camel中元素生命周期的规则管理器,但实际上LifecycleStrategy接口的定义更确切的应该被描述成一个监听器:当Camel

2018-01-23 11:24:27 223

转载 架构设计:系统间通信(38)——Apache Camel快速入门(下1)

======================= (接上文《架构设计:系统间通信(37)——Apache Camel快速入门(中)》)3-5-2-3循环动态路由 Dynamic Router动态循环路由的特点是开发人员可以通过条件表达式等方式,动态决定下一个路由位置。在下一路由位置处理完成后Exchange将被重新返回到路由判断点,并由动态循环路由再次做出新路径的判断。如此循环执行直到动

2018-01-23 11:22:42 263

转载 架构设计:系统间通信(37)——Apache Camel快速入门(中)

========================== (接上文《架构设计:系统间通信(36)——Apache Camel快速入门(上)》)(补上文:Endpoint重要的漏讲内容)3-1-2、特殊的Endpoint DirectEndpoint Direct用于在两个编排好的路由间实现Exchange消息的连接,上一个路由中由最后一个元素处理完的Exchange对象,将被发送至由D

2018-01-23 11:21:14 1137

转载 架构设计:系统间通信(36)——Apache Camel快速入门(上)

1、本专题主旨1-1、关于技术组件在这个专题中,我们介绍了相当数量技术组件:Flume、Kafka、ActiveMQ、Rabbitmq、Zookeeper、Thrift 、Netty、DUBBO等等,还包括本文要进行介绍的Apache Camel。有的技术组件讲得比较深入,有的技术组件则是点到为止。于是一些读者朋友发来信息向我提到,这个专题的文章感觉就像一个技术名词的大杂烩,并不清楚作者的

2018-01-23 11:19:28 377

转载 架构设计:系统间通信(35)——被神化的ESB(下)

2-4、ESB与版本控制企业中的系统集成过程,存在很多非技术因素引起的变化。可能出现的情况是,某个一直能够正常使用的调用功能A,在某一天突然就不能使用了。技术团队和业务团队排查了许久才发现功能A中对某个业务系统的调用接口已经被私自更改(可能只是多传递了一个参数、或者减少了一个参数的传递)。这种情况在现实中经常出现,可能是业务部门出于私利对外屏蔽了这个接口,也可能是技术人员在改动接口时,忘记了这

2018-01-23 11:17:45 230

转载 架构设计:系统间通信(34)——被神化的ESB(上)

1、概述从本篇文章开始,我们将花一到两篇的篇幅介绍ESB(企业服务总线)技术的基本概念,为读者们理清多个和ESB技术有关名词。我们还将在其中为读者阐述什么情况下应该使用ESB技术。接下来,为了加深读者对ESB技术的直观理解,我们将利用Apache Camel一起搭建一个ESB技术的服务实现,虽然这个示例不能把目前主流的ESB服务实现中所有功能模块都保罗进来,但至少可以让读者看到ESB技术核心服

2018-01-23 11:16:25 238

转载 架构设计:系统间通信(33)——其他消息中间件及场景应用(下3)

=================================== (接上文:《架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)》)5-7、解决方案三:非侵入式方案以上两种方案中为了让业务系统能够集成日志采集功能,我们或多或少需要在业务系统端编写一些代码。虽然通过一些代码结构的设计,可以减少甚至完全隔离这些代码和业务代码的耦合度,但是毕竟需要业务开发团队花费精力对这

2018-01-23 11:15:28 180

转载 架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)

5-3、解决方案二:改进半侵入式方案5-3-1、解决方法一的问题所在方案一并不是最好的半侵入式方案,却容易理解架构师的设计意图:至少做到业务级隔离。方案一最大的优点在于日志采集逻辑和业务处理逻辑彼此隔离,当业务逻辑发生变化的时候,并不会影响日志采集逻辑。但是我们能为方案一列举的问题却可以远远多于方案一的优点:需要为不同开发语言分别提供客户端API包。上文中我们介绍的示例使用

2018-01-23 11:13:55 116

转载 架构设计:系统间通信(31)——其他消息中间件及场景应用(下1)

5、场景应用——电商平台:浏览记录收集功能事件/日志收集系统是大中型软件不得不面对的话题。目前第三方业务系统对 事件/日志收集系统 的集成思路主要有两大类:侵入式收集方案和非侵入式收集方案。侵入式收集方案,是指任何需要使用事件/日志收集系统的第三方系统,都需要做有针对的编码工作,这个编码工作或者是新增代码用于调用 事件/日志收集系统 提供的客户端API,又或者是修改已有的代码,以便适应事件/日

2018-01-22 10:56:45 258

转载 架构设计:系统间通信(30)——Kafka及场景应用(中3)

4-5、Kafka原理:消费者作为Apache Kafka消息队列,它的性能指标相当一部分取决于消费者们的性能——只要消息能被快速消费掉不在Broker端形成拥堵,整个Apache Kafka就不会出现性能瓶颈问题。4-5-1、基本使用我们首先使用Kafka Client For JAVA API为各位读者演示一下最简单的Kafka消费者端的使用。以下示例代码可以和上文中所给出的生产者

2018-01-22 10:54:35 169

转载 架构设计:系统间通信(29)——Kafka及场景应用(中2)

4-3、复制功能我们在上文中已经讨论了Kafka使用分区的概念存储消息,一个topic可以有多个分区它们分布在整个Kafka集群的多个Broker服务节点中,并且一条消息只会按照消息生产者的要求进入topic的某一个分区。那么问题来了:如果某个分区中的消息在被消费端Pull之前,承载该分区的Broker服务节点就因为各种异常原因崩溃了,那么在这个Broker重新启动前,消费者就无法收到消息了。

2018-01-22 10:53:10 158

转载 架构设计:系统间通信(28)——Kafka及场景应用(中1)

在本月初的写作计划中,我本来只打算粗略介绍一下Kafka(同样是因为进度原因)。但是,最近有很多朋友要求我详细讲讲Kafka的设计和使用,另外两年前我在研究Kafka准备将其应用到生产环境时,由于没有仔细理解Kafka的设计结构所导致的问题最后也还没有进行交代。所以我决定即使耽误一些时间,也要将Kafka的原理和使用场景给读者详细讨论讨论。这样,也算是对两年来自己学习和使用Kafka的一个总结。

2018-01-22 10:48:09 196

转载 架构设计:系统间通信(27)——其他消息中间件及场景应用(上)

1、概述目前业界有很多消息中间件可供大家选择,主要分为两类:需要付费的商业软件和开源共享的非商业软件。对于商业软件您和您的团队可以选择IBM WebSphere集成的MQ功能,也可以选择Oracle WebLogic集成的MQ功能。本文首先介绍除Apache ActiveMQ以外的两款开源共享的消息中间件产品,然后列举三个实际的业务常见,为读者介绍如何在这些实际业务中使用消息中间件解决问题。

2018-01-22 10:47:08 265

转载 架构设计:系统间通信(26)——ActiveMQ集群方案(下)

3、ActiveMQ热备方案ActiveMQ热备方案,主要保证ActiveMQ的高可用性。这种方案并不像上节中我们主要讨论的ActiveMQ高性能方案那样,同时有多个节点都处于工作状态,也就是说这种方案并不提高ActiveMQ集群的性能;而是从集群中的多个节点选择一个,让其处于工作状态,集群中其它节点则处于待命状态。当主要的工作节点由于各种异常情况停止服务时,保证处于待命的节点能够无缝接替其工

2018-01-22 10:45:43 183

转载 架构设计:系统间通信(25)——ActiveMQ集群方案(上)

1、综述通过之前的文章,我们讨论了ActiveMQ的基本使用,包括单个ActiveMQ服务节点的性能特征,关键调整参数;我们还介绍了单个ActiveMQ节点上三种不同的持久化存储方案,并讨论了这三种不同的持久化存储方案的配置和性能特点。但是这还远远不够,因为在生产环境中为了保证让我们设计的消息服务方案能够持续工作,我们还需要为消息中间件服务搭建集群环境,从而在保证消息中间件服务可靠性和处理性能

2018-01-22 10:44:26 293

转载 架构设计:系统间通信(24)——提高ActiveMQ工作性能(下)

7、ActiveMQ的持久消息存储方案前文已经讲过,当ActiveMQ接收到PERSISTENT Message消息后就需要借助持久化方案来完成PERSISTENT Message的存储。这个介质可以是磁盘文件系统、可以是ActiveMQ的内置数据库,还可以是某种外部提供的关系型数据库。本节笔者将向读者讲解三种ActiveMQ推荐的存储方案的配置使用。如上图2.1的步骤所示,所

2018-01-22 10:43:19 242

转载 架构设计:系统间通信(23)——提高ActiveMQ工作性能(中)

6、ActiveMQ处理规则和优化在ActiveMQ单个服务节点的优化中,除了对ActiveMQ单个服务节点的网络IO模型进行优化外,生产者发送消息的策略和消费者处理消息的策略也关乎整个消息队列系统是否能够高效工作。请看下图所示的消息生产者和消息消费者的简要工作原理图:Producer既是消息生产者,作为一个发送消息的客户端它既可以使用同步消息发送模式,也可以使用异步的消息发送

2018-01-22 10:42:15 110

转载 java 基础总结

一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,

2018-01-22 10:39:40 137

转载 Linux系统最大进程数和单进程最大线程数

一、linux系统支持的最大进程数       限制1:既然系统使用pid_t表示进程号,那么最大进程数不能超过pid_t类型的最大值吧       限制2:使用命令ulimit -u查看系统中限制的最大进程数,我的机器上是65535。/etc/security/limits.conf里面是硬限制,ulimit -u是软限制,内核参数kernel.pid_max也做了限制。

2017-10-24 14:37:21 615

转载 java.rmi.Naming和java.rmi.registry.LocateRegistry的区别

java.rmi.NamingNaming类提供存储和获得“远程对象注册表”上远程对象的引用的方法。“class provides methods for storing and obtaining references to remote objects in a remote object registry. ”Naming 类的每个方法都可将某个名称作为其一个参数,该名称是使用以

2017-10-16 10:25:54 1002

转载 一种改进的OPenCV局部 自适应快速二值化

由于用opencv自带的函数adaptiveThreshold()在光照不均匀的图像中进行二值化时,效果不佳,之后看了Derek Bradley和Gerhard Roth于2007年写的《Adaptive Thresholding Using the Integral Image》,方法简单实现简便且速度较快,本文基于opencv用程序实现了它。其核心思想可以由下面两张图概括,先得到图像中各

2017-10-13 17:08:56 1362 2

转载 基于Token的WEB后台认证机制

几种常用的认证机制HTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放的RESTful API时

2017-03-17 14:27:37 254

转载 WebService之基于REST机制的实现实例(Java版)

WebService之基于REST机制的实现实例(Java版)REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移)。2000年Roy Fielding博士在他的博士论文“Architectural Styles and the Design of Network-based Software Architectures”《体系结

2017-03-15 13:46:06 746

转载 架构设计:系统间通信(22)——提高ActiveMQ工作性能(上)

3、ActiveMQ性能优化思路上篇文章中的两节内容,主要介绍消息中间件ActiveMQ的安装和基本使用。从上篇文章给出的安装配置和示例代码来看,我们既没有修改ActivieMQ服务节点的任何配置,也没有采用任何的集群方案。这种情况只适合各位读者熟悉ActiveMQ的工作原理和基本操作,但是如果要将ActivieMQ应用在生产环境下,上文中介绍的运行方式远远没有挖掘出它的潜在性能。

2017-02-09 15:56:45 212

转载 架构设计:系统间通信(21)——ActiveMQ的安装与使用

1、前言之前我们通过两篇文章(架构设计:系统间通信(19)——MQ:消息协议(上)、架构设计:系统间通信(20)——MQ:消息协议(下))从理论层面上为大家介绍了消息协议的基本定义,并花了较大篇幅向读者介绍了三种典型的消息协议:XMPP协议、Stomp协议和AMQP协议。本小节开始,我们基于之前的知识点讲解这些协议在具体的“消息队列中间件”中是如何被我们操作的。由于本人在实际工作中经常使用

2017-02-09 11:32:32 216

高并发高流量网站架构

高并发,高流量网站架构要点, 1:互联网的发展  2:镜像网站技术  3:应用层分布式设计  4:服务器优化  5:应用程序层优化  6:数据库选择  7:扩容、容错处理 

2018-11-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除