Gitee

00030-layui+java 树形表格treeTable

China☆狼群 提交于 2020-10-05 18:11:42
treeTable 模块下载: https://gitee.com/whvse/treetable-lay/tree/master/2.x 下载后,treeTable.js、treeTable.css 的放置目录分别为: layuiadmin/modules/treeTable.js layuiadmin/modules/treeTable/treeTable.css 页面元素: <div style="width: 100%;overflow-x: auto;"> <table class="layui-hide" id="businessConfigListTable" lay-filter="businessConfigListTable"></table> </div> 定义: layui.config({ base: '${ctxLayui}/layuiadmin/' }).extend({ index: 'lib/index' }).use(['index', 'table','dict','laydate','util','treeTable'], function(){ var $ = layui.$,table = layui.table,form = layui.form; var dict = layui.dict; var laydate = layui

架构设计 | 异步处理流程,多种实现模式详解

柔情痞子 提交于 2020-10-05 06:13:55
本文源码: GitHub·点这里 || GitEE·点这里 一、异步处理 1、异步概念 异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。 必须强调一个基础逻辑,异步是一种设计理念,异步操作不等于多线程,MQ中间件,或者消息广播,这些是可以实现异步处理的方式。 同步处理和异步处理相对,需要实时处理并响应,一旦超过时间会结束会话,在该过程中调用方一直在等待响应方处理完成并返回。同步类似电话沟通,需要实时对话,异步则类似短信交流,发送消息之后无需保持等待状态。 2、异步处理优点 虽然异步处理不能实时响应,但是处理复杂业务场景,多数情况都会使用异步处理。 异步可以解耦业务间的流程关联,降低耦合度; 降低接口响应时间,例如用户注册,异步生成相关信息表; 异步可以提高系统性能,提升吞吐量; 流量削峰即把请求先承接下来,然后在异步处理; 异步用在不同服务间,可以隔离服务,避免雪崩; 异步处理的实现方式有很多种,常见多线程,消息中间件,发布订阅的广播模式,其根据逻辑在于先把请求承接下来,放入容器中,在从容器中把请求取出,统一调度处理。 注意 :一定要监控任务是否产生积压过度情况,任务如果积压到雪崩之势的地步,你会感觉每一片雪花都想勇闯天涯。 3、异步处理模式 异步流程处理的实现有好多方式,但是实际开发中常用的就那么几种,例如: 基于接口异步响应

Spring Boot 2.x基础教程:使用集中式缓存Redis

◇◆丶佛笑我妖孽 提交于 2020-10-04 22:29:40
之前我们介绍了两种进程内缓存的用法,包括Spring Boot默认使用的 ConcurrentMap缓存 以及 缓存框架EhCache 。虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然是需要一定的时间,短暂的缓存不一致依然存在。 在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存就可以很好的解决缓存数据的一致性问题。接下来我们就来学习一下,如何在Spring Boot的缓存支持中使用Redis实现数据缓存。 动手试试 本篇的实现将基于 上一篇 的基础工程来进行。先来回顾下上一篇中的程序要素: User实体的定义 @Entity @Data @NoArgsConstructor public class User implements Serializable { @Id @GeneratedValue private Long id; private String name; private Integer age; public User(String name, Integer age) { this

SpringBoot多模块项目(Gradle篇)

坚强是说给别人听的谎言 提交于 2020-10-04 22:26:58
Gradle Kotlin DSL 项目链接: https://gitee.com/ellipse/springboot-multi-parent 1、创建项目 1.1、创建根项目 (parent) 1、使用 Spring Initializr 创建一个项目 2、删除 src 3、修改 build.gradle.kts 文件,将以下内容移到 subprojects 里面: java.sourceCompatibility dependencies tasks 简单来说就是把除 plugins group version repositories 之外的东西都移到 subprojects 里面 4、将以下内容放在 subprojects 最前面 subprojects { apply(plugin = "java") apply(plugin = "kotlin") // 可选 apply(plugin = "org.springframework.boot") apply(plugin = "io.spring.dependency-management") ...... } 5、springboot插件后添加 apply false plugins { id("org.springframework.boot") version "2.2.7.RELEASE" apply

Springboot2.X + Smart-doc快速构建接口文档工具(75)

蓝咒 提交于 2020-10-04 03:47:45
1、设置方法注释 首先每个人都应该拥有写注释的规范,IDEA设置如下: 接口统一规范 /** * * @author mujiutian * @date $DATE$ $TIME$ * @param $params$ */ 2、 pom依赖添加插件 <plugin> <groupId> com.github.shalousun </groupId> <artifactId> smart-doc-maven-plugin </artifactId> <version> 1.1.0 </version> <configuration> <!--指定生成文档的使用的配置文件,配置文件放在自己的项目中--> <configFile> ./src/main/resources/smart-doc.json </configFile> <!--指定项目名称--> <projectName> 测试 </projectName> <!--smart-doc实现自动分析依赖树加载第三方依赖的源码,如果一些框架依赖库加载不到导致报错,这时请使用excludes排除掉--> <excludes> <!--格式为:groupId:artifactId;参考如下--> <!--1.0.7版本开始你还可以用正则匹配排除,如:poi.* --> <exclude> com.alibaba:fastjson <

Spring Boot 2.x基础教程:事务管理入门

允我心安 提交于 2020-10-04 02:41:41
什么是事务? 我们在开发企业应用时,通常业务人员的一个操作实际上是对数据库读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作的数据并不可靠,如果要让这个业务正确的执行下去,通常有实现方式: 记录失败的位置,问题修复之后,从上一次执行失败的位置开始继续执行后面要做的业务逻辑 在执行失败的时候,回退本次执行的所有过程,让操作恢复到原始状态,带问题修复之后,重新执行原来的业务逻辑 事务就是针对上述方式2的实现。事务,一般是指要做的或所做的事情,就是上面所说的业务人员的一个操作(比如电商系统中,一个创建订单的操作包含了创建订单、商品库存的扣减两个基本操作。如果创建订单成功,库存扣减失败,那么就会出现商品超卖的问题,所以最基本的最发就是需要为这两个操作用事务包括起来,保证这两个操作要么都成功,要么都失败)。 这样的场景在实际开发过程中非常多,所以今天就来一起学习一下Spring Boot中的事务管理如何使用! 快速入门 在Spring Boot中,当我们使用了 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 依赖的时候

【linux】循序渐进学运维-基础篇-文件权限管理

拟墨画扇 提交于 2020-10-03 17:27:24
写在前面: 博主是一名投身教培事业的标准八零后,叛逆而且追求自由,昵称取自于苏轼的《水调歌头》中的“高处不胜寒”,时刻提醒自己要耐得住寂寞,受的了孤独,在技术的道路上,不畏艰难,勇往直前。 我已经将全部的linux运维体系整理到了gitee上,https://gitee.com/gaosh08/LinuxFamily 欢迎star,投稿,交流,后续还会有python系列和java系列。 文章目录 权限的基础概念 权限管理命令 1)chmod 举例: 1) 查看文件的权限 2) 授予用户对于etc目录有rwx权限 3) 授予所属组为rwx权限 4) 去掉etc目录的所有者的读写权限 5) 使用二进制的方式授予etc 目录,所有者,所属组,其他用户都为rwx权限 2)chown 命令 举例: 1) 将passwd的所有者和所有组改为xinsz 2) 将passwd的拥有者和群组的另一种方法 3) 只改变passwd的所属组 总结 权限的基础概念 本文我们来讨论一下Linux操作系统中文件的普通权限。 Linux权限是操作系统用来限制对资源访问的一种机制。 权限一般分为三种: 读 写 执行 在Linux操作系统中,每个进程都是以某个身份(用户)来运行的,进程的权限与这个用户的权限一样,用户的权限越大,进程的权限就越大。 这里需要明确,文件的权限主要是针对三类对象进行定义: owner

类似Qt的GOSP发布修复更新

旧时模样 提交于 2020-10-03 17:24:34
GOSP = Giveda® Open Source Project for English, please refer to: https://gitee.com/giveda/GOSP/blob/master/README_en.md 本次更新如下: load(), setPixmap()两个接口将改变控件大小 修改界面花屏的问题。 修复base中存在的bugs 改进 示例代码。 删除空余文件 带字符串构造时,初始化为单行合适的大小。 简介和概述 Qt是欧洲人创始的一个优秀的c++开发框架,API简单易用,社区庞大,资源丰富;但Qt太重量级了(需要很多的RAM和ROM,非常复杂)。为了解决这个问题,我开发了GOSP这个框架; GOSP在不依赖Qt的前提下,提供了类似Qt的API接口,仅需要几百KB的硬件资源(比Qt小的多),能运行在Qt不支持的低配置硬件上(对Qt生态形成补充),适用于嵌入式开发。 谨以此产品致敬Qt为世界做出的杰出贡献。 主要特色 GOSP 是码云GVP项目,其产权 归全体贡献者共同所有,贡献者根据自身对项目的不同贡献而享有不等比例的产权。 提供了类似Qt的API。 100%使用图片来实现个性化的控件和界面。(见下文的截图) 基于别具一格的Giveda®信号槽技术,各个模块代码之间无耦合。 非常简单,非常易用。 如何使用 查看如下《简易指导文档》: https

java作品集:企业信息门户webtap

a 夏天 提交于 2020-10-03 16:37:13
作品背景 随着企业应用的软件越来越多,并且信息软件基本以B/S为主了,很多时候各种软件的地址,让大家记的头昏脑胀,并且一堆密码要记,而且大部分系统之间无法互通,虽然市面上有各种集成方案,但无法做到简单有效,都是大型软件厂商的PPT解决方案加一堆开发工作和大量的成本支出,最重要的是大部分都是体验极差、毫无美感的东西。 解決方案 基于上述背景,个人利用业余时间在持续完善做一款小作品,或多或少的解决一点问题,虽然目前还没成熟,但是考虑再三,先开源出来,希望有志同道合的人一起完善。 作品说明 1.首页 首页主要功能有 app显示 文件夹分类 应用搜索 登录 登录后快捷新增应用 背景自动每天同步bing搜索引擎的的壁纸 应用和新闻站点链接(未完成) 通过点击应用上的锁 icon即可查看应用的账号和密码,在没有单点登录的功能情况下这个功能非常有用 2.系统登录 点击首页右上角的 sigin 到登录页面 3.应用列表 后台管理 主功能只有新建应用、应用列表、系统设置,极其简约,好不好看只是个人风格,默认登录进来及显示应用列表。 4、新增应用 添加应用除了常规功能还增加了敏感信息输入,敏感信息只能登录后才能查看; 查看密码功能考虑到很多时候连接地址需要密码才能访问; 查看权限目前只实现了登录可见以及自己可见(权限功能还需要继续完善); 5、系统设置 系统设置里可以进行基本信息维护,个人登录信息维护

名著解读-Effective Java 第一章 01 工厂模式替代构造方法

ぐ巨炮叔叔 提交于 2020-10-03 12:26:23
为什么使用工厂模式替代构造方法 优点1:每个方法都有自己的名字 优点2:不必每次都去创建一个新的对象,节省内存 优点3:可以返回子类 代码 动物类Animal public class Animal { //种类 private String kind = null; public Animal (String kind){ this . kind = kind ; } public Animal (){ } public String getKind () { return kind ; } public void setKind (String kind) { this . kind = kind ; } } 猫类 cat public class Cat extends Animal{ private String name ; public Cat (String name , String kind){ this . name = name ; super .setKind(kind) ; } public String getName () { return name ; } public void setName (String name) { this . name = name ; } } 动物工厂类 AnimalFactory public class