- 博客(79)
- 收藏
- 关注
原创 mysql忘记密码怎么办?
今天打开电脑,准备学习一下关于go语言gorm框架的用法。结果出师未捷身先死。。。将mysql密码忘记了。结果就开始了修改密码之路~奉上解决方法1,先打开系统偏好设置---》mysql---》stop mysql server2,找到mysql的安装路径 执行 cd/usr/local/mysql/bin 这个命令进入bin目录3,sudo -u 获取管理员权...
2020-01-20 12:59:13
412
1
原创 Redis学习
目录1,什么是Redis?Redis的特点:Redis能干什么?2,Redis基础知识3,Redis为什么比较快? Redis的线程模型4,Redis的数据类型Redis 支持五大数据类型:下面给出一些常用命令5,Redis的缓存过期策略和内存淘汰机制删除策略:内存淘汰机制maxmemory-policy volatile-l...
2019-08-12 18:06:46
531
原创 Linux下安装Redis
1,下载redis官网 https://redis.io/download下载4.0.14版本2,安装redis首先将redis安装包放入虚拟机中接下来进行解压:tar -zxvf redis-4.0.14.tar.gz解压成功后:通过make命令进行安装然后在使用make intall命令显示这个就安装成功了。然后咱们启动redis服务...
2019-07-21 17:54:24
268
原创 MyBatis学习——缓存机制
mybatis提供查询缓存,用于减轻数据库的压力,提高数据库的性能一级缓存Mybatis的一级缓存是SQLSession级别的缓存、mybatis默认是开启一级缓存的。在SQLSession实例对象下存在一个数据结构(HashMap),用户进行存储缓存数据,不同的SQLSession有各自的缓存数据区域,它们之间互不影响。用法: 在同一个sqlSession中两次执行相同的...
2019-06-16 17:47:37
302
原创 Java实现地下城游戏(动态规划)
题目:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康...
2019-06-08 16:45:48
1993
2
原创 Java实现最小路径和(动态规划)
问题:/** * 给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 * * 说明:每次只能向下或者向右移动一步。 * * 示例: * * 输入: * [ * [1,3,1], * [1,5,1], * [4,2,1] * ] * 输出: 7 * 解释: 因为路径 1→3→1→1→1 的总和最小。...
2019-06-08 15:10:59
1728
2
原创 MyBatis学习——动态代理(源码)
1,动态代理MyBatis使用Proxy动态代理实现2,MyBatis怎么实现动态代理的呢?我们获取到SQLSession后,会调用getMapper()方法来返回对象实例,那么这块到底是干了什么?我们跟进源码看一看:DefaultSqlSession类:可以看到它是调用了configuration类的getMapper方法。configuration类主要是存放了...
2019-06-08 12:32:42
1140
1
原创 Java实现三角形最小路径和(动态规划)
问题:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)。思路:dp[i][j]:代表第i行第j列最小路径和我们可以将这个三角形从下向上推导dp[...
2019-06-07 17:52:47
1250
原创 Java实现最长上升子序列(动态规划)
问题:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。思路:我们可以使用动态规划来进行解答1,设置dp[]数组...
2019-06-07 17:43:53
6272
1
原创 MyBatis学习——简介及入门程序实现
MyBatis介绍: Mybatis是一个持久层框架,一个ORM(对象关系映射)框架。支持定制化SQL,存储过程以及高级映射。避免了jdbc编程过程中所有的jdbc代码和手动设置参数以及获取结果集的硬编码。主要让编码人员集中精力放在sql上,通过mybatis提供的映射方式获取数据。 ORM:用于实现面向对象编程语言里不同类型系统的数据之间的转换。可将数据库中的数据映射成Java...
2019-06-06 13:42:57
243
原创 MyBatis学习——jdbc的编程步骤以及问题总结
在我们没有学过什么框架的时候,我们是不是都是使用jdbc编程进行和数据库的连接,那么让我们回忆一下jdbc的编程步骤,和jdbc编程所存在的问题一、jdbc编程步骤 /** * 加载JDBC驱动 */ Class.forName("com.mysql.jdbc.Driver"); ...
2019-06-06 13:12:52
608
1
原创 图的深度遍历与广度遍历
图的遍历1,DFS(深度优先遍历) 访问起始点 v; 若v的第1个邻接点没访问过,深度遍历此邻接点; 若当前邻接点已访问过,再找v的第2个邻接点重新遍历。 结果:代码实现 图的创建输出看https://blog.csdn.net/qq_37937537/article/details/89056696基于邻接表实现...
2019-04-06 17:34:22
1374
1
原创 图的存储
图的存储1,邻接矩阵存储法建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)。 特点:无向图的邻接矩阵是对称的; 顶点i 的度=第 i 行 (列) 中1 的个数;java实现代码如下:package com.graph;import java.util.Scanner;/* * 定义图的结构...
2019-04-06 16:00:05
403
原创 Java NIO与BIO
1,NIO与BIO的区别BIO:传统的同步阻塞模型BIO是通过Socket和ServerSocket实现的,ServerSocket监听端口,Socket进行连接。 这种情况不适合处理多个请求: 1,生成较多的Socket会消耗过多的本地资源, 2,Socket连接的速度比较慢, ...
2019-03-29 18:18:31
864
原创 五种IO模型
五种网络IO模型基础在linux系统中,对于一次读取IO请求的操作,数据并不会直接拷贝到用户程序的用户空间缓冲区。它首先会被拷贝到操作系统的内核空间,然后才会从操作系统内核的缓冲区拷贝到用户空间的缓冲区。在进行一次等待请求IO的操作中分为两部分等待数据到达内核缓冲区 将内核空间的数据拷贝到...
2018-11-25 21:32:59
819
原创 全排列问题
给出一组数,输出它的全排列比如3, 4, 5。它们的全排列为3 4 5、3 5 4、 4 3 5、 4 5 3、 5 3 4、 5 4 3 六组数。比如1, 2, 3。它们的全排列为1 2 3、1 3 2、2 1 3、2 3 1、3 2 1、3 1 2六组数我们可以看出:(3,4,5)的全排列 = 3,(45)的全排列+4,(35)的全排列+5,(4,3)的全排列(1,2...
2018-11-22 20:14:57
203
原创 编码字典序排序
/** * 假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序, * 形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, * yyyw, yyyx, yyyy 其中a的Index为0,aa的Index为1,aaa的Index为2,以此类推。...
2018-11-21 17:49:37
2602
原创 代理模式
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。静态代理/** * 接口 * @author wj * */interface IuserDao{ void save();}/** * 目标对象 * @author wj * */class ...
2018-11-21 12:27:36
261
2
原创 单例模式
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例所具备的特点: 私有化的构造函数 ...
2018-11-21 10:43:25
236
原创 TCP三次挥手四次握手
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。这是TCP的...
2018-11-20 21:59:02
279
1
原创 MySql事务
MySql事务 事务是什么 事务的ACID特性 事务的隔离级别 锁机制1,事务是什么? 事务是一组SQL语句,要么全部执行成功,要么全部执行失败。通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)事务的提交:COMMIT事务...
2018-11-04 23:57:01
14700
6
原创 MYSQL索引
MySQl索引1,索引的概念 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列 或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 目的:提高查询的效率2,索引的用法 创建索引 单列索引create table user (id int primary key,na...
2018-10-25 15:55:57
301
原创 二叉树的前中后序遍历(递归+非递归)
/** * 二叉树节点类 * @author wj * */class TreeNode{ int value; TreeNode left_Node; TreeNode right_Node; public TreeNode(int value) { this.value = value; this.left_Node = null; this.right_N...
2018-10-10 09:33:00
236
原创 锁及锁优化
Java中通过锁来实现线程安全问题。Java的线程是映射到原生的操作系统上的,如果要阻塞或唤醒一个线程,都需要操作系统来帮忙完成。这就需要从用户态转换到核心态,因此状态转换需要耗费很多的处理器时间。所以Synchronized锁是Java语言中一个重量级操作。所以我们引进了各种锁优化。1,自旋锁与适应性自旋 挂起线程和恢复线程都需要转入内核态中完成,这些操作给...
2018-09-26 18:19:46
290
原创 线程池
线程池 在Java多线程中,如果并发的线程数量过大,并且每一个线程都是执行了一个很短的任务就结束了,这样频繁的创建销毁线程会极大的降低系统的效率。所以在Java中引入 了线程池使得线程可以得到复用。既执行完一个任务不会被销毁而去执行下一个任务。以下基于jdk1.7.8.1源码来进行分析目录线程池线程池的继承关系线程池的基本属性线程池的构造函数线程池的执...
2018-09-25 18:59:12
259
原创 ConcurrentHashMap详解
目录ConcurrentHashMap介绍ConcurrentHashMap底层数据结构ConcurrentHashMap部分分析ConcurrentHashMap与HashMap、HashTable的区别源码为jdk1.7ConcurrentHashMap介绍 ConcurrentHashMap 是concurrent包下的一个集合类。它是线程安全的哈希表。它...
2018-09-22 20:22:28
8591
原创 Java死锁问题
目录死锁概念 Java多线程中的死锁问题 Java中如何查看是否产生死锁 Java死锁经典问题——哲学家就餐问题1,死锁概念 死锁是操作系统层面的一个概念,是进程死锁的简称,最早在 1965 年由 Dijkstra 在研究银行家算法时提出的,它是计算机操作系统乃至整个并发程序设计领域最难处理的问题之一。在Java多线程中也常常出现死锁问题。2,Java多线程中的死锁...
2018-09-22 16:45:50
546
原创 CAS操作
这段代码我们除了用synchronized来保证原子性我们还有别的什么办法吗?我们来看一下这种方法真是太神奇了,不用加synchronized锁也能保证并发下的原子性。那么AtomicInteger是什么呢?AtomicInteger是一个提供原子操作的Integer类,通过线程安全的方式操作加减。那我们来通过进入getAndIncrement()方法里探究一下为什么这...
2018-09-21 11:16:42
7364
3
原创 synchronized与volatile
在这之前我们应该先了解一下Java内存模型请戳~~~~>Java内存模型Volatile关键字保证操作变量的可见性和有序性,不保证操作变量的原子性 这段代码本应该是20000,但是为什么比20000小呢??因为num++这个指令它并不具有原子性,它是分为几步执行的,volatile能够保证拿到的时候是正确的数据,但是由于它只走了一步,别的线程把这个变量的值改了...
2018-09-18 22:12:16
714
3
原创 synchronized关键字
互斥同步是最常见的一种高并发正确性保障手段。同步是指多个线程并发访问共享数据时,保证共享数据在同一时刻只被一个线程使用,而互斥是实现同步的一种手段。在Java中,最基本的互斥同步手段是synchronized关键字。synchronized使用规则:在Java中同步锁是依赖于对象存在的。不同线程对于同步锁是互斥的。例如一个线程拥有了这个对象的同步锁,则另外一个线程是拿不到的,除非这个线...
2018-09-18 21:33:45
194
原创 线程状态及其转换
线程的基本状态1. 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable):线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。3. 运行状态(Running) : 线程获取CPU权限进行执行。4. 阻塞状态(Blocked) : 阻塞状...
2018-09-18 18:18:19
216
原创 线程的常用方法介绍
start()与run() start() 启动线程并执行相应的run()方法 run() 子线程要执行的代码放入run()方法我们会发现,调用start()方法才是 启动一个新的线程。调用run()方法只是主线程调用了一个类的一个普通方法。getName()和setName() getName() 获取此线程的名字 setName() 设置此线程的名字...
2018-09-18 17:34:57
7273
原创 线程及创建线程的三种方法
基本概念程序:是为了完成特定任务,用某种语言编写的一组指令的集合.即指一段静态代码。进程:进程是程序的一次执行过程,是系统进行资源分配和处理机调度的一个独立单位。程序是一个静态的概念,进程是一个动态的概念。一个程序多次执行,对应多个进程;不同的进程可以包含同一程序。线程:进程可进一步细化为线程,是一个程序内部的一条执行路径 在Java中弱化进程的概念,使用的是线程概念。...
2018-09-18 16:51:52
1015
原创 JavaIO——IO概述
Java Io原理IO流用来处理设备之间的数据传输,Java程序中,对于数据的输入/输出操作 都是以“流”的方式进行的。java.io包下提供了各种“流”类的接口,用以获取不同种类的数据,并...
2018-08-23 10:36:55
25091
5
原创 深入理解Java虚拟机笔记——Java内存模型与并发编程
当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存中,那么CPU进行计算时就可以直接从它的高速缓存读取数据和向其中写入数据,当运算结束后,再将告诉缓存中的数据刷新到主存中。 如果一个变量在多个CPU中都存在缓存,那么就存在缓存一致性问题2种解决方法通过在总线加LOCk锁的方式阻塞了其他CPU对其他部件访问,总线锁住期间,CPU无法访问内存,导致效率低下...
2018-08-22 15:53:20
937
原创 深入理解Java虚拟机笔记——虚拟机类加载机制
虚拟机类加载机制类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、 转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。在Java中,类型的加载和连接过程都是在程序运行期间完成的。 类加载时机(类从加载到虚拟机内存,到卸载出内存为止)经历7个阶段1,加载(既可以使用系统提供的类加载器完成,也可以由用户自定义的类加载器完成):通过一个类...
2018-08-22 15:17:49
530
原创 Java集合9——PriorityQueue实现类
PriorityQueue简介优先级队列继承AbstractQueue,实现了java.ioSerializable。1,成员变量 // 默认容量 private static final int DEFAULT_INITIAL_CAPACITY = 11; /** * 数组存储,数组存储的是堆内元素 */ private tran...
2018-07-22 21:12:05
271
原创 Java集合8——Set接口实现类HashSet
HashSet简介它继承AbstractSet,实现了Set接口,Cloneable,java.io.Serializable HashSet是一个没有重复元素的集合 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用null1,成员变量 static final long serialVersionUID = -5024744406713321676...
2018-07-22 12:50:26
280
原创 Java集合7——LinkedHashMap实现
LinkedHashMap简介我们可以看到LinkedHashMap是继承于HashMap,实现了Map接口概括的说,LinkedHashMap 是一个于数组加双向链表,它是线程不安全的的,允许key和value都为null 它继承自HashMap,实现了Map<K,V>接口。其内部还维护了一个双向链表,在每次插入数据,或者访问、修改数据时,会增加节点、或调整链表的节点顺...
2018-07-22 11:49:07
835
原创 Java集合6——HashMap和HashTable的区别
HashMap与HashTable的不同HashTable简介和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以...
2018-07-21 21:42:28
565
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人