
java
varyall
这个作者很懒,什么都没留下…
展开
-
(二)代码好坏判定
比如,面向对象中的继承、多态能够析出可复用的代码;设计原则中的单一指责、DRY(Don’t Repeat Yourself)、机遇借口而非实现、里式替换原则等,可以让我们写出可复用、灵活、可读性好、易扩展、易维护的代码;版权声明:本文为优快云博主「Rong_Jie」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/qq_23301117/article/details/121390703。可维护性、可读性、可扩展性。转载 2023-05-19 17:15:11 · 147 阅读 · 0 评论 -
信号量和互斥锁有什么区别
这是概念上的区别,比如说,信号,那是多线程同步用的,一个线程完成了某一个动作就通过信号告诉别的线程,别的线程再进行某些动作。互斥锁,这是多线程互斥用的,比如说,一个线程占用了某一个资源,那么别的线程就无法访问,知道这个线程离开,其他的线程才开始可以利用这个资源。看你自己的用途,你说的这个,就用互斥锁就可以了,互斥锁是为上锁而优化,条件变量是为等待而优化的,信号灯即可用于上锁原创 2015-11-03 21:58:43 · 1329 阅读 · 0 评论 -
真香!我终于干掉了该死的if-else
if else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if else。图片来自 Pexels虽然 if else 是必须的,但滥用 if else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if else 不仅对于现在...转载 2020-04-11 22:37:59 · 1078 阅读 · 0 评论 -
使用Spring StateMachine框架实现状态机
Spring StateMachine框架可能对于大部分使用Spring的开发者来说还比较生僻,该框架目前差不多也才刚满一岁多。它的主要功能是帮助开发者简化状态机的开发过程,让状态机结构更加层次化。前几天刚刚发布了它的第三个Release版本1.2.0,其中增加了对Spring Boot的自动化配置,既然一直在写Spring Boot的教程,所以干脆就将该内容也纳入进来吧,希望对有需求的小伙伴有一...转载 2019-11-15 22:55:32 · 255 阅读 · 0 评论 -
状态机引擎选型
状态机引擎选型date: 2017-06-19 15:50:18概念有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在电商场景(订单、物流、售后)、社交(IM消息投递)、分布式集群管理(分布式计算平台任务编排)等场景都有大规模的使用。状态机的要素状态机可归纳为4个要素,即现态、条件、动作、次态。“...转载 2019-11-15 18:25:58 · 600 阅读 · 0 评论 -
AOP切入同类调用方法-AopContext.currentProxy()
本文链接:https://blog.youkuaiyun.com/u014788227/article/details/90111662常规使用spring的AOP功能,就是对一个service的B方法进行切入记录日志,AOP能起作用。但是假如B方法被service中的A方法调用,切入会失效,无法记录日志(这里的切入失效是指对B的切入记录日志失效,对A方法的切入还是有用的)。解释,要求熟悉动态代理原理...转载 2019-11-07 12:02:51 · 1264 阅读 · 1 评论 -
Spring AOP注解失效的坑及JDK动态代理
@Transactional @Async等注解不起作用之前很多人在使用Spring中的@Transactional, @Async等注解时,都多少碰到过注解不起作用的情况。为什么会出现这些情况呢?因为这些注解的功能实际上都是Spring AOP实现的,而其实现原理是通过代理实现的。JDK动态代理以一个简单的例子理解一下JDK动态代理的基本原理:? 1 2...转载 2019-11-07 12:01:52 · 1752 阅读 · 0 评论 -
深入理解Java内存模型(四)——volatile
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { //使用volatile声明64位的long型变量...转载 2019-04-09 20:33:41 · 183 阅读 · 0 评论 -
Java Jar打包(引用第三方包)
目录结构:[test@root kafka]$ lscom lib MANIFEST.MF首先创建文件mkdir kafkacd kafkakafka目录结构如下:kafka/kafka/lib/kafka/lib/kafka-clients-0.10.2.0.jarkafka/lib/slf4j-api-1.7.2.jarkafka/lib...原创 2018-03-22 13:18:02 · 2046 阅读 · 0 评论 -
Java字符串占位符(commons-text)替换
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>1.6</version> </dependen原创 2018-11-02 10:45:15 · 13299 阅读 · 1 评论 -
Java 线程创建方法
除了继承Thread、实现Runnable、Callable三种创建线程方式外的第四种创建方式:实现java.util.concurrent.ThreadFactory接口,实现newThread(Runnable r)方法。这种方式应用于这样一种场景:我们需要一个线程池,并且对于线程池中的线程对象、赋予统一的名字、优先级,以及一些其他统一操作,使用这样的工厂方式就是优秀程序员应该使用的最...转载 2018-09-04 20:15:00 · 138 阅读 · 0 评论 -
图解Tomcat类加载机制(阿里面试题)
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。 对于JVM来说:因此,按照这个过程可以想到,如果同样在CLASSPATH指定的目录中和自己工作目录中存放相同的class,会优先加载CLASSP...转载 2018-08-21 15:14:40 · 395 阅读 · 0 评论 -
java class文件魔数、版本号
每个class文件的前四个字节表示魔数,他的唯一作用是确定这个文件是否是一个能被虚拟机接受的class文件, 很多文件存储标准中都使用魔数来进行身份识别,比如图片格式,如gif、jpg等在文件中都存在魔数,使用魔数而不是扩展名来进行识别主要基于安全方面的考虑。因为扩展名可以随便改动。文件格式的制定者可以自有的选择魔数值。 紧接着魔数的4个字节后,第5个和第6个表示次版本号。第7、8表示主版...转载 2018-08-21 15:00:40 · 2119 阅读 · 1 评论 -
[jvm解析系列][五]类文件结构,魔数,最大最小版本号
上一会讲完了JVM的内存分配和垃圾回收策略我们该讲一讲如何组织一个class文件了一个class文件怎么被加载运行的?我们可以说java的野心很大,早在97年的时候JVM虚拟机规范中就说以后可以支持其他语言,到JDK1.7的时候基本已经实现了,怎么做到的呢?这是JVM做的语言无关性即JAVA/Scala/JRuby等都可以编译成class文件,对于JVM而言我不管你之前什么文件反正我只...转载 2018-08-21 14:59:56 · 200 阅读 · 0 评论 -
Java并发编程:如何创建线程?
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 若有不正之处,请多多谅解并...转载 2018-06-21 22:12:24 · 142 阅读 · 0 评论 -
java如何将char类型的数字转换成int型的数字
昨天做笔试提的过程中遇到一个问题: 如何把 char ‘3’ 转为 int 3, 大家应该知道,不能直接转化,那样得到是‘3’的Ascii. 如下面:[html] view plain copypublic class CharToIntConverter { public static void main(String[] args) { char n...转载 2018-06-24 22:29:30 · 9906 阅读 · 0 评论 -
Java工程师成神之路~(2018修订版)
针对本文,博主最近在写[《成神之路系列文章》][1] ,分章分节介绍所有知识点。欢迎关注。主要版本更新时间备注v1.02015-08-01首次发布v1.12018-03-12增加新技术知识、完善知识体系一、基础篇JVMJVM内存结构堆、栈、方法区、直接内存、堆和栈区别Java内存模型内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)、GC算法、...原创 2018-07-02 17:48:50 · 471 阅读 · 0 评论 -
JDK8新特性
1. 函数式编程 1.1 面向对象编程与函数式编程 1.2 JDK8对FP的支持2. 接口的默认方法(default)和静态方法(Static Methods) 2.1 接口的默认(实例)方法 2.2 接口静态(类)方法 2.3 接口的实例方法 2.4 接口与抽象类3. Labmda表达式、函数式接口和集合 3.1 函数式接口 3.2 示例1:Swing中的监听Lambda 3....转载 2018-07-06 18:22:50 · 3016 阅读 · 1 评论 -
Java8 Stream原理深度解析
上一篇文章中简要介绍了Java8的函数式编程,而在Java8中另外一个比较大且非常重要的改动就是Stream。在这篇文章中,将会对流的实现原理进行深度,解析,具体关于如何使用,请参考《Java8函数式编程》。常用的流操作在深入原理之前,我们有必要知道关于Stream的一些基础知识,关于Stream的操作分类,如表1-1所示。表1-1 Stream的常用操作分类(表格引自这里)如表1-1中所示,St...转载 2018-07-14 01:15:55 · 866 阅读 · 0 评论 -
&&(短路与)和&(逻辑与)的区别
&&(短路与)和&(逻辑与)的时候:有假则为假,全真则为真(有假必假,全真为真) ||(短路或)和|(逻辑或)的时候:有真则为真,全假则为假(有真必真,全假为假) 逻辑与和短路与的区别:逻辑与的判断方式是:从左到右依次判断,直到结尾(逻辑全程运算) 短路与的判断方式是: 从左到右依次判断,直到出现false为止将不再判断,...转载 2018-07-19 21:43:25 · 18551 阅读 · 4 评论 -
短路与*非短路与 _ 短路或&非短路或
1、验证“&”的作用:public class OperatorDemo{ public static void main(String[] args){ if(10!=10 & 10/0 == 0) //非短路与--要把所有的条件进行判断 { System.out.println("条件满足。。。"); ...转载 2018-07-19 21:49:40 · 1402 阅读 · 0 评论 -
sleep()和wait()方法与对象锁、锁池、等待池
一道Java的题目:关于sleep()和wait(),以下描述错误的一项是: - A sleep是线程类(Thread)的方法,wait是Object类的方法; - B sleep不释放对象锁,wait放弃对象锁 - C sleep暂停线程、但监控状态仍然保持,结束后会自动恢复 - D wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态1.关于...转载 2018-07-22 20:27:43 · 418 阅读 · 0 评论 -
线程的几种状态转换
线程在一定条件下,状态会发生变化。线程一共有以下几种状态:1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。3、运行状态(Running):就绪状态的线程获取了C...转载 2018-07-22 20:35:38 · 2452 阅读 · 0 评论 -
Java数组浅析
数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。注意:如果你熟悉C/C++,请注意, Java数组的工作原理与它们不同。 1、数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。数组保存的仅仅是对象的引用,而不是对象本身。 ...转载 2018-08-26 15:28:05 · 152 阅读 · 0 评论 -
Java探针-Java Agent技术-阿里面试题
最近面试阿里,面试官先是问我类加载的流程,然后问了个问题,能否在加载类的时候,对字节码进行修改我懵逼了,答曰不知道,面试官说可以的,使用Java探针技术,能够实现我查了一下关于探针技术的知识:2. 基于javaAgent和Java字节码注入技术的java探针工具技术原理图0-0:动态代理功能实现说明我们利用javaAgent和ASM字节码技术开发java探针工具,实现原理如下:jdk1.5以后引入...转载 2018-06-20 23:19:15 · 1449 阅读 · 0 评论