基础
yizhizou123ABC
这个作者很懒,什么都没留下…
展开
-
Java Socket网络编程常见异常(转)
1.java.net.SocketTimeoutException 这个异常比较常见,socket超时。一般有2个地方会抛出这个,一个是connect的时候,这个超时参数由connect(SocketAddress endpoint, int timeout)中的后者来决定,还有就是setSoTimeout(int timeout),这个是设定读取的超时时间。他们设置成0均表示无限大。 -...转载 2020-03-20 14:27:21 · 218 阅读 · 0 评论 -
elect、poll、epoll优缺点
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用...转载 2019-12-31 10:24:18 · 146 阅读 · 0 评论 -
java序列化详解
一、序列化与反序列化 序列化:指堆内存中的java对象数据,通过某种方式把对存储到磁盘文件中,或者传递给其他网络节点(网络传输)。这个过程称为序列化,通常是指将数据结构或对象转化成二进制的过程。 即将对象转化为二进制,用于保存,或者网络传输 反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生...转载 2019-12-30 10:33:51 · 255 阅读 · 0 评论 -
NIO&epoll
说到NIO,涉及到的知识点有很多,我们来一一捋一捋。 IO IO(InputStream/OutputStream)指的是读出/写入数据,IO可以分为磁盘IO和网络IO,围绕我们今天主题讲的是网络IO。网络IO包括了等待数据传输和读写数据的过程,等待数据传输其实就是等待数据经由网线、网卡、内核空间的过程,读写数据的过程是内核空间和用户空间的互相拷贝的过程。 举个例子,在read...转载 2019-12-18 17:31:07 · 263 阅读 · 0 评论 -
基于xa的分布式事务详解
1.XA XA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁。XA之所以需要引入...转载 2019-12-18 16:56:46 · 353 阅读 · 0 评论 -
linux 性能瓶颈排查
背景 作为开发人员,肯定遇到过以下场景,应用突然卡住了,或者异常退出,cpu占用过高等各种异常情况,一般遇到这些异常情况,该如何去查找具体原因呢? linux和jdk提供了一些命令和工具来查看内存、cpu、网络等数据。我们统称这些情况成为性能瓶颈, 常见的性能瓶颈主要包括以下分类: 内存瓶颈 cpu瓶颈 网络瓶颈 磁盘瓶颈 应用瓶颈 下面分别介绍各种瓶颈的排查命令和工具 内存瓶颈 c...转载 2019-11-26 10:30:03 · 176 阅读 · 0 评论 -
log4j日志组合
commons-logging apache最初的日志门面,目的是在开发组件时不强依赖日志实现,给调用者以选择。 jcl-over-slf4j slf4j开发的为了兼容前者的适配,里面的内容和前者基本一致,引用时和前者互斥。 slf4j-api slf4j的主api,作为独立的日志门面。 slf4j-log4j slf4j对log4j的适配,要和log4j包一起引用 log4j log4j实现...转载 2019-11-18 17:33:42 · 200 阅读 · 0 评论 -
打印瑞年和打印质数
public static void printRui(int k){ for (int i = 1; i <=k ; i++) { if ((i%4==0&&i%100!=0)||i%400==0){ System.out.println(i); } } } public static vo...原创 2019-11-13 16:01:47 · 170 阅读 · 0 评论 -
斐波那契数列在杨辉三角中的运用
public static void fun(int n){ int [][] a = new int[n+1][n+1]; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ if(j==1||j==i){ a[i][j]=1; }else{ a[i][j]=a[i-1][j-1]+a[i-1][j];//斐波那契数列应用 ...原创 2019-11-13 15:51:09 · 1025 阅读 · 0 评论 -
快速排序
public static void quickSort(int [] arr,int low,int high){ if(low>high) return; int i=low; int j=high; int base=arr[low]; while(i<j){ while(base<=arr[j]&&i<j){ j--; } whi...原创 2019-11-09 15:10:42 · 218 阅读 · 0 评论 -
二叉树前序 中序 后序 层序 概念
前序遍历:就是从二叉树的根结点出发,当第一次到达结点时就输出结点数据,按照先向左在向右的方向访问 ABDHIEJCFG 根节点在第一位 中序遍历就是从二叉树的根结点出发,当第二次到达结点时就输出结点数据,按照先向左在向右的方向访问 HDIBJEAFCG 根节点在中间 中序遍历顺序和大小顺序是相同的 后序遍历就是从二叉树的根结点出发,当第三次到达结点时就输出结点数据,按照先向左在向右的方...转载 2019-11-08 15:24:45 · 805 阅读 · 0 评论 -
二叉树递归 详解
public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public ...原创 2019-11-08 14:57:46 · 280 阅读 · 0 评论 -
java延迟队列DelayQueue使用及原理
队列元素需要实现getDelay(TimeUnit unit)方法和compareTo(Delayed o)方法, getDelay定义了剩余到期时间,compareTo方法定义了元素排序规则,注意,元素的排序规则影响了元素的获取顺序,将在后面说明。 内部存储结构 DelayedQuene的元素存储交由优先级队列存放。 public class DelayQueue<E exte...转载 2019-11-07 10:46:50 · 322 阅读 · 0 评论 -
ThreadLocal
ThreadLocal是什么 ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射 每个Thread线程内部都有一个Map。 Map里面存储线程本地对象(key)和线程的变量副本(value) 但是,Thread内部的Map是由ThreadLocal维护的,由ThreadLocal负责向map获取和设置线程的变量值。 ThreadLocal...转载 2019-11-07 10:02:46 · 171 阅读 · 0 评论 -
强虚软弱引用
强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ps:强引用其实也就是我们平时A a = new A()这个意思。 软引用(SoftReference) ...转载 2019-11-07 09:54:02 · 133 阅读 · 0 评论 -
sleep(0),sleep以及yeid 的区别
Thread.Sleep(0) Sleep 的意思是告诉操作系统自己要休息 n 毫秒,这段时间就让给另一个就绪的线程吧。当 n=0 的时候,意思是要放弃自己剩下的时间片,但是仍然是就绪状态,其实意思和 Yield 有点类似。但是 Sleep(0) 只允许那些优先级相等或更高的线程使用当前的CPU,其它线程只能等着挨饿了。如果没有合适的线程,那当前线程会重新使用 CPU 时间片 优势:相比 ...转载 2019-11-05 20:58:38 · 984 阅读 · 1 评论 -
linux下jdk安装卸载
查看现有jdk rpm -qa | grep java 删除上述所有java文件 例子: rpm -e --nodeps java-1.7.0-openjdk-devel-1.7.0.45-2.4.3.3.el6.x86_64 查看jdk 安装目录 ls -lrt /usr/bin/java ls -lrt /etc/alternatives/java 一般在以下位置 cd /usr/lib/...原创 2019-11-05 16:45:23 · 140 阅读 · 0 评论 -
[java] 反射和多态实现原理详解以及对比
Table of Contents 反射和多态 多态 什么是多态 java里多态的具体用法 多态的实现原理 反射 什么是反射 反射的实现原理 反射的应用 反射的弊端 反射相关类 反射应用实例 一些问题 private修饰的方法可以通过反射访问,那么private意义何在? 反射和多态的区别 反射和多态 事实上,反射和多态这两种技术并无直接联系,之所以把它们放在一起说...转载 2019-10-31 14:30:32 · 149 阅读 · 0 评论 -
java jdk1.8 hashmap 源码解析
数据结构:数组+链表/红黑树 (链表大于8 转为红黑树) 一 keyhashcode 的高16与低16 异或 主要是让高16参与运算 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); } 二 初始...原创 2019-10-28 16:15:56 · 126 阅读 · 0 评论 -
java 拆箱和装箱过程
装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。 装箱: public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + ...原创 2019-10-28 15:32:30 · 178 阅读 · 0 评论