- 博客(157)
- 资源 (2)
- 收藏
- 关注

原创 欢迎与我交流
优快云改版之后,博客左侧的个人自定义栏目无法显示了。如果对于我的博客有任何问题,都可以在博客下方留言,也欢迎关注我的个人微信公众号,佛系更新。GitHub个人博客邮箱: szh@codekong.cn...
2019-08-08 00:02:44
441
原创 React Native新架构系列-C++实现跨平台Turbo Native Module
今天我们介绍在React Native新架构中如何C++代码实现一个跨平台的C++ Turbo Native Module扩展API。
2024-08-16 09:15:34
1245
原创 React Native新架构系列-自定义Turbo Native Module扩展API
今天我们介绍在React Native新架构中如何自定义Turbo Native Module扩展API。
2024-08-07 01:57:57
1673
原创 使用Android Studio For Platform阅读&调试AOSP源码
本文我们使用Android官方提供的IDE(Android Studio For Platform)来打开AOSP源码,并进行debug调试,这样可以方便我们跟踪底层代码的调用流程。
2024-07-31 08:00:00
2483
原创 一文学会从零搭建编译AOSP源码刷机全流程
本文将介绍从零搭建AOSP(Android Open Source Project)编译环境,并编译最新的android-14.0.0_r50分支生成ROM刷入Pixel 6设备的过程,便于我们学习研究Android Framework层源码
2024-07-29 23:31:27
1358
原创 JS的console对象的一些小技巧
在学习 JS 的过程中,我们常用console.log输出日志到浏览器控制台,今天就来看看console对象的一些使用小技巧。在浏览器中,console对象是window对象上的一个属性,我们可以在控制台打印出window对象或者使用window.hasOwnProperty('console')来进行证明,我们一般是直接引用 console 使用。基本使用1.打印不同级别的日志JS 定义了不同的日志级别,我们可以使用不同的方法输出不同级别的日志,他们之间的区别主要在于控制台的展示形式以及我们可.
2021-08-01 22:25:31
886
原创 几款提升开发体验的VSCode插件推荐
今天推荐几款通用的VSCode插件给大家。对于轻量级的文本或代码编辑器,最开始用过Notepad++,后来换了Sublime和Atom,最后换成了VSCode。作为一款微软出品的编辑器,最吸引我的是轻量级、启动快,扩展丰富,尤其是扩展丰富,目前前端代码开发,以及常规的代码文件编辑修改,我都是用VSCode来完成的,如果你还没有尝试过,强烈推荐,顺便贴一个下载地址:https://code.visualstudio.com/今天就推荐几款通用的VSCode插件给大家,可以极大提升大家的使用体验和效率。.
2021-03-07 22:37:12
1565
原创 AndroidStudio更新4.1无法启动问题解决方法
最近AndroidStudio4.1正式版本发布,点了更新提示先更新插件,然后可能是更新过程中重启了AndroidStudio,结果导致再次打开时直接无法启动了。启动时报错信息如下:java.lang.NoSuchMethodError: com.intellij.ide.plugins.PluginManagerCore.getEnabledPluginRawList()Ljava/util/List;看报错信息跟插件也有一点关系,搜索了一下找到一种解决方法,亲测有效。直接在命令行执行如下命.
2020-10-18 10:47:30
7658
11
原创 一场setTag引发的血案与思考
今天讲一个Android中由于setTag使用不慎引发的血案以及一些思考。故事背景如上图,app这个Module通过远程依赖aar的方式依赖了IM这个Module。在app这个Module中有如下的代码:View view = findViewById(R.id.view);view.setTag(R.id.root_position);这个 root_position 是声明在...
2019-09-12 01:26:34
1236
原创 kotlin小悟-这个继承有点不一样
今天聊聊kotlin中关于构造函数的一个话题。我们知道,在kotlin中构造函数分为主构造函数和从构造函数,关于详细的内容,可以点击下面的文章链接了解。Kotlin系列之主构造方法和初始化语句块Kotlin系列之从构造方法前置知识我们经常会写这样的代码://父类open class Father{}// 子类class Son: Father(){ }注...
2019-09-02 00:15:42
374
原创 kotlin小悟-安全调用符
今天看看kotlin中的安全调用符的一个注意点。之前的文章已经讲过ktlin中的安全调用符,可以点击查看。知识点kotlin中的安全调用符 ?. 是线程安全的。代码验证我们打开IDEA写下面一段代码:class Sample(var name: String?){ fun test(){ if(name != null){ print...
2019-08-30 00:30:26
842
原创 Git系列之简介与安装配置
从今天起,将会陆续更新一个Git从入门到进阶的系列文章。我个人觉得Git的使用不仅仅限于程序员,只要是涉及到协作与版本管理的地方,Git都应该算是一个不错的选择。哪怕你已经使用过一段时间的Git,我相信我的文章也会对你有那么一点点启发,一点点帮助,其实,这就够了。你可以通过思维导图快速了解文章的主要内容,以决定是否需要继续阅读。简介先放上Git的官方地址 https://git-s...
2019-05-04 23:00:41
365
原创 Kotlin系列之数组与集合
今天说说kotlin中的数组和集合。我们前面说过kotlin是一门更加纯粹的面向对象的语言,所以kotlin中的数组与集合与Java中会有一些不同,但是为了性能考虑,同时因为kotlin的最终编译产物是运行在JVM之上的,还为了保持kotlin与Java良好的互操作性,所以kotlin的最终编译产物又在尽可能接近Java的编译产物。对象数组我们在之前的代码中看到kotlin的main函数...
2019-03-09 15:59:40
1205
原创 kotlin系列之基本类型
今天一起来看看kotlin中的基本类型,包括基本的数据类型和其他一些特殊的与Java不同的类型。基本数据类型在Java中数据类型被分为基本数据类型和引用数据类型。在kotlin中所有的数据类型都是引用数据类型。与Java中的数据类型对应,kotlin中的数据类型有如下几种:数据类型java中的类型kotlin中的类型整数byte short int longBy...
2019-03-03 22:18:56
547
原创 Kotlin系列之可空类型的处理
在前面的文章中,我们已经看到了kotlin为了解决NPE问题作出的一些努力。这篇文章我们继续学习kotlin中与可空类型处理相关的一些知识。非空断言在程序的编写过程中有这样一种场景,我们已经在前一个函数中对一个可空类型的变量进行了检查,之后我们在接下来的函数中使用这个变量,我们其实已经很明确地知道这个变量前面已经进行了判空处理,后续不可能为空,但是编译器无法清楚地推测出来,这时候在编译器眼...
2019-02-20 22:57:06
794
原创 Jupyter Notebook报错Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.
今天使用Jupyter Notebook老是报服务会挂掉,查看控制台,主要的报错是下面这句Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.简单理解这个就是重复加载了动态链接库,解决方法有下面两种:方法一:在Python程序的开头加上下面两句:import osos.environ["K...
2019-01-09 21:45:31
4659
原创 Kotlin系列之类型可空性
作为一个程序员,最常见的问题恐怕就是NPE了吧,有时候即使很小心的编码,还是避免不了出现NPE,在Kotlin中,它力争把这个在运行时常常出现的问题在编译器解决掉,让我们写出更加健壮不易崩溃的代码。Java的类型系统存在的问题在说kotlin之前,我们先谈谈Java中的类型系统。什么是类型呢?通俗来讲其实就是对所有我们要表示的数据确定一个具体的分类。比如,我们把12这个数据分为int这个分类...
2019-01-06 18:56:32
725
原创 Kotlin系列之带接收者的Lambda
今天来看看Kotlin中关于lambda的两个函数with和apply,我们将其称为带接收者的lambda,不了解为什么会这么命令,看完下面的实例你应该就可以理解了。注意,上面也已经说了,with和apply其实是两个函数,虽然它们看起来像是关键字。with函数简单使用我们在Java中经常会写下面这样的代码:public String getRes() { StringBui...
2018-12-30 00:20:24
2441
原创 Kotlin系列之序列
今天来一起学习下Kotlin中的序列。在开始之前,先说一下我们定义的演示数据,后面数据定义的代码就不重复出现了。//Person数据类data class Person(val name: String, val age: Int) val personList = listOf(Person("小红", 22), Person("小明", 23), ...
2018-12-03 23:12:15
898
原创 VSCode常用快捷键
一、光标移动1. 以单词为粒度移动光标Option + 左右方向键2. 移动光标到行首或行尾Command + 左右方向键3. 以代码块括号为粒度移动光标Command + Shift + \4. 移动光标到文档首尾Command + 上下方向键二、文本选择对于上面的光标移动快捷键,再配合Shift键,就可以实现文本的选择。三、文本删除1. 删除光标右侧内容Com...
2018-11-19 23:29:17
740
2
原创 VSCode命令行常用快捷操作
一、VSCode基本设置1. 打开命令面板F1 或 Command + Shift + P2. 将VSCode安装到系统环境变量打开命令面板,搜索PATH,选择在PATH中安装code命令,然后重启终端就可以生效,以后在命令行就可以通过code命令直接打开VSCodev3. 打开VSCode自带的终端Ctrl + `二、VSCode命令行文件操作相关快捷键1. 打开某个文件...
2018-11-17 15:53:37
18883
原创 Kotlin系列之集合的函数式API
几乎各种语言都对集合操作提供了方便的库函数,Kotlin也不例外,今天就来说说Kotlin中与集合操作相关的函数式API。在开始之前先说一下这里的演示数据,后面演示数据的代码将不再重复出现://数字集合val numList = listOf(1, 2, 3, 4, 5, 6)//People数据类data class People(val name: String, val ag...
2018-10-08 23:05:07
743
原创 apktool反编译后回编失败解决方法
今天用apktoool反编译apk,然后回编回去的时候报错失败了。具体情况是这样的。apktool版本:2.3.4使用下面的命令反编译apk:apktool d dou2.apk -o test然后修改完成后使用下面的命令回编译cd testapktool b .然后在回编译的时候报错信息如下:W: ~/Downloads/dou2/./res/color/a77.xml:4:...
2018-10-07 20:46:34
12156
11
原创 Ubuntu18.04安装MySQL后普通用户无法登录
使用下面的命令在Ubuntu18.04上安装MySQL。sudo apt install mysql-serversudo apt install mysql-clientsudo apt install libmysqlclient-dev然后发现在普通用户shell下无法使用root用户名登录MySQL。切换到root的shell后可以无需密码登录到MySQL。sudo sumy...
2018-09-20 01:19:17
5759
2
原创 nginx实现单主机多域名映射
最近遇到的一个小问题,记录了一下解决过程,写出来分享给大家。背景因为前段时间买了腾讯云3年的云服务器,准备偶尔写点后台代码放上去。正好最近也在计划写个小程序,用这个云服务器作为后台。但是微信小程序必须要求使用已经备案的域名和80端口,但是只有一台云服务器,一个80端口,如果我想用这台云服务器作为多个小程序的后台,那就不能满足需求了。想着要是能够将多个子域名都解析到我的云服务...
2018-09-12 01:30:02
2092
1
原创 Kotlin系列之Lambda表达式(3)
今天一起来看看Kotlin中与Lambda相关的成员引用的内容。定义先说说什么是成员引用,这里的引用指的就是变量引用,就相当于Java中的引用概念。成员的概念这里包含了成员变量和成员方法。这都是很官方的的说法。说白了,就是类里面的变量和函数。所以我们这篇文章讨论的就是如果一个成员函数或者变量已经被定义好了,我们如何使用Lambda表达式的语法,将它传递给另一个函数。成员...
2018-09-01 09:39:46
397
原创 Git下载GitHub项目的指定文件夹
有些时候,我们可能不需要下载整个项目,只需要下载其中的几个文件夹。可以使用下面的命令。首先打开Git的命令行终端,即Git Bash。然后在GitHub上切换到指定的目录,比如我这里要下载的img目录 https://github.com/codekongs/FileExplorer/tree/master/img 然后,我们将目录里面的tree/master/ 换成 trunk,然后...
2018-08-26 17:32:53
2811
原创 java.sql.SQLException: Unknown system variable 'query_cache_size'解决方法
这个问题是因为你的MySQL Connector的jar包和数据库不匹配造成的。 我的数据是是使用MySQL8.x的版本,但MySQL Connector使用的jar包是6.x的,所以会报上面的错误。 解决方法就是去maven仓库下载与数据库版本对应的jar包,下载地址:http://mvnrepository.com/artifact/mysql/mysql-connector-java...
2018-08-20 23:30:24
3465
原创 Ubuntu16.04禁用ipv6
今天在腾讯云服务器上运行一个mysql的docker镜像,运行完成后老是连接失败。分析发现,虽然我填写的是我服务器的ip地址,但是连接出错的报错信息却提示连接到另一个ip地址失败,猜测应该是ipv6问题。 使用下面的命令查看3306端口情况:sudo lsof -i:3306输出如下: 基本确认就是ipv6的问题。分析应该是docker在启动时会优先使用ipv6,所以解决方...
2018-08-19 11:37:29
1843
原创 Kotlin系列之Lambda表达式(2)
上一篇文章讲到了最基本的Lambda表达式,今天这篇文章继续讲Lambda表达式中的在作用域中访问变量。Java中的内部类访问变量当我们在函数内部使用匿名内部类时,我们可以在匿名内部类内使用函数的参数和函数内的局部变量。当我们在使用Lambda表达式时,我们也可以访问这个函数的参数和使用那些在Lambda表达式之前定义的变量。下面先看一个在Java中匿名内部类中访问函数参数...
2018-07-29 17:38:17
776
原创 Kotlin系列之Lambda表达式(1)
今天开始后续的几篇Kotlin的文章会介绍Kotlin中Lambda表达式相关的内容。什么是Lambda表达式在Java8中引入了Lambda表达式,这是最令Java开发者激动和期待的一个功能。那究竟什么是Lambda表达式呢?Lambda表达式本质上是可以传递给其他函数的一小段代码,我们在之前的Java或者Kotlin中,一个函数的参数可以是一种简单的基本数据类型变量或一...
2018-07-11 00:54:53
478
原创 Kotlin系列之对象表达式
今天学习一下Kotlin中的对象表达式。对象表达式,是一种代替Java中的匿名内部类的方法。下面看看具体的用法,以及它与Java匿名内部类之间的区别。代替Java匿名内部类我们都知道Java的匿名内部类,这里给一个最简单的匿名内部类的Java代码示例:String[] fileList = new File("./").list(new FilenameFilter(...
2018-07-06 00:17:40
1005
原创 Kotlin系列之伴生对象
上一节中说到了对象声明,这次我们聊聊对象声明的一种特殊情况,对象声明在一个类内部,也就是标题所说的伴生对象。伴生对象最简单直白的理解就是与一个类相伴而生的对象,由于它处于类内部,所以必然和包含它的类存在某种联系。基本用法伴生对象使用关键字companion来声明,看起来就像是在object关键字前面加的一个修饰符。它的一般格式如下:class 外部类名{ com...
2018-07-02 23:20:51
2758
原创 Kotlin系列之对象声明
隔了比较久的一段时间了,继续来学习一点Kotlin,今天说说Kotlin中的对象声明。我们都知道在Java中,必须先有类,然后才能new出对象,也就是声明类和创建对象是两个分开的步骤,并有先后次序。在Kotlin中,我们可以使用object关键字在声明定义一个类的同时创建出一个对象,也就是我们标题所说的对象声明,下面就来一起看看对象声明的相关知识点。基本用法对象声明的基本格...
2018-07-02 00:10:35
1364
原创 Java实现超简单验证码识别
闲来想实现程序模拟登陆一个系统,说白了,就是写个简单的爬虫,但是无奈,遇到了数字图片验证码,在查阅了一些方案以后,遂决定自己手写代码实现验证码识别,分享一下整个过程。图片验证码是什么图片验证码,这个大家应该都见过。最普遍的图片验证码就是一张图片上面有4-6个歪歪扭扭的数字字母,图片还有点看不清楚,但是基本可以肉眼识别出上面的数字字母。那为什么要有这个东东呢?其实验证码的出现...
2018-06-09 23:03:49
15372
5
原创 Spring报错 Failed to read candidate component class: file Caused by: java.lang.IncompatibleClassChange
今天写一个SpringMVC的小例子,遇到一个很怪异的问题。先说说开发环境:IDEA+SpringMVC+Gradle 先看看我的build.gradle文件引入的包:dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' compile group: 'org.spr...
2018-05-05 21:42:48
2156
原创 smali文件格式分析
smali文件是apktool将dex文件解析成更直观易读的一种文件形式。除了apktool之外,baksmali工具也可以将dex文件转为smali文件。 今天就来学习一下smali文件的格式,让我们可以读懂smali代码。编辑生成简单的待测试的apk我们做一个简单的测试apk,页面就一个输入框,一个按钮,点击按钮,将输入框中的内容用Toast展示出来。 代码如下:pac...
2018-03-14 23:11:28
1979
原创 Java虚拟机与Dalvik虚拟机对比
Dalvik虚拟机的特点体积小,占用内存空间小专有的DEX可执行文件格式,体积更小,执行速度更快常量池采用32位索引值,寻址类方法名、字段名、常量更快基于寄存器架构,并拥有一套完整的指令系统提供了声明周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等功能所有的Android程序都运行在Android系统进程里,每个进程对应着一个Dalvik虚拟机实例Java虚拟机...
2018-03-12 22:48:32
772
原创 Android逆向基本工具使用
adb命令网络adb <1>手机打开开发者模式的usb调试<2>数据线连接手机到PC<3>连接手机adb tcpip 5555adb connect <手机ip><4>拔掉数据线注:断开adb disconnect安装apkadb install -r xxx.apk卸载apk...
2018-03-08 22:48:23
604
Genymotion-ARM-Translation.zip
2016-05-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人