自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zjt980452483的博客

神圣兽国游尾郡窝窝乡Java攻城狮

  • 博客(86)
  • 资源 (14)
  • 收藏
  • 关注

原创 Java并发编程学习系列

Java并发编程系列1.Atomic基本类型2.原子性锁3.不可变对象4.线程封闭5.线程不安全类与写法6.同步容器7.AQS组件之CountDownLatch8.AQS组件之信号量(Semaphore)9.AQS组件之CyclicBarrier10.AQS组件之ReentrantLock、StempedLock以及Condition等11.J.U.C组件FutureTask...

2020-01-01 12:53:29 437

原创 docker常用指令及服务部署

docker常用指令及服务部署1. docker安装2.docker常用指令3.常用服务部署1. docker安装一键安装指令:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun检查安装是否OK:docker -version2.docker常用指令查看当前拉取的全部镜像:docker iamges查看当前拉取的全部镜像详情:docker iamges -a查看指定的镜像(以hello-world

2020-10-27 15:32:29 266

原创 云服务JDK以及Tomcat环境搭建

一、安装文件上传1. 使用Xshell链接云服务器,并进入到/路径下2. 进入到usr文件夹下,创建自己的文件夹(zjt为例) 3. 在zjt文件夹下创建名为jdk和tomcat的文件夹,用于后续安装jdk和tomcat4. 使用WinSCP工具,链接云服务器,将jdk和tomcat以的tar.gz结尾的文件,上传到刚刚创建的两个文件夹下同理上传tomcat的安装包可使用Xshell查看二、解压并安装jdk和tomcat解压:tar zxvf 压缩包名称删除:rm -f 压缩包名称

2020-06-16 01:39:49 326

原创 云数据库Mysql 购买和使用(腾讯云为例)

一、 云数据库购买1. 打开腾讯云产品界面:https://cloud.tencent.com/product,并选择立即选购2.以学习为目的,因此此处选择低配,50G足够使用了。具体配置信息如下图:3. Mysql实例购买成功后,需要等待不到一分钟,才可以初始化Mysql数据库4. 初始化数据库5. 进入数据库管理,开启外网地址6.获取mysql的外网地址后,使用navicat链接mysql...

2020-06-15 02:06:17 3903 2

原创 云服务器的购买和使用教程(腾讯云为例)

本教程是指导新人想体验使用云服务器部署服务,所以选择最省钱且能实现完整使用云服务器过程为目标一、 购买云服务(腾讯云)1.打开腾讯云官网:https://cloud.tencent.com/2. 注册账号并实名认证;3. 点击菜单栏产品,输入云服务器4. 点击立即选购5. 在云服务CVM配置界面,选择自定义配置选项,根据需要配置自己的主机参数,直至点击末尾下一步:设置主机。6. 进入到设置主机界面,新建安全组7. 页面会跳转到安全组配置界面,点击新建8. 选择开放全部端口(仅为了方便个人

2020-06-15 01:38:47 2571

原创 idea创建动态web项目打开jsp文件报404问题

测试项目结构如下:项目在tomcat中启动后,会自动打开默认的index.jsp文件为了设置打开的jsp文件是login.jsp文件,首先打开configurations,确认当前打开的路径是login.jsp路径进入到configurations中的Deployment项,确认application context的路径是login.jsp的上一级点击执行,ok!...

2020-06-07 18:36:09 5083 2

原创 二叉搜索树(Binary Search Tree)

一、基本概念1. 二叉树和链表一样,具有动态的数据结构;具有唯一的根节点;每个节点最多有两个子节点,最多有一个父节点;每个节点的左子树也是二叉树,每个节点的右子树也是二叉树;一个节点或者空也是二叉树;2.二分搜索树二分搜索树属于二叉树的一种;每个节点的值大于其左子树的所有节点;小于其右子树的所有节点;每个子树也是二分搜索树;每个节点所存储的元素必须有可比较性;...

2020-02-02 18:06:09 184

原创 LeetCode——203. 移除链表元素

LeetCode题目地址来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-linked-list-elements/著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6...

2020-01-06 15:38:02 177

原创 队列——链表结构实现(带尾指针的链表)

本文接上一篇队列文章四、链表结构的队列1.带尾指针的链表根据链表结构的特性,在队首插入和删除节点比较容易,时间复杂度为o(1),但是在链表尾部插入和删除,都需要先找到链表尾部前一个节点的位置,这是需要遍历整个链表的,对应的时间复杂度为o(n);因此根据单链表的特性,在链表中添加一个tail节点,用于指向下一个节点即将插入的位置,如下图所示:此时便拥有了带尾指针的链表,而且对链表尾部进...

2020-01-06 00:05:38 3971

原创 链表——动手封装自己的链表

package dataStructure.chapter4;/** * @Author: zjtMeng * @Date: 2020/1/1 22:24 * @Version 1.0 */public class LinkedList<E> { private class Node{ public E e; public Nod...

2020-01-05 13:24:50 240

原创 链表—— 最基础的动态数据结构

package dataStructure.chapter4;/** * @Author: zjtMeng * @Date: 2020/1/1 22:24 * @Version 1.0 */public class LinkedList<E> { private class Node{ public E e; public Nod...

2020-01-04 18:11:17 199

原创 队列——数组结构实现(循环队列)

本文接上一篇队列文章三、循环队列循环队列的优点普通队列出队操作开销大:在出队操作时,索引为0后面的所有元素,都需要往前移动一位,元素越多,消耗的时间也越多,时间复杂度为O(N)3.1 循环队列的逻辑当元素较少时(tail位置在front后面),循环队列与普通队列出队操作一样,入队的元素将会放在tail的位置上,随后执行tail++操作;出队时front位置上的元素将会置null,随...

2019-12-29 18:10:31 709 1

原创 队列——数组结构实现(普通队列)

一、队列1. 队列的概念队列的核心理念是:先进先出;队列是一种特殊的线性表:它只允许在表的前端(front)进行删除操作,而在表的后端(tail)进行插入操作;队列和栈都是一种操作受限的线性表,其中进行插入操作的端称之为队尾,进行删除操作的端称之为队首;2.队列的属性getFront():获取队首的元素,但不进行出队操作;getSize():获取队列中元素的数量;isEmpt...

2019-12-29 15:52:02 564 1

原创 栈——封装自己的栈

public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); E pop(); E peek();}底层用数组实现的栈/** * @auther jintao.zhang * @date 2019-12-17 11:31 */pu...

2019-12-22 16:32:16 257

原创 动态数组——二次封装自己的数组

package dataStructure.chapter1;/** * 自定义数组 * @Author: zjtMeng * @Date: 2019/12/15 12:46 * @Version 1.0 */public class Array<E> { private E[] data; private int size; /** ...

2019-12-16 00:34:43 198

原创 时间处理(更新ing)

1.获取上周的周一(周日) @Test public void getLastMonday(){ LocalDate local = LocalDate.now();//获取当前时间 DayOfWeek dayOfWeek = local.getDayOfWeek();//获取今天是周几 LocalDate lastMonday =...

2019-12-09 16:51:46 174

原创 LeetCode——3.无重复字符的最长子串

LeetCode题目地址来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例1:输入: “abcabc...

2019-11-25 23:38:37 130

原创 LeetCode——2.两数相加

题目描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&gt...

2019-11-18 11:31:12 88

原创 Java并发编程——Spring的线程安全

Spring没有保证bean的线程安全1.线程安全问题的由来:线程安全问题都是由全局变量及静态变量引起的若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。2.spring不保证bean的线程安全Spring没有保证这些bean的线程安全,需要由开发者自己编写解决线程...

2019-11-17 17:46:00 410

原创 Java并发编程——多线程的最佳实践

1.尽量使用本地变量尽量使用本地变量,而不是创建一个类或实例的变量。定义在函数内部的变量就是本地变量;2.尽量使用不可变类String、Integer等。不可变类可以降低代码中需要的同步数量;3. 最小化锁的作用域范围:S=1/(1-a+a/n)该公式称为:“阿姆达尔定律"或"安达尔定理”。 其中:a:并行计算部分所占比例;n:并行处理结点个数;S:加速比;当1-a等于0时...

2019-11-17 14:41:14 308

原创 算法——排序算法类模板

package algorithms.example;/** * @Author: zjtMeng * @Date: 2019/11/14 22:15 * @Version 1.0 */public class Example { /** * 排序算法的实现 * @param a 待排序的数组 */ public static void...

2019-11-15 00:24:22 207

原创 后端获取http请求中的参数

1.参数在请求url上,如:http://{host:port}/mnagement//{ruleId}方法:在入口方法的参数前面,使用@PathVariable注解,并且变量名与url中大括号中变量名一致,即可直接传入该方法中获取其中{ruleId}的示例代码: //对应请求:http://{host:port}/mnagement/10086,获取url中的10086 @Req...

2019-11-14 12:54:43 3318

原创 SpringBoot+Mybatis 配置多数据源

目的:在springBoot项目中添加database1数据库和database2数据库第一步:修改application.properties配置文件   1. 在application.properties文件中追加了以下内容#mysql database1数据库spring.datasource.database1.url=jdbc:mysql://10.10.10.10/data...

2019-11-14 11:32:07 155

原创 剑指offer——变态青蛙跳

题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法;规律:一级台阶:1 = 2^0;二级台阶:2 = 2^1;三级台阶:4 = 2^2;四级台阶:8 = 2^3…n级台阶:count = 2^(n-1)代码实现public class Solution { /** * 运行时间:17ms ...

2019-11-12 11:23:31 80

原创 剑指offer——青蛙跳

问题一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。方法一:递归public class Solution1 { /** * 运行时间:489ms * 占用内存:9308k * @param target * @return */ public int J...

2019-11-12 00:04:53 94

原创 剑指offer——斐波那契数列

题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39方法一:递归求解(不推荐)public class FibonacciDemo1 { public static int Fibonacci(int n) { if (n==0) return 0; el...

2019-11-11 23:24:53 151

原创 Git命令操作

工作区 ----- git add ----> 暂存区 ----- git commit----> 仓库一、仅本地操作1.本地创建文件,其中“-p”确保目录名称存在,不存在的就建一个。mkdir-p demo_git #创建demo_git文件夹2.git init .:在当前路径内初始化一个git仓库#进入demo_git文件夹内cd demo_git ##...

2019-11-04 11:31:31 128

原创 Java并发编程——死锁与并发最佳实践

一、死锁1.产生的必要条件互斥条件:进程对锁分配的资源进行排他性使用;请求和保持条件:线程已经保持了一个资源,但是又提出了其他请求,而该资源已被其他线程占用;不剥夺条件:在使用时不能被剥夺,只能自己用完释放环路等待条件:资源调用是一个环形的链;2.死锁示例示例代码:/** * 一个简单的死锁类 * 当DeadLock类的对象flag==1时(td1),先锁定o1,睡眠500...

2019-11-03 18:59:35 183

原创 Java并发编程——线程池Executor

一、线程池Executor1. 传统 new Thread的弊端每次new Thread 新建对象,性能差;线程缺乏统一管理,可能无限制的新建线程,相互竞争,可能占用过多的系统资源导致死机或者OOM(out of memory内存溢出),这种问题的原因不是因为单纯的new一个Thread,而是可能因为程序的bug或者设计上的缺陷导致不断new Thread造成的。缺少更多功能,如更多执行...

2019-11-03 15:34:12 267

原创 Java并发编程——J.U.C组件FutureTask、ForkJoin、BlockingQueue

一、Runnable与Callable1.Runnable与Callable对比通常实现一个线程我们会使用继承Thread的方式或者实现Runnable接口,这两种方式有一个共同的缺陷就是在执行完任务之后无法获取执行结果。从Java1.5之后就提供了Callable与Future,这两个接口就可以实现获取任务执行结果。源码区别:Callable接口`:public interfa...

2019-10-30 15:03:40 392

原创 Java并发编程——AQS组件之ReentrantLock、ReentrantReadWriteLock、StempedLock以及Condition

一、可重入锁ReentrantLock1.ReentrantLock介绍 java中有两类锁,一类是Synchronized,而另一类就是J.U.C中提供的锁。ReentrantLock与Synchronized都是可重入锁,本质上都是lock与unlock的操作。2.ReentrantLock和Synchronized的对比可重入性:两者的锁都是可重入的,差别不大,有线程进入锁,计数器...

2019-10-28 12:34:48 213

原创 Java并发编程——AQS组件之CyclicBarrier

一、AQS组件CyclicBarrier1.CyclicBarrier介绍CyclicBarrier跟AQS其他组件,也是一个同步辅助类,它允许一组线程相互等待,直到到达某个公共的屏障点(循环屏障)CyclicBarrier可以完成多个线程之间相互等待,只有每个线程都准备就绪后才能继续往下执行后面的操作。每当有一个线程执行了await方法,计数器就会执行+1操作,待计数器达到预定的值,所...

2019-10-28 11:00:32 356

原创 Java并发编程——AQS组件之信号量(Semaphore)

一、AQS组件——信号量Semaphore1. 信号量(Semaphore)介绍:作用:用于保证同一时间并发访问线程的数目。信号量在操作系统中是很重要的概念,Java并发库里的Semaphore就可以很轻松的完成类似操作系统信号量的控制;Semaphore使用acquire方法和release方法来实现控制;在数据结构中我们学过链表,链表正常是可以保存无限个节点的,而Semaphore...

2019-10-27 23:50:42 793

原创 Java并发编程——AQS组件之CountDownLatch

一、AQS1. AQS介绍:  AQS(AbstractQueuedSynchronizer),是并发容器J.U.C(java.lang.concurrent)下locks包内的一个类。它实现了一个FIFO(FirstIn、FisrtOut先进先出)的队列。底层实现的数据结构是一个双向列表。2. AQS的实现思路  AQS内部维护了一个CLH队列来管理锁。线程会首先尝试获取锁,如果失败就将...

2019-10-27 20:51:40 273

原创 Java并发编程——同步容器

一、同步容器类1.Java中同步容器主要包括2类:1).Vector、Stack、HashTableVector实现了List接口,Vector实际上就是一个数组,和ArrayList类似,但是Vector中的方法都是synchronized方法,即进行了同步措施。Stack也是一个同步容器,它的方法也用synchronized进行了同步,它实际上是继承于Vector类。HashTab...

2019-10-26 20:20:25 133

原创 Java并发编程—— 线程不安全类与写法

一.概念如果一个类的对象同时被多个线程访问,如果不做特殊的同步或并发处理,很容易表现出线程不安全的现象,比如抛出异常、逻辑处理错误等,这种类我们就称为线程不安全的类;二. StringBuilder【线程不安全】和StringBuffer【线程安全】对比1.两者同时存在的意义:在只考虑运行效率而不担心线程安全情况的时候,优先选择StringBuilder,执行效率快;在考虑线程安全的...

2019-10-25 20:49:27 176

原创 Java并发编程——线程封闭

一、线程封闭1.概念**线程封闭:**当访问共享的可变数据时,通常需要同步。一种避免同步的方式就是不共享数据。如果仅在单线程内访问数据,就不需要同步,这种技术称为线程封闭(thread confinement)。2. 线程封闭的几种策略① Ad-hoc 线程封闭:维护线程的封闭性的职责完全由程序实现承担,是非常脆弱的,因此在程序中尽量少使用,一般使用更强的线程封闭技术,比如栈封闭或者T...

2019-10-25 17:06:42 211

原创 Java并发编程——不可变对象

一、不可变对象1. 不可变对象需要满足的条件:对象创建以后其状态就不能修改;对象所有的域都是final类型;对象是正确创建的(在创建期间,this引用没有逸出)2.具体来说可以通过以下策略来实现:将类声明成final,那么该类就无法被继承了;将所有的成员设置成private属性,使外界不能直接访问成员变量;设置成员变量不提供setter()方法,并将成员变量声明成final属...

2019-10-25 12:40:38 236 1

原创 Java并发编程——原子性锁

一、同步锁synchronized同步锁:依赖JVM来实现;优缺点:不可中断,适合竞争不激烈的场景,可读性号;Lock:依赖特殊的CPU指令、代码来实现,如ReentrantLock优缺点:可中断锁,多样化同步,适合竞争激烈的场景,能维持常态;二、synchronized 常见四种用法:修饰代码块:大括号括起的代码,作用于调用的对象;修饰方法【同步方法】:整个方法,作用于调用的...

2019-10-24 18:32:32 326

原创 Java并发编程——Atomic基本类型

Atomic原子类一. Atomic基本类型1.基本数据类型AtomicIntegerAtomicLongAtomicBoolean2.常用方法int get() // 获取当前值int getAndSet(int value) // 获取当前值并设置成指定值等价于普通变量的i = valueint getAndIncrement() // 自增 ,等价于普通变量的i++...

2019-10-24 18:04:44 372

深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).txt

深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理),内容很详细,附带源代码,希望能帮助大家

2019-05-09

JavaEE SSM配套视频.txt

JavaEE SSM配套视频,内容很详细,附带源代码,希望能帮助大家

2019-05-09

python中文视频教程(全38集).txt

python中文视频教程(全38集),内容很详细,附带源代码,希望能帮助大家

2019-05-09

selenium视频学习.txt

selenium视频学习,内容很详细,附带源代码,希望能帮助大家

2019-05-09

动图git制作软件.txt

一款非常实用的动图git制作软件,内容很详细,希望能帮助大家

2019-05-09

思维导图视频教程.txt

思维导图视频教程,内容很详细,附带源代码,希望能帮助大家

2019-05-09

MySQL性能管理及架构设计.txt

MySQL性能管理及架构设计教程,内容很详细,附带源代码,希望能帮助大家

2019-05-09

Spring Cloud微服务实战.txt

Spring Cloud微服务实战,内容很详细,附带源代码,希望能帮助大家

2019-05-09

Java开发企业级权限管理系统.zip

Java开发企业级权限管理系统,内容很详细,附带源代码,希望能帮助大家

2019-05-09

【慕课网】前端小白入门系列课程完整版.txt

【慕课网精品课程】前端小白入门系列课程完整版,内容很详细,附带源代码,希望能帮助大家

2019-05-09

12306抢票Python代码,内含视频教程

本资源既有我的代码,也有我的学习视频。基础差可以根据教程手把手教你实现12306登录用户、余票查询、下单等功能。本代码基于Python2.7 实现12306抢票,我的代码与视频有些不同,希望有助于你的学习。有问题请私信,共同学习,共同进步!

2019-02-24

Mysql笔记资料

不仅有详细的mysql复习秘籍,还有本人博客中用到的Mysql资料

2018-10-04

mybatis 3.2.7核心包、依赖包、数据驱动包

此资源整理了mybatis3.2.7需要用到的核心包、依赖包、数据驱动包,并附带了用于测试的junit包。为了确保程序兼容以及稳定的情况,任何包都不可以缺少或替换。

2018-05-14

空空如也

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

TA关注的人

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