自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 通俗易懂的io与nio 持续更新中

IO这里先讲一下io众所周知io是阻塞式的 但是在很多博客中并没有实例解释io又称为bio是面向流的 阻塞式io 让我们用代码来展示一下这里我们开通一个服务端 端口为8089 这里使用while true 使服务端始终处于监听状态public class bioservice { public static void main(String[] args) { try { ServerSocket serverSocket = new.

2021-01-25 09:54:24 190

原创 23种设计模式之原型模式(PrototypePattern)---codesheep史上最通俗易懂

看了codesheep的文章再加上自己的理解,感觉自己起飞了一、值类型 vs 引用类型这两个概念的准确区分,对于深、浅拷贝问题的理解非常重要。正如Java圣经《Java编程思想》第二章的标题所言,在Java中一切都可以视为对象!所以来到Java的世界,我们要习惯用引用去操作对象。在Java中,像数组、类Class、枚举Enum、Integer包装类等等,就是典型的引用类型,所以操作时一般来说采用的也是引用传递的方式;但是Java的语言级基础数据类型,诸如int这些基本类型,操作时一.

2020-11-10 17:22:27 305

原创 Java NIO基础(尚硅谷)

视频地址https://www.bilibili.com/video/BV14W411u7ro?from=search&seid=9270231128071202833Java NIO(New IO或 Non Blocking IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。java IO 与 java NIO 的区别一、通道(Channel

2020-10-25 13:45:14 213

原创 在Test中使用多线程要注意的事情

当主线程结束的时候其他线程也会结束

2020-09-25 14:36:59 313

原创 23种设计模式之委派模式和策略模式

委派模式委派模式不属于 GOF23 种设计模式中。委派模式(Delegate Pattern)的基本作用就是 负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理 的全权代理,但是代理模式注重过程,而委派模式注重结果。委派模式在 Spring 中应用 非常多,大家常用的 DispatcherServlet 其实就是用到了委派模式。例如:老板(Boss)给项目经理(Leader)下达任务,项目经理会根据 实际情况给每个员工派发工作任务,待员工把工作任务完成之后,再由...

2020-09-07 18:20:36 186

原创 vue 字符串中的标签显示成文本的解决方式

<div v-html="suggest"> </div>而不是<div>{{suggest}}</div>

2020-09-07 16:38:01 2421

原创 redis集群搭建以及问题处理

首先要安装ruby执行yum install ruby执行yum install rubygems执行 ./redis-trib.rb create --replicas 1 192.168.44.130:6379 192.168.44.130:6380 192.168.44.130:6381 192.168.44.130:6389 192.168.44.130:6390 192.168.44.130:6391此时这里为自己的ip地址遇到问题/usr/share/rubygems.

2020-09-01 17:32:56 527

原创 ERROR 1396 (HY000): Operation CREATE USER failed for

刷新权限flush privileges;之后还是不行报错ERROR 1396 (HY000): Operation CREATE USER failed for ‘test’@’%’再删除一次:drop user ‘test’@’%’;flush privileges;之后create user ‘test’@’%’ identified by ‘test’;成功。...

2020-08-29 22:26:38 777

原创 23种设计模式之单例模式

单例模式的应用场景 单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛。 例如,国家主席、公司 CEO、部门经理等。在 J2EE 标准中,ServletContext、ServletContextConfig 等;在 Spring 框架应用中 ApplicationContext;数据库的连接池也都是单例形式也就是具有以下特点1、单例类只能有一个实例。2、单例类必须自己创

2020-08-10 10:00:37 138

原创 23种设计模式之工厂模式

一、引入工厂模式在以往的代码中,我们会自己去new对象,初始化等操作,当new对象的过程中拥有过多复杂初始化等操作,就会使我们的代码过于冗余举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。工厂模式:把创建对象,初始化对象的事情交给一个工厂去做.''二、分类 ...

2020-08-09 15:14:11 167

原创 java7大设计原则

在Java开发中要遵守的7大设计原则七个设计原则:面向对象编程有七大原则,即经常提到的Design Pattern,提倡它的根本原因是为了代码复用,增加可维护性。设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。因为设计模式就是基于这些原则的实现,所以很有必要了解这些原则。1、单一职责原则 ( SRP )英文全称是Single Responsibility Principle,定义是一个类,应该只有一个引起它变化的原因。类变化的原因就是职责,如果一个类承担的职责过多,就等于

2020-08-09 13:05:21 873

原创 Stream流式编程

首先体会一下链式编程@AllArgsConstructor@NoArgsConstructor@Data@Accessors(chain = true)public class Book { private int id; private String name; private double prize; public static void main(String[] args) { Book book = new Book();

2020-08-04 18:01:53 189

原创 JUC --- ThreadPool线程池api及工作原理简析

为什么使用线程池:对于ThreadPool,我们可以理解为已经为我们创建了一堆线程,然后再让这些线程去做我们指定的事情。首先先看看继承图:Executors创建线程的三种方法:ExecutorService threadPool = Executors.newFixedThreadPool(5); //固定容量ExecutorService threadPool = Executors.newSingleThreadExecutor(); //单例的、单个线程的线程池ExecutorS

2020-08-04 17:29:20 208

原创 JUC --- BlockingQueue 阻塞队列

BlockingQueue(阻塞队列)是什么?当队列为空时,从队列中获取元素将阻塞。当队列为满时,从队列中添加元素将阻塞。因为是队列,所以我们理应想到先进先出。接下来我们来演示简单的使用一下:add(抛出异常):/** * @author Cocowwy * @create 2020-05-05-14:53 */public class BlockingQueueDemo { public static void main(String[] args) { Bloc

2020-08-04 15:25:19 166

原创 JUC --- ReadWriteLock(读写锁)

多个线程同时读一个资源类没有任何问题,所以为了满足并发量,读取共享资源应该可以同时进行。 但是,如果有一个线程想去写共享资源类,就不应该再有其他线程可以对该资源进行读或写。接下来先看个案例:代码如下:public class ReadWriteLockDemo { public static void main(String[] args) { MyCache myCache = new MyCache(); for (int i = 0; i <

2020-08-04 14:45:25 153

原创 JUC -- 辅助类

要求:当所有人离开教室之后班长 main线程关门public class CountDownLatchDemo { public static void main(String[] args) { for (int i = 1; i <= 6; i++) { new Thread(() -> { System.out.println(Thread.currentThread().getName() + "\

2020-08-04 14:29:14 144

原创 获取hashmap当前的容量以及元素个数

原文链接https://blog.csdn.net/qq_34942272/article/details/106423194一、背景 在深入学习HashMap等集合类的源码时,如果对于动态扩容或初始化的代码理解不透彻,那么我们需要实时监控HashMap的容量capacity以及阈值threshold的变化,这样更能直观的展示出来,便于我们理解源码。话不多说直接上代码!二、分析 (1) 代码展示public static void main(String[] args) ...

2020-08-04 14:23:41 4846 3

原创 JUC ---callable接口

我们自然知道创建线程的三种方式,前两种就不多说了,这次我们讲的是第三种Callable接口。首先,先对比一下Runnable接口和Callable接口的区别://Runnable接口class MyThreadRunnable implements Runnable { @Override public void run() { }}//Callableclass MyThreadCallable implements Callable<Int

2020-08-04 13:49:39 192

原创 JUC --- 集合

首先是我们的ArrayList:这次我们讲解的是集合的不安全,首先我们都知道ArrayList吧!首先我们拓展几个知识点,ArrayList底层是Object类型的数组,初始容量是10(jdk7之前,jdk8之后是空引用,到add之后会变成10,类似于懒加载的机制),其扩容的方式是每次扩容为之前的一半,比如10会扩容成15,15扩容成22,扩容用到的方法时Arrays的copyof方法,OK,接下来后进入主题。先看这段代码:List<String> list=new ArrayLi

2020-08-04 12:32:39 325

原创 JUC --- 8锁问题

先了解一个概念:synchronized 锁的是这个方法所在的资源类,就是这个对象,也就是同一时间段不可能有两个线程同时进到这个资源类,同一时间段,只允许有一个线程访问资源类里面的其中一个synchronized 方法!T1:1.标准访问,请问先打印邮件还是短信?代码如下:public class Lock8 { public static void main(String[] args) { Phone phone = new Phone(); new Th

2020-08-04 12:19:40 125

原创 JUC --- 生产者与消费者

这次我们讲解的是一个例题:题目:两个线程操作一个变量,实现两个线程对同一个资源一个进行加1操作,另外一个进行减1操作,且需要交替实现,变量的初始值为0。即两个线程对同一个资源进行加一减一交替操作。首先我们先定义操作的资源,并且定义方法。//资源类class Resource { private int number = 0; public synchronized void up() throws InterruptedException { //1.判断

2020-08-04 12:14:55 194

原创 java-version还是之前的版本

java更换版本后 java-version还是之前的版本将JAVA_HOME 的配置向上移动到第一个就可以刻

2020-07-25 22:41:30 282

原创 线程通信--生产者消费者模式

管程法public class PCTest { public static void main(String[] args) { //建立一个容器 SynContainer synContainer = new SynContainer(); new Producer(synContainer).start(); new Consumer(synContainer).start(); }}//生产者只负...

2020-07-25 19:25:35 271

原创 多线程(五)--lock锁

/* 模拟卖票案例 创建3个线程,同时开启,对共享的票进行出售 */public class Demo01Ticket { public static void main(String[] args) { //创建Runnable接口的实现类对象 RunnableImpl run = new RunnableImpl(); //创建Thread类对象,构造方法中传递Runnable接口的实现类对象 Thread t.

2020-07-25 15:09:02 267

原创 死锁

两个线程互相同时持有对方所需要的锁package com.itheima.demo11;import java.util.concurrent.TimeUnit;/** * @author name * @date 2020/7/24 */public class DeadLock { public static void main(String[] args) { Makeup g1 = new Makeup(0,"灰姑娘"); Makeup

2020-07-24 17:12:50 81

原创 多线程(四)--线程不安全案例与解决方案,原子操作

案例一:抢票问题public class ThreadTicket { public static void main(String[] args) { BuyTicket buyTicket = new BuyTicket(); new Thread(buyTicket, "线程一").start(); new Thread(buyTicket, "线程二").start(); new Thread(buyTicket, "线

2020-07-23 22:15:18 231

原创 多线程synchoroize修饰不同位置的区别

synchoroize修饰静态方法和修饰class效果是一样的,因为静态方法属于类,不属于对象synchoroize成员方法和修饰对象效果是一样的,因为成员方法属于对象类锁和对象锁是两种,不会发生线程同步因为同步需要耗费很多的资源,所以使用同步代码块修饰可能发生线程安全的代码比直接修饰方法要节省资源...

2020-07-22 17:09:28 105

原创 多线程(三)---线程的方法

sleep 方法public class Demo01Sleep { public static void main(String[] args) { //模拟秒表 for (int i = 1; i <=60 ; i++) { System.out.println(i); //使用Thread类的sleep方法让程序睡眠1秒钟 try { Threa

2020-07-22 15:10:39 191

原创 多线程(二)线程的状态

2020-07-22 14:56:18 78

原创 多线程-创建线程的四种方式-初识多线程

多线程进程:进程是资源分配的最小单位,运行的程序就是进程:qq.exe线程:线程是程序执行的最小单位,也就是cpu调度执行的最小单位,程序中含有多个线程:聊天,视频真正的多线程应该是多核cpu,单核cpu其实只是在线程间连续切换多核cpu才可以做到并行线程的创建(四种方式)第一种 继承Thread类package com.itheima.my;import java.util.concurrent.TimeUnit;//继承Thread类 重写 run 方法

2020-07-21 15:38:55 174

原创 $.post不执行失败回调

$.post( "../../xxx/ajaxPost.aspx", { action: "xxx", id: xxx }, function (data,status) { alert("name="+data.name+",age="+...

2020-07-21 10:46:01 1114 1

原创 在springboot拦截器中使用redisTemplate的问题

在springboot中直接使用redisTemplate会失败因为拦截器是在redisTemplate之前加载的所以需要先创建一个redisTemplate 在继承了WebMvcConfigurerAdapter的类下面做以下配置@Bean public HandlerInterceptor getAccessLimitIntercept() { return new HandlerInterceptor(); } //HandlerInterceptor 为

2020-06-16 09:58:32 1474

原创 剑指offer二(3)数组中的重复数字

package 数组中重复的数字;/** * 在一个长度为n的数组里的所有数字都在0~n-1范围内。 * 数组中某些数字是重复的。但是不知道有几个数字重复了, * 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 * 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应输出的是重复的数字2或者3。 *//** * 分析:1.可以使用map集合进行操作,但是时间和空间复杂度偏多 * 2.应为长度为n的数组,并且所有的数字都在0~n-1 所以如果没有重复的话

2020-05-19 13:01:23 122

原创 剑指offer二(2)单例模式

饿汉式单例模式单例设计模式:1构造方法私有化2声明一个本类对象3给外部提供一个静态方法获取对象实例饿汉式:在类被加载后,对象被创建,到程序结束后释放懒汉式: 在第一次调用getInstance方法时,对象被创建,到程序结束后释放在项目中为什么使用单例,单例有什么好处?1.在设计工具类时(通常工具类只有功能方法,没有属性)2.工具类可能会被频繁调用3.为了节省重复创建对象所带来的内存消耗,从而提高效率package 单例模式;public class Demo1SingletonEH

2020-05-19 13:00:13 159

原创 小程序分享传参过程中部分参数无法传递问题解决

小程序分享传参过程中部分参数无法传递问题解决解决方法:使用 encodeURIComponent()方法将url字符串进行编码。在接收的时候使用decodeURIComponent()方法解码。这样即可保持传递的url完整

2020-05-18 11:38:09 1202

原创 Mysql分组查询加上序号

今天老板让我删除数据库中多余的数据要求:每个用户只保留当天的前四条记录最开始只是用userid进行了分组但是怎么再用时间进行分组呢最开始我实在when后面加上and条件但是发现结果不对删掉之后就可以了SELECT @r:= case when @type=a.userid then @r+1 else 1 end as rowNum, @type:=a.userid as userid, a.id, DATE_FORMAT(starttime,'%Y-%m-%d

2020-05-14 23:33:39 821

原创 redis安装

Redis简介Redis官网: http://redis.io/ Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并且借助许多高层级的接口使其可以胜任,如缓存、队列系统的不同角色。源码托管在github https://github.com/antirez/redis 下载linux的版本的Redis的安装Redis的安装Red...

2020-05-08 00:09:11 110

原创 springcloud+springcloudAlibaba(1) 微服务构建以及Eureka

技术版本cloudHoxton.SR1boot2.2.2.RELEASEcloud alibaba2.1.0.RELEASEjava1.8maven3.5mysql5.71. 新建Maven父工程 cloud2020 maven架构选择org.apache.maven.archetypes:maven-archetype-site...

2020-05-02 21:08:07 549

原创 程序包找不到问题

需要查重新导入

2020-04-30 21:50:12 423

原创 @ControllerAdvice 注解的三种使用场景!

@ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能:1.全局异常处理2.全局数据绑定3.全局数据预处理灵活使用这三个功能,可以帮助我们简化很多工作,需要注意的是,这是 SpringMVC 提供的功能,在 Spring Boot 中可...

2020-04-28 00:00:15 218

空空如也

空空如也

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

TA关注的人

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