自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大罗说事

Talk is cheap, show me the code.

  • 博客(77)
  • 资源 (6)
  • 收藏
  • 关注

原创 ProGuard 进阶系列(四)访问者模式

在进行后面的内容分析之前,不得不讲到访问者模式,这是 GOF 23 个设计模式中最难的几个模式之一。如果能够很好的理解访问者模式, 后续源码解读会相对容易一些。本文将结合 ProGuard 的部分源码,理解分析访问者模式的用途及使用场景。一、什么是访问者模式先来看定义,访问者模式是一种将对象操作算法与对象结构分离的设计模式。这句话很抽象,不是很好理解。用通俗的话来讲就是:我们在写代码的时候,一般情...

2023-06-29 09:01:44 243

原创 ProGuard 进阶系列(三) Java 类文件解析

书接上文,当我们从用户的配置文件中读取到所有的配置信息后,下一步便是将配置中的指定的类文件进行读取,构建需要混淆的 Java 类文件的语法树。在阅读类文件之前,先来看一下输入输出参数中的内容,我使用的是一个 Android 项目的输出产物,使用 -injars、-outjars、-libraryjars 指定了相关的信息,运行起来,这些信息会放到 Configuration 中,具体信息看下图:p...

2023-06-20 09:00:45 976

原创 ProGuard 进阶系列(二)配置解析

书接上文,从开源库中把代码下载到本地后,就可以在 IDE 中进行运行了。从 main 方法入手,可以看到 ProGuard 执行的第一步就是去解析参数。本文的内容主要分析源码中我们配置的规则解析的实现。在上一篇文章末尾,在 IDE 中,添加了 @/Users/xxx/debug_proguard.pro 作为函数运行的入参,将配置文件的路径传递给 ProGuard 使用。先来看一下 Main 函数...

2023-06-15 09:00:17 728

原创 ProGuard 进阶系列(一): 运行源代码

在前面的文章深入 Android 混淆实践:ProGuard 通关秘籍和深入 Android 混淆实践:多模块打包爬坑之旅中,已经讲到了如何在 Android 中使用 ProGuard,以及如何自定义实现混淆规则的生成。为了更深入地理解 ProGuard 的细节,本系列文章从我感兴趣的点出发,记录在阅读 ProGuard 源码过程中的思考与启发,希望对你也有所帮助。本文为此系列文章的开篇,将最基础...

2023-06-09 08:50:30 872

原创 Android 图片编码之必备技能

在进行 Android 开发时,不可避免地会接触到许多图片格式,例如 JPEG、PNG 等。就以 JPEG 格式为例,它是一种有损压缩模式,使用 YCbCr 的颜色空间来保存色彩信息。当需要在屏幕上显示图片时,会将 JPEG 数据解码成 RGB 进行显示。本篇文章可能对初学者来说略显复杂。因此,建议读者具备一定的图像处理和 Android 开发基础知识。下面,一起来看看在 Android 中,如何...

2023-05-26 09:00:36 786

原创 解密Java Class文件不为人知的秘密

Java 诞生多年,因此在网络上,有关 Java Class 文件格式解析的文章有很多,但他们大多数都是在列举《Java 虚拟机》中定义的格式,通读下来,好像所有的东西都讲清楚了,但是我个人好像并没有看懂,不知道定义的这些东西到底是用来存储什么东西的。本文仍然是在讲《Java 虚拟机》中定义的 Class 文件的格式,但会更多的从一个应用开发者的角度,将字节码文件中定义的字段与原始的 Java 代...

2023-05-24 09:00:56 841

原创 深入理解 Java Class 文件格式

Java 诞生多年,因此在网络上,有关 Java Class 文件格式解析的文章有很多,但他们大多数都是在列举《Java 虚拟机》中定义的格式,通读下来,好像所有的东西都讲清楚了,但是从我个人角度,并没有看懂,不知道定义的这些东西到底是用来存储哪些信息。本文仍然是在讲《Java 虚拟机》中定义的 Class 文件的格式,但会更多的从一个应用开发者的角度,将字节码文件中定义的字段与原始的 Java ...

2023-04-28 14:43:20 84

原创 Git 必知必会:原理剖析(二)

书接上文,在上一篇文章记录Git 必知必会:原理解析 中记录了 Git 原理中的一部分信息,但在后续的学习过程中,还有部分内容需要记录,但有了此篇内容。一、Git 中的引用从前面文章中的的 Git 仓库树目录存储结构图中,可以看到,通过 commit 的 SHA-1 值,我们就一步一步查看所有的提交记录,以及项目中的文件内容。但 40 位的字符串几乎不可能记忆下来,也没有什么实质性的意义。那如果我...

2023-02-25 09:30:08 231

原创 Git 必知必会:原理剖析

作为程序员,最常用的版本管理工具便是 Git。但我相信大多数人和我一样,从没有认真了解过其具体实现的原理。但了解 Git 的原理,能有助于我们工作更好的使用 Git。下面,让我们一起来了解 Git 中的一些概念,以及实现。一、概念Git 是一个分布式版本控制软件,在使用的过程中,与 CVS 类不同,不需要使用服务端,就可以实现版本控制。但在我们常用的使用过程中,依然会一个中间服务器作为 origi...

2023-02-17 09:30:13 730 2

原创 深入理解 Java 字符编码

近期在工作中,遇到了一段历史代码,在代码中,将一个字符串进行加密,得到一个 byte 数组, 在代码中,这个 byte 数组 需要存储到 文件中,但代码却是用这个 byte 数组 创建了一个 String ,然后再将 String 写入到文件中。聪明的你应该发现问题了,byte 数组 直接转成 String 会有问题,一般的处理方法是将 byte 数组 使用 Base64 编码,然后将编码后的字符...

2022-10-13 08:30:29 287

原创 深入 Android 混淆实践:多模块打包爬坑之旅

在做 SDK 开发的时候,会将 SDK 中不同功能进行模块化拆分,分解成不同的模块,在对外提供 SDK 时,将多个 AAR 文件交付给使用方。来看一下这个场景,假设现在 SDK 有 A模块、B模块 两个模块,其中 B模块 依赖 A模块 。现在,对这两个模块进行打包,并且要开启混淆。发现了吗?要让 B模块 中的类,能正常使用 A模块 中的接口/类,我们需要将 A模块 中的接口/类进行 keep ...

2022-10-01 10:24:15 1748

原创 深入 Android 混淆实践:ProGuard 通关秘籍

使用 Java 编写的源代码在编译时会生成 CLASS 文件,而 CLASS 字节码的规则非常的标准,按照对应的格式能够很好的反编译出原代码。市面上也存在很多很好用的工具,来帮助我们进行反编译并阅读 CLASS 中的代码逻辑。为了更好的保护代码安全,混淆是最容易做的一件事情。针对 Java 的混淆,有一个开源项目 ProGuard 就是常用的混淆工具。它可以对代码进行 压缩、优化 、混淆。本文将基...

2022-09-23 08:30:21 2300

原创 那些年配置的终端 -- iTerm2 系列

工欲善其事,必先利其器。当我们拿到一台新电脑,为了让自己的效率更高,当然需要做一些配置。本文将介绍对于终端的一些配置。1. 安装 iTerm2Mac OS 有自己自带的终端软件 Terminal ,但其功能相对较弱。在 Mac 上,有一个三方终端 iTerm2 可以使用。当拿到新电脑时,当然是第一时间装上这个软件。iTerm2 下载地址:https://www.iterm2.com/对于 iTer...

2022-08-20 09:00:24 330

原创 LeetCode 46 全排列

给定一个不含重复数字的数组 `nums` ,返回其 *所有可能的全排列* 。你可以 **按任意顺序** 返回答案。

2022-07-23 18:25:03 117

原创 在 Android 中使用 Lambda 的原理

在 Java 的高版本中,逐渐加入各种语法糖,Android 中是如何适配支持的呢?

2022-07-20 08:49:12 1656

原创 深入理解 Base64 底层原理

Base64 是一种常见数据编码方式,文中详细介绍了其编码方式,可较深入了解原理,以及应用。

2022-07-04 08:00:00 2848 7

原创 这么多年, Android 虚拟机到底做了些什么?

Android Runtime 为 App 能快速运行都有哪些努力,一文概揽全过程

2022-06-30 19:19:58 5019 4

原创 这么多年,Android 虚拟机到底干了些什么?

在 Android 操作系统中,有一个非常重要的核心部分:Android Runtime。说到这个,我相信很多人都听到过 Dalvik、ART、JIT 以及 AOT。或许好多人也和我之前一样,并不了解这些名词,以及这些名词背后做了些什么事情。本文从笔者了解到的信息,记录了 Android Runtime 中设计的一些概念,以及应用。1. 虚拟机在了解上面提到的名词之前,我...

2022-06-30 16:40:03 1619

原创 走进微软之所见所想

2020.11.24 号,是程序员节后的一个月,有幸参加了《新程序员》组织的“走进名企”的活动,参观了科技领域的巨头,微软北京总部。微软的业务版图从 PC 时代,操作系统的巨头,大名顶顶的微软,错过了移动互联网时代,没有拿到移动操作系统的门票,整个微软的发展一直走下坡路,并慢慢的淡出了消费者的视野,这或许是一个大公司发展到一定时间,都会遇到的瓶颈。但微软并没有被打倒,快速调整赛道,在多个领域内都占据了举足轻重的地位。到现在,很多人还是只知道他们的操作系统 Windows 以及办公套件 Office,

2021-11-27 15:44:38 1136

原创 实现一门超简单的语言最快需要多久​

这是宫文学老师的第一节课程,本次课程的内容读完,并没有完全清楚我自己要做什么,该怎么做,经过阅读配套的原码,终于明白需要做一些什么事情,此处仅作为记录,梳理思路。以下为正文:0x00 代码...

2021-11-17 22:13:48 936

原创 实现一门超简单的编程语言最快需要多久?

这是宫文学老师的第一节课程,本次课程的内容读完,并没有完全清楚我自己要做什么,该怎么做,经过读配套的原码,终于明白需要做一些什么事情,此处仅作为记录,梳理思路。

2021-11-17 21:32:37 4060 1

翻译 我从 200 个机器学习工具中都学习到了什么?

如果必须在人工智能专家和工程师之间做一个选择,那么请选择工程师。

2020-06-27 21:15:58 1524

翻译 程序员如何用代码彻底终结系统那些事儿?

互联网发展至今,瞬息万变的市场要求我们的产品具有更快的响应速度。技术的快速进步,软件的快速迭代升级,各种软件基础设施也不得不随之进行频繁的修改。为更好地适应各各式各样各样的需求,将基础设施、工具、服务以及对基础设施的管理作为一个软件系统,使用软件工程实践中的方式来处理各种基础设施的变化。本文作者在文中详细讲解了软件设施代码背后的思想,带领我们详细了解背后的原理。作者 | Tylor Borg...

2020-04-06 14:13:25 325

翻译 为什么许多程序员讨厌结对编程?

结对编程是国外非常盛行的一种敏捷开发方式,今天 Google 最顶级的两位程序员 Jeff Dean 和 Sanjay Ghemawat 就是结对编程世界让人颇为津津乐道的人物。不过,有人喜欢有人讨厌,本文作者 Tylor Borgeson 作为结对编程的实践者,为我们具体分析了它的好与坏,以及可以如何执行结对编程来更好地适合团队现状。作者 | Tylor Borgeson,已获作者翻译授权...

2020-04-06 14:07:27 417

翻译 程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用容器化技术、CI/CD,不仅能让开发环境、测试环境、预发环境、生产环境保持一致,同时也对测试和质量保证有至关重要的作用。作者 | Tylor Borgeson,已获作者翻译授权译者 | 罗昭成原文 | A Tale of Two Soft...

2020-04-06 14:03:35 443

翻译 为什么程序员如此“嫌弃”主干开发模式?

软件开发中,多人协作是一个常见的场景,如何来协作管理不同开发人员开发的代码变成重中之重,因此 CVS 等版本管理工具也应运而生。现如今,Git 已经占据了版本管理的主导地位。基于版本控制出现了一系列的开发模式,用以帮助团队更加快速地协作。本文中,作者从他的实践,全面的展示了主干开发的模式在开发中应用的优势,希望能给你的工作带来更高的效率。作者 | Tylor Borgeson,已获作者翻译授...

2020-04-06 13:59:30 737

翻译 为什么持续集成和部署在开发中非常重要?

让重复的事情自动化。如果运用得当,CI/CD 将会是一个很好的工具,帮助团队提效。你要相信,肯定没有人愿意花几个小时时间,去“盯”部署脚本执行的结果,还要手动测试来确认系统是否能正常运行。作者 | Tylor Borgeson,已获作者翻译授权译者 | 罗昭成原文 | Here’s Why Continuous Integration and Deployment is so Impo...

2020-04-06 13:51:21 518

翻译 Kotlin 风险高、RxJava 已过时,Android 原生开发现状分析!

原文:The State of Native Android Development作者 | Vasiliy Zukanov,独立 Android 开发及软件顾问,已获作者翻译授权译者 | 罗昭成,Android 开发者,责编 | 唐小引本文首发 CSDN(ID:CSDNnews)许多 Android 开发者经常会问我,要学会哪些东西才能成为一个优秀的 Android 工程师?对于这个...

2020-04-06 13:39:28 545

翻译 被高估了的测试驱动开发?

测试驱动开发(TDD)始于上世纪 90 年代,时至今时今日,依然只有少数的开发者在践行着。本文作者从软件开发者的角度,又一次帮助我们定义了测试驱动开发,解答了众多开发着对 TDD 常见的谬误。

2020-03-01 20:59:02 378

翻译 Android 开发者成神之路

一个 Android 技术专家,至少有 2~3 个专业领域。

2020-01-28 16:28:41 401

翻译 VS Code 必知必会的 20 个快捷键!

本篇文章,希望能够帮助开发者更高效地使用 VS Code 进行编程。

2019-11-20 15:55:01 2552 5

原创 Python 分析 9 万条数据告诉你复仇者联盟谁才是绝对 C 位!

作者 | 罗昭成责编 | 唐小引本文首发于 CSDN 微信(ID:CSDNnews)《复联 4》国内上映第十天,程序员的江湖里开始流传这样一个故事,即:漫威宇宙,其实就讲了一件事情。整个宇宙就好比一个项目组。其中有一群叫作美国队长、钢铁侠、惊奇队长、浩克、索尔等人在维护这个项目,兢兢业业的维护整个项目。某一天,出现了一个天才程序员,叫灭霸。当他加入到这家公司的时候,他意识到,这个项...

2019-05-03 16:49:29 3428 12

翻译 “编程不规范,同事两行泪!”

本文首发 CSDN(ID:CSDNnews)编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是:写注释、写文档、别人不写注释、别人不写文档。更甚者,在《流浪地球》形成刷屏之势之后,仿其而出的“代码千万行,注释第一行;编程不规范,同事两行泪”在技术圈中开始盛传,由此可见对于所有的程序员来说这是多么痛苦的事情。本文作者 —— 全栈开发者 Nitin Sharma 分享...

2019-02-21 10:53:14 216

原创 Python 分析程序员最关心的竟不是技术,而是…

本文首发于 CSDN 程序人生(ID:coder_life)从工业时代进入到信息服务时代,互联网行业逐渐兴起,传统行业逐渐没落。现如今,很多人混迹于互联网+的时代,人人都要学习编程已经逐渐被重视起来。作为一个入行五年的老鸟,回首看看这五年的经历,恍若隔世。从PC互联网时代到移动互联网时代的转变,也就是前几年的事情。IT界的快节奏已经成为常态。小步快跑 ,产品的快速的迭代,移动互联网有了飞...

2019-02-17 21:33:23 394

翻译 未来五年,iOS 开发如何前行?

本文首发在 CSDN 微信(ID:CSDNNews)。英文原文地址: https://hackernoon.com/four-exciting-areas-ios-app-development-will-evolve-over-the-next-five-years-23dc5c11f562近十年,10~15 年前不存在的技术,让这个世界变得黯然失色。有趣的是,这些概念正在构建未来的生活...

2019-02-17 21:19:27 405

翻译 为什么所有人都对 HTML、CSS 失望了?

本文首发在 CSDN 微信(ID:CSDNNews)。英文原文地址: https://rachelandrew.co.uk/archives/2019/01/30/html-css-and-our-vanishing-industry-entry-points/所有的人再一次对 CSS 失望。我不打算去总结这些让人失望的点。事实上,CSS 太容易被覆盖修改,如果要让它实时生效,你需要将它用...

2019-02-17 21:13:57 278

翻译 程序员,为什么别人比你优秀?!

本文首发在 CSDN 微信(ID:CSDNNews)。英文出处:https://www.romenrg.com/blog/2018/12/29/what-makes-a-great-software-engineer/最近几十年,软件行业一直在高速增长,并且增长趋势越来越快。由于整个行业的快速增长,对软件工程师的需求量也在持续增加,现在,已经没有足够的开发者,来覆盖企业需要的职位。尽管如...

2019-02-17 21:11:01 387

原创 程序员如何用“撞针“拯救 35 亿地球人?

作者 | 罗昭成责编 | 唐小引本文首发于 CSDN 微信(ID:CSDNnews)引言在《佩奇扑街、外星人疯狂!Python 告诉你大年初一应该看哪部电影》一文中,笔者与所有朋友分享了应该春节阖家欢乐之时可以带着家人去看哪部电影。随后,笔者也在大年初一与家人一起先看了《疯狂的外星人》,作为一部春节档的喜剧,有沈腾和黄渤这样的组合,在笔者的眼中,它已经满足了所有喜剧的要求,在黄渤与沈腾...

2019-02-17 20:59:39 367

原创 佩奇扑街、外星人疯狂!Python 告诉你大年初一应该看哪部电影

作者 | 罗昭成责编 | 唐小引本文首发于 CSDN 微信(ID:CSDNnews)1. 引言2019 年 1 月,《啥是佩奇》短片在互联网快速传播,各大社交平台形成刷屏之势。不到 24 小时,官博发出的视频已经收获 2800 万次观看,14 万次点赞,17 万次转发。作为《小猪佩奇过大年》先导片,片中内容不仅引人深思,也把我们的视线拉了到春节档电影。在外工作一年,难得的几天闲暇时间...

2019-02-17 20:41:13 1071

原创 Python 爬取 6000 篇文章分析 CSDN 是如何进入微信 500 强的

作者 | 罗昭成责编 | 唐小引本文首发于 CSDN 微信(ID:CSDNnews)如何爬取微信公众号文章?作者注:先解释义,网络爬虫指的是按照一定的规则,自动抓取万维网信息的程序或者脚本。读过笔者之前写的文章的朋友,肯定会知道,要抓取微信公众号文章,第一件事就是去找接口,之前都是在 Web 站点上去找。Chrome 的调试工具,能够很清晰地看到所有的网络请求,简单的分析,就能找...

2019-01-02 17:37:10 1126

Android Appwidget

一个简单的Appwidget实现。实现 了我们的桌面小工具的开发.并含有我的文档

2013-05-01

JSP网络商城

这个是我自己写的一个网络商城,仿淘宝写的,基本工能完整.

2013-04-30

android wheel view demo

android 下实现仿ios的滚动选择控件。实现滚动选择效果。内有详细的demo

2013-03-25

android圆角View

实现android圆角的外观,包含解决3.0以下和3.0以上版本不兼容的问题。可以完全实现单边的圆角。

2013-03-23

android自定义View,并自定义属性

从TextView继承,创建一个我们自己的TextView,自定义属性,通过自己自定义的属性,修改我们自己TextView的值。

2013-03-22

自定义View

android自定义View,写了如何创建一个自己想要的VIew

2013-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除