首页 文章 精选 留言 我的

精选列表

搜索[java],共10000篇文章
优秀的个人博客,低调大师

Java 开源办公开发平台 O2OA V6.3 发布 | ElementUI 组件上线!

O2OA6.3版本中,新增了一组基于Vue的ElementUI组件,在流程表单设计界面,就可以在左边的工具栏找到ElementUI组件。它能让界面设计更加简洁直观,只需要将对应的组件拖动到表单设计区域就可以创建组件,还能保证产品设计人员搭建逻辑清晰、搭建出结构合理且高效易用的产品。 创建界面的布局容器后,可以选择字段类型组件、自动完成框、计数器、选择框、级联选择器、按钮、通用组件等进行快速搭建,提升设计效率,让界面更加美观,结构更加合理。以日期范围选择器为例,点击"Preview"按钮可预览组件样式: 保存表单就创建了一个用与选择日期范围的组件,组件的值会自动绑定到“v-model”属性指向的key,本例中,选择框的值被绑定到了this.data.value1中。我们再给日期选择框添加一些快捷选项,保存表单后即可看到效果: 除此之外,此次版本在流程管理中新增了onlyoffice控件、wps控件、金格控件、永中控件作为正文控件,支持在线编辑word、excel、ppt、pdf等文件,加强与同事之间的远程协同;新增了LibreOffice预览,满足了用户在线预览各类文件的需求,助力协同办公,实现高效的团队管理。 O2OA V6.3还包含其他的功能更新和问题修正,让平台更稳定,用户操作更方便: 功能新增 [通用]HTML编辑器CKEditor升级到4161,增加了阅读状态的图片延迟加载功能、浏览原图功能。涉及的应用有流程表单、内容管理表单和论坛帖子 [数据中心]新增了查询视图中导出Excel的功能 [内容管理]新增了内容管理文档的操作条中置顶的功能,并为内容管理列表增加置顶标记 [服务管理]新增了服务管理的代理和接口开发界面调试的功能 [流程管理]新增了表单设计界面增加数据模板的时候带入默认相关组件,数据模板导出字段配置自动获取的功能 [流程管理]新增了onlyoffice控件 [流程管理]新增了wps控件 [流程管理]新增了金格控件 [流程管理]新增了永中控件 [流程管理]新增了LibreOffice预览 [移动办公]新增了微信公众号,关注回复的消息的功能 [移动办公]新增了企业微信考勤数据导入查询功能 [移动办公]新增了移动端App支持tokenName修改的功能 [移动办公]新增了移动端App支持通讯录权限控制的功能 [移动办公]新增了移动端App个人信息页面的个人属性展现的功能 [数据库]新增了南大通用GBASE华库数据库支持 [日志]新增了服务器http request access log [流程平台]新增了流程起草权限增加群组设置的功能 [内容管理]新增了根据条件查找附件的接口 [流程平台]新增了流程起草增加权限校验 [人员组织]新增了人员组织管理模块接口mockput和mockdelete [流程平台]新增了待办、待阅根据title查询 [平台架构]新增了平台审计日志自定义程序分析功能 [流程平台]增加了公文编辑器转换Word后加密的功能 [流程平台]增加了公文编辑器加盖图片章的功能 [流程平台]新增了公文编辑器增加标题字体定义的功能 [流程平台]新增了公文编辑器保证版记在偶数页的功能 [流程平台]新增了公文编辑器增加附件内容编辑的功能 [流程平台]新增了公文编辑器增加编辑器属性配置的功能 [平台架构]新增了主菜单排序设置功能,管理员可设置默认和强制方式 [平台架构]新增了一组ElementUI组件 功能优化 [考勤管理]优化了考勤管理界面 [脚本API]优化了脚本API(增加了后台脚本API,增加了发送待阅、添加参阅) [内容管理]优化了内容管理表单事件,增加postSave、 postPublish [内容管理]整理了内容管理操作条的图标 [移动办公]优化了主题切换功能 [移动办公]优化了移动端已阅意见功能支持 [移动办公]O2云连接配置UI修改,以及一些页面功能调整优化 [移动办公]优化了移动端App分享功能 [移动办公]优化了移动端App拍照功能 [服务器]集群增加健康检查 [服务器]优化了线程池 [服务器]优化了缓存机制 [认证]验证码改为全匹配,并更新验证码实现 [内容管理]优化了文档发布消息发送条件,未配置消息类型不往消息处理器发送消息 [人员组织]优化了人员身份唯一编码,使其根据组织编码和人员唯一编码生成 [内容管理]优化了文档权限刷新,增加多线程处理,增加根据文档类型刷新权限 [内容管理]优化了分页查询的查询速度 [内容管理]优化了review表索引,减少不必要索引,增加联合索引 [流程平台]优化了公文编辑器格式展现 [流程平台]公文编辑器粘贴表格时,控制合适的宽度 [流程平台]公文编辑器只有一个附件时不显示序号 [平台架构]修复this.data绑定的Array数据类型问题 [平台优化]基于Authorization请求头的系统认证 问题修复 [流程管理]修复了重置处理人未剔除待办人的问题 [流程管理]修复了人员选择保存范围刷新后变回精简的问题 [内容管理]修复了内容管理设计端语言包上的一些问题 [流程管理]修复了表单Tab组件设置宽度无效的问题 [流程管理]修复了表单中TextArea组件只读时setData的问题 [流程管理]修复了数据表格移动端条目为0时无添加按钮的问题 [移动办公]修复了钉钉、企业微信考勤数据展现的bug [流程引擎]修复了定时节点无法清空已选值的bug [内容管理]修复了文档阅读记录出现cipher用户的问题 [内容管理]修复了根据创建时间查询文档错误的问题 [流程平台]修复了根据状态分页查找work的bug [内容管理]修复了文档保存时未保存置顶信息的问题 [流程平台]修复了执行this.data.save脚本时,在表单未载入完全时,可能造成数据丢失的问题 [平台架构]修复了loadCss方法会多次载入的问题 [流程平台]去除流程启动前和流程结束前两个事件 [平台架构]修复Promise的uncatch错误

优秀的个人博客,低调大师

🏆Java技术专题-JVM研究系列(36) 性能调优之CMS垃圾回收器(上)

前提概要 如果没有冬天,春天不会如此悦人;如果没有偶尔的不幸,幸运不会如此受人欢迎。 CMS垃圾回收的6个重要阶段 initial-mark 初始标记(CMS的第一个STW阶段),标记GC Root直接引用的对象,GC Root直接引用的对象不多,所以很快。 concurrent-mark并发标记阶段,由第一阶段标记过的对象出发,所有可达的对象都在本阶段标记。 concurrent-preclean 并发预清理阶段,也是一个并发执行的阶段。在本阶段,会查找前一阶段执行过程中,[从新生代晋升或新分配或被更新的对象]。通过并发地重新扫描这些对象,预清理阶段可以减少下一个stop-the-world 重新标记阶段的工作量。 concurrent-abortable-preclean,并发可中止的预清理阶段。这个阶段其实跟上一个阶段做的东西一样,也是为了减少下一个STW重新标记阶段的工作量。增加这一阶段是为了让我们可以控制这个阶段的结束时机,比如扫描多长时间(默认5秒)或者Eden区使用占比达到期望比例(默认50%)就结束本阶段。 remark重标记阶段(CMS的第二个STW阶段),暂停所有用户线程,从GC Root开始重新扫描整堆,标记存活的对象。需要注意的是,虽然CMS只回收老年代的垃圾对象,但是这个阶段依然需要扫描新生代,因为很多GC Root都在新生代,而这些GC Root指向的对象又在老年代,这称为“跨代引用”。 concurrent-sweep ,并发清理。 分析 分析其GC日志,发现GC发生在CMS的收集阶段。 箭头1 显示abortable-preclean阶段耗时4.04秒。 箭头2 显示的是remark阶段,耗时0.11秒。 虽然abortable-preclean阶段是concurrent的,不会暂停其他的用户线程。就算不优化,可能影响也不大。 调优之前先看下该应用的GC统计数据,包括GC次数,耗时: 统计期间内(18天)发生CMS GC 69次,其中abortable preclean阶段平均耗时2.45秒,final remark阶段平均112ms,最大耗时170ms。 优化目标 降低abortable preclean时间,而且不增加final remark的时间(因为remark是STW的)。 JVM参数调优 第一次调优 先尝试调低abortable preclean阶段的时间,看看效果。 有两个参数可以控制这个阶段何时结束: -XX:CMSMaxAbortablePrecleanTime=5000 默认值5s,代表该阶段最大的持续时间 -XX:CMSScheduleRemarkEdenPenetration=50 默认值50%,代表Eden区使用比例超过50%就结束该阶段进入remark 调整为最大持续时间为1s,Eden区使用占比10%,如下: -XX:CMSMaxAbortablePrecleanTime=1000 -XX:CMSScheduleRemarkEdenPenetration=10 为什么调整成这样两个值:首先每次CMS都发生在老年代使用占比达到80%时,因为这是由下面两个参数决定的: -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly 这两个设置一般配合使用,一般用于『降低CMS GC频率或者增加频率、减少GC时长』的需求 -XX:CMSInitiatingOccupancyFraction=80 是指设定CMS在对内存占用率达到80%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC); -XX:+UseCMSInitiatingOccupancyOnly :标志来命令JVM不基于运行时收集的数据来启动CMS垃圾收集周期。 当该标志被开启时,JVM通过CMSInitiatingOccupancyFraction的值进行每一次CMS收集,而不仅仅是第一次。(否则后续会动态控制回收阈值) (慎用) 因此,只有当我们充足的理由(比如测试)并且对应用程序产生的对象的生命周期有深刻的认知时,才应该使用该标志。 老年代的增长是由于部分对象在Minor GC后仍然存活,被晋升到老年代,导致老年代使用占比增长的,也就是在每次CMS GC发生之前刚刚发生过一次Minor GC,所以在那一刻新生代的使用占比是很低的。 那么我们预计这个时候尽快结束abortable preclean阶段,在remark时就不需要扫描太多的Eden区对象,remark STW的时间也就不会太长。 第一次调整参数 在统计期间(17小时左右)内,发生过2次CMS GC。Abortable Preclean 平均耗时835ms,这是预期内的。但是Final Remark 平均耗时495ms(调整前是112ms),其中一次是80ms,另一次是910ms!将近1秒钟!Remark是STW的!对于要求低延时的应用来说这是无法接受的! [YG occupancy: 181274 K (1887488 K)] - 年轻代当前占用情况和总容量 耗时80ms的这次remark发生时(早上9点,非高峰时段),新生代(YG)占用181.274M。 remark耗时910ms的那次GC日志 [YG occupancy: 773427 K (1887488 K)] 耗时910ms的这次remark发生时(晚上10点左右,高峰时段),新生代(YG)占用773.427M。因为这个时候高峰期,新生代的占用量上升的非常快,几乎同样的时间内,非高峰时段仅上升到181M,但是高峰时段就上升到773M。 如果abortale preclean阶段时间太短,随后在remark时,新生代占用越大,则remark持续的时间(STW)越长。 不缩短abortale preclean耗时会出现过程gc;缩短的话,remark阶段又会变长,而且是STW,更不能接受。 对于这种情况,CMS提供了CMSScavengeBeforeRemark参数,尝试在remark阶段之前进行一次Minor GC,以降低新生代的占用。 第二次调优 增加 -XX:+CMSScavengeBeforeRemark 不是没有代价的,因为这会增加一次Minor GC停顿。所以这个方案好或者不好的判断标准就是:增加CMSScavengeBeforeRemark参数之后的minor GC停顿时间 + remark 停顿时间如果比增加之前的remark GC停顿时间要小,这才是好的方案。 -XX:+CMSScavengeBeforeRemark: 在CMS GC前启动一次ygc,目的在于减少old gen对ygc gen的引用,降低remark时的开销-----一般CMS的GC耗时 80%都在remark阶段 第二次调整的结果 在统计期间(20小时左右)内,发生3次CMS GC。Abortable preclean 平均耗时693ms。Final remark平均耗时50ms,最大耗时60ms。Final remark的时间比调优前的平均时间(112ms)更低。 3次CMS GC remark前的Minor GC日志分析 第1次是非高峰时段的表现,Minor GC 耗时 0.01s + remark耗时 0.06s = 0.07s = 70ms,如下 第2次是高峰时段,Minor GC 耗时 0.01s + remark耗时 0.05s = 0.06s = 60ms,如下 第3次是非高峰时段,Minor GC 耗时 0.00s + remark耗时 0.04s = 0.04s = 40ms,如下 所以,3次Minor GC + remark耗时的平均耗时 < 60ms,这比第一次调优时remark平均耗时495ms好得多了。 总结 解决abortable preclean 时间过长的方案可以归结为两步: 缩短abortable preclean 时长,通过调整这两个参数: -XX:CMSMaxAbortablePrecleanTime=xxx -XX:CMSScheduleRemarkEdenPenetration=xxx 调整为多少的一个判断标准是:abortable preclean阶段结束时,新生代的空间占用不能大于某个参考值。 在前面第一次调优后,新生代(YG)占用181.274M,remark耗时80ms;新生代(YG)占用773.427M时,remark耗时910ms。所以这个参考值可以是300M。 而如果新生代增长过快,像这次调优应用2秒内就能用光2G新生代堆空间的,就只能通过CMSScavengeBeforeRemark做一次Minor GC了。 增加CMSScavengeBeforeRemark参数开启remark前进行Minor GC的尝试 虽然官方说明这个增加这个参数是尝试进行Minor GC,不一定会进行。但实际使用起来,几乎每次remark前都会Minor GC。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册