![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 52
newbaby2012
芝兰生于深谷,不以无人而不芳;君子修道立德,不为困穷而改节。
展开
-
Kafka学习
两者模式。原创 2023-01-05 10:41:44 · 270 阅读 · 0 评论 -
zookeeper学习
zookeeper类似于一个按摩会所app,生产者相当于技师,消费者相当于去按摩的顾客,而app上面就保存了几号技师available,技师有可能当天请假啥的,当前技师是不是available,就需要通知给客户了。zookeeper只存储一些简单的配置信息,因为每个Node只能存储1MB的数据,所以不能像UNIX一样存储海量信息。统一命名服务,类似于nginx,还有负载均衡也类似nginx。确认接口的反思,能不做就不做,绝对不做。原创 2022-12-14 11:56:43 · 210 阅读 · 0 评论 -
java虚拟机规范阅读
https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf原创 2022-07-12 22:02:36 · 433 阅读 · 0 评论 -
Servlet 规范阅读 JSR340
?原创 2022-06-19 22:22:08 · 124 阅读 · 0 评论 -
狂神springcloud笔记
eureka服务发现注册,类似于zookeeper主要注解有还有discoverClient用来获取其他client的信息,比如hosteureka的server集群,为了容灾原创 2022-04-16 20:16:59 · 1817 阅读 · 0 评论 -
Junit的扩展
TestListener用来收集测试结果,并以某种方式输出,比如ResultPrinter,用来打印测试的结果,失败数,成功数/** * @see junit.framework.TestListener#addError(Test, Throwable) */ public void addError(Test test, Throwable e) { getWriter().print("E"); } /** * @see原创 2021-12-26 00:12:39 · 366 阅读 · 0 评论 -
CSAPP 读书笔记 第七章
链接链接就是将不同代码,数据文件组合成一个单一文件的过程在现在系统中,链接是由叫链接器的程序自动执行的链接过程如下符号解析: 把符号引用(比如main.c中的swap())和符号定义(比如swap.c中的swap定义)联系起来重定位:链接器通过把每个符号定义与一个存储器位置(我猜想是内存地址?)联系起来,然后修改所有这些符号引用为对应地址链接的过程中,用到的.o目标文件会被拷贝到可执行文件中, 最终形成一个文件链接器会维持3个集合,如果a调用b,那么gcc ...原创 2021-11-02 00:08:05 · 166 阅读 · 0 评论 -
手写IOC容器总结
一个超级简略的IOC容器,代码见:spring-code/src/main/java/com/IOC at main · CodePpoi/spring-code · GitHub参考了手写一个最简单的IOC容器,从而了解spring的核心原理-技术圈一开始是自己写ClassLoader,结果发现自己写的ClassLoader不能加载到放在类上面的注解,我猜测是defineClass()有问题,因为字节码是一样的(通过工具看了),后面直接放弃自定义ClassLoader,采用UrlClassLoa.原创 2021-10-30 11:02:05 · 154 阅读 · 0 评论 -
HotSpot阅读(一) GC
不想每次都是背八股文,干脆直接看源码concurrentMarkSweepGeneration.hpp文件 bool isMarked(HeapWord* addr) const; bool par_isMarked(HeapWord* addr) const; // do not lock checks bool isUnmarked(HeapWord* addr) const;上面这些应该是用来标记内存的HeapWord指针,用来指向堆内存地址addrcms的bitmap,原创 2021-09-14 13:49:58 · 309 阅读 · 0 评论 -
ReentrantLock笔记
来自https://www.bilibili.com/video/BV1ta4y1H73X?from=search&seid=4946324253512830264ReehtrahtLock是可重入的意思表示一个线程如果持有锁A,那么在调用该线程子程序的时候,可以再次重入这个锁(state + 1),不过锁的释放也需要多释放一次非公平获取锁final boolean nonfairTryAcquire(int acquires) { fi...原创 2021-08-26 15:59:32 · 63 阅读 · 0 评论 -
Hotspot源码笔记
哎,面试携程,被面试官说学得不成体系,现在看看hotspot源码,看看是个啥玩意monitorenter指令,在interpreter里面的runtime,什么不变,不变的是人性不变的是底层,是操作系统,汇编,C,C++核心是创建内存模型,创建栈帧,以及实现字节码指令字节码指令相关的源码,在java的hotspot的interpreter里面流程: classLoader 加载指定文件位置,读取对应的字节码文件,转换成byte[]对字节码进行解析.原创 2021-08-24 09:27:32 · 272 阅读 · 0 评论 -
java 命令不生效,输入回车后没反应
方法一:在cmd手动输入以下指令:set java_home=C:\Program Files\Java\jdk1.8.0_251 ( 这是我安装JDK的路径,根据实际情况做出相应的改变)set classpath=%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;set path=%JAVA_HOME%\bin;...原创 2021-08-24 19:07:40 · 871 阅读 · 0 评论 -
Redis学习笔记
我简历上面都没写Redis,面试官还一直问我Redis,,,,, 没办法,只能学一学,应付面试官视频地址:https://www.bilibili.com/video/BV1qv411j7bR?p=11. 超卖问题三个请求过来,却只减少了一个库存解决办法: 单体 synchronized但是集群,还是会有问题2,所以需要分布式锁redis的setnx : set if not existredis,单线程,排队,多个setnx,只有一个setnx能成功, 这就是入门的分.原创 2021-08-23 10:25:32 · 67 阅读 · 0 评论 -
狂神JUC并发编程笔记
视频来自:https://www.bilibili.com/video/BV1B7411L7tE?p=5&spm_id_from=pageDriverJUC = java.util.conrrunent常规的实现并发的方式,用synchronized,以及new Thread(new Runnable() { @Override public void run() { String a = "run 1"; }}).start();上面代码在java 8以后可用la.原创 2021-08-18 10:39:32 · 156 阅读 · 0 评论 -
ASM字节码学习
字节码结构参考 :https://docs.oracle.com/javase/specs/jvms/se10/html/jvms-4.html我们的.class文件,遵循下面的数据结构ClassFile { u4 magic; //魔数 一直都是0xCAFEBABE u2 minor_version; // u2代表两个字节 u2 major_version; u2原创 2021-08-16 21:06:35 · 1074 阅读 · 0 评论 -
JMM内存模型笔记
哎 得快点找到工作https://www.bilibili.com/video/BV1Et411n7Ro?from=search&seid=15449624913687152734CPU其实有缓存的,比如windows而java的JMM模型其实也就类似于CPU缓存模型:原创 2021-07-31 00:07:05 · 89 阅读 · 0 评论 -
ClassLoader笔记
随便写写,l通过oadClass方法来加载,先看该ClassLoader是否有父类,有则递归调用父类的loadClass,父类能加载则直接返回父类加载的结果,如果父类无法加载,则调用自身的findClass方法:不同加载器加载的同一个类,两者不相等package com.company;import java.io.IOException;import java.io....原创 2019-06-12 22:03:34 · 140 阅读 · 0 评论 -
ConcurrentHashMap笔记
sizeCtl原创 2021-07-26 21:43:31 · 157 阅读 · 0 评论 -
RESTFUL 和http
RESTFUL 其实是一种接口设计风格,它要求我们除了使用http的post和get请求以外,也要适当的使用put和delete参考这篇博客https://blog.csdn.net/a78270528/article/details/78469758level 0原先的传递数据,其实比较简朴,类似于{"addOrder": "latte"}level 1高级一点的就是面向资源, /order就是资源路径/order{"addOrder": "latte"}原创 2021-07-22 15:40:35 · 268 阅读 · 0 评论 -
跟着狂神学JVM
https://www.bilibili.com/video/BV1iJ411d7jS/?spm_id_from=333.788.recommend_more_video.2狂神真的是啥都会本地方法栈主要是用来登记注册native方法的,我们看Object类里面,其实就有一个registerNative方法,就是把Object里面所有的native方法,比如wait,notify注册到方法栈中,我是这么觉得的,而本地方法,是通过JNI来访问本地方法库,完成的...原创 2021-07-20 15:32:41 · 59 阅读 · 0 评论 -
springboot学习
参考视频https://www.bilibili.com/video/BV19K4y1L7MT?p=7spingboot其实自动配置了很多东西,参考spring-boot-starter-web-2.3.4RELEASE.pom:<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/.原创 2021-07-18 17:21:12 · 76 阅读 · 0 评论 -
找到java中native方法的c文件
首先要下载openJDK:https://github.com/unofficial-openjdk/openjdk/tree/jdk8u/jdk8u然后解压以后:比如要查的是Unsafe的getIntVolitale,那么我们在项目中搜索 _getIntVolitale,即可找到有时也可以通过 类名_方法名 找到,比如EPollArrayWrapper_epollCreate...原创 2021-07-14 22:59:57 · 198 阅读 · 0 评论 -
Java锁机制
每个对象都有一把锁,锁在对象头中,关于对象的组成我们可以加入来依赖看看java对象头到底是啥样的 <!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</原创 2021-07-13 18:22:29 · 83 阅读 · 0 评论 -
Netty实现聊天室(三) 联网版本聊天室具体实现
实现我自己电脑和我的阿里云服务器的通信,首先要在阿里云上面部署我的项目,关于如何部署Maven项目,参考https://blog.csdn.net/newbaby2012/article/details/118498642启动以后,我在本地把ChatClient的目的地址改成了我的阿里云公网地址这个时候发现,报错connection refused,于是我首先检查了安全组,并在安全组开启了TCP 9000端口和23(telnet协议)端口,不过还是有错误。于是我在本地开启cmd,teln原创 2021-07-08 14:59:33 · 138 阅读 · 0 评论 -
Netty实现聊天室(二) 本地版聊天室具体实现
实现一个服务器,多个客户之间相互通信。类似于QQ群聊天,先看NettyServerpackage chat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.channel.socket.nio原创 2021-07-07 00:53:28 · 391 阅读 · 0 评论 -
用Maven在阿里云服务器启动java的main函数
首先得下载安装maven到服务器上面,具体见菜鸟教程:https://www.runoob.com/maven/maven-setup.html原创 2021-07-07 00:22:46 · 279 阅读 · 0 评论 -
Netty实现聊天室(一) 实现客户端和服务端通信
Netty主要是一个对NIO的封装框架项目相关源码:https://github.com/CodePpoi/netty-code无论是服务端和客户端通信还是聊天室的实现,其实都要有四个类,Client,ClientHandler,Server,ServerHandler,我们首先是先实现一个简单的服务端与客户端通信,基于此,再开发一个聊天室:import io.netty.bootstrap.Bootstrap;import io.netty.channel.ChannelFuture;.原创 2021-07-06 20:53:07 · 420 阅读 · 1 评论 -
Junit的RunWith的流程图解
以@RunWith(Theories.class)为例,如下图:主要是RunnerBuilder的逻辑,AllDefaultPossibilitiesBuilder的runnerForClass会自动加载5个Builder, 然后一次遍历这5个builder,执行safeRunnerForClass方法生成runner,如果有一个builder返回的runner不为空,那么直接将这个runner返回,不再遍历其他builder,后面走的就是JunitCore的run(Runner runner)方法原创 2021-07-04 17:26:48 · 378 阅读 · 0 评论 -
Junit源码Runner流程图以及运行流程
第二次读junit源码,撸了个流程图,哎也算能看出点门道了,之前脑子都是晕的原创 2021-07-04 13:51:15 · 300 阅读 · 0 评论 -
JDK源码HashMap
基于jdk1.8,先看putpublic V put(K key, V value) { return putVal(hash(key), key, value, false, true); }再看调用的putVal:final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab原创 2021-06-27 16:20:32 · 77 阅读 · 0 评论 -
Jdk源码之Object
private static native void registerNatives()注册所有native方法到JVM,即Object里面的native方法,比如notify(),wait()static { registerNatives();}实例化之前就会调用registerNatives方法Java 代码其实是通过JNI(Java Native Interface)来调用C/C++ code其实Class也有这个registerNatives方法...原创 2021-06-26 21:45:25 · 51 阅读 · 0 评论 -
跟狂神学Docker笔记
观看centos 7版本信息:启动Docker:systemctl start docker原创 2021-06-20 17:44:31 · 92 阅读 · 0 评论 -
ArrayList源码阅读
我的理解,其实ArrayList是一个对里面数组的封装,成员变量有以下几个private static final long serialVersionUID = 8683452581122892189L; /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; /** * Shared empty array instance use原创 2021-06-19 14:25:55 · 61 阅读 · 0 评论 -
IDEA使用jclasslib-bytecode-viewer插件查看字节码
首先在idea的plugin搜索jclasslib-bytecode-viewer并且安装,重启以后,新建一个类public class CodeTest { private Integer k; public static void main(String[] args) { int i = 0 ; String str = new String("hello world!"); i = 1; int j = 2;原创 2021-06-18 20:10:31 · 1486 阅读 · 1 评论 -
Java 虚拟机性能分析工具
这两天看了下Java虚拟机性能分析相关的东西,做一下总结,主要是jconsole和jvisualvm这两个工具,在java的jdk/bin里面都内置了jonsole原创 2021-06-18 13:58:43 · 374 阅读 · 2 评论 -
使用Java VisualVM观察堆内存分配情况
Java VisualVM默认在jdk的bin目录下,我的是C:\Program Files\Java\jdk1.8.0_291\bin:原创 2021-06-15 20:29:49 · 1952 阅读 · 2 评论 -
WireShark抓包分析ping命令
好吧 我就是无聊闲的首先ping命令是基于ICMP的,所以我们在用wireShark时要先指定过滤器原创 2021-06-10 11:21:02 · 5630 阅读 · 0 评论 -
Kubernetes和Docker的关系
Kubernetes简称k8s,https://zhuanlan.zhihu.com/p/87186261原创 2021-05-28 16:40:01 · 461 阅读 · 0 评论 -
Android 发布apk
每次发布的时候老是忘了,干脆写个博客记录一下如果是只要debug版本的,那么点击Build的Re原创 2021-05-28 14:16:14 · 250 阅读 · 1 评论 -
在线制作latex简历模板
今天的感悟就是google搜索真的比baidu强太多了,,,,参考https://github.com/billryan/resume/tree/zh_CN因为这个地址下载太慢了可以用这个链接http://static.latexstudio.net/wp-content/uploads/2015/06/resume-zh_CN.zip然后下载winEdt编辑:http://www.winedt.com/download.html或者可以在线编辑模板:...原创 2021-05-16 20:57:52 · 380 阅读 · 0 评论