自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 一款非常好用的微信小程序待办工具

微信小程序待办提醒

2022-07-26 13:18:04 961 1

原创 微信小程序年月日时分插件yu-datetime-picker,弹出遮罩层后时间不能默认选中。

我是在网上找的组件,gitee地址:YUI: 小程序YUI组件库 - Gitee.com我将他改成了vue的写法。完整代码如下:yu-datetime-picker.vue<template> <view class="yu-datetime-wrap"> <view :class="'yu-datetime-form ' + (showBorder ? 'yu-datetime-form-border' : '')">

2022-04-17 15:56:49 1368

转载 java ReentrantLock 可重入锁(也叫递归锁)

可重入锁:指的是同一线程外层函数获得锁之后,内存递归函数仍然能获取该所的代码,在同一个线程的外层方法获取锁的时候,在进入内层方法会自动获取锁也就是说:线程可以进入任何一个它已经拥有的锁所同步着的代码块。看完官方的解释后你是不是很蒙蔽,给大家举个例子就明白了:相当于我们只要拿到我们进入家里大门的钥匙(锁)后,就可以进入各个房间,而不用在去获取各个房间的钥匙(锁)。备注:Reentran...

2019-12-11 11:19:39 277

转载 java 自旋锁

自旋锁(spinlock):是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。手写一个自旋锁的代码如下:package com.mszl.thread;import java.util.concurrent.atomic.AtomicReference;/*** 功能:手写一个自旋锁*...

2019-12-11 11:19:07 144

转载 java ReentrantReadWriteLock 读写锁

独占锁:指该锁一次只能被一个线程所持有。ReentrantLock和synchronized都是独占锁。共享锁:指该锁可以被多个线程所持有。对ReentrantReadWriteLock其读锁是共享锁,其写锁是独占锁。读锁的共享锁可保证并发读是非常高效的,读写,写读,写写的过程是互斥的。验证读写锁代码如下:package com.mszl.thread;imp...

2019-12-11 11:18:32 125

转载 java CountDownLatch的用法

CountDownLatch:让一些线程阻塞直到另外一些线程完成后才被唤醒。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞,其他线程调用countDown方法计数器减1(调用countDown方法时线程不会阻塞),当计数器的值变为0,因调用await方法被阻塞的线程会被唤醒,继续执行场景:假设我们现在教室里面一共有6个人,分别为5个学生...

2019-12-11 11:18:07 196

转载 java CyclicBarrier的用法

CyclicBarrier:CyclicBarrier的字面意思是可循环(Cyclic) 使用的屏障(barrier).它要做的事情是,让一组线程到达一个屏障(也可以叫做同步点)时被阻塞,知道最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await()方法。场景:假设我们现在有7个人开会,必须要7个人全部到齐才能开始会...

2019-12-11 11:17:27 116

转载 java Semaphore的用法

Semaphore:叫信号量或信号灯主要用于两个目的:一个是用于多个共享资源的相互排斥使用,另一个用于并发资源数的控制。场景:3个停车位,7辆车来抢。4秒钟后有车离开,然后在剩下的4辆车里面在来抢车位。代码如下:package com.mszl.thread;import java.util.concurrent.BrokenBarrierException;imp...

2019-12-11 11:17:01 190

转载 阻塞队列的介绍(一)

阻塞队列:1 当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。2 当阻塞队列是满时,往队列中添加元素的操作将会被阻塞。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他线程从队列中移除一个或者多个元素或者全清空队列后使队列重新变得空闲起来并后续新增。在多线程领域:所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。...

2019-12-11 11:16:30 122

转载 阻塞队列 SynchronousQueue的使用(三)

SynchronousQueue:同步队列即生产一个消费一个,实现零库存的概念。即如果生产了1个,如果不消费掉,另外生产的那个将一直阻塞在那里。代码如下:package com.mszl.thread;import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;...

2019-12-11 11:15:38 292

转载 lock知识复习

题目:一个初始值为0的变量,两个线程交替操作,一个加1一个减1循环5次代码如下:package com.mszl.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentr...

2019-12-11 11:15:06 189

转载 synchronized和lock的区别

synchronized和lock的区别如下:(1)原始构成:synchronized是关键字,属于jvm层面。monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象,只有在同步块或方法中才能调用wait/notify等方法)。lock是具体类(java.util.concurrent,locks.lock)是api层面的锁。...

2019-12-11 11:14:36 142

转载 lock绑定多条件Condition

题目:多线程之间按顺序调用,实现A->B->C三个线程启动,要求A打印5次,B打印10次,C打印15次,ABC都循环10次代码如下:package com.mszl.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import ...

2019-12-10 11:08:22 328

转载 阻塞队列 BlockingQueue复习

题目:一个线程生产,一个线程消费。5秒钟后停止。代码如下:package com.mszl.thread;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.TimeUnit;import j...

2019-12-10 11:07:16 114

转载 Callable的使用

概述:在创建线程时,Thread t=new Thread(); 里面穿的是Runnable,但是juc包下面并没有直接的接口,那么又一个类同时实现了Callable和Runnable,那就是FutureTask代码如下:package com.mszl.thread;import java.util.concurrent.Callable;import java.util....

2019-12-10 11:06:46 182

转载 线程池的介绍和优势(一)

线程池介绍:线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果线程超过了最大数量,超出的数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。线程池的主要特点:线程复用,控制最大并发数,管理线程。(1)降低资源消耗,通过重复利用自己创建的线程降低线程创建和销毁造成的消耗。(2)提高响应速度,当任务到达时,任务可以不需要...

2019-12-10 11:06:14 169

转载 线程池的三种常用方式(二)

线程池的三种常用方式:(1)Executors.newFixedThreadPool(int)。执行一个长期的任务,性能好很多。(2)Executors.newSingleThreadExecutor()。一个任务一个线程执行的任务场景。(3)Executors.newCachedThreadPool()。适用:执行很多短期异步的小程序或者负载较轻的服务器。一:newFixe...

2019-12-10 11:05:41 206

转载 线程池中的七大参数(三)

线程池中的七大参数如下:(1)corePoolSize:线程池中的常驻核心线程数。(2)maximumPoolSize:线程池能够容纳同时执行的最大线程数,此值大于等于1。(3)keepAliveTime:多余的空闲线程存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁直到只剩下corePoolSize个线程为止。(4)unit:keepAliveTime的...

2019-12-10 11:05:14 941

转载 线程池的工作原理(四)

一:ThreadPoolExecutor的execute方法的执行示意图:二:线程池的主要处理流程总结:(1)在创建线程池后,等待提交过来的任务请求。(2)当调用execute()方法添加一个请求任务是,线程池会做如下判断: (2.1)如果正在运行的线程数量小于corePoolSize,那么马上创建线程运行这个任务。 (2.2)...

2019-12-10 11:04:30 150

转载 线程池的四种拒绝策略(五)

线程池的四种拒绝策略:(1)AbortPolicy(默认):直接抛出RejectedException异常阻止系统正常运行。(2)CallerRunPolicy:“调用者运行”一种调节机制,该策略既不会抛弃任务,也不会抛出异常,而是将某些任务回退到调用者,从而降低新任务的流量。(3)DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加入队列中尝试再次提交当...

2019-12-10 11:03:51 809

转载 手写线程池(六)

题外话:在面试的时候,如果面试官问你:你在工作中单一的/固定数的/可变你的三种创建线程池的方法,你用哪个多?答:一个都不用,我们都是自己手写的。因为阿里巴巴开发手册里面明确的提到: 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式。一:手写一个线程池采用AbortPolicy拒绝策略的代码如下:package com.mszl....

2019-12-10 11:03:25 210

转载 线程池配置合理的线程数(七)

线程池的线程数配置,主要看服务器是属于以下哪种类型:(1)CPU密集型。(2)IO密集型。一:CPU密集型算法:(1)名称解释:CPU密集型的意思是该任务需要大量的运算,而没有阻塞,CPU一直全速运行。CPU密集任务只有在真正多核CPU上才可能得到加速(通过多线程),而在单核CPU上,无论你开几个模拟的多线程该任务都不可能得到加速,因为CPU总的运算能力就那些。(2)计算...

2019-12-10 11:02:35 588

转载 java 死锁的产生和定位分析

死锁的概念:死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉,那他们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。死锁产生的原因:(1)系统资源不足。(2)进程运行推进的顺序不合适。(3)资源分配不当。死锁的代码如下:模拟场景:线程A自...

2019-12-09 23:45:02 104

转载 jvm体系结构概览

jvm体系结构概览:GC的作用区域需要有垃圾回收。名师出品,必属精品 http://www.91mszl.com联系博主

2019-12-09 23:44:32 98

转载 jvm常见的垃圾回收算法

jvm常见的垃圾回收算法:(1)引用计数。(2)复制。(3)标记清除。(4)标记整理。一:引用计数二:复制(用于新生代)MinorGC的过程(复制->清空->互换)1:eden、SurvivorFrom 复制到 SurvivorTo,年龄+1首先,当Eden区满的时候会触发第一次GC,把还活着的对象拷贝到SurvivorFrom区,...

2019-12-09 23:43:29 144

转载 面试题(一)JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots

一:什么是垃圾?答:简单的说就是内存中已经不再被使用到的空间就是垃圾。二:要进行垃圾回收,如何判断一个对象是否可以被回收。答:枚举根节点做可达性分析(根搜索路径)。三:什么GC Roots?GC Roots就是一组必须活跃的引用。基本思路就是通过一系列列名为GC Roots的对象作为起始点,从这个被称为GC Roots 的对象开始向下搜索,如果一个对象到GC Roo...

2019-12-09 23:42:51 168

转载 jvm的参数类型和更改

一:JVM的参数类型:(1)标配参数。(2)X参数(了解即可)。(3)XX参数(重点)。二:jvm参数类型的详细介绍:(1)标配参数如:java -version,java -help 等等。(2)X参数。(2.1) -Xint。解释执行(2.2) -Xcomp。第一次使用就编译成本地代码(2.3) -Xmixed。混合模式(3)XX参数:分为Bool...

2019-12-09 23:42:17 242

转载 jvm jinfo 的用法

jinfo出了可以使用命令jinfo -flag MetaspaceSize(还有很多其他的参数,不仅仅是MetaspaceSize)进程编号还有一种模糊查询,查询所有参数的写法:jinfo -flags 进程编号一个是flag,一个是flags。下面来演示说明执行 jinfo -flags 4696C:\Windows\system32>jinfo...

2019-12-09 23:41:45 299

转载 面试题(二)jvm 参数-Xms和-Xmx参数是属于X参数还是XX参数?如果是XX参数,那你怎么解释它即没有用boolean类型也没有用kv设置类型,你怎么解释

jvm 参数-Xms和-Xmx参数是属于X参数还是XX参数?如果是XX参数,那你怎么解释它即没有用boolean类型也没有用kv设置类型,你怎么解释。答:-Xms和-Xmx都属于XX参数。-Xms等同于 -XX:InitialHeapSize;-Xmx等同于 -XX:MaxHeapSize,如果我们自己不设置的话 -Xms默认为系统内存的1/64,-Xmx默认为系统内存的1/4。...

2019-12-09 23:41:14 873

转载 面试题(三)jvm查看初始参数和默认值

jvm查看初始参数和默认值?(1)查看初始默认值。java -XX:+PrintFlagsInitial(2)查看jvm参数是否被修改过。java -XX:+PrintFlagsFinal -version注意:如果没有冒号的表示是jvm默认的,如果有冒号的则表示是我们自己改过的或jvm改过的。(3)查看默认初始值,主要是用于查看jvm用的...

2019-12-09 23:40:44 269

转载 面试题(四)你工作中常用的jvm参数有哪些?

jvm常用参数:(1) -Xms。初始大小内存,默认为物理内存1/64。等价于 -XX:InitialHeapSize。(2) -Xmx。最大分配内存,默认为物理内存1/4。等价于 -XX:MaxHeapSize。(3) -Xss。设置单个线程的大小,一般默认为512K~1024K。等价于 -XX:ThreadStackSize。(4) -Xmn。设置年轻代大小。(5) -XX...

2019-12-09 23:40:08 246

转载 面试题(五)强引用、软引用、弱引用、虚引用分别是什么?

引用的组织架构图一:强引用(死了都不进行回收)。(1)当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,死都不收。(2)强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象,在java中最常见的就是强引用。把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引...

2019-12-09 23:38:57 256

转载 centos7 阿里云解决redis无法远程连接的问题

1 确认防火墙是否开启了6379端口添加端口:firewall-cmd --zone=public --add-port=6379/tcp --permanent刷新防火墙:firewall-cmd --reload2 找到 redis.conf 文件 1 bind 127.0.0.1改为绑定 bind 0.0.0.0 2 protected-mode yes改为pr...

2019-10-17 10:56:53 1055

转载 java 生成6位随机数

方法一:System.out.println((int)((Math.random()*9+1)*100000));方法二:String vcode="";for (int i=0; i<6; i++) {vcode=vcode+(int)(Math.random() * 9);}System.out.println(vcode);...

2019-10-17 10:56:16 216

转载 java 截取某个字符之前或之后的字符串

String aa="00e8774d55c66d737ab1ce6878dc064c,16e52ce8e22395f1e466b983f70f1e0a";// 截取逗号前的字符串String str=aa.substring(0, aa.indexOf(","));System.out.println(str); // 00e8774d55c66d737ab1ce6878dc064c//...

2019-10-17 10:55:37 16921

转载 在jsp中利用注释标签隐藏html中的注释

1 我们可能在jsp页面会增加一些业务逻辑的注释,但是不想让用户通过浏览器查看源代码能够看到,并且增加网站的安全性。我们可以使用如下的注释标签。<%-- 91名师指路 http://91mszl.com --%>这种在查看网页源代码的时候就看不到了。2 html常见的注释是<!-- 91名师指路 http://91mszl.com -->这种注...

2019-10-17 10:55:01 726

转载 jsp 中大于,小于,等于等符号

序号 符号 EL 常规 1 等于 eq == 2 不等于 ne != 3 大于 gt > 4 小于 lt < 5 大于等于 ge >= 6 小于等于...

2019-10-17 10:54:12 5508

转载 java 下载文件的几种方法

1.以流的方式下载public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。...

2019-10-17 10:53:39 751

转载 BigDecimal 比较大小

public static void main(String[] args) { BigDecimal a = new BigDecimal (50); BigDecimal b = new BigDecimal (50); // 使用compareTo方法比较 // 注意:a,b均不能为null,否则会报空指针 if(a.compareTo(b) == -1){ ...

2019-10-17 10:52:08 462

转载 BigDecimal 加减乘除

Bigdecimal 对应的加减乘除函数。加法 add()函数减法subtract()函数乘法multiply()函数除法divide()函数绝对值abs()函数public static void main(String[] args) { BigDecimal num1 = new BigDecimal(0.005); BigDecimal num2 = new B...

2019-10-17 10:51:37 118

java lombok jar下载

自动生成java中实体类的get, set 方法。不用在像之前一样的手动去生成了。

2019-04-02

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

TA关注的人

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