自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CringKong的博客

学习速度永远跟不上技术发展速度,更何况技术已经发展了几十年

  • 博客(59)

原创 ajax传输Json的正确方式

1.jquery的方式let data = { "name" : "xxx", "age" : 20}$.ajax({ url: 'localhost:8080/api/xxxxx', dataType: 'json', type: 'post', data: JSON.stringify(data), contentType: 'applica...

2020-02-27 18:42:12 183

原创 Tomcat日志乱码解决

最近一直在用Springboot,很少再

2020-01-10 15:58:06 105

原创 Redis实践-存储Java对象

Redis作为目前主流的缓存数据库,提供了丰富的数据结构,这次做的项目里我们大量使用了Redis作为数据缓存,甚至在某些场景下直接作为了数据库使用(当然这是建立在公司内部基础组件足够可靠的前提下),由于项目是从零开始,在使用Redis的过程中,遇到了一些设计上的挑战和问题,因此特别在博客里记录下来。最基础的肯定就是Java对象的存储,使用SQL型数据库的时候,可以借助ORM框架直接进行把Java...

2019-12-16 21:43:43 169

原创 Log4j2配置以及滚动日志文件

最近项目里用到了Log4j2,在这里咱们就不谈Log4j2性能了,可以看一下官方给的测评图,真香。但是使用时因为和Log4j配置上有很大区别,也踩了不少坑,这里总结一下。1.包依赖使用Log4j2首先要引入Log4j2的包依赖,这里以maven依赖为例。 <dependency> <groupId>org.ap...

2019-12-12 21:32:23 1009

原创 静态代理和动态代理

静态代理和动态代理,都是基于代理模式实现的一种对于类的方法的增强。静态代理所谓静态代理,其实就是在编译期完成代理(JAVA术语中喜欢把编译期完成的东西叫做静态XX),就是我们之前写的代理模式,被代理类和代理类实现同一个接口,然后代理类通过依赖被代理类,实现方法的增强。public class StaticProxy { static interface Image{ void dis...

2019-09-21 15:29:35 129

原创 HashMap扩容流程

文章目录为什么扩容?什么时候扩容?如何扩容?今天在和同时讨论HashMap的时候,提到了扩容和冲哈希的事情,然后我发现大家都是一种半懂不懂的状态。于是回去做了一番功课,写下这篇文章。HashMap的扩容,又被很多人叫rehash、重哈希,我本人是很反对这个叫法的,事实上HashMap扩容的时候,Node中存储的Key的hash值并没有发生变化,只是Node的位置发生了变化。首先说为什么需要扩...

2019-09-21 15:14:30 275

原创 编译器重排序

在一些讲Java并发编程的书中,经常会出现JMM内存模型、volatile关键字、重排序、乱序执行等字眼,导致了有些刚开始学习Java并发编程的小伙伴一脸懵逼:这都是啥啊?文章目录1. 什么是编译器重排序1.1 定义1.2 举个例子1.3 重排序原因1.4 不仅仅是重排序2. 如何禁止?2.1 编译器屏障2.2 禁止重排序2.3 禁止寄存器存/取值2.4 volatile(C/C++)3. 结束...

2019-08-20 10:51:06 1152 3

原创 伪共享--多线程性能的破坏者

文章目录前言1.从CPU说起1.1 CPU缓存1.2 缓存行1.3 MESI协议2. 伪共享3. 解决方案4. 后记前言前几天看到了伪共享这个概念,但是并没有去做深入的了解,今天又看到了这个概念,才想起来要好好研究一下伪共享究竟是个什么东西,反而在学习的过程中又引发了我对JMM(Java内存模型)的思考,前几天有个同事分享了JMM相关内容,当时我感觉自己已经比较了解了,但是今天来看似乎并没有能...

2019-07-31 21:06:30 231

原创 关于equals和hashCode,看这一篇真的就够了

这几天在尝试手撸一个类似Lombok的注解式代码生成工具,用过Lombok的小伙伴知道,Lombok可以通过注解自动帮我们生产equals()和hashCode()方法,因此我也想实现这个功能,但是随着工作的深入,我发现其实自己对于equals()和hashCode()的理解,也处在一个很低级的阶段。因此痛定思痛,进行了一番深入学习,才敢来写这篇博客。文章目录1、equals在Java中含义2...

2019-04-21 14:27:54 3831 3

原创 Quartz源码分析(下)

上一篇文章中,我们分析了Quartz框架的Job和Trigger的源码实现,上篇也说到,Quartz的核心代码是Scheduler,在本篇中,我们会分析一下Scheduler的源码实现。文章目录1、核心入口类:QuartzScheduler2、调度线程类:QuartzSchedulerThread3、任务执行线程池:SimpleThreadPool4、任务执行线程类:WorkerThread5...

2019-04-20 20:34:30 388

原创 IDEA中Maven配置问题全解决

最近换了工作环境,以前的IDEA配置都没了,记得上次配置自己的IDEA还是在两年前?然后构建Maven项目时遇到了一些小插曲,记录下解决方案(PS:新手教程向)1. idea中maven默认配置的坑首先打开File->Settings这里可以直接搜索maven,就可以进入idea的Maven配置选项。我这里是idea默认的maven配置,可以看到默认的Maven目录是idea内置...

2019-04-20 11:04:16 29913 7

原创 Quartz源码分析(上)

文章目录1.一个想法2.Quartz总体架构2.1 Job和JobDetail2.2 Trigger2.3 JobStore3.上篇小结1.一个想法最近项目中用到了Quartz框架,作为定时任务的调度框架,无论是和Spring的完美融合还是直接使用Java代码来进行使用,可以说都非常的简单且稳定,某天突然想到如果没有Quartz框架,我们应该如何实现一个纯Java代码的定时任务调度框架呢?...

2019-04-13 23:06:13 493

原创 到北京好远

我不知道应该怎么表达现在的心情,是悲哀还是无奈。两小时前,我在某社交软件上随机匹配到一个女孩子,语音连麦,刚开始我没有抱着任何想法,只是她说觉着我的声音特别好听,我就和她有一句没一句的聊着,她让我唱首歌,我尬唱了张国荣的《当爱已成往事》,没有特别的原因,只是因为我特别喜欢《霸王别姬》,没想到后来会和她继续聊下去。我不知道她叫什么。她是一个十八岁的女孩子,是江西人。之前我对江西没有太多的印象,只...

2019-04-07 00:28:45 217 1

原创 Java线程池源码分析

文章目录一.Java线程池原理分析二.Java线程池源码分析1.接口继承关系2.核心类ThreadPoolExecutor2.1 入口方法 execute -- 调度器2.2 添加线程方法 addWorker2.3 Worker 内部类2.4 核心方法 runWorker -- 发动机2.5 任务获取方法 getTask3.流程回顾一.Java线程池原理分析上一篇是 线程池原理分析,只是说明了...

2019-03-31 22:17:35 168

原创 Java线程池原理分析

文章目录1. 线程池设计理念1.1 减少创建/切换线程开销1.2 线程池模型1.2.1 BlockingQueue1.2.2 corePool1.2.3 maxmumPool1.2.4 RejectedExecutionHandler1.2.3 execute2.线程池使用实例3. 线程池工作流程其实这篇文章在去年就已经写完了,但是因为懒一直没有整理成博客,今天痛定思痛下定决心,也要把它发表出来...

2019-03-31 20:52:34 131

原创 Docker入门--0.通俗易懂说docker

文章目录1.容器?虚拟机?2.Docker镜像2.1 Docker镜像就是不可写的一部分文件2.2 不得不说Docker容器3.Docker优势久闻Docker大名,但是又一直没有使用过Docker,接触Docker之前,也很疑惑Docker究竟是什么美女画皮,被各大厂商追捧,这个系列主要是Docker简易教程,尽量用最简单的例子说明Docker以及使用。1.容器?虚拟机?虚拟化技术已经发...

2019-03-16 19:00:18 367

原创 Kafka学习记录--1.简介与单机安装

关于Kafka,到目前(2019.1.9)为止,已经是比较成熟的一个消息中间件了,不需要太多的解释,Kafka本身的高性能和可靠性,在这里我就不多说了,这个系列的几篇文章,我将记录Kafka的安装,集群配置,还有一些语言的API使用(主要是Java和Python),当然在实际环境中的部署以及一些坑,会顺便说一说解决方案。文章目录1.Kafka的安装1.1 下载Kafka安装包1.2 启动Zoo...

2019-01-15 21:56:32 161

原创 实习的一点心得

九月份拿了京东的Offer以后,我没有选择去北京京东实习,而是跑到了我们学校所在地——青岛的一家公司实习,本身作为一个Java程序员,硬生生的在这写Python和PHP。这家公司是做图像识别的一家公司,但是算法岗不招本科生,本来想进来跟着大佬学一学图像识别的我,只能在这看公司的业务代码了。其实对于Python这门语言,大二学习了以后,陆陆续续在用,写写自动化脚本,写写爬虫什么的,其实蛮好用,不...

2018-11-30 16:15:57 652

原创 Redis中使用Lua脚本

文章目录1.关于Lua2.redis中使用Lua2.1 在shell中尝试使用Lua脚本2.2 传入参数的脚本3.Python中使用Lua嵌入redis1.关于LuaLua [1] 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy...

2018-11-14 14:43:31 1169

原创 RESTful 和webservice

文章目录1.关于RESTful2.关于webservice1.关于RESTful关于RESTful,在这个时代已经是让人耳熟能详的概念了,但是好像有没有人能把这个词解释清楚, 我认为,RESTful其实是一种基于特定uri编写风格的web项目,其本质是基于http协议web服务,说的更通俗一些,就是去搭建了一个web工程,发布到容器以后,其uri会以一种特定的形式出现,来表达不同的信息。这里...

2018-10-26 11:02:08 3356

原创 网易校招多线程笔试题

题目要求:一个文件中有10000个数,用Java实现一个多线程程序将这个10000个数输出到5个不用文件中(不要求输出到每个文件中的数量相同)。要求启动10个线程,两两一组,分为5组。每组两个线程分别将文件中的奇数和偶数输出到该组对应的一个文件中,需要偶数线程每打印10个偶数以后,就将奇数线程打印10个奇数,如此交替进行。同时需要记录输出进度,每完成1000个数就在控制台中打印当前完成数量,并在所...

2018-08-01 12:06:33 487

原创 近期总结

博客这两个月可能是没办法更新了,因为要开始秋招了。青岛的夏天,潮热,感觉整个世界都被汗糊上了一样,地板返潮,下雨后墙皮返潮,坐在椅子上发粘,躺在床上翻来覆去把凉席暖成热毯。很难熬,就一个人在宿舍对着书和电脑,舌头上都快长起了青苔。说说这一段时间的学习吧重读了《深入理解JVM》这本书,上次读这本书是寒假,当时对JVM的一切都感到新鲜,这次重读,主要是对于GC和调优的一些了解,但是还...

2018-07-26 19:37:39 167

原创 数据库(6)Mysql中explain分析SQL语句执行效率

这一段时间一直在学习关系型数据库,准备写一个小专题来总结一下这一段时间的学习结果。写下这篇博文之前,我学习了大量的关于数据库索引的基础知识,所以如果想更好的理解explain的用法,请先耐心学习 ——数据库索引。一. 什么是explain?二 . 关键字分析:2.1 id2.2 select_type2.3 table2.4 type(重点理解)2.4.1 ALL:2.4...

2018-07-03 20:20:13 3877 2

原创 数据库(5)主从复制和Mysql主从复制实验

这一段时间一直在学习关系型数据库,准备写一个小专题来总结一下这一段时间的学习结果。一. 什么是主从复制二. Mysql主从复制实验2.1 主数据库服务器配置2.1.1 打开主数据库的二进制日志2.1.2 主数据库创建新用户2.1.3 从数据库配置一. 什么是主从复制首先给大家明确一下主从复制的概念,有些初学者可能认为主从复制是数据库集群的一种实现方式,实际...

2018-07-02 12:15:40 235

原创 数据库(4)索引优化和SQL语句优化

这一段时间一直在学习关系型数据库,准备写一个小专题来总结一下这一段时间的学习结果。话说数据库优化一直是SQL型数据库的热门问题,包括从网络I/O方面,从硬盘I/O方面,从CPU计算方面等等很多手段,都可以对数据库进行优化。这篇文章主要总结了如何建立合适的索引提升查询速度,如何通过优化SQL提升语句执行速度。当然这些探讨都是浅尝辄止的,如果有任何谬误,希望大家指出。一. 索引优化...

2018-07-01 21:08:23 689

原创 数据库(3)数据库索引

这一段时间一直在学习关系型数据库,准备写一个小专题来总结一下这一段时间的学习结果。一. 索引分类1.1 从索引的组织形式:聚集索引和非聚集索引1.1.1 聚集索引1.1.2 非聚集索引1.2 从索引的底层数据结构来看:B+树索引和hash索引1.2.1 B+树索引1.2.2 hash索引1.2 从索引的建立方式:主键索引,唯一索引,普通索引,组合索引和全文索引二.查...

2018-06-26 21:04:34 315

原创 数据库(2)数据库锁

这一段时间一直在学习关系型数据库,准备写一个小专题来总结一下这一段时间的学习结果。一. 锁的分类1.1 从锁的实现方式划分:乐观锁和悲观锁1.2 从锁的加锁机制:共享锁和排他锁1.3 从锁的粒度上来说:行级锁和表级锁二. 事物隔离等级和锁的关系1.1 写操作1.2 读操作一. 锁的分类网上很多博客都是直接说了一连串的锁,什么悲观锁乐观锁,什么读写锁,...

2018-06-25 22:24:53 153

原创 数据库(1)事物和事物的隔离等级

这一段时间一直在学习关系型数据库,准备写一个小专题来总结一下这一段时间的学习结果。一. 事物的四大特性二. 事物的隔离等级一. 事物的四大特性原子性(Atomatic):数据库事物包含的操作需要全部成功,否则进行回滚操作。一致性(Consistency):数据得操作前后要保持一致,不会出现预期之外的改变。隔离性(Isolation):隔离性是只多个用户并发访问同...

2018-06-25 11:05:00 190

原创 数据结构--哈希表(散列表)

在学习Java集合HashMap源码时,了解到了HashMap是底层的数据结构是基于哈希表(也叫散列表),意识到以前对于哈希表的学习也是浅尝辄止的,故做了一番功课以后,写下这篇文章。一. 定义1.1 如何存储键值对?1.2 哈希算法1.3 哈希表1.4 哈希冲突链地址法(Separate chaining)开放地址法(Open addressing)再哈希法(rehash)...

2018-06-07 17:07:47 332

原创 Java并发--ReentrantLock实现分析

ReentrantLock是基于AQS实现的可重入独占锁,如果还不了解AQS实现原理的同学可以先去AQS原理分析学习一哈。如果文章中由任何不妥或者谬误之处,请批评指正。公平锁or非公平锁1. 非公平锁1.1 非公平锁的获取2. 公平锁2.1 公平锁的获取3. 解锁过程公平锁or非公平锁ReentrantLock核心功能的实现,依赖于继承AQS类实现的...

2018-06-05 18:43:07 186

原创 Java并发--AQS源码分析

一、AQS整体设计思路1.1 CAS操作+volatile关键字+改造的CLH队列二、独占模式2.1何为独占模式2.2 独占模式下获取共享资源2.2.1 直接获取了共享资源的操作权2.2.2 没有获取了共享资源的操作权2.3 独占模式下释放共享资源2.3.1 释放资源三、共享模式3.1共享模式获得资源如果说CAS操作,是J.U.C包的灵魂,那么...

2018-06-03 22:11:16 1302

原创 Java并发--Java中的CAS操作和实现原理

这几天准备梳理一下Java多线程和并发的相关知识,主要是系统的梳理一下J.U.C包里的一些东西,特别是以前看过很多遍的AQS和实现类,还有各种并发安全的集合类。最重要的就是这个CAS操作,可以说是整个J.U.C包的灵魂之处。1.什么是CAS?2.JAVA中的CAS操作实现原理3.concurrent包中CAS的应用4.小结1.什么是CAS? CAS:Compare...

2018-06-01 10:04:22 7479 1

原创 Java多线程--正确理解interrupt()、interrupted()和isInterrupted()

1.interrupt()2.isInterrupted()3.interrupted()1.interrupt()理解这个函数,可以首先从它自己的JavaDoc入手。 Interrupts this thread. Unless the current thread is interrupting itself, which is always pe...

2018-05-31 16:57:56 2642

原创 JavaNIO--5.多Reactor模式

一. 多Reactor模型1.1最优的解决方案1.2模型代码1.2.1主反应器1.2.2次反应器1.3模型代码分析二. 总结一. 多Reactor模型1.1最优的解决方案当我们经历了最初的Reactor模型,实现了单线程基于Selector选择器的NIO通信模式,到升级为多线程Reactor模型,由一个Selector实现事件的分发到不同的线程进行服...

2018-05-20 21:01:20 743 1

原创 JavaNIO和零拷贝(Zero Copy)

一.Linux操作系统中的零拷贝1.1先从Linux的普通I/O过程说起1.2内存映射方式I/O1.3内核空间内部传输I/O1.4理想状态下的零拷贝I/O1.5splice()系统调用二.JavaNIO中的零拷贝2.1NIO中内存映射方式I/O2.2NIO中的零拷贝今天在学习netty的时候,突然了解到一个新的概念,零拷贝(Zero Copy),涉及到操作系...

2018-05-10 22:32:34 10689 10

原创 JavaNIO--4.多线程Reactor模式

单线程VS多线程1.模型代码1.1Reactor模型1.Handler模型2.自己实现的多线程echo服务器(基于Reactor模式)2.1 Reactor2.2 Handler单线程VS多线程写在前面: 也就是说多线程实现echo服务器实际上是不太科学的选择,但是本文依旧是实现了一个echo服务器。为了不误人子弟,所以请谨慎观看第二部分——自...

2018-05-08 19:15:22 1033

原创 Java获取图片文件格式(后缀)

今天做一个爬虫,使用正则匹配到标签以后,直接用InputStream流进行下载到内存,然后再使用FileOutputStream保存到硬盘,但是要获取图片文件格式再进行保存。一开始使用了正则截取,比如,就直接用字符串截取.png的内容 String imgSrc = "/book/en/v2/images/basic-branching-1.png"; S

2018-05-08 17:31:54 8656

原创 JavaNIO--3.Reactor模式实现echo服务器

一、什么是Reactor模式1.1概念1.2NIO如何实现Reactor模式二、JavaNIO实现基于Reactor模式的ECHO服务器2.1初始化事件处理器(service handler)2.2多路复用+循环分发2.3同步任务派发器(dispatch)2.4请求处理器(Request Handler)三、完整代码四、测试结果一、什么是Reactor模式...

2018-05-03 19:36:27 285

原创 JavaNIO--2.实现ECHO服务器

JavaNIO技术实现ECHO服务器1.NIO核心组件的使用1.1初始化NIO组件1.2Accept组件1.3SelectLoop(核心组件)2.NIO通道读写(Buffer)2.1读取通道内容2.2Buffer处理辅助方法3.测试结果4.完整代码JavaNIO技术实现ECHO服务器所谓ECHO服务器就是客户端发送到服务器端什么内容,服务器端就返回...

2018-05-02 21:42:05 365

原创 JavaNIO--1.JavaI/O模型

JavaI/O模型1.阻塞和非阻塞1.1阻塞式I/O1.2非阻塞式I/O2.同步和异步2.1同步I/O2.2异步I/O3.多路复用I/O和JavaNIO3.1操作系统的I/O多路复用3.2JavaNIO4.回顾总结JavaI/O模型1.阻塞和非阻塞1.1阻塞式I/O首先要搞清楚的是,一个I/O过程,在任何操作系统下,都分为两...

2018-04-27 20:00:04 238

空空如也

空空如也

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