Java 充电桩
文章平均质量分 86
记录Java从基础到高级的知识理论到实践,包括Java基础,并发编程等。
职场007
共享共赢,互利共生,尊重原创,勇于创新
展开
-
使用Java 将字节数组转成16进制的形式
在很多场景下,需要进行分析字节数据,但是我们存起来的字节数据一般都是二进制的,这时候就需要我们将其转成16进制的方式方便分析。比如在做音视频的时候,需要看下我们传输的视频h264数据中是否有对应的I帧或者B帧等数据,做ASM插桩的时候,可以使用输出类结构的16进制辅助分析了解问题。测试投屏的时候尤其有用,比如说投屏到电视上后,发现没有画面,或者是画面很卡顿,这时候就需要对我们传输的视频数据做分析,所以我们将视频的数据转成16进制的形式,并且以一定的格式输出,可以很方便的帮助我们定位问题。原创 2024-05-26 19:14:38 · 1035 阅读 · 0 评论 -
设计模式之创建型模式---原型模式(ProtoType)
在有些系统中,往往会存在大量相同或者是相似的对象,比如一个围棋或者象棋程序中的旗子,这些旗子外形都差不多。使用原始创建对象的方法会很耗时,而原型设计模式会让对象的生成高效很多,本文将介绍原型设计模式原创 2024-05-22 13:39:57 · 998 阅读 · 0 评论 -
ASM字节码操作库---入门环境搭建
ASM可以对字节码数据做修改,然后生成一份新的字节码文件,而且ASM还可以在什么都没有的情况下,直接生成一个.class文件。本文的demo就是演示这个场景,除此之外,ASM还能做分析操作,分析操作是指它可以对一份字节码做分析统计的操作,但是不生成新的字节码文件,也就是说它只是单纯分析,不做任何修改。本文使用JAVA语言作为ASM的演示demo。原创 2024-04-27 11:19:33 · 899 阅读 · 2 评论 -
设计模式之创建型模式---工厂模式
工厂模式从名字就能看出,这种模式是用于创建对象的,因为现实生活中,工厂就是用于生产产品的嘛。所以工厂模式的名字起得非常的贴近生活。工厂模式根据应用场景的不同,分为简单工厂,工厂方法,和抽象工厂三种。现实生活中的工厂有的可以生产几种产品,客户根据工厂提供的产品定制就行。比如生产A,B两种品牌的车。这种情况对应到工厂设计模式中就是简单工厂模式。用户只需要给工厂说我要A或者B品牌的车就行。原创 2024-04-19 11:57:18 · 948 阅读 · 0 评论 -
设计模式之创建型模式---建造者模式
建造者模式是一种广泛使用的设计模式,在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式:可复用面向对象软件基础》中被提及,它的定义为,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式目前主要有两种,一种是经典的建造者模式,另外一种是变种的建造者模式。本文就是介绍建造者模式的两种形态的Java实现。原创 2024-04-09 21:15:54 · 1271 阅读 · 0 评论 -
设计模式之结构型模式---代理模式
代理模式是结构型模式的一种,结构型模式描述的是如何将类和对象按照某种布局组成更大的结构,它分为类结构型和对象结构型,类结构型主要都会哦那个继承机制来组织接口和类,而对象结构型主要是使用组合和聚合来组合对象。代理模式分为两种,分别是静态代理和动态代理,代理模式主要是为其他对象提供一种代理以控制对这个对象的访问原创 2023-07-08 11:31:32 · 503 阅读 · 0 评论 -
Java并发应用编程之任务执行分析
DougLea等人写的《Java并发编程实战》中是这样描述任务的:“在多数的并发应用程序中,都是围绕着“任务执行”来构造的,而任务通常是一些抽象且离散的工作单元,通过把应用程序的工作分解到多个任务中,可以简化应用程序的组织结构,提供一种自然的事务边界来优化错误恢复过程,以及提供一种自然的并行工作结构来提升并发性。”这段话理解起来就是:我们将一个很复杂的工作A,分解成很多的小任务,然后让这些小任务同时开始干自己的事情。当这些小任务都干完了后再合并成我们要完成的最终的那个复杂工作A。而如何合理的将这个复杂的任务原创 2023-07-03 10:13:47 · 201 阅读 · 0 评论 -
使用Java设计实现一个高效可伸缩的计算结果缓存
现在的软件开发中几乎所有的应用都会用到某种形式的缓存,重用之前的计算结果能够降低延迟,提高系统吞吐量,但是需要消耗更多的内存,是一种以空间换时间的方法。和许多`重复造的轮子`一样,缓存看起来很简单,无非就是把所有的计算结果保存下来,下次使用的时候优先使用缓存中已经保存的结果,没有的情况下才去重新计算。但是不合理的缓存机制设计却会让程序的性能受到影响,本文就通过对一个计算结果缓存的设计迭代介绍,分析每个版本的并发缺陷,并分析如何修复这些缺陷,最终完成一个高效可伸缩的计算结果缓存。原创 2023-06-20 10:22:28 · 261 阅读 · 0 评论 -
程序员必备知识之面向对象七大设计原则
如果我们能站在巨人的肩膀上眺望远方,为啥还要自己去艰难的翻越一座又一座的高山呢。面向对象设计原则就是前辈们在实战中给我们总结下来的宝贵经验和财富。我们可以基于这些经验,编写出很优秀的面向对象程序。在我将近5年的编程工作中,我发现,面向对象设计原则每个人好像都知道一点,每一个人好像都会点,但是写出来的代码依然是我行我素。野路子频出。很多编程不按照原则来,一股脑的瞎干,写出的程序给到后面人维护的时候,迎来的是一堆埋怨和骂声,以及无休止的一次又一次的重构,重构后发现还是和上一次代码一样的货色。原创 2023-06-18 17:20:43 · 270 阅读 · 0 评论 -
Java使用信号量(Semaphore)实现阻塞容器
学计算机的小伙伴应该都记得以前在操作系统课程中被信号量的P,V操作折磨的日子,当时只是抽象的说这里需要P,那里需要V的,很难结合实际的应用去使用信号量。而在Java中就实现了一种特别好用的信号量Semaphore。Java中的Semaphore大多数情况下可以作为为计数信号量,用来控制同时访问某个特定资源的操作数量,或者是执行某个特定操作的数量。计数信号量还可以用来实现某种资源池,或者是对容器添加边界。原创 2023-06-12 10:24:54 · 650 阅读 · 0 评论 -
Java闭锁之使用FutureTask实现预加载
FutureTask也可以用作闭锁;FutureTask的计算是通过Callable来实现的,相当于一种可生成结果的Runnable,并且可以处于3种状态,分别是`等待运行(waiting to run)`、`正在运行(Running)`、和`运行完成(Completed)`,而`运行完成`表示计算的所有可能结束方式,包括`正常结束`,`由于取消而结束`和`由于异常而结束`等,当FutureTask进入完成状态后,它就会永远停止在这个状态上。我们可以使用`Future.get()`方法获取任务执行的状态。原创 2023-06-06 10:33:12 · 302 阅读 · 0 评论 -
Java闭锁之使用CountDownLatch统计任务耗时
闭锁是一种同步的工具类,可以延迟线程的进度直到其到达终止状态,可以把闭锁看作是一扇门,在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过,当到达结束状态时,这扇门会打开允许所有线程通过。需要注意的是,当闭锁到达结束状态后,将不会再改变状态,因此这扇门将会永远保持打开状态原创 2023-06-01 10:34:34 · 653 阅读 · 0 评论 -
Java技术之注解
注解(Annotation)是从JDK5.0开始引入的新技术,他的作用是可以对程序作出解释,并且可以被其他的程序读取,例如可以被编译器读取。注解在代码中是以“@注释名”存在于代码中,也可以加一些参数值,例如:@SuppressWarnings(value=“unchecked”).注解可以用在代码中的package(包), class(类), method(方法), field(成员变量)上面,用于添加额外的辅助信息,Java程序可以通过反射机制编程实现对这些元数据的访问。原创 2023-02-21 13:12:50 · 339 阅读 · 0 评论 -
java 面向对象基础
在我们现实生活中的对象有张三、李四,宝马,奔驰,牡丹,菊花,想要描述这些对象,就得对它们进行共性的提取,比如可以把张三、李四抽象成一个类,把他们的共性封装在类中他们的共性就是他们都有姓名、性别、年龄等共性,同样宝马,奔驰,牡丹、菊花也有他们的共性,都可以抽取出来。虚函数的存在是为了多态。......原创 2022-07-30 08:08:31 · 610 阅读 · 2 评论 -
Java序列化Serializable和Android序列化Parcelable区别
作用:序列化的作用时为了保存对象的属性到本地文件、数据库,网络流等以方便数据等传输,这个传输可以是程序内的,也可以是两个程序间的(进程间通信)实现:Serializable使用反射技术,在运行期间产生临时对象。而parcelable是以Ibinder通信作为载体因为Serializable使用的是反射技术,而parcelable使用的是IBinder作为消息载体,所以parcelable的性能比serializable好,在内存开销方面小,但是这并不表示serializable可以被parcelable取原创 2022-07-04 12:37:32 · 362 阅读 · 0 评论 -
Java线程池
java线程池的理解使用。原创 2022-07-03 22:57:54 · 257 阅读 · 0 评论 -
Java 乐观锁的介绍以及对compareAndSet方法的使用及理解(以AtomicBoolean为例)
本文介绍了乐观锁的概念以及原理、优缺点,以及使用场景,并且用AtomicBoolean为例,解释了compareAndSet()方法的使用和理解。原创 2022-01-14 11:49:47 · 1802 阅读 · 0 评论