自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 网络安全

计算机网络面临的四大威胁:截获(被动攻击)、中断(主动攻击)、篡改(主动攻击)、伪造(主动攻击)被动攻击是只是观察分析某个PDU(协议数据单元),而不干扰,又叫流量分析主动攻击是对PDU做处理,又分为三种 {更改报文流拒绝服务:向服务器发送大量分组,使服务器没办法正常工作,占用服务器资源,又叫拒绝服务DoS,如果多个网站集中攻击一个网站,叫做分布式拒绝服务DDoS伪造连接初

2017-01-18 16:09:09 2659

原创 TCP/IP网络理解

计算机运行相同的协议,才能相互通信,这就是传输协议,是数据通信的基础,最开始的是FTP协议通信实体也是要分层次的,类似与公司一样,都需要分出不同的层次,各个进行不同的工作,分出的层要明确每个层之间的关系,各自要干的事是什么,上下关系是什么ISO/OSI分层,一共7层,前三层属于链接方式,后四层是端对端方式1.应用层-----------------网络与应用程序之间的接口2

2017-01-14 15:29:06 488

原创 常用排序(二)

选择排序选择排序说的是:每一趟在后面没有排序n-i个元素中,选择一个最小的放在第 i 个位置上,接下来选择i+1位置上的元素,一共需要执行n-2趟操作,他的时间复杂度是O(N*N)选择排序有三种实现方式;直接选择排序、锦标赛排序、堆排序1.直接选择排序选择最小的元素,如果不是第一个就和第一个对调位置,这样他就是第一个了,重复直到排序结束void SelectSort(dataL

2016-10-19 16:17:26 357

原创 常用排序(一)

排序根据元素是否完全在在内存中分为内部排序和外排序,内部排序指的是元素完全存放在内存中,外部排序是不断在内外存3之间移动的排序基本的排序算法 中:直接插入排序、气泡排序、选择排序中时间复杂度都是n的二次方,高效排序中 :快排、堆排、归并排序都是O(n log2 n)起泡排序 他是从后倒着来,先比较n-1和n-2元素的大小,如果n-1元素小,就将他两交换位置,接下俩再向前移动,比较n

2016-10-18 20:56:55 503

原创 数据结构之栈

栈、队列、优先级队列和双端队列是特殊的线性表,逻辑结构与线性表相同栈是先进后出的线性表,只能在表的末端进行插入删除操作,最开始加进去的叫做栈底,最后加进去的是栈顶,只能在栈顶进行操作栈的存储表示有两种:顺序栈(基于数组的存储)和链式栈(基于链表的存储) 1.顺序栈顺序栈的头指针是*elements,存放最大元素个数是maxSize,栈顶元素的位置由下标指针top指定当t

2016-10-12 11:19:20 2084

原创 数据结构之队列

队列是另一种顺序存取的线性表,他不同于栈,是先进先出的,就像排队一样,先来的先走。他的插入是在队列的对尾实现,删除是在对头实现队列的存储表示有两种,基于数组的和基于链表的顺序队列基于数组表示的是顺序队列,用elements[maxSize]来表示队列元素的存储结构,用front和rear指示队头和队尾指针队列建立时要初始化,即front=rear=0,每当新元素加进来就填到

2016-10-10 21:26:13 295

原创 线性表之链表

链表存储是数据加指针构成的,数据元素顺序可以喝存储物理顺序相同,也可以不同,因为他是由指针指向下一节点的,通过指针来实现逻辑链接最简单的链表结构是单链表,单链表的长度可以扩充,一个链表包含零个或者多个节点,链表中首元结点通过头指针first找到,其他节点地址在前驱结点的link中注意循环链表不是线性表废话不多说,先看看最常见的插入删除操作1.单链表的插入当新数据要插在第

2016-09-30 14:35:50 389

原创 线性表之顺序表

数据结构分为线性结构和非线性结构,线性结构是简单常用的数据结构,线性表是典型的线性结构。线性表的定义是由N个(N>=0)节点或者表项构成,他是有限数列,邻接关系是1:1,有两种:有序和无序线性表可以有不同的数据类型,如广义表,广义表表中元素自身具有某种结构,属于线性表,是线性表的推广线性表有两种存储方式:顺序存储和链式存储,有基于数组的、基于链表的、散列的表示 顺序表是基于数组的顺

2016-09-29 15:33:09 748

原创 Realm官方文档笔记(一)

Realm是一个数据库,特点是简单高效跨平台,今天记录一下看Realm官方文档的笔记一 安装配置首先要求Android studio版本要大于等于1.5.1,JDK的版本要求是大于等于7的,支持Android 2.3以上的版本首先配置,添加路径:在项目的build.gradle中添加dependencies { classpath "io.realm:realm-gra

2016-09-22 16:47:25 861

原创 Bitmap高效加载、Cache和优化(二)

前面说到了内存缓存,接下来就要说说存储缓存。存储缓存采用DiskLruCache,将缓存对象写入文件系统实现缓存。DiskLruCache源码不能直接使用,需要修改,使用方式有创建查找添加1.DiskLruCache创建DiskLruCache.open(File file,1,1,long maxsize);用open创建,第一个参数是缓存路径,第二个是版本号,第三个是单节点对应

2016-09-11 14:51:58 498

原创 Bitmap高效加载、Cache和优化(一)

Bitmap在Android开发中经常会用到,高效加载Bitmap就显得很重要了,节省流量,加快加载速度,不出现卡顿现象这是我们想要达到的目的。Android常用的缓存策略也是很重要的,Bitmap也需要做缓存,主要有两种,内存缓存和存储缓存,当请求加载图片时,先从内存缓存中找,找不到就到存储缓存中找,在存储缓存中也没有就从网络加载。缓存主要使用的是Lru算法,即是最近最少使用算法 ,当缓存不

2016-09-10 21:42:14 2073

原创 RecycleView实现瀑布流

现在列表的布局较少用ListView,而大多数采用的是RecycleView,RecycleView可以有较多的变换,非常的灵活,也可以自定义设计你想要的动画或者是分割线,所以比较受欢迎吧。RecycleView使用1.Bind RecycleView使用了butterknife来绑定,稍稍可以偷懒一点@Bind(R.id.id_recycle)RecyclerView recy

2016-09-09 21:07:36 553

原创 Android网络请求(二)retrofit+rxjava

在上一篇中说到OkHttp,接下来要介绍一个最近火的不要不要的框架retrofit,这是一个类型安全的REST客户端请求库,把REST API返回的数据转化为Java对象,retrofit的网路调用是基于RxJava的先来说一下retrofit的用法1.创建实例Retrofit retrofit = new Retrofit.Bulider() .baseUrl("http://w

2016-09-05 17:04:59 1786

原创 Android 网络请求(一)HttpURLConnection+OkHttp

Android同时支持TCP和UDP通信,但是大部分的网络调用是建立在TCP之上的HTTP请求完成,Android有两个用于HTTP通信的API,分别是HttpClient和HttpURLConnection。但是推荐使用HttpURLConnection,因为谷歌一直支持他,并且HttpClient在Android 6.0 以上不在支持。一、HttpURLConnection使用Http

2016-09-03 19:31:56 556

原创 Android+PHP+MySQL实现新闻列表(二)

前面一篇说完来页面布局,总得来说页面在adapter中设置布局,ListView.setAdapter(Adapter)来加载视图样子。接下来就看看网络通信这一部分新建一个网络通信类HttpUtils,在里面写网络请求和处理首先定义一个getNewsJson方法,实现从数据库读取数据并得到的JSON数据。新开一个线程来处理,因为不能在主线程处理网络请求,因为一旦请求时间长一点有可能就导致主

2016-09-02 14:46:52 1520

原创 Android+PHP+MySQL实现新闻列表(一)

在Android开发中,很多时候需要与数据库连接,读取插入修改数据库内容,那么数据库就非常重要了,在众多的数据库中,MySQL数据库算是简单好用的一个了,通常形式是Android+PHP+MySQL这样的组合接下来以显示新闻列表为例,细说Android+PHP+MySQL实现新闻列表我用的是Xampp,里面数据库都是图形化的操作,首先显示在里面新建一个数据库test,在test下建立数据表

2016-09-01 21:23:45 3163

原创 Android 异步任务AsyncTask

为避免主线程失去响应,Android把耗时的操作发在新的线程中完成更新主线程的方法:1.使用Handler实现线程通信2.Activity.runOnUiThread(Runnable)3.View.post(Runnable,long)4.View.postDelayed(Runnable,long)后三种编程复杂,用异步任务AsyncTask可简化,不需要借助线程和Ha

2016-08-31 17:56:31 292

原创 Android Handler消息传递机制

Android的UI操作不是线程安全的,所以多线程并发操作UI组件可能导致线程安全问题,所以规定:只允许在主线程中修改UI组件Android的Handler消息传递机制解决了Android 的多线程问题,Handler是在主线程和子线程之间 传递信息的,就是两个线程间的“传话员”Handler类主要作用是;1.在新线程中发送消息,2.在主线程中获取处理消息在开发中要重写Handler的

2016-08-31 12:27:32 284

原创 Java线程(二)线程池

系统启动一个新线程成本很高,使用线程池能很好的提高性能。尤其当需要创建大量的生存周期很短的线程时,更应该考虑线程池。线程池在系统启动时会创建大量空闲的线程,将一个Runnable对象或者Callable对象传给线程池,线程池就会启动一个线程来执行run()或者call()方法,执行结束后线程不会死亡,再次返回线程池成为空闲状态,等待执行下一个run()或者call()方法。创建线程池执行线

2016-08-31 10:16:35 592

原创 Java多线程(一)

Java线程被称为是轻量级的进程,一个进程可以有多个线程,一个线程必须要有一个父进程。线程是独立运行的。Java使用Thread类代表线程,所有线程对象都必须是Thread类或者子类的实例。同一个进程可以由多个线程并发进行。多线程之间内存共享容易,实现多任务并发效率高,多线程是非常有用的。创建多线程创建线程有三种方式:继承Thread类,实现Runnable接口,使用Cal

2016-08-30 17:14:14 332

原创 AVL树插入删除

AVL树是一种平衡二叉树,其每个节点的左右子树高度最多差1,空树高度定为-1,当左右的高度超过1,即失去了平衡,不是AVL树了。private static class AVLNode{ AVLNode (AnyType element) {this(element ,null,null);} AVLNode(AnyTape element,AVLNode left,AVLNode r

2016-08-29 18:26:48 732

原创 二叉搜索树

二叉搜索树(BST)是一种树,他的特点是节点的子树不超过两个,且大小是有顺序的,任意一点节点其左孩子小于节点值小于右孩子,他的左右子树依然满足。二叉搜索树平均深度是O(log N),所以一般不担心栈空间被耗尽。privata static calss BinNode{ BinNode(AnyTape element){ this(element,null,null); } BinN

2016-08-29 14:59:46 481

原创 二叉树遍历

二叉树是一棵树,其中每个节点不多于两个儿子。二叉树是有顺序的,左孩子的值小于根节点的值小于右孩子的值,次序 不能改变。正因为这个特点才可以方便快捷的查找。class BinaryNode{ Object element; //节点值 BinaryNode left; //左孩子 BinaryNode right; //右孩子}对于二叉树的定义如上。二叉树遍历通常有

2016-08-29 09:57:38 472

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除