- 博客(42)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 并发编程学习笔记大纲
并发编程中已完成或计划完成的笔记JVM运行核心逻辑:Java文件编译成二进制文件存在的编译重排序问题的认识线程基础知识:了解线程的6种状态、以及基础的APIJMM的认识:了解硬件层面上的内存屏障、运行时指令重排序、JMM模型线程通信: 了解线程通信基础的三种方式,明白多线程间工作协同常用关键字synchronized:明白常见用法,以及CAS机制、锁的升级流程常用关键字volatil...
2020-03-25 23:06:05
195
原创 aiohttp ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] 错误处理
这个问题原因吧其实就是3.10 开始官网更新了TLS 堆栈默认安全设置。感兴趣的可以看下链接。
2023-10-23 19:10:33
949
原创 MySQL主从数据同步,出现Slave_SQL_Running:no和slave_io_running:no解决方法
MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法
2021-02-01 11:06:16
220
原创 容器学习之01ArrayList
搞懂ArrayList1. 简介2. 简单事例3. 源码分析3.1 构造函数3.2 新增和扩容实现3.3 扩容的本质3.4 删除3.5 迭代器4. 总结1. 简介ArrayList 我们几乎每天都会使用到,但关于ArrayList的细节我们是否真正关注过?本文大家一起通过源码来重新认识ArrayList。ArrayList顾名思义,其内部是用数组来存放数据。在初始化时,会为我们生成一个默认大...
2020-04-05 10:44:39
236
原创 高并发学习之14锁的源码在梳理
通过重入锁再次梳理锁的知识点1. 简介2. Lock3. AbstractQueuedSynchronizer(AQS抽象队列同步器)4. 从ReentrantLock重入锁开始1. 简介在前面的文章中我们介绍了lock接口,AQS同步器,重入锁,condition接口,这篇文章将准备将以上知识点在从源码上梳理一遍。2. Lock在java5以后,增加了JUC的并发包且提供了Lock接口用...
2020-04-02 14:14:48
280
原创 Java根据Id快速最优分组
话不多说,都有注释直接上代码。Integer[] userArr = {10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015,10016}; List<Integer> ...
2020-04-02 11:20:37
973
原创 高并发学习之13Condition的实现原理分析
了解Condition接口1. 简介1. 简介任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wait(long timeout)、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式。Condition接口也提供了类似Object的监视器方法,与Lock配合可以...
2020-04-01 23:09:30
318
原创 高并发学习之12ReentrantReadWriteLock的实现原理分析
ReentrantReadWriteLock原理分析1. 简介2. 读写锁的事例3. 读写锁实现分析3.1 读写状态的设计3.2 写锁的获取与释放3.3 读锁的获取与释放3.4 锁降级4 总结1. 简介同样的在锁的认识中,我们提到了读写锁ReentrantReadWriteLock,的基本使用,在AQS中,我们分析了锁的基本实现方式,在上一篇中我们分析了重入的锁ReentrantLock的实现...
2020-04-01 13:56:08
130
原创 高并发学习之11ReentrantLock的实现原理分析
ReentrantLock的实现原理分析1. 简介2. 重进入的实现方式3. 公平与非公平获取锁的区别4. 总结1. 简介在锁的认识中我们提到了ReentrantLock 的基本使用,以及在上篇文章AQS中,也重点说明了AQS的通过同步状态来给Lock提供锁的状态同步以及队列等待、线程唤醒/阻塞等操作。其中ReentrantLock就是基于AQS方式实现的一种锁。重入锁ReentrantLo...
2020-03-31 22:22:40
202
原创 高并发学习之10AQS的理解
锁的关键实现方式AQS1. AQS简介2. AQS简单事例3. AQS内部分析4. 独占式同步状态获取与释放1. AQS简介在上一篇锁的认识中我们简单介绍了一下锁,已经锁的基本使用方式,和锁的两种重要的实现类ReentrantLock(重入锁)、ReentrantReadWriteLock(读写锁) 的简单使用,在本篇中,将详细探讨其实现的关键步骤AQS(AbstractQueuedSynch...
2020-03-31 17:39:32
323
原创 高并发学习之09锁的认识
简单了解下锁的理解1. Java中的锁的概念2. Lock简介3. Lock的初步使用3.1 ReentrantLock(重入锁)讲解3.2 ReentrantReadWriteLock(读写锁)4. Lock和synchronized的简单对比1. Java中的锁的概念在Java中锁大致分为以下几种:自旋锁 :为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直到成功。...
2020-03-26 21:28:56
296
原创 高并发学习之08原子操作类
JDK中13种原子操作类1. 简介2. 原子更新基本类型类2.1.原子更新基本类型类2.1.2 原子类实现原理3. 原子更新数组4. 原子更新引用类型5. 原子更新字段类1. 简介在前面文章synchronized中,我们介绍了synchonized 轻量级锁时,谈到其是CAS机制实现的,本文我们将讨论JDK为我们提供的13种原子操作类,他们的实现原理都是CAS机制。13种原子类在java.u...
2020-03-26 12:57:42
102
原创 高并发学习之07关键字final
了解关键字final1. final 简介2.final 基础用法2.1 final修饰变量2.2 final 修饰 方法2.3 final修饰类2.4 final关键字举例3. 多线程中的final3.1 final域的重排序规则3.2 写final域的重排序规则3.3 读final域的重排序规则3.4 final域为引用类型3.5 final的总结1. final 简介final可以修饰变...
2020-03-25 22:16:06
273
原创 高并发学习之06关键字volatile
了解关键字volatile1. volatile 简介2. volatile原理3. 简单了解下JMM中定义的happens-before规则4. volatile写-读建立的happens-before关系5.volatile写-读的内存语义6.volatile内存语义的实现6.1 指令重排序6.2 内存屏障 本文参考《Java并发编程的艺术》1. volatile 简介在上一篇文章中我...
2020-03-25 14:07:41
192
原创 高并发学习之04线程间通信
必须知道的线程通信1.线程间通信1.1 线程间协同1.2 suspend/resume1.3 wait/notify1.4 wait/notify的经典范式1.6 park/unpark 的使用1.7 Thread.join()的使用1.8 ThreadLocal的使用1.线程间通信线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行,直到终止。但是,每个运行中的...
2020-03-23 14:07:16
230
原创 高并发学习之03JMM(Java内存模型)
了解JMM是什么1.硬件层面上的概览1.1.CPU的多级缓存1.2.缓存一致性问题1.2.1 总线锁1.2.2 缓存锁1.2.3 缓存一致性协议1.3. CPU优化-运行时指令重排1.3.1 带来的两个问题1.3.2 内存屏障(Memory Barrier)2.JMM2.1JMM(Java 内存模型)2.2 JVM 与JMM关系2.3 JMM与硬件内存关系1.硬件层面上的概览要想了解Java中...
2020-03-18 23:02:20
244
原创 高并发学习之02线程基础知识
解开线程面纱1.什么情况下应该使用多线程2.如何应用多线程2.1 继承Thread类创建线程2.2 实现Runnable 接口创建线程2.3 实现 Callable接口通过FutureTask来创建Thread线程3.线程的6中状态4.线程启动和终止5.线程的安全性5.1 多级缓存5.2 缓存一致性协议5.3 CPU性能优化-运行时指令重排序5.4 内存屏障6 线程间通信6.1 park/unpa...
2020-03-18 21:27:31
147
原创 高并发学习之01JVM运行核心逻辑
开启并发编程1. Java文件是怎么被JVM运行的2. JAVAP 查看class文件2.1 什么是class文件2.2 Javap命令直接 查看class文件2.3 IDEA 查看class文件3.说明1. Java文件是怎么被JVM运行的一个 .java 源代码通过编译器 编译之后变成一个**.class**字节码文件,jvm启动加载字节码文件,会在内存中大致划分两大区域 :线程共享区...
2020-03-17 23:04:30
190
原创 spring-data-jpa 入门三:常用技术使用之复杂查询
spring-data-jpa 入门 spring-data-jpa 入门二:常用技术使用之关联关系查询配置 前面基本上将spirng-data-jpa常用查询写清楚了,一般如果不是复杂的查询基本上都能满足了,而且我们并没有做太多的事情,花费时间大多是在entity层实体的配置。现在我们将介绍下在复杂情况下的查询方法的使用:常用技术使用 原生sql查询动态sql(两种方式:Cr...
2018-09-06 15:52:32
1823
1
原创 spring-data-jpa 入门二:常用技术使用之关联关系查询配置
spring-data-jpa 入门在上文中我们介绍了spring-data-jpa简单的实现原理、简单的增删改查、以及简单的分页查找、排序。基本上通过上文介绍,我们可以写一些简单的增删改查了!但是日常开发中肯定不是仅仅单表查询。那么我们将继续探讨spring-data-jpa一些其他使用放法:常用技术使用 多表关联关系查询 原生sql查询动态sql(两种方式:Criteria、继...
2018-09-05 17:38:28
1074
原创 spring-data-jpa 入门
***[什么是jpa](https://baike.baidu.com/item/JPA/5660672?fr=aladdin)***偶然情况下看了一篇讨论的帖子内容大概是在说jpa与mybatis的技术选型[这是地址](https://www.cnblogs.com/cmfwm/p/8109433.html),哈哈不怕出丑,其实当时我对jpa的印象,还只停留在jpa只是一套orm规范,除了这...
2018-09-04 22:54:16
2392
原创 Netty入门(二)-------HelloWord
Netty入门(一)——为什么使用Netty上篇简单介绍了下为什么使用Netty,这篇我们将简单的搭个HelloWord。 在Netty使用手册中说了世界上最简单的协议不是”Hello,World!”,是DISCARD,他是一种丢弃了所有接受到的数据,并不做有任何的响应的协议,本文中就不已抛弃协议为蓝本了,我们就简单搭个服务端、客户端。 客户端发送信息、服务端接收处理并返回给客户端结果。 ...
2018-05-11 17:01:58
334
原创 Netty入门(一)------为什么使用Netty
Netty简介Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议。 Netty 的内部实现时很复杂的,但是 Netty 提供了简单易用的 api 从网络处理代码中解耦业务逻辑。简单点说就是Netty提供了一个简单...
2018-05-11 15:30:44
723
转载 log4j.properties 详解与配置步骤
一、log4j.properties 的使用详解1.输出级别的种类ERROR、WARN、INFO、DEBUG ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session丢失 INFO 为一般要显示的信息,比如登录登出 DEBUG 为程序的调试信息2.配置日志信息输出目的地log4j.appender.appenderName = fully.qual...
2018-04-27 11:48:54
270
原创 idea 自动生成.gitignore文件 .ignore插件忽略不必要提交的文件
最近发现idea是可以自动生成git 提交时使用的.gitignore文件 ,(这个文件的作用就是在提交文件到git上时忽略某些文件)。因为太懒直接把这个插件装上了; 用两个方式1:手动安装 2:直接在插件库查找安装,因为两种差不多直说手动安装了。 手动安装到这个地址:idea官方插件库 下载完成之后在idea中点击File->Settings 在左侧菜单找到Plugins,点击I...
2018-04-26 22:27:46
3559
1
原创 Spring boot +Mybatis 实现多数据源(一:最简单版本)
多数据源的问题在实际项目中还是经常遇到的,例如读写分离的数据库、马甲类型服务器等。不多说上干货,特别说明下本人用的开发工具是idea。 创建Spring Boot项目 菜单 file–》new –》project–》spring initializer 填写自己的group、artifact之后 勾选web开启web属性 数据库选着mysql、mybatis 项目初始化完成...
2018-03-22 09:59:12
3023
1
转载 maven版本号管理
如今所说的maven版本号不同于SVN的版本号控制哦!!!之前我们说过Maven的版本号分为快照和稳定版本号,快照版本号使用在开发的过程中,方便于团队内部交流学习。而所说的稳定版本号,理想状态下是项目到了某个比較稳定的状态。这个稳定包括了源码和构建都要稳定。一、怎样衡量项目的稳定状态呢?所有的自己主动化測试应当所有通过项目没有配置不论什么快照版本号的依赖项目没有配置不论什么快照版本号的插件项
2017-10-31 09:35:32
3139
原创 JDK9 之模块化
Java 9 特性以及解决的问题我们将探讨关于Java 9模块化系统的以下主题:1.介绍 Oracle 将Java 9从2017年3月延期到2017年9月进行发行。我们知道, Java SE 8提供了三大新特性(加上少量改进和新特性)。Lambda 表达式Stream APIDate API 同样地, Java SE 9提供了三大新特性(加上少量改进和新特性):Java模块系统(
2017-09-30 15:00:06
1853
原创 java 加密指定位数字符串
/** * 加密字符串保留指定位数 * @param source 数据源 * @param begin 保留前几位开始加密 * @param end 保留后几位 */ public static String encryptString(String source,Integer begin,Integer end){
2017-09-27 22:20:56
4893
原创 Linux下安装Mysql(yum指令)
1. 下载mysql的repo源``` wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm```2. 安装mysql-community-release-el7-5.noarch.rpm包```sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm```3.
2017-08-31 00:57:22
556
原创 HTTP 中 GET 与 POST 的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。 你轻轻松松的给出了一个“标准答案”:•
2017-08-29 09:19:52
380
原创 js获取富文本编辑器的值之后报错Uncaught SyntaxError: Unexpected token 发 in JSON at position 0
这两天在写接口时遇到一个问题,前端获取富文本编辑器值之后发送给接口,但是报错发起xss攻击,因为富文本框里的值,绝大部分都是带样式、带图片链接地址的,我们框架是配置了xss请求过滤的,因此浏览器报错Uncaught SyntaxError: Unexpected token 发 in JSON at position 0。 这个问题,首先xss过滤是不能关的,所以只能在前端发起请求时将值包装一下,
2017-08-17 12:20:35
1692
原创 Jersey 常用的resultful 风格的标签注解
最近用jersey写resultful风格的接口,一些注解还是容易混淆,在自己博客里我给整理下,后面如果碰到其它的会继续补充,以后查的时候也不用百度了 1. @PathParam 使用@PathParam可以获取URI中指定规则的参数,如: @DELETE @Path(“login/{platformId}”) @Produces(MediaType.APPLICATION_JSON)
2017-08-14 23:17:10
1182
原创 微信第三方登录redirect_uri 参数错误
本人碰到这个问题花了半个小时在网上找原因,基本上都说的差不多 授权回调域 必须是 www.biadu.com 这样的格式。可是一看自己的回调域填的绝对没问题,那就不是这个原因,后来一看官方文档这么解释的redirect_uri 重定向地址,需要进行UrlEncode,一看自己的没有做url转码 ,于是到这个http://tool.chinaz.com/tools/urlencode.aspx地
2017-07-31 16:35:24
26763
11
原创 JAVA对象序列化理解
什么是序列化怎么序列化为什么序列化反序列化会遇到什么问题如何解决相关注意事项1.什么是序列化Java的对象序列化其实就是将一个实现了serializable接口的对象转换成一个二进制byte数组,这样日后使用这个对象时候就能将这个对象及其数据通用反序列化转换回来,重新构建。在接口开发或者其它容易跨平台操作时,使用对象序列化就意味着能自动补全操作系统的差异,例如在windows系统上创建一个
2017-07-09 19:09:36
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人