IDEA 停止在 Synchronizing output directories

重新Rubuild Project   停止在   运行时错误:     试着的解决方式    运行clean 、install  、运行。 运行正常!!   解决方法 删除 .idea ,重新打开项目 ,重新建立工程Rebuild Project ,信息如下: java: /E:/JPADemo/src/main/java/com/example/jpademo/JpaDemoApplication.java使用了未经检查或不安全的操作。 要取消这种告警信息,可在 public class JpaDemoApplication 类面前加@SuppressWarnings("unchecked")   原因:JAVA是一门安全性比较高的语言,它在编译之类要进行类型等一系列的检查。如果你使用了注解就可以告诉编译器不用检查,这样子就可以避过编译时期间的安全检查,这样子的效率会提高 。但同时 安全性就大打折扣了。 但是运行正常!!   from:https://www.cnblogs.com/wfy680/p/15014376.html

使用IntelliJ IDEA 体验Groovy开发

使用IntelliJ IDEA开发groovy,创建一个项目进入到这个界面: 如果Groovy. library是no. library select 那就点击右侧的create按钮,选择你安装的groovy目录就可以, 如果IntelliJ IDEA 左侧没有Groovy选项的话那就安装groovy插件, 新建的groovy项目是这样的: 会发现并不是像我们Android 在studio下创建项目一样有一个默认的MainActivity,groovy是没有的,那么从事编程开发的入门都是从hello world开始的,那么现在创建一个hello.groovy文件

  这是我们创建的第一个类Hello.groovy 从上面的代码就可以提现出groovy是完全支持Java的 而且更方便的是我们在控制台输入一句话 直接使用println()方法就行,相当于Java中的静态导包功能. 还有更神奇的写法: 是不是groovy很强大 这个写法和上面的Java中的写法结果是一样的.如果想弄懂gradle 构建是有必须去学习下.   from:https://blog.csdn.net/coderinchina/article/details/89600861

Mysql中的force index和ignore index

前几天统计一个sql,是一个人提交了多少工单,顺便做了相关sql优化。数据大概2000多w。

为了实验最少受其他因素干扰,将生产库的200多w数据导出来,用测试服务器进行测试。 导出来的数据是一个堆表,没有主键,没有索引。

 1.堆表的情况 这时候就在这时候,用执行计划分析下语句。

select_type的值为SIMPLE,表示简单的select查询,不使用union或子查询。 type的值为ALL,表示要对表进行表扫描。 possible_keys 表示能使用哪个索引找到行记录。 key 表示Mysql决定使用的索引(键)。 key_len 表示Mysql决定使用索引的长度。 ref  表示使用哪个列和key一起从表中选择行。 rows 表示Mysql认为它执行查询时必须检查的行数。 extra 表示查询的详情信息,用到where,临时表,排序。   执行下该语句三次,发现执行了16.30 sec、16.34 sec、16.24 sec。  2.有索引的情况 建了四个索引,分别以custname,CreateDate建两个单列索引,另外两个是联合索引,只是最左边列不一样。

之后,用执行计划分析下sql查询语句。

从执行计划可以看出,Mysql从四个索引中选取了ix_datename这个索引,type为range表示索引范围扫描。rows的数量值是没堆表的1/3。 执行语句三次,时间是 8.64 sec、8.61sec、8.55 sec。   我建了三个索引,那么我想用下另外三个索引怎么办? 这里可以用force index(),这个指令可以指定本次查询强制使用哪个索引,因为Mysql优化器的选择并不是最优的索引。

 选用另一个联合索引 ix_namedate,这次type变为index,可以这样理解,根据索引的顺序进行全表扫描,比ALL效率要高些,rows的值和堆表的值差不多。 执行语句三次,时间是 7.84 sec、7.92 sec、7.84 sec。  

  选用另一个联合索引 ix_name,这次type是index,可以这样理解,根据索引的顺序进行全表扫描,比ALL效率要高些,rows的值和堆表的值差不多。 执行语句三次,时间是 1 min 28.17 sec、1 min 27.64 sec、1 min 27.58 sec。  

选用另一个联合索引 ix_date,这次type是range,表示索引范围扫描,rows的值是堆表的1/3多些 。 执行语句三次,时间是 9.55 sec、9.52 sec、9.39 sec。   假如我不想用索引了怎么办? 可以使用ignore index(),这个指令可以强制Mysql在查询时,不使用某索引。  

上面第一个强制不使用ix_date索引,那么就Mysql就从剩下的三个索引中,选取他认为是最优的索引。第二个时将四个索引都不使用,那么Mysql就进行全表扫描了。     总结:       1.Mysql的语句优化,没有绝对的正确,explain也只是给出个大致的方向,例如 key_len值小的,rows小的按理说,时间应该最短,效率最高。但是,实验中时间最少的却不是那个值最小的。        2. 优化还需根据实际数据情况,例如,假如我where选取的时间范围变化,或者说CustName的分布有些变化,可能跟刚才的实验,又会产生一定偏差。        3. 同样我还实验了,当给表加上主键时,整体的查询时间会缩短些。     ——————附相关index命令————--

  参考:mysql如何添加主键约束和唯一性约束,删除主键和唯一性约束 mysql强制使用索引与不使用索引 利用 force index优化sql语句性能 mysql 存在索引但不能使用索引的典型场景 mysql explain用法和结果的含义 MySQL 优化之 index merge(索引合并) MySQL单列索引和组合索引(联合索引)的区别详解 休对故人思故国 且将新火试新茶 诗酒趁年华

idea报错Cannot compile Groovy files: no Groovy library is defined for module 'xx’之方

0、病因描写 clone 原有的项目(新建的项目一般不会有) IntelliJ IDEA 关联了后缀为groovy的文件但是没有配置Groovy的library。 1、病因一之解决方法 病因:本项目不需要用的Groovy但是关联了groovy了文件 方子:那直接去掉后缀为groovy的关联即可 结果:良好,网上基本都是这种方子 如图:去掉红框部分并apply 2、病因二之解决之法 病因:项目需要groovy的library。 方子:那就是配置groovy的library咯。 步骤: ①、下载groovy library ②、解压(选一个中意的目录,最好目录路径是全英文的) ③、配置groovy library:File —>Project Structure —> Modules —> Groovy —> Add Groovy Support —> 选择 Groovy library 最后 apply就OK了。 如图: 快捷配置入口:如果IDEA有如下提示就最好了–方便。直接点击 Configuration Groovy SDK 即可。   from:https://www.2cto.com/kf/201803/732193.html

阿里巴巴10个顶级开源项目,确定不来看看?

一、创作由来 Hello 大家好,我是l拉不拉米,今天给大家分享10个阿里巴巴开源的顶级项目,都是Java开发必备利器。 这10个项目均来自Github上阿里巴巴公开的开源项目。 都是java3c在工作中用过或者之前学习过的项目,也有写过个别项目的文章,但是从没有整理到一起过。周末花了大概半天的时间,一一整理出来,方便大家阅读学习。 阿里巴巴的github地址 二、项目介绍 1、arthas 截至目前,github上有27.4k个星和6k的fork,是阿里巴巴最受欢迎的开源项目。 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态? 怎么快速定位应用的热点,生成火焰图? 怎样直接从JVM内查找某个类的实例? Arthas 提供管理界面在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。 Arthas 支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。 Github: github.com/alibaba/art… 文档: arthas.aliyun.com/doc/ 超过120家公司登记了使用: 2、p3c p3c是阿里巴巴开发的Java规约检查插件,可以继承到idea和eclipse中。 相信不少搞Java开发的同学都了解过阿里巴巴出品《Java开发手册》,主要整理了阿里内部使用的Java开发的规范。 p3c插件实现了开发手册中的的53条规则,大部分基于PMD实现,其中有4条规则基于IDEA实现,并且基于IDEA Inspection实现了实时检测功能。部分规则实现了Quick Fix功能(快速修复)。 目前插件检测有两种模式:实时检测、手动触发。 主要功能一览: 3、druid Druid 是一个 JDBC 组件库,与c3p0、dbcp齐名,包含数据库连接池、SQL Parser 等组件,被大量业务和技术产品使用或集成,经历过最严苛线上业务场景考验。 Druid连接池 Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。 Github项目地址 github.com/alibaba/dru… 文档 github.com/alibaba/dru… 下载 repo1.maven.org/maven2/com/… 监控DEMO http://120.26.192.168/druid/index.html 竞品对比 4、fastjson fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 fastjson的优点 1、速度快 fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。 2、使用广泛 fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。 3、测试完备 fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。 4、使用简单 fastjson的API十分简洁。

5、easyexcel EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百万行级别的Excel。 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便。 举个例子:64M内存1分钟内读取75M(46W行25列)的Excel 还有极速模式能更快,但是内存占用会在100M多一点。 6、canal 阿里巴巴 MySQL binlog 增量订阅&消费组件。 简介 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 基于日志增量订阅和消费的业务包括 数据库镜像 数据库实时备份 索引构建和实时维护(拆分异构索引、倒排索引等) 业务 cache 刷新 带业务逻辑的增量数据处理 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x 工作原理 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看) MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log) MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据 canal 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流) 7、Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。 主要功能 服务限流降级:默认支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Zuul、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。 分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。 阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。 组件 Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。 Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。 Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。 Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。 Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。 8、nacos Nacos 简介 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。 Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:Kubernetes Service、gRPC & Dubbo RPC Service、Spring Cloud RESTful Service Nacos 特性 服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。 Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。 动态配置服务 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。 配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。 Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。 动态 DNS 服务 动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。 Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表. 服务及其元数据管理 Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。 Nacos 地图 特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求 架构大图:通过清晰架构,让您快速进入 Nacos 世界 业务大图:利用当前特性可以支持的业务场景,及其最佳实践 生态大图:系统梳理 Nacos 和主流技术生态的关系 优势大图:展示 Nacos 核心竞争力 战略大图:要从战略到战术层面讲 Nacos 的宏观优势 Nacos 生态图 9、Sentinel Sentinel 介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。 Sentinel 基本概念 资源 资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。 只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。 规则 围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。 Sentinel 功能和设计理念 流量控制 流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状,如下图所示: 流量控制有以下几个角度: 资源的调用关系,例如资源的调用链路,资源和资源之间的关系; 运行指标,例如 QPS、线程池、系统负载等; 控制的效果,例如直接限流、冷启动、排队等。 Sentinel 的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想要的效果。 熔断降级 除了流量控制以外,降低调用链路中的不稳定资源也是 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。这个问题和 Hystrix 里面描述的问题是一样的。 Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。 在限制的手段上,Sentinel 和 Hystrix 采取了完全不一样的方法。 Hystrix 通过线程池的方式,来对依赖(在我们的概念中对应资源)进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配。 Sentinel 对这个问题采取了两种手段: 通过并发线程数进行限制 和资源池隔离的方法不同,Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗,也不需要您预先分配线程池的大小。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求。 通过响应时间对资源进行降级 除了对并发线程数进行控制以外,Sentinel 还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复。 系统负载保护 Sentinel 同时提供系统维度的自适应保护能力。防止雪崩,是系统防护中重要的一环。当系统负载较高的时候,如果还持续让请求进入,可能会导致系统崩溃,无法响应。在集群环境下,网络负载均衡会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器也处在一个边缘状态的时候,这个增加的流量就会导致这台机器也崩溃,最后导致整个集群不可用。 针对这个情况,Sentinel 提供了对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围之内处理最多的请求。 Sentinel 工作机制 对主流框架提供适配或者显示的 API,来定义需要保护的资源,并提供设施对资源进行实时统计和调用链路分析。 根据预设的规则,结合对资源的实时统计信息,对流量进行控制。同时,Sentinel 提供开放的接口,方便您定义及改变规则。 Sentinel 提供实时的监控系统,方便您快速了解目前系统的状态。 总体框架 10、COLA COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。 目前COLA已经发展到COLA 4.0。 COLA分为两个部分,COLA架构和COLA组件。 好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度等。 为了能够快速创建满足COLA架构的应用,我们提供了两个archetype,位于cola-archetypes目录下: cola-archetype-service:用来创建纯后端服务的archetype。 cola-archetype-web:用来创建adapter和后端服务一体的web应用archetype。 执行以下命令:

命令执行成功的话,会看到如下的应用代码结构: COLA架构的核心职责就是定义良好的应用结构,提供最佳应用架构的最佳实践。通过不断探索,我们发现良好的分层结构,良好的包结构定义,可以帮助我们治理混乱不堪的业务应用系统。 写在最后 收集这些项目的信息虽然算不上技术活,但却是实实在在的花了不少时间整理,希望日后您在工作中,出技术方案/技术选型,或者面试的时候还能有个印象,说不定能帮住您解决个问题。 作者:l拉不拉米 链接:https://juejin.cn/post/7020684099882844167 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

18 个杀手级 JavaScript 单行代码

1、复制到剪贴板 使用 navigator.clipboard.writeText 轻松将任何文本复制到剪贴板。

  2、检查日期是否有效 使用以下代码段检查给定日期是否有效。

  3、找出一年中的哪一天 查找给定日期的哪一天。

  4、将首字符串大写 Javascript 没有内置的大写函数,因此我们可以使用以下代码。

  5、找出两日期之间的天数 使用以下代码段查找给定 2 个日期之间的天数。

  6、清除所有 Cookie 你可以通过使用 document.cookie 访问 cookie 并清除它来轻松清除存储在网页中的所有 cookie。

  7、生成随机十六进制 你可以使用 Math.random 和 padEnd 属性生成随机十六进制颜色。

  8、从数组中删除重复项 你可以使用 JavaScript 中的 Set 轻松删除重复项。

  9、从 URL 获取查询参数 你可以通过传递 window.location 或原始 URL goole.com?search=easy&page=3 从 url 轻松检索查询参数

  10、从日期记录时间 我们可以从给定日期以小时::分钟::秒的格式记录时间。

  11、检查数字是偶数还是奇数

  12、求数字的平均值 使用 reduce 方法找到多个数字之间的平均值。

  13、反转字符串 你可以使用 split、reverse 和 join 方法轻松反转字符串。

  14、检查数组是否为空 检查数组是否为空的简单单行程序将返回 true 或 false。

  15、获取选定的文本 使用内置的 getSelectionproperty 获取用户选择的文本。

  16、打乱数组 使用 sort 和 random 方法打乱数组非常容易。

  17、检测暗模式 使用以下代码检查用户的设备是否处于暗模式。

  18、将 RGB 转换为十六进制

  from:https://juejin.cn/post/7018106908129099807

NuGet修改默认包保存的位置

NuGet默认的全局包下载地址一般为:C:\Users\{username}\.nuget\packages     修改方法:  

  from:https://www.cnblogs.com/sword88/p/11490304.html

springboot整合mongodb,并配置账户名和密码登录验证

springboot pom.xml加入依赖

application.yml加入连接信息 mapper编写

Application启动添加注解

application.yml配置,这里之前碰到一个坑,mongodb的配置没有写host和port属性,只写了database和uri,这种方式在无密码验证的情况下,可以连接mongodb。但是在mongodb设置了密码登录后,就无法连接,一直提示 Caused by: com.mongodb.MongoCommandException: Command failed with error 13: 'not authorized on wxsb_dev to execute command { insert 这里我们说下,application.yml关于mongodb的两种配置 第一种,yml方式,注意这里的host port username password database,每个属性都要配置。

  第二种,uri方式

  之前就是配了如下的参数,导致一直出错,还以为是mongodb的用户权限配置出错导致,原来是配置文件出错,报错信息 Caused by: com.mongodb.MongoCommandException: Command failed with error 13: 'not authorized on wxsb_dev to execute command { insert

  from:https://www.it610.com/article/1283088113266081792.htm

用docker部署RabbitMQ环境

前置条件: 已经安装好docker 1.查找镜像(有2种方式) ①登录rabbitmq官网找到docker镜像,选择想要的镜像的tag https://www.rabbitmq.com/download.html https://hub.docker.com/_/rabbitmq 如果需要访问web管理页面,就选择tag为management的 ps:带有alpine的是用最小linux镜像构建的,体积最小可以达5M初学者不建议这么折腾,而且 Alpine Linux使用了muslmusl实现的DNS服务不会使用resolv.conf文件中的search和domain两个配置,通过DNS来进行服务发现时需要注意。,带有-management的是带有web控制台   ②直接用docker search 搜索,默认下载标签为latest的镜像(无法打开web管理页面)

ps:如果是普通用户登录,需要sudo,不然会提示错误

2.下载镜像(有时候网络问题超时,多尝试几次即可。我这里选择的是可以访问web管理界面的tag)

3.创建容器并运行(15672是管理界面的端口,5672是服务的端口。这里顺便将管理系统的用户名和密码设置为admin admin)

  from:https://www.cnblogs.com/yy-cola/p/11089800.html

centos文件解压缩7z

1.7z 安装

压缩test文件夹生成test.7z

  解压test.7z

  from:https://www.cnblogs.com/yy-cola/p/10971610.html

CentOS "Peer’s Certificate has expired" 问题

转载自:https://www.jianshu.com/p/64b75ae20750 在操作CentOS的时候发现下载软件,安装软件出现了标题中的错误。经排查,发现系统的时间与真实生活中的时间有偏差。 现在:2018-8-15 21:36:00 系统:2018-8-14 08:16:17 总之就是系统时间与现在的时间不一致。 方案 1、安装时间同步软件

2、同步时间,ntp的服务器可以自己搜索,国内应该也有相应的服务器

3、查看当前的系统时间是否正确

然后就不报这个错误了   from:https://www.cnblogs.com/lxmzq/articles/12532502.html

这个开源组织里的项目都是精品

前言 在开源中国里,不知道大家有没有留意到一个Java开源组织——Dromara? 这个组织是由Apache ShenYu(前身是Soul网关)的作者创立,多位Java开源作者参与的一个Java开源组织。 在开源中国社区,很多Java开源作者都是各自为战,独立运营项目。Domara组织的诞生就是为了联合Java开源的力量,共建社区,资源共享,共同推行中国Java开源事业的发展。 目前Dromara社区拥有9个GVP项目,和一些Star数量很高的项目。这些开源项目社区都很活跃,每一个都是能提高工作效率的精品开源作品。下面就来盘点下Dromara组织其中的4个开源项目。都是非常实用的工具,用好这些将会让你的生产效率大大提升! Sa-Token 首先我要介绍的是Sa-Token,可能是史上功能最全的轻量级 Java 权限认证框架。 简单的使用方式,丰富的特性,强大的功能,你有什么理由拒绝? 官方网站:sa-token.dev33.cn/ Gitee托管仓库:gitee.com/dromara/sa-… Github托管仓库:github.com/dromara/Sa-… Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。 Sa-Token 的 API 设计非常简单,有多简单呢?以登录认证为例,你只需要:

  至此,我们已经借助 Sa-Token 完成登录认证! 此时的你小脑袋可能飘满了问号,就这么简单?自定义 Realm 呢?全局过滤器呢?我不用写各种配置文件吗? 没错,在 Sa-Token 中,登录认证就是如此简单,不需要任何的复杂前置工作,只需这一行简单的API调用,就可以完成会话登录认证! 当你受够 Shiro、SpringSecurity 等框架的三拜九叩之后,你就会明白,相对于这些传统老牌框架,Sa-Token 的 API 设计是多么的简单、优雅! 权限认证示例(只有具备 user:add 权限的会话才可以进入请求)

  将某个账号踢下线(待到对方再次访问系统时会抛出NotLoginException异常)

  在 Sa-Token 中,绝大多数功能都可以 一行代码 完成:

  即使不运行测试,相信您也能意会到绝大多数 API 的用法。 想要了解更多请参考:gitee.com/dromara/sa-… Forest 一款极大程度解放你的Http接入工作的强大Http客户端框架。 Http协议很复杂吗?那是因为你还没有使用过Forest,虽然业内有很多其他优秀的Http客户端,但是你错过了Forest,将会错过一大片优雅美丽的森林。 官方网站:forest.dtflyx.com Gitee托管仓库:gitee.com/dromara/for… Github托管仓库:github.com/dromara/for… Forest 是一个开源的 Java HTTP 客户端框架,用来访问第三方服务 RESTful 接口。 它能够将 HTTP 的请求参数绑定到 Java 接口上,之后调用 Java 接口就等于在发送 HTTP 请求。一切面向于接口。 很多公司需要在 Java 后台调用许多第三方 HTTP 接口,比如微信支付、友盟等等第三方平台。 公司内部还有很多服务是用世界最好语言写的,接口自然也只能通过 HTTP 接口来调用。于是日积月累下来,在 Java 代码中就有许许多多各式各样的 HTTP 调用接口,而且调用方式也不统一,有 HttpClient 写的、有 OkHttp 写的、有自己包装的,光公司内部不同人包装的 HTTP 工具类就有两三种。 而且 url 基本写死在代码中,很难维护,不同接口又有不同的参数传输方式,有 GET 、有 POST,有 JSON 传输的、有 XML 传输的。 当有一个接口需要修改,完了,光找到代码在什么地方就要花半天时间。 而 Forest 能帮助我很好地将 HTTP 代码和业务代码解耦开来,请求调用者不必关心 HTTP 相关的细节。 自动拼接 HTTP 的各种参数 包括 URL、Header、Body 等等参数都能依靠 Java 注解来声明。 这里就举一个高德地图的栗子,来看看 Forest 是如何优雅的声明 HTTP 请求接口的:

  自动 JSON 和 XML 转换 其实,我们处理 HTTP 的工作时,除了浪费在组装各种请求参数外,大部分时间都花了在序列化和反序列化各种格式的数据上,如 JSON 和 XML。 以前用 HttpClient,这些重复的机械性工作都要自己来搞,很是麻烦。 用 Forest 就方便多了,比如要 POST 一个 JSON 对象,直接挂个 @JSONBody 就好了,就是这么清爽。

  和 Retrofit 以及 Feign 的比较 之前也用过这两块开源框架,都很强大,但各有优缺点。 Retrofit 的主要的问题时和 OkHttp 绑的太死,有些功能被 OkHttp 限制住了,比如我想处理 Get 请求传输 Body 数据这种非标准的 HTTP 请求就很难办到,而 Forest 可以随意切换 OkHttp 和 HttpClient 作为后端,需要用哪个时用哪个。 Retrofit 注解的丰富性也不如 Forest,比如要实现 HTTP 网络代理就要自己去写代码,而 Forest 提供了 @HTTPProxy 注解,设置一下就完事了。 如果要扩展自定义注解都是基于 OkHttp 的拦截器,不是特别方便,而 Forest 拦截器要比 OkHttp 的方便很多,提供 onInvoke, beforeExecute, onSccuess, onError 等回调方法,等于把一个请求的生老病死都涵盖了。 而 Feign 的问题则是和 Spring 绑的太紧,很多功能需要依赖 Spring 去做,太加了 Spring 相关包又太重了。 Forest 的核心包基本涵盖了所有 HTTP 所需功能和注解,不依赖 Spring,要轻量许多,但又不失方便性。 想要了解更多请参考:gitee.com/dromara/for… LiteFlow 一款超轻量,快速,稳定,可编排的组件式流程引擎/规则引擎。 解耦复杂系统的神器!如果你正在为设计一个复杂系统感到头痛,那么LiteFlow是是你不二的选择,超低的学习成本,强大的编排功能,让你的系统变得更优雅! 官方网站:yomahub.com/liteflow Gitee托管仓库:gitee.com/dromara/lit… Github托管仓库:github.com/dromara/lit… Liteflow为解耦复杂逻辑而生,如果你要对复杂业务逻辑进行新写或者重构,用liteflow最合适不过。它是一个轻量,快速的组件式流程引擎框架,组件编排,帮助解耦业务代码,让每一个业务片段都是一个组件。 使用Liteflow,你需要去把复杂的业务逻辑按代码片段拆分成一个个小组件,并定义一个规则流程配置。这样,所有的组件,就能按照你的规则配置去进行复杂的流转。同时Liteflow支持规则文件的热加载,即时完成修改生效。并提供多种持久化规则的方式的扩展。 使用LiteFLow,三大核心概念是组件,规则和上下文。 你需要这么像这样去定义你的组件

  然后去定义你的规则,LiteFlow支持xml,yml,json三种格式,这里以xml形式为例

  这样你的系统就会按照规则文件定义的方式,去执行你的业务组件。是不是很简单。 那规则文件定义在哪呢,LiteFlow并不限定你的规则文件来源,可以是本地文件,可以是注册中心,可以是任何数据库。LiteFlow提供了非常自由的接口供你扩展,你想存储在哪里都行。改变规则文件,即可实时刷新你的规则流程!如果你想做一个灵活度高,伸缩性强的系统,LiteFlow是不是非常适合呢。 LiteFlow为每一个请求都去开辟申请了一个Slot,你可以理解为上下文,所有的组件共享这个Slot。你可以在任意组件里通过对Slot的访问来获得任意数据,也可以存放任意数据。你也可以扩展Slot,自定义这个slot的属性。

  正因为有Slot的存在,才抹平了组件与组件之间的差异性,使得每一个业务组件之间无强依赖。这样的设计,就可以让你的系统高度自由化,组件复用,组件调换顺序得以方便的实现! LiteFlow还支持2种脚本语言的接入,目前支持Groovy和QLExpress两种脚本语言。你可以在xml/yml/json定义脚本,以下以xml为例:

  那么在什么地方定义是哪种语言的脚本呢,LiteFlow的脚本功能是一个SPI机制的实现,你依赖了哪个脚本包,就以哪种脚本的方式执行。 有了脚本语言的支持,连业务代码是不是都可以热部署了?香不香? LiteFlow的功能远不止这些,想了解更多,请到官网文档去查看了解。相信LiteFlow会让你感到优雅和惊艳。 想要了解更多请参考:yomahub.com/liteflow JPom 一款简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 中小公司团队DevOps的福音!轻量且强大,你不试试? 官方网站:jpom.io/ Gitee托管仓库:gitee.com/dromara/Jpo… Github托管仓库:github.com/dromara/Jpo… Jpom 是一款简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 在中小公司或者团队中传统项目部署、运维流程通用的方法是登录服务器上传新的项目包,执行相应命令管理,如果管理多个项目则重复操作上述步骤。 市面上有很许多 DevOps 软件但是这些软件基本都会是难上手,重依赖。Jpom 则是针对中小公司或者团队设计的一款低侵入,轻依赖的一款轻量级的 DevOps 软件。 项目主要功能及特点 创建、修改、删除项目、Jar包管理 实时查看控制台日志、备份日志、删除日志、导出日志 在线构建项目发布项目一键搞定 多节点管理、多节点自动分发 在线 SSH 终端,并且有终端日志和禁用命令 实时监控项目状态异常自动报警 cpu、ram 监控、导出堆栈信息、查看项目进程端口、服务器状态监控 多用户管理,用户项目权限独立(上传、删除权限可控制),完善的操作日志 系统路径白名单模式,杜绝用户误操作系统文件 在线管理 Nginx 配置文件、ssl 证书文件 一键安装(Linux)(推荐) 插件端 如果服务端也需要被管理,在服务端上也需要安装插件端 安装的路径位于执行命令目录(数据、日志存放目录默认位于安装路径,如需要修改参考配置文件:extConfig.yml )

  启动成功后,插件端的端口为 2123 服务端 安装的路径位于执行命令目录(数据、日志存放目录默认位于安装路径,如需要修改参考配置文件:extConfig.yml ) 如果需要修改数据、日志存储路径请参照 extConfig.yml 文件中 jpom.path 配置属性

  启动成功后,服务端的端口为 2122 访问管理页面 例如http://localhost:2122/ 特别提醒:一键安装的时候注意执行命令不可在同一目录下,即Server端和Agent端不可安装在同一目录下 如无法访问,检查下是否开启了防火墙systemctl status firewalld,如状态显示为绿色Active: active (running)可临时关闭防火墙systemctl stop firewalld,然后重启防火墙firewall-cmd --reload(建议仅测试环境下使用,生产环境下慎用) 如关闭防火墙后仍无法访问,并且使用的是云服务器,还需要到云服务器管理后台中关闭防火墙 想要了解更多请参考:gitee.com/dromara/Jpo… 最后 以上推荐的开源项目,仅仅是Dromara Java社区里其中4个,Dromara社区还有很多更为优秀的开源项目。每一个项目都凝结着每个作者日日夜夜的心血和付出,他们用开放的心态去拥抱这个世界,用技术的力量为中国的开源事业添砖加瓦。 我们努力发着光,为了照亮别人,也为了明亮自我。 同时也希望有更多的Java开源作者能加入Dromara社区,凝聚吾辈之力,汇聚诸君之绩,披荆斩棘,同舟共济。 最后,看到这的童鞋,点赞,分享,在看点起来啊! 作者:铂赛东🐶 链接:https://juejin.cn/post/7013553128121303053 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。