自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关键字(final finally finalize static)

关键字(final finally finalize static)一、final修饰类:表示该类不能被继承修饰方法:表示该方法不能被重写修饰变量:表示该变量只能被赋值一次声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。(1)对于基本类型,final 使数值不变;(2)对于引用类型,final 使引用不变,表示该引用只有一次指向对象的机会,也就不能引用其...

2020-03-31 15:26:02 105

原创 数据库如何优化

数据库如何优化explain 联合索引 最左前缀原则Innodb 辅助索引 id name age遵循索引设计的7大原则不要写导致索引失效的sql语句索引 --》 查找算法 有一个精确的数据让我们去查找 —》 退化全表查询select id from user where age = 50;(1)where 语句上写了函数select id from t where ...

2020-03-30 17:10:33 102

原创 计算机基本概念

计算机基本概念1、计算机存储单位从小到大依次为位Bit、字节Byte、千字节KB、兆M、千兆GB、TB,相邻单位之间都是1024倍,1024为2的10次方,即:1Byte = 8bit1K = 1024Byte1M = 1024K1G = 1024M1T = 1024G2、计算机存储元件寄存器:中央处理器CPU的一部分,是计算机中读写速度最快的存储元件,但是容量很少内存:属于独...

2020-03-30 16:59:40 155

原创 《剑指offer》Java实现(11-20)

《剑指offer》Java实现(11-20)11.给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0public class Solution { public double Power(double base, int exponent) { double resul...

2020-03-30 16:56:42 88

原创 TCP为什么是可靠的传输

TCP为什么是可靠的传输(1)检验和TCP检验和的计算与UDP一样,在计算时要加上12byte的伪首部,检验范围包括TCP首部及数据部分,但是UDP的检验和字段为可选的,而TCP中是必须有的。计算方法为:在发送方将整个报文段分为多个16位的段,然后将所有段进行反码相加,将结果存放在检验和字段中,接收方用相同的方法进行计算,如最终结果为检验字段所有位是全1则正确(UDP中为0是正确),否则存...

2020-03-28 19:21:25 1407

原创 输入两棵二叉树A,B,判断B是不是A的子结构。

输入两棵二叉树A,B,判断B是不是A的子结构。class BinaryTree<T extends Comparable<T>>{ static class BinaryTreeNode<T>{ private T value; private BinaryTreeNode<T> leftchild; private BinaryTr...

2020-03-28 00:11:08 144

原创 快排的优化

快排的优化快排的优化主要针对于递归来讲,快排有三种排序方式,两种优化方案:排序方式:(1):固定位置选取基准法 (2):随机选取基准法 (3):三分取中法优化方案:(1):一定数量的数据范围内采取直接插入排序,因为在排序的过程当中数据越来越有序,直接插入排序时间复杂度更快。(2):聚集相同基准元素法,因为:有可能选取的基准,在左右两面都有相同的元素,我们可以将他们聚集到一起,...

2020-03-26 11:00:13 382

原创 谈谈面向对象的三大性质

谈谈面向对象的三大性质一. 封装:封装性就是尽可能的隐藏对象内部细节,对外形成一道边界,只保留有限的接口和方法与外界进行交互。封装的原则是使对象以外的部分不能随意的访问和操作对象的内部属性,从而避免了外界对对象内部属性的破坏。可以通过对类的成员设置一定的访问权限,实现类中成员的信息隐藏。四种访问修饰符:**public:**类中限定为public的成员,可以被所有的类访问。protec...

2020-03-25 17:49:55 389

原创 线程池详解

线程池详解为什么要使用线程池呢?线程池属于对象池,所有线程池都有一个非常重要的共性,就是为了最大程度的复用对象,因此,线程池最重要的特征就是利用线程。其次,java线程池的编程模型相对于原有的多线程模式来说,还有一大改进,那就是线程代码和业务代码的分离。常用的线程池有几种?newSingleThreadExecutor:单线程化的线程池newCachedThreadPool:可缓存线程...

2020-03-25 16:47:37 161

原创 《剑指offer》Java实现(1-10)

《剑指offer》java代码(1-10)

2020-03-24 15:54:42 230

原创 网络模型

网络模型JAVA网络部分介绍了几种网络模型,可以分开去介绍。传统的BIO编程 网络编程的基本模型是C/S模型,即两个进程间的通信。 服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。 传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起...

2020-03-23 14:04:26 131

原创 在多线程下,如果对一个数进行叠加,该怎么做?

在多线程下,如果对一个数进行叠加,该怎么做?/*两种方法一种是加锁(锁可以使用Sychorized和ReentrantLock),一种是使用Atomic下的线程安全的类。*/ public class Volatile { private static CountDownLatch countDownLatch = new CountDownLatch(10); ...

2020-03-23 14:03:57 565

原创 volatile关键字

volatile关键字Volatile 解决了什么问题?<1>保证了内存的一致性<2>防止了指令重排序<3>因为没有加锁操作所以Volatile对共享变量的同步不会Volatile实现原理:保证内存一致性:通过缓存一致性协议保证了内存一致性。缓存一致性协议定义了内存中的变量有一下几种状态:M:被修改的。处于这一状态的数据,只在本CPU...

2020-03-23 13:59:46 140

原创 实现线程池

实现线程池通过以下方法去实现自定义线程池:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit un...

2020-03-22 21:48:27 160

原创 二分查找(递归&非递归)java

二分查找(递归&非递归)javapackage Test;public class binarysearch { //二分查找,递归实现 public static int binarysearch(int[] arr, int val) { int left = 0; int right = arr.length - 1; ...

2020-03-22 18:21:42 86

原创 二分查找Java实现

1.二分查找Java实现package Test00;//二分查找/* 二分查找又叫做折半查找,要求查找的序列有序,每次查找都取中间位置的值与待查的位置的值比较,如果中间的值比 待查的数值大,则在序列的左半部分继续查找;反之,在右半部分查找。直到查找到关键字位置。 如果没有查找到,则返回-1* */public class binarySearch { publ...

2020-03-22 17:18:36 236

原创 在浏览器上输入一个url到返回一个页面的经历过程

在浏览器上输入一个url到返回一个页面的经历过程在浏览器地址栏键入URL,按下回车之后会经历以下流程:1、客户端连接到Web服务器一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。我们要和一个服务建立连接:应该适合ip地址和端口号建立连接,那这里提供的是一个域名我们应该怎么做呢?DNS协议...

2020-03-22 17:11:25 437

原创 Object里面有什么方法

Object里面有什么方法Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。这里主要总结Object类中的三个常用方法:toString()、equals()、hashCode()。1.取得对象信息的方法:toString()该方法在打印对象时被调用,将对象信息变为字符串返回,默认输出对象地址。 class Pe...

2020-03-21 19:19:51 283

原创 在多线程下,如果对一个数进行叠加,该怎么做

在多线程下,如果对一个数进行叠加,该怎么做 /*这里有两种方法一种是加锁(锁可以使用Sychorized和ReentrantLock),一种是使用Atomic下的线程安全的类。*/ public class Volatile { private static CountDownLatch countDownLatch = new CountDownLatch(10); ...

2020-03-21 19:19:29 399

原创 链表应用

1.去除链表中重复元素 //将链表中重复的元素全部删除 public void DeleteDupliacateNode1(Node<T> head) { Node pPre=head; Node pCur=pPre.next; Node pNext; boolean bDup; w...

2020-03-21 18:55:32 71

原创 GC算法及几种垃圾收集器

GC算法及几种垃圾收集器Java中垃圾回收算法有以下4种:标记-清除算法 复制算法 标记-整理算法 分代收集算法下面详细介绍:(1)标记/清除算法标记/清除算法的基本思想就跟它的名字一样,分为“标记”和“清除”两个阶段: 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象标记阶段: 标记的过程其实就是前面介绍的可达性分析算法的过程,遍历所有的 GC Ro...

2020-03-20 18:11:08 727

原创 Java虚拟机的内存布局

Java虚拟机的内存布局JVM是Java提出的核心概念,其中的内存模型(JMM)是JVM的重点,需要我们重点了解掌握JVM内存划分:1、方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放2、堆内存(线程共享) 垃圾回收的主要场地3、程序计数器 当前线程执行的字节码的位置指示器4、Java虚拟机栈(栈内存) :保存局部变量,基本数据类型以及堆内存中对象的引...

2020-03-20 17:59:09 101

原创 get、post的区别

get、post的区别(1)GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。(2)GET书签可收藏,POST为书签不可收藏。(3)GET能被缓存,POST不能缓存 。(4)GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 mult...

2020-03-20 17:55:54 119

原创 饿汉单例模式和懒汉单例模式

饿汉单例模式和懒汉单例模式 //线程安全的懒汉模式: class Single1 { private static volatile Single1 s = null;//被volatile修饰的变量能够保证每个线程能够获取该变量的最新值,从而避免出现数据脏读的现象 public Single1() { } ...

2020-03-20 17:51:00 97

原创 生产者消费者模型

生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。 由于程序运行是线程不安全的,因此可能会出现以下问题: 1、假设生产者线程刚向数据存储空间添加了数据的名称,还没有加入该信息的内容,程序就切换到了消费者线程,消费者线程将把信息的名称和上一个信息的内容联系在一起; 2、生产者生产了若干次数据,消费者才开始取数据,或者是,消费者取完一次数据后,还没等生产者放入新的数据,又重复取出了已取过

2020-03-20 17:46:07 161

原创 数据库查询语句的优化,如何查看执行计划,有个关键字explain,explain有哪些字段

Column 含义id 查询序号select_type 查询类型table 表名partitions 匹配的分区type join类型prossible_keys 可能会选择的索引key ...

2020-03-19 21:42:35 626

原创 编码实现一个死锁的例子

public class Test { public static void main(String[] args) { Object lockA = new Object(); Object lockB = new Object(); A a = new A(lockA, lockB); ...

2020-03-19 21:41:34 115

原创 List、Set、Map区别

List、Set、Map区别1. Set、List和 Map 的区别(1)Set 、List 和 Map 是 Java 容器框架的三个最重要的接口(2)List 提供了一个有序且有索引的容器,它允许重复值的出现(3)Set 提供了一个无序的唯一对象的容器,Set 不允许重复值(4)Map 提供的则是一个基于键值对以及哈希的数据结构(5) List、Set 和 Map 这三个都是 Jav...

2020-03-17 16:24:53 116

原创 重写(Override)和重载(Overlord)详解

重写(Override)和重载(Overlord)详解一.重写(Override)重写是子类对父类的允许访问的方法的实现过程进行编写,返回值和形参都不能改变;重写的好处在于子类可以根据需要,定义特定的自己的行为。也就是子类根据需要实现父类的方法;重写方法不能抛出新的检查异常或者比被重写方法声明更加宽泛的异常。例如:父类的一 个方法申明了一个检查异常 IOException,但是在重写这个...

2020-03-10 13:14:24 1006

原创 排序总结(Java实现)

排序总结(Java实现)1.冒泡排序冒泡排序(BubbleSort)算法是一种较简单的排序算法,它在重复访问要排序的元素列时,会依次比较相邻的两个元素,如果左边的元素大于右边的元素,就将二者交换位置,如此重复,直到没有相邻的元素需要交换位置,这时该列表的元素排序完成。该算法名称的由来是越大的元素会经过交换慢慢「浮」到数列的顶端(升序或降序排列),就如同水的气泡最终会上浮到顶端一样。代码实现...

2020-03-08 21:13:41 87

原创 HashTable源码剖析

HashTable源码剖析public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { private transient Entry<K,V>[] table; ...

2020-03-08 15:01:35 74

原创 HashMap源码剖析

HashMap源码剖析public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable{ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; /...

2020-03-08 14:59:48 138

原创 Java集合总结(二)

Java集合总结(二)一.集合的框架二.集合继承的类以及数显的接口1.ArrayList 线程不安全默认容量为 10扩容1.5public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io...

2020-03-06 00:27:34 70

原创 LinkedList源码剖析

LinkedList源码剖析public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0;/...

2020-03-05 23:45:48 74

空空如也

空空如也

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

TA关注的人

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