自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小周的博客

我曾七次鄙视自己的灵魂:第一次,当它本可进取时,却故作谦卑; 第二次,当它空虚时,用爱欲来填充; 第三次,在困难和容易之间,它选择了容易; 第四次,当它犯了错时,却借由别人也会犯错来宽慰自己; 第五次,当它因软弱而忍让时,却把它认为是生命的坚韧; 第六次,

  • 博客(67)
  • 收藏
  • 关注

转载 ConcurrentHashMap经典面试-灵魂拷问

你问到了ConcurrentHashMap,我偏要ConcurrentHashMap和HashTable一起跟你讲,还要用最骚气的方式告诉你。正文一个婀娜多姿,穿着衬衣的小姐姐,拿着一个精致的小笔记本,径直走过来坐在我的面前。就在我口水要都要流出来的时候,小姐姐的话语打断了我的YY。喂小鬼,你养我啊! 呸呸呸,说错了,上次的HashMap回答得不错,最后因为天色太晚了面试草草收场,这次可得好好安排你。诶,面试官上次是在抱歉,因为公司双十二要值班,实在是没办法,不过这次不会了,我推掉了所有的事情准

2021-03-04 18:07:00 434 1

原创 SpringBoot整合Quartz定时任务框架

什么是Quartz?Quartz是定时任务框架。是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能:持久性作业 - 就是保持调度定时的状态;作业管理 - 对调度作业进行有效的管理;大部分公司都会用到定时任务这个功能。拿火车票购票来说,当你下单后,后台就会插入一条待支付的task(job),一般是30分钟,超过30min后就会执行这个

2020-12-24 11:58:48 214

原创 Quartz中给自定义Job类注入对象异常的解决办法

在使用Quart定时任务框架时,自定义Job类不支持@Autowired。往Job任务类中注入对象后,通过注入对象调用方法发现,运行出现异常。原来,并没有注入成功!JobDetailFactoryBean的setJobClass()方法底层调用的是AdaptableJobFactory的createJobInstance()方法。该方法是通过反射创建的对象。看源码: protected Object createJobInstance(TriggerFiredBundle bundle) throws

2020-12-19 20:03:22 653 2

原创 Spring Boot整合Shiro实现认证与授权

Shrio中的Subject对象调用login()后发生了什么?执行该方法时,会自动执行我们定义的UserRealm里doGetAuthenticationInfo方法认证逻辑代码!为什么?通过查看源码 它底层最终会调用到DefaultWebSecurityManager的login()方法,而DefaultWebSecurityManager关联了Realm类且该方法内使用了AuthenticationInfo对象作为参数传给了。故会执行Realm里的认证逻辑。我们自定义了一个Realm类(User

2020-12-10 17:29:58 352

原创 Mysql索引底层原理

Mysql索引:MySQL索引的建立对于MySQL的高效运行是很重要的,**== 索引可以大大提高MySQL的检索速度 == **。索引分为:单列索引和组合索引单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数

2020-07-19 00:03:05 215

原创 微信小程序开发之 js页面如何获取wxml页面中picker,input的值

微信小程序开发之 js页面获取wxml页面中input,picker,的值作为接口访问的参数。本文以picker为例。

2019-10-28 19:21:20 2781

原创 Django连接MySql数据库之版本不兼容问题的解决办法

最近在做Django项目时发现 与本地的mysql不匹配,经查资料发现原来Django2.1不再支持MySQL5.5,必须5.6版本以上。我本地装的是Django2.2.3,Mysql 5.5,因此存在版本不兼容问题,就无法正常连接数据库了。如何查看Django和mysql的版本呢?

2019-09-07 13:51:36 2888 1

原创 【无标题】

线程池多线程任务线程池配置类自定义线程工厂(根据需要重新)并行线程任务对象具体任务task(可以定义多个)并行线程处理抽象类多线程任务处理执行任务线程池配置类@Slf4j@Configurationpublic class ExecutorServiceConfig { //IO密集型任务 : 一般为2*CPU核心数 private Integer corePoolSize = 3; private Integer maximumPoolSize = 5; priva

2021-12-21 15:00:02 294

原创 必会的排序算法及代码实现

插入排序(增量策略):算法复杂度为O(n^2)插入排序的核心在于,它把一个无序数列看成两个数列,假如第一个元素构成了第一个数列,那么余下的元素构成了第二个数列,很显然,第一个数列是有序的,那么我们把第二个数列的第一个元素拿出来从右向左依次和第一个数列的数比较,遇到比自己大的就交换,比自己小的就插入到第一个数列,使它依然构成一个有序数列,直到第二个数列中的所有元素全部插入到第一个数列,这时候就排好序了。lst=[5,7,1,3,6,2,4]def insertSort(arr): for

2021-07-22 14:15:14 189

转载 Spring监听器

Spring监听器转载:https://www.jianshu.com/p/ba14551211dc

2021-07-21 15:56:24 172

原创 手动实现一个AOP

maven依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.1</version> </dependency> <dependency

2021-03-23 11:20:59 152

原创 Java链表操作-删除链表中指定元素,删除指定下标元素,反转链表

删除链表中指定元素删除指定下标的节点添加节点反转链表输出链表//定义链表class ListNode { int val; ListNode next; public ListNode(int x) { val = x; }}public class Solution { //删除链表中指定的元素 public static ListNode removeElements(ListNode head, int val) .

2021-03-21 17:17:34 953

原创 Java用数组实现一个栈

//定义栈的基本操作interface IStack{ int push(int element); int pop(); boolean isEmpty(); int size(); int peek();}public class MyStack implements IStack{ private static final int CAPITILY = 10;//初始容量10 private static final int FACTOR

2021-03-21 17:01:12 123

原创 Spring事件机制

spring事件机制

2021-03-12 23:22:08 91

原创 接口幂等性解决方案

接口幂等性解决方案后端幂等性实现:唯一索引(简单粗暴的办法)例如,如果我的id是自增主键,一定会有幂等性问题,因为会产生多条数据相同,但主键不同的数据。那如果是业务逐渐呢?我们把多个字段简历唯一索引,比如name,age,type三个字段建立唯一索引。这样就ok了!即使我的id相同,数据库也不会报错。此方案可以限制重复插入数据,当插入数据重复时数据库就会抛异常,保证不会出现脏数据。比如我们在用户注册场景,存贮用户场景等,要求一些唯一记录的场景下可以使用。token验证。比如客户端进入一个支

2021-03-12 23:16:40 451

原创 彻底理解深拷贝和浅拷贝

在 Java 中,除了基本数据类型(元类型)之外,还存在 类的实例对象 这个引用数据类型。而一般使用 【= 】号做赋值操作的时候。对于基本数据类型,实际上是拷贝的它的值,但是对于引用数据类型而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际上还是指向的同一个对象。而浅拷贝和深拷贝就是在这个基础之上做的区分:浅拷贝:拷贝基本数据类型,直接复制一份给新对象,而对于引用数据类型,只是进行了引用的传递,即只复制对象的引用给新对象。两个引用仍然指向同一个对象,在内存中占用同一块内存。则认为是浅拷

2021-03-12 12:04:07 171

原创 Redis总结

Redis总结NoSql略Redisredis安装与启动略性能测试redis-benchmark:是一个压力测试工具!#测试:100个并发连接,100000个请求redis-benchmark -h localhost -p 6379 -c 100 -n 100000redis基础知识:redis默认有16个数据库(默认使用的是第0个数据库)可以使用select进行切换数据库查看数据库大小&清空数据库#查看数据库大小dbsize#清空数据库 flushdb

2021-03-11 12:57:56 336

原创 谈一谈Synchronized底层原理

Synchronized底层原理sync锁的是什么?它是怎么就把对象给锁上了?是不是也应该有个变量来控制呢?上锁就是改变对象的对象头java对象头是实现synchronized的锁对象的基础,synchronized使用的锁对象是存储在Java对象头里的。那么问题来了。对象头又是什么鬼?什么是对象头?这就要知道java的对象布局,换句话说就是java对象由什么组成。在JVM中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。1、对象头 ------(大小固定)2、实例数据

2021-03-07 17:06:07 243

原创 详解HashMap&ConcurrentHashMap

HashMap从以下5点入手数据结构:1.7 数组+链表1.8 数组+链表+红黑树当链表长度大于8时会转换为红黑树,当红黑树节点小于6时会转换成链表。因为红黑树是自平衡二叉查找树,检索效率为O(logn) 引入红黑树是为了解决哈希碰撞后链表索引效率的问题,以加快检索速度。 hashmap结构源码:static class Node<K,V> implements Map.Entry<K,V> { final int hash;

2021-03-06 23:05:49 1893 1

原创 SpringMVC处理请求的执行流程

先记住几个概念:前端控制器 DipatcherServlet处理器映射器 HandlerMapping处理器执执行链 HandlerExecutionChain处理器适配器 HandlerAdapter视图解析器 ViewResolver执行流程:1、客户端请求到前端控制器(DispatcherServlet)前端控制器是整个请求响应的控制中心,组件的调用由它统一调度。2、前端控制器调用处理器映射器(HandlerMapping)从而获知,该请求该由哪个Controller来处理(并未调

2021-03-05 18:57:44 250

转载 Condition.await()、LockSupport.park()、Object.wait()、Thread.sleep()之间的区别

Thread.sleep()和Object.wait()的区别首先,我们先来看看Thread.sleep()和Object.wait()的区别,这是一个烂大街的题目了,大家应该都能说上来两点。(1)Thread.sleep()不会释放占有的锁,Object.wait()会释放占有的锁;(2)Thread.sleep()必须传入时间,Object.wait()可传可不传,不传表示一直阻塞下去;(3)Thread.sleep()到时间了会自动唤醒,然后继续执行;(4)Object.wait()不带时间

2021-02-25 21:09:43 775

原创 SpringBoot整合ES

导入依赖配置类基本操作class MyelasticsearchApplicationTests { @Autowired @Qualifier("restHighLevelClient") private RestHighLevelClient client; @Test void contextLoads() { } @Test void testCreateIndex() throws IOException { //1.创建索引请求 CreateIndexReques

2021-01-18 20:58:45 241

原创 ES获取聚合后聚合字段对应的文档信息

ES获取聚合后聚合字段对应的文档信息:使用top_hits查找 visitorId=10001 的信息并按照 enterpriseId 聚合,并获取聚合字段 enterpriseId 下对应的文档信息。GET /user_index/_search{ "query": { "bool": { "must": { "term": {"visitorId": "10001"} } } }, "aggs": { "aggenter

2021-01-18 11:28:59 1473

原创 ES查看所有结点和所有索引

初步检索 : _catGET /_cat/nodes: 查看所有节点GET/_cat/health:查看es健康状况GET /_cat/master:查看主节点GET /_cat/indice: 查看所有索引show databases;

2021-01-15 16:34:13 4442 1

原创 Java之JVM

JVMJava语言可能不是最强大的语言,但是JVM一定是最强大的虚拟机。文章目录JVM一、JVM概述什么是JVM?JVM的生命周期JVM发展历程二、类加载子系统类加载子系统的作用类加载子系统功能细分加载过程一、加载加载过程二、链接(验证、准备、解析)加载过程三、初始化阶段(执行类构造器方法 clinit() 的过程)类加载器的分类ClassLoader的常用方法及获取方法双亲委派机制(先委托父类去加载,父类不加载,再自己去尝试加载)双亲委派机制工作原理双亲委派机制的优势三、运行时数据区运行时数据区划分

2021-01-07 10:09:42 775

原创 Java集合

集合集合概念对象的容器,实现了对对象常用的操作,类似数组功能。集合和数组的区别:数组长度固定,集合长度不固定数组可以存储基本数据类型和引用类型,集合不能直接存储基本数据类型另外集合也不能直接存储java对象(换句话按说,集合只能存储引用类型)。位置都在 java.util包里。java中集合分为两大类一类是单个方式存储元素,这一类集合中超级父接口:java.util.Collection一类是以键值对的方式存储元素,这一类集合中超级父接口:java.util.MapCollecti

2021-01-07 00:25:45 123

原创 spring事务传播机制及失效场景

spring 事务传播机制&失效场景spring事务传播机制spring七中事务传播机制REQUIRED (默认)(TransactionDefinition.PROPAGATION_REQUIRED)支持当前事务,如果有事务就加入到当前事务,没有则会创建一个新的事务。SUPPORTS (TransactionDefinition.PROPAGATION_SUPPORTS)支持当前事务,如果有事务就加入到当前事务,如果没有事务的话,以非事务的方式执行。MAND

2021-01-07 00:14:47 1486

原创 Java多线程之JUC

JUC文章目录JUC1、什么是JUC?1.1、进程和线程1.2、并发&并行1.3、wait和sleep的区别2、锁(*重点)2.1、synchronized和Lock的区别2.2、生产者&消费者问题2.3、那么锁是什么?如何判断锁的是谁?(8锁现象)3、集合类不安全4、Callable接口5、常用的辅助类(必会)5.1、CountDownLatch(减法计数器)5.2、CyclicBarrier(加法计数器)5.3、semaphore(信号量)6、读写锁(共享锁,排他锁)7、阻塞队列7.1

2021-01-07 00:12:42 735 1

原创 Java多线程

什么是进程?什么是线程?它们之间有什么关系?进程是一个应用程序。进程是系统进行资源分配和调度的一个独立单位,最小的资源管理单位。线程是一个进程中的执行单元/执行场景。线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,最小的 CPU 执行单元。一个进程可以启动多个线程。进程与进程之间内存独立不共享。线程与线程之间可能就会存在资源共享,在java中是堆内存和方法区内存共享,栈内存不共享,栈内存独立,一个线程一个栈。假设启动10个线程,会有10个栈空间,每个栈

2021-01-06 23:49:27 118

转载 springboot整合redis实现消息发布和订阅

springboot整合redis实现消息发布和订阅先了解一下redis消息发布订阅的机制:发布者将消息发布在一个channel(可认为是频道)上,可以供多个订阅者订阅查看信息,所以说channel是连接发布者和订阅者之间的桥梁。1.实现一个用于接听消息的实体类@Componentpublic class MessageReceiver implements MessageListener { @Autowired private RedisTemplate redisTemp

2021-01-06 20:25:42 550

原创 判断字符串是否为空的一个小细节

判断字符串为空时,一定要考虑预防空指针异常判断字符串为空的方法str == null;"".equals(str);str.length <= 0;str.isEmpty();Object.nonNull(str)说明:1、null表示这个字符串不指向任何的东西,如果这时候你调用它的方法,那么就会出现空指针异常。2、"" 表示它指向一个长度为0的字符串,这时候调用它的方法是安全的。3、null不是对象,"" 是对象,所以null没有分配空间,"" 分配了空间。例如:Stri

2020-12-28 13:25:27 487 1

原创 @Value和@ConfigurationProperties获取值的区别

将配置文件中的配置,映射到类中,和类的属性一一对应。通常有两种方法:@ConfigurationProperties@Value无论配置文件是yml还是properties他们都能获取到值。@ConfigurationProperties@Value功能批量注入配置文件中的属性一个个指定松散绑定(松散语法)支持不支持SpEL不支持支持JSR303数据校验支持不支持复杂类型封装支持不支持注意@Value不支持想Map,List

2020-12-20 21:10:43 202

原创 @RequestBody和@RequestParam的区别与用法

https://blog.csdn.net/justry_deng/article/details/80972817

2020-12-10 13:04:56 7339

转载 @Valid的用法详解

@Valid 注解通常用于对象属性字段的规则检测,具体啥意思,下面让我娓娓道来:下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解。那么,首先,我们会有一个员工对象 Employee,如下 :/** * 员工对象 * * @author sunnyzyq * @since 2019/12/13 */public class Employee { /** 姓名 */ public String name; /** 年

2020-11-30 15:26:06 82452 14

原创 Java实现栈

Java基于数组实现栈:/** * Java基于数组实现栈 */public class MyStack<T> { //定义一个数组 private Object[] stack; //模拟栈针 private int needle; //初始化栈 MyStack(){ stack = new Object[10];//初始化容量是10 } //取栈顶元素 public T peek(){

2020-11-25 13:36:10 94

原创 Spring梳理与总结

Spring文章目录SpringDay1: 框架概述和基于XML的IOC配置1.Spring概述1.1、什么是Spring?1.2、Spring的两大核心(面试常问)1.3、Spring的发展历程和优势1.4、Spring体系结构2、程序的耦合及解耦2.1、曾经案例中问题2.2、工厂模式解耦3、IOC概念和spring中的IoC3.1、spring中基于XML的IOC环境搭建3.2、IOC中bean标签和管理对象的细节Day1: 框架概述和基于XML的IOC配置1.Spring概述1.1、什么是Sp

2020-11-24 18:47:53 325

原创 解决执行docker命令每次都要输入sudo权限问题

初入职场,发现在Xshell里 每次执行docker命令时都要在命令前加sudo 以root权限来执行命令,否则就会报错Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/json: dial unix /var/run/docker.sock:

2020-11-07 12:09:41 1806

原创 Linux查看当前用户及其权限管理

linux查看当前用户cwho am i 或whoami或who mom likes[ec2@ip-10-10-5-79 ~]$ who am i创建用户打开终端,输入:sudo adduser [用户名][ec2@ip-10-10-5-79 ~]$ sudo adduser xiaozhou切换用户打开终端,输入:su [用户名]或者su -l [用户名][ec2@ip-10-10-5-79 ~]$ su xiaozhou用户组在 Linux 系统中,每个用户都有一个归属(用户组

2020-11-07 11:52:05 15367 1

原创 找字串个数

题目描述度度熊收到了一个只有小写字母的字符串S,他对S的子串产生了兴趣,S的子串为S中任意连续的一段。他发现,一些子串只由一种字母构成,他想知道在S中一共有多少种这样的子串。例如在串”aaabbaa”中,度度熊想找的子串有”a”,”aa”,”aaa”,”b”,”bb”五种。import java.util.HashSet;import java.util.Scanner;import java.util.Set;public class FindSubString { publ

2020-10-11 11:07:52 229

原创 Mybatis中 #{} 和 ${}的区别

Mybatis中 #{} 和 ${}的区别动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。经常碰到这样的面试题目:#{}和${}的区别是什么?网上的答案是:#{}是预编译处理,$ {}就是简单的字符串替换。mybatis在处理#{}时,会将sql中的#{}替换为 ? 号,调用PreparedStatement的s

2020-10-09 10:34:04 171 1

空空如也

空空如也

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

TA关注的人

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