自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C/S与B/S的比较

C/SClient/Server,客户端/服务器端C/S结构的系统,我们进行访问时需要下载特定的应用程序,eg:微信、新浪微博、腾讯视频客户端等;C/S结构的原理:用户访问客户端应用程序,发出请求服务器端进行分析处理,再发送反馈;C/S结构的系统注重用户的体验,要求画质清晰,响应速度高。优点: C/S结构系统将应用于服务分离,系统具有稳定性和灵活性; C/S结构配备的是 点对点的结构模式,应用于局域网,有可靠的安全性; C/S结构的系统数据大部分集成在客户端软件中,服务器端需要传送的数

2021-03-05 15:23:31 179 2

原创 数据库---索引优化

0628 SQL及索引优化索引的执行分析;索引失效;SQL和索引的优化;explain 关键字是分析SQL索引执行过程;操作Student表mysql> select * from student;+-----+-------+------+------+| SID | Sname | Sage | Ssex |+-----+-------+------+----...

2021-03-05 15:04:34 142

原创 数据库---索引的底层原理

索引的底层原理MYSQL支持两种索引,B+树索引,哈希表索引;存储引擎为MYISAM和INNODB的索引结构:MYISAM存储引擎—主键索引(非聚集索引)MYISAM引擎使用B+ 树作为索引结构、叶节点的data域存放的是数据记录地址;MYISAM中,主索引和辅助索引在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。按照B+ 树搜索算法搜索索引,如果指定的key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。INNoDB存储引擎—

2021-03-05 15:01:36 497 1

原创 数据库---索引

索引:一种数据结构,(B树或者是哈希结构),提高查询效率。索引是创建在数据库表中,是对数据库表中的一列或者多列值进行排序的一个结果,好处就是提高查询效率。索引的分类:普通索引:没有任何限制,可以给任何字段创建普通索引;唯一性索引:使用Unique修饰的 字段,值不能重复,主键索引就是唯一性索引;主键索引:使用primary key修饰的字段自动创建主键索引,不能为空;外键索引...

2021-03-05 14:58:43 86

原创 数据库---事务、存储引擎

事务一个事务是由一条或者多条操作数据库的SQL语句所组成的一个不可分割的单元。只有事务中所有操作都正常执行,整个事务才能给提交到数据库,要么成功,要么失败,不能出现部分成功和失败。userid cardid pricegdz 123 100 + 100 =200gxt 456 600 - 100 =500gxt同学给gdz转一百块钱 (应...

2021-03-05 14:52:13 100

原创 集合---1.8与1.7中HashMap的变化

HashMap摘抄整理自公众号–Java极客技术。底层数据结构(1)在jdk1.7中,HashMap的底层数据结构是数组+链表,当发生hash冲突时,使用的是链地址法(又叫拉链法),将冲突的元素放入对应位置的链表中;(2)在jdk1.8中,HashMap的底层数据结构主要是数组+链表+红黑树,当链表长度超过 8 的时候,就将链表变成红黑树,如图所示。方法比较put方法(1)jdk...

2019-10-07 18:37:15 265

原创 数据库---SQL操作

库操作SQL格式:1.创建数据库:create database database_name;2.查看数据库:show databases;3.使用数据库:use database_name;4.查看数据库下的存在表:show tables;5.删除数据库:drop database database_name;表操作SQL格式1.创建表:create table table_na...

2019-10-06 21:54:50 149

原创 数据库---MYSQL基础

MYSQL相关数据库的一种;目前属于Oracle甲骨文公司;称为关系型数据库,微软的SQL server;MySQL数据是一种C/S模型即客户端服务端模型;客户端通过账号,密码连接服务器,连接成功后才可以进行数据库操作(CRUD增删改查);MYSQL的服务端采用IO复用 + 可伸缩的线程池,实现了网络高并发的经典模型;MYSQL 的优势:(1)开放源码的数据库;(2)跨平台性;...

2019-10-06 21:34:49 235

原创 集合---Set、List、Map的区别

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

2019-10-06 21:26:16 129

原创 JVM---Minor GC和Major GC,对象从新生代到老年代的过程

GC关于JVM堆区的划分,请转至JVM垃圾回收机制 查看,感谢。1.垃圾回收机制过程2.什么时候发生minor GC和Full GC?3.为什么要进行minor GC?4.初始化的对象会被放在什么地方呢?对象的内存分配策略两个存储位置:本地线程缓存TLAB和堆新对象产生时首先检查本地线程是否开启了缓存,是则存储在TLAB,否则去堆中寻找位置。堆区:Eden、两个Su...

2019-09-28 11:42:23 1053

原创 编程--在数组中找出任意一个重复的数字

在一个长度为n的数组里的所有数字都在0–n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例:如果输入长度为7 的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2.* 产生一个随机数的数组,指定数组长度为10;(Math.Random())* 创建一个新的数组保存找到的重复数字;(int[]...

2019-09-21 23:37:49 397

原创 Linux---地址映射

JVM和Linux进程的内存模型.class –> JVM —> LinuxJVM 本身就是用原生代码(C& C++)实现的,也就是说一个JVM进程其实就是一个C语言开发的程序在运行,JVM上可以解释class字节码文件,在JVM层,内存主要划分为方法区(指令,Class对象,static成员变量),heap堆区(new出来的对象和常量池),JVM stack ,...

2019-09-20 01:25:29 272

原创 线程---关于死锁,进程和线程,多进程与多线程,synchronized与ReentrantLock的区别

怎么理解系统的进程和线程??进程:进程是系统划分资源(I/O资源[磁盘,文件],CPU资源,内存资源)的基本单位,进程本身不执行任何的指令;每一个进程的创建,都伴随着一个主线程的创建,线程才是负责执行指令的,也就是说Linux系统调用的基本执行单元,就是线程(main线程 线程 = 线程栈(线程函数 main函数)),自己创建的线程,也是需要匹配一个线程的入口函数的,就是run函数;线程:...

2019-09-20 00:47:58 222

原创 Linux---网络相关和定位Java进程占用系统资源使用率高的问题

Linux网络相关命令ping :检测host地址或域名代表的主机是否可达;ifconfig:查看当前主机的所有网卡以及工作状态;netstat:查看当前主机的top端口使用的情况,服务运行的情况;netstat -tanp:可以查看当前使用协议(TCP/UDP)、接收缓冲区数据大小,发送缓冲区数据大小,本机地址,端口号,socket的状态,进程的PID号/进程名;n...

2019-09-19 13:27:10 371

原创 Linux---基本常用命令

LinuxWindows的磁盘管理:C、D、E 磁盘空间 —》文件夹(目录)、、、文件;Linux的磁盘管理:文件夹(目录) —》磁盘空间,多用户管理系统;Linux的文件目录:/ 根目录/root (Linux系统启动所依赖的文件)/usr(进行系统编程所用的头文件和Lib库) eg: /usr/include /usr/local/include /usr/l...

2019-09-19 11:30:51 122

原创 hash算法(HashMap中的应用)

哈希表数据结构:哈希表哈希表:通过关键码来映射到值的一个数据结构。哈希函数:键与值映射的一个映射关系;哈希:Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说...

2019-08-19 17:30:23 164

原创 JVM---垃圾回收机制

垃圾回收垃圾回收:JVM中如何将对象视为垃圾??1.那些内存需要回收?(对象是否可以被回收的两种经典算法: 引用计数法 和 可达性分析算法)2.什么时候回收? (堆的新生代、老年代、永久代的垃圾回收时机,MinorGC 和 FullGC)3.如何回收?(三种经典垃圾回收算法(标记清除算法、复制算法、标记整理算法)及分代收集算法 和 七种垃圾收集器)在JVM提供垃圾回收机制,将内存...

2019-08-15 23:20:03 163

原创 JVM(Java Virtual Machine)

JVM介绍区分JDK、JRE、JVMJDK,JRE,JVM:(1)JRE(JAVA Runtime Environment): java 运行环境java的平台,所有的java程序都在该平台下运行;(2)JDK(JAVA Development kit): java开发工具是程序开发者用来编译、调试java程序;jdk也是java程序,是需要在JRE上运行的,为了保证j...

2019-08-15 23:11:45 258

原创 三大排序算法(冒泡、选择、直接插入)

时间复杂度: 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 时间复杂度,在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的...

2019-08-15 16:38:42 793

原创 Java.util.Arrays

Java.util.Arrays java.util.Arrays类中提供了许多实用的方法,可用于数组的复制、排序等操作处理。以下是常用的方法和属性:Arrays.sort() 串行排序:源代码:public static void sort(int[] a, int fromIndex, int toIndex) { rangeCheck(a.length, fromInd...

2019-08-15 12:48:08 360

原创 集合---集合框架

集合框架 整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。Java 集合框架主要包括两种类型的容器。一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类...

2019-05-30 17:29:26 129

原创 网络---Linux提供的5种IO模型

阻塞IO实现:应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。在阻塞的过程中,其它应用进程还可以执行,因此阻塞不意味着整个操作系统都被阻塞,但是当前进程不能执行任何操作。效率:因为其它应用进程还可以执行,所以不消耗 CPU 时间,这种模型的 CPU 利用率会比较高。非阻塞IO实现:recvfrom重复调用等待返回成功指示,用户进程可以在这个时间...

2019-05-28 18:04:53 125

原创 网络---UDP通信

UDP用户数据报协议UDP协议报头UDP通信协议的特点:(1) 不可靠的数据传输,数据传输时不会进行事先连接和t释放。(2) UDP是无连接的,因此UDP服务端不需要等待客户端的请求以建立连接。(3) UDP服务器为所有通信使用同一套接字,这点与TCP服务器不同,TCP服务器则为每个成功返回的accept()方法创建一个新的套接字。UDP的通信建立的步骤:UDP客户端首先向被动...

2019-05-28 17:44:10 296

原创 网络---TCP通信的三次握手与四次挥手

TCP在传输之前会进行三次沟通,一般称为“三次握手”,传完数据断开的时候要进行四次沟通,一般称为“四次挥手”。两个序号和三个标志位:(1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。序列号。(2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。下一次要接收序列的起始位置。(3)标志位...

2019-05-28 17:01:32 176

原创 网络---TCP协议详解

TCP头部信息字段释义:头部一共32位。(1)源端口号以及目的端口号:各占2个字节,端口是传输层和应用层的服务接口,用于寻找发送端和接收端的进程, 一般来讲,通过端口号和IP地址,可以唯一确定一个TCP连接,在网络编程中,通常被称为一个socket接口。(2)序号:占4字节,用来标识从TCP发送端向TCP接收端发送的数据字节流(seq)。(3)确认序号:占4字节,包含发送确认的一端...

2019-05-28 16:30:26 226

原创 网络---TCP/IP、OSI模型

计算机网络计算机网络定义:通过传输介质、通信设施和通信协议,将分散在不同点的计算机设备互联起来实现资源共享和数据传输的系统。网络编程:编写程序使联网的两个或多个设备间直接进行传输。OSI :国际标准组织提出网络开放互联模型OSI(Open System Interconnection),并将其划分为7层,OSI:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。每一...

2019-05-28 15:57:09 113

原创 并发几个概念理解

并发同步和异步同步:可以理解为发出一个请求后,必须等待返回结果才能执行下面的操作。**异步:请求发出后,不需要等待返回结果,可以继续执行后续操作,**异步请求更像是在另一个 “空间” 中处理请求的结果,这个过程不会影响请求方的其他操作。举个例子:比如我们去实体店买衣服,挑选完款式后下单让售货员去仓库拿货,在售货员拿货的过程你需要在店里等待,直到售货员把衣服交给你后才算购物成功...

2019-05-27 23:42:18 343

原创 Number & Math 类、Character

Number & Math 类Number存在包:java.langpublic abstract class Number implements java.io.Serializable//Number类是java.lang包下的一个抽象类主要方法:方法:功能:abstract int intValue()以 int 形式返回指定的数值a...

2019-05-22 20:43:12 97

原创 线程---多线程轮训打印数据

标题

2019-05-14 11:50:02 261

原创 集合应用练习

1.某班级有 40 个学生,学号为 180201-180240,全部参加 Java 集合阶段检测,给出所有同学的成绩(可随机产生,范围为 50-100),请编写程序将本班各位同学成绩从高往低排序打印输出,注:成绩相同时学号较小的优先打印要求:打印的信息包含学号、姓名(姓名统一为“同学 J”[J=10,11,12。。。])和成绩。思路分析:1.随机产生所有同学的成绩:Math.random()...

2019-05-14 09:57:12 1213

原创 线程---死锁-哲学家进餐

哲学家进餐问题描述: 哲学家进餐问题描述有五个哲学家,他们的生活方式是交替地进行思考和进餐,哲学家们共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五支筷子,平时哲学家进行思考,饥饿时便试图取其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐,进餐完毕,放下筷子又继续思考。约束条件:(1)只有拿到两只筷子时,哲学家才能吃饭。(2)如果筷子已被别人拿走,则必须等别人吃完之后...

2019-05-09 12:02:49 492

原创 线程池---Executors类创建线程池

Executors静态工厂创建几种常用线程池Executors类:提供工厂方法用于创建线程池,返回的线程池都实现了ExecutorService接口;1.创建了一个固定线程数量的线程池,可以控制线程最大并发数,超出的线程会在队列中等待。它是一个典型且优秀的线程池,它具有线程池提高程序效率和节省创建线程时所耗的开销的优点。但是在线程池空闲时,即线程池中没有可运行任务时,它也不会释放工作线...

2019-05-08 16:47:10 399

原创 线程---线程池

线程池什么是线程池?线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后执行,主要实现:创建线程和管理线程,并且给线程分配任务。线程池中的线程是并发执行的。线程池的组成部分:一个比较简单的线程池至少应包含线程池管理器、工作线程、任务列队、任务接口等部分。其中线程池管理器的作用是创建、销毁并管理线程池,将工作线程放入线程池中;工作线程是一个可以循环执行任务的线...

2019-05-08 15:59:51 255

原创 线程---ThreadPoolExecutor

ThreadPoolExecutor源码剖析:存在包:package java.util.concurrent;继承关系:public class ThreadPoolExecutor extends AbstractExecutorService 基本属性:重要属性列举:/* * The main pool control state, ctl, is ...

2019-05-08 15:58:37 172

原创 线程---BlockingQueue

BlockingQueueBlockingQueue:ArrayBlockingQueue:有界阻塞队列LinkedBlockingQueue:无界阻塞队列SychronousQueue:同步阻塞队列ArrayBlockingQueue底层结构:数组 一把锁 /* * Concurren...

2019-05-03 17:16:47 111

原创 线程---死锁

死锁定义:死锁是指两个或者两个以上的线程在线程执行过程中,由于竞争资源而造成的阻塞问题,若无外力作用下,他们将无法推进下去。此时处于死锁状态。死锁产生的原因:1、因竞争资源产生死锁;2、进程顺序推进不当发生死锁;出现死锁的必要条件:1、互斥条件:资源每次只能一个线程使用; ------》资源2、请求与保持条件:一个线程因请求资源而阻塞时,对已经获取的资源保持不放; --...

2019-04-27 23:30:43 159

原创 线程---JDK1.8中ConcurrentHashMap对比1.7

1.8中ConcurentHashMap新增基本属性: /** * The bin count threshold for using a tree rather than list for a * bin. Bins are converted to trees when adding an element to a * bin with at least...

2019-04-27 22:46:15 167

原创 线程---ConcurrentHashMap

ConcurrentHashMap ConsurrntHashMap是线程安全且高效的HashMap。存在包:(1.7)java.util.concurrent包;继承关系:public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> implements ConcurrentMa...

2019-04-27 22:38:12 186

原创 线程---生产者消费者模型-synchronized实现

模拟生产者、消费者一个生产者、一个消费者、仓库容量为1,模拟生产者、消费者通信过程。思路:仓库:ArrayList,初始化大小为1。生产者:当仓库未满的情况下,进行生产,并通知消费者消费;当仓库是满的时候,等待消费者消费后的通知。消费者:当仓库中不为空的情况下,进行消费,并通知生产者生产;当仓库为空时,等待生产者生产后的通知。实现:public class Producer...

2019-04-25 20:34:27 159

原创 线程---重入锁(ReentrantLock)

标题

2019-04-25 13:16:30 238

空空如也

空空如也

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

TA关注的人

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