自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

求职之路

记录学习的点点滴滴

  • 博客(56)
  • 收藏
  • 关注

原创 全网最通俗易懂的建造者(Builder)设计模式

使用场景首先要明白建造者模式是一种创建对象的设计模式。适用于一个类中有很多属性参数,且当其他地方构建这个类对象的时候又不是所有属性都要用到的时候(这个后面会解释)抛出问题来不及解释了,直接上代码。public class Student { //姓名 private String mName; //年龄 private int mAge; //专业 private String mSubject; //学历 private Strin

2020-05-28 23:05:09 402

原创 Java中的内部类

前言:最近在工作中常用到内部类,对这方面的知识点总是模凌两可,所以趁着现在需求不是很忙想好好总结一下这部分的知识点,这也是我毕业后的第一篇博客,莫名怀念上学的时候。这次的博客我想做一些改变,以前都是对一个知识点进行总结,然后逐个分析,这样我发现当再次看的时候不便于阅读,所以这次我想尝试先分析每一种情况,然后最后再做总结,要是谁看到我的博客发现写错了或者其他的建议欢迎留言。废话少说,直接进入正题...

2020-04-21 21:34:25 451

原创 项目总结

这个是仿墨迹天气的一个App,这个是我在自学Android的时候写的一个应用App。这个App的实现的功能有:(1)可以罗列出全国各地的省市县信息(2)可以查看全国各地的天气具体信息(3)可以自由的切换城市,去查看别的城市的天气信息(4)实现了手动更新以及后台自动更新的功能‘(5)实现了每日一图的功能下面我将从它的一步步实现来讲诉这个App的开发过程以及用到的一些Android技术。...

2019-07-16 00:46:34 333

原创 Android——Service

一、服务的定义服务是Android种实现程序后台运行的解决方案二、创建一个服务 public class MyService extends Service { //需要重写的函数 onCreate() //创建服务时候调用 onStartCommand() //启动服务时调用, onDestory() //服务销毁的时候调用 public IBinder onBind(I...

2019-06-11 23:27:09 146

原创 关于下载功能的概述

一。新建一个下载功能的这个类。因为我们准备把这个下载功能放到服务里面,就是在后台执行,同时也准备让这个下载功能放在子线程里执行,但是一些执行结果比如下载状态(成功?失败?暂停?以及下载进度需要在主线程中显示)所以让这里的下载功能类继承于AsyncTask,(AsyncTask封装了Handler和Thread)。这篇博客只说具体的下载的功能流程,具体代码请滚去电脑里看public class D...

2019-05-31 21:49:57 590

原创 Android

1、Android为什么不能在子线程中更新UI?原因是UI控件不是线性安全的,所以在多线中的并发访问可能会导致UI控件处于不可预料的状态。不加锁机制的原因一个是加锁会让UI访问的逻辑变得复杂,二是锁机制会降低UI访问的效率,因为锁机制会阻塞某些线程的执行。但是有的时候就要在把一些耗时的操作放在子线程中进行,比如下载。但是下载又会返回结果处理一些UI操作,比如显示下载进度条或者输出下载状态。这个时...

2019-05-29 23:03:01 142

原创 关于树的一些算法(带测试用例)(持续更新)

前言:我们平时写的关于树的算法都是直接写算法,就是比如写一个前序遍历就是public void preOrder(TreeNode root){//前序遍历}但是很少有写一个完整的测试用例的,即写一个函数按照图的样子创建一棵树,然后让这个函数返回根节点,然后就可以在主函数中定义一个树节点获取这个根节点,剩下的就是调用这些树的算法就好了。简而言之就是这篇博客不仅有常见的树的算法,还有真...

2019-05-27 15:24:25 2628

原创 Android中异步消息处理机制

一、Android中为什么要有异步消息处理机制,异步消息处理机制是干什么用的1、因为在Android中是不允许在子线程中进行UI操作的,但是Android中用子线程是必不可少的,因为一些类似于网络请求等耗时的任务都是写在子线程中。所以总会在子线程的一些任务的结果是更新UI操作的,(比如第一行代码中的例子就是在子线程中通过点击按钮让TextView中的显示内容改变)那这该怎么办呢?所以就要用到异步...

2019-05-26 16:44:52 242

原创 Java内存区域与内存溢出异常

字节码就是Java方法(可以这样理解)Java程序执行过程;(1)首先源代码文件(.java)经过编译器(例如Eclipse)变成字节码文件(.class)(2)然后由JVM中的类加载器加载Class文件中各个类的信息(3)加载完成后交由JVM进行引擎执行那么在整个执行过程当中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data A...

2019-05-26 14:28:28 226

原创 虚拟机类加载机制

前言:Class文件中存储着类的各种信息,最终Class文件都需要加载到虚拟机中之后才能运行和使用。两个待解决的问题1、虚拟机如何加载这些Class文件2、这些Class文件中的信息加载到虚拟机之中会发生什么样的变化。一、虚拟机的类加载机制1、定义:虚拟机把描诉类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这个过程...

2019-05-22 13:25:13 80

原创 输出一个数组中出现频率最多的元素以及次数

思路;(1)将数组以键值对的形式存储到map中(key为数组元素值,value为元素出现频率)(2)然后遍历map,找出频率的最大值max。(3)然后再遍历map,把value值等于max的键值对存储到新的map中,返回这个map。(此时这个map里存储的是出现频率最多的元素以及最大频率,以键值对的形式存储在map中,正因为这样的元素不止一个,所以才想到存储在map中)(4)主函数接收这个...

2019-05-20 22:32:34 3384

原创 关于数组的常见算法题(随时更新)

一、求出数组中的第二大的元素方法一:先将数据排序好(快速排序),然后根据下标寻找第二大的元素注意事项:(1)如果元素都是同一个数,那么没有第二大(2)最大的可能不止一个,所以不能直接输出arr[len-2],也要进行判断public class FindSecondMax { public static void quickSelect(int[] arr,int start,in...

2019-05-20 22:05:19 1848

原创 八大排序算法

下面的排序算法都是以65 26 37 9 21 74 26 5 14为例,除了第一个排序之外,其他的就不写测试主函数了一、选择排序原理:第一次就是选择最小的数跟第一个数进行交换(保证第一个数是最小的)第二次就是除去第一个数,剩下的选择最小的跟第二个数进行交换(此时第一个数和第二个数是有序的,且是最小的)以此类推思路:1、最外层当然是遍历整个数组。用i表示此次选择遍历开始的位置2、用...

2019-05-20 10:45:52 133

原创 第一行代码12章的执行顺序

1、去掉原有的ActionBar,(在style.xml中去掉原有的ActionBar)用以代替的是Toolbar。2、在Toolbar上面添加菜单栏(三个action按钮)这个菜单栏的布局写在(res->menu->toolbar.xml)。通过来指定每一个按钮。并且给这三个按钮添加了点击事件。3、做一个滑动菜单(就是一个DrawerLayout布局)两部分(第一部分是主页面,...

2019-05-08 23:06:06 216

原创 Volatile和Synchronized的底层实现原理(java并发编程艺术的第二章)

一、1、Volatile是java中的关键字,被它修饰的变量被称作是共享变量。这个共享变量具有“可见性”,可见性的意思是当有一个线程修改了这个变量的时候,其他的线程能读到这个修改的值。2、Volatile被称作是轻量级的Synchronized。因为它不会产生由于请求锁而导致的阻塞,而且它不会引起上下文切换的问题。二、Volatile的底层实现原理(也就是怎么样实现共享变量的可见性的)1、...

2019-05-07 15:06:28 220

原创 剑指offer第11题

问题描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(先给出最简单的代码)package 剑指Offer;import java.util.Scanner;public class Erjinzhi02 { public static int NumberOf1(int n) { int sum=0; char[]ch=Integer.toB...

2019-04-21 22:28:32 227

原创 详解Java中的值传递和clone()作用以及深浅拷贝

写在前言:我觉得整个知识体系是首先要明白Java里参数传递的规则(也就是为什么值传递)然后是借此引出“=”拷贝的问题,然后是clone()的作用,接着是深拷贝以及浅拷贝以及实现深拷贝的方法。最后对Java创建对像的四种方法进行总结。整篇文章有我自己理解的地方,当然也有参考一些其他的技术博客。一、Java里面只有值传递1、形式参数以及实际参数(1)形式参数是函数定义时候括号里的变量名(st...

2019-04-19 14:11:21 577 1

原创 App的初始化思路

1、在Example这个类中进行初始化,但是初始化的具体操作不是在这个类里面,要是都在这个类里面弄的话,代码量太多了,而是具体写一个对外的工具类Latte,在这个类里面进行具体的初始化操作。而这个Latte类只是写了init()方法,具体用到的类型都是写在Configurator这个类中。所以可以把整个初始化过程看成:Example调用Latte的init()方法,Latte的init()方法...

2019-04-13 21:07:11 1458

原创 并发编程的挑战及解决方案(java并发编程艺术的第一章)

一、多线程并发编程的目的是:让程序运行的更快二、但是再多线程并发编程的时候会遇到很多年困难1、上下文切换的问题2、死锁的问题3、受限于软件以及硬件的资源分配问题三、上下文切换问题1、前景介绍:CPU通过个多线程分配CPU时间片的方法来实现多线程并发,CPU时间片就是CPU分配给每个线程的时间,CPU时间片非常的短暂,由于CPU不断地在多个线程之间来回切换,所以就感觉这些线程是同时进行...

2019-04-09 15:15:51 161

原创 两种线程启动方式

一、利用Thread子类//以下的代码代表一个线程,输入一百次message,这个message通过构造参数传入(这个线程就是Thread的子类)package threadTest;public class TwoThread extends Thread { private String message; public TwoThread(Strin...

2019-04-08 22:31:00 773

原创 两种线程启动方式

一、利用Thread子类//以下的代码代表一个线程,输入一百次message,这个message通过构造参数传入(这个线程就是Thread的子类)package threadTest;public class TwoThread extends Thread { private String message; public TwoThread(Strin...

2019-04-08 22:31:00 1602

原创 世界杯球迷群体数与最大群体人数——Java

问题描述:球迷看台可以容纳M* N的人数,现统计一共有多少球迷群体,以及最大球迷群体的人数PS:1、相同球迷群体指的是会选择相邻的座位,相邻的座位就是前后相邻,左右相邻,斜对角相邻。2、给定一个M*N的球场,0代表该位置没有人,1代表该位置有人。要求输入:第一行输入两个数字,M和N,使用英文逗号分隔接下来M行,每行N个数字,使用英文逗号分割输出描述:一行,两个数字,第一个数字代表...

2019-04-02 16:22:10 448

原创 剑指Offer第六题

问题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。分析:非减的数组,说明要么是一个递增数组,要么是一个伪递增数组(大体是递增的,但是里面有相同的),还有一种极端情...

2019-04-01 17:06:08 143

原创 剑指offer第五题

一、两个栈实现队列思路:栈得特征就是先进后出,队列是先进先出。所以既然是两个栈实现队列。比如是一个数组[5,4,8,6,9,2]。我们希望输出是296854.所以可以先入第一个栈,这样的话5就在最下面,2在最上面。然后再判断第二个是否为空,如果是空的,再把第一个栈得数据依次取出来依次入第二个栈(一定要判断第二个栈是否为空,具体我现在还不明白,如果不为空,直接输出第二个栈)。这样的话,2就在最下面...

2019-04-01 15:59:27 177

原创 Android基础——Activity

一、Activity(1)所有的可见的页面都是Activity(2)页面的载体,它是一种可以包含用户界面的组件

2019-04-01 13:09:10 275

原创 解决方案

一、对于前两个要求的解决方案1、将图片放在滚动控件RecyclerView中,以下两行代码用处是在RecyclerView中使用GridLayoutManager这种布局来设置屏幕显示的列数(我想了一下,我今天说的那个卡片式局部不能用,因为卡片式布局更多的是用于等大小的图片的,所以像这样不规则的图片,很难控制)GridLayoutManager layoutManager=new GriLay...

2019-03-30 05:29:18 119

原创 Android-网络编程-创建HTTP请求

一、所谓的网络编程就是在手机端使用TTP协议和服务器进行网络交互,并对服务器返回的数据进行解析。二、调用百度网址<?xml version="1.0" encoding="utf-8"?><LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"...

2019-03-26 21:08:52 369

原创 Android控件——RecycleView

RecycleView:是加强版的ListView。解决了提升ListView运行效率的问题还实现了横向滚动(ListView)做不到实现刚才ListView的功能1、也是建Fruits类和子项布局布局,这里都是复制ListView的代码。一模一样(RecyclerView需要导包)2、适配器的构建public class FruitAdapter extends RecyclerView...

2019-03-23 19:30:13 399

原创 Android中控件——ListView

ListView:ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕一、简单的做一个ListView1、在布局中引用ListView控件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android....

2019-03-21 22:31:47 205

原创 引入布局和自定义控件

1、View的介绍2、引入布局3、自定义控件

2019-03-21 20:39:28 665

原创 Android的布局

布局:布局是存放控件的容器,并且可以规定控件在容器里的摆放顺序,布局里可以存放控件,当然,布局里也可以嵌套布局。一、线性布局(LinearLayout)(线性方向上依次排列)1、android:orientation=“vertical”(竖直方向上的线性)android:orientation=“horizontal”(水平方向上的线性)2、布局中的控件的属性(1)android:gr...

2019-03-21 18:06:07 167

原创 Material Design(全新的页面设计语言)

Design Support库将Material Design中最具有代表性的一些控件和效果进行了封装,使得开发者即使在不了解Material Design的情况下也能非常轻松的将自己的应用Material化。以下将总结Materia控件一、Toolbar(标题栏控件)1、Android中自带的标题栏控件是ActionBar。但是它只能用于活动的顶部,所以现在都改用Toolbar2、清除...

2019-03-21 09:35:19 771

原创 Android中的控件(随时更新)

一、TextView(显示一段文本消息)常用属性1、layout_height,layout-width:这两个分别代表控件的高度和宽度。取值:(1)match_parent(大小和父布局一样大)(2) wrap_content(当前控件的大小正好可以包含住里面的内容)2、text:显示的文本内容3、gravity:对齐方式取值:top,bottom,left,right,centr...

2019-03-20 20:26:38 415

原创 Java内存区域与内存溢出异常

1

2019-03-20 17:15:12 53

原创 Java垃圾回收机制

一、问题1、哪些内存需要回收2、什么时候回收、3、如何回收二、那些内存需要回收1、不需要考虑回收的部分:Java运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈这三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出有条不紊的出栈和进栈。因为每一个栈帧分配多少内存基本是在类结构确定下来的时候就已知了,所以这几个区域的内存分配以及回收都具备确定性,所以在这几个区域就不考...

2019-03-19 21:40:26 116

原创 剑指Offer第三题

题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。分析:其实就是输入一盒链表(这个链表是ListNode类型的)。然后把他的元素取出来放进一个ArrayList集合中(ListNode和ArrayList看起来相似。但是不是一样的。前者是一个链表数据结构,后者是数组型集合,相似但不一样)。所以从ListNode到ArrayList就需要一个中间容器来存储ListNode里的元...

2019-03-13 09:52:24 207

原创 剑指Offer第二题

题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解法一:思路:首先将StringBuffer字符串转化成String类型,因为下面要用到toCharArray。而StringBuffer类型的字符串是不可以调用toCharArray的。这里注意:StringBuffer字符串的创...

2019-03-12 14:46:23 172

原创 Java中数组、字符串、集合的总结

数组一、这些定义让你理解数组更清晰1、数组既是一种数据结构(用来存储数据的),也是一种数据类型(type[])。2、是一种数据类型(引用类型),所以创建type[]类型的对象就是创建数组。(“type[]”整体为一个引用数据类型)。数据即可以存储基本类型的数据,也可以存储引用类型的数据,还有字符串,字符串就是存储在数组中的。3、长度不变性:一旦数组的初始化完成,数组在内存中所占的空间将会固...

2019-03-11 13:34:52 1138

原创 开启新的征程-Html语言

一、介绍Html语言1、作用:展示页面2、Html(超文本标签语言)(1)超文本:超越一般的文本(比如规定文本的颜色,字体,大小,图片等)(2)标签:人家语言本身定义好的标记。用什么样地标签,对应展示什么样地效果(所以学Html就是学标签)二、Html书写规则(1)文件的后缀名:(.html)或者(,htm)(2)标签必须用&amp;amp;lt;&amp;amp;gt;引起来,已经定义好的标签(3)属性格式:...

2019-01-12 20:07:13 231

原创 Java集合之Map

一、Map接口(1)Map提供了一种映射的关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value。(2)Map中的键值对是以Entry类型的对象实例形式存在。(Entry类型的对象实例具有两将部分,key部分,value部分)key值,value是可以是任意类型的对象。(3)key不可重复,value可以重复。可以多个键值指向同一个value值,...

2019-01-10 14:18:23 105

空空如也

空空如也

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

TA关注的人

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