- 博客(36)
- 资源 (3)
- 收藏
- 关注
原创 Netty基本使用(二)-Netty组件
Netty基本使用(二)-Netty组件1. EventLoop事件循环对象EventLoop是事件循环对象,他本质上是一个单线程执行器(同事维护了一个Selector),里面有run方法处理Channel上远远不断的io事件EventLoop的继承关系从根上看, 他继承了java的的ScheduledExecutorService.所以他拥有线程池中的所有方法另外Netty在线程池的基础上,又扩展了EventExecutor,提供了一些额外的方法:boolean inEventLoop
2021-05-14 17:44:32
385
2
原创 Netty基本使用(一)
Netty基本使用(一)1. 概述Netty是什么Netty 是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端, 引用官网的自述:Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients.简单的说, Netty就是一个 网络框架 ,可
2021-04-10 15:28:57
1449
1
原创 在Android中使用vi等linux命令
在Android中使用vi等linux命令日常在开发Android应用的时候, 有时候需要到设备中去修改一些配置文件, 比如权限白名单,sp的的xml什么的,由于Android本身又没有vim/vi等直接编辑软件,所以通常的做法是 先用adb pull命令将文件拉到电脑中,修改过后再使用adb pull命令推到手机里, 很不方便Busyboxbusybox是一个工具箱, 可以在不同平台上安装, 安装过后就可以使用一些linux下的常用命令了安装首先需要查看Android设备的CPU架构, 才能下载
2021-03-24 09:15:01
8409
14
原创 配置Kotlin类型提示
配置Kotlin类型提示目前Android开发大多数已经逐渐转移到了Kotlin了, Kotlin是一门强类型语言, 但是它又有非常智能的类型推断机制, 这就可以使我们平时在写代码的时候, 不需要显示的声明出变量的类型,例如:val a = theFunction() // a 是boolean类型 fun theFunction():Boolean{ return true }由于类型推断机制的存在, 我们不需要声明变量a的类型, ide会推断出a就是boolean类型的变
2021-03-17 22:21:23
1455
3
原创 Kotlin协程解析
Kotlin协程解析协程是什么协程是什么?协程是一种在程序中处理并发任务的⽅案,也是这种⽅案的一个组件。它和线程属于一个层级的概念,是一种和线程不同的并发任务解决⽅案:一套系统(可以是操作系统,也可以是一种编程语⾔)可以选择不同的⽅案来处理并发任务,你可以使⽤线程,也可以使⽤协程。Kotlin的协程是什么?Kotlin 的协程(确切说是 Kotlin for Java 的协程)是一个线程框架,其实本质上与AsyncTask(已废弃)和Executor(Java)没有什么区别
2021-01-11 08:48:36
845
原创 Activity LaunchMode解析
Activity LaunchModeLaunchModeAndroid中Activity的启动模式有四种:standard(默认选项)singleTopsingleTasksingleInstance可以在AndroidManifest.xml中通过指定activity标签的android:launchMode属性来改变:<activity android:name=".SecondActivity" android:launchMode="singleTop"/>
2020-11-03 15:44:51
2448
6
原创 Android编译系统(一、环境与命令)
1. 概述Android 编译系统是Android源码的一部分,在学习Android编译系统之前,可以参照使用AndroidStudio查看并调试Android源码 来搞定源码和编译环境Android Build 系统用来编译 Android 系统,Android SDK 以及相关文档。该系统主要由 Make 文件,BP文件,Shell 脚本以及 Python 脚本组成,其中最主要的是 Mak...
2019-09-29 15:26:12
587
原创 Android使用aar封装自定义组件
在Android开发的时候,有时候我们需要封装自定义组件,并且希望将封装好的自定义组件到处为一个lib库,实现给其他程序使用的效果,而传统的Jar包并不能很好的实现这个需求,因为传统的Jar包不能很好的支持res中的各个xml和R文件,这时我们就需要打包成aar库来使用。生成AAR库首先我们需要生成一个AAR的库,这里以一个简单的自定义组件为例,来生成AAR库.创建AndroidLib首先...
2019-01-13 23:13:43
3029
5
原创 使用AndroidStudio查看并调试Android源码
使用AndroidStudio查看并调试Android源码使用AndroidStudio查看并调试Android源码0.基础环境1. 操作系统2. Java3. Android源码1. 编译源码初始化编译环境AndroidP的终端检查源码AndroidO的终端检查源码选择编译目标编译验证2. 导入源码到AndroidStudioAndroidStudio的初期配置源码导入1. 在/etc/sysc...
2018-11-04 19:08:42
22391
17
原创 不一样的单例模式
不一样的单例模式提起单例模式,大家基本上都不是很陌生,它的主要作用是保证在Java的整个项目中只有一个对象的存在,而大家在搜单利模式的时候基本上也会搜出各种各样的写法,比如饿汉式,懒汉式,双重校验锁,静态代码块,静态内部类,枚举等等的写法,基本上算是老生常谈的东西了,但是无论是面试还是日常开发中,单例模式还是挺常用到的,这里介绍一种不一样写法的单例模式,能帮助大家稍微提升一点逼格~1....
2018-07-22 22:32:30
506
原创 深入探究Java动态代理
深入探究Java动态代理深入探究Java动态代理1. Spring实现AOP2. JDK动态代理3. 动态代理详解ProxyInvocationHandler4. 深入探究代理类4.1 代理类的代码4.2 invoke方法的第一个参数题外话提起Java的动态代理,大家首先就会想到Spring的AOP,Spring在实现AOP的时候,确实有时候是使...
2018-07-14 01:41:31
515
1
原创 Gradle笔记1之Groovy基础语法
Gradle01gradle概述groovy和gradlegroovy是一种基于JVM的敏捷开发语言,它结合了Python,Ruby和Smalltalk的许多特性,同时它的代码能够和Java代码很好的结合,并且由于它可以运行在JVM上,所以Groovy可以直接使用其他的Java的jar包Groovy语言=Java语言的扩展+众多脚本语言的语法。运行在JVM虚拟机上Gra...
2018-05-28 23:20:44
1075
1
原创 MySQL 基本用法(二)多表查询
数据库1. 数据完整性作用:保证用户输入的数据保存到数据库中是正确的。 确保数据的完整性 = 在创建表时给表中添加约束 完整性的分类:实体完整性域完整性引用完整性1.1 实体完整性实体: 即表中的一行(一条记录)代表一个实体(entity) 实体完整性的作用:标识每一行数据不重复 约束类型: 主键约束(primary key) 唯一约束(unique)...
2018-04-27 22:32:32
1571
4
原创 MySQL基本用法(一)
数据库1. 数据库概述1.1 数据库概述什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作一个小例子假设我们现在没有数据库,我们想开发一个本地的电话本软件,也就是手机中通讯录,这个软件有记录的功能,需要记录联系人姓名,电话号码,生日,性别等信息,由于是要持久化数...
2018-04-22 14:44:38
37404
12
原创 Java中的NIO
NIO的使用0. 从传统Socket开始首先写一个简单的echo服务器:import java.io.*;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;public class EchoService { public void sta...
2018-04-15 13:37:55
369
1
原创 Python爬虫之薪资分析
Python爬虫之薪资分析准备环境python3BeautifulSoupPyCharmEchart背景想看看智联招聘上各个行业的评价薪资是多少,最后生成个图表,最好还能排除培训机构,因为培训机构并不招人但是招聘广告上的工资却很高….最终效果从图上看出,我们会把需要行业的招聘信息抓取下来,然后讲他们的平均薪资记录下来生成柱状图,当点击其中的柱状图的...
2018-04-01 17:31:05
7533
4
原创 MyBatis01
MyBatis011. JDBC编程问题总结1.1 数据准备/*Navicat MySQL Data TransferSource Server : localhost_3306Source Server Version : 50521Source Host : localhost:3306Source Database ...
2018-03-15 11:17:22
329
1
原创 python网络请求(一)socket
UDP创建Socket创建一个udp socketimport sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)发送数据from socket import *udp_socket = socket(AF_INET, SOCK_DGRAM)udp_socket.sendto("你好".e...
2018-03-02 16:28:02
7510
1
原创 MongoDB及在Python下的使用
MongoDB1. 简介MongoDB是一个基于 分布式 文件存储 的 NoSQL数据库由C++语言编写,运行稳定,性能高旨在为Web提供可扩展的高性能存储解决方案名词SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexind...
2018-02-08 16:30:52
2002
原创 Python中的正则表达式
Python中的正则表达式1. 概述正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。 Regula
2018-02-06 14:32:14
1241
原创 Django使用Token
基于Token的身份验证在实现登录功能的时候,正常的B/S应用都会使用cookie+session的方式来做身份验证,后台直接向cookie中写数据,但是由于移动端的存在,移动端是没有cookie机制的,所以使用token可以实现移动端和客户端的token通信. 验证流程整个基于Token的验证流程如下: 1. 客户端使用用户名跟密码请求登录 2. 服务器收到请求,去验
2018-01-28 20:34:31
9012
3
原创 从Socket到Django
socketweb服务器本质上可以认为是一段代码,可以不断的处理http协议的网络请求,而http协议可以使用socket实现,并且http协议是一个无状态的协议,即浏览器发起请求,服务器接收请求,然后给浏览器回复数据,然后断开连接;那么可以用socket来实现一个最简单的web服务器,#!/usr/bin/env python3
2018-01-18 00:19:18
3602
原创 通过阿里云搭建图床工具
背景最近由MAC换成了Windows系统了,在写博客的时候发现没有类似于Mac上的iPic这样好用的图床工具,本着自己动手丰衣足食的原则,准备自己实现一个,具体过程是在cmd中可以上传指定图片,然后生成md格式的图片路径,并复制到剪切板,在使用的时候可以直接粘贴即可用到的技术本次所用到的技术如下: - Python3.6 - 阿里云OSS - 阿里云ECS - nginxOSS首先图床应用需
2018-01-03 23:10:18
13996
1
原创 Docker学习笔记(一)Docker初体验
Docker学习笔记(一)Docker初体验什么是DockerDocker是一个虚拟环境容器,可以将开发环境、代码、配置文件等一并打包到这个容器中,并发布应用到任意平台中Docker的安装在Doker的官方网站 点击Download from Docker Store,在docker store中点击GetDocker即可下载mac的dmg文件 下载完成后,正常安装运行错误打开Docer发
2017-09-30 16:29:32
1261
原创 Android7.0下载Apk自动安装
下载APK并自动安装1. 整体需求下载APK文件 使用DownloadManager来下载在应用界面中展示下载进度安装下载后的APK文件 root模式: 可以自动安装,不需要用户主动点击正常模式: 弹出安装应用页面,需要兼容7.0以上版本2. DownloadManagerDownloadManager是Android提供的用于下载的类,使用起来比较简单,它包含两个静态内部类Downl
2017-04-20 14:12:32
40148
19
原创 Android平台Robotium UI测试详解
Android平台Robotium UI测试详解Robotium 框架工作原理及实践Robotium 是什么一款面向Android端的开源自动化测试框架,,Robotium是基于Instrumentation的测试框架,器测试用例的编写框架是基于Junit的 - 优势 - 同时支持Native应用和Hybrid(混合) - 支持黑盒测试和白盒 - 基于Instrume
2017-03-09 21:02:26
4976
1
原创 Android使用OKHttp3实现下载(断点续传、显示进度)
OKHttp3是如今非常流行的Android网络请求框架,那么如何利用Android实现断点续传呢,今天写了个Demo尝试了一下,感觉还是有点意思准备阶段我们会用到OKHttp3来做网络请求,使用RxJava来实现线程的切换,并且开启Java8来启用Lambda表达式,毕竟RxJava实现线程切换非常方便,而且数据流的形式也非常舒服,同时Lambda和RxJava配合食用味道更佳打开我
2017-02-03 00:18:46
30146
58
原创 Android图像处理(Bitmap与矩阵)
Android图像处理(Bitmap与矩阵)在Android开发的时候经常会有对Bitmap进行处理的需求,例如处理饱和度,亮度等信息,或者加滤镜等需求 以上图的效果为例,这几个效果是我手机自带的图片处理效果可以简单的将原图处理成黑白,高亮度等这样的风格.色相/饱和度/亮度 首先介绍一下图片处理的一些基本概念色相色相就是指图片所传递的颜色,以图片为例,中间的圆环代表的就是色相,我们可以通过改
2017-01-21 18:22:24
5345
原创 Android中使用Socket
Android中使用SocketSocket简介在说Socket之前,我们有必要先来简单介绍一下TCP/IP协议族,TCP/IP(Transmission Control Protocol/Internet Protocol)即 传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个T
2016-10-17 13:54:50
2792
原创 Android线程池详解
在Android开发的时候,当我们需要完成一个耗时操作的时候,通常会新建一个子线程出来,这种方式的线程随处可见,但是这种方式的写法是存在一定问题的,我们知道,在操作系统中,线程是操作系统调度的最小单元,同时线程又不能无限制的产生,并且线程的创建和销毁都会有资源的开销,同时当线程频繁的创建或者销毁的时候,还会让GC频繁的运行,造成程序的卡顿,例如当我们需要网络请求的时候,一定是讲网络请求的代码放到子线程中去运行的,同时如果是ListView中图片的画,采用传统的new Thread的形式,会在ListView
2016-05-17 15:45:25
7934
原创 通过反射机制来实现findViewById
在Android的开发中,我们通常会写好多的findViewById,写的太多了容易腻,这时我们可以换个方式,来通过反射和自定义注解来实现findViewById的操作
2016-04-22 19:47:19
1546
2
原创 Android中圆形图的几种实现方式
在Android开发中,圆形图片是很常见的,例如淘宝的宝贝,QQ的联系人头像等都是圆形的图片,但是Android原生的ImageView又不能显示圆形的图片,这就需要我们自己去实现一个圆形图了一、自定义View实现圆形图我们可以去改造Android系统自带的ImageView来让它显示圆形图片,具体思路是利用画笔的层叠属性,在图片的底部绘制一个圆形,然后显示上下两层的交集部分,
2016-03-16 21:54:13
6750
原创 Android显示gif
Android为我们提供的组件里没有能显示Gif图片的,那么我们要想实现播放的话 就需要自己封装一个组件来显示Gif图片
2016-01-18 14:59:12
1547
2
原创 画笔与画布类
Android允许我们自己在屏幕上花一些自定义的图形,这就用到了画笔和画布类1.Paint类Paint类表示画笔,用来描述图形的颜色和风格,如线宽、颜色、透明度和填充效果等信息。使用Paint类时,需要先创建该类的对象,这可以通过该类提供的构造方法来实现。通常情况下,只需要使用Paint()方法来创建一个使用默认设置的Paint对象。而画笔类有一些常用的方法。
2015-12-26 08:51:11
1392
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人