Java
文章平均质量分 82
嫩草终结者
一个渴望成为大牛的小程序猿
展开
-
RTCP报文之NACK包的源码解析
NACKPacket.java/* * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http:/原创 2020-07-12 18:19:27 · 951 阅读 · 0 评论 -
RTP的封装类RawPacket源码解析
RawPacket类是jitsi封装的一个jar包,里面包含了关于RTP和RTCP的一些基本操作。一、依赖包<dependency> <groupId>org.jitsi</groupId> <artifactId>libjitsi</artifactId> <version>1.0-20190405.175243-382</version></dependency>...原创 2020-07-12 17:02:30 · 1055 阅读 · 3 评论 -
JDK之线程池源码解读
一、线程池的主要构造方法public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runn原创 2020-07-05 14:14:03 · 176 阅读 · 0 评论 -
Class类文件结构的理解
本文大部分都是参考《深入理解Java虚拟机 JVM高级特性与最佳实践》一书,写下这篇博客的主要目的主要是加深自己的理解。首先是类的整体结构其中,u1、u2、u4、u8表示1个字节、2个字节、4个字节和8个字节的无符号数。文章的作者举了一个例子来进行讲解,我也直接引用他的例子。package com.zhuyun.Maven;public class TestClass { private int m; public int inc(){ return m + 1.原创 2020-06-27 15:00:38 · 399 阅读 · 0 评论 -
Java自定义注解及简单应用
Java注解,我的理解就类似于标签。比如,一说到新疆人,大家就会想到羊肉串;一说到蒙古人,大家就会想到草原和骑马。羊肉串、草原、骑马,就像是贴在新疆人和蒙古人身上的标签一样。 接下来,我们来自定义一个简单的Java注解,并且在应用中使用它。一、定义注解package com.zhuyun;import java.lang.annotation.*;@...原创 2019-12-01 15:23:18 · 153 阅读 · 0 评论 -
理解java的三大特性之继承
在《Think in Java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一---继承。 继承 在讲解之前转载 2017-04-11 20:59:59 · 251 阅读 · 0 评论 -
Java内存分配分析
本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在转载 2017-04-11 21:55:39 · 291 阅读 · 0 评论 -
每个java初学者都应该搞懂的问题
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。问题一:我声明了什么!String s = "Hello world!";许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不转载 2017-04-11 22:03:50 · 709 阅读 · 0 评论 -
理解Java的三大特性之封装
三大特性之---封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节(转载 2017-04-11 23:09:51 · 266 阅读 · 0 评论 -
Java开发中的23种设计模式详解
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2017-04-12 23:59:17 · 594 阅读 · 0 评论 -
Java面试知识点总结
本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺(阅读本文需要有一定的Java基础;若您初涉Java,可以通过这些问题建立起对Java初步的印象,待有了一定基础后再后过头来看收获会更大)。 1. Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么?(1)转载 2017-04-13 23:47:38 · 258 阅读 · 0 评论 -
给Java程序员的几条建议
对于Java程序猿学习的建议这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是LZ你是如何学习Java的,能不能给点建议?今天LZ是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内容,同样适用于一些希望转行到Java的同学。在大家看之前,LZ要先声明两转载 2017-04-29 18:29:43 · 990 阅读 · 1 评论 -
40个Java多线程问题总结
前言java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作转载 2017-04-15 20:40:09 · 442 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来转载 2017-04-20 23:19:14 · 440 阅读 · 0 评论 -
Java线程池ExecutorService
示例[java] view plain copy print?import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorServ转载 2017-04-20 23:33:22 · 277 阅读 · 0 评论 -
一个经典例子让你彻彻底底理解Java回调机制
以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:Class A实现接口CallBack callback转载 2017-04-22 17:22:42 · 540 阅读 · 0 评论 -
Java线程:Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务转载 2017-04-22 19:04:37 · 288 阅读 · 0 评论 -
Java爬虫,信息抓取的实现
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23272657今天公司有个需求,需要做一些指定网站查询后的数据的抓取,于是花了点时间写了个demo供演示使用。思想很简单:就是通过Java访问的链接,然后拿到html字符串,然后就是解析链接等需要的数据。技术上使用Jsoup方便页面的解析,当然Jsoup很方转载 2017-05-13 23:21:14 · 775 阅读 · 0 评论 -
Java ThreadLocal使用浅析
Java ThreadLocal使用浅析 JAVA API 文档里关于 ThreadLocal 的定义是:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesse转载 2017-04-24 11:15:21 · 267 阅读 · 0 评论 -
Java wait() notify()方法使用实例讲解
转载自:http://blog.csdn.net/lingzhm/article/details/449408231)wait()、notify()和notifyAll()方法是本地方法,并且为final方法,无法被重写。 2)调用某个对象的wait()方法能让当前线程阻塞,并且当前线程必须拥有此对象的monitor(即锁,或者叫管程) 3)调用某个对象的notify(转载 2017-05-16 15:05:29 · 327 阅读 · 0 评论 -
面试题收集——Java基础部分
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。2、Java有没有goto? java中的保留字,现在没有在java中使用。3、说说&和&&的区别。 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达转载 2017-04-26 00:04:31 · 235 阅读 · 0 评论 -
详细介绍Java垃圾回收机制
垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再使用的对象。GC通过确定对象是否被活动对象引用来确定是否收集该对象。GC首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。引用计转载 2017-04-26 23:27:42 · 237 阅读 · 0 评论 -
Java中的String不再纠结
先分享一下java中string的一些小专题吧,这部分比比较基础,但是也非常的有用。我发现很多面试官像中了邪一样就爱问这个。。string的种种,纠结,希望这篇文章让大家不再纠结。。 string是我们经常用到的一个类型,其实有时候觉得写程序就是在反复的操作字符串,这是C的特点,在java中,jdk很好的封装了关于字符串的操作。今天主要讲的是三个类String 、StringBu转载 2017-04-26 22:38:53 · 222 阅读 · 0 评论 -
Java设计模式之单例模式
在GoF的23种设计模式中,单例模式是比较简单的一种。然而,有时候越是简单的东西越容易出现问题。下面就单例设计模式详细的探讨一下。所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等。 1、最简单的实现首先,能想到的最简单的实现转载 2017-04-26 22:39:44 · 203 阅读 · 0 评论 -
利用ScheduledThreadPoolExecutor定时执行任务
ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类;JDK api里是这么说的:ThreadPoolExecutor,它可另行安排在给定的延迟后运行命令,或者定期执行命令。需要多个辅助线程时,或者要求 ThreadPoolExecutor 具有额外的灵活性或功能时,此类要优于 Timer。一旦启用已延迟的任务就执行转载 2017-05-27 23:46:48 · 743 阅读 · 0 评论 -
Java监听器
1.原理: 当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。例如:创建一个“人”类Class Person人拥有吃的方法public void eat(){},我们的目的就是,在这个人吃之前要提醒他洗手,所以我们就要监听这个人,不管他在什么时候吃,我们都要能够监听到并且提醒他洗手,通俗点讲这个就是监听器的作用(在吃之前提醒他洗手)。2.组成:转载 2017-05-17 23:20:35 · 292 阅读 · 0 评论 -
Java反射机制
Java反射机制是Java语言中一种很重要的机制,可能在工作中用到的机会不多,但是在很多框架中都有用到这种机制。我们知道Java是一门静态语言,在程序编译时变量的数据类型都已经确定,那么在Java运行时环境中,对于任意一个类,我们能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java的反射机制(Ref转载 2017-04-28 00:12:48 · 236 阅读 · 0 评论 -
Java程序性能优化
一、避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。 例子: [java] view plain copyimport java.util.vector; class cel { void method (ve转载 2017-05-30 21:17:47 · 440 阅读 · 0 评论 -
Java并发编程:Lock
synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁会有三种情况: 1)获取锁的线程执行完了该代码块,然后线程释放对锁的占有; 2)线程执行发生异常,此时J转载 2017-06-04 23:19:03 · 313 阅读 · 0 评论 -
java新特性——读写锁ReadWriteLock
from URL : http://hi.baidu.com/zhizhesky/blog/item/cabcbb515b9b6808377abe5f.html在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,如果没有写锁的情况下,读是无转载 2017-06-04 23:49:23 · 472 阅读 · 0 评论 -
线程池作用及Executors方法讲解
线程池的作用: 线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程 排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程 池中有等待的工作线程,转载 2017-05-31 17:54:24 · 373 阅读 · 0 评论 -
Java类加载器总结
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始转载 2017-05-21 11:48:50 · 290 阅读 · 0 评论 -
一个Java高级工程师的进阶之路
宏观方面一、 Java。要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级) 工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您 对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其实您想实现的很多功能,通转载 2017-06-05 23:39:45 · 3144 阅读 · 2 评论 -
java并发编程中CountDownLatch和CyclicBarrier的使用
在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景,遇到这样的场景应该如何解决?如果是一个线程等待一个线程,则可以通过await()和notify()来实现;如果是一个线程等待多个线程,则就可以使用CountDownLatch和CyclicBarrier来实现比较好的控制。下面来详细描述下CountDownLatch的应用场景:例如:百米赛跑:8名运动员转载 2017-04-22 22:12:09 · 239 阅读 · 0 评论 -
使用Java实现简单串口通信
一:首先,你需要下载一个额外的支持Java串口通信操作的jar包,由于java.comm比较老了,而且不支持64位系统,这里推荐Rxtx这个jar包(32位/64位均支持)。官方下载地址:http://fizzed.com/oss/rxtx-for-java(注:可能需要FQ才能下载)不能FQ的童鞋,可以在这里下载:http://files.cnblogs.com原创 2017-06-22 16:29:52 · 2928 阅读 · 20 评论 -
JAVA串口编程
序言说到开源,恐怕很少有人不挑大指称赞。学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱。这也难怪,毕竟就像某个著名NBA球员说的那样:“我还要养家,所以千万美元以下的合同别找我谈,否转载 2017-06-21 17:45:13 · 316 阅读 · 0 评论 -
使用Java实现简单串口通信
最近一门课要求编写一个上位机串口通信工具,我基于Java编写了一个带有图形界面的简单串口通信工具,下面详述一下过程,供大家参考 ^_^一:首先,你需要下载一个额外的支持Java串口通信操作的jar包,由于java.comm比较老了,而且不支持64位系统,这里推荐Rxtx这个jar包(32位/64位均支持)。官方下载地址:http://fizzed.com/oss/rxtx-转载 2017-06-21 17:45:50 · 1011 阅读 · 1 评论 -
漫谈Java理念的转变与JVM的五大优势
Sun在今年曾经表示自己的重点关注对象是Java平台而非Java语言,而Java平台整个的寄托就是JVM。计划明年推出的JVM 7将会投入很大精力在对其他语言(尤其是动态语言)的天然支持上,而EngineYard也表示JRuby将在自己的战略中占据重要地位。当Java最初诞生的时候,它可以说是其他语言的进化版。不仅因为Java很简单,而且这一进化的语言还是一个可以运行第三方硬件转载 2017-06-10 11:40:22 · 277 阅读 · 0 评论 -
aliyun阿里云Maven仓库地址——加速你的maven构建
maven仓库用过的人都知道,国内有多么的悲催。还好有比较好用的镜像可以使用,尽快记录下来。速度提升100倍。http://maven.aliyun.com/nexus/#view-repositories;public~browsestorage在maven的settings.xml 文件里配置mirrors的子节点,添加如下mirror nexus-aliy转载 2017-07-12 10:40:34 · 521 阅读 · 0 评论 -
快使用阿里云的maven仓库
自从开源中国的maven仓库挂了之后就一直在用国外的仓库,慢得想要砸电脑的心都有了。如果你和我一样受够了国外maven仓库的龟速下载?快试试阿里云提供的maven仓库,从此不在浪费生命……仓库地址:http://maven.aliyun.com/nexus/#view-repositories;public~browsestorage 仓库配置在maven的sett转载 2017-07-12 10:45:49 · 445 阅读 · 0 评论