自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 资源 (5)
  • 收藏
  • 关注

原创 双系统之——win10安装deepin系统

分区分出一个deepin系统使用的分区下载deepin系统镜像(iso文件)https://www.deepin.org/download/制作启动盘解压deepin系统镜像文件管理员方式运行 deepin-boot-maker文件选择系统镜像选择启动u盘/磁盘开始制作修改电脑bios插上启动u盘,根据电脑类型,重启后,点击对应的快捷键(小米笔记本为F2)进入b...

2020-02-08 16:43:07 775

原创 Retrofit使用介绍

文章目录常用网络请求框架Android-async-httpVolleyOkHttpRetrofitRetrofit IntroductionRetrofit基本使用Retrofit注解REQUEST METHOD网络请求标记网络请求参数GET的使用@Query的使用@QueryMap的使用@Body的使用@FormUrlEncoded、@Field的使用@Multipart、@Part的使用@H...

2019-05-10 00:05:58 308

原创 android Messenger

文章目录Messenger 简介Messenger 的使用服务端在收到消息后会使用 Message.replyTo 对应的信使回复消息。客户端(创建 Messenger 对象,传递一个 Handler,在 Handler 中处理消息)总结使用步骤Messenger 简介Messenger “信使”,顾名思义,它的作用就是传递信息。Messenger 有两个构造函数:以 Handler 为参...

2019-03-14 23:35:12 1293

原创 Window机制

文章目录引言关于Activity、Window和View我们的工匠大神Activity美丽的窗花View灵活的窗户WindowViewRootDecorViewDecorView的创建DecorView的显示总结Thanks引言在Android开发中,一直都是使用Activity来显示并与用户交互,那么Activity是如何将具体的view显示给用户?如何控制与用户交互?从Window机制中,...

2019-03-14 23:25:57 252

原创 InheritableThreadLocal

背景在ThreadLocal介绍中,我们从源码层面上分析了ThreadLocal原理及设计。但由于ThreadLocal设计之初就是为了绑定当前线程,如果希望当前线程的ThreadLocal能够被子线程使用,InheritableThreadLocal应运而生。关于InheritableThreadLocalInheritableThreadLocal继承自ThreadLocal,在子线程被...

2019-03-12 22:15:27 158

原创 Thread

线程的状态一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。当需要新起一个线程来执行某个子任务时,就创建了一个线程。但是线程创建之后,不会立即进入就绪状态,因为线程的运行需要一些条件(比如内存资源,在前面的JVM内存区域划分一篇博文中知道程序计数器、Java栈、...

2019-03-12 21:27:16 144

原创 ThreadLocal

关于ThreadLocalThreadLocal为解决多线程程序的并发问题提供了一种新的思路(非同步方案)。Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本,从而实现了线程隔离。原理Thread通过Threa...

2019-03-12 21:21:13 154

原创 进程与线程的区别

进程进程是资源(CPU、内存等)分配和调度的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。Linux系统函数fork()可以在父进程中创建一个子进程,这样的话,在一个进程接到来自客户端新的请求时就可以复制出一个子进程让其来处理,父进程只需负责监控请求的到来,然后创...

2019-03-10 17:24:08 78

转载 java线程安全

本篇将分别从以下几个方面介绍java线程安全:关于java内存模型什么是线程安全?怎样保证线程安全?synchronized关键字volatile关键字关于java内存模型不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。java的内存模型中有主内存和线程的工作内存之分,主内存上存放的是线程共享的变量(实例字段,静态字段和构成数组的元素),线程的工作内存是线程私有...

2019-03-10 15:21:45 149

转载 java类加载过程

类加载机制JVM将类描述数据从.class文件中加载到内存,并对数据进行,解析和初始化,最终形成被JVM直接使用的Java类型。 类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。——《深入理解Java虚拟机 JVM高级特性与最佳实践》加载(Loading):简单的说,类加载阶段就是由类加载器负责根据一个类的全限定名来读取此类的...

2019-03-10 11:39:38 16067 2

转载 Android内存管理源码分析

在Android中 ,实现了标注与清理(Mark and Sweep)和拷贝GC,但是具体使用什么算法是在编译期决定的,无法在运行的时候动态更换 – 至少在目前的版本上(4.2)还是这样。在Android的dalvik虚拟机源码的Android.mk文件(路径是/dalvik/vm/Dvm.mk)里,有类似代码清单14 - 5的代码,即如果在编译dalvik虚拟机的命令中指明了"WITH_COPY...

2019-03-09 18:30:05 743

转载 java GC算法

一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制:垃圾内存回收算法常见的垃圾回收算法有引用计数法(Reference Counting)、标注并清理(Mark and Sweep ...

2019-03-09 18:19:12 1226

翻译 java8新特性

Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等,为java新增了一抹绿色(活力)。

2019-03-09 15:32:04 92

翻译 Markdown常用语法

Markdown 的目标是实现「易读易写」。Markdown 的理念是,能让文档更容易读、写和随意改。HTML 是一种发布的格式,Markdown 是一种书写的格式。就这样,Markdown 的格式语法只涵盖纯文本可以涵盖的范围。#段落和换行一个 Markdown 段落是由一个或多个连续的文本行组成,它的前后要有一个以上的空行()普通段落不该用空格或制表符来缩进)或者在插入处先按入两个以上的空...

2019-01-08 23:25:07 178

原创 各排序算法总结

各排序算法汇总表

2016-09-11 23:29:38 351

原创 ==和equals

使用==比较原生类型如:boolean、int、char等等,使用equals()比较对象。 ==:比较的是两个字符串内存地址的数值是否相等,属于数值比较; equals(): 是object类型:比较内存地址 不是object类型:比较的是两个字符串的内容,属于内容比较。

2016-09-11 23:28:04 284

转载 java IO综述

结构图:java io的开始:文件 1. 我们主要讲的是流,流的本质也是对文件的处理,我们循序渐进一步一步从文件将到流去。 2. java 处理文件的类 File,java提供了十分详细的文件处理方法,举了其中几个例子,其余的可以去Java代码 收藏代码 package com.hxw.io; import java.io.*; public class FileExample{

2016-09-11 23:27:23 380

转载 线程、进程及线程通信

进程 在Android中,一个应用程序就是一个独立的进程(应用运行在一个独立的环境中,可以避免其他应用程序/进程的干扰)。一般来说,当我们启动一个应用程序时,系统会创建一个进程(从Zygote中fork出来的,这个进程会有独立的ID),并为这个进程创建一个主线程(UI线程),然后就可以运行MainActivity了,应用程序的组件默认都是运行在它的进程中,但我们可以通过指定应用的组件(四大组件)的

2016-09-11 23:26:42 358

转载 Android跨进程通信的四种方式

由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content Pr

2016-09-11 23:25:03 2119

转载 Android三种网络通信方式

网络编程的目的就是直接戒间接地通过网络协议不其他计算机进行通讯。 网络编程中有两个主要的问题, 一个是如何准确的定位网络上一台戒多台指主机; 另一个就是找到主机后如何可靠高效的进行数据传输。 目前使用最广泛的因特网协议是TCP/IP协议: 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的

2016-09-11 23:14:15 2426

转载 Java集合概述

集合类说明及区别 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap注:实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,Abstr

2016-09-11 23:13:06 187

转载 Android中UI线程与后台线程交互设计的5种方法

在android的设计思想中,为了确保用户顺滑的操作体验。一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务。因此我们必须要重新开启一个后台线程运行这些任务。然而,往往这些任务最终又会直接或者间接的需要访问和控制UI控件。例如访问网络获取数据,然后需要将这些数据处理显示出来。就出现了上面所说的情况。原本这是在正常不过的现象了,但是android规定除了UI线程外,其他线程都不可以对那些U

2016-09-11 23:12:16 379

转载 通信-Socket

一、Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。 那么,什么

2016-09-11 23:08:27 367

原创 树的相关操作(构建、遍历,删除)

具体实现(C):include include

2016-09-03 00:05:01 296

原创 图的相关操作(构建、遍历)

图的构建(邻接矩阵):include define MAXVEX 100define INFINITY 65535typedef struct { VertexType vexs[MAXVEX]; EdgeType arc[MAXVEX][MAXVEX]; int numVertexes, numEdges; }MGraph;void CreateMGraph(MG

2016-09-03 00:04:24 499

原创 服务器搭建

mysql:http://jingyan.baidu.com/article/425e69e6bbc6c7be14fc1640.html?qq-pf-to=pcqq.c2c php:http://jingyan.baidu.com/article/dca1fa6fadc61ff1a5405244.html?qq-pf-to=pcqq.c2c apache:http://jingyan.baidu

2016-09-03 00:02:58 324

原创 浏览器显示The requested URL *** was not found on this server

1、相关文件是否丢失 2、DocumentRoot指向是否有错误 3、apache是否开启了rewrite_module模块 /etc/httpd/conf/httpd.conf,发现原因: Apache的rewrite_module模块,支持.htaccessrewrite_module没开启,开启过程如下: centos的配置文件放在: 代码如下 复制代码 /etc/http

2016-09-03 00:02:20 88561 3

原创 上传下载项目到服务器(SCP命令)

linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录; ================== scp 命令 scp 可以在 2个 linux 主机间复制文件; 命令基本格式: scp [可选参数] file_source file_target ====== 从 本地 复制到 远程 复制文件: * 命令格式: scp

2016-09-03 00:01:29 2314 1

原创 Ubuntu下Apache、php、mysql默认安装路径

apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/apachectl web目录:/var/www/html

2016-09-03 00:00:53 367

转载 Android学习知识图谱

Android学习知识图谱

2016-08-13 17:48:33 612

原创 优化的冒泡排序

冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 冒泡排序时间复杂度为: 最好:O(n) 最坏:O(n^2) 优化的冒泡排序

2016-08-08 11:23:43 238

原创 直接插入排序

直接插入排序(straight insertion sort)的做法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 时间复杂度为:O(n^2) 具体实现(c):i

2016-08-08 11:23:02 279

原创 希尔排序

希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 具体实现(c): 将直接插入排序的增量1改为其他数值,如:inc = inc/3+1;in

2016-08-08 11:22:27 188

转载 堆排序算法

9.7.2 堆排序算法 堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根结点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值),然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素中的次小值。如此反复执行,便能得到一个有序序列了。堆排序的时间复杂

2016-08-08 11:21:42 304

原创 归并排序

时间复杂度为:O(nlogn) 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。具体实现(c): 递归实现:include

2016-08-08 11:20:55 216

原创 快速排序

它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 1) 程序开始执行,此时low=1,high=L.length=9。第4行,我们将L.r[low]=L.r[1]=50赋值给枢轴变量pivotkey,如图9-9-1所示。 2)

2016-08-08 11:19:37 323

原创 普里姆算法(Prim算法求最小生成树)

普里姆算法的基本思想:普里姆算法是一种构造最小生成树的算法,它是按逐个将顶点连通的方式来构造最小生成树的。时间复杂度为O(n^2)。 从连通网络N = { V, E }中的某一顶点u0出发,选择与它关联的具有最小权值的边(u0, v),将其顶点加入到生成树的顶点集合U中。以后每一步从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边(u, v),把该边加入到生成树的边集TE中,把它的顶

2016-08-05 18:59:23 6719

原创 克鲁斯卡尔(Kruskal)算法求图的最小生成树

克鲁斯卡尔(Kruskal)算法基本思想:(直接去找最小权值的边来构建生成树,构建时要考虑是否会形成环路) 先构造一个只含 n 个顶点、而边集为空的子图,把子图中各个顶点看成各棵树上的根结点,之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,即把两棵树合成一棵树,反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之。依次类

2016-08-05 18:59:06 3617

原创 迪杰斯特拉算法(求最短路径)

时间复杂度为:O(n^2) 最短路径:对于内网图而言,最短路径是指两顶点之间经过的边上权值之和最小的路径。具体算法及其详细讲解如下:

2016-08-05 18:58:47 688

原创 折半查找(二分查找)

时间复杂度为:O(logn) 原理:假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 具体实现: int bsearchWithou

2016-08-05 18:58:14 408

Java API开发文档

java最新API开发文档,方便用户开发使用。

2015-11-18

android反编译工具包

android反编译工具包能够反编译app,方便了解相关app开发技术。

2015-11-18

app_signature android签名工具

app_signature能够为开发的android app做签名。

2015-11-18

Git 最流行分布式代码托管工具

Git是当前最流行的分布式代码托管工具,能够很好地结合Github等官方代码管理产品。

2015-11-18

SVN代码管理工具

SVN代码管理工具能够在项目开发时很好地管理项目开发代码,节省开发成本。

2015-11-18

空空如也

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

TA关注的人

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