
废柴学编程
文章平均质量分 52
突然有一天,觉得自己不能继续打混了。看过去自己写的博客都看不懂了~这个专栏用来记录自己重新学习之路~
zhaomaoer
这个作者很懒,什么都没留下…
展开
-
RPC要点介绍
PRC远程过程调用,像调用本地的函数一样去调远程函数。两个服务部署在两台服务器上, 两个服务之间想要互相访问,但是由于不在一个内存空间,无法直接调用,需要通过网络来表达调用的语意和传递调用的数据。几个要点:网络传输:客户机和服务器之间建立TCP/HTTP连接寻址: 基于web服务的RPC,需要提供一个endpoint URI,或者是从服务中心服务上查找。从服务提供者的角度看:当服务提供者启动的时候,需要将自己提供的服务注册到指定的注册中心,以便服务消费者能够通过服务注册中心进行查找;当服务提供者原创 2021-11-06 15:09:25 · 278 阅读 · 0 评论 -
RPC和Restful
RPC(Remote Procedure Call):远程过程调用,即像调用本地方法一样去调用远端服务器的方法。RPC主要解决的问题:分布式系统中,服务之间的调用问题远程调用时,能够像本地调用一样方便PRC核心点:通讯问题:客户端和服务器端建立TCP连接寻址问题:通常可以提供服务器(主机名/IP地址)以及特定的端口。分布式下,需要考虑负载均衡问题。序列化和反序列化问题:网络协议是二进制的,因此需要在传输前序列化参数,接收后反序列化。RPC主要组件和调用过程RPC响应同步异步原创 2021-03-16 17:20:59 · 370 阅读 · 0 评论 -
常用的Linux命令
https://blog.youkuaiyun.com/xp178171640/article/details/104741430转载 2021-03-16 16:11:45 · 246 阅读 · 0 评论 -
Java: AbstractQueuedSynchronizer (AQS)
参考资料:https://tech.meituan.com/2019/12/05/aqs-theory-and-apply.htmlhttps://www.cnblogs.com/waterystone/p/4920797.htmlAQS是一种提供原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。标题AQS核心思想:如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机原创 2021-03-14 18:23:31 · 159 阅读 · 0 评论 -
Java:Atomic原子类
Atomic位于java.util.concurrent包中,可以简化多线程编程:无锁,但是保证线程安全;适用于计数器,累加器等。Atomic原理:无锁,使用CAS(compare and swap)来保证线程安全。Atomic原子类:基本类型AtomicIntegerAtomicLongAtomicBoolean数组类型AtomicIntegerArrayAtomicLongArrayAtomicReferenceArray引用类型AtomicReferenceAto原创 2021-03-11 11:34:45 · 139 阅读 · 0 评论 -
Java: Threadlocal
ThreadLocal并不是一个Thread,而是Thread的局部变量。*ThreadLocal不是用来解决对象共享访问问题的,而主要是提供了保持对象的方法和避免参数传递的方便的对象访问方式。ThreadLocalMap:是ThreadLocal的一个内部类// ThreadLocalMap is a customized hash map suitable only for maintaining thread local valuesstatic class ThreadLocalMap {原创 2021-03-10 14:33:40 · 90 阅读 · 0 评论 -
Java: Volatile
volatile是Java提供的一种轻量级的同步机制。并发编程中三个重要特性:原子性:一个操作中就是cpu不可以在中途暂停然后再调度;要么全部成功,要么全部失败。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那么我们称它具有原子性。由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store和write六个,大致可以认为基础数据类型的访问和读写是具备原子性的。可见性:当一个线程原创 2021-03-08 21:20:01 · 142 阅读 · 0 评论 -
JAVA: Lock解析
Lock:位于Java concurrent包中,常见的使用方式Lock lock = new ReentrantLock();try{ lock.lock(); ...}finally{ lock.unlock();//需要释放锁}Lock接口的方法:/**尝试获取锁。当该函数返回时,处于已经获取锁的状态。如果当前有别的线程获取了锁,则休眠。*/void lock();/**尝试获取锁。如果有别的线程获取了锁,则休眠。当该函数返回时,有两种可能:a.已经原创 2021-03-08 12:36:27 · 510 阅读 · 0 评论 -
JAVA- 锁
Java不得不所得“锁”: https://tech.meituan.com/2018/11/15/java-lock.htmlSynchronized原理:https://blog.youkuaiyun.com/xueba8/article/details/88753443https://www.jianshu.com/p/19f861ab749ehttps://mp.weixin.qq.com/s/2ka1cDTRyjsAGk_-ii4ngw原创 2021-03-07 23:16:47 · 82 阅读 · 0 评论 -
JAVA-多线程
多线程whywhathow创建多线程extends threadpublic class KillThread extends Thread{ @Override public void run(){}}implement runnablepublic class Battle implements Runnable{ public void run(){}}匿名类Thread t1= new Thread(){ public void run()原创 2021-03-01 23:08:18 · 129 阅读 · 2 评论 -
Java常见的垃圾回收器
部分转载:https://www.cnblogs.com/lsgxeva/p/10231201.html性能指标吞吐量:运行用户代码的时间占运行时间的比例垃圾收集开销:垃圾收集器占总运行时间的比例暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间收集频率:相对应用程序的执行,收集操作发生的频率内存占用:java堆区所占内存的大小现在常用的标准:在最大吞吐量优先的情况下,降低卡顿时间。常见的收集器G1收集器目前服务端最常用的收集器是G1收集器G1收集器的特点:简单可行的性能调优转载 2021-02-21 23:58:52 · 345 阅读 · 0 评论 -
GC问题排查
堆内存采用分代结构:新生代+老年代堆的垃圾回收:YGC+FGCYGC触发条件对象通常在在年轻代中的Eden区进行分配,如果Eden区域没有足够的空间,那么就会触发YGC(Minor GC),YGC处理的区域只有新生代。每经过一次YGC,存活对象的年龄就会加1。FGC触发条件当晋升到老年代的对象大于了老年代的剩余空间时,就会触发FGC(Major GC)老年代的内存使用率达到了一定阈值(可通过参数调整),直接触发FGC。Metaspace(元空间)在空间不足时会进行扩容,当扩容到了-XX:Me转载 2021-02-14 21:45:20 · 727 阅读 · 0 评论 -
Java垃圾回收
垃圾回收的区域:堆识别垃圾引用计数对象被引用一次,计数加一;当引用为0时,则可以回收缺点:无法解决循环依赖可达性算法从GC Root对象出发,依次引入其他结点。遍历结束之后,不在任意一条GC root链条上的其他结点,被判为垃圾,可以进行回收GC Root对象虚拟机栈中引用的对象方法区中类静态属性/常量引用的对象本地方法栈中 JNI引用的对象若被标记为垃圾,则一定会被回收吗?不一定。GC时,先判断对象是否执行了 finalize(),如果未执行,则执行 finaliz转载 2021-02-10 23:47:52 · 104 阅读 · 0 评论 -
JVM
JVM(Java Virtual Machine):Java虚拟机构成JVM由五部分组成:方法区、堆、栈,本地方法栈和程序计数器。方法区:存放类似于元数据信息方面的数据的,比如类信息,常量,静态变量等堆:存放数据,比如对象实例,数组等。通过new创建的对象,都在堆上进行分配。栈:代码运行空间,方法会在栈里运行。线程创建时创建,和线程的生命周期一致程序计数器:类似于指针,指向正在执行的指令。方法区和堆是现成共享的,其余三部分是线程独享的。当多线程在堆上请求空间时,为了提高效率,采用TLAB(T原创 2021-02-09 23:46:05 · 100 阅读 · 1 评论 -
Java同步容器和并发容器
同步容器通过synchronized保证同一时刻内只有一个线程在使用容器,从而使得容器线程安全。synchronized的意思是同步,它体现在将多线程变为串行等待执行。复合操作不能保证线程安全。常见的同步容器:HashTable, Vector并发容器允许多线程同时使用容器,并且保证线程安全。核心:锁、CAS(乐观锁)、COW(读写分离)、分段锁。常见的并发容器:ConcurrentHashMap、CopyOnWriteArrayList在并发场景中,建议直接使用java.util.concur原创 2021-02-08 23:32:12 · 220 阅读 · 0 评论 -
Java集合解析: Vector
ArrayList不是线程安全的,多线程环境下,多使用Vector(矢量队列)数据结构动态数组,和ArratList结构相似重要参数/** * The array buffer into which the components of the vector are * stored. The capacity of the vector is the length of this array buffer, * and is at least large enough to contain a原创 2021-02-08 23:21:16 · 150 阅读 · 0 评论 -
Java集合解析: LinkedList
常用的ArrayList插入和删除性能低,若是常用到插入和删除,建议使用linkedlist(非线程安全)。LinkedList数据结构双向链表源码解析 transient int size = 0; /** * Pointer to first node. * Invariant: (first == null && last == null) || * (first.prev == null &&原创 2021-02-08 22:48:46 · 94 阅读 · 0 评论 -
Java集合解析:ArrayList
ArrayList是Java中常用的集合之一。特点随机访问速度快,插入和移除性能较差;支持null元素;有序元素可以重复;线程不安全;内存连续(索引,赋值,修改,遍历性能高)数据结构底层采用数组实现是一个动态数组Object类型的数组,可以容纳任何类型/** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; /** * T原创 2021-02-07 23:59:22 · 183 阅读 · 3 评论 -
Java集合解析:hashmap在多线程下的替代方案
hashMap虽然效率好,但是多线程下是不安全的。一般在多线程的场景,有几种不同的方式去代替:Collections.synchronizedMap(Map)创建线程安全的map集合HashtableConcurrentHashMap:性能和效率好详细解析Collections.synchronizedMap(Map)private static class SynchronizedMap<K,V> implements Map<K,V>, Serializable原创 2021-02-07 00:01:24 · 796 阅读 · 1 评论 -
Java集合解析:HashMap
HashMap是Java常用的数据结构之一,在面试中也经常被问到。HashMap数据结构JDK1.8之后:数组+链表+红黑树static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key, V va原创 2021-02-06 00:38:27 · 123 阅读 · 1 评论 -
Java语言基础
Java的几大关键特性:面向对象健壮性:程序失败的两个主要原因:内存管理错误和未处理的异常(即运行时错误)。java采用了自动内存管理,并且提供了面向对象的异常处理功能。多线程体系结构中立:java虚拟机解释执行和高性能:源代码->字节码->高性能的本机代码OOP三原则:封装:将代码和数据绑定在一起的机制,并保证代码和数据既不会受到外部的干扰,也不会被误用。封装的基础是类(Class)。继承:一个对象获取另一个对象属性的过程。多态:一个接口,多个方法。具体使用哪个方法和原创 2021-01-29 23:53:04 · 178 阅读 · 0 评论 -
废柴要努力
前几天,登陆了自己的博客账号,看了之前零零散散写的技术博客,发现都看不懂了(汗)突然间意识到,自己不能这样继续打混下去了新开了个专栏《废柴学编程》,记录一下自己的学习之路,也顺便分享给需要的朋友~嗯,就这样,Flag的大旗先立起来~...原创 2021-01-29 22:48:35 · 108 阅读 · 0 评论