Postman的一次经历
Postman的一次经历前言 因为我们学校图书馆是预约制,头天晚上18点能预约第二天的位置,我在考研的时候预约了一个位置,结果下学期来的时候发现一直有人卡点预约位置,我又不能说我做了一个学期就是我的位置,所以萌生了想要利用软件来进行预约的想法
走过的路 首先我想到的是用IDEA来写代码,写一个爬虫,发送网络请求然后返回数据即可,最后我发现我不太懂Maven,就一直再看这方面的东西,但关键是第二天马上就要预约,所以我没有办法继续去学习下来,其实这种办法是最好的,最自动化的。
后来我又想到写一个Android程序进行预约,直接用retrofit来进行预约就可以了,然后发现我的电脑重装了系统,就找不到Android studio,下载又很慢,如果用android虽然麻烦点,但好歹都是学过的,重新看看自己的代码就捡回来了。就本来打算写一个Button然后点一下发送Http请求,请求就直接完事,以后就直接拿手机预约图书馆就好,但发现很困难去再配置环境安装Android studio,所以我就放弃了。
cookie的了解本身觉得自己了解这个网络请求机制的不够,所以我就想先去了解一下,用chorm ...
2020年总结
2020年总结不知从什么时候开始,2020年过去了。在1月10日前,也做完了所有的学业上的工作。从今天开始,也许做的每一件事情,就都是2021年的新的开始了。回首2020年的一年中,我做了极其重要的也许有可能会影响我一生的事情:决心去进入计算机领域去提高自己的学历,入门学习了一项技能。
在2020年的一年中,我了解到了Android开发并且开始在木犀团队进行Android开发的学习,从这里开始,我变得有自信,有目标,有努力的去做一件事情。不仅仅从简单的Java学起,也是从各种学习计算机技术的开始。从查找资源到学习方法,经过了很多。在木犀的2020年,用100%的努力去完成、去实现一个又一个的任务。在下半学期,通过Java写了一些小APP后开始学习用Kotlin来进行实现,不仅重构了自己关于个人项目的代码,也实现了科研立项APP的一部分。
在2020年的一年中,我和我的女朋友经历了很多坎坷的事情,我自己的价值观也得到了提升,让我对这个世界产生了对于人、情感、生活、家庭、事业的思考。在我迷茫、在我焦虑时,总有一个那样的人,对我说,我可以,我一定能完成。也总是在我疲惫的时候,给予我最温暖的怀 ...
迁移项目的坑
迁移项目的坑引言好像从换系统、升级Android studio以后,就发现了很多莫名其妙的错误,其实也不算莫名其妙的错误,就是迁移项目的时候出现的一些常见错误。在这里写一个自己解决的办法,如果以后再次遇到这种情况就先试试这些方法,如果不行再继续寻找解决方案。
关于代理的问题因为有的区域的局限性,导致一些不可名状的错误。在这里我们需要设置一下代理,并有相关的VPN来解决。
如果遇到下载对应的gradle包(这里指的是在线编译,而不是利用离线包)
类似于这种情况:
1Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all artifacts for configuration ':classpath'.
如果是这样的情况,我们的解决办法一般有几步:
找到我们的代理的地方
查看代理
注释或者删除注解
给予以上三步,按理说应该是解决了这个问题,如果由 ...
拷贝总结
深拷贝、浅拷贝、延迟拷贝JAVA中类型存放在Java中,数据的类型可以分为基本类型(值类型)和引用类型
基本类型:boolean类型与数值类型
数值类型:byte short int long char(特殊的int) float double
引用类型:null、class、array、interface、String、枚举
这两种类型有什么区别呢?
在JAVA中,我们简单的先了解内存是由两部分组成:堆和栈
堆用来存放引用类型的值
栈用来存放基本类型的值和引用类型的引用(对象)
对于基本类型来说,值就直接保存在变量中,存储在栈
(PS:JAVA中基本对象时单个值,不是对象,不面向对象。但基本对象也有包装器是基本类型的对象)
对于引用类型来说,变量中保存的是对象的地址,由地址再指向实际的对象,实际对象保存着内容
当我们清楚了解了这个以后,我们再去看看赋值“=”
基本类型的赋值:
1int num =20;
对于基本类型的赋值来说,赋值运算会直接改变变量的值,原来的值被覆盖
引用类型的赋值:
12String str=new String("Hel ...
Google官方MVP示例分析
Google官方MVP示例分析引言在我做一些MVP的设计模式的时候,我通常从三个方面去做:
从《Android设计模式》这本书中学习如何去写
看一些博客
看官方文档
但这些中,我认为去看官方文档是十分重要的,因为每个人的代码风格不同,规范也各不相同。我们在一开始学习的时候,我认为必须要去多看一些官方给出的例子和文档。从博客和书本中学习一个知识的理解,从官方文档和例子来学习如何去写出一个好的代码。
所以在MVP模式的学习中,我想多分析一下Google官方的MVP的示例。
Github地址:https://github.com/android/architecture-samples
这篇博客从官方示例入手,结合Android设计模式和一些博客来说明如何去写出一个好看漂亮的
项目层包
项目效果图:
我们先从addedittask来看
addedittask
其实在这里我们可以看到MVP的一个模式,在Contract中去写VIew和Presenter的接口,在TaskPresenter中去实现Contract.Presenter接口,在Fragment中去实现Contract.View ...
计网运输层
运输层:帮助到达的数据包找到应用进程网络层解决的问题是来到主机(提高主机之间的逻辑通信)
数据从远端,经过若干个路由器,通过合适的路由算法,来找到主机
但是我们的数据不能直接交给主机使用,我们交给应用进程来使用数据
运输层是面向通信部分的最高层
也是用户功能中的最低层
边缘部分的两个主机,使用核心部分的功能进行端到端的通信时,
只有位于网络边缘部分的主机协议栈才有运输层。
而到网络核心部分中的路由器在转发分组的时候只用到下三层(没有运输层和应用层)
概况运输层的作用:为相互通信的应用进程进行逻辑通信
通信的真正端点,实际上是应用进程和应用进程之间
运输层有几个重要的功能:复用、分用、差错检测功能
复用:不同的应用进程使用同一个传输层协议工作
分用:同一个运输层将应用报文交给不同的应用进程来使用
差错检测:(网络层也出现:IP协议只检测IP协议的首部) 而在运输层中,是对整个报文进行检测的(TCP报文段、UDP报文)
运输层协议:面向连接的TCP协议和无连接的UDP协议
TCP(传输控制协议):全双工可靠性通道(同时接受和发送(全双工))
UDP(用户数据报协议):不可靠的信 ...
Lambda表达式
Lambda表达式:“匿名类的一个问题是,如果匿名类的实现非常简单(例如仅包含一个方法的接口),则匿名类的语法可能看起来笨拙且不清楚。在这些情况下,您通常试图将功能作为参数传递给另一种方法,例如,当某人单击按钮时应采取什么措施。 Lambda表达式使您能够执行此操作,将功能视为方法参数,或将代码视为数据”这是Lambda表达式的文档解释,简单的来说就是简化匿名内部类
只能简化有函数接口的匿名内部类通俗点说,Lambda表达式是用来简化函数接口的表达式简化了什么呢?
无参可以简化接口名和函数名
带着参数可以简化参数类型例子:
没有参数时1234//创建Runnable对象Runnable runnable=()->{}
当函数体表达式有多行的时候,可以用{}来在里面写
123456789101112//开启线程//原写法new Thread(new Runnable(){ @Obverride public void run(){ System.out.println("Thread run" ...
Kotlin协程
Kotlin协程什么是协程由Kotlin官方对多线程操作提供的一系列API
类似于Java的Thread Android AsyncTask
借助Kotlin语言看起来写同步的代码写异步处理操作。也就是非阻塞式挂起
协程的功能
协程最基本的功能是并发操作,多线程。可以切换任务到后台和前台。
123456launch(Dispatchers.IO){ saveToDatabase(data)}launch(Dispatchers.Main){ updateViews(data)}
可以把不同线程的代码写在同一个代码块
1234launch(Dispatchers.Main){//开始:主线程 val user = api.getUser()//网络请求:后台程序 nameTv.text = user.name//更新UI:主线程}
如果对于Java来说:想要这样做,是不可能的,那么你只能不停地回调,才能完成这样的操作。
开发难度降低(合并协程)
对于一个需求来说,如果需要并行执行两个请求,但 ...
计算机网络
计算机网络基础知识
什么是网络
什么是计算机网络
互联网的组成
计算机网络结构
TCP/IP协议
什么是网络网络是由节点和连线构成,表示诸多对象及其相互联系。对于计算机领域来说:网络是代表传输数据之间的联系的一种平台。对于数据结构来说,就是图的表示 ,对于定量分析就是
应用层:提高常见的网络应用应用层利用传输层的服务将数据传输给应用进程,完成进程间的通信。
再根据特定应用再进行数据进一步去封装。
定义了应用层的协议:包含以下内容
报文类型
各种报文类型的语法
字段的语义
进程之间何时、如何发送报文
应用层协议只是网络应用的一个部分,是网络应用的一个子集
应用层的具体内容就是规定应用进程在通信时所遵守的协议
特点:
应用层协议基于客户服务端模式(前面的概念) p2p也是客户服务端模式的一个变式。
最高层协议,最活跃的一层。变化最多的一层
有公开的协议(HTTP)也有不公开的协议(p2p下载的协议)
应用层协议(基本的协议)
DNS(域名系统):实现网络用户到IP地址映射的网络服务
FTP(文件传输协议):用于实现交互式文件传输功能
SMTP(简单邮件传送协议):用于实 ...
Activity Intent
Activity Intent
什么是Intent
为什么要用Intent
如何使用Intent
什么是Intent?在Android developer中是这样描绘Intent的:
Intent 是一个消息传递对象,您可以用来从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:
启动 Activity
启动服务(Service)
传递广播(BroadCast)
这里的消息是一种请求操作,当然消息传递不止这一种,而且消息不仅仅指请求。我们有专门的IPC(进程间通信、跨进程通信)机制。
这里就不深入了,后续会学到。
那么我们拐回来,再说一下Intent
Intent是对要执行的操作的抽象描述。它可以与Context、startActivity(Intent)一起使用,以启动安卓应用程序活动
Intent提供了一种工具,用于在不同应用程序中的代码之间执行后期运行时绑定。它最重要的用途是在启动活动时,它可以被认为是活动之间的粘合剂。它基本上是一个被动的数据结构,包含了对要执行的操作的抽象描述。
其实我们创建Intent对象的时候 ...