![](https://img-blog.csdnimg.cn/2019101601103635.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
毕业前的笔记
毕业前的笔记
我的镜子
Hello 我
展开
-
Android使用DataBinding实现MVVM模式(基本使用)
目录简单配置基本使用(单、双向绑定)一.定义model二.在xml中引入model:三.添加监听事件四.生成databinding,并给databinding赋值:五.使用自定义属性,BindingAdapter缺点分析:简单配置1.app模块下的build.gradle文件的Android块中,添加:dataBinding { enabled = true}2.对生...原创 2019-05-19 23:19:22 · 723 阅读 · 0 评论 -
Android使用mob实现第三方登录(Facebook、Twitter)
文章目录基本配置1.申请各平台账号,获取各自的key和secret2.添加依赖3.添加插件4.配置MobSdk5.配置平台6.mob在项目中的初始化本文只是做记录和梳理流程,建议到mob官网查看最新文档,毕竟配置和API会更新基本配置1.申请各平台账号,获取各自的key和secretmob平台注册账号,获取key、secret这个比较容易,登录mob官网就知道怎么做了项目需要...原创 2019-05-09 22:19:20 · 1795 阅读 · 0 评论 -
Groovy基础点记录
记录一些常用的语法,便于快速查询,如果需要查询详细资料:Groovy官方文档 //定义变量使用def,不需要指定类型,不需要分号 def a = 1 def b = "test" def c = $ { b } //引用 //调用需要传参的方法时,不需要些括号 fun a //定义方法,参数类型可以省略 def fun(data) ...原创 2019-11-06 00:32:45 · 161 阅读 · 0 评论 -
NW.js基础
NW.js基础What can NW.js do?NW.js is based on Chromium and Node.js. It lets you call Node.js code and modules directly from browser and also use Web technologies in your app. Further, you can eas原创 2018-01-29 15:36:12 · 248 阅读 · 0 评论 -
Node.js Express框架
Node.js Express框架Express导入var express = require('express');var app = express();express的简单用法就是,使用app指定一个请求路径,对应一个get/post/…回调接口,或者指定一个请求目录,对应一个包含多个get/post/…回调接口的路由。express可以独立开启服务器,使用app.listen(port,C原创 2018-01-10 17:50:29 · 187 阅读 · 0 评论 -
Node.js(基础知识三)
GET对于GET请求,由于所指定想要获取的资源的URL是完整的,因此可以在创建了服务器之后,在回调函数的request参数里,用url和querystring模块提取出客户端的请求参数,即Url中pathname和?之后的内容,然后根据这些信息去做响应的操作和响应。eg:var http = require('http');var url = require('url');var util =原创 2018-01-10 14:14:22 · 192 阅读 · 0 评论 -
Node.js(基础知识二)
Node.js(基础知识二)Node.js路由通俗地理解,路由是你的请求中所指定需要的数据或者操作的响应封装吧。 我们需要为路由提供请求的URL和其他需要的GET及POST参数,然后路由则可以根据你所提供的数据进行相关的操作,比如说返回对应的数据,比如操作数据库等。使用路由也要引进url和querystring模块,这2个模块里封装的方法便于解析url和里面所设计的参数。 eg原创 2018-01-09 15:20:46 · 191 阅读 · 0 评论 -
Node.js(基础知识一)
NPM是NodeJS包管理工具; package.json用于定义包的属性; Node.js自带REPL(交互式解释器)。Node.js的异步实现Node.js异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不是使用了回调就实现了异步。 回调函数在完成任务后就会被调用,Node使用了大量的回调函数,Node所有API都支持回调函数。Node.js是单进程、单线程应用原创 2018-01-09 10:31:26 · 1170 阅读 · 0 评论 -
小白自学前端-XHML
XHTML 是以 XML 格式编写的 HTML。具体什么是 XHTML? XHTML 指的是可扩展超文本标记语言 XHTML 与 HTML 4.01 几乎是相同的 XHTML 是更严格更纯净的 HTML 版本 XHTML 是以 XML 应用的方式定义的 HTML XHTML 是 2001 年 1 月发布的 W3C 推荐标准 XHTML 得到所有主流浏览器的支持 为什么使用 XHTML原创 2017-12-14 21:59:54 · 701 阅读 · 0 评论 -
小白自学前端-HTML
HTML是超文本标记语言,不是编程语言,而是使用标记标签来描述网页的标记语言。 HTML文档 = 网页。 Web浏览器读取的就是HTML文档,然后以网页的形式显示他们。什么是响应式 Web 设计? RWD 指的是响应式 Web 设计(Responsive Web Design) RWD 能够以可变尺寸传递网页 RWD 对于平板和移动设备是必需的HTML head 元素 head 元素原创 2017-12-14 21:34:45 · 320 阅读 · 0 评论 -
算法(二)
桶排序冒泡排序快速排序桶排序适用于知道数组值的取值范围(较小)的排序 思想:根据数组的取值范围创建一个从0开始到数组取值范围最大值的桶数组,然后将桶数组中的数初始化为0,然后将数组中的值一一用值对应相对的桶数组下标的值将对应下标指定值+1,然后按顺序打印出桶每个下标值对应次数的下标值。冒泡排序思想:比较相邻的两个元素,如果顺序出错,就交换位置;一趟排好一个数,排数组大小-1趟就排好序列了。原创 2017-10-13 12:03:08 · 176 阅读 · 0 评论 -
算法(一)
插入排序归并排序分治法排序分治策略分治法求解具有最大和的子数组插入排序适用于少量元素的排序,思想和排序扑克牌一样:一张张地抽取,然后和手中已经排好序的最大的牌进行比较,大之则插入右边,小之则和它的前一张牌比较。 伪代码://[1,j-1]是手中牌,[j,A.length]是待插入的牌for j = 2 to A.length //从待插入的第二张开始,A[1]表示第一张已经抽在手中的牌原创 2017-10-11 15:50:28 · 198 阅读 · 0 评论 -
算法-计算时间复杂度
一、概念 时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数) 比如:一般总运算次数表达式类似于这样: a*2^n+b*n^3+c*n^2+d*n*lg(n)+e*n+f a ! =0时,时间复杂度就是O(2^n); a=0,b<>0 =>O(n^3); a,b=0,c<>0 =>O(n^2)依此类推 eg: (1) for(i=1;i<=n;i++)转载 2017-10-10 17:55:31 · 1819 阅读 · 0 评论 -
网络复习-应用层(部分)
万维网WWW:并不是特殊的计算机网络,它是一个大规模的、联机式的信息储藏所,英文简称Web。万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。超文本:包含指向其他文档的链接的文本。超媒体:内容上不仅限于文本文档的文档。 万维网需要解决的4个问题: 1.怎样标志分布在整个因特网上的万维网文档? 2.用什么样的协议来实现万维网上的各种链接?原创 2017-10-09 19:41:11 · 329 阅读 · 0 评论 -
网络复习-运输层
网络复习-运输层网络复习-运输层UDP特点报文的首部格式TCPTCP的特点TCP可靠传输的工作原理停止等待协议ARQ连续ARQ协议TCP报文段的首部格式部分重要的TCP的流量控制TCP的拥塞控制慢开始和拥塞避免快重传快恢复TCP的运输连接管理三次握手第三次握手的必要四次挥手第四次挥手的必要网络层主要是主机到主机间的通信,而运输层是进程到进程间的通信。 复用:所有原创 2017-10-07 16:31:45 · 248 阅读 · 0 评论 -
网络复习-网络层
IP地址的编址方法的3个阶段分类的IP地址子网的划分无分类编址CIDR构成超网IP协议配套使用的3个协议: 地址解析协议ARP,用来得到指定的MAC地址 网际控制报文协议ICMP,是用于处理异常、差错的 网际组管理协议IGMP,是用于多播相关的中间设备: 物理层:转发器 数据链路层:网桥/桥接器(只是扩大网络,没有真正连接网络) 网络层:路由器 网络层以上:网关IP地址的编址原创 2017-10-04 16:13:45 · 287 阅读 · 0 评论 -
java复习-异常+断言
常见的错误类型:1. 用户输入错误2. 设备错误(打印机、网页、文件)3. 物理限制(磁盘、内存)4. 代码错误 有些情况下,发生错误时,可以通过错误返回码-1,null得知,对于没有返回码的错误只能通过设置异常处理器 异常类是一个封装了错误信息的对象 Throwable是所有异常类的超类,它有2个子类,Error(系统内部错原创 2017-09-11 16:01:17 · 202 阅读 · 0 评论 -
java复习-继承
继承:仅需要指出子类与超类的不同之处,所以应该把通用的方法放在超类中,将具有特殊用途的方法放在子类中,可以实现代码复用 子类的方法是不能够直接访问超类的私有部分的(除了使用protected),一般使用类名调用方法,或者使用super调用超类的私有域(super和this不一样,它不是一个引用),super也可以传进参数,用来调用超类的构造函数,在使用这个方法时,super语句必须放在第一原创 2017-09-11 00:59:01 · 198 阅读 · 0 评论 -
java复习-对象与类
类之间的三种关系:依赖、聚合(关联)、继承其中依赖可以理解为一个类的方法操作另一个类的对象,我们应该尽可能地减少依赖,降低耦合度;聚合,意味着一个类的对象包含另一个类的对象 一个对象变量并有实际包含一个对象,它仅仅引用一个对象,new操作符返回的就是一个引用而已 时间点类Date,日历表示法的GregorianCalendar(Calendar)CregorianCalen原创 2017-09-09 14:26:33 · 185 阅读 · 0 评论 -
java复习-基础内容部分
Java有8种基本类型:4种整型:byte(1字节)、short(2字节)、int(4字节)、long(8字节,以L结尾)2种浮点:float(4字节,以F结尾,6到7位)、double(8字节,以D或者空结尾,15位)1种布姆:boolean1种字符:char*java没有任何无符号类型,比如unsigned 十六进制的数值以0x为前缀,八进制以0为前缀,二进制以0b原创 2017-09-07 22:22:25 · 172 阅读 · 0 评论 -
简述MVC与MVP
MVC在android中的体现:视图View层——XML文件Model层——本地数据文件或网络获取的数据体、数据的处理Controller——Activity、Fragment由用户与view的交互开始,发送命令给Activity/fragment,Activity/fragment获取Model,进行业务逻辑,然后修改Model或者将Model设置给View MVP:原创 2017-09-07 15:46:40 · 213 阅读 · 0 评论 -
迭代器模式+代理模式和适配器模式的简述
迭代器模式(Iterator),又称为游标模式(Cursor)产生背景:容器用来存放数据,当用户需要遍历里面的数据时,如果将遍历算法放置在容器内部,那么会使容器承担太多东西,而如果选择让用户自己实现遍历算法,那么又会暴露容器的内部细节,所以创建一个迭代器,将遍历算法放置到迭代器里,然后在容器内部声明一个返回关于如何遍历自己的迭代器的方法供用户使用,这样就避免了上诉的2个问题了,迭代器也由此而生原创 2017-09-07 01:30:27 · 331 阅读 · 0 评论 -
观察者模式
常用在GUI系统和订阅——发布系统,最重要的作用就是解耦,即将观察者和被观察者解耦定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新适用场景:关联行为场景,需要注意的是,关联行为是可以拆分的,不是“组合”关系;事件多级出发场景;跨系统的消息交换场景,如消息队列、事件总线的处理机制。 4个角色:抽象被观察者(Obse原创 2017-09-06 23:45:30 · 174 阅读 · 0 评论 -
工厂模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪个类使用场景:在任何需要生成复杂对象的地方,使用new就可以完成创建的对象无需使用工厂模式工厂模式的四个角色:抽象工厂、具体工厂、抽象产品类、具体产品类在抽象工厂里定义生产方法,在具体工厂里定义具体要生产的产品 有时候可以利用反射机制和泛型简洁地来生产具体的产品对象,此时在抽象工厂里定义传入的参数为泛型的Class类,然后在具原创 2017-09-06 21:51:35 · 198 阅读 · 0 评论 -
Builder模式
适合当一个对象的构造涉及这些场景时:1. 存在一些方法,内部会根据不同传进值进行不同的执行顺序,产生不同的结果 2. 使用者可以传进不同数目、不同数值的零件(参数)得到不同的结果3. 需要产生的结果所对应的类非常复杂,需要很多参数来初始化,并且很多参数有默认值 有2种常见的使用方式:1. 创建Builder的抽象类;创建继承自Bu原创 2017-09-06 16:42:49 · 242 阅读 · 0 评论 -
单例模式
单例使用的场景:1. 创建这样的对象需要消耗很多资源,比如说这个对象是包含线程池、缓存系统、网络请求等2. 需要一个跟随系统创建和销毁的、提供全局访问数据的对象 几个特点:1. 构造函数不对外开放2. 通过静态方法或者枚举返回单例对象3. 确保单例对象有且只有一个,尤其是在多线程环境下4. 在需要被序列化传递时,要确保原创 2017-09-04 01:23:22 · 229 阅读 · 0 评论 -
简述面向对象的6大原则
1. 单一职责原则一个类应该是由一组相关性很高的函数、数据的封装,是能够体现它的单一的职责的封装,相反地,一个类不应该有多于1个的职责,不一样的功能不应该放在一个类种,即一类一职责/一功能2. 开闭原则简单说,就是修改是封闭的,扩展是开放的:当有新的功能需要实现或者功能需要修改时,不应该通过修改源代码实现,而是通过扩展的方式来实现变化,避免对原来功能的造成不好的影响原创 2017-09-03 22:30:19 · 746 阅读 · 0 评论 -
很详细的Java多线程知识
Java多线程(上)概述进程拥有自己的一整套变量,而线程部署于进程中,同一个进程里的线程共享数据。线程与进程先比带来的好处: 1.效率:共享数据使得线程之间的通信比进程更加地有效和快捷。 2.代价:创建和销毁一个线程比创建和销毁一个进程的开销小得多。线程存在的问题: 线程共享一个进程里的数据,那么在线程不同的、访问进程共享资源的顺序下,可能会对数据造成同步问题。线程的生命周期(六种状态):原创 2017-09-14 16:08:12 · 283 阅读 · 0 评论 -
集合
集合标签(空格分隔): java数组里保存的可以是对象的值,也可以是对象,而集合只能保存对象。 集合的父类为Collection,Map。Set、Queue、List继承自Collection,xxMap都是继承自Map。 比较多用为ArrayList,HashSet,HashMap,使用迭代器iterator来遍历,有三个通用方法,hasNext,next,remove,继承自接口类Itera原创 2017-09-12 23:02:31 · 263 阅读 · 0 评论 -
泛型
泛型标签(空格分隔): java泛型没有使用泛型的List使用泛型的List泛型类型泛型类泛型方法通配符泛型边界泛型擦除泛型限制泛型擦除与多态的冲突桥方法擦除总结没有使用泛型的List如果没有使用泛型,List存放的是Object类型,因此可以向List中存放任何类型,不包括基本类型;在获得List里的数据时,由于返回的数据也是Object类型的,所以要进行强制类型转换。Li原创 2017-09-12 19:57:21 · 533 阅读 · 0 评论 -
静态内部类
需要了解2个概念:内部类和静态修饰符static1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,因为这个类转载 2017-08-26 23:13:44 · 189 阅读 · 0 评论 -
简单的集合
数组里保存的可以是对象的值,也可以是对象,而集合只能保存对象;集合的父类为Collection,Map,三大类型为List,Set,Map,比较多用为ArrayList,HashSet,HashMap,使用迭代器iterator来遍历,有三个方法,hasNext,next,remove;使用父类的多态来构建集合的具体实例,使用具体实例来构建迭代器,直接实例.iterator();循原创 2017-07-18 01:00:42 · 225 阅读 · 0 评论 -
数据库编程
JDBC使用方法,第一,因为是使用java环境编写,所以要使用某个数据库,首先是要加载那个数据库的驱动过来,加载的方式是使用反射的方法,第二,加载完数据库的驱动后要建立和该数据库的连接,连接方式是使用驱动管理DriverManager.getConnection(URL,账号,密码),得到连接的实例Connection实例,第三,使用连接的实例来创建描述Statement实例,用描述的方法表明要使原创 2017-07-18 00:56:59 · 185 阅读 · 0 评论 -
并发编程
并发性是指同一CUP轮流执行多个任务,而并行性是指多个CUP分别执行多个任务;main方法里的内容就是主线程执行体;java中用Thread来表示线程类,该子类就是线程;当一个线程继承自Thread时也就意味着它不能再继承其他的类,java是单继承的;使用继承接口Runnable时,只是表明该类具有跑线程的能力了,但不代表它就是线程了,可以用它的能力来创建线程,只要把它当作new原创 2017-07-18 00:52:30 · 179 阅读 · 0 评论 -
网络
通过InetAddress类的静态方法可以通过指定的主机域名或者IP地址获得指定目标的IP地址封装类实例,里面包含了目标的域名和IP地址;网络编程的工作大部分都是对流进行处理,而流,指的是通过一定的路径,从源传递到目的的,字节序列;java中的流分为2种,输入流和输出流;输入输出流的基类(OutputStream和InputStream)都放在java.io里,它们都有一些常用原创 2017-07-18 00:46:51 · 189 阅读 · 0 评论 -
注解
注解,annotation,用来修饰、标识一些带有特定功能的代码的,不同的注解规定了不同的功能,是为了解决配置文件过多带来的繁琐;作用:描述一些不能用java来表示的信息,由编译器来测试和验证的信息;实际的效果:生成描述性文件;使用情景:一般用在为了解决描述符性质的类和接口的重复性工作;@Deprecated 表明方法或类已经过时,不鼓励使用;向注解设置参数,表示一些特原创 2017-07-18 00:42:28 · 233 阅读 · 0 评论 -
类型信息和泛型
类型信息就是类的信息,java文本文件在经过编译后就会生成一个.class的二进制文件;java文件与.class文件是一对多的关系;事实上,每个java类文件都会有一个public staticfinal .class 的属性,是Class类(泛型类来的)的实例,用来记录类型信息的;引用static final XX 的静态常量是不会加载对应的类的,new是加原创 2017-07-18 00:38:08 · 303 阅读 · 0 评论