首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PermissionX 1.6发布,支持Android 12,可能是今年最大的版本升级

在这之后,就准备精力放到其他开源上,PermissionX应该短时间内不会再发布新版本了(修bug除外)。...持续Kotlin化 看过《第一行代码 第3版》的朋友应该知道,PermissionX本是从书中最后一章的项目实战演化出来的一个开源。...发现,Java工程和Kotlin工程其实只是在接口调用层面有一些用法上的区别,而在开源的底层实现上,其实不管是用Java来实现还是用Kotlin来实现,对开源的使用者来说都并没有任何区别。...如下图所示: 但是发现上述代码并不是总可以生效,比如我对MANAGE_EXTERNAL_STORAGE权限也加上同样的指定,只要一申请权限程序就会崩溃。...不过根据Google的最佳编程规范,我们仍然应该是用到哪个权限就去申请哪个权限,不要依赖于权限组去编写任何功能逻辑。

89410

程序员的武器,快来看看

一、常用开发工具 Guava 简介:Guava 是来自 Google 的一组核心 Java ,其中包括新的集合类型、不可变集合、图形以及用于并发、I/O、散列、缓存、基元、字符串等的实用程序!...它广泛用于谷歌内部的大多数 Java 项目,也被许多其他公司广泛使用。...当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: - 这个类从哪个 jar 加载的?为什么会报各种类相关的 Exception? - 改的代码为什么没有执行到?...作为一后端工程师,我们应该熟练掌握这些武器,为自己的武林之路做好准备。 当然,程序员的武器还不止这些。除了上述的技术和工具之外,还有一些重要的素养和能力,对于程序员来说也是必不可少的。...总的来说,程序员的武器包含的内容非常丰富,它不仅仅是技术和工具,还包括一些素养和能力。程序员需要不断学习、积累经验,才能成为一优秀的工程师。

84640
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何识别不同的编程语言(上)

    同样的,这也适用于编程语言,只是维基百科编程语言的类型分为了四十几种——这有点超乎的想象了。换句话来说,这TM太扯了。...首先,它一定是以.java作为后缀而结尾的。 ? 如上是一个Java代码文件,在最开始的地方写的是。它可以很好的用于组织类、目录结构、防止命名冲突等等。...通常来说,Java以一定的规律来命名的,即:公司名称.开发组名称.项目名称。...接着出现了长长的import开头的代码,这表示了它要调用的,上面就有相当数量的apache的了。Apache,Java世界的最大基金会之一,其代码软件是HTTP服务器Apache。...在哪个地方是一个缩进,你就应该用一个缩进: ? 不对,应该用两个空格: ? Python语言的人喜欢争论的是Tab和空格的问题,就好比是两个不同的帮派。

    3.1K60

    SpringBoot 2 种方式快速实现分库分表,轻松拿捏!

    它采用轮询算法和哈希算法来进行数据分片,支持分布式分表,但是不支持单分多表。 它以 Proxy 方式提供服务,在阿里内部被广泛使用已开源,配置比较容易,无需依赖其他东西,只需要有Java环境即可。...TDDL TDDL 是阿里巴巴集团开源的一款分库分表解决方案,可以自动SQL路由到相应的表上。它采用了垂直切分和水平切分两种方式来进行分表分库,并且支持多数据源和读写分离功能。...为了保证功能的全面性和兼容性,以及避免因低版本导致的不必要错误和调试工作,选择的版本都较高。...除此之外,使用了JPA作为持久化工具还引入了相应的依赖。 <!...,每添加一个数据就需要新增一份对应的数据连接配置。

    2.1K10

    Maven(一)初识Maven

    很简单,这不就是跟我们之前写程序时一样吗,需要用哪个项目中的哪些类,也就是用别人写好了的功能代码,导入jar即可。...时必须依赖另外一个jar一样),两种解决方案,第一种,选择B打包入A中,第二种,B也发布出去,等别人需要用A时,告诉开发者,想要用A就必须在导入Bjar。    ...3) 仓库 Maven为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何流行开源。通过Maven的一些衍生工具(如Nexus),我们还能对其进行快速地搜索。...1.4、Maven的优点  1)Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。  ...--groupId指的是项目的项目组,默认就是--> cn.gacl.maven.hello <!

    5K100

    五分钟搞懂spring-cloud-square

    点击下图红框中的Java试试: 如下图,Java还真不少呢,红框中的两位:okhttp和retrofit,都是大名鼎鼎: 至此,聪明的您应该猜到了:spring-cloud-square和上面提到的...square有关,具体的说应该是和square的java有关,例如okhttp和retrofit与SpringBoot的自动装配结合,玩出点花样来, 另外关键字还有spring-cloud,再加上...LoadBalance和Retrofit组合,也是同样的道理 于是,Spring官方就推出了上述组合,用AutoConfig再加少量代码(例如OkHttpClient添加Interceptor,功能是服务替换成...Spring一口气做了三个,然后起个名字叫做spring-cloud-square,然后,您爱用哪个就用哪个 咱们开发SpringBoot应用时,直接依赖spring-cloud-square-okhttp.jar...,再添加少量代码(如Builder实例化),就能方便的远程调用了; 看到这里,聪明的您应该明白了,spring-cloud-square原来这么简单,只是注册中心和和网络工具集成,为应用开发提供了一些辅助而已

    43120

    系统应用集成过程中的一些坑背景知识点正文埋坑后记参考资料

    最后,选择了 ReLinker,发现它的源码并不多,直接所有源码拷贝到项目中,修改了源码中某个流程的逻辑,用于解决自己这种场景下的 so 文件加载问题,搞定,具体在下面的埋坑一节讲述。...so 文件结构,解压到应用自身存放 so 的目录,不同版本系统路径有些不同,设备的版本是 android 5.1.1,api 22,三方应用的 so 文件存放目录就在 data/app/{}-...这是的猜想,这也才能解释,为什么一旦 data/app 下的 apk 删掉,应用就无法运行,而如果 data/data/{} 以及 data/dalvik-cache 缓存的 odex 源代码文件删掉...原理大体上应该是这样,感兴趣可以自行去看一下。 那么,这两个 so 文件加载的开源有什么用呢?看你是否有遇到过 so 文件加载异常了,的应用场景在埋坑一节里细说。...是两种方案都做了,如果运维能够按照正常步骤集成,那么 so 文件加载异常的概率应该就不会大,即使运维哪个步骤操作失误了,方案二也可以弥补。

    1K20

    与其他编程语言相比,Python有啥优势?

    1、Java和Python哪个更好? 作为世界上使用范围最广的编程语言,Java难免总是被拿来跟Python比较,而且,在编程语言的各种对战中,Python 与Java也是打得最热烈的。...那到底是Python好还是Java好? 2、Java和Python的区别 Java是一种严格的类型语言,这意味着必须显式声明变量。相比之下,动态类型的Python则不需要声明变量。...同时,C#从C++和Java遗传了很多原始表达的类C语法,C#必须遵循一定的规则,伴随着很多修饰词,还得代码段放在括号内。而Python只用SHIFTS键就可以让代码看上去很整洁。...没法说Python和C#哪个更好,Python比C#更容易学,开源更多,但C#的标准比Python的更好,其性能更高。...如果开发偏重于大量计算和数据处理的应用,应该选择Python。

    1.6K20

    WebGenerate 产品介绍

    开源项目的框架文件; 生成基础:根据所有数据表生成的基础代码; “新增项目管理”界面如下图: 图二 名称:用于平台显示的项目名称; 编码:用于工程java基础:生成的java文件所在的公共路径...、开源项目的框架文件; 生成基础:根据所有数据表生成的基础代码; “新增项目管理”界面如下图: 图四 名称:用于平台显示的项目名称; 编码:用于工程; 数据类别:支持MySQL、SQLServer...、Oracle; java基础:生成的java文件所在的公共路径。...小数位数:小数位数; 允许空:字段是否允许空; 默认值:字段类型的默认值; 主键:该字段是否为主键; 隶属项目:隶属于哪个项目; 隶属表:隶属于哪个表; 外键表:对应的外键表,用于在controller...生成代码的类别包括js、jsp、css、java、xml等,工程框架如下图: 框架图 从框架图上,我们可以了解生成代码的全部结构,在展示系统的开源产品、和业务系统的开源产品中间的内容,为WebGenerate

    1.3K70

    Java_基本概念

    同时,同一个文件夹里不允许有同名的文件(文件拓展也属于文件),但是不同的文件夹中可以存放不同的文件。 Java中的就是这样。...在项目中,可以源文件按照某种方式进行分类,将同一类的文件放到一个中,同一个中的类不允许重名,不同中的类可以重名。...如同操作系统文件管理一样,应该先创建文件夹,再将文件添加到文件夹里(指定文件存在于哪个文件夹里);不能先创建文件,然后指定其存在于哪个文件夹,因为有可能文件夹不存在 应该先创建,再往里添加文件 源文件的第一行用...,并用.进行路径分隔 public class 类{ public static void main(String[] args){ //.... } } 然后文件移动到相应到中...,包括类中的类以及自定义的类 类中的类 引入中的某个类 import java.util.Scanner; 引入中的全部类 import jaca.util.

    26110

    老大难的 Java ClassLoader 再不理解就老了

    javax 开头,它们的 jar 位于 JAVAHOME/lib/rt.jar文件中,我们常用内置[java.xxx](https://link.juejin.im?...target=httpExtensionClassLoader负责加载JVM扩展类,比如swing系列、内置的js引擎、xml解析器等等,这些通常以javax开头,它们的jar位于JAVA_HOME...否则可能会导致自定义加载器无法加载内置的核心类。在使用自定义加载器时,要明确好它的父加载器是谁,父加载器通过子类的构造器传入。如果父类加载器是 null,那就表示父加载器是「根加载器」。...如果你想知道有没有开源的包管理工具可以解决钻石依赖的,推荐你了解一下 sofa-ark,它是蚂蚁金服开源的轻量级类隔离框架。...这也是为什么 BootstrapClassLoader 被所有的类加载器视为祖先加载器,JVM 核心类自然应该被共享。

    1K20

    老大难的 Java ClassLoader,到了该彻底理解它的时候了

    BootstrapClassLoader 负责加载 JVM 运行时核心类,这些类位于 JAVA_HOME/lib/rt.jar 文件中,我们常用内置 java.xxx.* 都在里面,比如 java.util...ExtensionClassLoader 负责加载 JVM 扩展类,比如 swing 系列、内置的 js 引擎、xml 解析器 等等,这些通常以 javax 开头,它们的 jar 位于 JAVA_HOME...否则可能会导致自定义加载器无法加载内置的核心类。在使用自定义加载器时,要明确好它的父加载器是谁,父加载器通过子类的构造器传入。如果父类加载器是 null,那就表示父加载器是「根加载器」。...如果你想知道有没有开源的包管理工具可以解决钻石依赖的,推荐你了解一下 sofa-ark,它是蚂蚁金服开源的轻量级类隔离框架。...这也是为什么 BootstrapClassLoader 被所有的类加载器视为祖先加载器,JVM 核心类自然应该被共享。

    82730

    突破Java面试(36)-聊聊Dubbo的SPI机制

    2 考点分析 前面基础性的东西问完了,确定你应该了解Dubbo,那么自然问个稍微难的问题,就是SPI,先问问你这是个啥,然后问问你怎么实现的!...jar的META-INF/services/目录下放一个接口同名文件,指定接口的实现是自己这个jar里的某个类. ok了,别人用了一个接口,然后用了你的jar,就会在运行的时候通过你的jar的那个文件找到这个接口该用哪个实现类...你可以自己搞一个jar,META-INF/services/,放上一个文件,文件即接口,接口A,接口A的实现类=com.javaedge.service.实现类A2 让工程A来依赖你的jar,然后在系统运行时...,工程A跑起来,对于接口A,就会扫描依赖的jar,看看有没有META-INF/services文件夹,如果有,看再看有没有名为接口A的文件,如果有,在里面找一下指定的接口A的实现是你的jar里的哪个类...4 适用场景 插件扩展的场景,比如你开发了一个开源框架,若你想让别人自己写个插件,安排到你的开源框架里中,扩展功能 4.1 Java中的SPI 经典的思想体现,其实大家平时都在用,比如说JDBC Java

    54830

    揭秘java中无数人伤透脑筋最为神秘的技术之一——ClassLoader

    BootstrapClassLoader 负责加载 JVM 运行时核心类,这些类位于 $JAVA_HOME/lib/rt.jar 文件中,我们常用内置 java.xxx.* 都在里面,比如 java.util...ExtensionClassLoader 负责加载 JVM 扩展类,比如 swing 系列、内置的 js 引擎、xml 解析器 等等,这些通常以 javax 开头,它们的 jar 位于 $JAVA_HOME...否则可能会导致自定义加载器无法加载内置的核心类。在使用自定义加载器时,要明确好它的父加载器是谁,父加载器通过子类的构造器传入。如果父类加载器是 null,那就表示父加载器是「根加载器」。...如果你想知道有没有开源的包管理工具可以解决钻石依赖的,推荐你了解一下 sofa-ark,它是蚂蚁金服开源的轻量级类隔离框架。...这也是为什么 BootstrapClassLoader 被所有的类加载器视为祖先加载器,JVM 核心类自然应该被共享。

    49120

    一文读懂 Java 文件和结构,解读开发中常用的 jar

    同一个中的类名字是不同的,不同的中的类的名字是可以相同的,当同时调用两个不同中相同类的类时,应该加上加以区别。因此,可以避免名字冲突。...下面是管理你自己 java 中文件的一种简单方式: 类、接口等类型的源码放在一个文本中,这个文件的名字就是这个类型的名字,并以.java作为扩展。...、 2、如同文件夹一样,也采用了树形目录的存储方式。同一个中的类名字是不同的,不同的中的类的名字是可以相同的, 当同时调用两个不同中相同类的类时,应该加上加以区别。...声明应该在源文件的第一行,每个源文件只能有一个声明,这个文件中的每个类型都应用于它。...Java基础类,也就是Java doc里面看到的所有的类的class文件。 ?

    7.1K40

    【JavaSE专栏22】一文吃透Java的包机制

    此外包还可以用于访问控制,通过类和接口声明为私有或公共,可以限制对代码的访问权限。 在 Java 中,使用关键字 package 来声明一个类或接口所属的。...Java 标准中的类和接口也使用了的方式进行组织,例如 java.lang、java.util 等。这些提供了各种常用的功能和工具类,方便开发人员在应用程序中使用。...总而言之,Java 是一种用于组织和管理类、接口和资源的机制,通过唯一的声明语句,可以将相关的类组织在一起,并提供更好的可读性、可维护性和封装性。...当尝试编译此代码时,编译器无法确定使用哪个 MyClass 类,因为它们具有相同的名称,这将导致编译错误和命名冲突。 要解决这个问题,可以通过显式指定完整的路径或者使用不同的类来避免命名冲突。...当我们在代码中使用 MyClass 时,编译器无法确定应该引用哪个包下的 MyClass 类,从而导致冲突。

    53120

    轻量级Golang IoC容器——iocgo

    1. iocgo简介习惯于Java或者C#开发的人应该对控制反转与依赖注入应该再熟悉不过了。...在Java平台有鼎鼎大名的Spring框架,在C#平台有Autofac,Unity,Windsor等,当年C#开发时用的最多的就是Windsor。...2. iocgo如何使用2.1 iocgo的安装现在go官方版本已经出到1.17了,当然在代码中其实也没有用什么新版本的新特性,于是就用1.15版本或者之后的Go版本即可。...DependsOn 这个主要是指定构造函数中的某个参数在通过容器获得对应的实例时,应该通过哪个Name去获得对应的实例。...Default 这个主要用于设置一个interface对应的默认的实例,也就是如果没有指定Name的情况下,应该哪个实例。

    79720

    如何在Java项目中与C++混合开发 发布于

    简介 如果读者是Java领域的开发人员,在研究Java底层逻辑的时候一定离不开源码分析。...问题导致安装失败,所以我更推荐第二种安装方法: 在mingw-w64页面底部下载x86_64-win32-seh 压缩解压到合适的位置后目录中的bin文件夹添加到环境变量中完成安装 安装并配置环境变量完成后在...的测试项目,本章中的案例提供的具体的功能实现方法用于所有项目。.../CPUWatchDog.java这个命令有3个参数: -h .:指定生成的 JNI 头文件放在哪个目录下 src/......Java Web应用开发 使用场景:在Java Web应用中,JNI主要用于调用本地方法进行高性能计算,或者用于访问操作系统API,如:获取系统信息、操作文件系统等。

    41330
    领券