Java
Maya2000
这个作者很懒,什么都没留下…
展开
-
JVM GC相关概念
目前Java中可以作为GC ROOT的对象有:1、虚拟机栈中引用的对象(本地变量表)2、方法区中静态属性引用的对象3、方法区中常亮引用的对象4、本地方法栈中引用的对象(Native对象)回收算法:复制算法,标记清除算法(空间碎片问题),标记-整理算法;JVM为了优化内存的回收,使用了分代回收的方式,对于新生代内存的回收(Minor GC)主要采用复制算法。而对于老年代的回收(Major GC),大多采用标记-整理算法。垃圾回收器简介: 新生代串行回收器 Serial(-XX:+U...原创 2022-04-02 17:38:50 · 269 阅读 · 0 评论 -
Java 全排列算法
public static void main(String[] args) { Integer l[] = {1,5,2}; sort(l,0);}public static void sort(Integer[] l, int index) { if (index == l.length - 1) { System.out.println(Arrays.asList(l)); return; } for (int i = i.原创 2022-03-31 14:59:12 · 520 阅读 · 0 评论 -
二种JAVA快速排序算法比较
二种JAVA快速排序算法比较public class QCTest { public static void main(String[] args) { List<Integer> l1 = Arrays.asList(45,671,9,5,3,7,0,12,2000,34,56,45,21); l1 = QCTest.seq1(l1); System.out.println(l1); Integer[] l =原创 2021-11-25 11:37:44 · 174 阅读 · 0 评论 -
用guava的Queues.drain 解决 按数量和指定时间 弹出队列中的元素
import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.TimeUnit;import com.google.common.collect.Queues;public.原创 2021-04-06 17:58:17 · 3646 阅读 · 0 评论 -
NIO Reactor模型 & Netty线程模型
一、NIO Reactor模型1、Reactor模式思想:分而治之+事件驱动1)分而治之一个连接里完整的网络处理过程一般分为accept、read、decode、process、encode、send这几步。Reactor模式将每个步骤映射为一个Task,服务端线程执行的最小逻辑单元不再是一次完整的网络请求,而是Task,且采用非阻塞方式执行。2)事件驱动每个Task对应特...转载 2020-04-01 22:02:32 · 386 阅读 · 0 评论 -
偏向所锁,轻量级锁及重量级锁
一个对象刚开始实例化的时候,没有任何线程来访问它的时候。它是可偏向的,意味着,它现在认为只可能有一个线程来访问它,所以当第一个线程来访问它的时候,它会偏向这个线程,此时,对象持有偏向锁。偏向第一个线程,这个线程在修改对象头成为偏向锁的时候使用CAS操作,并将对象头中的ThreadID改成自己的ID,之后再次访问这个对象时,只需要对比ID,不需要再使用CAS在进行操作。 ...原创 2020-03-30 17:32:42 · 177 阅读 · 0 评论 -
Java多线程:synchronized的可重入性
从Java多线程:线程间通信之volatile与sychronized这篇文章中我们了解了synchronized的基本特性,知道了一旦有一个线程访问某个对象的synchronized修饰的方法或代码区域时,该线程则获取这个对象的锁,其他线程不能再调用该对象被synchronized影响的任何方法。那么,如果这个线程自己调用该对象的其他synchronized方法,Java是如何判定的?这就涉及到...转载 2019-07-10 11:13:01 · 194 阅读 · 0 评论 -
PROPAGATION_REQUIRED,PROPAGATN_REQUIRES_NEW,PROPAGATION_NESTED区别
PROPAGATION_REQUIRED嵌套时,不管是否用try catch,只要里外二个事务有一个出错,都会因rollback。因为是同一个事务范围。PROPAGATN_REQUIRES_NEW被嵌套时,外面的事务不会影响里面的事务。如果里面的事务用了try catch,那么出错外面不会rollback,里面rollback。如果没用,里面的抛出错,会导致里外的事务都rollback。P...原创 2018-08-02 21:19:10 · 1294 阅读 · 0 评论 -
自定义java.policy配置(如何让你的类禁止读写文件?禁止创建Socket对象?)
最近做的项目有一个特殊的需求,由于系统是CS的,客户端需要自己编写JAVA类上传至服务器运行,整个流程如下:1.客户端编写JAVA类,并实现特定接口2.由客户端的JAVA编译器将其编译成class3.客户端通过socket将class文件上传至服务器4.服务器将class文件放至自己的classpath中,加载并执行问题出在最后一步上,服务器虽然由我们完全控制,客户端编写的类虽然需要实现特定的接口...转载 2018-04-02 15:04:55 · 495 阅读 · 0 评论 -
LMAX Disruptor—多生产者多消费者中,消息复制分发的高性能实现
解决的问题当我们有多个消息的生产者线程,一个消费者线程时,他们之间如何进行高并发、线程安全的协调?很简单,用一个队列。 当我们有多个消息的生产者线程,多个消费者线程,并且每一条消息需要被所有的消费者都消费一次(这就不是一般队列,只消费一次的语义了),该怎么做?这时仍然需要一个队列。但是:1. 每个消费者需要自己维护一个指针,知道自己消费了队列中多少数据。这样同一条消息,可以转载 2018-02-01 14:30:52 · 858 阅读 · 0 评论 -
包装类对象之间值的比较,全部使用 equals 方法比较
所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。说明: 对于 Integer var = ? 在-128 至 127 范围内的赋值, Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 e原创 2018-01-11 21:46:27 · 2334 阅读 · 0 评论 -
Spring 获取方法参数名
Spring 获取方法参数名原创 2017-12-06 19:43:52 · 563 阅读 · 0 评论 -
JAVA四种XML解析技术
预 备测试环境:AMD 毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1.4.1+Eclipse 2.1+Resin 2.1.8,在 Debug 模式下测试。XML 文建格式如下:<?xml version="1.0" encoding="GB2312"?><RESULT> <VALUE> <NO>A转载 2006-08-25 09:10:00 · 1013 阅读 · 0 评论 -
Java中对象序列化技术
1、含义:将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 2、编程要求:只有实现Serializable接口的类对象才可以被序列化。 Serializable接口没有定义任何成员,它只用来说明某个类可以被序列化。3、序列化的特点:(1)如果某个类能够被序列化,其子类也可以被序列化。(2)声明为static和transient类型的成员数据不能被序列化。因为s转载 2006-08-25 09:20:00 · 1035 阅读 · 0 评论 -
ThreadLocal范例
import java.util.Random;/** * *//** * @author Oct 19, 2009 * @createDate 2:01:42 PM */public class ThreadLocalTest { private static ThreadLocal seqNum = new ThreadLocal() ; public ThreadLocal原创 2009-10-19 15:04:00 · 710 阅读 · 0 评论 -
inputstream 转 string 转 outputstream
public static void main(String[] args) throws IOException { File f = new File("E:"+File.separator+"1.doc"); InputStream in = new FileInputStream(f); ByteArrayOutputStrea原创 2014-03-28 13:33:28 · 862 阅读 · 0 评论 -
zookeeper 实现 配置管理(Configuration Management)
1 Create a Demo Class and runimport java.io.IOException;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org原创 2013-07-01 23:21:23 · 2539 阅读 · 0 评论 -
Redis单线程
总体来说快速的原因如下: 1)绝大部分请求是纯粹的内存操作(非常快速) 2)采用单线程,避免了不必要的上下文切换和竞争条件 3)非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间这3个条件不是相互独立的,特别是第一条,如果请求都是耗时的,采转载 2017-11-07 13:02:11 · 221 阅读 · 0 评论 -
nginx 缓存后,反向代理
location / { #root html;root d:/webroot; index index.html index.htm;if (!-e $request_filename) { proxy_pass http://localhost:8080; } }原创 2015-10-30 13:37:47 · 469 阅读 · 0 评论 -
线上应用故障排查之一:高CPU占用
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen)以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。通过ps aux | g转载 2017-11-14 15:09:59 · 271 阅读 · 0 评论 -
Velocity UI for Eclipse
Velocity UI for EclipseThis project leverages theEclipse platform(v3.x) by adding support for the template/scripting engineVelocity.It provides the following plugins:org.apache.velocityVelocity转载 2017-11-15 10:45:36 · 342 阅读 · 0 评论 -
http 学习笔记
1 应用型服务器一般Connection:close;资源型网站:Connection:keep-alive原创 2017-11-20 16:40:58 · 222 阅读 · 0 评论 -
Java 线程优化
代码如下:public class MulThreadTest { public static void main(String[] args) { final int a[] = new int[1024]; final Long begin = new Date().getTime(); for (int i = 0; i < 4; i++) { //final int原创 2017-11-21 09:25:37 · 293 阅读 · 0 评论 -
面向对象里类方法归属问题处理
网上一篇文章《十年之后再看“面向对象”》http://www.cnblogs.com/freeflying/p/7410167.html里面有讲到:我举一个例子:现在有两个类,一个用户类(User),一个博客类(Blog),现在有一个发布博客的方法(Publish)。那么,“发布博客”这个方法,究竟是应该放在用户的类里面,还是博客的类里面?即:究竟是User.Publish(B原创 2017-12-04 19:25:18 · 374 阅读 · 2 评论 -
spring 多数据源事务
spring 3对多数据源的事务管理可以不依赖JTA原创 2017-12-05 17:36:45 · 390 阅读 · 0 评论 -
Java学习笔记
1. 队列:JMS 支持两种消息通信模型:点到点队列(point-to-point)(PTP)模型和发布/订阅(Pub/Sub)模型:PTP 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。2. int 转 Integer:Integer I = new Integer(0);3. package的原创 2006-08-25 08:52:00 · 931 阅读 · 0 评论