软件设计工具--PlantUML 慢慢发现在诸多技能中,coding不应该花很多时间。 在代码编写前和代码编写后的事情,往往才是需要花大量时间的。 想清楚你要做什么,要怎么做,以及之后要达成什么样的目标,检验结果是否符合预期这些事情,都应该比coding要重要。不然准备不充分,上来就写代码,是不可持续的。
C++11新特性(持续更新) C++11中常用新特性:Lambda表达式、自动类型推导、统一的初始化语法、nullptr、代码构造函数、右值引用、强类型枚举、静态断言、可变参数、noexcept、override标识符、线程库、新的智能指针类、新的C++算法、无序的集合
结构化代码-分层封装与按特性封装 结构化代码一直是开发人员比较纠结的地方,也是软件架构的基础。开发人员在写代码时总会首先考虑到某个类放在哪里比较合适。本文介绍了结构化代码的两种方法:分层封装(如clean架构)和按特性封装,及这两种方式的优缺点。开发人员可以根据项目特点在项目中单独或混合使用这两种结构化代码的方法。
Gradle之apt, annotationProcessor和kapt 介绍了APT的概念和处理流程,Java和Kotlin两种语言下如何在Gradle中配置APT,以及由于APT配置方式用错导致使用ARouter路由时始终提示“There is no route match the path [/xxx/xxx], in group [xxx][ ]”
Spring Security源码阅读3-Spring Security过滤器链的初始化2 详细分析了FilterChainProxy过滤器链式调用的实现原理,Spring Security过滤器向Servlet容器的注册过程和用户请求调用Spring Security过滤器的过程。
RecyclerView中使用LayoutInflater.inflate的流程分析及注意事项 在RecyclerView适配器中的onCreateViewHolder函数中一直使用LayoutInflater.inflate方法生成item view,但从没考虑过inflate的具体流程是什么样的,其各个参数具体如何起作用,今天来具体分析一下inflate的代码流程和参数的具体作用,以明确在使用RecyclerView过程中的注意事项。
adb shell am start -a xx -d uri启动应用时uri中&后的参数没有了 问题复现场景在mac或windows 下执行如下命令:adb shell am start -a android.intent.action.VIEW -d "https://xxx?action=tab&tabname=offer"发现应用在接收到intent后,intent中的参数变为“https://xxx?action=tab”。问题原因adb shell相当于是在li...
Matplotlib图像各个部分 在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个或者多个Axes对象。每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域。所属关系如下:下面以一个直线图来详解图像内部各个组件内容:其中:title为图像标题,Axis为坐标轴, Label为坐标轴标注(y value),Tick为刻度线,Tick Label为刻度注释。各个对象关系可以梳理成...
Android单元测试 单元测试关于单元测试,在维基百科中,给出了如下定义:在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。android中的单元测试...
Android单元测试 单元测试关于单元测试,在维基百科中,给出了如下定义:在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。android中的单元测试...
[问题]Android Studio3.1.2 Rejecting re-init on previously-failed class 问题log如下:10-22 15:18:32.130 29298 29298 I art : Rejecting re-init on previously-failed class java.lang.Class<com.qiscus.sdk.chat.core.QiscusCore$$Lambda$4>10-22 15:18:32.130 29298 29298 I...
Fragment请求权限,回调到onRequestPermissionsResult后requestCode改变了 详细介绍了fragment中调用requestPermissions的代码处理流程,并介绍了requestCode在传递过程中的改变和恢复,以及为什么在自定义的Activity中的onRequestPermissionsResult需要调用父类的onRequestPermissionsResult及不调用后会产生的后果。
Android Studio调试技巧(基于Android Studio 3.1.2版本) 基于Android Studio 3.1.2详细介绍了Android的调试的各个模块。通过该博客,读者可以快速掌握android的各个调试方法。
Android开发中常用Gradle配置及问题处理-1(截止2020.3.16) 该博客是我在使用Android Gradle过程中遇到的问题和学习汇总,博客中的内容主要是参考其他博客。所参考博客的地址都写在参考一节了。
在$HOME/.bashrc中配置PATH环境变量后source不起作用,必须重新登录的原因 问题起因在玩Ubuntu时一不小心把文件夹Hadoop-2.9.1给删除了一部分,我需要重新下载和配置Hadoop-2.9.1,重新下载后的Hadoop-2.9.1解压到了~/hadoop/hadoop目录下,与之前的Hadoop-2.9.1放在同一个父目录下,如下: 然后在$HOME/.bashrc中配置HADOOP的环境变量,如下 最后执行如下命令source ~/.b...
lambda表达式与闭包的真正区别和联系 什么是lambda表达式lambda和闭包最早可以追溯到lambda演算,lambda演算是上世纪30年代由Alonzo Church创造的。lambda演算可以说是一种最简单的编程语言,你只可以用它来做的唯一的事情是:应用:将一个表达式应用到另一个表达式,表示f(x)。(把它当作是函数调用,其中f是函数,x是它的唯一参数)。抽象:它可以绑定一个符号,改符号可以看作是一个“插槽”、...
Android之DuplicatingThread音频数据流 我们知道连接蓝牙下播放手机铃声,手机铃声是双出的,即会从speaker和蓝牙同时输出,其使用的回话线程即为DuplicatingThread,那么在Android中DuplicatingThread中的音频数据流是什么样的呢?实际上DuplicatingThread主要起到了回放线程管理和数据拷贝的作用,如下图所示。 1. AudioTrack到DuplicatingThread音频数据的传...
DataFrame过滤数据时出现"The truth value of a Series is ambiguous"错误及其解决办法 使用如下方法对DataFrame进行数据过虑:import pandas as pddata = pd.read_csv('Haiti.csv')print data[data['LATITUDE']>18 and data['LATITUDE']<20]或import pandas as pddata = pd.read_csv('Haiti.csv')p...
pyCharm中python对象的自动提示 python和Java不同,是一门动态语言:在创建对象的时候,我们并不需要声明对象的类型。这种方式虽然带来国极大便利,但是对于IDE来说,智能地辨别这些类型,并给出相应的代码提示就十分困难。如下图所示,我们通过json将json数据加载为一个列表(list)db,但在调用db的方法时IDE却不能给出相应的提示,这对于初学Python或对Python函数不熟悉的开发人员来说会极大降低开发效率。 ...
如何下载Linux命令源码 linux是开源的,其自带的命令也是开源的,因此我们可以获得这些命令的源代码进行研究。命令的源代码是以一个软件包为单元的,放在一个软件包的源代码中,若要下载一个命令的源代码,就要把这个命令所属的软件包源代码都下载下来。命令的源代码通常在源代码码的src目录中,相应的主文件名为cmd.c,其中cmd为具体的命令。以hexdump命令来说明如何获得命令的源代码: 1)使用which命令查看h...
Python switch/case语句实现方法 与Java、C\C++等语言不同,Python中是不提供switch/case语句的,本文介绍了三种方式可以模拟实现switch/case语句,分别是:if...elif...elif...else, Pyhon字典和在类中创建调度方法。就目前而言,个人建议在实现开发中使用字典的方法实现switch/case语句。
Python 中的单例模式 单例模式单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。本文介绍了四种方法创建Python单例模式:使用模块、使用 __new__、使用装饰器(decorator)使用元类(metaclass)。
SELinux syntax error问题定位 通过在SELinux的配置语句的汇总文件policy.conf中搜索编译过程中报的syntax error配置语句,并观察之前的配置语句,便可很容易定位出是哪个SELinux配置文件中的配置语句导致的问题,提高了SELinux syntax error问题的定位效率
Service xxx does not have a SELinux domain defined 为了完成公司项目的一个需求,需要添加一个binder服务xxx,并且设置成开机自启动。于是我在init.rc中添加了如下代码行:service xxx /system/bin/xxx class main user root编译boot后烧到手机,发现服务xxx无法启动,kernel log中有如下提示:[ 20.076354s][pid:1,cpu7,init]init: Se
段错误(核心已转储)问题的分析方法 通过实例详细说明了linux 下Segmentation fault(core dumped)(段错误(核心已转储))的分析方法,段错误产生的必要条件,以及core dumped文件的存储,命名等。
Java 8新特性汇总 Java8作为Java语言一个重大改变的发行版本,其通过添加一些重大的特性来促使这个平台的进步。了解Java8的新特性有助于提高程序员的生产力和程序的性能,同时也能了解语言的最新动态和新的设计方法与技巧。
Android gdb调试 Android对于C/C++代码的调试方式一般选用gdb+gdbserver的方式,其中gdbserver运行在目标系统中(如手机),gdb运行在宿主机上(如linux)。gdb主要有以下几个功能:启动程序,可以按照自定义的要求随心所欲的运行程序可让被调试的程序在所指定的断点处停住(断点可以是条件表达式)当程序被停住时,可以检查此时程序中所发生的事动态的改变程序的执行环境1. 需要准备的东
Android网络操作和优化相关 写在前面的话Android程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是android程序的关键环节。前几天偶一朋友遇到这么一个问题:如何使用volley实现文件上传。最后问题解决了,小伙伴不禁有些飘飘然,大有一番天下之事皆逃不过我的魔掌的感觉。这时候coder君问了他几个问题,大家可以一起思考下:TCP/IP协议、SOCKET、HTTP协议、
Android中Drawable适配介绍 Android中Drawable适配介绍 Android可以运行在各种不同屏幕大小和密度的设备上,并且为不同的设备提供一致的开发环境。在不同设备上显示时,Android可以调整应用的UI悴适配不同的屏幕。此外,Android也提供了一些API可以针对不同的设备屏幕大小和密度来控制UI的显示。虽然Android可以针对不同的APP进行缩放和调整以适配不同的屏幕,但是我们仍然需要针对
Android进程调度cgroups的简单介绍 cgroups的定义维基百科的解释为:cgroups,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。Android中的cgroupsAndroid中的cgroups关于cpu的一般有两个,分别位于:dev/cpuctl/
Android nice在进程与线程调度中的作用 基本概念:进程:计算机进行资源分配和高度的基本单位,是程序运行的实体,也是线程的容器。线程:是进程中实际执行的单元,是程序执行的最小单元,属于一个进程。一个进程可以拥有多个线程。nice在进程调试中作用在Android中,可以使用nice值来设定一个进程的优先级,系统的调度器可以根据nice值来合理的调度进程,主要特点如下:在Android中,nice的取值范围为-2...
Android M后settings.db放在哪里了 很多开发者会有这个疑问,为什么升级到Android M后在data/data/com.android.providers.settings/databases中没有settings.db数据库了?其实不是没有,而是在Android M中被放到了/data/system/user/0/settings_system.xml中了。
spring源码编译为eclipse项目 当前spring的采用gradlew方式进行编译,为了将spring的代码导入到eclipse中进行查看,window下需要执行import-into-eclipse.bat脚本,但是在执行该脚本时需要下载大量的依赖库,并进行编译,在执行下载和编译时会出现下载无响应和编译死现象,从而导致我们不得不一次次重新执行该命令。为了防止该问题,我写了个bat脚本,该脚本在检测到下载或编译失败时会自动重新执行
jstack和线程dump分析 一:jstackjstack命令的语法格式: jstack <pid>。可以用jps查看java进程id。这里要注意的是:1. 不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信息也有差别。本文中,只以 SUN的 hotspot JVM 5.0_06 为例。2. 在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生...
Java性能优化——开篇 Java性能优化——开篇 从2008年开始使用Java语言进行编程,先后做过J2SE、J2EE等开发。从一开始要会写程序,到现在要求自己写出高质量的程序,在这个过程中对这门语言的使用也积累了一些经验和心得。 Java语言的强大之处,在于其开源,为开发者提供了多种选择,同时也有很多组织为其提供了各种开发包和工具包。作为一个开发者,为了实现一个功能可以有很多种选择。但是在众多的选择中,如何...
android原生代码中的情景模式及提示音和通知 如下介绍的是5.1平台中的设置应用中的情景模式及提示音和通知设置的界面:对应的java类:com.android.settings.SettingsActivity对应的xml文件:xml/dashboard_categories.xml情景模式:对应的java类:com.android.settings.profiles.ProfilesSettings对应的
android如何在C++中打印调用堆栈 android原代码中提供了打印堆栈的接口,具体调用如下:(1)包含头文件#include //该头文件位于/system/core/utils中(2)在需要打印堆栈的位置如下调用android:CallStack stack;stack.update();stack.log(LOGTAG); //其中LOGTAG为在log中显示的日志标签
android如何使用adb命令查看数据库 前提:必须拥有root权限按如下步骤操作:(1)adb shell(2)cd /data/data/(3)cd com.android.providers.media(4)sqlite3 external.db(5)select * from files;(6)其他命令可以输入 .help命令进行查看