- 博客(34)
- 资源 (49)
- 收藏
- 关注
原创 springboot mybatis 踩坑--服务启动报错:No qualifying bean of type ‘***.dao‘ available
服务启动报错:No qualifying bean of type ‘***.dao’ available。修改方式:改成一直就行,比如 UserDao 对应的 UserMapper。报错原因:dao层类命名和mapper不一致。
2022-09-28 10:46:48
792
原创 Go语言之旅 学习笔记(三)—— 并发
Go语言之旅 学习笔记(三)—— 并发并发goroutine信道带缓冲的信道并发goroutineGo 程(goroutine)是由 Go 运行时管理的轻量级线程。go f(x, y, z)会启动一个新的 Go 程并执行f(x, y, z)信道信道是带有类型的管道,你可以通过它用信道操作符 <- 来发送或者接收值。ch <- v // 将 v 发送至信道 ch。v := <-ch // 从 ch 接收值并赋予 v。(“箭头”就是数据流的方向。)和映射与切片
2022-02-16 14:32:39
289
原创 Go语言之旅 学习笔记(二)—— 方法和接口
Go语言之旅 学习笔记(二)—— 方法和接口方法和接口方法指针接收者指针、函数、方法接口类型断言类型选择fmt包常用的Stringer和error接口Reader接口图像Go语言之旅 学习笔记(一)—— 基础方法和接口方法1、方法就是一类带特殊的 接收者 参数的函数。方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间。在此例中,Abs 方法拥有一个名为 v,类型为 Vertex 的接收者。package mainimport ( "fmt" "math")type
2022-02-16 14:08:42
356
原创 Go语言之旅 学习笔记(一)——基础
Go语言之旅 学习笔记基础包、变量和函数包导入导出名函数变量基本类型常量流程控制语句forif练习:循环与函数switchdefer指针结构体数组slice切片map映射函数方法和接口
2022-02-15 15:37:40
693
原创 Mybatis的三种SQL注入解决方案
Mybatis的三种SQL注入解决方案前言Mybatis的SQL注入模糊查询in 之后的多个参数order by 之后前言SQL注入漏洞作为WEB安全的最常见的漏洞之一,在java中随着预编译与各种ORM框架的使用,注入问题也越来越少。新手代码审计者往往对Java Web应用的多个框架组合而心生畏惧,不知如何下手,希望通过Mybatis框架使用不当导致的SQL注入问题为例,能够抛砖引玉给新手一些思路。Mybatis的SQL注入Mybatis的SQL语句可以基于注解的方式写在类方法上面,更多的是以x
2021-05-13 15:39:04
4343
原创 Collections.singletonList方法的使用
概述这个方法主要用于只有一个元素的优化,减少内存分配,无需分配额外的内存,可以从SingletonList内部类看得出来,由于只有一个element,因此可以做到内存分配最小化,相比之下ArrayList的DEFAULT_CAPACITY=10个。源码 private static class SingletonList<E> extends AbstractList<E> implements RandomAccess, Serializabl
2020-10-16 10:46:04
3989
1
原创 Java集合容器面试题(2020最新版) 笔记
Java集合容器面试题(2020最新版) 笔记概述集合框架底层数据结构哪些集合类是线程安全的?Java集合的快速失败机制 “fail-fast”?Collection接口List接口Set接口Queue接口Map接口概述Java 容器分为 Collection 和 Map 两大类,Collection集合的子接口有Set、List、Queue三种子接口。我们比较常用的是Set、List,Map接口不是collection的子接口。Collection集合主要有List和Set两大接口List:一个
2020-10-15 16:04:25
3196
原创 Optinal踩坑
之前为了解决代码中的空指针异常,经常使用Optional.ofNullable(doA()).orElse(doB())原本以为doA返回null才会执行doB,后来发现doA()和doB()都会执行例如:public class TestOptional { public static void main(String[] args) { String bb = Optional.ofNullable(doA()).orElse(doB()); System.
2020-09-29 19:54:17
213
原创 Java基础知识面试题(2020最新版) 笔记
Java基础知识面试题(2020最新版) 笔记基础语法java基本数据类型Math.round(11.5) 等于多少?Math.round(-11.5)等于多少float f=3.4;是否正确short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗Java语言采用何种编码方案?有何特点?访问修饰符 public,private,protected,以及不写(默认)时的区别final 有什么用?面向对象抽象类和接口重写与重载构造器(constructor)
2020-08-13 17:13:33
697
1
原创 BIO、NIO、AIO区别总结
BIO、NIO、AIO有什么区别在学习Java I/O类库时,容易混淆NIO、BIO、AIO这几个概念,同时对于阻塞和非阻塞、同步和异步的理解也较为晦涩,这篇文章是对这几个概念的一些区分以及个人的一些见解。一、同步阻塞I/O(BIO):同步阻塞I/O,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制来改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务端资源要求比较高,并发局限于
2020-08-13 14:35:08
320
原创 HttpClient 中的三个超时区别及连接定时清理
RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(config.connReqTimeout) //从连接池中获取连接的超时时间 //与服务器连接超时时间:httpclient会创建一个异步线程用以创建socket连接,此处设置该socket的连接超时时间
2020-08-10 15:22:28
5538
原创 Java虚拟机(JVM)面试题(2020最新版) 笔记
@[TOC](Java虚拟机(JVM) 学习笔记)java内存模型 JMMJMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。线程A从主内存中将共享变量读入线程A的工作内
2020-08-04 16:33:03
667
原创 Java并发编程 之 线程池基础
Java并发编程之线程池线程池的作用源码分析ThreadPoolExecutor构造器核心方法Executors提供四种线程池newCachedThreadPoolnewFixedThreadPoolnewSingleThreadExecutornewScheduledThreadPool线程池的作用new Thread的弊端:1、每次都创建和销毁线程,开销大;2、没有统一的线程管理,可能导致线程过多,1)CPU线程切换开销大;2)oom3、功能少,没有定时执行、定期执行、线程中断等功能线程池可
2020-07-30 14:22:51
157
原创 java并发编程JUC并发包之LockSupport
java并发编程JUC并发包之LockSupport概述源码分析park方法unPark方法使用方法写在前面,JUC基础知识,详见JUC并发包核心之AbstractQueuedSynchronizerjava并发编程面试必备,详见 java并发编程面试必备概述1、java并发编程JUC并发包系列,LockSupport是最特殊的,底层和AQS无关,反而AQS源码中队列的阻塞和通知,是使用LockSupport来实现的2、LockSupport不会释放锁,LockSupport不会释放锁,Lo
2020-07-21 17:47:26
237
原创 java并发编程JUC并发包之Semaphore
这里写目录标题概述源码分析构造器acquire方法release方法使用方法写在前面,JUC基础知识,详见JUC并发包核心之AbstractQueuedSynchronizerjava并发编程面试必备,详见 java并发编程面试必备概述常用场景:限流Semaphore也叫信号量,在JDK1.5被引入,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。Semaphore内部维护了一组虚拟的许可,许可的数量可以通过构造函数的参数指定。访问特定资源前,必须使用ac
2020-07-21 16:08:41
203
原创 java并发编程JUC并发包之Phaser
源码解析可以看下:死磕 java同步系列之Phaser源码解析栗子:public class MyTest { public static void main(String[] args) { Phaser phaser = new Phaser(3) {//共有3个工作线程,因此在构造函数中赋值为3 @Override protected boolean onAdvance(int phase, int registeredParties) { System.out.pr
2020-07-21 15:11:37
295
原创 java并发编程JUC并发包之CyclicBarrier
java并发编程JUC并发包之CyclicBarrier概述源码解析构造器await方法使用写在前面,JUC基础知识,详见JUC并发包核心之AbstractQueuedSynchronizerjava并发编程面试必备,后续计划 java并发编程面试必备概述字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于bar
2020-07-20 16:34:57
218
原创 java并发编程JUC并发包之CountDownLatch
java并发编程JUC并发包之CountDownLatch构造方法内部类主要方法countDown方法await方法示例写在前面,JUC基础知识,详见JUC并发包核心之AbstractQueuedSynchronizerjava并发编程面试必备,后续计划 java并发编程面试必备构造方法 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("coun
2020-07-17 15:57:12
216
原创 SpringBoot Dropwizard等框架,@Service注解默认单例,工作中遇到的问题
项目背景:1、大项目基于PaaS平台,采用微服务架构,所以服务会注册在msb上,调用其他服务,通过msb查询到服务所在pod的ip和port2、服务之间的调用都是通过rest接口调用,代码部分通过Retrofit实现工作中遇到的问题:服务A(我们的服务)调用服务B的某个接口,返回“No route to host (Host unreachable)”分析结论:我们的服务A部署启动时,Dopwizard(或者SpringBoot)会实例化@Service注解的类,默认是单例。在这个类中有个成员变
2020-07-16 15:44:09
2114
原创 java并发编程JUC并发包之ReentrantLock
java并发编程JUC并发包之ReentrantLock概述成员属性及构造方法内部类Sync类NonfairSync类FairSync类常用方法(函数)Condition接口接口中方法condition实现生产者消费者condition实现交替输出A1B2C3写在前面,JUC基础知识,详见JUC并发包核心之AbstractQueuedSynchronizerjava并发编程面试必备,详见[] java并发编程面试必备概述1、轻量级锁2、可重入(通过state计数)、可中断、可限时3、支持公
2020-07-14 09:08:03
259
原创 JUC并发包核心之AbstractQueuedSynchronizer
JUC并发包核心之AbstractQueuedSynchronizer底层数据结构源码分析继承关系内部类常用方法acquire方法release方法总结底层数据结构1、volatile int state ,volatile保证state线程间可见和禁止指令重排序,关于volatile用法,后续在其他文章中补充2、等待队列,CAS操作(compareAndSet或者叫compareAndSwap,不同场景不同叫法)掌握这个底层原理,JUC并发包下几乎所有的类,比如常用的ReentrantLock、C
2020-07-08 16:57:19
663
原创 JUC并发包之阻塞队列LinkedBlockingQueue、LinkedBlockingDeque和ArrayBlockingQueue
特点1、LinkedBlockingQueue:单向链表可有界,无界时,最大容量是Integer.MAX_VALUE(默认构造器,带参构造器可以传入capacity)FIFO两把 ReentrantLock锁,入队列和出队列锁,两个condition用于阻塞和通知2、LinkedBlockingDeque:双向链表可有界,无界,同LinkedBlockingQueue一把 ReentrantLock 锁,两个condition3、ArrayBlockingQueue数组FIFO构
2020-07-07 11:27:26
620
原创 PKCS7Tool 取得签名工具加载证书库, 取得签名证书链和私钥
参考:https://www.oschina.net/code/snippet_1434_1503/** * @(#)PKCS7Tool.java 1.0 2008-9-23 * Copyright (c) 2008 Bank Of China Software Center * All rights reserved. */ import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import ja
2020-06-29 16:05:03
2065
原创 Spring 面试点整理(生命周期、aop、循环依赖)
二、Spring1、springBean生命周期:https://www.cnblogs.com/zrtqsk/p/3735273.html 现在开始初始化容器 这是BeanFactoryPostProcessor实现类构造器!! BeanFactoryPostProcessor调用postProcessBeanFactory方法 这是BeanPostProcessor实现类构造器!! 这是InstantiationA...
2020-06-25 16:57:47
218
原创 哈希加密 和 base64编码
一、哈希HASH哈希(散列)函数 MD5 SHA1/256/512 HMACHash的特点: 1.算法是公开的 2.对相同数据运算,得到的结果是一样的 3.对不同数据运算,如MD5得到的结果是128位,32个字符的十六进制表示,没法逆运算1.MD5加密MD5加密的特点: 不可逆运算 对不同的数据
2020-06-25 16:53:51
3866
转载 加密算法名称、OID与URI对应表
Cryptographic AlgorithmsRegistration ProceduresFirst Come First ServedReference[RFC5698]Name OID/URI Reference rsaEncryption...
2020-06-25 11:33:09
3420
原创 Java-IO之DigestInputStream sha256 计算hash值
import java.io.ByteArrayInputStream;import java.security.DigestInputStream;import java.security.MessageDigest;public class DigestIO { private static String message = "hello"; public static void main(String[] args) throws Exception { By
2020-06-24 17:17:31
1009
原创 Java SHA-256加密的两种实现方法详解
本文实例讲述了Java SHA-256加密的两种实现方法。分享给大家供大家参考,具体如下:最近在做注册的一个功能,密码要进行加密,一开始想用MD5加密,但是听说被破解了已经,于是想玩玩SHA-256加密。学习了下,总结两种方法供后面参考:1、利用Apache的工具类实现加密:maven: 1 2 3 4 5 <dependency> <groupId>commons-codec</groupI.
2020-06-24 16:53:24
20205
转载 HTTPS中CA证书的签发及使用过程
HTTPS中CA证书的签发及使用过程 </h1> <div class="clear"></div> <div class="postBody"> 1,HTTPS简单来讲,HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,...
2020-06-24 15:46:40
6179
转载 优快云如何转载别人的文章(快速转载)
1、找到要转载的文章,用chrome浏览器打开,右键选择检查2、在chrome中下方的框里找到对应的内容,html脚本中找到对应的节点(article_con...
2020-06-24 15:28:56
322
1
原创 java 数字签名 sha256、RSA 算法解析(干货)
java 数字签名 算法解析(干货)欢迎使用Markdown编辑器数字签名算法概述功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如
2020-06-24 15:10:52
11272
1
原创 数据库面试必备(事务隔离级别、MVCC)
aop,代理:https://www.cnblogs.com/jie-y/p/10732347.htmlspringBean生命周期:https://www.cnblogs.com/zrtqsk/p/3735273.html 现在开始初始化容器 这是BeanFactoryPostProcessor实现类构造器!! BeanFactoryPostProcessor调用postProcessBeanFactory方法 这是BeanPostPr...
2020-06-05 11:00:19
451
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人