首页 文章 精选 留言 我的

精选列表

搜索[Markdown改进],共10003篇文章
优秀的个人博客,低调大师

JeeSite v4.2.3.3 发布,多处优化改进

升级内容 用户管理界面增加按角色查询用户下拉框查询条件 增加 shiro.contentSecurityPolicy 请求头配置参数 新增分离前端的rememberMe功能,简化记住我的功能开发 跨域参数 Header 支持 x-ajax, x-token, x-remember,兼容旧版命名:__ajax, __sid,预计下个中版本正式采用新版本命名,请求参数名 __ajax, __sid 不受影响 addTabPage 新增 data-layer-full=”true” 参数,弹窗后接着最大化 中文化图片预览下面的几个操作按钮(放大、缩小、旋转等) 角色授权接口 userService.saveAuth 支持非员工用户类型的授权 新增表格表单实例 demoFormTableForm.html 增加 session.sessionIdCookieSecure 配置参数 Entity 增加 dataMap 内置属性;支持 Cloud 环境;支持 @RequestBody 方式接受 fileupload 的参数 修正分页 count 条数少于 pageSize 时,设置一个未知页号仍然返回了数据的问题 升级方法 修改pom.xml文件中的jeesite-parent版本号为4.2.3-SNAPSHOT 如果你导入了jeesite-common源码项目,请与git上的代码进行同步 如果你导入了jeesite-module-core源码项目,请与git上的代码进行同步 如果你是跨版本升级,请注意每一个版本的升级方法,业务上有调整的地方进行修改 执行root/package.bat(sh)打包脚本,强制更新依赖即可。 ========= 产品档案 ========= 平台简介 JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,基于经典技术组合 Spring Boot、Spring MVC、Apache Shiro、MyBatis、Beetl、Bootstrap、AdminLTE 采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。在线代码生成功能,包括模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计,模块增减便捷;界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。 JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能(经典架构会的人多),让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。 JeeSite 自 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,JeeSite 架构精良、易于扩展、大众思维的设计模式、工匠精神打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》奖杯,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。 JeeSite4 的升级,作者结合了多年总结和经验,以及各方面的应用案例,对架构完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有很大的进步,在不忘学习成本、提高开发效率的情况下,安全方面也做和很多工作,包括:身份认证、密码策略、安全审计、日志收集等众多安全选项供你选择。努力为大中小微企业打造全方位企业级快速开发解决方案。 简要优势 JeeSite 整体架构清晰、技术稳定先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。 JeeSite 功能全,JeeSite 的知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要你学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。 JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制你去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。 大家都在用 Spring ,在学习 Spring 架构的优点,Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码,反而会对未来升级造成很大困扰,您说不是呢?这样的例子很多,所以不要纠结,JeeSite 也一样具备强大的扩展性。 发展至今 JeeSite 平台架构已经非常稳定,JeeSite 是一个专业的平台,是一个让你使用放心的平台。 架构特点 以 Spring Boot 2 为基础,Maven 多项目依赖,模块分项目,松耦合,方便模块升级、增减模块 模块化的数据库自动升级程序,当模块升级代码需要更新数据库时,自动执行对应版本 SQL 脚本 功能授权模块灵活,按钮级别,支持单点登录、第三方登录,丰富的扩展模块,简单 yml 配置即可实现 支持多数据源,深入 MyBatis 底层事务,从 DAO 层切换多数据源,方便快捷,彻底的解决必须从 Controller 里切换数据源的麻烦。并且支持,分布式事务,跨应用级别的事务,简单 yml 配置即可实现 数据表主键优化思想,如分类科目表,采用有意义的主键方式,让客户去自定义,减少后期运维维护成本 独创@Table 注解(优于MyBatis-Plus,也可共存)在 MyBatis 基础上 Dao 层封装: 自动生成增删改 SQL,不需要在 mapper.xml 里写重复又费时的 SQL 了,减少开发和后期维护成本 列表查询条件通过实体自动生成,不用你写各式各样的 *Wrapper、手写字段名、if判断查询条件等 所有列 @Column 定义均放到类头,而不是分布到各个属性或方法上,非常好,主要是有如下原因: 一是,放到表头的好处是,可一览熟知该实体类对应的物理表结构是什么样,开发者思维从物理表结构到对象的映射转换,都是基于物理表结构的,减少后期代码分析的维护成本,@Column 指定物理字段名,而不是指定类上的属性名,也是这个原因; 二是,生成的 SQL 和查询条件,可定义列的排列顺序,方便核查定义,优化查询,提升性能; 三是,方便 @JoinTable 关联表和其它扩展信息的设置,如果分布到类的属性上就不太好管理列 解决 80% 的基础 SQL 编写,后期维护增减字段方便,只需修改该数据和界面即可 Beetl:为什么去选择 Beetl 这个前端模板语言: 它性能非常好,相比 Thymeleaf 好太多,甚至比 JSP 都快上 2 倍,入门也简单很多 它易于模块化,分布式应用,html 格式的文件,可以放到各个模块 jar 包里 它易于扩展,非常方便的去自定义 form 标签,函数,格式化数值、支持 Layout 等 最重要的是:它学习成本非常低,其实就是 js 的语法,如果会 js,则 Beetl 也就会使用了 一般在前端开发周期中,可能会一半以上的时间,去写界面,调布局,做出来的界面还非常不好看, 我们针对这个目的,去封装了前端各种组件,各种函数方法, 让你使用简单的组件,调用复杂的功能,让你只去关注业务; 数据权限:不仅仅是角色,颗粒度细化到每个人员的身上,可自定义第三方数据权限,不仅仅是部门和公司,你可以扩展,如:地区,栏目分类,商品分类,无需让你多写代码,简单调用即可实现复杂的数据权限控制。并且支持跨应用、跨进程的微服务级别的数据权限控制 缓存监控:采用 J2Cache 二级缓存技术(Caffeine + Redis)支持快速切换为 Redis 缓存,支持集群 Session 和系统缓存共享 服务器监控,查看 CPU,内存,JVM,磁盘信息等。方便运维人员分析系统负载情况 支持 SAAS 多租户模式:每个租户数据通过 corp_code 字段进行分离,数据互不干扰 支持 Spring Cloud 架构:分布式,微服务,最小化内核,统一配置中心,统一授权认证中心 树结构的图特设计:提高运维、数据分析、优化查询 多用户类型支持:员工、会员、专家、往来单位等 丰富的内置功能:用户权限、数据权限、系统管理 定时任务在线配置,界面化生成 cron 表达式,支持集群环境自适应,调度日志监控 BPM 业务流程模块:基于 Flowable,中国式工作流、支持退回、自由流、会签等高级应用 在线预览系统:文件管理、在线预览图片、文档、文本、视频等格式 消息推送:APP、短信、邮件、微信,你无需了解消息是怎么发送出去的,只需了解消息发送接口即可 提供丰富的移动端接口、第三方系统调用接口,轻松实现授权认证、数据调用(支持 json、xml 等格式) 国际化支持,页面标签国际化,字典菜单国际化,数据国际化(中文、英语、日语等)中文key方便后期维护 在线代码生成工具,操作简化及优化,支持多数据源(单表、主子表、树表、Cloud等模板,支持自由扩展) 文件上传组件,支持分片上传,断点续传下载,上传上传排序、预览、图片压缩等 集成云存储客户端模块,已支持:阿里云OSS、腾讯云COS、七牛云、MinIO 表单提交前后的差异数据分析,新值和旧值比较,较大文本展示差异数据结果 在线查询在线人员,强踢在线账号 提供丰富的在线文档及案例 支持国产化软硬件 安全方面 系统采用Java 语言开发,具有卓越的通用性、高效性、平台移植性和安全性(适应全行业的软件) 分层设计层次清楚,低耦合,各层必须通过接口才能接入并进行参数校验,保证数据操作的安全 双重验证,用户表单提交双验证:包括服务器端验证及客户端验证,防止用户通过浏览器恶意篡改(如不可写文本域、隐藏变量篡改、上传非法文件、用户角色越级授权等)避免客户端跳过验证直接操作数据库 安全编码,用户表单提交所有数据,在服务器端都进行安全编码,防止用户提交非法脚本及SQL注入获取敏感数据等,确保数据安全 密码加密,登录用户密码进行SHA1散列加密,此加密方法是不可逆的。保证密文泄露后的安全问题 强制访问,系统对管理端链接都进行用户身份权限验证及权限,防止用户直接获取资源 数据库密码及其它安全密钥自动加密配置(只需配置参数即可实现,无需使用复杂的秘钥生成功能) MyBatis 参数采用安全接受,特殊操作都必须经过 SQL 安全过滤,杜绝 SQL 注入问题 所有请求参数获取,均通过 XSS 跨站脚本过滤方法,杜绝 XSS 问题 乐观锁简单实现,避免一条数据多人同时操作时的数据覆盖,提高数据安全性 通过 yml 简单配置,轻松解决 JS 是否允许跨域操作,自适应跨域情况 身份认证: 登录失败多少次后显示验证码 登录失败多少次后锁定账号及锁定账号时间 登录账号密码可加密后再提交后台 同设备是否允许账号多地登录 密码策略: 初始密码修改策略,提醒或强制用户修改初始密码 账号密码修改策略,多长时间内未修改,则提醒或强制修改密码 开关控制密码修改多少次内不允许重复,验证与上次或前几次的密码是否相同 开关控制账号密码修改最低安全等级,很弱、弱、安全、很安全,四个等级,强制或提醒 权限审计: 账号密码审计(未修改初始密码、使用简单密码、定期未修改密码、长期未登录、未设置密保、以上全部、审计结果数据导出) 菜单权限审计(根据菜单及权限查询,都有哪些用户) 用户权限审计(根据用户查询,都有哪些菜单及权限) 登录提交信息加密(支持 DES 加密、Base64加密等) 支持设置获取客户端IP的Header名称,防止IP伪造 支持设置允许的请求方法设定(如:仅允许 GET、POST 请求) 是否允许账号多地登录,如果设置为false,同一个设备类型的其它地点登录的相同账号被踢下线 是否允许多账号多设备登录,如果设置为false,其它地点登录的相同账号全部登录设备将被踢下线 是否允许刷新主框架页,如果设置为false,刷新主页将导致重新登录。如 银行系统 个人首页不允许刷新 是否允许嵌入到外部网站iframe中(true:不限制,false:不允许) 是否允许跨域访问 CORS,解决 Cookie 跨域访问问题 是否允许跨域访问时 CORS,可以使用的方法和响应头(如:仅允许 GET、POST 请求) 是否允许接收跨域的 Cookie 凭证数据 CORS 设置 是否允许的网站来源地址,不设置为全部地址(避免一些跨站点请求伪造 CSRF) 是否在登录后生成新的Session(默认false)安全系数更高的系统设置 可设置多个允许的内部系统 IP 地址的白名单,否则拒绝访问

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

JeeSite v4.2.3.2 发布,多处优化改进

升级内容 新增支持移动端无 Cookie 环境下的记住我功能 新增移动端 APP 基础模块,版本升级、意见反馈 新增 CMS 模块,来自 jeesite4-cms 项目 新增支持 staticPrefix 不自带 ctxPath 增加 sessionIdCookieSameSite 参数 代码生成模板 Cloud 环境下的模板完善 代码生成 erm 模板输出 sql 路径更正 优化 showMessage 使用 toastr 默认的 5 秒超时时间 如果 Tomcat 下部署多个项目的时候 logPath 会出现项目之间串用问题,所以启用 customLogPath 名字 BPM 启动流程时设置任务等级,第一个节点完成后,从已办里可以看到的任务等级; BPM 如果未选择自动完成第一个节点,则设置下一步任务信息,如:处理人,任务等级; BPM 打开业务表单时,自动默认当前任务的等级,方便后续任务继承这个任务等级; 修正 MsgPushUtils.push 方法,当多个接受者的时候,报主键重复问题。 修正自定义的消息类型 bulidReceiveCode 方法没有调用问题。 分离出来 getOauth2User 方法,方便其他模块调用存储 去掉 /file/ueditor 的 user 权限注解,可自定义 去掉大屏设计器的例子模板不允许修改提醒 升级方法 修改pom.xml文件中的jeesite-parent版本号为4.2.3-SNAPSHOT 如果你导入了jeesite-common源码项目,请与git上的代码进行同步 如果你导入了jeesite-module-core源码项目,请与git上的代码进行同步 执行root/package.bat(sh)打包脚本,强制更新依赖即可。 了解更多 https://jeesite.com/docs/feature/

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

Jmeter之tomcat性能测试+性能改进措施

Jmeter用于tomcat性能测试,因为项目部署在tomcat,正常情况下,一个tomcat可以承受500个并发,通过修改配置,及其相关的tomcat优化,可以承受到1000个并发。 如何测试tomcat优化前和优化后的结果? 通过Jmeter测试,就能达到对应的效果 Jmeter测试tomcat比较简单 1.建立对应的线程组 2.建立Http请求 需要填写的一个是协议名称,一个是IP地址或域名,一个是端口号,还有一个是路径 这个路径默认不填也行,如果具体到post或get请求及其携带参数,就需要填写 如果测试具体的get或post请求,加请求url和对应的参数,如下图所示: 注意和postMan工具有些相似,不同于postman,Jmeter可以进行多用户测试,即多个线程测试 通过察看结果树,可以查看请求失败: 聚合报告可供分析: server.xml文件: 线程池优化: 连接池优化: Executor重要参数说明: name:共享线程池的名字。这是Connector为了共享线程池要引用的名字,该名字必须唯一。默认值:None; namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-; maxThreads:该线程池可以容纳的最大线程数。默认值:200; maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。 minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。 threadPriority:线程的等级。默认是Thread.NORM_PRIORITY 连接池重要参数说明: executor:表示使用该参数值对应的线程池; minProcessors:服务器启动时创建的处理请求的线程数; maxProcessors:最大可以创建的处理请求的线程数; acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。 这时你会发现性能会得到很大的提升 当然必要的时候,需要修改tomcat的内存 tomcat的3种运行模式 bio:默认的模式,性能非常低下,没有经过任何优化处理和支持. nio:nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。 apr:安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能. 启动NIO模式 修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol 上述比对,这也就是我们为什么选择NIO的原因

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

LinkedIn Test Butler 旨在改进 Android UI 测试

LinkedIn工程师兼Test Butler创建者Drew Hannay写道,Test Butler是一款面向Android的开源测试工具,它允许开发人员对若干测试环境设置通过编程进行控制,从而使开发人员可以可靠地运行测试。 据Hannay介绍,Test Butler的灵感来自谷歌2014年的演讲“环保之路:清理有毒的移动环境”。该演讲介绍了如何解决反复出现并影响移动测试的问题,比如缺少可靠性和可再现性、速度缓慢等。Hannay表示,当结果可能受到环境因素影响时,测试就不可靠了,尤其是当它们出现在设备/操作系统层面时,比如Android模拟器的CPU突然休眠,不正常的设备方向变化,随机出现的锁屏,意外弹出的系统对话框,等等。所有那些事件都会导致Espresso UI测试失败。 为了解决这些问题,按照最初的设计,Test Butler将作为一个后台服务在Android模拟器上运行,提供一些旨在增加测试环境稳定性的特性,比如: 禁用动画,这是Espresso正常运行所需要的; 通过安装一个自定义的IActivityController禁用系统对话框; 监控模拟器的锁屏、Wi-Fi和CPU,保证它们不会休眠。 测试中的应用可以和Test Butler进行通信,并控制多个测试环境变量,比如: 启用/禁用Wi-Fi; 在测试执行过程中通过编程改变设备方向; 模拟不同的定位服务模式,比如,省电模式或者高精度模式; 定义应用程序运行的区域设置。 Test Butler的一个关键方面是,它使用面向内置Android模拟器的系统密钥库进行签名。也就是说,它会自动取得自己所需的任何signature级的权限,而不需要通过ADB,或者篡改清单文件。 下面的代码展示了如何设置应用,让其和Test Butler一起工作: public class ExampleTestRunner extends AndroidJUnitRunner { @Override public void onStart() { TestButler.setup(InstrumentationRegistry.getTargetContext()); super.onStart(); } @Override public void finish(int resultCode, Bundle results) { TestButler.teardown(InstrumentationRegistry.getTargetContext()); super.finish(resultCode, results); } } 当应用和Test Butler的连接建立后,你可以使用TestButler类提供的多种方法控制测试环境,比如修改定位服务模式、设置Wi-Fi状态、触发设备反转,等等。 据Hannay介绍,目前,LinkedIn每天使用Test Butler运行超过1百万次测试。该工具是开源的,代码托管在GitHub上。 文章转载自 开源中国社区[http://www.oschina.net]

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

Apache Hadoop 3.0.0-alpha1主要改进

1、Minimum required Java version increased from Java 7 to Java 8 所有的Hadoop JARs针对运行时版本的Java 8被编译。仍在使用Java 7或更低版本的用户必须升级至Java 8。 2、Support for erasure encoding in HDFS HDFS支持纠删码。与副本相比纠删码是一种更节省空间的数据持久化存储方法。像Reed-Solomon这种标准编码用于1.4倍空间开销,而之前的HDFS副本相比则是3倍空间开销。既然纠删码主要的额外开销是在重建和执行远程读,它习惯上用于存储冷数据,即不经常访问的数据。当部署这个新特性时用户应该考虑纠删码的网络和CPU开销。 3、YARN Timeline Service v.2 引入了Yarn时间抽服务v.2,应对两大挑战:改善时间轴服务的可伸缩性和可靠性,通过引入流和聚合增强可用性。 4、Shell script rewrite shell脚本重写,解决了之前的很多长期存在的bug。 5、MapReduce task-level native optimization MR任务级本地优化。MapReduce添加了Map输出collector的本地实现。对于shuffle密集型作业,这将会有30%以上的性能提升。 6、Support for more than 2 NameNodes. 允许用户运行多个Standby NN,更高的容错性。比如,通过配置3个NN和5个JournalNodes,集群能够容忍2个NN宕机而不是之前的一个。 7、Support for Microsoft Azure Data Lake filesystem connector 集成Microsoft Azure Data Lake 8、Intra-datanode balancer 数据节点内在均衡器,之前单个数据节点是可以管理多个磁盘目录的。正常写入操作,各磁盘会被均匀填满。然而,当添加或替换磁盘时可能导致DataNode严重内斜。这种情况现有的HDFS balancer是无法处理的。这种情况是由新intra-DataNode平衡功能来处理。通过hdfs diskbalancer CLI来调用。 9、Reworked daemon and task heap management Hadoop守护进程和MapReduce任务堆内存管理的一系列变化。HADOOP-10950介绍了配置守护集成heap大小的新方法。主机内存大小可以自动调整,HADOOP_HEAPSIZE已弃用。MAPREDUCE-5785map和reduce task堆大小的配置方法,所需的堆大小不再需要通过任务配置和Java选项实现。已经指定的现有配置不受此更改影响。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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部分的功能。

用户登录
用户注册