
Java
文章平均质量分 75
乄名007
你好!佩琦~没时间写呢 点个赞呗~
展开
-
Javassist问题总结
Javassit提供了运行时操作Java字节码的方法,其效率低于asm。javassist主要是提供了代码级别的修改(也有bytecode级别),相比与asm的字节码级别的修改,学习成本低,开发效率高。因此,在实际应用中javassist是一个非常不错的选择。以下是在使用javassist的过程中碰到的问题及处理方法: 1、ClassLoader问题 我们知道java中有ExtC...翻译 2021-05-08 15:45:34 · 853 阅读 · 0 评论 -
RSA加密、解密、签名、验签的原理及方法
一、RSA加密简介RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。二、RSA加密、签名区别加密和签名都是为了安全性考虑,...转载 2020-03-26 16:06:59 · 562 阅读 · 1 评论 -
Java动态修改Enum实例
本文链接:https://www.javaspecialists.eu/archive/Issue161.htmlhttp://www.hankcs.com/program/java/enum-java-examples-of-dynamic-modification.html原创 2019-11-12 18:33:59 · 1063 阅读 · 0 评论 -
Arthas使用
官方文档:https://alibaba.github.io/arthas/Arthas的一些特殊用法文档说明Java 中冷门的 synthetic 关键字原理解读原创 2019-11-12 17:39:25 · 1029 阅读 · 0 评论 -
并发计数器Atomic/Adders
原创 2018-08-08 11:10:19 · 319 阅读 · 0 评论 -
非阻塞堆栈
典型非阻塞队列:ConcurrentLinkedQueue (CAS)典型阻塞队列:BlockingQueue (生产者-消费者模式)原创 2018-08-08 11:10:02 · 178 阅读 · 0 评论 -
JAVA中几种常用的RPC框架介绍
RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等。RPC还有一个特点就是能够跨语言,本文只以JAVA语言里的RPC为例。对于RPC有一个逻辑关系图,以RMI为例:其他的框架结构也类似,区别在于对象的序列化方法,传输对象的通讯协议,以及注册中心的管...转载 2018-08-08 11:47:50 · 450 阅读 · 0 评论 -
Java NIO:NIO概述
Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。 以下是本文的目录大纲: 一.NIO中的几个基础概念 二.Channel 三.Buffer 四.Selector 若有不正之处,...转载 2018-08-09 10:33:27 · 113 阅读 · 0 评论 -
Java性能优化之JVM GC详解(垃圾回收机制)
JVM GC(垃圾回收机制)在学习Java GC之前,我们需要记住一个单词:stop-the-world。它会出现在任何一种GC算法中。stop-the-world意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world发生时,除GC所需的线程外,所有的线程都进入等待的状态,直到GC任务完成。GC优化很多时候就是减少stop-the-world的发生。 J...原创 2018-08-08 12:24:18 · 398 阅读 · 0 评论 -
Synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock使用场景及区别原理
Synchronized(隐式锁,悲观锁,monitor):(javap -c className 反编译)Lock(显式锁):jdk1.5加入悲观锁:例如synchronized乐观锁:CAS悲观锁、乐观锁:StampedLock...原创 2018-08-08 11:10:43 · 1477 阅读 · 0 评论 -
JAVA CAS原理深度分析
JAVA CAS原理深度分析 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomicstampedreference.htmlhttp://www.searchsoa.com.cn/showcontent...原创 2018-08-08 11:11:08 · 140 阅读 · 0 评论 -
队列同步器AQS
队列同步器AQS实现自定义锁Lcck:(可参考ReentrantLock实现源码)class MutexDemo implements Lock, java.io.Serializable { ...原创 2018-08-08 10:46:26 · 238 阅读 · 0 评论 -
Volatile原理机制
原创 2018-08-08 11:10:54 · 128 阅读 · 0 评论 -
java内存模型与多线程
原创 2018-08-07 17:10:23 · 113 阅读 · 0 评论 -
Thread线程详解
线程的3种创建方式:1、extends Thread2、implements Runnable3、implements Callable<T> //有返回值线程的启动方式:在public synchronized void start()方法中调用了本地方法native void start0()启动线程状态图:线程中断方式:...原创 2018-08-07 16:39:13 · 264 阅读 · 0 评论 -
通过JDBC访问数据库的详细过程
事务隔离级别:Statement和PreparedStatement、CallableStatement的区别原创 2018-08-07 16:27:39 · 633 阅读 · 0 评论 -
synchronized与Lock的区别
原创 2018-08-07 16:13:51 · 152 阅读 · 0 评论 -
java concurrent并发包的实现 j.u.c
由于java的CAS同时具有 volatile 读和volatile写的内存语义,因此Java线程之间的通信现在有了下面四种方式:A线程写volatile变量,随后B线程读这个volatile变量。 A线程写volatile变量,随后B线程用CAS更新这个volatile变量。 A线程用CAS更新一个volatile变量,随后B线程用CAS更新这个volatile变量。 A线程用CAS更...原创 2018-08-09 10:33:46 · 175 阅读 · 0 评论 -
链表传输队列LinkedTransferQueue
原创 2018-08-09 10:34:24 · 201 阅读 · 0 评论 -
次时代Java编程(一):Java里的协程
http://geek.youkuaiyun.com/news/detail/71824这东西其实有很多名词,比如有的人喜欢称为纤程(Fiber),或者绿色线程(GreenThread)。其实最直观的解释可以定义为线程的线程。有点拗口,但本质上就是这样。我们先回忆一下线程的定义,操作系统产生一个进程,进程再产生若干个线程并行的处理逻辑,线程的切换由操作系统负责调度。传统语言C++ Java等线程其实与操作...转载 2019-04-10 13:17:59 · 565 阅读 · 0 评论 -
链路追踪google dapper论文 中文
概述当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。Dapper–Google生产环境下的分布式跟踪系统,应运而生。那么我们就来介绍一个大规模集群的跟踪系统,它是...原创 2019-01-14 22:47:26 · 1082 阅读 · 0 评论 -
javassist官方文档 中文
官方文档地址:http://www.javassist.org/tutorial/tutorial.html安装 谷歌翻译 插件 翻译网页即可看什么资料都不如看官方文档权威。。。原创 2019-01-17 23:27:48 · 1978 阅读 · 0 评论 -
javaagent使用demo详解
好久没写了,伸个懒腰来~~javaagent又称java探针,结合javassist或asm等框架对字节码文件进行操作,从而更优雅的实现“AOP”等功能,减少对原代码的侵入性等。从而我们可以借此来实现微服务等的全链路追踪以及项目环境隔离等功能。好了话不多说,直接写示例吧:示例分为两个项目:1、agent项目:agentdemo,2、被代理项目agentclient我们要做的是:用agent项...原创 2018-12-19 14:36:34 · 2300 阅读 · 2 评论 -
查看.class文件的各种形式及含义
:%!xxd原创 2018-09-30 16:19:54 · 2710 阅读 · 0 评论 -
无锁的缓存框架: Disruptor
无锁的缓存框架: DisruptorDisruptor框架是由LMAX公司开发的一款高效的无锁内存队列。它使用无锁的方式实现了一个环形队列,非常适合于实现生产者和消费者模式,比如事件和消息的发布。在Disruptor中,别出心裁地使用了环形队列(RingBuffer)来代替普通线性队列,这个环形队列内部实现为一个普通的数组。对于一般的队列,势必要提供队列同步head和尾部tail两个指针,用于出...原创 2018-10-18 14:03:37 · 600 阅读 · 0 评论 -
CPU Cache的优化:解决伪共享问题
除了使用CAS和提供了各种不同的等待策略来提高系统的吞吐量外。Disruptor大有将优化进行到底的气势,它甚至尝试解决CPU缓存的伪共享问题。什么是伪共享问题呢?我们知道,为了提高CPU的速度,CPU有一个高速缓存Cache。在高速缓存中,读写数据的最小单位为缓存行(Cache Line),它是从主存(memory) 复制到缓字(Cache) 的最小单位,一般为32字节到128字节。如果两个变量...原创 2018-10-18 15:07:27 · 1413 阅读 · 0 评论 -
jvisualvm中简单使用BTrace、Profiler
安装插件:菜单栏-工具-插件BTrace:右击需要btrace的程序–>trace-application/* BTrace Script Template */import com.sun.btrace.annotations.*;import static com.sun.btrace.BTraceUtils.*;@BTracepublic class TracingSc...原创 2018-09-27 18:58:37 · 1176 阅读 · 0 评论 -
Java面试问题总结
Java基础:多态、C++虚函数Cloneableint / Integer 内存模型StringBuilder/String Buffer比较ArrayList/LinkedList/Vector比较HashMap/Hashtable/ConcurrentHashMap比较 原理对Exception的理解泛型 集合 迭代器类加载、热加载ThreadLo...原创 2018-09-02 19:58:17 · 266 阅读 · 2 评论 -
Java实现简单的RPC框架
一、RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。RPC示意图![https://images2015.cnblogs.com/blog/522490/201510/5...原创 2018-09-02 13:26:44 · 316 阅读 · 0 评论 -
j.u.c java并发包容器
同步队列SynchronousQueue优先级阻塞队列:PriorityBlockingQueue延时队列:DelayQueue同步计数器:CountDownLatch同步计数器(信号量):Semaphore同步计数器:CyclicBarrier...原创 2018-08-09 10:34:16 · 188 阅读 · 0 评论 -
如何在java程序中调用linux/windows命令或者shell脚本
方式一:ProcessBuilder 浅析ProcessBuilderProcessBuilder processBuilder=new ProcessBuilder("cmd.exe","/c","dir"); //windowsprocessBuilder.redirectOutput(new File("dir.txt")); //命令结果输出到文件中try { proces...原创 2018-08-07 15:51:00 · 1703 阅读 · 1 评论 -
浅析ProcessBuilder
概述ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处理实现进程的控制管理。每个 ProcessBuilder 实例管理一个进程属性集。它的start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从...原创 2018-08-07 15:38:42 · 1155 阅读 · 0 评论 -
Spring Aspect的Execution表达式
Aspectj切入点语法定义在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))execution()是最常用的切点函数,其语法如下所示: 整个表达式可以分为五个部分: 1、execution(): 表...转载 2018-07-26 20:56:38 · 531 阅读 · 0 评论 -
jvm问题排查总结
一: 问题背景与现象 1、健康检查失败 2、接口测试反应慢 3、系统多次CPU或内存使用率飙升,且是java进程引起二: 解决问题思路 1.确定服务已部署成功且没有被回收,健康状态检查成功,打开终端控制面板,登录服务器,若不能直接登录则先登录跳板机,再登录服务器,执行jps命令查看服务进程是否还存在2.执行top命令查看CPU和内存使用率。若发现有一或...原创 2018-07-26 18:57:46 · 4805 阅读 · 0 评论 -
面试笔记-(搜狐-java研发实习)
介绍一下你这个项目,是自己做着玩的还是其他目的微服务优缺点 https://blog.youkuaiyun.com/boonya/article/details/52576362微服务调用你们是怎么实现的,使用的feign声明式调用,那它的低层实现是采用的什么调用,httpClient效率不高 https://blog.youkuaiyun.com/fwk19840301/ar...原创 2018-07-15 01:01:51 · 569 阅读 · 0 评论 -
使用jmap和MAT分析JVM堆内存
Java的内存泄露多半是因为对象存在无效的引用,对象得不到释放,如果发现Java应用程序占用的内存出现了泄露的迹象,那么我们一般采用下面的步骤分析:1. 用工具生成java应用程序的heap dump(如jmap)2. 使用Java heap分析工具(如MAT),找出内存占用超出预期的嫌疑对象3. 根据情况,分析嫌疑对象和其他对象的引用关系。4. 分析程序的源代码,找出嫌疑对象数量过多的原...转载 2018-07-19 21:42:52 · 266 阅读 · 0 评论 -
史上最简单的 SpringCloud 教程 | 终章
转载请标明出处: http://blog.youkuaiyun.com/forezp/article/details/70148833 本文出自方志朋的博客错过了这一篇,你可能再也学不会 Spring Cloud 了!Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝。赶快上船吧,老船长带你飞。终章不是最后一篇,它是一个汇总,未来...转载 2018-07-19 20:47:14 · 210 阅读 · 0 评论 -
jstat使用详解(jvm问题排查)
jstat命令使用jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]注意:使用的jdk版本是jdk8.类加载统计:C:\Users\Administrator>jstat -class 2060Loaded Bytes Unloaded By...原创 2018-07-19 16:39:52 · 2420 阅读 · 0 评论 -
Spring注解总结
主要分为一下几部分:组件添加组件赋值组件注入深入原理1,组件添加@Bean注解@ComponentScan注解@Controller注解@Service注解@Repository注解@Conditional注解@Lazy注解@Scope注解FactoryBeanbean生命周期2,组件赋值@value注解@PropertySource注解@Resource注解@Inject注解@Profile注解...转载 2018-05-26 11:14:25 · 793 阅读 · 0 评论 -
Spring知识点总结
1. Spring框架的作用轻量:Spring是轻量级的,基本的版本大小为2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring包含并管理应用中对象的生命周期和配置MVC框架: Spring-MVC事务管理:Spring提供一个持续的事务管...原创 2018-05-26 11:11:06 · 231 阅读 · 0 评论