琦小虾
码龄10年
  • 770,451
    被访问
  • 124
    原创
  • 560,375
    排名
  • 584
    粉丝
关注
提问 私信

个人简介:抱拳会天下英豪,煮酒论成败是非。

  • 加入CSDN时间: 2012-08-29
博客简介:

琦小虾的代码世界

博客描述:
抱拳会天下英豪,煮酒论成败是非
查看详细资料
个人成就
  • 获得683次点赞
  • 内容获得355次评论
  • 获得2,437次收藏
创作历程
  • 1篇
    2021年
  • 63篇
    2020年
  • 5篇
    2019年
  • 24篇
    2018年
  • 37篇
    2017年
成就勋章
TA的专栏
  • Redis
    7篇
  • Dubbo
    6篇
  • JVM
    8篇
  • 网络
    5篇
  • nginx
    4篇
  • 算法
    8篇
  • JavaSE 学习之路
    16篇
  • 分布式
    2篇
  • 数据库
    6篇
  • Kafka
    9篇
  • OpenCV
    9篇
  • Linux
    15篇
  • 嵌入式系统
    11篇
  • C++
    11篇
  • Qt
    1篇
  • CMake & Makefile
    3篇
  • 交叉编译
    5篇
  • 编译原理
    3篇
  • 图像处理算法
    10篇
  • GitHub
    3篇
  • 机器学习算法
    3篇
  • 前端(HTML / PHP)
    4篇
  • 数据结构
    10篇
  • 常用问题解决
    5篇
  • Matlab
    1篇
  • Python
    1篇
  • Java
    84篇
  • MAC
    1篇
  • 设计模式
    2篇
  • 框架
    26篇
  • Spring
    10篇
  • Web
    4篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Linux 语法——cat

cat 是一个文本文件查看和连接工具,用于查看一个文件的内容。cat 使用比较简单,就是 cat 后面直接接文件 名。 比如: [root@localhost ~]# cat /etc/fstab 为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数; 1. cat 语法结构 cat [选项] [文件]... 选项 -A, --show-all 等价于 -vET -b, --number-nonblank 对非空输出行编号 -e 等价于 -vE -E, - -show-ends 在每行结束处显示
原创
发布博客 2021.05.18 ·
117 阅读 ·
0 点赞 ·
0 评论

Lucene基本知识入门

Lucene 篇 参考地址:《Lucene介绍与使用》 1. Lucene 简介 Lucene 是一套用于全文检索和搜寻的开源程序库,提供了一个简单却强大的 API,能够做全文索引和搜寻。在 Java 开发环境里,Lucene 是一个成熟的免费开放源代码工具,它并不是现成的搜索引擎产品,但可以用来制作搜索引擎产品。Solr 和 ElasticSearch 都是基于 Lucene 开发的企业级的搜索引擎产品。 Lucene 的 API 来实现对索引的增(创建索引)、删(删除索引)、改(修改索引)、查(搜索
原创
发布博客 2020.07.17 ·
353 阅读 ·
0 点赞 ·
0 评论

ElasticSearch基本总结

ElasticSearch 篇 ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。 Lucene 与 ES 的关系: Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。 Elasticsearch也使用Java开发并使用Luce
原创
发布博客 2020.07.16 ·
849 阅读 ·
0 点赞 ·
0 评论

Nginx技术总结之四——集群和负载均衡的算法与实现

接上篇《Nginx技术总结之三——Nginx多进程IO模型》 六. 集群和负载均衡的算法与实现 6.1 负载均衡器 负载均衡器可以是专用设备,也可以是在通用服务器上运行的应用程序。 分散请求到拥有相同内容或提供相同服务的服务器。 专用设备一般只有以太网接口,可以说是多层交换机的一种。 负载均衡器一般会被分配虚拟IP地址,所有来自客户端的请求都是针对虚拟IP地址完成的。负载均衡器通过负载均衡算法将来自客户端的请求转发到服务器的实际IP地址上。 6.2 负载均衡算法 private Map<Strin.
原创
发布博客 2020.07.16 ·
385 阅读 ·
0 点赞 ·
0 评论

Nginx技术总结之三——Nginx多进程IO模型

接上篇《Nginx技术总结之二——Nginx进程模型》 三. Nginx 的多进程 IO 模型 参考地址:《为啥性能高?Nginx架构初探》 3.1 多进程 IO 模型的优点 首先,对于每个 worker 进程来说,独立的进程不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。 其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的 worker 进程。当然,worker 进程的异常退出,肯定是程序漏洞导.
原创
发布博客 2020.07.16 ·
188 阅读 ·
0 点赞 ·
0 评论

Nginx技术总结之二——Nginx进程模型

接上篇《Nginx技术总结之一——Nginx模块与工作原理》 二. Nginx 的进程模型 Nginx 的进程模型,可以由下图来表示: 在工作方式上,Nginx 分为单工作进程和多工作进程两种模式。 单工作进程模式:除主进程外,还有一个工作进程,工作进程是单线程的; 多工作进程模式:每个工作进程包含多个线程。Nginx 默认为单工作进程模式; Nginx 在启动后,会有一个 master 进程和多个 worker 进程。 2.1 master 进程 master 进程主要用来管理 worker 进.
原创
发布博客 2020.07.16 ·
115 阅读 ·
0 点赞 ·
1 评论

Nginx技术总结之一——Nginx模块与工作原理

参考地址:《Nginx面试汇总》 一. Nginx 的模块与工作原理 Nginx 由内核和模块组成。其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个 location block(location 是 Nginx 配置中的一个指令,用于 URL 匹配),而在这个 location 中所配置的每个指令,将会启动不同的模块去完成相应的工作。 Nginx 的模块从结构上分为核心模块、基础模块和第三方模块: 核心模块:HTTP 模块、EVENT 模块和 MAIL.
原创
发布博客 2020.07.16 ·
157 阅读 ·
0 点赞 ·
0 评论

JVM技术总结之七——volatile关键字

接上篇《JVM技术总结之六——JVM的锁优化》 七. volatile 关键字 参考地址:《并发关键字volatile(重排序和内存屏障)》 7.1 volatile 关键字 Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性。它有两条特性: 禁止指令的重排序;保证了有序性; 当一个线程修改了内存,volatile 关键字保证它能够立即刷新到主内存中;这条特性保证了 volatile 关键字的可见性; 7.2 指令重排序 通常情况下,处理器为了提高程序运行效率.
原创
发布博客 2020.07.16 ·
119 阅读 ·
0 点赞 ·
0 评论

JVM技术总结之六——JVM的锁优化

接上篇《JVM技术总结之五——JVM逃逸分析》 六. JVM 的锁优化 参考地址: 《java 中的锁 – 偏向锁、轻量级锁、自旋锁、重量级锁》 《彻底搞懂synchronized(从偏向锁到重量级锁)》 《synchronized实现原理》 在介绍 JVM 锁优化之前,首先明确几个概念,用于后续的介绍。 6.1 线程状态切换 由于需要限制不同的程序之间的访问能力,防止他们获取别的程序的内存数据,或者获取外围设备的数据,CPU 划分出两个权限等级:用户态和内核态。 内核态:CPU 可以访问内存所有.
原创
发布博客 2020.07.16 ·
686 阅读 ·
1 点赞 ·
1 评论

JVM技术总结之五——JVM逃逸分析

接上篇《JVM技术总结之四——JVM内存结构》 五. JVM 逃逸分析 参考地址:《JVM的逃逸分析》 5.1 逃逸的定义 一个对象(或变量)在方法中处理完毕返回时,返回结果可能会被其他对象引用,或者全局引用,这种现象即为逃逸。或者可以说,一个对象指针被多个线程或方法引用时,该对象指针就是逃逸状态。 public StringBuilder escapeDemo1(String a, String b) { StringBuilder stringBuilder = new StringBu.
原创
发布博客 2020.07.16 ·
120 阅读 ·
0 点赞 ·
0 评论

JVM技术总结之四——JVM内存结构

接上篇《JVM技术总结之三——类加载机制》 四. JVM 的内存结构 哪些是共享的,哪些是线程私有的? Java虚拟机里堆栈分别存放什么? 4.1 JVM 栈结构 每个线程由多个栈帧构成,每个栈帧包含线程中该方法的处理信息。栈帧由四部分组成:局部变量表、操作数栈、动态链接、方法返回地址。 4.1.1 局部变量表 局部变量表包含该方法内相关的所有局部变量,包括方法内的局部变量,以及传入方法的参数。数据类型是几种基本的数据类型,以及引用类型。 4.1.2 操作数栈 操作数栈用于操作的执行,方法进行操作时,将.
原创
发布博客 2020.07.16 ·
100 阅读 ·
0 点赞 ·
0 评论

JVM技术总结之三——类加载机制

接上篇《JVM技术总结之二——GC机制》 三. 类加载机制 参考地址: 《类加载机制-深入理解jvm》 《Java Class文件格式、常量池项目的类型、表的结构》 3.1 类的加载过程 Java 类的加载过程主要分为五步:加载、验证、准备、解析、初始化。其中验证、准备、解析可以合称为连接。此外,这五步的顺序并不是完全固定的,比如为了支持动态绑定,解析的过程可以放在初始化之后。类的加载过程如下图所示: 3.1.1 加载 加载过程主要做三件事情: 根据全类名获取 *.class 文件的路径,通过二.
原创
发布博客 2020.07.16 ·
74 阅读 ·
0 点赞 ·
0 评论

JVM技术总结之二——GC机制

接上篇《JVM技术总结之一——JVM调优》 二. GC 机制 GC 的机制是什么?垃圾回收器的基本原理是什么?是否可以立即回收内存?怎么样主动的通知 JVM 进行垃圾回收? 2.1 GC 的目标与流程 GC 的目标,是在 GC Root 链之外的所有对象,GC Roots 是可达性分析算法的回收目标。GC Root 对象如下: 被 JVM 栈引用的所有对象; 方法区中,类静态引用的对象; 本地方法中静态引用的对象; 方法区中常量引用的对象; 可达性分析时,需要找 GC Roots 的引用链。为了保证.
原创
发布博客 2020.07.16 ·
89 阅读 ·
0 点赞 ·
0 评论

JVM技术总结之一——JVM调优

一. JVM 调优 1.1 JVM 调优如何使用 笔者首先会使用到的工具: java 自带工具:JVisualVM 用于监控,jstack 查看线程状态,jmap 用于堆 dump; Memory Analyser:载入堆 dump 文件,进行分析。 在项目启动的时候,加入 -XX:+PrintGCDetails 参数,可以观察 GC 的频率。观察 GC 频率可以判断 GC 频率是否正常(主要是针对 Full GC)。如果不正常,就可以观察 GC 日志,并且针对 GC 的频率进行原因的猜测。 如果有堆
原创
发布博客 2020.07.16 ·
103 阅读 ·
0 点赞 ·
0 评论

Java并发技术总结之六——Java锁分类

六. Java 锁分类 《Java并发编程:Lock》 《java 锁 Lock接口详解》 《[死磕 java同步系列之ReentrantLock源码解析(一)——公平锁、非公平锁]》) 6.1 Java 锁的分类 锁的类型目前感觉可以分成两大类:synchronized 关键字,以及 Lock, ReadWriteLock 锁以及 Reentrant 为前缀修饰的实现类 (ReentrantLock, ReentrantReadWriteLock); 其他角度来看,按照不同分类类型的锁: 实现方式:sy
原创
发布博客 2020.07.13 ·
97 阅读 ·
0 点赞 ·
0 评论

Java并发技术总结之五——AQS

接上篇《Java并发技术总结之四——CAS》 五. AQS 原理 参考地址: 《Java并发-AQS及各种Lock锁的原理》 《JAVA并发编程: CAS和AQS》 《Java并发之AQS详解》 5.1 AQS 简介 AQS (AbustactQueuedSynchronizer) 是 Java 提供的底层同步工具类,主要思想是用一个 int 类型的变量表示同步状态,以及一个双链表形式的同步队列,并提供了一系列的 CAS (Compare And Swap) 操作来管理这个同步状态。 AQS 的主要.
原创
发布博客 2020.07.13 ·
177 阅读 ·
0 点赞 ·
0 评论

Java并发技术总结之四——CAS

接上篇《Java并发技术总结之三——线程状态》 四. CAS 原理 参考地址: 《JAVA并发编程: CAS和AQS》 《面试必问的CAS,你懂了吗?》 CAS (Compare And Swap),即比较并交换,是解决多线程并行情况下使用锁造成性能损耗的一种机制。在 JAVA 中,sun.misc.Unsafe 类提供了硬件级别的原子操作来实现 CAS。 java.util.concurrent 包下的大量类 (AtomicInteger, AtomicBoolean, AtomicLong, ….
原创
发布博客 2020.07.13 ·
150 阅读 ·
0 点赞 ·
0 评论

Java并发技术总结之三——线程状态

接上篇《Java并发技术总结之二——ThreadLocal》 三. 线程状态 线程有六种状态:NEW, RUNNABLE(RUNNING), WAITING, TIME_WAITING, BLOCKED, TERMINATED。 3.1 NEW 线程刚刚被创建的时候,即 new Thread(),且尚未执行 start() 方法的状态; 3.2 RUNNABLE / RUNNING RUNNABLE(或称 READY) 与 RUNNING 是线程已经准备执行或正在执行的状态,是线程执行了 start(.
原创
发布博客 2020.07.13 ·
100 阅读 ·
0 点赞 ·
0 评论

Java并发技术总结之二——ThreadLocal

接上篇《Java并发技术总结之一——Java线程池》 二. ThreadLocal 参考地址:《Java中的ThreadLocal详解》 ThreadLocal 用来保证规避多线程访问线程不安全的情况,每个线程访问自己的副本变量,这样就避免了对资源的抢占导致数据不一致的问题。 2.1 原理 线程 Thread 中用 ThreadLocalMap 类型的 threadLocals, inheritableThreadLocals 存储当前线程与子线程数据的副本变量。 ThreadLocal 是不支持继.
原创
发布博客 2020.07.13 ·
75 阅读 ·
0 点赞 ·
0 评论

Java并发技术总结之一——Java线程池

一. Java 线程池 1.1 实现 线程数小于 coreSize,创建线程,直到 coreSize 的数量; BlockingQueue 一直堆积线程;堆积到 BlockingQueue 的最大容量,此时开始开启线程,直到 maxSize; 如果到了 maxSize 的线程数,BlockingQueue 依然是满的,则开始对新添加进入的任务实行拒绝(按照拒绝策略); 如果线程数量大于 coreSize,而且有的线程空闲时间超过了 keepTimeAlive,则释放该资源; 注:1, 2, 3 步骤在
原创
发布博客 2020.07.13 ·
71 阅读 ·
0 点赞 ·
0 评论
加载更多