开源中国 2018 年度最后一场技术盛会邀你来约~错过就要等明年啦!点此立即预约

helyho / VoovanJavaApache-2.0

指数
0
Watch 241 Star 670 Fork 170
2017-08-18 12:26
116083_helyho helyho

本次更新带来: 44项新增内容, 76项优化内容, 39项问题修复

Voovan 3.0.0 新特性:

Web模块:

  • WebServer 对注解形式路由的支持, 类似一个轻量化的 Spring MVC
  • WebServer 增加热部署支持, 修改类和 jar 中的类,无须重启 web 服务
  • WebServer 增加扫描新类和 jar 到 ClassPath 的支持,新增类和 jar 无须重启 web 服务
  • WebServer 路径变量抽取算法优化, 以获得性能提升
  • WebServer 路径变量支持通过'_' 和 '-' 来进行变量分
  • WebServer 实现基于 redis 的 session 共享形式的集群
  • WebServer 提供对基于 Websocket 协议的 socket.io 和 engine.io 的支持

Network 模块:

  • 提高了 Voovan 对于并发性能的支持,测试结果并发性能提升为10%-15%
  • 优化ByteBufferChannel增加 shrink \ read \ write 的通用方法
  • IoSession 的状态模型重构
  • 增加心跳控制

Common 模块:

  • 新增时间轮定时任务,并且支持异步任务的方式,Voovan 内部所有定时器全部都替换为时间轮的方式,以提升性能

  • 增加了动态编译以及沙盒对于加载类的安全控制

    - 动态类的的支持,参见:org.voovan.tools.compiler.clazz.DynamicClass
    - 动态函数的的支持,参见:org.voovan.tools.compiler.function.DynamicFunction
    - 动态编译部分的沙盒安全支持: /Voovan/Common/src/main/resources/sandbox.properties
    
  • 提供通用的热部署支持,使任何 JVM 应用都能够支持热部署, 参见: org.voovan.tools.hotswap.Hotswaper

更新详情

  • 新增

    • add: 为 WebServer 增加 --config 参数,用于指定配置文件
    • add: 增加了org.voovan.http.server.RedisSessionContainer类用于启动 Redis 进行 Session 共享
    • add: 基于 Redis 的 Map 简单实现,key 和 value 都是 String 类型
    • add: 为注解路由增加了单例模式的通过@router (singleton = true)可将路由对象设置成单例模式
    • add: 注解路由新增 Body 以便在 Restfu 开发中,可以直接取请求的报文
    • add: WebServer对注解形式路由的支持, 类似一个轻量化的 Spring MVC
    • add: WebContext新增RouterScanPackage配置,用于指定扫描注解路由的包
    • add: WebServer 增加热部署支持 add: WebServer 增加扫描新类和 jar 到 ClassPath 的支持
    • add: TEnv 新增 getClassModifyTime方法
    • add: HttpDispatcher增加getRoutes方法
    • add: WebSocketDispatcher增加getRoutes方法
    • add: WebServer增加getHttpRouters/getWebSocketRouters两个方法
    • add: WebServer增加isServing判断监听是否正常
    • add: 增加 WebServer 通过配置方式配置 WebSocket 路由支持
    • add: TString 增加 doRegex 方法,返回正则的 Matcher 对象
    • add: WebServer的路径变量支持通过'_' 和 '-' 来进行变量分割
    • add: TString 增加 doRegex 方法,返回正则的 Matcher 对象
    • add: WebServer的路径变量支持通过'_' 和 '-' 来进行变量分割
    • add: 增加时间轮定时任务功能HashWheelTimer
    • add: 时间轮定时任务增加了异步任务的方式
    • add: 增加 engine.io 的支持 add: 增加 socket.io 的支持
    • add: 增加 TString.split 解决原生类对于两个分割符,无法分割出有效数据的问题
    • add: 增加了热部署的支持
    • add: 增加了沙盒对于加载类的安全控制
    • add: SandboxControler和SandboxSecurity类为动态编译部分提供沙盒进行安全性加强
    • add: 为动态编译的内容增加了沙盒进行安全控制
    • add: 增加了DynamicCompilerManager用来对动态类和动态函数进行管理
    • add: 增加了不同名称动态函数的相互引用
    • add: TString 增加了快速替换方法 fastReplaceAll
    • add: 增加 WebSocketFilter 类, 为 WebSocket 的异步通信增加过滤器的支持
    • add: 增加 WebSocketFilter 类的 字符串实现 StringFilter 类
    • add: 将 WebSocket 通信进行抽象化,抽象出 WebSocketSession,新增WebSocketSession类
    • add: 为WebServer增加非阻塞启动方法 syncServe
    • add: AioServerSocket, NioServerSocket, UdpServerSocket提供非阻塞的 syncStart 方法
    • add: IoSession 增加getAttributes方法,用于获取全部属性
    • add: 为DynamicCompiler类新增getClazz放用于获取在内存中编译的源码的 Class 对象
    • add: 新增 DynamicClass 类,用于动态编译 class
    • add: 为 DynamicFunction 新增增加预导入包功能
    • add: 为 DynamicFunction 新增包定义功能
    • add: 为 DynamicFunction 新增是否启动代码中的类导入功能的配置,用以增强安全性
    • add: 为 DynamicFunction 增加脚本文件的支持
    • add: 为 DynamicFunction 脚本文件增加在动扫描并重新编译的支持
    • add: 新增动态函数调用类 DynamicFunction
    • add: Complier.getDiagnostics 来获取诊断信息
  • 优化

    • imp: 修复了WebServerHandler在扫描过程中的空指针的问题
    • imp: 注解路由测试类注释优化
    • imp: 将注解路由重构成模块的形式
    • imp: 兼容 SIO 解析时没有消息序号导致的异常
    • imp: TFile的scanJar/scanFile 方法优化
    • imp: TEnv的getDirectorClass/getJarClass 方法优化
    • imp: HttpDispatcher 异常信息对换行进行 HTML 化处理
    • imp: HttpRequest的parameters属性为了保证参数的顺序修改成LinkedHashMap类型
    • imp: 类 Hotswaper 优化
    • imp: HttpDispatcher的Comparator导致的查找等动作的异常
    • imp: WebSocketDispatcher的Comparator导致的查找等动作的异常
    • imp: 优化TEnv的getJarClass/getDirectorClass方法
    • imp: 优化 scanFile 对于匹配的正则为空的优化
    • imp: 优化TReflect.isSystemType方法
    • imp: TReflect增加classChecker,用以检查类的是否继承某个类,实现某个接口, 以及采用了那个注释
    • imp: WebServer的路径变量抽取算法优化
    • imp: WebServer的路径变量抽取算法优化
    • imp: 修复 javadoc 问题
    • imp: 将 TFile.getJarClass/getDirectorClass/searchClassInEnv三个方法移动到 TEnv
    • imp: 将 TEnv.loadBinary/loadJars 合并到 addClassPath 方法 add: TEnv 新增classToResource/resourceToClass方法,用户将资源路径和类限定名直接进行转换
    • imp: 优化 WebServer 会话性能
    • imp: 优化 WebServer 中的定时器配置
    • imp: 优化 HttpMessageSplitter,并进行了非 Http 请求丢弃的处理
    • imp: 优化 HashWheelTask,增加 cancel 方法,用于取消任务
    • imp: 将Voovan 中所有的定时任务采用HashWheelTimer取代,提升性能
    • imp: 初步实现了一个 HashWheelTimer
    • imp: 为 engine.io 和 socket.io 增加 getEIOSession 和 getSIOSession 方法
    • imp: 去除WebSocketRouter中无用的 WebSocketSession 参数
    • imp: WebSocketSession增加getLocation和 getHttpSession 方法
    • imp: 修复 ByteBufferChannel 重构后的异常
    • imp: 优化ByteBufferChannel增加 shrink \ read \ write 的通用方法
    • imp: 异步通信框架reStart方法重命名为restart, 并新增了RestartException异常 imp: IoSession 的状态模型重构
    • imp: 优化了 Socket 服务接受连接时的性能
    • imp: 优化了创建 Socket 时的性能
    • imp: 优化了 WebServer 对于路径的匹配规则
    • imp: 使整个 Voovan 功能能够无修改在 JDK1.7下编译通过
    • imp: 优化了 WebServer 对于路径的匹配规则
    • imp: 使整个 Voovan 功能能够无修改在 JDK1.7下编译通过
    • imp: 优化WebServer对路径的判断逻辑
    • imp: HttpClient 的 WebSocket 优化
    • imp: 异步通信的同步handler(SynchronousHandler)优化
    • imp: 为 UdpServerSocket 接受的连接增加 onConnect 和 onDisconnect 事件
    • imp: 优化 WebSocket 的过滤器
    • imp: 深度性能优化,并发能力大幅度提升
    • imp: ByteBufferChannel.get方法 修改成 jdk 惯用方法
    • imp: 优化异步高并发通信性能
    • imp: 增加 AioSocket/NioSocket/UdpSocket 的 reStart 方法用于重连当前连接
    • imp: 增加心跳控制
    • imp: 规整所有的编码操作到 EventProcess.sendMessage
    • imp: 增加了 onIdle 事件
    • imp: 对于热部署的监控范围控制在 JVM 加载的内容,提高效率
    • imp: 热部署增加对 jar 包内变更文件的部署
    • imp: 优化了日志排版,增加了对前景北京颜色的配置支持
    • imp: 优化 TReflect.invokeMethod 返回范型 imp: 优化 DynamicCompilerManager 返回范型
    • imp: 优化了日志 Logger.simple的展示效果
    • imp: 优化了 MultiMap 为线程安全
    • imp: TEnv.loadBinary 关于 ClassLoader 的选择
    • imp: 移除 TFile.scanFile 的异常
    • imp: 动态编译使用独立的 ClassLoader
    • imp: Logger 中对于异常显示修改成有异常描述的进行输出
    • imp: 为了解决长连接连接数的限制,增加了线程池线程数量的设置
    • imp: 优化了WebSocket发送时的异常处理
    • imp: 为 WebSocket 增加会话属性
    • imp: 为 WebSocket 增加getRemoteAddres() 用以获取对端 IP
    • imp: 为 WebSocket 增加getRemotePort() 用以获取对端端口
    • imp: 优化了异步通信的模型,对发送部分进行优化
    • imp: 对应 WebSocketDispatcher 进行了优化创建事件触发函数
    • imp: 规整了日志代码
    • imp: HttpClient 对于WebSocket连接包的支持
    • imp: 优化了DynamicClass.java的 getName 方法,用于获取完名称标定动态编译的 class
    • imp: 重构 WebServer 一些状态参数的代码, 使其统一便于维护
    • imp: 优化 DynamicFunction 文件构造函数不在传入命名,直接使用文件名作为名称
    • imp: 修改 org.voovan.tools.compiler 为 org.voovan.tools.compiler
    • imp: 优化 DynamicFunction.addPrepareArg 方法参数类型使用 Class 来表示
    • imp: 修改DynamicFunction类的包路径
    • imp: Complier 重命名 DynamicCompiler
    • imp: 优化了 JavaMemClass的读取类进 JVM 的方法

修复

  • fix: 修复 TreeMap.containsKey 的 bug
  • fix: 修复TrasnferSplitter类名的拼写错误
  • fix: 修复TrasnferSplitter类名的拼写错误
  • fix: 修复了 UDP 通信在本次优化中出现的 bug
  • fix: 优化sessionTimeout设置小于0没有判断带来的
  • fix: imp: WebServerConfig增加hotSwapInterval/scanRouterInterval/scanRouterPackage三个属性,说明请查看/conf/web.json
  • fix: TString的 toObject 方法在使用基本类型时返回 null 的问题
  • fix: 修复loaclAddress拼写错误,修正为localAddress
  • fix: 修复了心跳在并发时出现的消息异常的问题
  • fix: 修复了putValue每次都新建一个 List 的问题
  • fix: 修复 WebServerFilter 的 ByteBufferChannel已释放导致的异常
  • fix: 修复 WebSocket 心跳消息线程不释放导致的异常
  • fix: 修复 HttpDispatcher 和 WebSocketDispatcher 相同长度路由会覆盖旧路由的问题
  • fix: 修复WebSocketFrame.toString 方法的
  • fix: TByteBuffer.moveData的异常
  • fix: 修复了 SSL 下心跳不正常的问题
  • fix: 修复了 TByteBuffer.indexOf 会导致 ByteBuffer 数据发生改变的问题
  • fix: 修复了心跳类的取失败次数的函数的拼写错误 优化了日志类
  • fix: 修复 HttpParser 部分 情况下解析完成后没有清理尾部标识的 bug
  • fix: 处理 onRecive 被连续触发的问题
  • fix: enabledMessageSpliter(true) 还会触发 onRecive 事件的问题
  • fix: 修复 ByteBufferChannel.get方法的异常
  • fix: 修复了 SSL 读取大包时的问题
  • fix: 修复 NIO 下不停触发 IDLE 事件的问题
  • fix: 修复写入文件也带有作色信息,除了给控制台的输出,其他全部都没有作色信息
  • fix: 按照 Maven 和 javadoc 修复一些次要异常
  • fix: 修复了总包不能作为 JavaAgent 的问题
  • fix: 修复反射中newInstance和 invokeMethod 对于参数为空的异常处理
  • fix: 修复 TSQL.getSQLString函数的空值问题
  • fix: 修复异步通信因尝试关闭导致的死循环
  • fix: 修复 WebSocket 的 PONG 响应的性能问题
  • fix: 修复同步启动,后发送消息是 SSL 的握手并未完成的 bug,现在的同步启动会等待 SSL 完成握手
  • fix: 修复 WebServer 的空指针异常
  • fix: SSL通信因为握手和发送消息异步,导致的握手失败问题
  • fix: HttpClient WebSocket 在 统一状态参数码后不能正常工作的问题
  • fix: 修复 HttpClient 收到 ping 后发送的 pong 数据不带标签的问题
  • fix: 修复ByteBufferChannel.readLine 在连续两个\n 换行导致的死循环问题
  • fix: 修复Complier.getClassNameFromCode 对于继承类或者实现接口时解析异常的问题
  • fix: 修复 TReflect.invokeMethod 对 null 参数不支持的问题
  • fix: 修复 TReflect.invokeMethod 对 byte[] 参数不支持的问题
  • fix: TString.fastReplaceAll关于替换字符串的 bug
最后提交信息为: 更新 Readme.md
2017-06-30 13:27
116083_helyho helyho

####新增

  • add: 增加 t-io 并发性能测试用例
  • add: 增加WebServerRouter.isConnected 方法
  • add: 为WebSocketRouter类增加 send(ByteBuffer byteBuffer)方法

####优化

  • imp: Websocket 不采用 keepalive 控制
  • imp: 优化了WebServerHandler对于, 主动对前段发起 PING 消息
  • imp: 优化了WebServerHandler对于 WebSocket PING-PONG的逻辑
  • imp: WebSocketRouter增加了persistent方法,可获得WebSocketRouter对象.可用来做群发广播等操作
  • imp: 优化 异步通信中在发送消息是判断是否 rewind bytebuffer 的问题

####修复

  • fix: 修复 Cookie 中 URLEncode 的问题
  • fix: tokenReplace增加以 List 为参数的方法
  • fix: 修改基本方法tokenReplace 为 oneTokenReplace
  • fix: 修复线程池无限制增大的 bug
  • fix: 修复前端关闭后段不触发 onClose 的问题
  • fix: 修复 WebSocket 意外关闭还出发 onSent 的问题
  • fix: 修复异步通信意外关闭出发两次 onClose 的问题
  • fix: 修复 WebServer 的 WebSocket 在 onOpen 事件返回的数据不会被返回到前端的问题
  • fix: 修复 WebServer 的 WebSocket 发送后不触发 onSent 的问题
  • fix: 修复WebSocketRouter重复调用导致的session断开的问题
  • fix: 修复WebServer的 WebSocket 在 onOpen 事件返回的数据不会被返回到前段的问题
最后提交信息为: v2.0.2
2017-06-27 01:49
116083_helyho helyho

####新增

  • add: 为WebSocketRouter类增加 send(ByteBuffer byteBuffer)方法,用于随时向浏览器发送消息
  • add: 增加了异步通信的 setOption 方法,来指定配置参数
  • add: 增加Cipher类,用于处理消息加密解密
  • add: 增加 HttpRequest.saveUploadedFile方法,用于快速保存上传的文件
  • add: 增加 Part 基于文件对象参数的构造方法
  • add: 增加 HttpClient.uploadFile 方法
  • add: 增加 Body.changeToFile方法,基于文件对象参数

####优化

  • imp: 优化 DataBase 在 Debug 模式下输出完整的被调用的 SQL 信息
  • imp: 优化 ObjectPool 扫描可移除对象的方法
  • imp: 优化了 Web 的测试代码包的问题
  • imp: 线程池自动管理算法优化
  • imp: 优化了 MessageLoader 对关闭的处理.
  • imp: 优化了 SocketContext 的三个子类中在关闭时对未处理完成消息继续处理的支持
  • imp: 优化了异步通信代码,没有使用 SSL 时,减少内存申请
  • imp: 优化了 ByteBufferChannel 的性能
  • imp: 新增 ID 生成器类, 参考 snowflake 算法,修改后的方法
  • imp: 调整了radixConvert的字符集,默认16进制都是大写
  • imp: 优化 HttpClient.send 方法
  • imp: 优化短 UUID 的算法使用62位方式从32位缩短至24位,并且唯一性效果同 UUID 一致
  • imp: 优化 WebServer 对 gzip 的判断,如果配置中启用了 gzip,则通过请求的Accept-Encoding自动推断是否启动 gzip 以兼容一写老旧的框架.
  • imp: Response 的 isCompress 默认值调整为 false
  • imp: 优化了异步框架send操作改为异步形式
  • imp: 优化了异步框架的性能
  • imp: 优化了 WebServer 的 Session 清理
  • imp: 优化了 Logger.error 的错误输出
  • imp: 优化 SSLParser.doHandShakeUnwarp方法效率
  • imp: 优化了 SSL 连接因 mac 地址不匹配的问题导致 bug
  • imp: 完善 maven 的脚本配置
  • imp: 优化了 Http 消息分割器
  • imp: 优化了Http 消息粘包处理算法

####修复

  • fix: 修复WebServer的 WebSocket 在 onOpen 事件返回的数据不会被返回到前端的问题
  • fix: 修复 AioSocket 作为客户端使用时出现的线程未释放的问题
  • fix: 修复了拆分模块后 web 配置文件中 测试 https 的证书路径问题
  • fix: 修复了 MessageLoader.read 在 loadStream 时不处理消息分割默认返回 null, 从而导致连接关闭 的 bug.
  • fix: 修复 ByteBufferChannel.saveToFile 中锁的关闭问题
  • fix: TString.toObject对非范型和标准 java 类型则默认返回当前值
  • fix: TReflect.getObjectFromMap对于没有明确指定范型的采用 Object 作为类型
  • fix: 修复了 Windows 下的操作异常
  • fix: 修复了 MesssageLoader 因 UDP 的 isConnected 始终为 false 导致的 判断连接状态的异常
  • fix: Web服务释放超时 session 时的异常
  • fix: 修复 ByteBufferChannle.getBytebuffer 方法释放所的问题
  • fix: 修复 ByteBufferChannle.compact 方法释放所的问题
  • fix: 修复了 Windows 下的操作异常
  • fix: 修复了 websocket 连续发布无法正常解析的 bug
  • fix: 优化了 MessageLoader 的 STREAM_END 的异常
  • fix: 修复Network测试代码
2017-06-12 12:28
116083_helyho helyho

####新增

  • add: 增加TReflect.getObjectFromMap对基本类型的自动转换支持
  • add: 增加TReflect.invokeMethod 对方法参数范型类型转换的的支持

####优化

  • imp: 优化了异步框架send操作改为异步形式
  • imp: 优化了 Logger.error 的错误输出
  • imp: 优化 SSLParser.doHandShakeUnwarp方法效率
  • imp: 优化了 SSL 连接因 mac 地址不匹配的问题导致 bug
  • imp: 完善maven 的脚本配置
  • imp: 优化了Http 消息粘包处理算法
  • imp: 优化 TString.toObject 对范型类型转换的的支持
  • imp: 优化 JSON.toObject 对范型类型转换的的支持
  • imp: 优化 JSONDecode.fromJSON 对范型类型转换的的支持
  • imp: 优化了 Http 消息分割器

####修复

  • fix:修复Network测试代码
  • fix: 修复 HttpClient 连续请求只有第一个请求成功的bug
  • fix: 修复 Http POST/MUTILPART请求服务端解析异常的 bug
  • fix: 优化了 MessageLoader 的 STREAM_END 的异常
  • fix: 修复了 websocket 连续发布无法正常解析的 bug
  • fix: Web服务释放超时 session 时的异常
  • fix: 修复 ByteBufferChannle.getBytebuffer 方法释放所的问题
  • fix: 修复 ByteBufferChannle.compact 方法释放所的问题
  • fix: 修复了 Windows 下的操作异常
  • fix: 修复了 MesssageLoader 因 UDP 的 isConnected 始终为 false 导致的 判断连接状态的异常
  • fix: 修复了 Windows 下的操作异常
  • fix: 修复TReflect.invoke/newInstance因业务异常导致的不断寻找对应方法的 bug
最后提交信息为: v2.0.1
2017-06-01 13:03
116083_helyho helyho

####新增

  • add: 为SessionManager增加定时清理 session 的功能
  • add: 增加HttpSession.containAttribute方法用于判断属性是否存在
  • add: TReflect.allocateInstance 构造一个对象,无须任何参数
  • add: 增加Formater.getLogLevel,返回可用的日志等级
  • add: 增加Logger.isLogLevel来判断是否包含指定的日志等级
  • add: TSQL对于参数是用户自定义的类型或者是无法直接保存进数据库的类型,转换成 JSON 进行保存
  • add: TReflect.isBasicType方法用来判断是否是可自动装箱的基本类型
  • add: TReflect.isSystemType方法用来判断是否是jdk 中定义的类
  • add: TReflect.getObjectFromMap支持属性内容为JSON字符串的自动转换成字符串类型,如:属性为 Map 类型,而mapArg参数对应的为 String类型的数据 则自动通过 JSON转换成Map对象
  • add: 增加TString.generateShortUUID获取短 uuid
  • add: 增加TFile.getFileName获取文件名

####优化

  • imp: 默认 access.log 为 false
  • imp: 优化导入
  • imp: TFile.getFileFolderPath 重命名 TFile.getFileDirectory
  • imp: 增加 TFile.mkdir 方法
  • imp: 对 TObject.arrayToMap 采用范型
  • imp: 增加 TString.tokenReplace 不定个数参数的方法
  • imp: 对 TString.toObject 采用范型
  • imp: 优化ByteBufferChannel的锁机制
  • imp: 优化WebServerHandler中连接保持功能的内存消耗
  • imp: 为 TReflect.newInstance方法支持增加类不包含无参数构造函数的实例化
  • imp: TReflect.getMapfromObject 转换复杂类型的 bug
  • imp: getAttributes 重命名为 getAttribute,更符合字面义
  • imp: 修复TReflect.getObjectFromMap日期类型转换问题
  • imp: 修复TReflect.isExtendsByClass判断异常的问题
  • imp: 优化 JdbcOperate 的日志输出
  • imp: 优化了 JdbcOperator 的正则判断

####修复

  • fix: 修复嵌入模式 Access.log 设置为 false 不生效的问题
  • fix: 修复WebServer 的 Session 清理 bug
  • fix: 修复因高并发情景下零时文件重名带来的问题
  • fix: 优化 Http 服务缓存, 请求响应结束后自动清理当前请求的缓存
  • fix: 修复 JSON.parse对注释中的字符串处理的 bug
  • fix: 修复 TReflect.isBasicType 的 bug
  • fix: 修复 HttpResponse.redirct方法的 bug
  • fix: 处理Request发送请求时的bug
  • fix: 修复WEB 访问静态文件偶尔会多发送内容的 bug
  • fix: 修复 TFile.loadFile 没有检查文件大小的 bug
  • fix: 修复查找属性和方法在没有找到时没有按照约定返回Null,而且还抛出了异常的bug
  • fix: 修复TReflect.invokMethod自动选择方法时由于参数转换异常导致在参数不准确的时候就退出方法寻找的的 bug
  • fix: 修复TReflect.findMethod/findField 无法找到父类的方法的 bug
最后提交信息为: V1.5.3
预览版本
2017-05-09 17:10
116083_helyho helyho

####优化

  • TReflect增加getActualType为getGenericClass方法,用于获取范型类型
  • 优化TReflect的getObjectFromMap方法,使其支持递归的范型处理
  • 增加TReflect.java对 jdk1.7的兼容行
2017-05-03 18:41
116083_helyho helyho

####新增

  • add: 增加TObject.mapKeyToList方法

####优化

  • imp: 除测试代码外所有均可通过jdk7编译
  • imp: 优化类型判断

####BUG修复

  • fix: 修复因 JDK 无法活的 cpu 核心数导致的线程池初始化问题
  • fix: 修复单独使用AioSocket导致的线程池泄露问题
  • fix: 修复TReflect.invokeMethod对参数类型为 Object 和范型类型所导致的类型不匹配无法反射调用到方法的 bug
  • fix: 修复TReflect取Field和 Method 参数的范型类型时因范型类型带有范型而导致的异常
  • fix: 修复JSONPath.listObject对 java 基本类型支持的 bug
  • fix: 修复在 STREAM_END 时没有自动关闭连接的问题
  • fix: 放弃 SocketDisconnectByRemote 异常,改用 StopType.STEAM_END
  • fix: IoSession.syncRead方法,修改为数据优先,异常后处理.避免数据为处理完成因异常终端
  • fix: 修复Socket 因远端关闭带来的消息读取不全的问题
  • fix: 修复HttpClient.loadStream 读取消息异常的问题
  • fix: 修复 TReflect.getObjectFromMap方法对抽象类和接口,使用默认构造的支持.
最后提交信息为: 更新 pom.xml 升级 maven 插件
2017-04-17 16:42
116083_helyho helyho

####增加的内容

  • add: TByteBuffer 增加释放内
  • add: 增加TrasnferSplitter透传过滤器,没有进行消息分割,收到即发送存函数 imp: 优化 HTTP 报文解析,采用流的形式,节省内存
  • add: ByteBufferChannel新增堆外内存支持手动释放,手动释放可减少 GC 停顿时间,如果不手动释放将会自动释放.
  • add: TFile 增加getLineSeparator(), 获取系统默认的换行符
  • add: TFile 增加getTemporaryPath()方法,获取系统临时文件目录
  • add: ByteBufferChannel 增加 release() 用于手工释放堆外内存.
  • add: 增加 readLine 和 readSplit 方法

####优化的内容

  • imp: 优化反射工具类的性能
  • imp: 优化线程池 imp: 优化异步通信
  • imp: 优化注释并重构
  • imp: 对异步通信的内存进行进一步优化,减少 gc,提升性能.
  • imp: Socket 异步通信优化内存消耗,10w连接通信后,内存控制控制在90m
  • imp: 修复HttpClient.loadStream方法,在连接断开内存释放后抛出异常
  • imp: 优化ByteBufferChannel类的各种操作方法,在内存已释放的情况下抛出MemoryReleasedException异常
  • imp: Socket异步通信优化
  • imp: TReflect 类优化,提升 findField 和 findMethod 的性能.
  • imp: 优化 HTTP 报文解析
  • imp: Socket 通信,如果没有执行分割器的情况下默认分割器由原来的超时分割器 更换到 透传分割器
  • imp: 中间的临时数据的保存都使用堆外内存,减少堆内内存的使用,减少 gc 触发频率
  • imp: 优化 Socket 异步通信,在 socket 关闭的时候使用ByteBufferChannel手动释放
  • imp: 优化 HttpParser 手动释放临时的ByteBufferChannel,减少 GC 停顿时间.
  • imp: 优化 HTTP 报文解析,采用流的形式,节省,支持大文件上传
  • imp: TEnv 中文件操作相关的方法全部移动到 TFile
  • imp: ByteBufferChannel 优化, 并增加 saveToFile 方法
  • imp: 采用 RandomAccessFile 优化 TFile 类
  • imp: 优化 ByteBufferChannel
  • imp: 完成 SSL unwarp 操作的提前,收到消息后直接解析,这样在 session 中访问都是可用的信息.
  • imp: 优化 BytebufferChannel 的异步操作
  • imp: MimeFileRouter类内存优化
  • imp: 优化HttpMessageSplitter的性能,减少对堆内存的消耗
  • imp: 增加 TByteBuffer 的单元测试
  • imp: 优化 reallocate 和 moveDate 方法使其支持两种类型的 ByteBuffer
  • imp: 将 ByteBufferChannel 修改成非堆内存的形式
  • imp: 优化 Socket 通信,确立两种模式[分割器模式, 缓冲区模式]
  • imp: 如果在过滤器的 onRequest 方法中修改了response参数的 body ( 即:response.body().size()>0 ),则不会执行路由处理,整个过滤器执行完成后,返回response.用于对权限控制的处理. imp: Body 对象的 getGZipedBody方法删除.
  • imp: 将getParameterAsObject 重命名为 getAllParameterAsObject, 用于将 HTTP 请求的所有参数, 转换成一个 Java 对象 imp: 增加 getParameterAsObject 用于将 HTTP 请求的一个参数,使用 JSON 转换成一个 Java 对象

####BUG修复

  • fix: 修复 WebsocketParser 后释放 payload 导致的异常
  • fix: 修复 netty 测试用例 bug
  • fix: 修复反射类TReflect的getObjectFromMap方法,对 null 的支持
  • fix: 修复 readHead 和 readEnd 方法写入时没有从dst 对象的 position开始,而是从头开始的问题.
  • fix: 修复演示页面地址.
  • fix: MessageLoader 中对于 useSpliter 的异常
  • fix: HttpClient.loadStream 没有切换导非分割器模式导致的异常
  • fix: JSONDecode 中 字符串扫描结束并未退出循环,导致的死循环问题
  • fix: http post请求参数缺少第一个字母的问题
  • fix: http 使用multipart/form-data提交时 Content-type 中没有 boundary的问题
  • fix: 修复 http 响应在没有报文实体内容时还返回 Chunked,导致的解析异常问题
  • fix: 修复 JSON 解包时到字符串尾部依旧不退出循环的问题 add: 新增特性,过滤器返回位置为0时,不对 bytebufferchannel 的缓冲数据做修改
  • fix: 修复TStream.readLine方法 某些特殊情况会导致死循环的 bug
  • fix: 修复IoSession中 read 方法对于异常处理的 bug
  • fix: 修复ByteBuffer出现的error for object 0x7fb596675380: pointer being freed was not allocated异常 imp: 优化 AioSocket.close 方法对连接状态的判断
  • fix: 移除 IoSession 中 sendSSL 和 readSSL,框架根据通信类型自动选择发送是 ssl 还是直接发送.
  • fix:Body 的 read, compress, free 方法的 bug 处理.
  • fix: ByteBufferChannel不会同 gc 一起被自动释放的问题
  • fix: 修复 EventProcess 没有检查连接状态的bug
  • fix: 修复同步通信的 syncStart 方法执行完成后连接没有连上,导致的通信异常.
最后提交信息为: 更新版本信息
2017-03-15 19:13
116083_helyho helyho

####增加的内容

  • add: ObjectPool增加设置对象超时事件的函数setAliveTime(int aliveTime)
  • add: Netty性能比对测试代码
  • add: WebSocketRoute 增加 close 方法
  • add: WebSocketRoute 增加 onSent 方法
  • add: 为 HTTPClient 的构造方法增加对 ws:// 和 wss://的协议支持
  • add: 为 HTTPClient 增加 websocket 访问方法:connectWebSocket(String urlString, WebSocketRouter webSocketRouter)。

####优化的内容

  • imp: 优化 Socket 通信
  • imp: HttpMessageSplitter 性能优化
  • imp: HttpClient WebSocket 优化
  • imp: 重构了 IoSession fixed: 结局了 TReflect.invokeMethod 抛出的都是ReflectiveOperationException无法取得真实的异常的问题
  • imp: 优化 JSON 对转义字符的支持
  • imp: 直接读取性能优化
  • imp: 优化连接断开后 HttpSession 被释放导致空指针异常
  • imp: 重构从类HttpMessageSplitter中移动isWebSocketFrame函数到类WebSocketTools
  • imp: 重构 WebSocketRoute
  • imp: 修改 WebSocketRouter.onOpen 方法的返回值类型为ByteBuffer。

####BUG修复

  • fix: 修复因 Cookie 头不存在导致的异常
  • fix: 修复同步读导致的线程锁死
  • fix: 修复Connect refuse 导致的超时等待
  • fix: 修复服务端监听不存在时导致一直尝试连接服务端监听的 bug
  • fix: MessageLoader 超时控制,原来是累计超时时间.现在修改为连续读数据异常才会超时.
最后提交信息为: v1.0
预览版本
2017-02-06 18:12
116083_helyho helyho

####增加的内容

  • add: IoSession 和 SocketContext 增加 isOpen方法,用来判断区分连接状态判断对象是否打开
  • add: 消息截断类MessageSplitter 的 canSplite 函数的返回值有 boolean 改为 int 用来控制消息截断的长度
  • add: 反射类 TReflect 增加getAllExtendAndInterfaceClass方法用于一次提取所有父方法和继承的的类
  • add: JSON增加对反射类型的支持
  • add: 增加对象池
  • add: 增加了 MultiMap key 对应 list 值

####优化的内容

  • imp: 增加 TString 新增函数的测试用例a
  • imp: 优化 JSON 解析的异常,对异常进行友好的展示,可以展示出错的 JSON 文本的位置
  • imp: 优化 JSON 解析算法,实现基于字节的一边遍历即可解析出 JSON 数据
  • imp: MessageLoader 最终优化,除了数组扩容,所有的字节数组操作都使用 System.arrayCopy 来提高性能
  • imp: 优化 MessageLoader 的实现,直接使用 session 中的 ByteBufferChannel减少字节操作提升性能
  • imp: 优化 ByteBufferChannel ,采用 Array 操作,大幅度提升性能
  • imp: 为 Socket 增加异步启动方法.
  • imp: TRelfect 优化构造函数,自动识别变量类型,寻找合适参数的方法
  • imp: 代码 sonar 优化
  • imp: 优化TReflect.getObjectFromMap方法,异常信息增加提示
  • imp: 反射 TString.toObject 方法优化
  • imp: 为了支持多机(集群)场景下ObjectPool的混用,将 id 改为 UUID 的形式
  • imp: 增加缓冲池大小的设置
  • imp: 优化异步通信
  • imp: WebServer命令参数修改成 Linux 规范形式
  • imp: 优化了首字母大写的算法
  • imp: PoolObject并发性能优化
  • imp: 优化 TReflect 的 getObjectFromMap 方法优化
  • imp: 优化 TString.toObject 和 JSONDecode.fromJSON方法
  • imp: 内存和性能优化
  • imp: 将 UDP 通信拆分成 UdpServerSocket 和 UdpSocket

####BUG修复

  • fix: 修复 TFile.loadFileLastLines 读取时在读到文件头少了头部的一个字节
  • fix: 修复 UDP 通信的 bug
  • fix: 修复了在连接断开后,HttpSession 并未被从 SessionManager 中移除,导致内存没有被释放
  • fix: JSONDecode 类,对于起始为注释形式的 JSON 解析异常的 bug 处理 imp: 优化getObjectFromMap方法对于属性为 list 或者 map 时出现的类型转换异常
  • fix: HttpParser优化
  • fix: 修复直接读取的 bug
  • fix: 修复TReflect.getObjectFromMap中对 list 处理的 bug
  • fix: 异常优化
  • fix: WebServer模块、过滤器、路由配置加载异常输出错误优化.
  • fix: 修复 JSON 解析嵌套注释时的 bug.
  • fix: JSON 处理修复对注释的支持,原来正则替换注释会导致bug
  • fix: 线程池优化,当在一个进程内开多个 socket 时可能导致线程池提前关闭
  • fix: 将对象转换为JSON时双引号导致字符串违反规范的问题
  • fix: 修复静态资源文件加载失败的问题
  • fix: 反射 TReflect 类中 invokeMethod 方法增加自动通过参数选择方法
  • fix: ObjectPooll使用 hashcode 会出现相同 hashcode 的多个对象,且 hashCode 会发生改变,修改成使用固定增加的 ID 作为唯一标识
  • fix: 静态文件判断对包含文件扩展名的URL导致的路由匹配异常
  • fix: SingleLogger类会new 出多个相同目标文件的线程.
  • fix: 修复 UDP 接受消息异常的问题 EventTrigger 修改成可单元测试的,并优化并发线程模型
  • fix: 修复空指针问题
  • fix: 修复空指针问
最后提交信息为: imp: 参数名称优化
预览版本
2016-12-01 12:29
116083_helyho helyho

####更新内容:

  • TString.toObject 增加对 List 和 Map 的支持
  • 增加 TString toObject 的包装类型的转换
  • 对于请求的 URL 中的变量//为空的进行匹配兼容
最后提交信息为: v1.0-beta3.2
预览版本
2016-11-17 19:04
116083_helyho helyho

####更新内容:

  • 去除JSON.removeNode方法.
  • 将 org.voova.tools.TReflect 移到 org.voova.tools.reflect.TReflect 包中.
  • 为反射类增加序列注解@NotSerialization
最后提交信息为: 1.去除JSON.removeNode方法
预览版本
2016-11-09 17:28
116083_helyho helyho

####增加的内容

####优化的内容

####BUG修复

最后提交信息为: 增加 UDP 异步通信的支持
预览版本
2016-10-27 14:07
116083_helyho helyho

####优化的内容

  • 优化 HttpClient
  • 反射工具类优化
  • NotJSON主机当属性为列表中的第一个元素时在 JSON 字符串中没有去除
  • org.voovan.http.server包重构,类名分类不清晰

####增加的内容

  • HttpServer 增加 命令参数,以便在 Docker 环境中部署可以灵活配置.
  • 增加 jsonpath 的访问支持
  • 本地修改 JSONPath 增加 mapToListObject 方法用来解析动态属性的 map 到对象列表.

####BUG修复

  • 解析 JSON 时 当字符串中出现转意的双引号时解析异常
  • 异步通信框架SendMessageException 和 ReadMessageException 异常隐藏了系统异常的提示信息,无法定位错误.
  • 修复 JSONPath 对数组访问的 bug,并且取消默认 root 作为根节点名称改为/作为根几点名称
  • TReflect.InvokeMethod 方法 存在参数类型是 int 时在寻找方法的时候使用的确实 Interger.class,导致找寻方法失败
  • JSON处理 null 的时候丢弃当前节点
  • HttpServer 路径匹配规则问题
最后提交信息为: 优化 HttpClient
预览版本
2016-09-02 14:57
116083_helyho helyho

###1:HTTP 解析 Chunked 报文异常.0-beta-1:###

  • 发布日期:2016-09-02

####增加的内容:####

  • HttpServer 增加模块功能
  • 在 web.json增加 IndexFiles 参数定义首页索引文件的名称.
  • 增加对HttpServer.socket方法 Stream 操作支持
  • 在 web.json 中对 https 参数独立处理
  • 增加直接将参数转换成自定义对象的方法以及取特定类型参数的方法
  • 在 web.json 中增加路由处理器的配
  • 在 web.json 中修改 Filter 节点名称为 Filters
  • TString 增加正则匹配函数
  • TFile增加了类搜索函数
  • 在 HttpBizFilter 类的 onRequest 方法对请求重定向.
  • JSON 增加格式化输出 JSON 的函数
  • 增加获取自定义对象模型的方法 TRefletc.getClazzJSONModel(Class clazz)
  • 增加基本类型转换成其包装的对象类型方法 TString.toObject
  • HttpServer 增加忽略大小写匹配路由
  • 添加@NotJSON注解,过滤掉一些不想解析进 JSON 字符串的字段

###优化内容:####

  • HttpClient 代码优化
  • 并发性能调优
  • SSL证书管理优化
  • HttpServer加载优化
  • 将HttpServer性能监控模块分离成独立项目
  • 增加Base64算法,应为 jdk1.7不支持
  • 由于增加JSON对换行的支持,性能监控代码做响应的调整
  • 重构HttpServer代码,将配置文件和上下文类移动到 context 目录.
  • 增加 HttpServer 的 main 方法,默认加载 web.json 中的配置信息
  • JSON转换中对\r \n \的处理
  • Socket 通信代码优化
  • 类重命名WebSocketBizHandler->WebSocketRoute
  • 类重命名HttpBizHandler->HttpRoute
  • 类重命名HttpBizFilter -> HttpFilter
  • 将 Http 请求的路径匹配规则修改的更加严格
  • WebContext类何 WebServerConfig 暴露的方法处理,减少了一些可能导致风险的暴露方法
  • 优化 class 和 jar 加载方法
  • WebSocketDispatcher优化
  • 优化 HttpServerFilter 中对HTTP 报文的判断方式的优化
  • Mime 为极少变动的静态信息,调整到应用jar的静态资源中.但同时保留了对自定义配置的支持,自定义配置会覆盖系统默认配置
  • 优化了 Error 的错误信息提示

####BUG修复:####

  • 修复 TZip 中 Zip 压缩的错误
  • 修复 Http 消息截断器对于有保内容不解析的 bug
  • 增加对HttpServer 请求路径中的错误兼容.目前兼容多个/////的错误
  • Mime 类型为空的处理.
  • TRefletc.getObjectFromMap传入空的 Map 参数的处理
  • HttpServer 路径匹配*匹配人多个任意字符的逻辑bug修复
  • HttpServer注册 handler 时的顺序问题
  • 某些平台的默认编码不是 UTF-8导致代码不能正常运行
  • JSON补充缺少的函数元素的解析,解析成字符串
最后提交信息为: pom.xml for beta-1

搜索帮助