自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 Shell

Shell解析器linux提供的解析器有哪些?[root@localhost] cat /etc/shells/bin/sh/bin/bash...bash和sh的关系[root@localhost] cd /bin[root@localhost bin] ll | grep bashlrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bashCentos默认的解析器是bash[root@localhost] echo

2021-02-03 16:33:57 164 2

原创 Nginx

1.nginx的功能1.支持反向代理2.支持动静分离3.支持负载均衡反向代理正向代理:把局域网外的internet想象成一个巨大的资源库,则局域网中的客户需要访问internet,则需要通过代理服务器,这个代理服务器称为正向代理。在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。反向代理:客户端是无感知的,因为客户端不需要配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是

2020-12-02 10:04:16 842 1

原创 1.垃圾回收机制

如何确定内存需要被回收?第一步就是标记,将不需要的垃圾标记判断不同类型是否需要被回收?引用计数(java中不常用,如果是循环引用 假设A引用B B引用A 在其他地方没有使用,但是却回收不了)根可达算法垃圾收集算法标记清除复制算法标记整理垃圾收集器(不适用与多核处理器)并行收集器并发收集器...

2020-11-15 12:50:01 126

原创 2.NIO

介绍非阻塞API三大核心组件Buffer缓冲区Channel通道Selector选择器Buffer缓冲区缓冲区本质是一个可以写入数据的内存块(类似数组),然后可以在次读取。此内存块包含在NIO Buffer对象中,该对象提供了一组方法,可以更轻松的使用内存块。...

2020-11-06 21:45:08 91

原创 1.BIO阻塞式网络编程

含义阻塞 (Blocking IO) :资源不可用时,IO请求一直阻塞,知道反馈结果(有数据或超时)非阻塞(non-Blocking) IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用同步(synchronous) IO: 应用阻塞在发送或接收数据的状态.直到数据成功传输或返回失败异步(asynchronous) IO:应用发送或接收数据后立即返回,实际处理是异步执行阻塞和非阻塞式获取资源的方式,同步/异步式程序如何处理资源的逻辑设计,代码中使用的API:ServerSock.

2020-11-05 22:42:43 293 1

原创 策略模式

定义在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。类图

2020-11-05 21:48:40 98 1

原创 1.TCP和UDP

OSI网络七层模型为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算器网络。有必要建立一个国际范围的网络体系结构标准。各层的主要功能低三层物理层:使原始的数据比特流能在物理介质上传输。数据链路层:通过校验、确认和反馈重发等手段,形成稳定的数据链路。网络层:进行路由选择和流量控制。(IP协议)说明:物理层和数据链路层解决两个端点直接的数据互通如果互联网多节点直接的互通,这时候就出现网络层。传输层:提供可靠的端口到端口的数据传输服务(TC[/UDP协议)。承上启下

2020-11-05 20:26:51 138

原创 2.ForkJoin

背景ForkJoinPool是ExecutorService接口的实现,它专为可以递归分解成小块的工作而设计。如何使用如果(当前工作部分足够小)–>直接做这项工作其他–> 把当前工作分成两部分–> 调用这两部分并等待结果将此代码包装在ForkJoinTask子类中,通常是RecursiveTask(可以返回结果)或RecursiveAction。用途专门做数据的拆分存在的。意图梳理案例分析1.在进行传统的多接口调用的时候/*.

2020-11-04 23:16:05 113

原创 1.并发容器类

本章节主要是讲juc包下的并发容器,以及如何实现线程安全的源码。ConcurrentSkipListMap该结构是一个特殊的数据结构,是一种链表的结构目的就是为了能快速的查找。它的实现思路为添加类似索引的机制,索引包含节点。当索引数据量比较多的时候,又会建立索引分级。就是基于索引层次在创建一层索引。如上图。源码分析(put) */ // 这个方法目的就是查找到,这个新数据要插入到哪个节点的后面 private Node<K,V> findPredecessor(Ob.

2020-11-04 20:42:22 134

原创 0.AQS抽象队列同步器

文章目录AQS的简单定义AQS的推演封装自定义的锁=》结论SemaphoreCountDownLatchCycliBarrierAQS的简单定义AQS简单来说就是提供了对资源的占用、释放、线程的等待、唤醒等等接口和具体实现。AQS的推演ReentranLock类给我们提供了lock、unlock的机制,对多线程进行一个加锁解锁的机制。实现了线程安全,这套机制如何自己实现呢。自定义锁/** * 自定义(独享锁) */public class CustomLock impleme

2020-11-01 22:40:13 87

原创 7.JAVA中的锁

文章目录JAVA中锁的分类介绍synchornized锁ReentranLock读写锁condition锁降级JAVA中锁的分类介绍自旋锁:为了不放弃CPU执行时间,循环的使用CAS技术对数据尝试进行更新,直至成功。悲观锁;假设会发生并发冲突,同步所有对数据的相关操作,从读数据就开始上锁。乐观锁:假设没有冲突,在修改数据时如果发现数据和之前获取的不一致,则读取最新的数据,修改后重试修改独享锁(写锁):给资源加上写锁,线程可以修改资源,其他线程不能加锁;(单写)共享锁(读锁):给资源

2020-10-31 22:39:21 74

原创 6.线程安全的原子操作

文章目录线程安全的分辨原子性问题的演示CAS方式去解决使用atomic工具类Jdk新的计数器LongAdder的增强版ABA问题的案例分析与解决方法线程安全的分辨如果一段代码是线程安全的,那么它不存在竞态条件。只有当多个线程更新共享资源时,才会发生竞态条件。原子性问题的演示// 两个线程,对 i 变量进行递增操作public class LockDemo { //volatile只能保证线程的可见性,不能保证线程的原子性. volatile int i = 0; publi

2020-10-30 23:38:46 1041 6

原创 5.线程池原理

线程池执行原理案例演示public class ThreadPoolDemo { /** * 测试: 提交15个执行时间需要3秒的任务,看线程池的状况 * * @param threadPoolExecutor 传入不同的线程池,看不同的结果 * @throws Exception */ public void testCommon(ThreadPoolExecutor threadPoolExecutor) throws Ex.

2020-10-29 21:09:56 154

原创 4.线程通信

实现多个线程之间的相互协同,如线程先后执行顺序,获取某个线程的结果等。涉及到线程间的通信,主要分为以下四个类:1.文件共享2.网路共享3.共享变量4.jdk提供的线程协调API。细分为resume/suspend 、wait/notify、park/unpark- 主要说说jdk的线程协作对线程的阻塞和唤醒主要有三种resume/suspend(废弃,容易造成死锁问题)syncsyhronized可导致死锁,suspend在resume先执行也会导致死锁wait/.

2020-10-28 22:39:14 121

原创 3.内存屏障和CPU缓存

为了提高程序的运行的性能,现在的CPU在很多方面对程序进行了优化CPU的多级缓存L1 Cache(一级缓存)L2 Cache(二级缓存)L3 Cache(三级缓存):多核共享三级缓存CPU性能优化手段 指令重排序当CPU写缓存时发现缓存区正在被其他CPU占用时候,为了提高CPU处理性能,可能将候面的读缓存指令先执行。存在的问题1.缓存中的数据与主内存的数据不是实时同步的,各CPU(或CPU核心)间数据也不是实时同步的。在同一时间点各CPU所看到同一内存地址的数据可..

2020-10-28 21:55:31 101

原创 2.线程状态

在执行线程的时候,线程会有多种状态。如下图1.new thread->runnable->blocked(加锁)->runnable->线程终止2.new thread->runnable->waiting(等待)->runnable->线程终止3.new thread->runnable->timed waiting(睡眠)->runnable->线程终止案例演示:public class ThreadStat.

2020-10-28 21:40:06 63

原创 使用泛型转指定格式(适用于底层封装)

在一些场景中,我们需要传入任意类型转出指定类型的数据。这时候我们可以使用泛型进行封装public class R extends HashMap<String, Object> {/** * 使用泛型,转出指定格式 * @return */ public <T> T getData(TypeReference<T> typeReference){ Object data = get("data"); String text = JSON.to.

2020-10-26 22:53:39 158

原创 递归设置树节点

使用递归的方法设置节点//所有的节点 private List<CatalogNode> buildChildrenList(List<CatalogNode> catalogList) { List<CatalogNode> nodeList = catalogList.stream().filter(catalogNode -> StringUtils.isBlank(catalogNode.getPid())) .

2020-10-22 09:16:03 195

原创 JAVA8工作小知识

文章目录如何将Map转为List如何将Map转为List//该例子是在工作中遇到的一个需求,将map中的符合条件的value转为listList<String> empNoList = empMap.entrySet().stream().filter(map -> Integer.parseInt(map.getValue())>=requireCourseCount).map(map -> map.getKey()).collect(Collectors.toLi

2020-10-14 15:29:45 93

原创 多线程高级(实战篇)

看到此篇章的小伙伴相信已经看过前面初级,和中级的讲义了。那么这篇博客我们来聊聊如何使用多线程处理百万级的数据?批量插入百万级别的数据,如何做到高效?百万级数据批量插入我们应该是什么样的设计思路呢?1.首先我们需要考虑到的是一个高并发的问题,那么处理高并发同步锁或者同步代码块是必不可少的。你可以使用synchronized或者ReentranLock来进行代码块的锁定。2.其次我们要使用到线程池,每个线程处理多少数据量。3.使用CountDownLatch计数当所有线程执行完,在执行主..

2020-10-12 16:29:57 795

原创 多线程中级

文章目录容器容器容器的示意图下面我们来描述下List下的CopyOnWriteArrayList简介是一种用于程序设计中的优化策略,当某个人要修改这个内容的时候,才会真正把内容copy出去形成新的内容然后在改。作用是什么CopyOnWrite容器即写时复制容器。通俗的理解当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将容器进行Copy复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器引用指向新的容器。这样做的好处是我们可以对Copy

2020-10-11 22:00:13 80

原创 多线程初级

文章目录背景理解并发与并行synchronized与volatile**区别**synchronizedvolatile背景多线程想必大家都不陌生,主要用来在高并发操作时提升性能的同时也带来了并发的问题,那么本篇博客在于梳理和总结多线程的一些知识,如果不对请多多指教及时改正。理解并发与并行并行:只两个或者多个事情在同一时刻发生并发:两个或者多个事件在同一时间间隔发生synchronized与volatile好了,废话不多说直接上硬菜,想必接触过多线程大家都不陌生synchronize

2020-09-28 18:12:15 139

原创 ThreadLocal

文章目录ThreadLocal是什么?ThreadLocal是什么?线程变量,每个线程独享一份。

2020-09-28 11:25:18 76

原创 JAVA中的引用类型

文章目录强引用软引用使用强引用正常情况下使用强引用超出内存限制情况使用软引用正常的情况下使用软引用异常的情况下弱引用虚引用强引用1.JAVA中默认为强引用Object obj = new Object(); //只要obj指向object对象,Object对象就不会被回收obj = null; //置位null,被回收软引用1.软引用是用来描述一些非必需但仍然有用的对象。当内存足够的时候,软引用不会回收。只有在内存不够的情况下,才会回收软引用。当回收了软引用内存还是不够,会抛出内存溢出。这种特

2020-09-23 16:01:11 126

原创 CREATE TABLE 表名 AS SELECT 语句用法详解

这里写自定义目录标题新表不存在,创建新表新表已经存在新表不存在,创建新表1.创建新表并且携带数据create table new_table as select * from exist_table2.创建新表不携带数据create table new_table as select * from exist_table where 1=2注意:复制只会复制表的结构和数据,原始表中的索引,主键等都不会复制。新表已经存在1.全量复制旧表

2020-09-23 14:42:36 34068 2

原创 ActiveMQ使用

文章目录为什么需要使用MQ?MQ的优点?队列主题实例代码为什么需要使用MQ?在日常我们使用一台服务器进行多个请求,多个请求同时进来,后进来的请求处于一个等待的状态,MQ的引用由此而来MQ的优点?1.系统解耦当系统A需要去调用B下的内容,B需要经过B下其他C,D处理后返回A,B下面的服务A就不需要去管了。2.异步调用3.流量削峰队列每个消息有且只有一个消费者.消费者和生产生没有时间上的关联性,无论生产者在消费者之前还是之后创建消息,消费者最终都可以消费.消息被消费后,队列

2020-09-18 15:58:11 148

原创 Mysql优化

文章目录前言一、Mysql的逻辑分层二、sql的执行顺序三、分析sql执行效率慢有哪些原因四、如何优化(创建索引)?1.索引概述2.影响范围3.优势和劣势4.索引的分类1.单值索引2.复合索引3.唯一索引5.哪些情况创建索引6.哪些情况不创建索引7.Explain进行性能分析1.Explain能做什么?2.分析每个字段的含义索引失效总结前言本文章主要描述如何使用mysql优化,并且面试题会面试哪些内容。一、Mysql的逻辑分层链路层主要的功能是与客户端进行连接服务,授权认证。服务.

2020-09-17 14:05:38 79

空空如也

空空如也

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

TA关注的人

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