自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 MySQL锁分析之可重复读级别

一 可重复读和可已提交的隔离级别区别可重复读最主要的是解决了幻读的问题,幻读的解决是使用的GAP锁二 锁分析的主要内容2.1 使用主键进行等值查询(1)使用SELECT … LOCK IN SHARE MODE来为记录加锁SELECT * FROM hero WHERE number = 8 LOCK IN SHARE MODE;主键具有唯一性质,所以不存在幻读的问题,所以只需要添加一个行锁就行如果需要查询主键不存在的记录,比如说SELECT * FROM hero WHERE numbe

2020-06-26 00:43:54 1505

原创 MySQL锁分析读已提交级别下的锁分析

一 事前准备CREATE TABLE hero ( number INT, name VARCHAR(100), country varchar(100), PRIMARY KEY (number), KEY idx_name (name)) Engine=InnoDB CHARSET=utf8;建立一个表,其中人员编号是主建

2020-06-25 21:18:43 2482

原创 Java中的线程安全

当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的一 线程安全的实现方法互斥同步互斥同步(Mutual Exclusion & Synchronization)是一种最常见也是最主要的并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一条(或者是一些,当使用信号量的时候)线程使用.在Java里面,最基

2020-06-17 01:39:26 208

原创 JVM中类的加载机制

一 类加载的时机一个类被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载,验证,准备,解析,初始化,使用和卸载七个阶段对类必须进行初始化的几个操作1.new一个对象或者调用对象的静态方法时候2.反射调用时候3.对类初始化的时候,如果父类没有初始化,需要对父类进行初始化4.定义了JDK8新加入的默认方法,如果有这个接口实现类发生了初始化,那么这个接口需要在其之前被初始化,在一个类进行初始化的时候,要求弗雷...

2020-06-14 21:52:22 93

原创 锁的优化

减少锁持有时间public synchronized void syncMethod(){ othercode1(); mutextMethod(); othercode2();}上述代码中,只有第二个方法需要同步,所以需要将锁加载第二个方法中中去public void syncMethod2(){ othercode1(); synchronized(t

2017-10-02 13:21:44 200

原创 线程池的基本使用

简单线程池的实现ThreadPool实现package six;import java.util.List;import java.util.Vector;public class ThreadPool { private static ThreadPool instance = null; //空闲的线程队列 private List<Worker> idleThreads

2017-09-30 18:45:42 880

原创 JDK并发包委婉

ReentrantLock 重入锁 可中断 可限时: tryLock(等待的时间,时间的大小) 公平锁:ReentrantLock(boolean fair)Condition await(),线程等待 signal(),唤醒线程Semaphore() 允许多个线程同时进行操作package dayfirst;import java.util.concurrent

2017-09-30 13:51:27 351

原创 JAVA内存模型和线程安全

原子性 一个或者一组连续的操作,不可间断的。有序性 计算机真实执行代码的时候,不一定会按照书写的语序进行。 指定重排:不会破坏语义,但是可以使得流水线更加流畅。可见性问题 可见性指的当一个线程修改了某一个共享变量,其他线程能够立即知道这个修改。Happen-Before程序顺序原则 一个线程内保证语义的串行性 volatile规则 volatile变量的写,先发生于读锁

2017-09-29 22:05:11 299

原创 多线程基础

重排序对多线程的总结package ReorderExample;public class RecordExample { int a = 0; boolean flag = false; public void write() { a = 1; //1 flag = true; //2 } public void reader

2017-09-28 21:24:54 199

原创 Java反射总结

反射获取Class的对象的方法 Class类中的静态方法 Class.forName(类的全限定名) Class类包含: 子段:Field 成员方法:Method 构造方法:Constroctor利用构造方法构造对象 第一步:利用·Class,forName()方法得到Class对象 第二步:利用Class对象得到构造器对象Constructor对象 第三部:

2017-09-15 07:41:34 291

原创 注释的总结

DAO层@Parampackage Mapper; public interface Mapper { @Select("select s_id id,s_name name,class_id classid from student where s_name= #{aaaa} and class_id = #{bbbb}") public Student select(@Param(

2017-09-02 18:27:35 291

原创 字典树

字典树又叫做单词查找树,是一种树形结构,是一种哈希树的变种,典型应用于统计,排序,和保存大量的字符串,所以常被搜索引擎用于文本词的统计。它的优点是利用字符串的公共前缀来减少查询时间,最大限度的减少无谓的字符串比较,查询效率比哈希树高。性质它有三个基本性质根节点不包含字符除了根节点外的每一个节点都包含一个字符; 从根节点到某一个节点,路径上的字符连接起来,为该节点对应的字符串 每个节点的所有子节点

2017-09-02 16:10:26 296

转载 HashMap代码解析

Map先看一下jdk中map的定义public interface Map<K,V>{ int size(); boolean isEmpty(); boolean containsValue(Object value); V get(Object key); V put(K key, V value); void putAll(Map<? exten

2017-08-20 15:29:59 284

原创 Java常见的辅助函数使用

成员函数的使用Random 产生随机数的类构造方法: public Random();//没有给种子,用的是默认种子,当前时间的毫秒值 public Random(long seed);//给出指定的种子 给定种子后每次得到的随机数相同成员方法 public int nextInt();//返回的是int类型的随机数 public int nextInt(int n

2017-08-16 10:10:09 673

原创 java遇到的问题总结

编译错误 解决方式: http://blog.youkuaiyun.com/qq_27093465/article/details/52795186在IDEA中产生不能找到xml文件的方式解决方式一 在Resource文件中建立xml问价(这种方式测试没有成功) 解决方式二 在pom配置文件中添加如下 <resources> <resource>

2017-08-16 07:14:33 376

转载 Java集合框架

Java集合工具在Java.util包下,包含了很多常见的数据结构。可以分为List集合, Set集合,Map映射,迭代器和工具类(Arrays,Collections).Java集合的框架可以显示如下 从上图中可以看出,集合主要分为两大类:Collection和Map。Collection是List和Set高度抽象出来的接口,包含了这些集合的基本操作。List接口通常表示为一个列表(数组,队列等

2017-08-14 08:58:16 218

原创 水管工游戏

游戏规则 一块矩形土地被分隔N*M的单位正方形,现在这块土地上已经埋设一些水管,水管将从坐标(1,1)的矩形土地的左上角左部边缘,延伸到坐标(N,M)的矩形土地的右下角边缘。水管只有两种。一种弯的,一种直的。 每种管道将占据一个单位正方形土地。你现在可以旋转这些管道,使得其构成一个管道系统。标有树木的方格表示这里没有管道。 输入的第一行为两个整数N和M,接下来输入N行,每行有

2017-07-26 05:05:15 422

原创 广度优先搜索解决迷宫问题

依旧是用一个二维数组来存储这个迷宫。最开始的时候小哼在迷宫的(1,1)处,它可以往右走或者往下走。深度优先是一直往右(下)走,直到走不通的时候回到这里。可以使用下面的方法: 通过”一层一层”扩展的方法来找到小哈。扩展的时候发现一个点就将这个点加入到队列中,直到走到小哈的位置(p,q)停下。用一个结构体实现队列struct note{ int x;//横坐标 int y;//

2017-07-26 02:23:41 846

原创 迷宫问题

dfs应用深度优先搜索 迷宫由n行m列的单元格组成,每个单元格要么是空地,要么是障碍物 找一条最短路径。 分析:用一个二维数组存储这个迷宫。刚开始的时候,在(1,1), 目标在(p,q),找(1,1)到(p,q)的最短路径。刚开始在(1,1)只能向 下或者向右走。先往右走,知道走不同的时候回到这里,再去尝试另外一个方向。按照顺时针方式尝试。

2017-07-25 15:45:20 510

原创 基于二叉堆实现的优先队列和堆排序

堆的定义 在二叉堆数组中,每个元素都要保证大于等于另外两个特定位置的元素。堆有序:当一颗二叉树的节点都大于等于它的两个子节点的时候,被称为堆有序,根节点是堆有序 二叉树的最大节点。 二叉堆的定义 二叉堆是一组能够用堆有序的完全二叉树排序的元素,并且在数组中按照层级存储(不使用数组的第一个位置) 不使用数组第一个位置,即数组是开始从1放置元素。在一个堆中,位置为k的结点的父节点的

2017-07-19 02:30:24 357

原创 归并排序和快速排序

归并排序对一个数组进行原地归并的方法int[] aux = new int[a.length];public void merge(int[] a, int lo, int mid, int hi){ //将a[lo...mid]和a[mid+1..hi]归并 int i = lo, j = mid+1; for(int k = lo; k <= hi; k++){

2017-07-18 16:46:24 217

翻译 DFS的理解,从排列到组合

全排列问题全排列问题 输入数组{1,2,3}的全排列,我们将这个问题形象化。 假设手里有编号1,2,3的三个扑克牌,和1,2,3的三个盒子。需要将三个扑克牌分别放入这个三个盒子当中,并且每个盒子只有一个扑克牌可以放 首先来到一号盒子旁边,每一个都要放一编。约定一个顺序,到一个盒子面前,都先放1号,再放2号,最后放3号。在一号盒子里面放了编号1,来到二号只能放入编号2,3,按照约定只能放入编号

2017-06-24 20:51:45 1299

原创 计算机网络(1)

OSI参考模型 应用层:能和用户交互的应用程序 表示层:开发人员考虑的,对数据进行加密压缩,例如网页出现乱码,就是表示层出现问题 会话层:应用程序和客户端建立的会话 传输层:可靠传输,不可靠传输,流量控制 网络层:选择最佳路径 IP地址编址 数据链路层:数据如何封装,添加物理层地址,MAC 物理层:电压和接口标准 一个计算机可以有多个IP网络安全和OSI

2017-06-13 17:31:29 379

原创 lambda表达式

用途 用于传递代码块,在没有lambda表达式的时候,传递代码块必须通过构造对象传递。形式 参数,箭头,以及一个表达式 如果代码要完成计算其无法通过一个表达式完成,则需要加入{} 如果lambda表达式没有参数,但是其必须依旧提供(),就像是无参数方法 如果lambda表达式参数的类型可以推导出来,则可以省略参数类型 如果只有一个参数,且参数类型可以推导出来,则可以

2017-06-07 11:12:45 380

原创 事务和连接池总结

事物的概念: 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。 例如:A—-B转账,对应如下两条sql语句 update accoutn set money=money-100 where name=’b’ update account set money=money+10 where name=’a’数据库开启事务命令DTL start tr

2017-05-19 22:15:44 589

转载 MVC开发模式

JavaWeb开发模式JavaBean:就是一个普通类 MVC:Model模型 JavaBean四种作用域 V: view视图 JSP C:Controller控制器 Servlet分层思想 浏览器———>servlet———–>调用业务逻辑—–>DAO(DataAccess Object)数据访问对象等 Model是JavaBean,贯穿整个路线 Controller是控制器

2017-05-18 20:04:46 203

原创 JSP笔记

JSP概述jsp是用于开发动态资源网站的技术,相当于一个servletJSP的原理 当第一次访问jsp的时候。会将jsp翻译成为java代码,并且编译成为class文件,执行这个class文件,以后访问就直接执行class文件。JSP和Servlet的区别 JSP用于进行显示数据 Servlet是控制器,用于获取表单数据,逻辑处理和分发转向。JSP的基本语法 JSP的脚本:

2017-05-18 07:15:24 376

原创 会话

会话的特点: 多次请求,多次交互,直到关闭浏览器 解决的问题:每个客户端保存自己的数据 SevletContext,request和会话技术的区别: ServletContext的作用域是整个应用,不能区分浏览器。 request作为域对象,其值只能在一次请求中有效。有局限性,例如实现购买商品并且结账的功能中,要求必须买一个商品就结账。保存会话数据的两种技术。Cook

2017-05-17 15:30:13 368

原创 HttpServletResponse和HttpServletResquest

HttpServletRequest1、响应行 HTTP/1.1 200 OK setStatus(int sc) 设置响应状态码 2、响应头 * sendRedirect(String location) 请求重定向 setHeader(String name, String value) 设置响应头信息  //告知浏览器使用什么码表 response.setHeader

2017-05-16 17:02:43 440

原创 JDBC总结

一JDBC概述4为什么要使用JDBC? JDBC:Java database connectivity SUN公司提供的公司提供的一套操作数据库的标准规范JDBC规范(掌握四个核心对象) 1.DriverManager:用于注册驱动 2.Connection:表示与数据库创建的连接 3.Statement:操作数据裤sql语句的对象 4.ResultSet:结果集或一张虚拟表开发JDBC的

2017-05-16 00:40:49 322

原创 JavaScript笔记

JavaScriptJava个Java之间的区别 1所属于的公司不同 2.javascript是基于对象的语言,java是面向对象的语言。 3.javascript是解释型语言,Java是编译型语言 4.Javascript是弱类型语言,Java是强类型语言 Javascript中任何变量都可以用var去声明。 编写javascript代码的方式: 1.方式1:可以使用 <s

2017-05-14 16:59:24 436

原创 HTML总结

语法顶部<html><!-- 头信息的作用 1. 可以设置网页的标题。 2. 可以通知浏览使用指定的码表解释html页面. 3. --> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>这个是我的第一个网页</tit

2017-05-14 13:42:01 373

原创 JAVA总结

Java基础总结public class test { public static void main(String[] args){ String s = "aaaabbcaadgg"; StringBuffer sb = new StringBuffer(); sb.append(s); int[] array = new

2017-05-14 07:53:19 440

原创 哈希表

哈希表的相关概念常用的构造哈希函数的方法: 直接定值法:H(key) = key 除留余数法产生冲突的处理办法:链地址法,就是顺序表加链表的操作.采用链地址创建哈希表定义一个哈希表并且初始化typedef struct HashNode{ int data; //数据域 struct HashNode *link; //指针域}HashNode;typede

2017-04-23 20:40:59 305

原创 二叉排序树

概念二叉排序树是一种动态树表。特点是树的结构不是一次生成的,而是在查找的整个过程中,当树中不存在给定关键字等于给定的值的时候在进行插入。新插入的节点一定是一个新添加的用户的节点。方法实现定义节点信息typedef struct BSTNode{ T data; BSTNode *leftChild; BSTNode *rightChild;}BSTNode;插入节点BO

2017-04-19 16:08:08 479

原创 计算机传输层

传输层协议为运行在不同的Host进程提供了一种逻辑通信机制。 位于网路层之上依赖于网络层对网络层进行增强依赖于网络层服务 - - 网络层:提供主机之间的逻辑通信机制。传输层协议TCP:拥塞控制,流量控制,连接建立 UDP:基本基于网络层的服务。 计算机网络传输层的功能:多路复用 多路分用 多路复用:从多个·Socket接收数据,为每个数据封装上头部信息,生成Segment

2017-04-18 12:31:08 375

原创 树和森林的转换

树的存储之双亲表示法 特点:可以很简单的根据数组中的元素找到父亲节点,但是要找孩子节点就需要遍历整个二叉树。孩子表示法 节点存储的是其本身的值和孩子的位置信息。(同构) 或者节点存储其本身的值和孩子个数及孩子的位置信息(异构) 数组表示,每个数组的元素是一个链表。(孩子表示法)孩子兄弟法(重点) 讲森林转换成二叉树,左边是孩子节点,右边是兄弟节点。

2017-04-18 11:02:31 603

原创 Servlet总结

Servlet的生命周期实例化—>初始化—>服务—->销毁 实例化和初始化的时间:第一次访问就执行,且执行一次。 服务:应用活着,每次访问时候都会存在。 死亡:应用卸载,服务器停止的时候。 可以在web.xml中添加一句话数字使得加载的时候便初始化和实例化,数字表示优先级。越小优先级越高。Servlet的三种创建方式实现javax.servlet.Servlet接口继承javax,se

2017-04-17 22:02:22 325

原创 http协议总结

请求内容: GET /day09/hello HTTP/1.1 —请求行 Host: localhost:8080 –请求头(多个key-value对象) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0 Accept: text/htm

2017-04-17 18:16:47 448

原创 java问题总结

myEclipse启动不了tomcat 解决方法:在PATH路径中引入jar包。 链接:http://blog.youkuaiyun.com/u013380777/article/details/50350211

2017-04-17 14:51:20 195

空空如也

空空如也

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

TA关注的人

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