Java
文章平均质量分 69
小石潭记丶
从小丘西行百二十步,隔篁竹,闻水声,如鸣珮环,心乐之。伐竹取道,下见小潭,水尤清冽。全石以为底,近岸,卷石底以出,为坻,为屿,为嵁,为岩。
展开
-
mysql解压安装教程
MySQL解压安装原创 2023-02-19 15:54:25 · 1071 阅读 · 0 评论 -
Mysql分页查询问题记录
问题:查询界面数据和数据库一致。但是导出数据却有重复的数据,实际数据库只存在一条数据。分析:每页查询100条,比如第一页查出来id为100的数据,在第二页也出现了id为100的数据。每页的查询条件都一样,根据时间降序只是page不一样。但是并不是必现问题🌝🌝解决:根据时间降序,数据库很多数据的时间一致,所以导致了这个问题,解决方案根据其他唯一字段排序就解决了这个问题。原创 2022-12-02 10:16:23 · 347 阅读 · 0 评论 -
Feign动态设置header
背景需求springmvc 可以直接通过拦截器Interceptor和过滤器filter拦截请求头header,从而获取必要的验证信息作为我们业务逻辑服务。比如权限验证,多租户的权限范围等等。但是在springcloud中微服务的调用其实最终也是远程调用了http,那么能不能在客户端调用的时候发给服务端的header中添加自定义的信息呢,比如业务线ID或者auhtor信息等等进而和springmvc的业务逻辑部分统一避免额外的代码实现。Feign设置header目前有两种方式1.实现拦截器Req原创 2022-03-02 14:50:01 · 3488 阅读 · 0 评论 -
Synchronized Integer问题
首先为了方便你看文章的时候复现问题,我给你一份直接拿出来就能跑的代码,希望你有时间的话也把代码拿出来跑一下:public class SynchronizedTest { public static void main(String[] args) { Thread why = new Thread(new TicketConsumer(10), "why"); Thread mx = new Thread(new TicketConsumer(10), "m原创 2022-02-23 09:46:10 · 979 阅读 · 1 评论 -
Observer和Observable概述(附实例)
1.必要性1.1观察者模式是oo设计中经常用到的模式之一,大家在解决实际需求时,观察者模式往往都会用到,而javase中已经提供了Observer接口和Observable类让你简单快速的实现观察者模式,因此有必要去了解Observer和Observable;2.观察者模式概述2.1 角色:被观察对象,观察者2.2 关系:1).被观察对象:观察者 = 1:n2).被观察对象状态发生变化,会通知所有观察者,观察者将做出相应的反应3.源码分析3.1 Observer接口Obser.原创 2022-01-21 10:12:14 · 1067 阅读 · 0 评论 -
并发集合框架
原创 2021-12-19 20:40:41 · 159 阅读 · 0 评论 -
Fork-Join分治编程
package cn.java.Concurrency.fork;import java.util.concurrent.RecursiveAction;/** * @author 小石潭记 * @date 2021/12/19 20:15 * @Description: ${todo} */public class MyRecursiveAction extends RecursiveAction { @Override protec...原创 2021-12-19 20:32:40 · 465 阅读 · 0 评论 -
ExecutorService的方法使用
在ThreadPoolExecutor中使用ExecutorService中的方法方法invokeAny()和invokeAll()具有阻塞特性。package cn.java.Concurrency.executor;import java.util.concurrent.Callable;/** * @author 小石潭记 * @date 2021/12/19 19:51 * @Description: ${todo} */public class MyCalla...原创 2021-12-19 20:06:23 · 784 阅读 · 0 评论 -
CompletionService的使用
从构造方法的申明中可以发现,类ExecutorComletionService需要依赖于Executor对象,大部分的实现也就是使用线程池ThreadPoolExecutor对象。package cn.java.Concurrency.completionService;import java.util.concurrent.Callable;/** * @author 小石潭记 * @date 2021/12/19 19:06 * @Description: ${todo} *...原创 2021-12-19 19:47:38 · 1200 阅读 · 0 评论 -
Future和Callable的使用
介绍方法get()结合ExecutorService中的submit(Callable<T>)的使用 方法submit(Callable<T>)可以执行参数为Callable的任务。 方法get()用于获取返回值。package cn.java.Concurrency;import java.util.concurrent.Callable;/** * @author 小石潭记 * @date 2021/12/19 10...原创 2021-12-19 11:37:03 · 622 阅读 · 0 评论 -
Java Condition类使用及分析
一、Condition介绍Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,阻塞队列实际上是使用了Condition来模拟线程间协作。Condition是个接口,基本的方法就是await()和signal()方法;Condition原创 2021-12-19 09:49:58 · 1339 阅读 · 0 评论 -
CountDownLatch和CyclicBarrier的使用
一、CountDownLatch的使用1.方法await(long timeout, TimeUnit unit) 该方法的作用使线程在指定的最大时间单位内进入waiting状态,如果超过这个时间则自动唤醒,程序继续向下运行。参数timeout是等待的时间,而unit参数是时间的单位。2.方法getCount()的使用获取当前计数的值。二、CyclicBarrier的使用countdownlatch类的使用情况是两个角色之间互相等待,而cyc...原创 2021-12-18 21:32:51 · 4542 阅读 · 1 评论 -
Semaphore和Exchanger的使用
一、semaphore的使用1.类semaphore的同步性多线程中的同步概念其实就是排着队去执行一个任务,执行任务是一个一个执行,并不能并行执行,这样的优点是有助于程序逻辑的正确性,不会出现非线程安全问题,保证软件系统功能上的运行稳定性。类semaphore的构造函数参数permits是许可的意思,代表同一时间内,最多允许多少个线程同时acquire()和release()之间的代码。 无参方法acquire()的作用是使用1个许可,是减...原创 2021-12-18 21:04:24 · 338 阅读 · 0 评论 -
多线程-生产者-消费者模型
一、前言生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。...原创 2021-12-18 10:28:57 · 2657 阅读 · 0 评论 -
BlockingQueue阻塞队列API介绍
一、定义BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,二、核心API...原创 2021-12-18 09:49:49 · 511 阅读 · 0 评论 -
并发——深入分析ReentrantLock的实现原理
一、正文1.1 抽象队列同步器AQS在说CountDownLatch前,必须要先提一下AQS。AQS全称抽象队列同步器(AbstractQuenedSynchronizer),它是一个可以用来实现线程同步的基础框架。当然,它不是我们理解的Spring这种框架,它是一个类,类名就是AbstractQuenedSynchronizer,如果我们想要实现一个能够完成线程同步的锁或者类似的同步组件,就可以在使用AQS来实现,因为它封装了线程同步的方式,我们在自己的类中使用它,就可以很方便的实现一个我们自己的原创 2021-12-11 21:58:12 · 371 阅读 · 0 评论 -
并发——深入分析CountDownLatch的实现原理
一、正文1.1 抽象队列同步器AQS在说CountDownLatch前,必须要先提一下AQS。AQS全称抽象队列同步器(AbstractQuenedSynchronizer),它是一个可以用来实现线程同步的基础框架。当然,它不是我们理解的Spring这种框架,它是一个类,类名就是AbstractQuenedSynchronizer,如果我们想要实现一个能够完成线程同步的锁或者类似的同步组件,就可以在使用AQS来实现,因为它封装了线程同步的方式,我们在自己的类中使用它,就可以很方便的实现一个我们自己的原创 2021-12-11 21:24:32 · 621 阅读 · 0 评论 -
并发——抽象队列同步器AQS的实现原理
一、前言这段时间在研究Java并发相关的内容,一段时间下来算是小有收获了。ReentrantLock是Java并发中的重要部分,所以也是我的首要研究对象,在学习它的过程中,我发现它是基于抽象队列同步器AQS实现的,所以我花了点时间学习了一下AQS的实现原理。这篇博客就来说一说AQS的作用,以及它是如何实现的。二、正文2.1 什么是AQS AQS全称抽象队列同步器(AbstractQuenedSynchronizer),它是一个可以用来实现线程同步的基础框架。当然,它不是...原创 2021-12-11 10:21:41 · 500 阅读 · 0 评论 -
验证对象邮箱是否符合规范,两次的密码是否一致
UserDto:package com.imooc.uaa.domain.dto;import com.imooc.uaa.validation.annotation.PasswordMatches;import com.imooc.uaa.validation.annotation.ValidEmail;import com.imooc.uaa.validation.annotation.ValidPassword;import lombok.Data;import javax.val原创 2021-11-20 09:32:28 · 799 阅读 · 0 评论 -
验证对象的密码是否符合规范
PasswordDto:package com.imooc.uaa.domain.dto;import com.imooc.uaa.validation.annotation.ValidPassword;import lombok.Data;@Datapublic class PasswordDto { private String oldPassword; @ValidPassword private String newPassword;}使用的密码.原创 2021-11-20 09:27:41 · 342 阅读 · 0 评论 -
Java 8 Stream API学习记录
Stream简介1、Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。2、stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。3、只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。为什么要使用Stream1、函数式编程带来的原创 2020-06-07 21:41:38 · 236 阅读 · 0 评论 -
Java知识总结(一)
一、基础篇1.1、Java基础 面向对象的特征:继承、封装和多态 final, finally, finalize 的区别 1、final修饰符(关键字)。被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被声明为f...原创 2018-08-09 11:12:50 · 309 阅读 · 0 评论 -
Spring的Java配置方式、读取配置文件信息
Spring的发展 Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。 Spring2.x时代 随着JDK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。...原创 2018-08-30 10:23:20 · 10263 阅读 · 1 评论 -
Java 8 新特性
Java 8 Lambda 表达式语法lambda 表达式的语法格式如下: (parameters) -> expression或 (parameters) ->{ statements; }1.不带返回值的接口package javabase.returninterface;public interface RunTask {...原创 2020-05-02 14:26:29 · 181 阅读 · 1 评论 -
Springboot集成Mybatis-Plus
Springboot 使用Mybatis Plus1.创建springboot项目目录结构:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML...原创 2020-05-01 21:28:08 · 262 阅读 · 0 评论 -
Spring框架总结
参考:https://blog.csdn.net/itcats_cn/article/details/814791851、IOC和DIIOC: 控制反转即控制权的转移,将我们创建对象的方式反转了,以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入,反转控制就是反转了对象的创建方式,从我们自...原创 2020-04-29 21:34:01 · 297 阅读 · 0 评论 -
Spring介绍
Spring介绍1.1 什么是Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许...原创 2020-04-29 21:09:38 · 494 阅读 · 0 评论 -
2020-4-16 Java总结记录
1.springmvcMVC(Model-View-Controller,模型-视图-控制器)指把页面、后台的交付分成3层来组成,是一种解决页面代码(视图代码)和后台代码分离的设计思想!! ➢模型:指封装数据的数据模型 ➢视图:指的是页面 ➢控制器:指接收页面发送数据过来的类Springmvc架构原理解析第一步:发起请求到前端控制器(Dispatcher...原创 2020-04-26 22:10:00 · 253 阅读 · 6 评论 -
设计模式
一.结构型模式1.代理模式*2.装饰模式*3.适配器模式*4.外观模式5.桥接模式6.组合模式7.享元模式二.创建型模式8.单例模式*9.工厂方法模式10.抽象工厂模式11.建造者模式12.原型模式三.行为型模式13.策略模式*14.观察者模式*15.解释器模式16.魔板方法模式17.迭代子模式18.责任链模式19...原创 2020-04-25 11:40:09 · 121 阅读 · 0 评论 -
算法与数据结构
一.哈希二.树三.遍历四.链表五.数组六.排序七.堆与栈八.队列九.高级算法原创 2020-04-25 11:34:44 · 611 阅读 · 1 评论 -
操作系统
一.操作系统概论二.进程的描述和控制三.输入输出系统四.存储器管理五.处理机调度与死锁原创 2020-04-25 11:32:13 · 116 阅读 · 0 评论 -
计算机网络
一.网络概述二.运输层1.TCP与UDP协议三.网络层1.网际协议IP2.网际控制报文协议ICMP3.因特网的路由器选择协议四.应用层1.域名系统DNS2.电子邮件...原创 2020-04-25 11:30:49 · 126 阅读 · 0 评论 -
XML编程
一.XML基础二.XML进阶三.WebService1.WSDL与SOAP协议原创 2020-04-25 11:28:05 · 149 阅读 · 0 评论 -
JDBC编程
一.SQL基础二.JDBC基础1.数据库2.数据库连接池3.事务管理,批处理三.JDBC进阶1.SQL的优化原创 2020-04-25 11:26:59 · 127 阅读 · 0 评论 -
Java Web开发核心内容
一.Web编程基础1.tomcat服务器2.JSP语法,EL,内置对象3.Listener和filter二.Web编程进阶1.Servlet、标签的作用2.Redis、memcache3.MVC和DAO4.JSTL、displayTag等常见标签库的用法三.Web编程原理1.HTTP协议(常见的退出码等)2.请求/相应架构原理3.web容器...原创 2020-04-25 11:24:54 · 454 阅读 · 0 评论 -
Java EE总结
一.Spring1.Ioc与Bean配置、管理2.Aop与事务、权限控制3.Spring、JPA整合二.Hibernate1.ORM与持久化映射2.延迟加载、性能优化3.HQL查询、条件查询、SQL查询4.二级缓存与查询缓存三.Mybatis四.SpringMVC框架...原创 2020-04-25 11:16:37 · 219 阅读 · 0 评论 -
Java高级知识
一.线程二.锁三.JDK四.反射五.JVM六.GC七.IO和NIO、AIO原创 2020-04-25 11:10:59 · 511 阅读 · 1 评论 -
Java基础
一.java基础部分(基本语法,java特性)1.标识符2.常量与变量3.数据类型4.运算符5.流程控制语句6.方法7.数组8.注释二.关键字三.面向对象1.面向对象思想2.类与对象3.成员变量和局部变量4.匿名对象5.封装6.this关键字7.构造方法8.继承9.多态10.抽象类11.接口12.内部类...原创 2020-04-25 11:08:17 · 309 阅读 · 0 评论
分享