展开

关键词

Android--利用APT+kotlinpoet实现组件化开发Router机制

利用注解解析器(APT)和生成器(kotlinpoet)可以根据注解在编译期间就生成相应的,业界称之为Router机制 一、Gradle配置及架构分层 在实现Router机制之前,我们还可以对项目的组织架构进行优化 gradle libbase的gradle改造为: plugins { id 'com.android.library' id 'kotlin-android' } //使用一个变量,减少量 } } MSG.print(routerMetaByGroup.toString()) // 5.利用kotlinpoet生成 throw RuntimeException() } } } /** * 利用kotlinpoet生成 ,运行时我们需要获取到它,加载类并利用反射实例化 1.获取生成类的工具类 /** * 获取所有生成的全路径 * Created by aruba on 2021/11/23. */ object

13720

、低、全的区别

这两年IT届的各种新词汇层出不穷,在这个普通程序员满天飞的世界“低”、“零”等新兴概念尤显突出。 一直以来小型互联网企业对于如何降低开发成本这一问题苦恼不已,而零或低的出现或许是这些企业的福音。 "零",广义上指通过可视化的页面进行拖拉拽组合配置搭建,无需编写即可实现软件功能,或者一些服务可以个性化配置。 但是,零的缺点也是显而易见的,如果有产品有个性化需求将很难实现,大家的产品也会千篇一律。 “低”,与“零”不同,低需要有一定的编能力。 其灵活性也是不可忽略的,对于大多数开发需求来说低足以胜任。是快速开发交付产品的首选。 总结 简单来说:零简单易用,低则可胜任更复杂的应用。

39100
  • 广告
    关闭

    腾讯云618采购季来袭!

    一键领取预热专享618元代金券,2核2G云服务器爆品秒杀低至18元!云产品首单低0.8折起,企业用户购买域名1元起…

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

    和坏

    要写出好,首先需要提升品位。 很多软件工程师写不好,在评审他人的时也看不出问题,就是因为缺乏对好标准的认识。 现在还有太多的软件工程师认为,只要可以正确执行就可以了。 好的特性 好具有以下特性。 1. 实现的共享,不仅需要在意识方面提升,还需要具有相关的能力(如编写独立、高质量的库)及相关基础设施的支持(如搜索、引用机制)。 7. 表1  对一流特性的汇总分类 坏的例子 关于好,上面介绍了一些特性,本节也给出坏(Bad Code)的几个例子。 好从哪里来 上一节说明了好的特性,本节来分析好是如何产出的。 ▊  好不止于编从哪里来? 对于这个问题,很多读者肯定会说:“好肯定是写出来的呀。”

    7110

    和坏

    要写出好,首先需要提升品位。 很多软件工程师写不好,在评审他人的时也看不出问题,就是因为缺乏对好标准的认识。 现在还有太多的软件工程师认为,只要可以正确执行就可以了。 好的特性 好具有以下特性。 1. 实现的共享,不仅需要在意识方面提升,还需要具有相关的能力(如编写独立、高质量的库)及相关基础设施的支持(如搜索、引用机制)。 7. 表1  对一流特性的汇总分类 坏的例子 关于好,上面介绍了一些特性,本节也给出坏(Bad Code)的几个例子。 好从哪里来 上一节说明了好的特性,本节来分析好是如何产出的。 ▊  好不止于编从哪里来? 对于这个问题,很多读者肯定会说:“好肯定是写出来的呀。”

    8220

    Git 管理(提交和回退)

    Git的主要功能是管理,版本管理,分支管理。 在远程管理平台上,项目的被管理在一个远程仓库中,在本地,保存在一个本地仓库中。 通过Git,本地对进行修改后,可以提交到远程仓库,当远程的被他人修改后,也可以拉取到本地。 一、工作区、暂存区和仓库区 将从远程仓库中拉到本地仓库后,本地仓库的与远程仓库的最新保持一致。这时候可以在本地仓库中对进行修改。 一开始从远程仓库中拉取最新保存在本地仓库中,开发人员还没有对做任何的修改,所以处于工作区未修改状态。 回退提交到远程仓库的 如果已经推到了远程仓库,但是发现有问题,需要将回滚,还是可以使用 git reset 来回滚

    18020

    KDJ计算_Python

    import numpy as np def KDJ(date,N=9,M1=3,M2=3): datelen=len(date) arra...

    79320

    ubb转化html

    ubb转化html public static string UbbDecode(string str) { str = HtmlEncode(str); str = Regex.Replace | RegexOptions.IgnoreCase); } 本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不

    18620

    Node.js SDK console变web

    Node.js Web应用程序,如下图箭头所指,在npm上右击点安装新的npm包 image.png image.png image.png Node.js SDK在使用api explorer生成的调试时也是有坑的 Node.js console变web很容易,在server.js主体部分加个全局变量 var result = ""; 然后在client.DescribeCdnDomainLogs()中给其赋值 当时在vs2019调试node.js console时,终端结果闪退,从那时起,node.js调试我都是在cmd命令行下进行 最后再将这个被赋值的全局变量在Web页面打印出来。

    34930

    化语言: Charj

    去年,和公司的大佬讨论了一系列关于化,还记录了一些笔记。在那之后,我开始了各种尝试:如何将转变化。原先有一些思路,而后过了一年之后,慢慢地练习,又有了一些新的收获。 官方维护的仓库(grammars-v4)包含了大量的 Antlr 语法解析案例,可以找到市面上一些主流的和非主流的实现。 设计统一语言模型。即设计出一套能兼容不同语言的语言模式。 相关资源: 详细的设计可以参考我写的那一篇:《如何为建模?》 即从 Java 到 JVM 虚拟机字节 -> Dalvik 虚拟机字节 -> 优化过后的 Dalvik 字节 -> ART 机器。 而我们再回过到来看,编语言本身也是一种中间表示,因为机器运行的是靠机器。即,那句经典的话:是写给人看的。

    24520

    JNI:Java调用本地

    JNI概述 JNI 是 Java Native Interface 的简称 Java是跨平台的编程语言,但是在有些时候仍然是有需要调用本地(这些通常是由 C 与 C++ 编写的)。 这个 JNI接口提供了Java与操作系统本地相互调用的功能。 2. C/C++的步骤 在 Java 类中声明一个native方法 public native void sayHello(); 使用 javah 命令生成包含 native 方法声明的C/C++头文件 如果需要移植到别的平台上,那么需要重新编写native Java 是强类型的语言,而 C/C++并不是。 因此,在编写JNI时要更小心 总之,必须在构建Java程序的时候,尽量少用本地 Visual studio环境配置://www.cnblogs.com/sysu-huangwei/p/7466481

    9430

    Java中构造块,静态块区别

    静态块>mian方法>构造块>构造方法。 其中静态块只执行一次。构造块在每次创建对象是都会执行。 1 普通块 1 //普通块:在方法或语句中出现的{}就称为普通块。 1 //构造块:直接在类中定义且没有加static关键字的块称为{}构造块。 第二构造块 构造方法 3.态块: 1 //静态块:在java中使用static关键字声明的块。 2 //每个静态块只会执行一次。由于JVM在加载类时会执行静态块,所以静态块先于主方法执行。 3 //如果类中包含多个静态块,那么将按照"先定义的先执行,后定义的后执行"。 4 //注意:1 静态块不能存在于任何方法体内。

    8920

    优化技巧·编写好习惯·规范

    使用同步块替同步方法 除非能确定一整个方法都是需要进行同步的,否则尽量使用同步块,避免对那些不需要进行同步的也进行了同步,影响了执行效率。 28. 推荐以后写并发的时候在复习一遍 规范 注释 不要给不好的名字加注释,一个好的名字比好的注释更重要 不要“拐杖注释”,好 > 坏 + 好注释 在文件/类级别使用全局注释来解释所有部分如何工作 ,而非明显的细节 不要在中加入的著作信息,git可以干的事情不要交给中的html注释是一种厌物, 增加阅读难度 注释一定要描述离它最近的 注释一定要与对应 公共api需要添加注释 不要添加日志式注释,比如修改时间等信息(git可以做的事情) 注释一定是表达之外的东西,可以包含的内容,注释中一定不要出现 如果有必要注释,请注释意图(why),而不要去注释实现(how),大家都会看 给测试函数取一个完整性的描述性名字,比如 Test _ 测试与生产一样重要 如果测试不能保证整洁,你就会很快失去他们 每个测试一个断言,单个测试中断言数量应该最小化也就是一个断言 FIRST

    20010

    高亮效果 闲聊

    值相同的并且连续的像素为背景 //xn.image_background_opacity(data, canvas_width, canvas_height); // 将修改后的复制回画布中

    18540

    托管与非托管

    托管是一microsoft的中间语言(IL),他主要的作用是在.NET   FRAMEWORK的公共语言运行库(CLR)执行前去编译源,也就是说托管充当着翻译的作用,源在运行时分为两个阶段 :       1.源编译为托管,(所以源可以有很多种,如VB,C#,J#)       2.托管编译为microsoft的平台专用语言。       这些服务帮助提供独立于平台和语言的、统一的托管应用程序行为。       Visual Basic .NET和C#只能产生托管。如果你用这类语言写程序,那么所产生的就是托管。 什么是非托管(unmanaged code)?       非托管就是在Visual Studio .NET 2002发布之前所创建的。 托管直接编译成目标计算机的机械,这些只能运行在编译出它们的计算机上,或者是其它相同处理器或者几乎一样处理器的计算机上。非托管不能享受一些运行库所提供的服务,例如安全和内存管理等。

    57230

    什么样的叫好

    的本质还要在机器上运行,好的不单单的纯粹的简单的几个字符的问题,好的不仅仅是排版上或者语法上好看,还要能经过产品的测试验证,这是评判好坏的最准确的标准。 不同水平的人对的理解是不一样的,现在就是三种水平的人分析对待的不同态度,能够在表面上看到水准,深层次只能靠实践验证。 ? 在初级程序员的眼里就是天了,能够用实现领导布置的技术任务,就是最大的满足了,几乎所有的精力都在上体现出来,拿到需求的第一时间就是会问自己如何去写,是不是会写,如果不会写该怎么办,这也是通常刚入门的程序员要克服的事情 中级程序员已经能够对有基本的掌控能力了,拿到需求之后已经开始考虑用什么方式实现起来更加稳定可靠,这个阶段的程序员编水平属于基本功能做的可靠扎实,已经能够驾驭了,拿到需求之后不是先问如何实现 当然基本的需要好的规程规范,需要遵循基本的编程语法,起让人能看懂,如果一个人写的只能自己看懂,这属于比较失败的程序员,越是复杂的功能通过的实现变得简单化,这才是程序员追求的目标,现在几乎巨头公司都有自己的编规范

    36020

    如何用建模?

    引子 1:文本即即测试数据 PS:在那一篇《如何同时学会两门编程语言?》中,我大抵提到了这一小节的内容,所以它对你来说可能有些重复。 首先,让我们来看段。 更多地测试示例可以见:https://github.com/phodal/chapi 引子 2:即语法,语法即转换为特别的模型,我们还需要做的一件事情是:识别描述,模型描述模型 终于,我们回到了正题:如何用描述。事实上,我们已经讲完了这个故事的大纲,剩下的就只是一些连线了。 好激动,我们终于要开始造轮子了,那么我们要怎么开始呢? 0. 设计模型 我们已经有足够的知识,来将一段转为数据模型,并设计一个测试体系来保障的健壮性(测试 + TDD)。 将数据放到容器中 在我们有了模型之后,我们便可以编写模型的,作为容器来放置内容。

    50410

    什么样的是好

    关于什么是好,软件行业烂大街的名词一大堆,什么高内聚、低耦合、可复用、可扩展、健壮性等等。 坏味道 什么是好,不好定义,但是关于什么是里的"坏味道",比较容易搞清楚,避免里的“坏味道",离好的就不远了,坏味道一二三及推荐做法: 重复 函数太长 如果太长(一般不宜超过200行 try块只包住真的可能发生异常的语句,最小原则,同样因为try包起来的要有额外开销 不用的资源未及时清理掉,流及时关闭 如IO句柄,数据库连接,网络连接等。 测试如下: 复制 int temp; long before = System.currentTimeMillis(); for (int i = 0; i < 10000000; i++) { 看了下stackoverflow,具体得看处理器,现处理器好多对于乘除已作优化,参看redis rehashing.c hash key计算的片段,因为hash key的计算会高频度用到 ?

    39520

    什么样的是好

    关于什么是好,软件行业烂大街的名词一大堆,什么高内聚、低耦合、可复用、可扩展、健壮性等等(作者【CoderBaby】)。 什么是好,不好定义,但是关于什么是里的"坏味道",比较容易搞清楚。 避免里的“坏味道",离好的就不远了,坏味道一二三及推荐做法: 转载请注明出处: https://www.cnblogs.com/NaughtyCat/p/what-is-good-codes.html 重复 函数太长 如果太长(一般不宜超过200行,但不绝对),你自己都不太容易读懂,请不要犹豫,拆成小函数吧。 但是其复杂的数据结构和锁优化,了额外的内存消耗 未完待续,困了 注: 参考《Effective java》《重构 —— 改善既有的设计》《深入分析JAVA web技术内幕》  本文版权归作者和博客园共有

    32560

    提高质量:审查

    审查的前提:   1、统一项目组内部审查必要性思想,消除猜忌,建立融洽的团队合作气氛。审查不是挑刺。不建议使用审查中问题的发现率作为绩效考评标准。    2、确立合乎自己项目组要求的规范文档;   3、确立审查者:项目组成员少于3个,组长是审阅者。多了则要适当按模块分小组,每组不多余3人,每小组选经验丰富的程序员做为审阅者。 要求审阅者与被审阅人最好为同一模块开发者。小组长的工作安排时就应考虑其审查职能,并相应减少其工作量。   4、确立审查标准、部署审查工具。普通程序员提交之前由审阅者实施审查。 审阅者多于2人同时又有提交时,审阅者互审。   审查内容:   1、风格。通过复查,一方面督促开发人员按照规范编写,另一方面也使开发人员自身形成良好的编程习惯。 但审查无疑也带来了很高的价。时间、人力与质量,其本身就是鱼和熊掌不可兼得。因此不同公司、同公司不同发展时期就会采取不同的复查策略。

    15030

    审计(二)——SQL注入

    正常情况下,这种网站内部直接发送的SQL请求不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 SQL语句,如果用户输入的数据被构造成恶意 SQL ,Web 应用又未对动态构造的 SQL SQL操作类 Select……, mysql_query… 文件操作类 Move_uploaded_file,copy,/upload/等 命令执行类 System,popen等常见的系统命令做关键词 执行类 正则快速查询 通过一些查询语句的特征,用正则匹配源中的SQL语句所在位置 3. 辅助工具 使用Seay源审计系统的自动审计功能来辅助我们快速找到SQL注入可能存在的位置。 4. where.*=\{ 根据上下文审计是否存在漏洞。 下图中,id参数直接进行了拼接,有可能存在SQL注入的,这里是两处sql执行操作一处是select,一处是update。 有关SQL注入的审计的内容到此就告一段落了,下一课将给大家带来更多漏洞的审计讲解,敬请期待~ 待续

    13020

    相关产品

    • 腾讯云代码分析

      腾讯云代码分析

      腾讯云代码分析(TCAP),用心关注每行代码迭代、助您传承卓越代码文化!精准跟踪管理代码分析发现的代码质量缺陷、代码规范、代码安全漏洞、无效代码,以及度量代码复杂度、重复代码、代码统计。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券