自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 host缓存,浏览器缓存---解决host缓存带来的伤

1.缓存 缓存,对应工程师来讲简直太熟悉了,太方便了,省略到资源或数据的获取方式,直接缓存到离用户访问最快的地方,也降低服务器的压力,比如:(1)静态文件获取服务器->cdn->本地磁盘->本地内存(2)数据获取数据库->内存型数据库(3)host 缓存主域名服务器->顶级域名服务器->根域名服务器->网络服务提...

2018-10-28 12:45:00 2226

转载 新手讲算法 快速排序

(1)选择一个数字 pivot,将数组分成两个数组 a,b。 a <= pivot, b >pivot(2)不停地递归,直到每个数组中只有一个数字,此时数组达到有序 疑问:怎么选择 基准:pivot (1)固定位置:开头 或 中间 或 结尾 (2)随机位置 (3)开头 + 中间 + 结尾 数字的平均值 一般为了均衡:我们...

2018-04-01 16:36:00 173

转载 新手讲算法 归并排序 之 逆序对

1. 归并排序要点:归并排序是建立在归并操作的一种有效的算法,该算法是采用 分治法 的典型应用。基本思想:(1)分解:将序列每次折半划分成两个数组,直到划分成每个元素一个数组(2)合并:将划分后的序列段两两合并后排序。2.逆数对问题在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求...

2017-12-17 16:44:00 185

转载 mysql in 中使用子查询,会不使用索引而走全表扫描

所以可以将 in 条件中 子查询转换成一张子表,从而通过 join 的形式进行条件限制。转载于:https://www.cnblogs.com/jijiji/p/8028472.html

2017-12-13 22:26:00 1343

转载 java集合之hashMap,初始长度,高并发死锁,java8 hashMap做的性能提升

众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。对于HashMap,我们最常使用的是两个方法:Get和Put。1.put方法的原理 比如调用 ...

2017-12-11 23:44:00 642

转载 简要了解web安全之sql注入

什么是sql注入? 通俗来讲就是通过 将可执行sql语句作为参数 传入查询sql 中,在sql编译过程中 执行了传入进来的恶意 sql,从而 得到 不应该查到或者不应该执行的sql语句,对网站安全,信息 造成了威胁。简单sql注入的几种情况1.第一种情况:闭合 where条件 的语句来进行 查询 不属于自己 的内容select * from accoun...

2017-11-26 23:30:00 100

转载 java之JVM学习--简单了解GC算法

JVM内存组成结构:(1)堆所有通过new创建的对象都是在堆中分配内存,其大小可以通过-Xmx和-Xms来控制,堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区。Survivor被划分为from space 和 to space组成,结构图如下:(2)栈每个线程 执行每个方法的时候都会在栈中申请一个栈帧,每个栈帧包含局部变量区和操作数栈...

2017-11-19 23:21:00 108

转载 java之JVM学习--简单理解编译和运行的过程之概览

java代码编译流程图:java字节码执行由JVM执行引擎完成Java代码编译和执行的整个过程包含了以下三个重要的机制:Java源码编译机制类加载机制类执行机制Java源码编译机制Java 源码编译由以下三个过程组成:分析和输入到符号表注解处理语义分析和生成class文件流程图如下所示:最后生成...

2017-11-19 11:37:00 61

转载 java之JVM学习--基本机构

JDK,JRE,JVM关系图JVM所处的位置:JVM物理结构:jvm内存区详解: 概括来说,JVM初始运行的时候都会分配好 方法区 和 堆,而JVM每遇到一个线程,就为其分配一个 程序计数器, 虚拟机栈,本地方法栈。 当线程终止时,三者所占用的内存空间也会被释放掉,非线程共享的那三个区域的生命周期和所属线程相同,线程共...

2017-11-19 10:51:00 77

转载 JDK,JRE,JVM 关系和概念

JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API包括rt.jar)。 最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发...

2017-11-18 18:21:00 108

转载 mac下JDK的安装路径

苹果系统已经包含完整的J2SE,其中就有JDK和JVM(苹果叫VM)。当然如果要升级JDK,那当然要自己下载安装了。 在MAC系统中,jdk的安装路径与windows不同,默认目录是:/System/Libray/Frameworks/JavaVM.Framwork/。 在这个目录下有个Versions目录,里面有不同版本的jdk。系统自带的...

2017-11-18 18:07:00 156

转载 面向对象之低耦合,高内聚

起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。 耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。 耦合性分类(低――高): 无直接耦合;...

2017-11-18 17:26:00 158

转载 java反射浅谈 part1--反射机制的定义,作用,原理

一.定义  在运行过程中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;还可以通过反射创建对象,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。二.能做什么1.在运行时判断任意一个对象所属的类2.在运行时构造任意一个类的对象3.在运行时判断任意一个类所具有的成员变量和方法4.运...

2017-06-14 22:48:00 65

转载 maven入门-- part6 聚合和继承,版本控制(用到了再总结)

等用到了再总结转载于:https://www.cnblogs.com/jijiji/p/6960151.html

2017-06-08 01:32:00 96

转载 maven入门-- part5 本地仓库,远程仓库,私服

解读Maven在仓库中的存储路径:1.基于groupId准备路径,将句点分隔符转成路径分隔符,就是将 "." 转换成 "/" ; example: org.testng --->org/testng2.基于artifactId准备路径,将artifactId连接到后面:org/testng/testng3.使用version准备路径,将version连接到后面:or...

2017-06-08 01:24:00 91

转载 maven入门-- part4 坐标和依赖

Maven的坐标为各种构件引入了秩序,任何一个构件都必须明确的定义自己的坐标,maven的坐标包括如下的元素:groupId: 定义当前Maven项目隶属的实际项目artifactId: 该元素定义实际项目中的一个Maven项目或模块version: 该元素定义Maven项目当前所处的版本packaging: 该元素定义Maven项目的打包方式classifier: ...

2017-06-08 00:43:00 107

转载 maven入门-- part3 生命周期

简介:Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。Site Lifecycle 生成项目报告,站点,发布站点。Clean:每套生命周期都由一组阶段(P...

2017-06-07 23:41:00 61

转载 maven入门--part2 安装

Maven安装和配置(1)下载安装文件apache-maven-3.03-bin.tar(2)解压至安装目录,安装完毕(3)修改.bash_profile,修改maven安装路径,修改构建GC配置参数vim ~/.bash_profile***********************************************export MAVEN...

2017-06-07 22:24:00 98

转载 maven入门-- part1 简介

Maven是什么  maven是基于项目对象模型(pom:project object model),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具。对依赖关系的特性进行细致的分析和划分,避免开发过程中的依赖混乱和相互污染的行为。Maven生命周期  maven把项目的构建划分为不同的生命周期,粗略来看包括:编译,测试,打包,集成测试,验证,部署。ma...

2017-06-05 09:31:00 61

转载 java开发环境构建

一. 基本工具安装1. 配置终端命令别名vim ~/.bash_profile***********************************************# for colorexport CLICOLOR=1alias l='ls -CF'alias ll='ls -l'alias la='ls -al'***...

2017-06-04 09:25:00 73

转载 GO语言语法入门

引言GoGo语言是谷歌2009发布的编程语言,它是一种并发的、带垃圾回收的、快速编译的语言。它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了...

2017-06-04 09:03:00 142

转载 [转自SA]浅谈nginx的工作原理和使用

nginx apache 简单对比nginx 相对 apache 的优点:轻量级,同样起web 服务,比apache 占用更少的内存及资源抗并发,nginx 处理请求是异步非阻塞的,而 apache 则是阻塞型的,在高并发下 nginx 能保持低资源低消耗高性能高度模块化的设计,编写模块相对简单社区活跃配置简洁apache 相对nginx 的优点:...

2017-06-04 09:00:00 69

转载 多线程编程-- part 9 信号量:Semaphore

Semaphore简介  Semaphore是一个计数信号量,它的本质是一个"共享锁"。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。  Semaphore是通过共享锁实现的。根据共享...

2017-06-01 17:43:00 100

转载 多线程编程-- part 8 CyclicBarrier

CyclicBarrier简介  cuclicBarrier允许一组线程互相等待,直到到达某个公共屏障点(common barrier point)。因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。CyclicBarrier函数列表CyclicBarrier(int parties)创建一个新的 CyclicBarrier,它将在给定数量...

2017-06-01 17:00:00 128

转载 多线程编程-- part 7 CountDownLatch

CountDownLatch简介  CountDownLatch是通过“共享锁”实现的。在创建CountDownLatch中时,会传递一个int类型参数count,该参数是“锁计数器”的初始状态,表示该“共享锁”最多能被count给线程同时获取。当某线程调用该CountDownLatch对象的await()方法时,该线程会等待“共享锁”可用时,才能获取“共享锁”进而继续运行。而“共享...

2017-06-01 16:12:00 91

转载 多线程编程-- part 6 共享锁和ReentrantReadWriteLock

介绍:  ReadWriteLock,顾名思义,是读写锁。它维护了一对相关的锁 — — “读取锁”和“写入锁”,一个用于读取操作,另一个用于写入操作。(1)“读取锁”用于只读操作,它是“共享锁”,能同时被多个线程获取。(2)“写入锁”用于写入操作,它是“独占锁”,写入锁只能被一个线程锁获取。(3)注意:不能同时存在读取锁和写入锁!  ReadWriteLock是一个接口。Reentr...

2017-06-01 09:42:00 79

转载 多线程编程-- part 5.3 LockSupport

一.LockSupport的介绍  LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。  LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题。因为park() 和 unpark()有...

2017-06-01 09:04:00 84

转载 多线程编程-- part 5.2 JUC锁之Condition条件

1.Condition介绍  Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。不同的是,Object中...

2017-05-31 10:27:00 68

转载 多线程编程-- part5.1 互斥锁之非公平锁-获取与释放

非公平锁之获取锁  非公平锁和公平锁在获取锁的方法上,流程是一样的;它们的区别主要表现在“尝试获取锁的机制不同”。简单点说,“公平锁”在每次尝试获取锁时,都是采用公平策略(根据等待队列依次排序等待);而“非公平锁”在每次尝试获取锁时,都是采用的非公平策略(无视等待队列,直接尝试获取锁,如果锁是空闲的,即可获取状态,则获取锁)。1.lock()lock()在ReentrantL...

2017-05-31 09:28:00 94

转载 多线程编程-- part5.1 互斥锁之公平锁-释放锁

释放公平锁1.unlock()unlock()在ReentrantLock.java中实现的,源码如下:public void unlock() { sync.release(1);}说明:unlock()是解锁函数,它是通过AQS的release()函数来实现的。在这里,“1”的含义和“获取锁的函数acquire(1)的含义”一样,它是设置“释放锁...

2017-05-31 08:23:00 76

转载 多线程编程-- part5.1 互斥锁之公平锁-获取锁

基本概念1.AQS:AbstractQueuedSynchronizer类  AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。(01)独占锁-- 锁在一个时间点只能被一个线程锁占有。根据锁的获取机制,它又划分为“公平锁”和“非公平锁”。公平锁,是按照...

2017-05-31 08:10:00 89

转载 多线程编程-- part5.1 互斥锁ReentrantLock

ReentrantLock简介  Reentrantlock是一个可重入的互斥锁,又被称为独占锁。  Reentrantlock:分为公平锁和非公平锁,它们的区别体现在获取锁的机制上是否公平。“锁”是为了保护竞争资源,防止多个线程同时操作线程而出错,ReentrantLock在同一个时间点只能被一个线程获取(当某线程获取到“锁”时,其它线程就必须等待);ReentraantLoc...

2017-05-30 23:03:00 84

转载 多线程编程-- part5 锁的种类以及辨析

java中的锁,可以分为同步锁和JUC包中的锁。同步锁  通过synchronized关键字进行同步,实现对竞争资源的互斥访问的锁,。  原理:对于每一个对象,有且只有一个同步锁,在同一时间点,所有的线程中有且只有一个能获取该同步锁,获取到同步锁的就可以被CPU进行调度,其他线程必须等待,直到获取到同步锁之后才能继续运行,这就是多线程通过同步锁进行同步的原理。JUC包中的...

2017-05-30 21:13:00 70

转载 多线程编程-- part 4 线程间的通信

线程间的相互作用  线程之间需要一些协调通信,来共同完成一件任务。  Object类相关的方法:notify(),notifyAll(),wait()。会被所有的类继承,这些方法是final不能被重写。他们操控的是每个对象都会有的锁,如果不在synchronized里面调用wait,notify,notifyAll方法,运行时会报异常:要调用对象的这些方法,必须先获得这个对象的锁...

2017-05-25 19:37:00 132

转载 多线程编程-- part 3 多线程同步->synchronized关键字

多线程同时访问一个资源,可以会产生不可预料的结果,所以为这个资源加锁,访问资源的第一个线程为其加锁后,其他线程便不能在使用那个资源,直到锁被解除。举个例子: 存款1000元,能取出800的时候我就取800,当我同时用两个线程调用这个取钱操作时,有时可以取出1600元static class HelloRunable implements Runnable{...

2017-05-24 20:05:00 69

转载 多线程编程-- part 2 线程的生命周期和优先级

线程的创建到消亡的历程:java多线程的5种状态:(1)New(新建)  new Thread(run()) 该线程还没开始运行,状态是new,在程序运行前还有一些基础工作要做(2)runnable(就绪)  一旦调用start()方法,线程就处于runnable状态,可运行的线程可能正在运行,也可能没有运行,取决于操作系统给线程的时间片,放在可运行线程池中...

2017-05-24 14:54:00 52

转载 多线程学习-- part 1 Thread

一.Thread的使用(1)sleep:进程等一会(2)join:让并发处理变成串行(3)start:启动线程的唯一方法,start()首先为线程分配必须的系统资源,调度线程运行并执行线程的run()方法(4)run:放入的是线程的工作public class HelloWord { public static void main(String[]...

2017-05-23 11:11:00 76

转载 多线程学习---简单了解下

简单了解下多任务相关多任务 不管是单核还是多核CPU,一单任务数量超过核数,OS都会把每个任务轮流调度到每个核心上,OS实现多线程和多进程往往都是通过时间片的形式执行的,即:每个任务(进程/线程)轮流执行,因为时间片切分的很小,以至于我们感觉多个任务在同时执行。 实现多任务方式:多进程模式,多线程模式,多进程+多线程模式  进程是资源分配的最小单位...

2017-05-23 09:50:00 55

转载 深入简出mysql--第一部分

第二章:1.sql分类DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、...

2017-05-22 19:59:00 76

转载 Spring MVC 请求处理流程概览

SpringMVC工作流程图一:请求流程概述图二:请求在每个组件的处理解释Spring工作流程1.用户向服务器发送请求,请求被spring前端控制Servelt DispatcherServelt捕获2.DispatcherServelt解析URL得到URI(资源标识符),根据URI找到对应的要处理的Handler和相关对象(包括handler和对应的拦截器)...

2017-05-22 19:53:00 83

空空如也

空空如也

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

TA关注的人

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