![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
婷小花
这个作者很懒,什么都没留下…
展开
-
【Java】剑指offer——输出一个十进制转二进制中1的个数
1、思路概述:在这里我们用到了按位与运算&。如,若要求n转二进制后的1的个数,那么我们将n和n-1进想按位与运算后对n进行更新,每更新一次1的个数就+1,最终得到1的个数。2、代码实现:public static void main(String[] args) {int n=21;}public static int find1(int n){/*将十进制数转换成二进制数后...原创 2020-02-25 11:22:44 · 723 阅读 · 0 评论 -
leetcode——最长回文(马拉车)
1、思想概述:求最大回文长度,例如,adfaddddaerg中,可以把构成回文的就是adddda,故此字符串的最大回文长度为6.回文:即一个字符串正着反着读都一样的,如上面说的adddda或noon等.当我们求解此问题时,首先会想到暴力的遍历数组,枚举数组中所有字串,然后再进行比较,但是这样做它的时间复杂度达到了O(n^3),十分不理想,所里这里提出了马拉车算法解决这个问题,可以将时间复杂度...原创 2020-02-25 11:21:38 · 455 阅读 · 0 评论 -
【Java】剑指offer——替换字符串中的空格使其成20%
1、思路概述:首先,我们拿到这道题要考虑的是如果要在当前的数组上将空格替换,那么必定会溢出。所以我们采用了以下几种方法把空格数先计算出来,然后对数组进行扩容,再在数组尾部定义一个指针从尾部开始后移(不用再将每个字符串向后覆盖了),然后遇到空格用20%替换,结束;但是上面的方法虽然看起来简单但是要对数组遍历两边,影响了程序的时间复杂度;优解:因为此处是单线程,所以用StringBulider...原创 2020-02-25 11:21:10 · 317 阅读 · 0 评论 -
【Java】剑指offer——两个链表的第一个公共节点
题目:求两个链表的第一个公共节点1、思路概述:要找两个链表的公共节点首先要知道链表的长度,那么我们首先就要遍历两个链表,的到链表长度后,若长链表长m短链表长n,那么就要让长链表先比锻炼表走m-n步,开始遍历,值相同后进行返回,的到解。但是上面这种方法需要两次遍历链表,效率不是很理想。我们可以利用HashMap的特性,将链表1的值存到HashMap中,然后再调用contains方法对链表2的值...原创 2020-02-25 11:20:57 · 216 阅读 · 2 评论 -
【Java】多线程中锁的获取过程
最近在回顾线程中锁的内容,看到哟盼文章总结的很精简易懂,转载给大家看看。本文链接:https://blog.csdn.net/lkforce/article/details/81128115目录一,对象头1,Mark Word2,指向类的指针3,数组长度二,实例数据三,对齐填充字节Java对象保存在内存中时,由以下三部分组成:1,对象头2,实例数据3,对齐填充字节一,对象...转载 2019-08-19 22:21:55 · 1223 阅读 · 0 评论 -
Spring简述三——Spring和JDBCTemplate的整合&& Spring和Mybatis的整合使用
其他Spring相关文章Spring简述一Spring简述二Spring提供了JavaEE的一整套解决方案(展示层 业务层 dao层)jdbCTemplate是dao层的解决方案,mybatis也是dao层的解决方案Spring中JDBCTemplate的使用:创建数据源(实现datasource的接口)创建JDBCTemplate对象通过数据源来实例化JDBCTemplate的使...原创 2019-08-13 20:51:36 · 2683 阅读 · 0 评论 -
Java——IO总结
在Java中,文件的读取分为字节流和字符流(读取方式);imput输入(读取)把硬盘中的数据读取到内存中使用output输出(写入)把内存中的数据写道硬盘中保存1字符=2字节;1字节=8个二进制字节流:(一切皆为字节,可以读取任意文件)——不需要知道文件内容时FileOutputStream:(把内存中的数据写到硬盘文件中)1、创建一个FileOutputStream对象2、会根据构...原创 2019-08-06 21:53:00 · 230 阅读 · 0 评论 -
浅析Java中的泛型
1、泛型产生的原因:首先,在这里要说明的是在JDK1.5+后才添加的。在这之前,每当我们想在容器里里添加内容时,当手动添加的类型出错(比如想输入String但是却不小心输了int),就会报错。那么泛型在此处就可以规范我们输入的数据类型。HashSet<String> hs = new HashSet<String>();当我们像上面的示例一样使用泛型时,如果输入的数...原创 2019-08-02 14:26:01 · 510 阅读 · 0 评论 -
【Java】String类型为什么不可变
1、什么是不可变对象:有效final;被private修饰;类不能被继承拓展;类不能对外界提供修改类状态的方法;2、Java中String类是如何设计成不可变对象的:首先我们先看如下代码:public class Demo { public static void main(String[] args) { String a="小猫"; System...原创 2019-07-28 18:55:26 · 248 阅读 · 0 评论 -
【Java】SQL——数据库的使用超超超详细!!!
SQL1、什么是SQL?结构化查询语言,其实就是定义了操作所有的关系型数据库的准则2、SQL语法:单行多行书写,分号结尾;不区分大小写,但是关键字推荐大写;单行注释 -- hhhhh 或 #hhhh多行注释 /*hhh*/3、SQL的分类:DDL(data Definition lanuage) 数据库定义语言:定义数据库对象:数据库,表,列等;关键字:create、drop、...原创 2019-07-27 21:00:01 · 528 阅读 · 3 评论 -
【Java】深入分析多态
1、多态概述:多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。方法调用:多态中的方法调用分为两类,静态方法的调用和动态方法的调用。(1)静态方法调用是指对于类的静态方法的调用方式,是在编译时刻就已经确定好具体调用方法的情况,是静态绑定的。(2)动态方法调用需要有方法调用所作用的对象,是在调用的时候才确定具体的调用方法,是动态绑定的...原创 2019-07-26 18:15:01 · 221 阅读 · 2 评论 -
【Java】浅析静态代码块,构造块,方法块
1、静态代码块:格式:不能在方法中public class Demo { static { System.out.println("静态代码块"); }}执行时间:在类被夹在的时候就运行了,并且只加载一次,优先于各种代码块和构造函数。注:静态代码块不能访问普通变量。2、构造代码块:格式:和静态代码块一样,只是少了static关键字public cl...原创 2019-07-22 19:12:47 · 371 阅读 · 0 评论 -
【Java】浅析双亲委托与类的加载
1、类的加载过程类加载器首先,在Java中有三个类加载器,分别是Bootstrploader(引导类加载器),ExtClassLoader(扩展类加载器) , AppClassLoader(应用类加载器)。其中Bootstrploader是最底层的类加载器,它是用C语言来实现的,它主要用来加载jre和jre路径。ExtClassLoader则使用Java语言编写用来加载jre下系统类库。 A...原创 2019-07-21 22:30:44 · 236 阅读 · 0 评论 -
【Java】浅析哈希表
1、哈希表简介:通常用于海量数据处理:1 查重 ;2 求 TOP k (时间复杂度,空间复杂度O(1))优点:增、删、查找O(1)缺点:占内存空间较大应用:HashMap,HashTable,LinkedHashSet…等容器,底层都用了哈希表。因为哈希表的增删查的特性,使这些容器的效率增加。2、哈希值:说到哈希值那就要提到哈希函数。因为哈希值并不是固定不变的,而使根据应用的不同的...原创 2019-07-25 16:01:37 · 265 阅读 · 0 评论 -
【Java】File类简单概述
file类(与系统无关的类,即任何系统都能使用):文件和目录名的抽象表达形式file 文件;directory:文件夹/目录;path:路径路径分隔符:windows分号 Linux 冒号文件名称分隔符:windows\ Linux /路径:绝对路径:是一个完整的路径(以盘符开始的路径)相对路径:是一个简化的路径(相对是指当前项目的根目录)注意:路径不区分大小写...原创 2019-08-07 15:02:17 · 312 阅读 · 0 评论 -
Spring简述一
1. Spring是什么Spring:轻量级开源框架核心:IOC(inverse of Control):控制反转 DI:依赖注入AOP(面向切面):给类添加功能而不修改源代码Spring对JavaEE提供了不同层的解决方案展示层:servlet、SpringMVC业务层:Spring IOC数据层:JDBCTemplate、Mybatis2. IOC控制反转将对象的管理(创...原创 2019-08-09 21:39:59 · 575 阅读 · 0 评论 -
【计算机网络】——Cookie和Session
由于HTTP协议是无状态的,即服务器不可能知道我们在上一次HTTP请求中通过了验证。所以要么以后每次请求中都带上用户名和密码,但是这样客户端和服务端都受不了频繁的请求,所以第二种方式就是会话管理。CookieHTTP1.1引入了cookie来保存状态信息。Cookie是服务器发送到用户浏览器并保存到本地的一小块数据,它会在浏览器之后向同一服务器发起请求时被携带上,用于告知服务端两个请求是否来...原创 2019-10-07 21:39:02 · 376 阅读 · 0 评论 -
【计算机网络】——HTTP简要概述
HTTP、HTTPS和SSH协议:HTTP、HTTPS和SSH协议都属于应用层协议;HTTP:超文本传输协议;HTTPS:安全的超文本传输协议;(在HTTP协议基础上加入了SSL协议保证安全传输);SSH:安全外壳协议;HTTP&HTTPS主要应用于Web浏览器和网站服务器间传递数据HTTP以铭文方式发送,不提供任何方式的加密,如果被攻击者截取了web浏览器和网站服务器之...原创 2019-10-06 23:44:27 · 396 阅读 · 0 评论 -
死锁的避免之银行家算法
我们都知道在多线程中,死锁是一个很严重的问题。产生死锁的四个必要条件:出现死锁的条件:1、互斥条件: 资源每次只能是一个线程使用------资源2、请求与保持条件:一个线程因请求资源而阻塞时,对已获取的资源保持不释放。------线程3、不可剥夺条件:线程已获取的资源,在未使用之前,不能强行剥夺,只能在使用完时由自己释放。4、循环等待条件:若干线程之间形成一种头尾相连接的循环等待资源关系...原创 2019-08-30 12:56:03 · 1598 阅读 · 0 评论 -
浅析Java内存模型
本篇文章基本上都是概念性的知识,理解记忆为主:java文件,首先要经过编程成为class文件,然后通过类装载器加载到jvm中去执行。这个jvm(蓝色线框起来的这部分)就是java运行时数据区,意思就是java代码在运行的时候,这些数据要存放在不同的内存空间里面。jvm就是指代这个的。当然了上面的运行时数据区jvm是jdk1.7版本的。也就是说不同的jdk版本,这个jvm的构成是不一样的。如下是...原创 2019-08-28 15:39:28 · 274 阅读 · 0 评论 -
Java序列化机制——protoStuff
Java的序列化是在文件传输中必不可少的一部分。常用的Java序列化机制有Java默认的序列化机制,谷歌的protobuf等。而Java默认的序列化机制效率太低,protobuf要写protostuff文件,又很麻烦,所以我这篇文章要介绍的就是——protostuff.1、protostuff简介在序列化文件不超过10M的时候最好还是使用Java自带的序列化机制。文件较大的时候用protost...原创 2019-08-21 13:04:38 · 1103 阅读 · 0 评论 -
【Java】——java创建对象的过程(内存角度分析)
java对象的创建操作其实我在《JVM系列之类的加载机制》一文曾经提到过,包含两个过程:类的初始化和实例化。为此为了理解的深入,我们还需要再来看一下类的生命周期。一张图表示:...原创 2019-08-11 22:12:09 · 396 阅读 · 0 评论 -
Java多线程之锁的升级
在Java中,加锁的过程是随着线程竞争的激烈程度而改变的。总体过程如下:偏向锁–》轻量级锁–》重量级锁在这里我们首先要了解Java对象的保存:1、Java对象的保存Java对象保存在内存的时候分三个部分:对象头,示例数据,对齐填充字节而对象头又分为三个部分,其中的MarkWord就是专门用来保存和记录所有与锁有关的信息的可以看到markword共有32个字节用来记录所得信息。同时,...原创 2019-08-23 21:39:02 · 265 阅读 · 0 评论 -
【Java】常用的设计模式简介
1、单例模式单例模式在我以前的博客中给过六种,有详解,大家可以参考【Java】浅析单例模式(六种单例模式的代码实现及详解)2、代理模式:【真正实现内容的是代理委托类】动态代理是在运行时根据我们在Java代码中的“指示”动态生成的。相比于静态代理,动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类中的方法。public interface IUser {...原创 2019-08-15 00:10:13 · 433 阅读 · 0 评论 -
Spring简述二
帆帆帆帆原创 2019-08-10 15:52:32 · 465 阅读 · 0 评论 -
【Java】浅析单例模式(六种单例模式的代码实现及详解)
一、单例模式概述单例模式是一种常用的设计模式,也被称作单子模式。再用这个模式的时候,必须保证有且只有一个实例存在。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。避免一个通信端口同时被两个请求调用,用单例模式就可以避免这种不一致状态。单例模式特点:1、私有化类的构造函数,不能再让用户通过new的方法随意的产生对象2、单例需要给类提供唯一一个单例对象...原创 2019-07-20 11:31:54 · 499 阅读 · 0 评论 -
JavaScript和HTML超超超!!!详细说明
HTML :HTML(Heper Text Markup Language)超文本标记语言——最基础的网络开发语言超文本:用超链接的方法将不同空间的文本的文字信息组织在一起的网状文本标记语言:有标签构成的语言(标记语言不是编程语言)语法:1、后缀名:.html2、标签分为:围堵标签:有开始标签和结束标签 自闭和标签:开始标签和结束标签在一起,如<br>3、标签可以嵌套...原创 2019-07-29 18:37:21 · 275 阅读 · 0 评论 -
【Java】Feil类概述
File类(与系统无关的类,即任何系统都能使用):它是文件和目录名的抽象表达形式;file 文件;directory:文件夹/目录; path:路径路径:绝对路径:是一个完整的路径(以盘符开始的路径)相对路径:是一个简化的路径(相对是指当前项目的根目录)Feil类的构造方法:1、Feil(String pathname):通过给定路径名字符串转换为抽象路径名来创建一个新Feil实例...原创 2019-07-14 21:22:59 · 1389 阅读 · 0 评论 -
【Java】红黑树简介插入操作s代码实现
1、红黑树的特点:红黑树的和根节点必须为黑色,叶子节点也必须为黑色;红黑树连续的两层不能出现连续红色节点;在从每个父节点到叶子节点的简单路径上必须有个数相同个黑色节点。...原创 2019-07-14 20:18:39 · 180 阅读 · 0 评论 -
BST树的经典问题——前、中、后序遍历
BST树的经典问题——前、中、后序遍历树的前中后序遍历是三种遍历打印BST的方式。1、前序遍历是先打印根节点开始继续向下。先打印父节点,再以前序遍历的方式遍历下面的节点如图是一个BST树,现在当对他进行前序遍历的时候,应该打印出如下数组58 23 12 18 35 47 82 69 74 87 95前序遍历特点:每一次都是先对根节点进行打印,即可以判断其根节点代码实现如下:publ...原创 2019-07-04 16:41:19 · 1832 阅读 · 0 评论 -
【Java】快速失败(fail-fast)与安全失败(fail-safe)
1、fail-fast:ConcurrentModificationException异常。在维基百科中,对快速失败是这样解释的:快速失败系统是一种可以立即报告任何可能表明故障的情况的系统。通常设计用于系统正常操作,而不是试图继续可能存在缺陷的过程。这种设计通常会在操作中的多个点检查系统状态,以便于及早检测到错误。快速失败得到职责是检测错误,然后让系统的下一个最高级别处理错误。总结:快速失...原创 2019-07-13 14:45:29 · 199 阅读 · 0 评论 -
【Java】【Collection】Set、List的简单概述
1、Collection集合:Collection集合属于java.util工具类下的工具类集合。它里面最重要的的就是Set和List。当然也有其他接口。2、List接口(1)特点:有序集合,即存取顺序相同;有索引,可用普通for循环遍历;可存储重复元素;(2)特有方法:void add(int index,E val)在指定位置添加指定元素E get(int index)返回指定...原创 2019-06-28 15:33:03 · 93 阅读 · 0 评论 -
【Java】二叉树(BST)的实现
二叉树一、二叉树的形成:二叉树是来源与我们熟知的二分查找。将二分查找分成两个部分,写成树的形式。上图就是将有序的数组进行二分查找后写出的二叉树二、二叉树的特点1、右孩子>父节点>左孩子2、每个节点最多有两个孩子3、第n层节点的个数为2^n,树的高度就是Log2(n)三/代码实现...原创 2019-06-27 15:42:58 · 274 阅读 · 0 评论 -
【Java】快速排序的原理解释和代码实现
1、快速排序的原理:2、快排的代码实现原创 2019-07-02 17:56:03 · 286 阅读 · 0 评论 -
【Java】AVL树经典问题——节点的插入操作
1、操作概述:当root==null时,直接把值插入到root节点;当要插入的值比当前节点大时,往树的右子树遍历,比当前节点小时,往左子树遍历。当进行了插入操作后,更新树的高度。插入完成后,可能会引起树的失衡,所以要加一个高度平衡判断语句,由于右子树的右节点引起的失衡——左旋;右子树左节点引起的失衡——右平衡(先右旋再左旋);左子树的左节点——右旋;左子树的右节点——左平衡(先左旋再右旋),根...原创 2019-07-07 17:43:56 · 582 阅读 · 0 评论 -
【Java】插入排序简介及实现
插入排序一、插入排序思想简介从角标为1 的元素开始(因为角标为0的元素默认已经排好了顺序),外层遍历arr.length-1次,记录角标为1的元素的值(将此元素当作一个base)。j指针从当前base元素的前一个开始,向前遍历,当遇到比base元素值大的时候,就将此元素值赋给base所在位置,然后j–操作后将base向前赋。二、代码实现public static void insert(i...原创 2019-06-23 16:23:07 · 99 阅读 · 0 评论 -
用两个栈实现队列/用两个队列实现栈
用两个栈实现队列1、栈的特点就是先进后出,而队列要做到先进先出,所以两个栈一个用来做入队操作(stack1)一个用来做出队操作(stack2)然后再把没有删完的元素再放到stack1中。具体代码实现过程如下:private T[] stack;// 存储栈的元素的数组// top表示栈顶的位置private int top;public SeqStack(){this(10);}p...原创 2019-06-10 23:22:44 · 96 阅读 · 0 评论 -
【JAVA】公平性锁与非公平性锁简述
【JAVA】公平性锁与非公平性锁简述公平性锁:公平性锁就像超市排队结账,如果结账窗口没有人或者该顾客时第一个排队的人,那么顾客就可以直接结账,如果结账窗口有人,那就要排队等待。公平性锁执行流程:1、尝试性获取锁,若锁未被占用(state=0),判断当前线程是否满足条(AQS为空或者为该队列对头),若满足条件,通过CAS获取锁,修改state ,将当前线程记录到锁上,成功返回。若锁被占用,...原创 2019-04-20 14:09:58 · 527 阅读 · 0 评论 -
【Java】【集合】Set与List概述
1、Collection集合:Collection集合属于java.util工具类下的工具类集合。它里面最重要的的就是Set和List。当然也有其他接口。2、List接口(1)特点:有序集合,即存取顺序相同;有索引,可用普通for循环遍历;可存储重复元素;(2)特有方法:void add(int index,E val)在指定位置添加指定元素E get(int index)返回指定...原创 2019-07-05 15:27:46 · 119 阅读 · 0 评论 -
【Java】Map概述
一、Map<K,V>特点:1、Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)2、Map集合中的元素,k和V的数据类型可以相同也可以不同3、Map集合中的元素,k不允许重复(唯一),v可以重复4、Map集合中的元素,k与v的关系一一对应二、Map集合的实现类...原创 2019-07-05 16:28:32 · 230 阅读 · 0 评论