<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cfy137000的博客]]></title><description><![CDATA[陈丰尧的博客]]></description><link>https://blog.youkuaiyun.com/cfy137000</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cfy137000]]></copyright><item><title><![CDATA[ViewBinding使用入门]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/129046057</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/129046057</guid><author>cfy137000</author><pubDate>Wed, 15 Feb 2023 16:34:31 +0800</pubDate><description><![CDATA[ViewBing的使用入门]]></description><category></category></item><item><title><![CDATA[Netty基本使用(二)-Netty组件]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/116799549</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/116799549</guid><author>cfy137000</author><pubDate>Fri, 14 May 2021 17:44:32 +0800</pubDate><description><![CDATA[Netty基本使用(二)-Netty组件
1. EventLoop
事件循环对象
EventLoop是事件循环对象,他本质上是一个单线程执行器(同事维护了一个Selector),里面有run方法处理Channel上远远不断的io事件
EventLoop的继承关系


从根上看, 他继承了java的的ScheduledExecutorService.所以他拥有线程池中的所有方法
另外Netty在线程池的基础上,又扩展了EventExecutor,提供了一些额外的方法:

boolean inEventLoop]]></description><category></category></item><item><title><![CDATA[Netty基本使用(一)]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/115577586</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/115577586</guid><author>cfy137000</author><pubDate>Sat, 10 Apr 2021 15:28:57 +0800</pubDate><description><![CDATA[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就是一个 网络框架 ,可]]></description><category></category></item><item><title><![CDATA[在Android中使用vi等linux命令]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/115160014</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/115160014</guid><author>cfy137000</author><pubDate>Wed, 24 Mar 2021 09:15:01 +0800</pubDate><description><![CDATA[在Android中使用vi等linux命令
日常在开发Android应用的时候, 有时候需要到设备中去修改一些配置文件, 比如权限白名单,sp的的xml什么的,由于Android本身又没有vim/vi等直接编辑软件,所以通常的做法是 先用adb pull命令将文件拉到电脑中,修改过后再使用adb pull命令推到手机里, 很不方便
Busybox
busybox是一个工具箱, 可以在不同平台上安装, 安装过后就可以使用一些linux下的常用命令了
安装
首先需要查看Android设备的CPU架构, 才能下载]]></description><category></category></item><item><title><![CDATA[配置Kotlin类型提示]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/114953033</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/114953033</guid><author>cfy137000</author><pubDate>Wed, 17 Mar 2021 22:21:23 +0800</pubDate><description><![CDATA[配置Kotlin类型提示
目前Android开发大多数已经逐渐转移到了Kotlin了, Kotlin是一门强类型语言, 但是它又有非常智能的类型推断机制, 这就可以使我们平时在写代码的时候, 不需要显示的声明出变量的类型,例如:
val a = theFunction()  // a 是boolean类型
  
fun theFunction():Boolean{  
    return true  
}

由于类型推断机制的存在, 我们不需要声明变量a的类型, ide会推断出a就是boolean类型的变]]></description><category></category></item><item><title><![CDATA[Kotlin协程解析]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/112461124</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/112461124</guid><author>cfy137000</author><pubDate>Mon, 11 Jan 2021 08:48:36 +0800</pubDate><description><![CDATA[Kotlin协程解析
协程是什么


协程是什么？

协程是一种在程序中处理并发任务的⽅案，也是这种⽅案的一个组件。
它和线程属于一个层级的概念，是一种和线程不同的并发任务解决⽅案：一套系统（可以是操作系统，也可以是一种编程语⾔）可以选择不同的⽅案来
处理并发任务，你可以使⽤线程，也可以使⽤协程。



Kotlin的协程是什么？

Kotlin 的协程（确切说是 Kotlin for Java 的协程）是一个线程框架，其实本质上与AsyncTask（已废弃）和Executor（Java）没有什么区别


]]></description><category></category></item><item><title><![CDATA[Activity LaunchMode解析]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/109470990</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/109470990</guid><author>cfy137000</author><pubDate>Tue, 03 Nov 2020 15:44:51 +0800</pubDate><description><![CDATA[Activity LaunchMode
LaunchMode
Android中Activity的启动模式有四种:

standard(默认选项)
singleTop
singleTask
singleInstance

可以在AndroidManifest.xml中通过指定activity标签的android:launchMode属性来改变:
&lt;activity android:name=".SecondActivity"
    android:launchMode="singleTop"/&gt;]]></description><category></category></item><item><title><![CDATA[Android编译系统(一、环境与命令)]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/101694262</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/101694262</guid><author>cfy137000</author><pubDate>Sun, 29 Sep 2019 15:26:12 +0800</pubDate><description><![CDATA[1. 概述
Android 编译系统是Android源码的一部分,在学习Android编译系统之前,可以参照使用AndroidStudio查看并调试Android源码 来搞定源码和编译环境
Android Build 系统用来编译 Android 系统，Android SDK 以及相关文档。该系统主要由 Make 文件，BP文件,Shell 脚本以及 Python 脚本组成，其中最主要的是 Mak...]]></description><category></category></item><item><title><![CDATA[Android使用aar封装自定义组件]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/86442748</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/86442748</guid><author>cfy137000</author><pubDate>Sun, 13 Jan 2019 23:13:43 +0800</pubDate><description><![CDATA[在Android开发的时候,有时候我们需要封装自定义组件,并且希望将封装好的自定义组件到处为一个lib库,实现给其他程序使用的效果,而传统的Jar包并不能很好的实现这个需求,因为传统的Jar包不能很好的支持res中的各个xml和R文件,这时我们就需要打包成aar库来使用。
生成AAR库
首先我们需要生成一个AAR的库,这里以一个简单的自定义组件为例,来生成AAR库.
创建AndroidLib
首先...]]></description><category></category></item><item><title><![CDATA[使用AndroidStudio查看并调试Android源码]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/83718735</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/83718735</guid><author>cfy137000</author><pubDate>Sun, 04 Nov 2018 19:08:42 +0800</pubDate><description><![CDATA[使用AndroidStudio查看并调试Android源码使用AndroidStudio查看并调试Android源码0.基础环境1. 操作系统2. Java3. Android源码1. 编译源码初始化编译环境AndroidP的终端检查源码AndroidO的终端检查源码选择编译目标编译验证2. 导入源码到AndroidStudioAndroidStudio的初期配置源码导入1. 在/etc/sysc...]]></description><category></category></item><item><title><![CDATA[不一样的单例模式]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/81159958</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/81159958</guid><author>cfy137000</author><pubDate>Sun, 22 Jul 2018 22:32:30 +0800</pubDate><description><![CDATA[不一样的单例模式

提起单例模式，大家基本上都不是很陌生，它的主要作用是保证在Java的整个项目中只有一个对象的存在，而大家在搜单利模式的时候基本上也会搜出各种各样的写法，比如饿汉式，懒汉式，双重校验锁，静态代码块，静态内部类，枚举等等的写法，基本上算是老生常谈的东西了，但是无论是面试还是日常开发中，单例模式还是挺常用到的，这里介绍一种不一样写法的单例模式，能帮助大家稍微提升一点逼格～



1....]]></description><category></category></item><item><title><![CDATA[深入探究Java动态代理]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/81039768</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/81039768</guid><author>cfy137000</author><pubDate>Sat, 14 Jul 2018 01:41:31 +0800</pubDate><description><![CDATA[深入探究Java动态代理



深入探究Java动态代理
1. Spring实现AOP
2. JDK动态代理
3. 动态代理详解
Proxy
InvocationHandler


4. 深入探究代理类
4.1 代理类的代码
4.2 invoke方法的第一个参数
题外话










提起Java的动态代理，大家首先就会想到Spring的AOP，Spring在实现AOP的时候，确实有时候是使...]]></description><category></category></item><item><title><![CDATA[Gradle笔记1之Groovy基础语法]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/80490254</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/80490254</guid><author>cfy137000</author><pubDate>Mon, 28 May 2018 23:20:44 +0800</pubDate><description><![CDATA[Gradle01



gradle概述



groovy和gradle

groovy是一种基于JVM的敏捷开发语言,它结合了Python,Ruby和Smalltalk的许多特性,同时它的代码能够和Java代码很好的结合,并且由于它可以运行在JVM上,所以Groovy可以直接使用其他的Java的jar包


Groovy语言=Java语言的扩展+众多脚本语言的语法。运行在JVM虚拟机上
Gra...]]></description><category></category></item><item><title><![CDATA[MySQL 基本用法(二)多表查询]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/80114321</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/80114321</guid><author>cfy137000</author><pubDate>Fri, 27 Apr 2018 22:32:32 +0800</pubDate><description><![CDATA[数据库



1. 数据完整性

作用：保证用户输入的数据保存到数据库中是正确的。 
确保数据的完整性 = 在创建表时给表中添加约束 
完整性的分类：


实体完整性
域完整性
引用完整性




1.1 实体完整性

实体: 即表中的一行(一条记录)代表一个实体(entity) 
实体完整性的作用：标识每一行数据不重复 
约束类型： 主键约束（primary key）  唯一约束(unique)...]]></description><category></category></item><item><title><![CDATA[MySQL基本用法(一)]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/80038883</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/80038883</guid><author>cfy137000</author><pubDate>Sun, 22 Apr 2018 14:44:38 +0800</pubDate><description><![CDATA[数据库



1. 数据库概述



1.1 数据库概述



什么是数据库

数据库就是存储数据的仓库，其本质是一个文件系统，数据按照特定的格式将数据存储起来，用户可以对数据库中的数据进行增加，修改，删除及查询操作



一个小例子

假设我们现在没有数据库,我们想开发一个本地的电话本软件,也就是手机中通讯录,这个软件有记录的功能,需要记录联系人姓名,电话号码,生日,性别等信息,由于是要持久化数...]]></description><category></category></item><item><title><![CDATA[Java中的NIO]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/79948655</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/79948655</guid><author>cfy137000</author><pubDate>Sun, 15 Apr 2018 13:37:55 +0800</pubDate><description><![CDATA[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...]]></description><category></category></item><item><title><![CDATA[Python爬虫之薪资分析]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/79779862</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/79779862</guid><author>cfy137000</author><pubDate>Sun, 01 Apr 2018 17:31:05 +0800</pubDate><description><![CDATA[Python爬虫之薪资分析



准备环境


python3
BeautifulSoup
PyCharm
Echart




背景

想看看智联招聘上各个行业的评价薪资是多少,最后生成个图表,最好还能排除培训机构,因为培训机构并不招人但是招聘广告上的工资却很高….



最终效果



从图上看出,我们会把需要行业的招聘信息抓取下来,然后讲他们的平均薪资记录下来生成柱状图,当点击其中的柱状图的...]]></description><category></category></item><item><title><![CDATA[MyBatis01]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/79565335</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/79565335</guid><author>cfy137000</author><pubDate>Thu, 15 Mar 2018 11:17:22 +0800</pubDate><description><![CDATA[MyBatis01



1. JDBC编程问题总结

1.1 数据准备



/*
Navicat MySQL Data Transfer

Source Server         : localhost_3306
Source Server Version : 50521
Source Host           : localhost:3306
Source Database     ...]]></description><category></category></item><item><title><![CDATA[python网络请求(一)socket]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/79424719</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/79424719</guid><author>cfy137000</author><pubDate>Fri, 02 Mar 2018 16:28:02 +0800</pubDate><description><![CDATA[UDP



创建Socket

创建一个udp socket



import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)



发送数据



from socket import *
udp_socket = socket(AF_INET, SOCK_DGRAM)
udp_socket.sendto(&quot;你好&quot;.e...]]></description><category></category></item><item><title><![CDATA[MongoDB及在Python下的使用]]></title><link>https://blog.youkuaiyun.com/cfy137000/article/details/79291184</link><guid>https://blog.youkuaiyun.com/cfy137000/article/details/79291184</guid><author>cfy137000</author><pubDate>Thu, 08 Feb 2018 16:30:52 +0800</pubDate><description><![CDATA[      MongoDB1. 简介MongoDB是一个基于 分布式 文件存储 的 NoSQL数据库由C++语言编写,运行稳定,性能高旨在为Web提供可扩展的高性能存储解决方案名词SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexind...]]></description><category></category></item></channel></rss>