package io.github.linwancen.code.modify; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets...; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.concurrent.ConcurrentSkipListSet...; import java.util.stream.Collectors; /** * 删除未使用的类 * 仅依赖 JDK */ public class DeleteNotUsage....getParentFile(); // } else if (CLASS_PATH.endsWith("main")) { // gradle...("target|.git"); /** * 添加自行定义的会被调用到的注解或关键字 */ private static final Pattern USED_PATTERN
1、检查ObjectiveC项目中 未使用的方法 准备工作 已自己的项目为例,将工程进行build,后show in finder ? 显示包内容 ?...工具地址 https://github.com/nst/objc_cover 此脚本方法只能检测 OC 可能未使用的方法,不适用其他场景 开始检测 ? 输出 ?...所有的未使用方法都会被列出,包含pod三方库中的方法; 原理 原理利用 Mach-O 文件的结构和展示内容: __TEXT:__objc_methname: 中包含了代码中的所有方法; __DATA...+\s(.+)\])") 2、检查Swift项目中未使用的方法、属性、类 工具地址 https://github.com/zColdWater/swift-scripts 此脚本方法只能检测 swift...可能未使用的方法、属性、类 开始检测 1. cd 2.
Find unused Objective-C imports. gitHub sudo gem install fui Find Unused Classes...
之前写过一篇maven项目中java与scala如何混用,今天来看看gradle项目中如何达到同样的效果: 一、目录结构 基本上跟maven一样,tips:这一堆目录结构不用死记,后面会讲如何用gradle...命令快速生成 二、build.gradle配置 1 group 'yjmyzz' 2 version '1.0-SNAPSHOT' 3 4 apply plugin: 'java' 5 apply...插件配套出现) 8 9 //这里是关键(把java与scala的源代码目录全映射到scala上, 10 // 这样gradle compileScala时就能同时编译java与scala的源代码)...及java的src目录) 32 task "createDirs" << { 33 sourceSets*.scala.srcDirs*.each { it.mkdirs() } 34...cDirs (注:这是缩写方式,与gradle createDirs完全相同) 编译: gradle compileScala 生成jar包: gradle jar 生成带启动脚本的可运行包: gradle
一、目录结构 二、build.gradle配置 group 'yjmyzz' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'scala...) //这里是关键(把java与scala的源代码目录全映射到scala上, // 这样gradle compileScala时就能同时编译java与scala的源代码) sourceSets { main...= ['src/test/scala', 'src/test/java'] } java { srcDirs = [] } } } //可选(项目初始化时,可用gradle cDirs生成scala及...java的src目录) task "createDirs" << { sourceSets*.scala.srcDirs*.each { it.mkdirs() } sourceSets*.java.srcDirs...,与gradle createDirs完全相同) 编译: gradle compileScala 生成jar包: gradle jar 生成带启动脚本的可运行包: gradle installDist
推荐三款工具,可根据项目情况进行选型: PurgeCSS PurgeCSS 通过分析你的内容和 CSS 文件,首先它将 CSS 文件中使用的选择器与内容文件中的选择器进行匹配,然后它会从 CSS 中删除未使用的选择器...由于其能够模拟 HTML 和 JavaScript 的执行,UnCSS 可以有效地从 web 应用程序中删除未使用的选择器。 但是,其模拟行为可能会在性能和实用性方面带来成本消耗。...例如,要从 Pug 模板文件中删除未使用的 CSS,你需要将 Pug 转换为 HTML 并在 jsdom 中模拟页面。...目前,在删除未使用的 CSS 方面,UnCSS 在某些情况下可能是最准确的工具。...提取器是一个函数,它的作用是根据文件内容提取文件中使用所有的 CSS 选择器。它可以完美地删除未使用的 CSS。
@RequiredArgsConstructor@AllArgsConstructor @Data @Cleanup @Builder lombok简介 lombok是一个java...类库,能够自动植入开发者的编译器来辅助java开发。...使用lombok,可以使用一个注解来代替getter等方法的编写。...使用起来非常简单,maven pom.xml文件中加入如下依赖, org.projectlombok <artifactId...private Long id; private String name; private String department; private Long number; } 测试代码如下: 从图片中可以看出有编译错误代码
克尼汉评价他:牛顿说他是站在巨人的肩膀上,如今,我们都站在里奇的肩膀上 问题:需要用到一个jar包,使用gradle配置下载不下来就放在了本地,结果每次更新build.gradle的配置后都要从project...解决:在项目中创建与src同级的目录lib 在build.gradle文件中加入以下代码 repositories { flatDir { dirs 'lib' }
在我的Dockerfile中这样安装 # 安装项目所需的第三方 RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
Dear,大家好,我是“前端小鑫同学”,长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~ 【规范】统一项目中包管理器的使用 背景介绍: 我们这里暂不说各种包管理器的优缺点,在实际开发中遇到的一个问题就是...,你本地经常使用cnpm来安装,但Jenkins自动构建用的npm,偶尔就会出现本地开发很正常但是Jenkins构建失败报警了,为了避免类似问题的出现,也应该要将能统一的都统一规范。...实现原理: 通过preinstall来在执行install前执行指定脚本; 在preinstall脚本中获取当前执行进程中包管理器的唯一属性; 确定执行的和预设的是否一致,拦截或者放行。.../preinstall.js" } } 三、only-allow方案 only-allow为pnpm包管理器组织开源限制方案,only-allow内部使用which-pm-runs来获取当前执行的包管理器后再进行判断拦截...,仅需在安装依赖后调整scripts中的内容即可,在vite项目中有使用。
可用性 — 它如何提高系统的整体可用性? 可观测性 — 系统的状态推理有多容易? 2 缓存类型 有三种不同类型的缓存: 2.1....分布式缓存 由于缓存在多个实例之间共享,缓存的数据可由系统中的任何节点访问(用例:多个实例需要共享一个公共缓存) 由于网络延迟,从远程节点访问数据可能需要一些时间,但并非总是如此 由于每个实例将其更改传播到其他节点...如果我们为我们的缓存设置长时间的 TTL,比如近 24 小时,我们可能会读取陈旧的数据,另一方面,较短的 TTL 将增加新鲜度,但经常调用服务器可能会导致可用性和延迟问题。...我们将讨论一些策略,如面向事件驱动架构的主动失效和对于服务器不发出事件的情况下的后台刷新。 主动失效 → 用于事件驱动架构的最常见用法。...每当服务器发出事件时,客户端都会监听它并更新缓存并清除不必要的缓存数据。我们可以设置较长的 TTL,知道过时的条目将被主动失效。
通过属性文件来配置MySQL 一、常见的连接数据的方式 编码方式,将数据库配置信息直接写入JAVA代码之中 Properties属性文件,将数据库配置信息写在属性文件中,然后在程序中读取该属性文件。...(2) 使用Class对象的getResourceAsStream()方法,把指定的属性文件读入到输入流中,并使用Properties类中的load()方法,从输入流中读取属性列表(键/值对); private...所以,一定要想办法复用数据库的连接。使用连接池可以达到复用数据库连接的目的。...二、连接池概念 连接池是用来管理Connection 对象的,连接池可以从数据源中获得连接,连接池中可以有若干个数据库连接对象,这些连接对象可以被重用。...res-type>javax.sql.DataSource Container 4、在代码中获取数据库连接 // 注意导入的包名
在使用docker时,会随着时间的累积,产生越来越多的未使用的镜像和启动失败、停止使用的容器,且不会再使用到。...这部分数据无用且还占用空间,这时我们需要将无用的数据一键删除掉 一键删除无用容器或已停止容器 需Docker 1.13版本以后 docker container prune -f 一键删除未使用的
前言 在iOS项目开发的过程中,如果版本迭代开发的时间比较长,那么在很多版本开发以后或者说有多人开发参与以后,工程中难免有一些垃圾资源,未被使用却占据着api包的大小!...这里我通过Python脚本来查找项目中未被使用的图片、音频、视频资源,然后删除掉;以达到减小APP包大小的目的!...,这里垃圾资源文件删除分为两部分一部分是Assets.xcassets里面的,一部分是直接导入工程目录中的资源,如果是Assets.xcassets垃圾资源直接删除就行了,但是如果是直接导入到工程目录里面的资源...elif os.path.isdir(filepath): shutil.rmtree(filepath,True) shutil.rmtree(rootdir,True) # 直接导入到工程中的图片需要删除...,开始从_resNameMap中移除已被处理过的资源文件 # 并删除本地的对应的资源文件 for item in _needDelResName: tmp_path = _resNameMap
这个主要看Java项目所使用的Gradle的版本。 Gradle 3.4 新增了Java-library插件,java-library插件使用了新的依赖配置implementation和api。...Gradle 3.4 之前的版本 java插件 apply plugin: 'java' 添加依赖 dependencies { compile 'commons-httpclient:commons-httpclient...:3.1' compile 'org.apache.commons:commons-lang3:3.5' } Gradle 3.4+ 使用java-library插件替换java插件 apply plugin...api:当其他模块依赖于此模块时,此模块使用api声明的依赖包是可以被其他模块使用。...implementation:当其他模块依赖此模块时,此模块使用implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。
使用 Kotlin , Groovy ,Java 开发一个自己的 Gradle 插件 先上效果图: ? ?...其中,compile gradleApi() 是使用 Gradle 的 API 依赖。...插件的执行逻辑的实现类 ?...然后,我们在另外项目 reakt 中使用刚才开发的插件: build.gradle buildscript { ext { kotlinVersion = '1.2.0'...---- Gradle 插件工程源代码: https://github.com/EasySpringBoot/kor 使用插件的工程源代码: https://github.com/EasyKotlin/
上一篇: Kafka 单机和分布式环境搭建与案例使用 介绍了分布式Zookeeper集群的搭建和Kafka集群的搭建,接下来学习一下Storm集群的搭建。...安装与配置 在上一篇中介绍了Zookeeper集群的安装方式,这里不再介绍,请查看:Kafka 单机和分布式环境搭建与案例使用 Storm安装与配置 1、选择合适的版本进行下载Storm 下载地址:http...(2)将导出的jar上传到服务器上,nimbus主机即可,我这里上传到:/home/xuliugen/temp 目录下, (4)在2台supervisor主机上创建项目中需要的目录: /home/xuliugen...相关阅读: Apache Kafka:下一代分布式消息系统 Kafka简介、基本原理、执行流程与使用场景 Kafka 单机和分布式环境搭建与案例使用---- 版权声明 Java后端技术所推送文章,为本人原创...若涉及版权问题,烦请原作者联系我们,我们会在24小时内删除处理,谢谢!^_^ QQ:1573876303。
链表是一种常见的数据结构,它由一个个节点组成,每个节点包含一个数据元素和指向下一个节点的引用。在Java中,可以使用类来表示链表节点,然后使用这些节点构建链表并实现插入、删除和反转等操作。...delete方法用于删除特定值的节点。...如果链表为空,则直接返回;如果头节点是要删除的节点,则将头指针移动到下一个节点;否则,通过遍历链表找到要删除节点的前一个节点,然后将前一个节点的next引用指向要删除节点的下一个节点。...我们使用三个指针:prev表示前一个节点,curr表示当前节点,next表示下一个节点。...接着,我们删除了一个节点,并打印删除节点后的链表。最后,我们对链表进行反转,并打印反转后的链表。 通过以上代码,我们实现了链表的插入、删除和反转等操作。
包的使用 一个模块就是一个 py 文件,在 Python 里为了对模块分类管理,就需要划分不同的文件夹。...方法被调用了--------') 可以使用以下几种方式来导入模块,使用模块里的方法。...直接使用包名.模块模块名导入指定的模块。 import newmsg.sendmsg 使用from xxx import xxx 方式导入指定模块。...from newmsg import sendmsg 使用__init__.py文件,导入包里的指定模块。 可以在newmsg里创建__init__.py文件,在该文件里导入指定的内容。...() 不可以使用 recvmsg 模块,因为 __init__.py文件里没有导入这个模块 使用__init__.py文件,结合__all__属性,导入包里的所有模块。
为什么项目中不用 Mybatis 的二级缓存?...在分布式环境下,由于默认的 MyBatis Cache 实现都是基于本地的,分布式环境下必然会出现读取到脏数据,需要使用集中式缓存将 MyBatis 的 Cache 接口实现,有一定的开发成本,直接使用...,使用了缓存,缓存的命中率是 0.5。...源码分析 源码分析从 CachingExecutor 的 query 方法展开,源代码走读过程中涉及到的知识点较多,不能一一详细讲解,读者朋友可以自行查询相关资料来学习。...CachingExecutor 的 query 方法,首先会从 MappedStatement 中获得在配置初始化时赋予的 Cache。
领取专属 10元无门槛券
手把手带您无忧上云