- 博客(88)
- 收藏
- 关注
转载 host缓存,浏览器缓存---解决host缓存带来的伤
1.缓存 缓存,对应工程师来讲简直太熟悉了,太方便了,省略到资源或数据的获取方式,直接缓存到离用户访问最快的地方,也降低服务器的压力,比如:(1)静态文件获取服务器->cdn->本地磁盘->本地内存(2)数据获取数据库->内存型数据库(3)host 缓存主域名服务器->顶级域名服务器->根域名服务器->网络服务提...
2018-10-28 12:45:00
2308
转载 新手讲算法 快速排序
(1)选择一个数字 pivot,将数组分成两个数组 a,b。 a <= pivot, b >pivot(2)不停地递归,直到每个数组中只有一个数字,此时数组达到有序 疑问:怎么选择 基准:pivot (1)固定位置:开头 或 中间 或 结尾 (2)随机位置 (3)开头 + 中间 + 结尾 数字的平均值 一般为了均衡:我们...
2018-04-01 16:36:00
215
转载 新手讲算法 归并排序 之 逆序对
1. 归并排序要点:归并排序是建立在归并操作的一种有效的算法,该算法是采用 分治法 的典型应用。基本思想:(1)分解:将序列每次折半划分成两个数组,直到划分成每个元素一个数组(2)合并:将划分后的序列段两两合并后排序。2.逆数对问题在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求...
2017-12-17 16:44:00
232
转载 mysql in 中使用子查询,会不使用索引而走全表扫描
所以可以将 in 条件中 子查询转换成一张子表,从而通过 join 的形式进行条件限制。转载于:https://www.cnblogs.com/jijiji/p/8028472.html
2017-12-13 22:26:00
1389
转载 java集合之hashMap,初始长度,高并发死锁,java8 hashMap做的性能提升
众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。对于HashMap,我们最常使用的是两个方法:Get和Put。1.put方法的原理 比如调用 ...
2017-12-11 23:44:00
1049
转载 简要了解web安全之sql注入
什么是sql注入? 通俗来讲就是通过 将可执行sql语句作为参数 传入查询sql 中,在sql编译过程中 执行了传入进来的恶意 sql,从而 得到 不应该查到或者不应该执行的sql语句,对网站安全,信息 造成了威胁。简单sql注入的几种情况1.第一种情况:闭合 where条件 的语句来进行 查询 不属于自己 的内容select * from accoun...
2017-11-26 23:30:00
136
转载 java之JVM学习--简单了解GC算法
JVM内存组成结构:(1)堆所有通过new创建的对象都是在堆中分配内存,其大小可以通过-Xmx和-Xms来控制,堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区。Survivor被划分为from space 和 to space组成,结构图如下:(2)栈每个线程 执行每个方法的时候都会在栈中申请一个栈帧,每个栈帧包含局部变量区和操作数栈...
2017-11-19 23:21:00
137
转载 java之JVM学习--简单理解编译和运行的过程之概览
java代码编译流程图:java字节码执行由JVM执行引擎完成Java代码编译和执行的整个过程包含了以下三个重要的机制:Java源码编译机制类加载机制类执行机制Java源码编译机制Java 源码编译由以下三个过程组成:分析和输入到符号表注解处理语义分析和生成class文件流程图如下所示:最后生成...
2017-11-19 11:37:00
79
转载 java之JVM学习--基本机构
JDK,JRE,JVM关系图JVM所处的位置:JVM物理结构:jvm内存区详解: 概括来说,JVM初始运行的时候都会分配好 方法区 和 堆,而JVM每遇到一个线程,就为其分配一个 程序计数器, 虚拟机栈,本地方法栈。 当线程终止时,三者所占用的内存空间也会被释放掉,非线程共享的那三个区域的生命周期和所属线程相同,线程共...
2017-11-19 10:51:00
93
转载 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
126
转载 mac下JDK的安装路径
苹果系统已经包含完整的J2SE,其中就有JDK和JVM(苹果叫VM)。当然如果要升级JDK,那当然要自己下载安装了。 在MAC系统中,jdk的安装路径与windows不同,默认目录是:/System/Libray/Frameworks/JavaVM.Framwork/。 在这个目录下有个Versions目录,里面有不同版本的jdk。系统自带的...
2017-11-18 18:07:00
187
转载 面向对象之低耦合,高内聚
起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。 耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。 耦合性分类(低――高): 无直接耦合;...
2017-11-18 17:26:00
184
转载 java反射浅谈 part1--反射机制的定义,作用,原理
一.定义 在运行过程中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;还可以通过反射创建对象,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。二.能做什么1.在运行时判断任意一个对象所属的类2.在运行时构造任意一个类的对象3.在运行时判断任意一个类所具有的成员变量和方法4.运...
2017-06-14 22:48:00
80
转载 maven入门-- part6 聚合和继承,版本控制(用到了再总结)
等用到了再总结转载于:https://www.cnblogs.com/jijiji/p/6960151.html
2017-06-08 01:32:00
119
转载 maven入门-- part5 本地仓库,远程仓库,私服
解读Maven在仓库中的存储路径:1.基于groupId准备路径,将句点分隔符转成路径分隔符,就是将 "." 转换成 "/" ; example: org.testng --->org/testng2.基于artifactId准备路径,将artifactId连接到后面:org/testng/testng3.使用version准备路径,将version连接到后面:or...
2017-06-08 01:24:00
114
转载 maven入门-- part4 坐标和依赖
Maven的坐标为各种构件引入了秩序,任何一个构件都必须明确的定义自己的坐标,maven的坐标包括如下的元素:groupId: 定义当前Maven项目隶属的实际项目artifactId: 该元素定义实际项目中的一个Maven项目或模块version: 该元素定义Maven项目当前所处的版本packaging: 该元素定义Maven项目的打包方式classifier: ...
2017-06-08 00:43:00
128
转载 maven入门-- part3 生命周期
简介:Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。Site Lifecycle 生成项目报告,站点,发布站点。Clean:每套生命周期都由一组阶段(P...
2017-06-07 23:41:00
80
转载 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
118
转载 maven入门-- part1 简介
Maven是什么 maven是基于项目对象模型(pom:project object model),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具。对依赖关系的特性进行细致的分析和划分,避免开发过程中的依赖混乱和相互污染的行为。Maven生命周期 maven把项目的构建划分为不同的生命周期,粗略来看包括:编译,测试,打包,集成测试,验证,部署。ma...
2017-06-05 09:31:00
77
转载 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
83
转载 GO语言语法入门
引言GoGo语言是谷歌2009发布的编程语言,它是一种并发的、带垃圾回收的、快速编译的语言。它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了...
2017-06-04 09:03:00
165
转载 [转自SA]浅谈nginx的工作原理和使用
nginx apache 简单对比nginx 相对 apache 的优点:轻量级,同样起web 服务,比apache 占用更少的内存及资源抗并发,nginx 处理请求是异步非阻塞的,而 apache 则是阻塞型的,在高并发下 nginx 能保持低资源低消耗高性能高度模块化的设计,编写模块相对简单社区活跃配置简洁apache 相对nginx 的优点:...
2017-06-04 09:00:00
91
转载 多线程编程-- part 9 信号量:Semaphore
Semaphore简介 Semaphore是一个计数信号量,它的本质是一个"共享锁"。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。 Semaphore是通过共享锁实现的。根据共享...
2017-06-01 17:43:00
128
转载 多线程编程-- part 8 CyclicBarrier
CyclicBarrier简介 cuclicBarrier允许一组线程互相等待,直到到达某个公共屏障点(common barrier point)。因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。CyclicBarrier函数列表CyclicBarrier(int parties)创建一个新的 CyclicBarrier,它将在给定数量...
2017-06-01 17:00:00
170
转载 多线程编程-- part 7 CountDownLatch
CountDownLatch简介 CountDownLatch是通过“共享锁”实现的。在创建CountDownLatch中时,会传递一个int类型参数count,该参数是“锁计数器”的初始状态,表示该“共享锁”最多能被count给线程同时获取。当某线程调用该CountDownLatch对象的await()方法时,该线程会等待“共享锁”可用时,才能获取“共享锁”进而继续运行。而“共享...
2017-06-01 16:12:00
107
转载 多线程编程-- part 6 共享锁和ReentrantReadWriteLock
介绍: ReadWriteLock,顾名思义,是读写锁。它维护了一对相关的锁 — — “读取锁”和“写入锁”,一个用于读取操作,另一个用于写入操作。(1)“读取锁”用于只读操作,它是“共享锁”,能同时被多个线程获取。(2)“写入锁”用于写入操作,它是“独占锁”,写入锁只能被一个线程锁获取。(3)注意:不能同时存在读取锁和写入锁! ReadWriteLock是一个接口。Reentr...
2017-06-01 09:42:00
89
转载 多线程编程-- part 5.3 LockSupport
一.LockSupport的介绍 LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题。因为park() 和 unpark()有...
2017-06-01 09:04:00
106
转载 多线程编程-- 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
80
转载 多线程编程-- part5.1 互斥锁之非公平锁-获取与释放
非公平锁之获取锁 非公平锁和公平锁在获取锁的方法上,流程是一样的;它们的区别主要表现在“尝试获取锁的机制不同”。简单点说,“公平锁”在每次尝试获取锁时,都是采用公平策略(根据等待队列依次排序等待);而“非公平锁”在每次尝试获取锁时,都是采用的非公平策略(无视等待队列,直接尝试获取锁,如果锁是空闲的,即可获取状态,则获取锁)。1.lock()lock()在ReentrantL...
2017-05-31 09:28:00
111
转载 多线程编程-- 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
89
转载 多线程编程-- part5.1 互斥锁之公平锁-获取锁
基本概念1.AQS:AbstractQueuedSynchronizer类 AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。(01)独占锁-- 锁在一个时间点只能被一个线程锁占有。根据锁的获取机制,它又划分为“公平锁”和“非公平锁”。公平锁,是按照...
2017-05-31 08:10:00
101
转载 多线程编程-- part5.1 互斥锁ReentrantLock
ReentrantLock简介 Reentrantlock是一个可重入的互斥锁,又被称为独占锁。 Reentrantlock:分为公平锁和非公平锁,它们的区别体现在获取锁的机制上是否公平。“锁”是为了保护竞争资源,防止多个线程同时操作线程而出错,ReentrantLock在同一个时间点只能被一个线程获取(当某线程获取到“锁”时,其它线程就必须等待);ReentraantLoc...
2017-05-30 23:03:00
97
转载 多线程编程-- part5 锁的种类以及辨析
java中的锁,可以分为同步锁和JUC包中的锁。同步锁 通过synchronized关键字进行同步,实现对竞争资源的互斥访问的锁,。 原理:对于每一个对象,有且只有一个同步锁,在同一时间点,所有的线程中有且只有一个能获取该同步锁,获取到同步锁的就可以被CPU进行调度,其他线程必须等待,直到获取到同步锁之后才能继续运行,这就是多线程通过同步锁进行同步的原理。JUC包中的...
2017-05-30 21:13:00
92
转载 多线程编程-- part 4 线程间的通信
线程间的相互作用 线程之间需要一些协调通信,来共同完成一件任务。 Object类相关的方法:notify(),notifyAll(),wait()。会被所有的类继承,这些方法是final不能被重写。他们操控的是每个对象都会有的锁,如果不在synchronized里面调用wait,notify,notifyAll方法,运行时会报异常:要调用对象的这些方法,必须先获得这个对象的锁...
2017-05-25 19:37:00
157
转载 多线程编程-- part 3 多线程同步->synchronized关键字
多线程同时访问一个资源,可以会产生不可预料的结果,所以为这个资源加锁,访问资源的第一个线程为其加锁后,其他线程便不能在使用那个资源,直到锁被解除。举个例子: 存款1000元,能取出800的时候我就取800,当我同时用两个线程调用这个取钱操作时,有时可以取出1600元static class HelloRunable implements Runnable{...
2017-05-24 20:05:00
82
转载 多线程编程-- part 2 线程的生命周期和优先级
线程的创建到消亡的历程:java多线程的5种状态:(1)New(新建) new Thread(run()) 该线程还没开始运行,状态是new,在程序运行前还有一些基础工作要做(2)runnable(就绪) 一旦调用start()方法,线程就处于runnable状态,可运行的线程可能正在运行,也可能没有运行,取决于操作系统给线程的时间片,放在可运行线程池中...
2017-05-24 14:54:00
62
转载 多线程学习-- 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
84
转载 多线程学习---简单了解下
简单了解下多任务相关多任务 不管是单核还是多核CPU,一单任务数量超过核数,OS都会把每个任务轮流调度到每个核心上,OS实现多线程和多进程往往都是通过时间片的形式执行的,即:每个任务(进程/线程)轮流执行,因为时间片切分的很小,以至于我们感觉多个任务在同时执行。 实现多任务方式:多进程模式,多线程模式,多进程+多线程模式 进程是资源分配的最小单位...
2017-05-23 09:50:00
65
转载 深入简出mysql--第一部分
第二章:1.sql分类DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、...
2017-05-22 19:59:00
94
转载 Spring MVC 请求处理流程概览
SpringMVC工作流程图一:请求流程概述图二:请求在每个组件的处理解释Spring工作流程1.用户向服务器发送请求,请求被spring前端控制Servelt DispatcherServelt捕获2.DispatcherServelt解析URL得到URI(资源标识符),根据URI找到对应的要处理的Handler和相关对象(包括handler和对应的拦截器)...
2017-05-22 19:53:00
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人