自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (7)
  • 收藏
  • 关注

原创 集合

1. Iterator 接口Iterator 接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(), next(), remove() 三种方法。它的一个子接口 LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也就是说如果是先 Iterator 接口,那么在遍历集合中元素的时候,只能往后遍历,被遍历...

2019-08-22 21:58:49 181

原创 CAS

CAS 原理:CAS(Compare and Swap)有三个参数,内存值V、旧的预期值A、即将更新的值B,当且仅当预期值 A 和内存值 V 相同时,将内存值修改为B并返回true,否则什么都不做,并返回false。java 中的应用java.util.concurrent(J.U.C) 中提供的 atomic 包中的类,使用的是乐观锁,用到的机制就是CAS,当多个线程尝试使用 CAS 同...

2019-08-21 00:56:30 1559

原创 ThreadLocal 源码分析

1. 概要ThreadLocal 即线程本地变量,ThreadLocal 为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。也就是对于同一个ThreadLocal,每个线程通过 get、set、remove 操作只会影响自身线程的数据,不会干扰其他线程中的数据。public class Thread implements Runnable { /* Threa...

2019-08-20 21:56:42 172

原创 java 并发(锁、AQS)

锁大概有以下名词:阻塞锁,可重入锁,读写锁,互斥锁,悲观锁,乐观锁,公平锁,偏向锁,对象锁,线程锁,锁粗化,锁消除,轻量级锁,重量级锁,信号量,独享锁,共享锁,分段锁1. 常见的锁Synchronized 和 LockSynchronized,它就是一个:非公平,悲观,独享,互斥,可重入的重量级锁。原生语义上实现的锁。以下两个锁都在JUC包下,是API层面上的实现:Reentrant...

2019-08-18 10:55:57 2098

原创 剑指Offer——题26(树的子结构)

【题目】:输入两棵二叉树A和B,判断B是不是A的子结构【思路】:1)先对A树进行遍历,找到与B树的根结点值相同的结点R;2)判断A树中以R为根结点的子树是否包含B树一样的结构。【注意】:判断浮点数相等不能直接用 “==“ 判断。package com.offer.offer26;/** * @author zth * @Date 2019-08-13 10:3...

2019-08-13 15:46:44 162

原创 剑指Offer——题25(合并两个排序的链表)

【题目】:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。【思路】:递归实现:合并过程中,每次都是从两个链表中找出较小的一个来链接,因此可以采用递归来实现:当任意一个链表为null时,直接链接另一个链表即可;其余情况只需要在两个链表中找出较小的一个结点进行链接,该结点的next值继续通过递归函数来链接。非递归实现:每次比较拿出最小值,当一个链表为空时,...

2019-08-13 09:57:30 128

原创 剑指Offer——题24(反转链表)

【题目】:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。【思路】:使用三个指针进行实现。分别指向当前节点、前一个节点和后一个节点。前一个节点的指针是为让当前指针指向,后一个节点为了防止链表断开。package com.offer.offer24;/** * @author zth * @Date 2019-08-13 8:10 */class...

2019-08-13 08:40:05 108

原创 剑指Offer——题23(链表中环的入口节点)

【题目】:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。【思路】:1.确定链表是否有环:定义两个指针,一个一次走一步,一个一次走两步,如果走的快的追上了走的慢的,则包含环。如果走的快的到了链表末尾都没追上则不包含环。2.确定环中结点的数目n:从环中的一个节点开始,边走边计数,回到开始节点,则统计出环中的节点数。3.找到环的入口:定义两个指针,一个指针...

2019-08-13 00:41:40 143

原创 java 内存模型

java 内存模型java 内存模型用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 java 程序在各种平台下都能达到一致的内存访问效果。主要目标是定义程序中各个变量的访问规则。主内存与工作内存Java 内存模型规定了所有的变量都存储在主内存中。每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中...

2019-08-11 22:17:11 139

原创 剑指Offer——题22(链表中的倒数第 K 个节点)

【题目】:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。【思路】:方法一:设置两个指针,第一个指针先遍历 k-1 步;从第 k 步开始,第二个指针指向头结点,两个结点同时往后遍历,当第一个指针到达最后一个...

2019-08-11 17:11:29 122

原创 剑指Offer——题21(调整数组顺序使奇数位于偶数前面)

【题一】(剑指Offer)输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。【思路】: 设置一个指针,从前往后走,如果遇到奇数则指针后移,遇到偶数时,希望把该偶数放在数组后面;因此,再设置一个指针,从后往前走,遇到偶数时指针前移,遇到奇数时,则恰好可以与前面的指针所指的偶数进行调换。package com.offer....

2019-08-11 15:28:06 188

原创 剑指Offer——题20(表示数值的字符串)

【题目】:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。【思路】表示数值的字符串应该符合:A[.[B]][e|EC] 或者 .B[e|EC]package com.offer.offe...

2019-08-11 10:20:17 210

原创 java 虚拟机(JVM)

java 虚拟机1. 运行时数据区域1、程序计数器A.程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。B.字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。C.如果线程正在执行的是一个Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的...

2019-08-10 22:36:44 603

原创 剑指Offer——题19(正则表达式匹配)

【题目】:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配【思路】:使用函数matchCore(char[] str, int indexO...

2019-08-10 22:24:48 174

原创 剑指Offer——题18(在 O(1) 时间内删除链表节点、删除链表中重复的节点)

【题一】在 O(1) 时间内删除链表节点【题目】:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。【思路】:常规思维是从头开始顺序查找需要删除的节点,需要的时间为O(n)。要在O(1)时间删除某结点,可以这样实现:设待删除结点 i 的下一个结点为 j,把 j 的值复制到 i ,再把 i 的指针指向 j 的下一个结点,最后删除 j,效果就相当于删除j。...

2019-08-10 15:10:03 169

原创 剑指Offer——题17(打印从 1 到最大的 n 位数)

【题目】:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。【思路】:解决这个问题的关键是大数问题。最常用的方法是用字符串或字符数组表达大数。针对本题,需要解决的问题是在字符串或字符数组表达的大数中模拟加法、打印大数。package com.offer.offer17;/** * @author zth * @D...

2019-08-10 09:41:03 180

原创 剑指Offer——题16(数值的整数次方)

【题目】:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。【思路】:很容易实现,但需要注意以下陷阱: 1)0的负数次方不存在;2)任意数的0次方为 1;3)要考虑exponent为负数的情况。所以可以对exponent进行分类讨论,在对base是否为0进行讨论。根据以上公式,减少计算次数,提高效率。使用右移运算符...

2019-08-09 11:25:38 242 1

原创 剑指Offer——题15(二进制中 1 的个数)

【题目】:实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。【思路】: 方法一:先把整数n与1做与运算,判断最低位是否为1;接着把1左移一位,与n做与运算,可以判断次低位是否为1……反复左移,即可对每一个位置都进行判断,从而可以获得1的个数。这种方法需要循环判断32次。注:不可将n 右移与...

2019-08-09 09:33:35 120

原创 剑指Offer——题14(剪绳子)

【题目】:给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m≥1)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]*k[1]*…*k[m]可能的最大乘积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。【思路】:本题采用动态规划或者贪婪算法可以实现。一开始没有思路时,可以从简单的情况开始想,试着算以...

2019-08-09 00:42:36 142

原创 剑指Offer——题13(机器人的运动范围)

【题目】:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?【思路】:采用回溯法,先判断机器人...

2019-08-08 23:11:56 170

原创 剑指Offer——题12(矩阵中的路径)

【题目】:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为...

2019-08-08 20:22:42 209

原创 剑指Offer——题11(旋转数组的最小数)

【题目】:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。【思路】:旋转后的数组可以划分为两个排序的子数组,并且前面数组的元素大于等于后面数组的元素。最小的元素刚好是这两个数组的分界点,所以采用二分查找法。...

2019-08-08 16:02:00 149

原创 模式匹配(朴素模式匹配、KMP模式匹配)

求一个字符串(模式串)在另一个字符串(主串)中的位置,称为字符串模式匹配1. 朴素模式匹配对主串 S 和模式串 T 分别设置指针 i 和 j ,假设字符串下标从 0 开始,初始时 i 和 j 分别指向每个串的第 0 个位置。在第 n 趟匹配开始时,i 指向主串 S 中的第 n-1 个位置,j 指向模式串T的第0个位置,然后逐个向后比较。若 T 中的每一个字符都与 S 中的字符相等,则称匹配...

2019-08-08 10:16:03 418

原创 Redis——Keys 的通用操作

keys * 显示所有key127.0.0.1:6379> keys *1) "set1"2) "sinter"3) "sunion"4) "set2"5) "sdiff"6) "zset"7) "zset1"查找所有以s开头的key127.0.0.1:6379> keys s*1) "set1"2) "sinter"3) "sunion"4) ...

2019-08-03 20:18:19 291

原创 Redis——数据结构之zset(sorted-set)

有序集合 zset 和 set 很像,都是字符串的集合,都不允许重复的成员出现在一个 set 中。他们的区别在于有序集合中每一个成员都有一个分数(score)与之关联,redis 正是通过分数来对集合里的成员进行从小到大的排序。尽管有序集合中的成员必须是惟一的,但是分数(score)却可以重复。应用场景:可以用于一个大型的在线游戏积分排行榜,当玩家的积分发生变化时,可以执行 zad...

2019-08-03 20:01:23 1179

原创 Redis——数据结构之set

集合set:set 集合是无序且不可重复的,set 是通过 hashtable 实现的,添加删除和查找的复杂度都是O(1),效率很高。它最大的优势在于可以进行交集、并集、差集操作。set 集合中最大元素数量是 4294967295。应用场景:利用交集求共同好友。利用唯一性可以统计网站的所有独立ip。sadd 添加元素(重复元素不再添加)127.0.0.1:6379> s...

2019-08-03 17:52:05 364

原创 Redis——数据结构之 list

LIST(列表):list 是一个链表结构,主要功能是 push、pop、获取一个范围的值等,操作中key可以理解成链表的名字。redis 的 list 类型其实就是一个每一个子元素都是 String 类型的双向链表。可以通过push、pop 操作链表的头部或尾部添加删除元素,这样 list 既可以作为栈,又可以作为队列。添加元素lpush:从左边开始添加 rpu...

2019-08-03 00:11:08 178

原创 Redis——数据结构之hash

HASH(散列):hash 是一个 Sring 类型的 field 和 value 的映射表,它的添加删除操作是 O(1)(平均)。hash特别适合用于存储对象,相较于对象的每个字段都存成 String 类型,将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。每一个Hash可以存储 4294967295 个键值对应用场景:存储、读取、修改用户属性(n...

2019-08-02 16:31:39 258

原创 Redis——数据结构之string

字符串类型是 redis 中最为基础的数据存储类型,是一个由字节组成的序列,它可以接受任何格式的数据,如JPEG图像数据或json对象描述信息等,是标准的key-value,一般用来存字符串、整数和浮点数。value最多可容纳的数据长度为512MB。Key定义的注意点:不要过长, 不要过短, 统一的命名规范存储String常用命令set 赋值:127.0.0.1:6379...

2019-08-02 16:02:57 188

原创 Redis——Jedis

1.Jedis连接 HelloWorld实现添加 Jedis maven 依赖:<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifact...

2019-08-02 00:19:36 166

原创 Redis——入门

1. NoSQL介绍NoSQL (Not Only SQL)指的是非关系型的数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。Redis就属于非关系型数据库,传统的Mysql ,oracle ,sql server 等 都是关系型数据库。2.为什么需要NoSQL主要应对以下问题时,传统关系型数据库力不从心高并发读写 海量数据...

2019-08-01 23:49:42 151

原创 剑指Offer——题10(斐波拉契数列)

【题一】:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。【思路】:如果直接写递归函数,由于会出现很多重复计算,效率非常底,不采用。要避免重复计算,采用从下往上计算,可以把计算过了的保存起来,下次要计算时就不必重复计算了:先由f(0)和f(1)计算f(2),再由f(1)和f(2)计算f(3)……以此类推就行了,计算第n个时,只要保存第n-1和第n-2项就可以...

2019-08-01 19:40:31 190

原创 SpringBoot——整合 Quartz 定时框架

Quartz 的使用思路job - 任务 - 你要做什么事? Trigger - 触发器 - 你什么时候去做? Scheduler - 任务调度 - 你什么时候需要去做什么事?1.修改 pom 文件添加坐标<!-- Quartz 坐标 --><dependency> <groupId>org.quartz-scheduler</gro...

2019-08-01 17:02:54 353

阿里巴巴 MD5 算法

阿里巴巴 MD5 算法

2019-04-21

基于 jsp 的邮件管理系统 及源码

有三种邮件发送格式。1、HTML邮件格式 2、带附件邮件发送 3、普通邮件发送

2018-10-11

基于 jsp 邮件管理系统

基于jsp邮件管理系统 邮件的收发,管理等 。1.调用数据库缓冲池 2.调用Taglib 3.使用javamail的组件,收发邮件

2018-10-11

邮件系统源码

基于 Jsp 技术和java web 开发技术编写的电子邮件系统,后台实现。

2018-10-11

基于 C 语言的全国道路模拟系统

基于 C 语言的全国道路模拟系统,运用栈、队列、树、图等数据结构,选择最佳路线

2018-05-27

基于HTML5的网页版剧院管理系统

基于 HTML5 的网页版剧院管理系统,运用了 CSS3 层叠样式表,和 JS 样式。

2018-05-27

基于JAVA的TTMS剧院管理系统

基于JAVA的剧院管理系统,JAVAFX支持的图形用户界面,MySQL数据库后台。

2018-05-27

空空如也

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

TA关注的人

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