技术
文章平均质量分 81
我敲代码养你啊
生而无畏 战至终章
展开
-
全网最通俗易懂的建造者(Builder)设计模式
使用场景首先要明白建造者模式是一种创建对象的设计模式。适用于一个类中有很多属性参数,且当其他地方构建这个类对象的时候又不是所有属性都要用到的时候(这个后面会解释)抛出问题来不及解释了,直接上代码。public class Student { //姓名 private String mName; //年龄 private int mAge; //专业 private String mSubject; //学历 private Strin原创 2020-05-28 23:05:09 · 412 阅读 · 0 评论 -
Java中的内部类
前言:最近在工作中常用到内部类,对这方面的知识点总是模凌两可,所以趁着现在需求不是很忙想好好总结一下这部分的知识点,这也是我毕业后的第一篇博客,莫名怀念上学的时候。这次的博客我想做一些改变,以前都是对一个知识点进行总结,然后逐个分析,这样我发现当再次看的时候不便于阅读,所以这次我想尝试先分析每一种情况,然后最后再做总结,要是谁看到我的博客发现写错了或者其他的建议欢迎留言。废话少说,直接进入正题...原创 2020-04-21 21:34:25 · 482 阅读 · 0 评论 -
剑指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 · 241 阅读 · 0 评论 -
App的初始化思路
1、在Example这个类中进行初始化,但是初始化的具体操作不是在这个类里面,要是都在这个类里面弄的话,代码量太多了,而是具体写一个对外的工具类Latte,在这个类里面进行具体的初始化操作。而这个Latte类只是写了init()方法,具体用到的类型都是写在Configurator这个类中。所以可以把整个初始化过程看成:Example调用Latte的init()方法,Latte的init()方法...原创 2019-04-13 21:07:11 · 1494 阅读 · 0 评论 -
并发编程的挑战及解决方案(java并发编程艺术的第一章)
一、多线程并发编程的目的是:让程序运行的更快二、但是再多线程并发编程的时候会遇到很多年困难1、上下文切换的问题2、死锁的问题3、受限于软件以及硬件的资源分配问题三、上下文切换问题1、前景介绍:CPU通过个多线程分配CPU时间片的方法来实现多线程并发,CPU时间片就是CPU分配给每个线程的时间,CPU时间片非常的短暂,由于CPU不断地在多个线程之间来回切换,所以就感觉这些线程是同时进行...原创 2019-04-09 15:15:51 · 170 阅读 · 0 评论 -
两种线程启动方式
一、利用Thread子类//以下的代码代表一个线程,输入一百次message,这个message通过构造参数传入(这个线程就是Thread的子类)package threadTest;public class TwoThread extends Thread { private String message; public TwoThread(Strin...原创 2019-04-08 22:31:00 · 1629 阅读 · 0 评论 -
两种线程启动方式
一、利用Thread子类//以下的代码代表一个线程,输入一百次message,这个message通过构造参数传入(这个线程就是Thread的子类)package threadTest;public class TwoThread extends Thread { private String message; public TwoThread(Strin...原创 2019-04-08 22:31:00 · 803 阅读 · 0 评论 -
世界杯球迷群体数与最大群体人数——Java
问题描述:球迷看台可以容纳M* N的人数,现统计一共有多少球迷群体,以及最大球迷群体的人数PS:1、相同球迷群体指的是会选择相邻的座位,相邻的座位就是前后相邻,左右相邻,斜对角相邻。2、给定一个M*N的球场,0代表该位置没有人,1代表该位置有人。要求输入:第一行输入两个数字,M和N,使用英文逗号分隔接下来M行,每行N个数字,使用英文逗号分割输出描述:一行,两个数字,第一个数字代表...原创 2019-04-02 16:22:10 · 470 阅读 · 0 评论 -
剑指Offer第六题
问题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。分析:非减的数组,说明要么是一个递增数组,要么是一个伪递增数组(大体是递增的,但是里面有相同的),还有一种极端情...原创 2019-04-01 17:06:08 · 171 阅读 · 0 评论 -
剑指offer第五题
一、两个栈实现队列思路:栈得特征就是先进后出,队列是先进先出。所以既然是两个栈实现队列。比如是一个数组[5,4,8,6,9,2]。我们希望输出是296854.所以可以先入第一个栈,这样的话5就在最下面,2在最上面。然后再判断第二个是否为空,如果是空的,再把第一个栈得数据依次取出来依次入第二个栈(一定要判断第二个栈是否为空,具体我现在还不明白,如果不为空,直接输出第二个栈)。这样的话,2就在最下面...原创 2019-04-01 15:59:27 · 192 阅读 · 0 评论 -
Android基础——Activity
一、Activity(1)所有的可见的页面都是Activity(2)页面的载体,它是一种可以包含用户界面的组件原创 2019-04-01 13:09:10 · 284 阅读 · 0 评论 -
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 · 379 阅读 · 0 评论 -
详解Java中的值传递和clone()作用以及深浅拷贝
写在前言:我觉得整个知识体系是首先要明白Java里参数传递的规则(也就是为什么值传递)然后是借此引出“=”拷贝的问题,然后是clone()的作用,接着是深拷贝以及浅拷贝以及实现深拷贝的方法。最后对Java创建对像的四种方法进行总结。整篇文章有我自己理解的地方,当然也有参考一些其他的技术博客。一、Java里面只有值传递1、形式参数以及实际参数(1)形式参数是函数定义时候括号里的变量名(st...原创 2019-04-19 14:11:21 · 627 阅读 · 1 评论 -
第一行代码12章的执行顺序
1、去掉原有的ActionBar,(在style.xml中去掉原有的ActionBar)用以代替的是Toolbar。2、在Toolbar上面添加菜单栏(三个action按钮)这个菜单栏的布局写在(res->menu->toolbar.xml)。通过来指定每一个按钮。并且给这三个按钮添加了点击事件。3、做一个滑动菜单(就是一个DrawerLayout布局)两部分(第一部分是主页面,...原创 2019-05-08 23:06:06 · 225 阅读 · 0 评论 -
Volatile和Synchronized的底层实现原理(java并发编程艺术的第二章)
一、1、Volatile是java中的关键字,被它修饰的变量被称作是共享变量。这个共享变量具有“可见性”,可见性的意思是当有一个线程修改了这个变量的时候,其他的线程能读到这个修改的值。2、Volatile被称作是轻量级的Synchronized。因为它不会产生由于请求锁而导致的阻塞,而且它不会引起上下文切换的问题。二、Volatile的底层实现原理(也就是怎么样实现共享变量的可见性的)1、...原创 2019-05-07 15:06:28 · 228 阅读 · 0 评论 -
项目总结
这个是仿墨迹天气的一个App,这个是我在自学Android的时候写的一个应用App。这个App的实现的功能有:(1)可以罗列出全国各地的省市县信息(2)可以查看全国各地的天气具体信息(3)可以自由的切换城市,去查看别的城市的天气信息(4)实现了手动更新以及后台自动更新的功能‘(5)实现了每日一图的功能下面我将从它的一步步实现来讲诉这个App的开发过程以及用到的一些Android技术。...原创 2019-07-16 00:46:34 · 343 阅读 · 0 评论 -
Android——Service
一、服务的定义服务是Android种实现程序后台运行的解决方案二、创建一个服务 public class MyService extends Service { //需要重写的函数 onCreate() //创建服务时候调用 onStartCommand() //启动服务时调用, onDestory() //服务销毁的时候调用 public IBinder onBind(I...原创 2019-06-11 23:27:09 · 169 阅读 · 0 评论 -
Android
1、Android为什么不能在子线程中更新UI?原因是UI控件不是线性安全的,所以在多线中的并发访问可能会导致UI控件处于不可预料的状态。不加锁机制的原因一个是加锁会让UI访问的逻辑变得复杂,二是锁机制会降低UI访问的效率,因为锁机制会阻塞某些线程的执行。但是有的时候就要在把一些耗时的操作放在子线程中进行,比如下载。但是下载又会返回结果处理一些UI操作,比如显示下载进度条或者输出下载状态。这个时...原创 2019-05-29 23:03:01 · 149 阅读 · 0 评论 -
关于下载功能的概述
一。新建一个下载功能的这个类。因为我们准备把这个下载功能放到服务里面,就是在后台执行,同时也准备让这个下载功能放在子线程里执行,但是一些执行结果比如下载状态(成功?失败?暂停?以及下载进度需要在主线程中显示)所以让这里的下载功能类继承于AsyncTask,(AsyncTask封装了Handler和Thread)。这篇博客只说具体的下载的功能流程,具体代码请滚去电脑里看public class D...原创 2019-05-31 21:49:57 · 633 阅读 · 0 评论 -
关于树的一些算法(带测试用例)(持续更新)
前言:我们平时写的关于树的算法都是直接写算法,就是比如写一个前序遍历就是public void preOrder(TreeNode root){//前序遍历}但是很少有写一个完整的测试用例的,即写一个函数按照图的样子创建一棵树,然后让这个函数返回根节点,然后就可以在主函数中定义一个树节点获取这个根节点,剩下的就是调用这些树的算法就好了。简而言之就是这篇博客不仅有常见的树的算法,还有真...原创 2019-05-27 15:24:25 · 2666 阅读 · 0 评论 -
Java内存区域与内存溢出异常
字节码就是Java方法(可以这样理解)Java程序执行过程;(1)首先源代码文件(.java)经过编译器(例如Eclipse)变成字节码文件(.class)(2)然后由JVM中的类加载器加载Class文件中各个类的信息(3)加载完成后交由JVM进行引擎执行那么在整个执行过程当中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data A...原创 2019-05-26 14:28:28 · 250 阅读 · 0 评论 -
虚拟机类加载机制
前言:Class文件中存储着类的各种信息,最终Class文件都需要加载到虚拟机中之后才能运行和使用。两个待解决的问题1、虚拟机如何加载这些Class文件2、这些Class文件中的信息加载到虚拟机之中会发生什么样的变化。一、虚拟机的类加载机制1、定义:虚拟机把描诉类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这个过程...原创 2019-05-22 13:25:13 · 86 阅读 · 0 评论 -
输出一个数组中出现频率最多的元素以及次数
思路;(1)将数组以键值对的形式存储到map中(key为数组元素值,value为元素出现频率)(2)然后遍历map,找出频率的最大值max。(3)然后再遍历map,把value值等于max的键值对存储到新的map中,返回这个map。(此时这个map里存储的是出现频率最多的元素以及最大频率,以键值对的形式存储在map中,正因为这样的元素不止一个,所以才想到存储在map中)(4)主函数接收这个...原创 2019-05-20 22:32:34 · 3400 阅读 · 0 评论 -
关于数组的常见算法题(随时更新)
一、求出数组中的第二大的元素方法一:先将数据排序好(快速排序),然后根据下标寻找第二大的元素注意事项:(1)如果元素都是同一个数,那么没有第二大(2)最大的可能不止一个,所以不能直接输出arr[len-2],也要进行判断public class FindSecondMax { public static void quickSelect(int[] arr,int start,in...原创 2019-05-20 22:05:19 · 1858 阅读 · 0 评论 -
八大排序算法
下面的排序算法都是以65 26 37 9 21 74 26 5 14为例,除了第一个排序之外,其他的就不写测试主函数了一、选择排序原理:第一次就是选择最小的数跟第一个数进行交换(保证第一个数是最小的)第二次就是除去第一个数,剩下的选择最小的跟第二个数进行交换(此时第一个数和第二个数是有序的,且是最小的)以此类推思路:1、最外层当然是遍历整个数组。用i表示此次选择遍历开始的位置2、用...原创 2019-05-20 10:45:52 · 142 阅读 · 0 评论 -
Android控件——RecycleView
RecycleView:是加强版的ListView。解决了提升ListView运行效率的问题还实现了横向滚动(ListView)做不到实现刚才ListView的功能1、也是建Fruits类和子项布局布局,这里都是复制ListView的代码。一模一样(RecyclerView需要导包)2、适配器的构建public class FruitAdapter extends RecyclerView...原创 2019-03-23 19:30:13 · 418 阅读 · 0 评论 -
解决方案
一、对于前两个要求的解决方案1、将图片放在滚动控件RecyclerView中,以下两行代码用处是在RecyclerView中使用GridLayoutManager这种布局来设置屏幕显示的列数(我想了一下,我今天说的那个卡片式局部不能用,因为卡片式布局更多的是用于等大小的图片的,所以像这样不规则的图片,很难控制)GridLayoutManager layoutManager=new GriLay...原创 2019-03-30 05:29:18 · 130 阅读 · 0 评论 -
关于Java中“==”运算符和equals()方法以及重写equals()方法的总结
一:当比较对象是基本类型变量(且都是数值型的,不要求数据类型严格相同)。用“==”运算符来比较两个对象是否相等的时候,不用管其他的,只要两个对象的值相等,那么返回值一定是true。 int i=65; float j=65.0f; char ch='A'; System.out.println("65和65.0f是否相等...原创 2018-12-11 19:42:17 · 442 阅读 · 0 评论 -
Java中的异常处理机制(异常一般用于怕输入的时候输入违法的内容导致程序瘫痪,所以提前写好异常,遇到输入错误会有提醒)
1、java异常处理机制存在的目的:保证了程序的容错性,允许程序出现某些错误(比如输入错误),程序不会因为这些错误而突然退出,程序会向用户提示输入不合法,让用户再次输入。2、关键字的含义:try:try块里面放置可能引发异常的代码。catch:后面有一个异常类型和代码块,用于表明catch块用于处理这种类型的代码块。finally:多个catch块后面还可以跟一个finally块,fin...原创 2018-12-11 14:55:30 · 3277 阅读 · 1 评论 -
Java中的字符串
1、定义:在Java中,字符串被作为String类型的对象来处理,也就是说它是String类所属的对象。String类位于java.lang包中。默认情况下,该包被自动导入所有的程序。创建String对象的方法:(1)String str1=“imooc”;(2)String str2=new String();创建一个空字符串对象。(3)String str3=new String(“im...原创 2018-12-11 16:37:08 · 161 阅读 · 0 评论 -
Java中的包装类
一、1、包装类的定义;基本数据类型如int、float、double、boolean、char 等。基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。2、对应关系:3、通俗解释:也就是说以前比如定义一个整形变量int a。这个a...原创 2018-12-21 17:21:40 · 1501 阅读 · 3 评论 -
Java中的抽象类和接口
1、抽象方法和抽象类:就是定义一个方法,这个方法只有函数名,没有具体功能的函数体。含有抽象方法的类必须是抽象类,当然抽象类也可以含有普通的方法。2、抽象类的作用:抽象类就是相当于从多个具体类中抽象出来的父类。从多个具有相同特征的类中抽象出来一个抽象类,以这个类作为子类的模板,抽象类体现的就是一种,模板模式的设计。抽象类中的方法不写方法体,函数的具体实现由继承这个抽象类的子类来实现。3、抽象...原创 2018-12-14 21:11:49 · 130 阅读 · 0 评论 -
Java中的多态
1、多态的定义:对象的多种形态(引用多态,方法多态)(使用多态时候一定要用到继承)2、引用多态:父类的引用(对象)既可以指向本类的对象,也可以指向子类的对象。为什么叫对象叫引用呢?其实对象名只是代表对象在这块内存的地址,通过对象名间接处理对象,所以对象名是一个引用。3、方法多态:在创建本类对象时,调用的方法为本类方法 在创建子类对象时,...原创 2018-12-03 22:54:41 · 209 阅读 · 1 评论 -
Java中的继承
1、(1)java中只有单继承,只有一个父类。(2)继承的好处子类拥有父类的所有属性和方法(但是父类的private的属性和方法是不可以继承的)实现在代码的复用class 子类 entends 父类2、java中方法的重写定义:如果子类对于继承父类的方法不满意,是可以重写从父类那里继承来的方法的。当调用方法时候会优先调用子类的方法。注意:返回值类型,方法名,参数类型以及个数都要与父类...原创 2018-12-03 08:58:05 · 427 阅读 · 0 评论 -
Java中的封装
1、封装的概念:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。2、好处:(1)只能通过规定的方法访问数据(2)隐藏类的实例细节,方便修改和实现。3、封装的实现步骤(1)修改属性的可见性设为(private)(2)创建getter/setter方法(用于属性的读写)(通过这两种方法对数据进行获取和设定,对象通过调用这两种发方法...原创 2018-11-26 22:47:50 · 34680 阅读 · 6 评论 -
Java常见细节问题
1、变量:变量类型,变量名,变量值。2、变量命名:(1)如果是多个单词组成,那么第一个单词首字母小写,其后单词的首字母大写。myName。(2)变量命名时,尽量简短且能清楚的表达变量的作用,做到见名知意。学生姓名:stuName。3、数据类型(1)基本数据类型就是存储数据本身,(直接放抽屉里的东西)而引用类型变量就是保存数据的空间地址(存储这个抽屉里的钥匙,钥匙和抽屉一一对应)。引用...原创 2018-11-18 16:29:35 · 2293 阅读 · 1 评论 -
Java中的类
1、成员变量和局部变量(1)成员变量:在类定义中,用来描述对象将要有什么。(可以被本类的方法所使用,也可以被其他和本类相关的类所使用)(作用域:整个类)(2)局部变量:在类的方法中定义,在方法中临时保存数据。(只能在当前的方法中被使用。)(作用域:定义他的方法内部)(3)初始值不同。成员变量初始值是0。局部变量没有初始值。(4)两类变量同名时,优先局部变量。2、构造方法(1)使用new...原创 2018-11-20 21:31:32 · 306 阅读 · 0 评论 -
初试C++
1,<<(输出)接受两个运算对象:左侧的运算对象必须是一个ostream的对象,右侧的运算对象是要打印的值。 >>(输入)同样接受两个运算对象:左侧的运算对象是一个istream的对象,右侧的运算对象是要输入的值。2,两种注释(1)注释界定符/…/(用于多行解释,且不可以嵌套)(2)双斜线注释符//(用于单行解释)3,for循环中的初始化变量只有在for循内...原创 2018-10-17 19:25:27 · 106 阅读 · 0 评论 -
C++11新增(持续更新)
1、long long类型。最小尺寸(该类型数据所占的比特数)64位。一般数值超出int范围用long long(因为long和int差不多大)。2、定义空指针int *p=nullptr;原创 2018-10-17 19:24:10 · 133 阅读 · 0 评论 -
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 · 115 阅读 · 0 评论