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

这代码写太烂了!你以为真想写“垃圾代码”

很多时候作为底层“码农”我们并没有选择权,然后我们青春就浪费在了重复写垃圾代码里,浪费在了“项目目标里”,自己得到也就是比正常小白领多一点薪水,但是自己发展空间被严重限制了 有些小伙伴离职原因可能就是...3、何时重构 任何情况下都反对专门拨出时间进行重构。重构本来就不是一件应该特别拨出时间做事情,重构应该随时随地进行。...三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加新特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...同一个类中有相同表达式:提炼出重复代码,然后让两个地方都调用被提炼出来那一段代码; 两个互为兄弟子类内含有相同表达式:提炼出相同代码,将它推入超类内; 两个毫不相干类中出现:将重复代码提炼到一个独立类中...如果你某个抽象类其实没有起到太大作用,函数上某些参数未被使用…可以移除它们了。 14、令人迷惑暂时字段 某个实例变量仅为某种特定情况而设。这样代码让人不易理解。

93530

以为发现了Android 14系统中一个bug,然而...

事情起因是这样,某天工作群里,看到我们部门同事guting发了这样一条消息。 看到这条消息之后第一感觉就是,貌似和我印象中Android 14行为并不一致。...因为没有任何错误日志可以观察到这种现象是不应该印象中用法不正确的话是会直接导致应用程序崩溃。 但其实自己也记不太清楚了,Android 14新特性文章已经是去年3月份发布了。...又去Android官方文档上面做了二次核对,官方文档里也有明确提到,用错情况下是会抛出异常。 所以问题到底出在哪里呢? 和guting做了线下沟通,并且看了看他所写代码。...百思不得其解只好开始尝试把锅往Google身上甩了,在想着要么这就是Android 14系统中一个bug,要么就是Android官方文档没写清楚,把BroadcastReceiver这种特殊情况漏写了...本来以为应该是什么Security Exception之类错误,提醒我们当前代码是有安全问题

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

这还是认识WPS?这些功能也太了吧!

1997年,金山带着全新WPS97卷土重来。此时中国市场基本都已经习惯了微软office操作界面和方式。...上传到 WPS 微信群文件夹文件、图片永久保存,不用担心再遇到过期或被清理问题。 二,文件查找、整理更为方便。传统微信群找文件方法,需要不断翻聊天记录,十分麻烦。...WPS 微信群文件夹文档,支持在手机、电脑多人同时编辑,并且「自动保存同步」。比如:在群内沟通一个活动方案,再也不用来回发,直接在微信群文件夹修改即可。...打开【另存为】对话框,自动定位到【WPS 云文档】选项卡中【WPS 网盘】目录,直接单击【保存】按钮即可将该文档保存到云端。 你有模板资源?...当然,搬砖累了划划水(不是没有)……也挺好! 今天八卦办公小技巧课堂就到这里啦!一句话,WPS可不是半路出家山寨微软office,而且如今WPS在某些方面已经超越了office。

1.4K20

PaddlePaddle学习之路》笔记十四——把PaddlePaddle迁移到Android设备

0.11.0、Python 2.7 前言 ---- PaddlePaddle还可以迁移到Android或者Linux设备上,在这些部署了PaddlePaddle设备同样可以做深度学习预测。...我们这次使用是mobilenet神经网络,这个网络更它名字一样,是为了移植到移动设备一个神经网络,虽然我们第三章CIFAR彩色图像识别使用是VGG神经模型,但是使用流程基本上是一样。...定义神经网络 创建一个mobilenet.pyPython文件,来定义mobilenet神经网络模型。...mobilenet是Google针对手机等嵌入式设备提出一种轻量级深层神经网络,它核心思想就是卷积核巧妙分解,可以有效减少网络参数,从而达到减小训练时网络模型。...因为太大模型参数是不利于移植到移动设备,比如我们使用VGG在训练CIFAR10时候,模型会有58M那么大,这样模型如下移植到Android应用上,那会大大增加apk大小,这样是不利于应用推广

2.6K20

配置文件中数据库连接串加密了,你以为就挖不出来

讲故事 前几天在调试物联柜终端上一个bug时发现 app.config 中数据库连接串是加密,因为调试中要切换数据库,需要将密文放到专门小工具上解密,改完连接串上数据库名,还得再加密贴到 app.config...私以为搞这么麻烦也就防防君子,像我这样 晓人,加不加密都是等于没加密,照样给你脱库。。。 二:使用 ILSpy 去脱库 1....从DAL/Repository层去反编译代码 要想得到明文数据库连接串,可以从代码中反推,比如从 DAL 或者 Repository 中找连接串字段 ConnectionString,这边终端程序是用...这些FCL类你是没法混淆从这些类上反推可以很轻松就能找到明文 ConnectionString ,所以这条路觉得是走不通。...从上图中可以看到,静态字段是在 Manager 类型对象 中,实例字段都是在 Manager 对象 中,对照这张图,只需要通过 windbg 找到 OleDbHelper 类型对象,也就是所谓 EEClass

61520

Android 面试必备 - 系统、App、Activity 启动过程

而Linux系统启动时: 首先要加载BIOS硬件信息,并获取第一个启动设备代号 读取第一个启动设备MBR引导加载程序(lilo、grub等)启动信息。...Zygote 进程启动后,首先初始化一个Dalvik VM实例,然后为它加载资源与系统共享库,并开启Socket监听服务,当收到创建Dalvik VM实例请求时,会通过COW(copy on write...)技术最大程度地复用自己,生成一个新Dalvik VM实例。...Dalvik VM实例创建方法基于linux系统fork原理。 其实,个人理解,Zygote进程就相当于Linux系统中fork进程。...由它可以在系统运行期间,接收到创建虚拟机请求时,孵化Dalvik VM实例。Zygote进程孵化Dalvik VM实例流程如下图所示: ?

1.3K20

Android系统启动——4 zyogte进程 (C篇)

PS:这里把"属性"共享区域文件句柄fd执行dup后结果放到了ANDROID_PROPERTY_WORKSPACE环境变量中。这个fd在服务进程不能打开属性共享区设备文件时使用。...关于这块,后面会详细讲解。...而且,Android系统还提供了一个系统属性在persist.sys.dalvik.vm.lib.2(android4.4以前是persist.sys.dalvik.vm.lib),它要么取值为libdvm.so...2、不同点 以上描述Dalvik虚拟机与ART运行时共同之处,当然它们之间还有不同点,最大不通电在于,Dalvik虚拟机执行是dex字节码,ART虚拟机执行是本地机器。...Portable 是指虚拟机以移植方式来进行编译,也就是说,编译出来虚拟机可以在任意平台上运行。

2.4K21

Android 内存申请分析

当中,其中有这么两个方法: 很明显,这两个方法是用于开启和关闭Allocation Tracker,并且获得申请对象信息数据,然而是native方法,对应native代码在/dalvik/vm.../build.prop中指定dalvik.vm.allocTrackerMax项值。...,在/dalvik/vm/alloc/Alloc.cpp中: 而在dvmTrackAllocation方法,则是在/vm/AllocTracker.h中定义: 分析到这里,Dalvik对Allocation...而gDvm这个变量则具体是一个全局记录Dalvik虚拟机中状态全局变量,定义和声明都在/dalvik/vm/Globals.h中: 而AllocRecord定义,则是在/dalvik/vm/AllocTracker.cpp...2、这篇文章中示例代码,可以从Github上拿到:https://github.com/ragnraok/AllocRecordDemo 。 本文来源于:WeMobileDev 微信公众号

1.6K00

Android App渗透测试工具分享

drozer允许您通过承担应用程序角色并与Dalvik VM,其他应用程序IPC端点和底层操作系统进行交互来搜索应用程序和设备安全漏洞。...安装JDK 1.7 这里安装是JDK 1.8,最后也安装成功了。 ? 6....,解压后配置下环境变量即可,这里仅演示Mac下安装方式: 安装homebrew(已安装的话跳过) ruby -e “$(curl -fsSL https://raw.githubusercontent.com...使用 使用Android模拟器: 如果使用Android模拟器,则需要设置合适端口,以便PC可以连接到模拟器内部或设备代理打开TCP套接字。...此时,Android客户端状态如下: ? 常用命令: ? ? ? ? ? ? ? ? 其他用法如下: Dex是Android系统中可以在Dalvik虚拟机上直接运行文件格式。

3.2K31

妖怪般VerifyError | 奇形怪状bug

而在别的系统设备则都是正常。之后我们找了一台4.4设备,发现在release版本的确会出现这个问题,异常情况如下所示。...:553) at dalvik.system.NativeStart.main(NativeStart.java) 现象很简单,这次我们所有的dialogfragment其实全挂了,在4.4设备上,只要有这个构造就会导致这个异常崩溃...起初我们只是以为是混淆导致这个异常情况发生,但是尝试keep了所有androidx类之后,发现这个问题还是稳定复现,有点懵逼了。...而之后简单分析了下异常,猜测dialogfragment类本身就出现了问题,所以导致了在类加载时候,验证字节码安全性失败。但是这部分可是androidx内部代码啊,这不就是不讲武德?...因为是在低版本手机上触发问题,运行仍然是 dalvik VM,很容易(google)在对应版本(4.1.1)源码中找到类DexVerify.cpp,和 CodeVerify.cpp (感兴趣可以从

83740

浅谈 maxMemory , totalMemory , freeMemory 和 OOM 与 native Heap

专业来说,Android为每个进程设置Dalvik Heap Size阈值,这个阈值在不同设备上会因为RAM大小不同而各有差异。如果APP想要分配内存超过这个阈值,就会发生OOM。...Android 2.x系统,当dalvik allocated + native allocated + 新分配大小 >= dalvik heap 最大值时候就会发生OOM,也就是说在2.x系统中,考虑...Android 3.x系统,废除了native计数器,类似bitmap分配改到dalvikjava heap中申请,只要allocated + 新分配内存 >= dalvik heap 最大值时候就会发生...使用显存(操作系统预留RAM一部分作为显存) 使用OpenGL textures等API,texture memory不受dalvik vm heapsize限制,这个没有实践过。...再比如AndroidGraphicBufferAllocator申请内存就是显存。 4,Bitmap分配在native heap还是dalvik heap上?

991130

Android 慎用static静态变量

前言 Android是用Java开发,其静态变量生命周期遵守Java设计。 我们知道静态变量是在类被load时候分配内存,并且存在于方法区。 当类被卸载时候,静态变量被销毁。...在PC机客户端程序中,一个类被加载和卸载,简单等同于jvm进程启动和结束。 那么在Android中呢? 用Dalvik vm也是一样。...当我们启动一个app时候,系统会创建一个进程,此进程会加载一个Dalvik VM实例,然后代码就运行在DVM之上,类加载和卸载,垃圾回收等事情都由DVM负责。...三、Android进程什么时候结束 这个是Android对进程和内存管理不同于PC核心——如果资源足够,Android不会杀掉任何进程,另一个意思就是进程随时可能会被杀掉。...四、Application也是一样不可靠 Application其实是一个单例对象,也是放在内存中,当进程被杀掉,就全清空了,只不过Android系统会帮重建Application,而我们存放在Application

2.6K20

Android内存优化(一)DVM和ART原理初探

前言 要学习Android内存优化,首先要了解Java虚拟机,此前用了多篇文章来介绍Java虚拟机知识,就是为了这个系列做铺垫。...1.Dalvik虚拟机 Dalvik虚拟机( Dalvik Virtual Machine ),简称Dalvik VM或者DVM。...当JVM加载该.jar文件时候,会加载里面的所有的.class文件,JVM这种加载方式很慢,对于内存有限移动设备并不合适。...DVM由Zygote创建和初始化 在Android系统启动流程(二)解析Zygote进程启动过程这篇文章中介绍过 Zygote,可以称它为孵化器,它是一个DVM进程,同时它也用来创建和初始化DVM实例...DVM架构 DVM源码位于dalvik/目录下,其中dalvik/vm目录下内容是DVM具体实现部分,它会被编译成libdvm.so;dalvik/libdex会被编译成libdex.a静态库,作为

1.2K101

dex文件解析(第三篇)「建议收藏」

所有Android应用线程都对应一个Linux线程(参考—-理解Android线程创建流程),虚拟机因而可以更多地依赖操作系统线程调度和管理机制。...当然,这种情况下,APK中class.dex不会被剔除。 dalvik VM:preopt是厂商行为,做可不做。如果没有做的话,dalvik VM在加载一个dex文件时候,会先生成odex。...所以,dalvik VM实际上用得是odex文件。以后我们研究dalvik VM时候会看到这部分内容。...实际上dex转odex是利用了dalvik vm,里边也会运行dalvik vm相关方法。 总结: 以标准角度来看,Class文件是由Java VM规范定义,所以通用性更广。...比如dex存储字符串是一种优化后方法,但是到vm代码中,还不是只能用字符串来表示

1.3K50

Android自己主动化測试解决方式

在应用測试中,每个activity首先会被Instrumentation初始化,然后再载入到Android模拟器或设备Dalvik虚拟机中来运行。   ...dex编译器将类文件编译成Android设备Dalvik VM使用格式),打包,部署和执行过程,大大降低了測试执行时间。...以下就是这次简短訪问:   InfoQ:在不同版本号Android上执行应用程序,存在什么问题?为了保证程序能正常执行,开发人员须要在Android每个版本号上測试他应用?   ...在以前參与一个项目中,我们用相同红色边框来表示输入有误。   ...以Git领域为例,我们更希望成为像是GitHub那样,而不仅仅是通常git库。   InfoQ:你们有计划未来要支持很多其它设备?   JML:是的。我们计划继续添加�对很多其它设备支持。

24220
领券