自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Heqianqian的博客

盛年不再有,一日难再晨,及时当勉励,岁月不待人.

  • 博客(42)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 数据库 脏读、不可重复读和幻读的区别

1.脏读 读取另外一个事务没有提交的数据 解决方法: 把事务的隔离级别调整到READ_COMMITTED2.不可重复读 同一个事务中 两个相同的查询返回了不同的结果 在一个事务A第一次读取之后 另一个事务B对数据进行了修改并且在A之前提交 此时A第二次读取的数据和第一次不同 解决方法: 把数据库的事务隔离级别调整到REPEATAB

2017-08-31 19:33:44 471

原创 MySQL 触发器的使用

MySQL 触发器trigger触发器: 监视某种情况并且触发某种操作触发器创建语法的四要素:1. 监视地点 table2. 监视事件 insert/update/delete3. 触发时间 after/before4. 触发事件 insert/update/delete语法:create trigger triggerNameafter/before insert/update/del

2017-08-31 17:52:03 461

原创 C++ 虚函数和纯虚函数的区别

虚函数和纯虚函数的区别:虚函数有代码体,纯虚函数没有,必须有子类实现想要实现多态必须使用虚函数内存泄露问题 父类引用指向子类对象 使用该引用调用虚函数的时候运行的是子类对象的虚函数 而销毁对象的时候只会调用父类对象的析构函数 造成内存泄露的问题 因此需要引入虚析构函数虚析构函数:使用virtual修饰的析构函数 这样父类引用指向的是哪个对象 哪个对象的析构函数就会先执行 执行完

2017-08-31 17:05:43 405

原创 MySQL 锁机制

锁是计算机协调多个进程或者线程并发访问某一资源的机制,在数据库中,除了传统的计算资源[CPU,RAM,I/O等]争用以外,数据也是许多用户共享的资源,如何保证数据的一致性和有效性也是一个值得考虑的问题。MySQL中的锁机制比较简单,主要是不同的存储引擎支持不同的锁机制MyISAM和MEMORY采用的是表级锁[table-level locking]BDB支持的是页面锁 也支持表级锁InnoDB

2017-08-31 15:47:52 461

转载 数据库原理 数据库组件概况

一 时间复杂度二 归并排序合并拆分阶段排序阶段三 阵列树和哈希表阵列树和数据库索引哈希表一. 时间复杂度时间复杂度用来检验某个算法处理一定量的数据要花多长时间。这个表示法用一个函数来描述算法处理给定的数据需要多少次运算。重要的不是数据量,而是当数据量增加时运算如何增加。时间复杂度不会给出确切的运算次数,但是给出的是一种理念。图中可以看到不同类型的复杂度的演变过程,我用了对数尺来建这个

2017-08-31 11:05:20 2053

转载 数据库原理 数据库全局概览

一核心组件客户端管理器二查询管理器查询解析器查询重写器统计查询优化器索引存取路径联接运算符查询执行器三数据管理器缓存管理器1 预读2 缓冲区置换策略事务管理器ACID属性隔离级别并发控制锁管理器数据版本控制乐观锁日志管理器WAL 预写式日志ARIES 数据库恢复原型算法可以看到上图将数据库分为四个模块,分别是核心组件,查询管理器,数据管理器和工具类核心

2017-08-31 10:45:39 1127

原创 Mybatis 获取不到接口参数问题

问题描述:持久层使用Dao接口+实现类,在实现类里通过sqlSession调用selectXXX方法获取数据的时候未报错但是取到的数据一直为空后面经过测试发现原因是mapper映射文件中的sql语句无法获取参数,之前使用的是#{参数名}无效,想到在参数上添加注解@Param(参数名)无效,换成#{占位符}依然无效。最后发现原因是因为使用了接口的实现类,mybatis就无法获取属性了[具体原因还不清楚

2017-08-24 23:45:17 5843

转载 OSI 七层模型详解

简介交换机和路由器的区别集线器与路由器在功能上的不同物理层数据链路层网络层传输层会话层表示层应用层小结简介OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。 完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。 一个设备工作在哪一层,关键看它工作时

2017-08-24 09:03:15 410

原创 算法 递归和循环的转换

【直接转化 】 消除尾递归和单向递归 1. 尾递归 指在递归算法中递归调用语句只有一个 且处于算法的最后private static int factorialByRecurision(int num) { if (num == 1) { return 1; } return num * factorialByRecur

2017-08-23 15:31:45 2495

转载 C++ 内联函数

内联函数内联函数和宏将内联函数放入头文件定义在类声明之中的成员函数将自动地成为内联函数慎用内联1.内联函数在C++中我们通常定义以下函数来求两个整数的最大值:int max(int a, int b){ return a > b ? a : b;}为这么一个小的操作定义一个函数的好处有:① 阅读和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多② 如

2017-08-22 15:46:54 640

原创 操作系统 大端和小端(Big endian and Little endian)

昨天在牛客刷到的一道题如果在地址a存储的整形值时0x04030201,那么地址为a+3的字节内存储的值在big-endian和little-endian结构下的值分别是?endian这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。我们一般将endian

2017-08-22 09:45:45 1491

转载 TCP/IP 三次握手建立连接和四次挥手释放连接

1. TCP 连接的建立设主机B运行一个服务器进程,它先发出一个被动打开命令,告诉它的TCP要准备接受客户端进程的连续请求,然后服务进程就处于监听状态,不断检测是否有客户进程发起连续请求,如果有,做出响应。设客户进程运行在主机A上,先向自己的TCP发出主动打开的命令,表明要向某个IP地址的某个端口建立运输连接1) 主机A的TCP向主机B的TCP发出连接请求报文段,首部的同步为SYN置为1,并选择一个

2017-08-22 09:28:30 874

原创 IDEA Maven搭建的Web项目出现ClassNotFoundException

问题描述:Maven搭建的JavaWeb项目jsp+servlet, 用fastjson解析json的时候居然出现ClassNotFoundExcpetion:com/fastjson/JSON。但是奇怪的是Maven中有添加fastjson的依赖,后台测试解析数据是没问题的,但是只要一起tomcat就报错。原因:jar包并没有添加到web-inf/lib目录下 打开Project Structur

2017-08-21 14:45:32 3450 1

原创 剑指Offer LevelTraversalTree 层序遍历二叉树

题目描述:从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印。思路:1.循环+队列 每次扫描本层的所有节点放入队列 再从队头读取一个节点继续遍历子节点 public static void printByLoop(BinaryTreeNode root) { Queue<BinaryTreeNode> queue = new LinkedBlockingQueue

2017-08-21 13:52:59 855

原创 剑指Offer MergeOrderedList 合并两个排序的链表

题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的思路: 递归扫描两个数组 每次将next指针指向连个链表中当前节点的较小值public static ListNode mergeOrderedList(ListNode list1, ListNode list2) { if (list1 == null){ return

2017-08-18 17:32:12 681

原创 剑指Offer ReverseList 反转列表

题目描述:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。递归实现/** * 递归实现链表反转 从尾部开始处理 */ public static ListNode reverseListByRecursion(ListNode head) { ListNode prev = null; if (head == nul

2017-08-18 17:27:52 745

原创 剑指Offer CalCarryBit 计算进位个数

题目描述:计算两个整数相加时需要进行多少次进位 假设输入的整数都不超过9个数字思路:使用一个变量carry保存进位,一个变量count保存相加次数,每次将两个数的个位进行相加,大于10则count自增,注意每次将数和10取余就可以取到个位的数方法一: public static int calCarryNum(int num1, int num2) { if (num1 ==

2017-08-18 17:25:56 1127

原创 剑指Offer AccurateFactorial 计算精确的阶乘

题目描述:输入不超过1000的正整数n,输入n!=1*2*3..*n的精确结果思路: 初步计算1000!大概是4*10^2567 所以基本数据类型是无法保存这么大的数的 我们可以考虑使用数组保存 同时为了防止进位产生溢出 我们倒序从低位到高位保存,即f[0]是个位 f[1]是十位 f[2]是百位..public class AccurateFactorial { private static

2017-08-18 17:20:22 798

原创 剑指Offer FindNumberMoreThanHalf 找出数组中出现次数超过一半的数字

题目描述:数组中有一个数字出现次数【超过 不会等于】数组长度的一半,请找出这个数字思路:先对数组进行排序,出现次数超过一半的数组元素一定是该数组的中位数 这里使用效率比较好的双指针快排/** * 基于快排算法 */ public static int findNumberBySort(int[] array) { if (array == null

2017-08-18 17:05:32 748

原创 剑指Offer RotateArray 旋转数组的最小数字

题目描述:把一个数组最开始的若干个元素搬到数组的末尾 我们称之为数组的旋转 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素思路: 分析旋转数组的特点,例如{3,4,5,1,2},因为是旋转数组,因此不存在数组整个是递增序列。 最小元素的左边的是比它大的数且依次递增,右边同样的是比它大的递增序列,因此可以使用二分查找,三个指针分别指向首元素、尾元素和中间元素。当中间元素大于数组首元素

2017-08-18 16:53:34 477

原创 剑指Offer TurnOnLight 开灯问题

题目描述:有n盏灯,编号1-n.第1个人把所有的灯打开,第2个人按下所有编号为2的倍数的开关,第3个人关掉3的倍数的开关 依次类推 一共k个人 问最后哪些灯开着 /** * 输出开着的灯编号[从1开始] * * @param n 灯的总数 * @param k 人的总数 */ public static void calTurnOnLigh

2017-08-18 16:40:21 662

原创 剑指Offer SnakeNumber 蛇形填数

题目描述: 在n*n的方阵里填入1,2..,n*n 要求填成蛇形例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4思路: 首先蛇形填入数据,可以把操作分为四个步骤:从上往下,从右往左,从下往上,从左往右。 定义x,y表示元素在矩阵中的横纵坐标,首先循环从上往下给数组赋值,纵坐标y不变 横坐标x递增,直到横坐标达到矩阵的边界n-1结束。之后

2017-08-18 16:37:04 559

原创 剑指Offer 调整数组顺序使奇数位于偶数前面

题目描述:输入一个整数数组 实现一个函数来调整该函数数组中数字的顺序,使得所有的奇数位于数组的前半部分 所有的偶数位于数组的后半部分思路:想到类似快排的实现,从前往后扫描偶数,从后往前扫描奇数,交换二者顺序即可。public static void order(int[] number) { int startIndex = 0; int endIndex = num

2017-08-18 16:24:54 518

原创 剑指Offer 最小的K个数

题目描述:输入n个整数,找出其中最小的k个数思路:首先想到的是对数组进行按从小到大排序然后再选出最小的前K个数。排序算法里选择排序是每次排序都可以确定数组在最后排好序数组的位置。首先想到的是最简单的选择排序,由于只需要选出前K个最小的,因此只需要排序K趟即可 public static int[] getLeastNumberBySelectSort(int[] array, int n) {

2017-08-18 16:21:09 516

原创 JVM 参数使用总结

1. 参数分类1.标准参数 功能和输出的参数都是很稳定的 在未来的JVM版本中不会改变 可以使用java -help检索出所有的标准参数2.X参数 非标准化参数 在未来的版本可能会改变 所有的参数都用-X开始 可以使用java -X检索 但是注意没有-Xcomp3.XX参数 非标准 很长一段时间不会列出来 用于JVM开发的debug和调优说明XX参数的语法:所有的XX参数都以”-XX

2017-08-16 21:41:17 13699 2

原创 Mybatis 主键配置

1. 主键回调插入数据时 如果数据库设置了自增长的话 那么无需设置主键会自动由数据库生成 我们插入的时候可以进行配置 使得插入的时候将插入成功生成的主键自动设置到实体类中例子实体类User:package com.hqq.entity;import java.io.Serializable;/** * User * Created by heqianqian on 2017/4/27. */

2017-08-16 15:10:28 2688

原创 剑指Offer 含有Min函数的栈

题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min、push及pop德尔时间复杂度都是O(1)思路: 1. 在栈中定义一个标识最小变量的变量 每次入栈的时候进行比较判断 保证该变量保存的始终是入栈元素中的最小值 出现问题:如果该最小元素出栈? 2. 使用一个栈保存入栈的数据元素,再使用一个栈辅助保存最小值 以及定义一个变量表示当前还在栈中所

2017-08-13 20:11:11 274

原创 剑指Offer 二叉树的镜像

题目描述: 请完成一个函数,输入一个二叉树,该函数输出它的镜像。思路: 遍历二叉树 如果当前节点存在左子树和右子树 那么将两个子树进行交换1) 递归实现package com.hqq.exercise.tree;/** * MirrorTree 二叉树的镜像 * 题目描述: * 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 * 思路: * 遍历两个二叉树 如果当前节点存在子节点

2017-08-13 18:48:55 415

转载 操作系统 重点知识复习总结

操作系统的基本特征并发:同一段时间内多个程序执行(注意区别并发和并行,前者是同一时刻的多个事件,后者是统一时间段内的多个事件)共享:系统中的资源可以被内存中多个并发执行的进线程共同使用虚拟:通过时分复用(如分时系统)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进操作系统的主要功能处理机管理:处理机分配都是以

2017-08-13 15:34:04 2914 2

原创 Spring 复习总结

1. Spring IoCIOC: Inversion of Control 控制反转反转的概念:正转:程序主动去创建对象反转:IOC容器来创建对象控制的概念: 控制了外部资源获取[对象、文件等]传统应用程序都是由类内部主动创建对象,导致类与类之间高耦合,难于测试,有了IOC容器后,把创建和查找依赖对象的控制器交给了容器,由容器进行注入,把创建和查找依赖对象的控制权交给了容器,由容器

2017-08-13 10:16:42 524

原创 Spring Bean的生命周期

1. BeanFactory中Bean的生命周期1.当调用者通过getBean(beanName)向容器请求某个Bean时 如果容器注册了InstantiationAwareBeanPostProcessor接口 在实例Bean之前 将调用接口的postProcessBeforeInstantiation()方法2.根据配置情况调用Bean构造函数或者工厂方实例化Bean3

2017-08-13 10:04:06 327

原创 JAVA 并发编程学习总结

一 相关概念二 并发级别三 并行的两个定律四 线程和进程线程中断 TODO 待补充join方法守护线程五 内存模型和线程安全原子性有序性可见性Happens-Before五种实现同步通信的机制waitnotify 方法awaitsignal方法BlockingQueue阻塞队列Semaphore 信号量管道通信读写锁问题六 无锁类AtomicIntegerU

2017-08-12 21:16:28 1050

原创 JAVA serialVersionUID的作用

作用Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常[InvalidCastException]在某些场合,希望类的不同版本对序列化兼容,因

2017-08-09 15:20:32 844

原创 设计模式 Concurrency 之 ProducerConsumer 生成者消费者模式

定义优缺点例子1. 定义某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。2. 优缺点优点:解耦 假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者对于消费者就会产生依赖(也就是耦合)。将来如果消费者的代码发生变化,可能会影响到生产者。而如

2017-08-09 10:44:19 490

原创 设计模式 Concurrency 之 ReadWriteLock 读写锁

定义例子1. 定义这种模式允许同步的读操作,但是写操作会加排他锁.意味着多线程可以进行读操作,但是修改数据的时候需要加排他锁当一个线程在写数据时,其他读或写线程会一直阻塞到当前线程完成写操作2. 例子ReadWriteLockpackage com.hqq.concurrency.read_write_lock;import java.util.HashSet;import java.u

2017-08-09 10:30:04 405

原创 设计模式 Concurrency 之 Mutex 互斥锁

定义例子1. 定义不同线程通过竞争进入临界区(共享的数据和硬件资源),为了防止访问冲突,在有限的时间内只允许其中之一独占性的使用共享资源。是Semaphore的特殊情况 当信号量的阈值设为1时就是互斥锁模式2. 例子Lockpackage com.hqq.concurrency.mutex;/** * Lock * Created by heqianqian on 2017/7/29. */

2017-08-09 10:09:01 796

原创 设计模式 Concurrency 之 Semaphore 信号量

定义适用场景例子1.定义Semaphore是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore可以用来构建一些对象池,资源池之类的,比如数据库连接池,我们也可以创建计数为1的Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量,表示两种互斥状态2. 适用场景保护一个重要[代码

2017-08-09 09:52:10 668

原创 设计模式 Concurrency 之 Balking 慢行模式

定义例子1.定义当现在不适合这个操作,或者没有必要进行这个操作时,就直接放弃而回去 2.例子WashinMachineStatepackage com.hqq.concurrency.balking;/** * WashingMachineState * Created by heqianqian on 2017/7/30. */public enum WashingMachineStat

2017-08-09 09:20:31 635

原创 设计模式 Concurrency 之 Half_Sync_Half_Async 半同步半异步模式

动机应用场景实现方案1.动机同步模式编程简单 但是IO的利用率低异步模式编程复杂 但是IO利用率高此模式综合了同步异步的优缺点 高层中使用同步IO模型,简化编程。低层使用异步IO模型 高效执行2.应用场景1.系统必须响应和处理外部异步发生的事件2、一个或多个任务必须在单独的控制线程中执行 其他任务可以在多线程执行 上层任务[数据库查询,文件传输]使用同步IO模式 简化编写并行程序的

2017-08-09 09:07:21 461

原创 Servlet 使用getRequestDispatcher进行请求转发页面未跳转 后台也未报错的问题的解决方法

问题描述:在Servlet中使用getRequestDispatcher进行请求转发的时候,前端页面空白未出现报错,后台也没有报错。原因分析:getRequestDispatcher的路径没有问题 也存在相应的jsp页面 前端没有出现错误 后台也没有报错 非常困扰 后面发现是我的Servlet拦截的url有问题起初我是想搭一个MVC框架 然后想要使用request.getPathInfo截取请求路径

2017-08-02 09:36:00 6704

Netty权威指南

Netty权威指南 Netty权威指南 Netty权威指南 Netty权威指南 Netty权威指南 Netty权威指南 Netty权威指南

2017-11-21

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

TA关注的人

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