自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据存储全方案----详解持久化技术

Android系统中主要提供了3种方式用于简单地实现数据持久化功能:文件存储、SharedPreference存储、数据库存储。除了这3种方式之外,还可以将数据保存在手机的SD卡中。

2022-08-07 23:23:39 1219

原创 LitePal操作数据库

LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式。将数据库功能进行了封装,可以不用编写一行SQL语句就能完成各种建表和增删改查的操作。LitePal的项目主页面地址:https://github.com/guolindev/LitePal} });...

2022-08-07 23:08:44 1347 1

原创 全局大喇叭--广播机制

广播的类型:标准广播和有序广播(1) 首先新建一个MyBroadcastReceiver} }(2) 然后在AndroidMainfest.xml中对这个广播接收器进行修改,让接收器接收到com.example.broadcasttest.MY_BROADCAST的广播< receiver(3) 在布局中定义一个按钮,用于发送广播的触发点。} });...

2022-08-07 22:57:32 916

原创 四大组件---ContentResolver

内容URI字符串能清楚的表达出是哪个程序的哪个表。ContentResolver中的增删改查方法接收内容URI。ContentResolver是通过URI来查询ContentProvider中提供的数据。点击ALLOW,联系人的数据都成功读取出来了,说明跨程序访问数据的功能确实是实现了。希望最终读取出的联系人信息能在ListView中显示出来。修改主活动xml文件。(2) 创建自己的内容提供器给我们程序的数据提供外部接口。(1) 使用现有的内容提供器来读取和操作相应程序的数据。...

2022-08-07 22:02:13 1129

原创 Android--碎片

碎片

2022-07-31 22:23:19 1085

原创 shell脚本入门

Shell是一个命令行解释器。他接收用户命令,然后调用相应的应用程序。定义格式变量名=变量值删除格式unset变量名输出变量echo$变量声明静态变量readonly变量,注意不能unset除非重启变量定义规则(1)等号左右两边一定不能出现空格(2)变量名称可以由字母、数字、下划线组成,不能以数字开头,环境变量名称建议大写。(3)变量的值有空格,使用双引号进行括起来exportD#格式{Action]}funname#!s=0;"P1。...

2022-07-14 23:09:02 2014 2

原创 git与repo区别?

git与repo区别

2022-07-12 18:26:04 1914 1

原创 java---泛型

目录1、为什么用泛型?2、泛型概念3、泛型类4、从泛型类派生子类5、泛型接口6、泛型通配符6、类型擦除1、为什么用泛型?早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在隐患,所以java提供了泛型这个安全问题。2、泛型概念泛型,参数化类型参数化类型,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,在调用时传入具体值java泛型(generics)是jdk5的新特性,泛型提供了编译时类型安全检测机制,泛型在编译时

2022-01-23 22:26:48 696 2

原创 MVCC、sql锁机制、sql优化

目录一、MVCC1.概述二、 mysql锁机制myql中支持行锁,间隙锁,表锁一、MVCC1.概述MVCC(多版本并发控制 Multi-Version Concurrent Control),为了提升mysql读-写,写-读; 两个操作同时进行,写-写mysql支持行级锁的,如果操作同一行数据,那么肯定是不可以的。每次对表中的记录操作时,会保存一个日志(undolog)里面记录事务id号,如果有多个事务操作时,他们就会根据事务id,找到自己操作的版本号。不同隔离级别在读取数据时,会根据版本链生成一

2022-01-22 22:08:30 1013 2

原创 java8--stream

目录1、什么是Stream?1、什么是Stream?Stream是java8的新特性,它允许你以声明式的方式处理数据集合,可以看做是遍历数据集的高级迭代器。stream与lambda 表达式结合后编码效率提高,可读性增强。eg:...

2022-01-22 11:10:01 201

原创 Mysql事务

目录一、事务1、概述2、事务特性(1)原子性(2)持久性(3)隔离性(4)一致性3、事务设置(1)直接用 SET 来改变 MySQL 的自动提交模式(2)查看 autocommit 模式(3)用 BEGIN, ROLLBACK, COMMIT 来实现4、并发事务处理带来的问题(1)脏读(2)不可重复读(3)幻读5、事务隔离级别一、事务1、概述事务就是一次完整的数据库操作,这个操作过程中可能包含多条sql执行。这多条sql的自执行时是一个整体,要么都执行成功,要么都执行失败。eg:转账操作:从A账号

2022-01-21 21:58:56 1327

原创 MySql引擎、索引

目录一、MySql架构连接层服务层引擎层物理文件存储二、Mysql引擎三、索引为什么要有索引呢?什么是索引?索引原理索引优势索引劣势索引创建原则什么情况下,需要索引?什么情况下,不建议用索引?索引分类主键索引单值索引唯一索引组合索引(复合索引)组合索引最左前缀原则删除索引全文索引查看索引索引数据结构聚簇索引和非聚簇索引聚簇索引非聚簇索引一、MySql架构连接层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。负责与客户端和程序建立连接,认证…

2022-01-21 11:26:38 2049 1

原创 java8--Lambda表达式

目录一、Java 8 Lambda表达式1、出现的背景2、Lambda表达式简介一、Java 8 Lambda表达式1、出现的背景2、Lambda表达式简介

2022-01-20 11:44:22 935 4

原创 Java设计模式(java design patterns)

目录一、Java设计模式1、概述二、 单例模式三、工厂模式四、代理模式一、Java设计模式1、概述在前辈们长期开发的过程中,为解决某一类问题,总结出的一种较为优化的代码设计结构。提高程序代码复用,扩展性,稳定性。设计模式详述二、 单例模式三、工厂模式批量创建对象,将创建对象与使用对象分离,三个角色,工厂 复制生产四、代理模式...

2022-01-19 21:45:17 1758

原创 mysql高级--视图、存储过程、函数、触发器

目录一、视图1、概念2、为什么使用视图?3、视图语句(1)定义视图:(2)使用视图(3)删除视图二、存储过程1.概述2、MySQL存储过程的定义(1)创建存储过程的语法格式3、存储过程使用(1)定义第一个存储过程(2)定义一个有参数的存储过程(3)流程控制语句 if else(4)使用存储过程插入信息(5)mybatis 调用存储过程三、函数(1)不带参数(2)带参数 if else(3)带参数四、触发器(1)删除部门信息之前,自动触发删除员工关联部门信息(2)添加用户信息后,向日志表插入信息一、视图1

2022-01-19 21:25:23 958

原创 java---ThreadLocal

目录1、概述线程封闭2、ThreadLocal是什么?3、ThreadLocal 原理分析4、ThreadLocal 内存泄漏问题1、概述多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全。ThreadLocal 是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在

2022-01-18 21:40:57 323 2

原创 java--线程池

目录1、概述2、为什么要使用线程池?3、 ThreadPoolExecutor类4、构造器中各个参数含义5、线程池的执行6、线程池中的队列7、线程池的拒绝策略8、execute 与 submit 的区别9、关闭线程池10、创建线程4种方法1、概述数据库连接池 每次与数据链接,创建连接对象connection ,操作完之后进行销毁,频繁创建销毁比较耗时,创建一个池子,预先在池子中初始化好一部分连接Connection对象,使用时直接获取即可,用完还回,不需要频繁创建销毁。( 如果并发的线程数量很多

2022-01-18 16:03:56 564

原创 JUC 常用类、锁

目录一、JUC 常用类1、ConcurrentHashMap一、JUC 常用类Java 5.0 在 java.utilconcurrent 包中提供了多种并发容器类来改进同步容器的性能.1、ConcurrentHashMapConcurrentHashMap 采用锁分段机制,并没有将整个hash表锁住,jdk8之后没有使用分段锁(给每个位置创建一个锁标志对象)。采用CAS思想 + synchronized来实现插入元素时,检测hash表对应位置是否是第一个节点,如果采用CAS机制(循环检查)

2022-01-17 22:45:33 964 2

原创 并发编程核心问题-可见性,原子性,有序性

目录1、可见性如何产生的可见性问题?概述2、有序性3、原子性4、总结(并发编程核心问题)5、volatile关键字6、如何保证原子性?1、加锁2、JUC --原子变量7、CAS ---理解为一种自旋思想8、JUC 常用类1、ConcurrentHashMap1、可见性如何产生的可见性问题?java多线程在工作时,现将主内存中的数据读到线程工作内存(缓存),然后在工作内存中,对数据进行操作,操作完成后,再将数据写回到主内存。产生一个可见性问题?2线程中看不到1线程中操作过的数据,操作系统可能会对指

2022-01-17 10:40:32 445 2

原创 面向对象设计原则

目录1、概述(1)单一职责(2)开闭原则(3)里氏替换原则(4)依赖倒置(5)接口隔离(6)迪米特原则(7)组合/聚合复用原则(8)总结1、概述在面向对象的设计过程中,首先要考虑的是如何同时提高一个软件系统的可维护性和可复用性。这时,遵从面向对象的设计原则,可以在进行设计方案时减少错误设计的产生,从不同的角度提升一个软件结构的设计水平。(1)单一职责单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。一个类负责做一件事,低耦合,高内聚。对于单一职责原则,可以理解为一个类只负责一

2022-01-16 12:22:56 644 2

原创 初识Java并发编程

目录一、回顾线程基本内容1.基本概述2、创建线程3、常用方法4、线程状态5、多线程6、线程安全问题7、守护线程8、死锁9、线程通信10、wait() notify()notifyAll()11、sleep()和wait()12、生产者消费者问题二、并发编程1、并发编程是什么?2、多线程优点3、多线程带来的问题是什么?4、Java 内存模型(JMM)(1)概述(2)JVM 主内存与工作内存一、回顾线程基本内容1.基本概述程序:静态代码,安装在硬盘上的进程:运行中的程序,是操作系统分配内存空间的单位。

2022-01-15 20:53:24 610 3

原创 对象克隆概述

目录1、叙述2、误区3、浅克隆和深克隆(1)浅克隆(2)深克隆实现方式:如何实现深克隆1、叙述从前端向后端发送数据,从后端向前端返回的数据,我们通通都使用一个Model类来完成封装。实际中模型类可以分好几种,例如,专门用来接收前端数据的,可以加入验证,向dao层传输数据的这里就需要用到对象的克隆。2、误区这种形式的代码复制的是引用,即对象在内存中的地址,a 和 b 对象仍然指向了同一个对象。这种只能称为引用复制,两个引用指向的还是同一个对象.我们常见的 Student stu1 = new S

2022-01-15 15:30:19 576

原创 Sping进阶

目录一、Sping复习1、概述2、如何搭建3.spring中常用的注解标签4.spring+jdbc5、spring 集成 mybatis6、spingMVC二、sping进阶1、BeanFactory 和 ApplicationContext(1)BeanFactory 和ApplicationContext2、SpringBean的生命周期3、Spring中的bean是线程安全的吗?4、Bean循环依赖5、Servlet的过滤器与Spring拦截器区别(1)区别主要在底层实现方式有所不同:一、S

2022-01-13 20:49:13 390 3

原创 jvm---执行引擎、垃圾回收

目录执行引擎垃圾回收内存溢出与内存泄漏垃圾收集算法分为两大类1、垃圾标记阶段算法哪些引用被用来当做根;finalize() 方法机制2、垃圾回收阶段算法执行引擎前端编译(.java --> .class)字节码 不等于 机器码需要jvm将字节码加载到内存中需要通过执行引擎将字节码 解释/编译成机器码 后端编译(.class --> 机器码)执行引擎机制:解释器 :将字节码垃圾回收内存溢出与内存泄漏溢出:泄漏:垃圾收集算法分为两大类1、垃圾标记阶段算法主要是来判定

2022-01-12 23:16:34 284

原创 JVM运行时数据区

目录总述程序计数器本地方法栈虚拟机栈Java堆概述堆内存区域划分为什么要分区?对象在堆内存中的过程:为什么是15次后,移入老年区?堆各区域的占比?堆空间的参数设置分代收集思想Minor GC 、Major GC 、 Full GC总述堆、方法区(元空间) 主要用来存放数据,是线程共享的。程序计数器、本地方法栈、虚拟机栈 、是运行程序的,是线程私有的。程序计数器jvm中的程序计数器不是cpu中的寄存器,可以理解为计数器。是一块非常小的内存空间,运行速度是最快的,不会出现内存溢出情况。作用:记

2022-01-10 11:36:21 647 1

原创 2-3树、红黑树

目录红黑树的发明人一、2-3树二、2-3树是如何维持绝对的平衡三、红黑树与2-3树的等价性四、红黑树的基本性质和复杂度分析《算法导论》 中的红黑树五、红黑树中添加元素六、左旋转七、颜色翻转八、右旋转九、先左旋,后右旋总结红黑树的发明人Rebort Sedgewick,普林斯顿大学的计算机科学教授。他还是Adobe Systems的一名主管,也曾作为访问学者在 XeroxPARC、IDA和INRIA工作。他在斯坦福大学获得博士学位。他的著作包括Algorithm in C、Algorithm inC

2021-12-22 17:37:06 757 2

原创 平衡二叉树和AVL

目录一、AVL二、平衡二叉树三、代码实现四、测试五、AVL的左旋转和右旋转(1)维护平衡的时机(2)插入的元素在不平衡节点的左侧的左侧右旋代码实现(3)插入的元素在不平衡节点的右侧的右侧左旋代码实现六、LR和RL1、**插入的元素不在平衡节点的左侧的右侧**2、**插入的元素在不平衡结点的左侧的右侧**代码实现七、AVL树的删除八、测试九、完整代码平衡二叉树和AVL树是在二分搜索树的基础上进行讲解回忆二分搜索树的问题:添加数据 :是按照顺序添加的 32145每个节点的左节点小于根节点,每个节点的右

2021-12-16 20:58:15 1657 2

原创 并查集Union Find

目录一、并查集解决什么问题?二、操作三、并查集的基本数据表示四、代码与合并操作五、真正的并查集实现六、数据表示七、测试并查集八、基于size的优化九、基于rank优化十、路径压缩十一、路径压缩的优化一、并查集解决什么问题?可以非常高效的解决网络中节点的连接问题,使用并查集,可以确定图中两个点是否有连接。二、操作(1)创建一个数组或集合 保存两个数(2)合并 union (p,q)(3)是否连接 isConnection(p,q)在使用并查集时,我们并不关心元素的内容,用数组保存元素,p和q

2021-12-07 21:08:34 991 2

原创 JVM快速入门

目录

2021-12-06 21:16:46 1432 3

原创 线段树和Trie2

目录1、概念2、时间复杂度3、Trie节点结构4、添加单词操作5、判断是否有指定的单词6、判断是否有以pre为前缀的单词7、查询某个单词的 . 可以为任意单词8、完整代码实现1、概念在计算机科学中,trie,又称前缀树或字典树。与二叉查找树不同,值不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。Trie 的典型应用是用于统计,它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较2、时间复杂

2021-11-30 20:43:53 506 2

原创 线段树和Tire

目录一、线段树能解决的问题二、构建线段树三、查询操作四、更新操作一、线段树能解决的问题RMQ(区间最值问题)区间求和二、构建线段树三、查询操作四、更新操作

2021-11-30 20:09:22 348 4

原创 Spring3

目录

2021-11-25 20:18:12 947

原创 Spring2

文章目录

2021-11-24 16:50:40 505

原创 二分搜索树(Binary Search Tree)2

目录1、删除二分搜索树的最大元素2、删除二分搜索树的最小元素1、删除二分搜索树的任意元素完整代码1、删除二分搜索树的最大元素(1)寻找二分搜索树的最大元素 //先找到最大节点 T maxNodeVal =findmaxnodeDG(); if (maxNodeVal==null){ System.out.println("isEmpty"); return ; }(2)返回以node为根的二分搜索树的最

2021-11-23 18:29:55 532

原创 spring1

目录Spring是什么?Spring是什么?

2021-11-22 18:12:02 710 2

原创 二分搜索树(Binary Search Tree)

目录树结构一、为什么要有树结构二、二分搜索树的基础树结构一、为什么要有树结构树结构本身是一种天然的组织结构高效二、二分搜索树的基础

2021-11-22 16:31:46 2966 2

原创 数据结构-堆和优先队列2

目录优选队列概念代码优选队列概念普通队列:先进先出优先队列:出队顺序和入队顺序无关,和优先级有关。当访问元素时,优先级最高的会被删除。可以使用堆这种数据结构作为优先队列的底层结构。代码package heap;import com.company.project.Queue;import java.util.Arrays;import java.util.Random;//继承comparable 比较接口,实现queue队列(调用自己写的queue接口)public class M

2021-11-17 10:01:02 491

原创 数据结构-堆和优先队列

目录1、堆的概念2、满二叉树3、完全二叉树1、堆的概念(1)是一颗完全二叉树(2)父亲节点的优先级高于或低于左右孩子的优先级(值越大,优先级越高)2、满二叉树(1)除叶子节点之外,所有节点都有左右子树(2)叶子节点都在最后一层(3)每一层节点的个数:2^(l-1),l为层数(4)叶子节点的个数:2^(h-1),h代表树高度(5)非叶子节点的个数:2^(h-1)-1(6)节点个数:2^(h)-13、完全二叉树...

2021-11-16 20:47:13 641

原创 Java-基础选择题2

文章目录java(十三)java(十三)类Person里面有个方法sleep(),如果直接用Person.sleep(),则方法sleep前面必须用的关键词是? ( )A.classB.staticC.publicD.final答案:B解析:static关键字:针对多个对象共有的成员变量值时所提出的。特点:1、随着类的加载而加载;2、优先于对象存在;3、被类的所有对象共享;4、可以通过类名直接调用。注意事项:1.在静态方法中是没有this关键字的; 2.静态方法

2021-11-16 11:33:56 2038 2

原创 Java-基础选择题

标题Java(八)Java(九)Java(十)Java(八)以下关于构造函数的描述错误的是 ( )A.每个类有且只能有一个构造函数。B.构造函数是类的一种特殊函数,它的方法名必须与类名相同C.构造函数的主要作用是完成对类的对象的初始化工作D.一般在创建新对象时,系统会自动调用构造函数答案: A解析:类除了无参构造方法,还有有参构造方法,有参构造方法还可以通过重载写出多参的构造方法(2参,3参,4参)方法重载:同一个类中方法名称相同,而参数的类型或个数不同2.在面向对象编程里,经

2021-11-16 11:33:26 5412

空空如也

空空如也

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

TA关注的人

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