Java
文章平均质量分 65
Java 基础,工具类,网络和GC相关内容
江山太美
变大变强
展开
-
Java项目线上问题排查
Java线上问题排查工具原创 2023-02-16 00:27:10 · 320 阅读 · 0 评论 -
Java对象内存空间大小计算
内存对象大小计算,bitset 1亿key大小计算 bitmap一亿大小计算原创 2022-12-05 18:41:56 · 5025 阅读 · 0 评论 -
多线程交替输出多种方式实现(附代码案例)
Java多线程编程,AtomicInteger 原子类,LockSupport,Condition和Semaphore,以及wait()和notify()使用案例原创 2022-08-24 03:31:24 · 1249 阅读 · 0 评论 -
win10系统下jdk17的下载与安装
jdk17下载安装教程原创 2022-02-23 11:01:19 · 2806 阅读 · 0 评论 -
SpringBoot+SseEmitter 异步推送消息给前端
一次http请求,后端推送多条数据,http长连接 private static final Map<Long, SseEmitter> SSE_EMITTER_MAP = new HashMap<>(16); @GetMapping("/{id}") public SseEmitter getSseEmitter(@PathVariable Long id) { //0L设置永不超时 SseEmitter sseEmitt原创 2020-11-18 22:08:53 · 4483 阅读 · 0 评论 -
JAVA中的反射和动态代理
1.反射概念根据类的名称可以获取类所有的信息(名称,权限,属性,方法)2.使用反射的方式1.Class clazz = object.getClass //通过实例的getClass()方法获取类信息 本质调用public final native Class<?> getClass();直接从jvm方法区去拿二进制文件解析2.Class clazz = Object.class //直接获取 同上3.Class clazz = Class....原创 2020-10-13 16:43:42 · 1783 阅读 · 2 评论 -
关于JVM学习的一些知识点
OOM产生原因1)堆溢出(空间不够用)2)虚拟机栈和本地方法栈溢出(栈空间无法扩展时)3)方法区和常量池(生成大量动态类)4)直接内存溢出(默认和堆大小一样,可指定大小使用allocateMemory时产生)内存泄漏对象既不能被回收又不能使用,不可控如IO连接,Socket连接使用完不关闭,此时又不能被垃圾回收应为连接在使用中,造成内存不可控GCRoot 可达性分析法GCRoot根对象来源1)栈中的引用对象2)方法区的静态属性3)方法区常量引用的对象4)本地方法栈中JNI引用的原创 2020-09-09 01:20:50 · 159 阅读 · 0 评论 -
JVM类加载过程和类加载器
类加载机制1)加载,全限定名获取类的二进制字节流,解析静态结构储存在方法区,在内存中生成Class对象2)验证,验证class字节流符合虚拟机的要求(文件格式,元数据,字节码,符号引用)3)准备,正式为类变量(static)初始化分配内存4) 解析,将常量池内的符号引用替换为直接引用5)初始化,类初始化,执行java代码(static代码块,构造器方法)类加载器双亲委派模型Bootstrap ClassLoader 加载java home,/jdk/lib目录下的包 ...原创 2020-09-09 00:39:01 · 152 阅读 · 0 评论 -
BIO和NIO区别(附代码)
首先感谢鲁班学院免费贡献的JAVA精品学习课程,让我白嫖学到了东西!!!一.普通socket1.先来了解一下socket编程,来个Client和Serverpublic class Client { public static void main(String[] args) { Socket socket; try { socket= new Socket("127.0.0.1",9001); Scann原创 2020-08-22 03:43:45 · 358 阅读 · 0 评论 -
IDEA eclipse键模式下的常用快捷键
ctrl+c/v 复制粘贴ctrl+d 删除行ctrl+h 查找项目代码ctrl+g 查找word使用地方ctrl+cc 复制行ctrl+| (安装了resttoolkit)快速查找全局的restful接口ctrl+/ 注释选中行/所在行ctrl+shift+u word大小写转换alt+shift+r 文件重命名(全局改变)ctrl+alt+o 优化导包和格式化代码ctrl+alt+F6...原创 2020-07-23 14:32:27 · 351 阅读 · 0 评论 -
JAVA无锁,乐观锁,悲观锁,并发包内容学习
多线程操作数据时发生结果和预期不一致的问题先来一波不安全操作代码:public class Test implements Runnable{ private static int count = 1000; @Override public void run() { count--; System.out.println(count); } public static void main(String[] args) {原创 2020-06-19 17:44:15 · 163 阅读 · 0 评论 -
JAVA项目开发,IDEA开发必装的插件
1.阿里巴巴规范插件(Alibaba Java Coding Guidelines)2.MyBatis Helper /MyBatis Code Helper (方便mapper->xml跳转),有代码生成功能3.Lombok 代码简介大法4.jclasslib bytecode viewer 查看java编译的字节码5.junit单元测试6.findbug 可以检查可能出现的bug7.右键 diagrams 查看类关系图8.tools->httpClient 可以当原创 2020-06-17 10:25:12 · 280 阅读 · 0 评论 -
java 符号运算 |(或运算),^(异或运算),&(与运算)原理讲解
1. | 位或运算符及规则 // | 位或运算, 计算规则:1|0=1,1|1=1,0|0=0,有真则真 int a = 5; // 0000 0101 int b = 3; // 0000 0011 a|= b = 7; // 0000 0111 //|= (或等于) 等价于 a=a|b System.out.println("a|b = "+a);2.^ 异或运算符及规则原创 2020-06-05 15:27:49 · 1030 阅读 · 0 评论 -
RabbitMQ深入理解
1.为什么要使用消息中间件?生产能力远大于消费能力,如支付,支付的请求比较多,但是处理速度很慢,服务器中如果Http请求不能及时处理会消耗内存暂存请求慢慢处理,进而导致内存崩盘,从而我们希望有一个类似队列东西装载请求,能处理请求过多的情况,于是引入中间件2.引入中间工具带来的问题 中间工具分割开了原本100%可靠请求流程,例如:A-->B(RPC或者直连都能实现可靠通信),现在变成了A-->C-->B, C不可靠(宕机,数据传输丢失),怎么保证 A100%到C,而B...原创 2020-05-14 18:07:07 · 272 阅读 · 0 评论 -
Elasticsearch本地集成学习案例
1.从官网下载文件,解压 我的版本7.3.12.进入bin目录下,运行elasticsearch.bat,启动服务http://localhost:9200 打印信息则服务启动成功3.springboot项目引入pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot原创 2020-05-11 14:56:18 · 394 阅读 · 0 评论 -
ThreadPoolExecutor学习
1.先看一波线程池的构造方法public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ...原创 2020-04-29 17:57:29 · 179 阅读 · 0 评论 -
java socket网络通信多对多
public static void serverStart() { try { int number = 1; ServerSocket s = new ServerSocket(SERVERPORT); System.out.println("服务器启动: " + s); whi...原创 2019-09-16 20:01:12 · 391 阅读 · 0 评论 -
JAVA版CRC16_X25校验算法(由C翻译)
public static String CRC_16(byte [] bytes){ int i,j,lsb; int h=0xffff; for(i=0;i<bytes.length;i++){ h ^= bytes[i]; for(j=0;j<8;j++) {...原创 2019-09-16 19:58:12 · 1817 阅读 · 0 评论