自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Contentprovider和ContentResolver的使用

一、provider的使用1、数据库 private static DBHelper dbHelper; public DBHelper(@Nullable Context context) { super(context, "student.db", null, 1); Log.e("TAG","DBHelper"); } @Override public void onCreate(SQLiteDatabase db) {

2022-04-17 23:26:39 469

原创 安卓android开发Button控件的background和backgroundInt属性同时存在时只有background属性起作用

安卓android开发Button控件的background和backgroundInt属性同时存在时只有background属性起作用首先代码如下drawable下的.xml文件<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#ffff0000" android:state_pressed="true"/> <item a

2021-06-25 02:03:48 988

原创 回文最小分割数

题目:给定一个字符串str,返回把str全部切成回文子串的最小分割数;举例子:str == “ABA” 返回0str == “ACDCDCDAD" 返回2,最少切两次;“A”“CDCDC”“DAD”;切两下分成三个回文子串;解题思路:此题解题思路是这样的,假设给你一串字符"ACDFFDCE",我们可以直接看出此最少需要切两次,成三个子串"A"“CCFFCC”“E”,可是我们也可以...

2019-07-02 18:49:25 781

原创 Java多线程编程核心技术第七章笔记:拾遗增补

1、线程的状态:线程对象在不同的运行时期有着不同的状态,此信息就存在与Thread.State枚举类中;在调用与线程有关的方法后,会进入不同的线程状态;2、验证NEW RUNNABLE TERMINATED三个状态;3、验证TIMED_WAITING:此状态代表了执行Thread.sleep的方法,呈等待状态;4、验证BLOCKED:此状态出现在某个线程等待锁的时候:5、验证WA...

2019-06-23 13:07:50 197

原创 Java多线程编程核心技术第六章笔记:单例模式与多线程;懒汉模式在多线程之下的好多种解决方式

1、立即加载/“饿汉模式”:没啥写的就不写了;太easy;2、延迟加载/“懒汉模式”延迟加载在多线程中根本不可能保持单例的状态,如示例:加载出了三个实例对象:3、懒汉模式的解决方案1:声明synchronized关键字;给getInstance方法加上synchronized关键字解决多线程下的懒汉模式问题这种方法的缺点:运行效率非常低下,因为他是同步运行的;4、懒汉模式的解决方...

2019-06-23 13:00:11 149

原创 Java多线程编程核心技术第五章笔记:定时器Timer

1、JDK库中Timer主要负责计划任务的功能,也就是说在指定的时间开始执行某一个任务;定时器五大方法的练习:1、schedule(TimeTask task,Date time):在指定的日期执行一次某一任务;在未来执行的效果:如果不将Timer改成守护线程,那么每创建一个就是启动了一个新的线程这个新启动的线程并不是守护线程,它一直会处于运行状态,如果将新创建的Timer改成守护线程,程...

2019-06-23 12:53:11 198

原创 Java多线程编程核心技术第四章笔记:Lock的使用

第一节:使用ReentrantLock类JDK1.5提供此类,不但也可以实现线程之间同步互斥,并且在扩展功能上也更加强大,使用上也比synchronized更加的灵活;使用Condition实现等待/通知:代码链接:对比:condition实现生产者消费者模式:多对多交替打印:出现这种“有可能 B 连续”、“有可能 A 连续”,打印的情况就是因为程序中使用了一个Con...

2019-06-23 12:34:31 155

原创 Java线程部分join(long)跟sleep(long)的区别

首先看一下方法join(long)的内部是怎么实现的:源码: 可以看出:内部是调用wait方法来实现的,而wait方法具有释放锁的特点,从源码可以看出执行wait方法之后,当前线程的锁被释放,那么其他线程就可以 调用此线程中的同步方法了public final synchronized void join(long millis)throws InterruptedException {...

2019-06-01 07:54:15 275

原创 Java多线程编程核心技术第三章小笔记:线程间通信

第一节:等待/通知机制等待/通知机制出现的意义:减少CPU的资源浪费,而且还可以实现在多个线程间通信;线程等待方法:Object类的wait()方法,将当前线程置入“预执行队列”,必须在synchronized方法或者代码块中,如果不加入同步块就会出现这个异常:java.lang.IllegalMonitorStateException;;执行后,当前线程释放锁,如果调用wait方法时没有持...

2019-06-01 07:44:37 112

原创 Java多线程编程核心技术第二章笔记

第一节:方法中的变量不存在非线程安全问题,永远都是线程安全的,这是方法内部的变量是私有的特性造成的;“非线程安全”会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”;“脏读”,就是说取到的数据其实是被更改过的;“线程安全”,就是已获得实例变量的值经过同步处理的,不会出现脏读的现象;当多个线程访问多个对象时,JVM就会创建多个锁;多个线程分别访问同一个类的多个...

2019-05-22 18:09:53 144

原创 Java多线程编程核心技术:第一章总结

进程:进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位;线程:在进程中独立运行的子任务;一个进程正在运行时至少会有一个线程在运行,比如主线程就是由JVM创建的;Thread类实现了Runnable接口,它们之间具有多态关系;但是使用Thread类创建多线程时,最大的局限...

2019-05-17 16:28:37 149

原创 集合框架中List接口下的三个子类ArrayList、Vector、LinkedList的区别(源码分析)

1、首先先看一下类集中Collection接口之下的实现子类继承关系2、首先,他们的使用效果是一样的,没区别,如下所示:使用ArrayList子类:使用Vector子类(用的少)使用LinkedList子类3、下面详细说明一下List接口下的三个子类ArrayList、Vector、LinkedList之间的区别:3.1、ArrayList与Vector之间的区别1.出现版本:...

2019-04-20 15:49:40 436 1

原创 归并排序(合并排序)(Merge Sort):Java代码实现

4、归并排序法思想:分治思想具体实现细节:如果要排序一个数组,先把数组从中间分成前后两部分,然后对前后两部分分别进行排序,再将排好序的两部分合并在一起,这样整个数组就有序了;下面看一下我自己画的简单示意图:这里解释一下图示,先分再合,合的时候排序;小数组排序,然后一步一步合成大数组的时候再排序,直到合并成一个大数组;代码展示:首先是递归函数private static void...

2019-04-08 19:18:44 1699

原创 Java实现:交换排序之快速排序(Quicksort)、(基础、二路、三路快速排序)

1、简单快排所谓快速排序,利用的是一种“分而治之”的思想,有点像归并排序,但是还是有点区别的;快排思想是这样的:待排序数组中下标从l(左边)到r(右边)之间的一组数据,我们选择其中任意一个元素作为分区点pivot,然后这组数据中大于分区点元素的全部放到它的右边,小于它的全部放到左边,此时这组数据中,这个pivot元素以及排到了它将要排序后的位置;然后它左右两边的两组数据接着以这种方式选分区点...

2019-04-06 23:30:13 1198

原创 Java实现:八大排序之选择排序(心得体会)

选择排序:算法思想:选择排序的实现思路有点儿类似于插入排序,也是划分为已排序区间和未排序区间,但是选择排序每次是从未排序区找到最小的元素,然后放到已排序区间的末尾,仅此而已;下面是我根据自己的理解画的示意图:下面是代码实现:/** * 选择排序; * 无序的一组数,每次从无序的数集中选择最小的一个数字, * 添加到有序数组的最后一位;直到无序数组为空 ...

2019-04-06 00:37:21 453

原创 Java代码实现:八大排序

最近学了数据基础最基础的几种排序,总结一下八大排序小结;首先呢先说一下分类:1.交换排序 (冒泡排序、快速排序)2.插入排序(直接插入排序、二分插入排序、希尔排序)3.归并排序4.选择排序(选择排序、堆排序)1、交换排序1.1、冒泡排序冒泡排序实际上是这几种排序里面最简单的排序,它的思路很简单,对于一组数字,每遍历一次数组,就会有一个元素到达最后将要排好序时的位置;具体实现是这...

2019-04-05 12:22:16 230

原创 Java代码实现:插入排序(直接插入,折半插入,希尔排序)

1、直接插入排序((insertSort)首先思考一个问题,往一个已经排好序的数组中插入一个数字,插入后数组依旧是有序数组,这是一个动态排序的过程,我们可以借鉴这种插入方法来实现排序,所以就有了插入排序;所谓直接插入排序,就是将待排序的数组中的元素分成两个区间,已排序区间和未排序区间,刚开始时将数组的首元素作为已排序区间的第一个元素,数组中的其余元素为未排序区域,然后每次取未排序区间的元素在...

2019-04-05 12:21:11 6524 10

原创 Java代码实现:交换排序之冒泡排序

1、没有优化的版本,多少个元素进行多少轮冒泡:public class SixSortTest { /** * 第一个冒泡排序;按照升序排列 * @param data 传入要排序的数组 */ public static void bubbleSort(int[] data){ int n = data.length; ...

2019-04-04 23:19:01 234

原创 JavaSE阶段必须掌握的23种设计模式之一:代理设计模式

首先我们应该理解一下代理模式的概念:一个接口,两个子类分别实现它,一个子类全程做的是辅助,框架的作用,另一个做的是真正的要做的事下面我要举个例子来解释一下我对代理模式的理解:假设客户要去买一杯奶茶,奶茶店员并不知道他要的什么口味的,红豆、巧克力、香草、原味、芒果、蓝莓等等,店员要做的就是加入各种口味的调味品,加热奶茶,并且装入奶茶杯中,最后与客户达成交易。在这个例子中,客户跟店员就是两个子类...

2019-01-14 09:09:21 171

原创 C语言练习(函数):写一个函数返回参数(整数)二进制中的1的个数(3种方法)

简单解释一下,就是写一个函数,传个实参过去,整数,然后该函数返回这个整数的二进制的个数;今天发现了三种方法可以求解,所以写个博客记录一下,以后想起来了可以回过来看看;1、第一种:我们一般传过去的都是十进制的整数,所以可以利用求二进制的方法来求1的个数;对2取余,余1的话就说明二进制中有个1,然后除以二,在取余,直到除2之后为0,代码如下:int count_one_bits(int integ...

2018-11-25 23:24:59 2072

原创 C语言小游戏:扫雷;展开、标记雷、第一步不死,踩到雷后游戏结束并且打印出雷区

电脑自带的扫雷游戏大家都玩过吧,首先呢我先简单介绍一下扫雷这个游戏是怎样玩的:一开局是一个9*9的棋盘,系统随机布置一定个数的雷,然后玩家开始点击棋盘开始像下棋一样扫雷,第一次必定不死,不然就没法玩;或者是没有踩到雷,然后如果走的棋盘格子周围八个格子里都没有雷,那么直接展开成空格,然后继续扫描这八个格子各自周围的八个格子有没有雷,如果有雷就显示雷的个数;如果没有雷继续展开,直到展开的过程中某一个...

2018-11-17 14:14:11 1368

原创 C语言最基础训练:求水仙花数的个数

水仙花数,是指一个三位数,其各位数字立方和等于该数本身,例如:153= 1^3 + 5^3 + 3^3,其实也就是说,一个数的位数作为次方数,求出他的每一位数以其位数为次方的数的和,例如5位数,abcde = a^5 +b^5 + c^5+ d^5 + e^5,就是这样。好,下面分别是我自己的跟另一个更经典的版本,注释在代码中,第一种:int main(){ int x = 0;//...

2018-10-29 21:54:52 12099 1

原创 【数据结构】C语言最基础练习:栈的初始化,压栈,出栈,遍历,清空

随手练习一下,详细代码解释都在代码片里请仔细看看如果有什么不对的地方,请在下方留言先建立头文件:#define _CRT_SECURE_NO_WARNINGS 1#ifndef _TEST_H#define _TEST_H//栈的链式存储结构;typedef struct Node //创建一种类型的节点;{ int data; struct Node * pnext;}N...

2018-10-27 17:11:10 5197

原创 C语言基础 递归练习:题目:有一对兔子,从出生后第三个月起每个月都生一对兔子 ,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死 ,问每个月的兔子总数为多少?

分析:兔子的数列为1,1,2,3,5,8,13,21…斐波拉契数列,每一项都是前两项的和,一般用递归的方法实现下面我将分别用递归和非递归的方法来解决这个问题第一种:递归法#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;//此方法为利用递归实现int Fibo(int n) //定义Fibo函数{ if (n == 1)return...

2018-10-25 08:30:45 40039 4

原创 C语言最基础练习:《三子棋》小游戏;

这个是昨天刚听过的一道题,觉得挺有意思的,就先把最基础的功能用C语言实现了一遍,还有扩展功能后续再敲,先把这个基础款传上来扩展:由玩家确定“数字*数字”的棋盘,确定几个棋子连起来才能赢,比如五子棋,七子棋等1.首先看一下我们要做出什么样子的三子棋。2.一共九个格子,然后玩家输入要走的格子的坐标,接着电脑走一步,直到棋盘有某一方下的棋子连接成三个,那么这一方就胜利了。下面是详细分析:1.如...

2018-10-20 00:00:49 485 2

原创 C语言经典题:用if语句实现:左右括号是否匹配;

####本程序的作用,输入一连串左右括号,然后判断他们是否匹配函数从一开始定义一个字符数组用存储要输入的字符串,然后利用for循环,从第一个字符开始检测.(1)先声明一个top变量等于0,如果碰到左括号‘(’,那么top+1,如果是右括号‘)’那么top-1,检测完后如果top=0不变,那么括号匹配;(2)还要排除第一个是右括号第二个是左括号的情况,虽然这两个字符检测下来top=0不变,但是...

2018-10-16 21:20:08 3625 3

空空如也

空空如也

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

TA关注的人

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