![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 57
不爱吃汤圆的汤圆坨坨
这个作者很懒,什么都没留下…
展开
-
java小知识查漏补缺(一)
java标识符有如下命名规则:-标识符必须以字母、下划线_、美元符$开头-标识符其它部分可以是字母,下划线,美元符和数字的任意组合-Java标识符大小写敏感,且长度无限制。注:Java不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的字母含义:英文、汉字等等(不建议大家使用汉字来定义标识符)不合法的标识符int原创 2016-10-13 21:30:26 · 265 阅读 · 0 评论 -
线程总结
Timer定时器类TimerTask任务类通过Java timer timetask:(spring 的任务调度就是通过他们来实现的)在这种实现方式中,Timer类实现的是类似闹钟的功能,也就是定时或者每隔一定时间触发一次线程。其实,Timer类本身实现的就是一个线程,只是这个线程是用来实现调用其他线程的。而TimerTask类是一个抽象类,该类实现了Runnable接口,原创 2017-02-22 20:28:53 · 263 阅读 · 0 评论 -
生产者消费者模式(解决多线程容易死锁的一个方案)
生产者消费者问题,也称为有限缓冲问题,是一个多线程同步问题的经典案例。该问题描叙了俩个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生产一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者不会在缓冲区中空时消耗数据 要解决该问题,就必原创 2017-02-22 19:30:10 · 3337 阅读 · 0 评论 -
关于多线程下的单例模式及其优化
首先来分析如下单例模式所存在的问题饿汉式单例模式测试代码:public class synDemo01 { static Jvm j1=null; static Jvm j2=null; public static void main(String[] args) { Thread t1=new Thread("thread1"){ public原创 2017-02-22 16:59:55 · 519 阅读 · 0 评论 -
HashTable与HashMap的区别
HashTable与HashMap的区别1)、HashTable与HashMap实现的是不同的接口 Hashtable是Dictionary的子类HashMap是Map接口的子类2)、HashTable的键值都不允许为空,HashMap的键值只允许为空(试验了可以俩个都为空)package com.txr.oto.fk;import java.util.Has原创 2017-02-08 20:26:02 · 260 阅读 · 0 评论 -
java多线程问题
1、synchronized修饰在static方法和非static方法的区别首先知道synchronized是什么在Java中,synchronized是用来表示同步的,我们可以用synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized的区别是什么呢? synchr转载 2017-02-07 01:14:48 · 210 阅读 · 0 评论 -
关于eclipse与maven的集成
一、打开eclipse点击window的 preference点击左侧树的maven选项点击installations中的add将我们下载的maven 添加进去点击finish记得勾选上你的maven点击左边树user Setting选项,查看库下载路径是否与你setting中设置的路径一致然后点击apply原创 2016-09-24 17:18:03 · 274 阅读 · 0 评论 -
maven的搭建
maven由于能自动的给我们完成框架jar包的依赖映射关系,所以得到了广大的好评接下来就看看怎样搭建maven吧1、首先进入maven的官方界面选择它的download连接可以看到当前的版本是3.3.9然后点击下载下载完毕第一个步奏完成然后将它解压出来即可然后打开文件准备配置环境变量然后点击确定原创 2016-09-24 16:20:31 · 329 阅读 · 0 评论 -
java公平锁源码解读
基本概念本章,我们会讲解“线程获取公平锁”的原理;在讲解之前,需要了解几个基本概念。后面的内容,都是基于这些概念的;这些概念可能比较枯燥,但从这些概念中,能窥见“Java锁”的一些架构,这对我们了解锁是有帮助的。 1. AQS – 指AbstractQueuedSynchronizer类。 AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例转载 2017-09-03 20:40:31 · 449 阅读 · 0 评论 -
BeanUtils.copyProperties()用法
前言:今天看别人写的代码,在action里面看到有人用了BeanUtils.copyProperties(obj, objForm);感觉很奇怪于是就点击进去看了一下源码public static void copyProperties(Object source, Object target) throws BeansException { copyPropertie原创 2017-09-04 15:52:45 · 394 阅读 · 0 评论 -
Java CAS原理深度分析
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.net/2011/09/resolve-aba-by-atomics转载 2017-08-28 14:21:12 · 272 阅读 · 0 评论 -
简洁例子了解CAS
前言CAS,Compare and Swap即比较并替换,设计并发算法时常用到的一种技术,Doug lea大神在java同步器中大量使用了CAS技术,鬼斧神工的实现了多线程执行的安全性。目前的处理器基本都支持CAS,只不过不同的厂家的实现不一样罢了。CAS有三个操作数:内存值V、旧的预期值A、要修改的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做并返转载 2017-08-30 14:27:07 · 770 阅读 · 0 评论 -
获取通过body传输的postdata数据
目前基于rest风格的很多API开始使用通过body data来传输来代替之前的key-value传输方式。在java servlet或者springmvc中可以通过如下代码来获取并图片通过流方式传输的数据: 1InputStream is= null; String contentStr=""; 2t转载 2017-10-17 17:40:17 · 1363 阅读 · 0 评论 -
java8新特性——lambda
1、lambda概述 lambda表示数学符号“λ”,计算机领域中λ代表“λ演算”,表达了计算机中最基本的概念:“调用”和“置换”。2、为什么使用lambda 一、Java是面向对象的语言,不能像函数式语言那样嵌套定义方法。 二、Java的匿名内部类只能存在于创建它的线程中,不能运行在多线程中,无法充分利用多核的硬件优势 三、匿名内部类的缺点还有: ...原创 2018-04-12 19:56:42 · 167 阅读 · 0 评论 -
java8新特性——Stream接口
1、什么是Stream? a、Stream在java8中被定义为泛型接口 b、Stream接口代表数据流 c、Stream不是一个数据结构,不直接存储数据 d、Stream通过管道操作数据 e、创建Stream接口实现类对象: stream(): 创建一个Stream接口实现类的对象 例如:Stream<Person> stre...原创 2018-04-12 20:15:12 · 500 阅读 · 0 评论 -
ETCD 简介 + 使用
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用、强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音,本...转载 2018-05-05 23:19:16 · 575 阅读 · 0 评论 -
下一代微服务架构——Service Mesh
Service Mesh 是什么?为什么我们需要它?Service Mesh(服务网格)是一个基础设施层,让服务之间的通信更安全、快速和可靠。如果你在构建云原生应用,那么就需要 Service Mesh。在过去的一年中,Service Mesh 已经成为云原生技术栈里的一个关键组件。很多拥有高负载流量业务的公司都在他们的生产应用里加入了 Service Mesh,如...转载 2018-05-05 23:43:34 · 227 阅读 · 0 评论 -
java四种线程池的使用
ava通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执转载 2017-03-01 19:39:34 · 436 阅读 · 0 评论 -
关于假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?
第一种方法:直接用join把线程5加入进去即可第二种方法:用java.util.concurrent下的方法解决用CountDownLatch : 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行CountDownLatch 是计数器, 线程完成一个就记一个, 就像 报数一样, 只不过是递减的.盗用别人的一个例子:public class C转载 2017-03-15 00:01:04 · 4760 阅读 · 0 评论 -
java细小知识补充(四)
一、Hashtable与HashMap的区别(面试题)1、主要:Hashtable线程安全,同步,效率相对低下 HashMap线程不安全,非同步,效率相对高2、父类:Hashtable 是Dictionary HashMap是AbstractMap3、null:Hashtable键与值不能为null; HashMap键最多一个null,值可以多个null;原创 2016-11-03 14:19:29 · 208 阅读 · 0 评论 -
java小知识查漏补缺——final,jvm内存分析,static,this(二)
final 常量只能赋值一次如final int c=43;c=35;//报错,无法为最终变量赋值final double PI=3.14;//一般常量使用大写final关键字:修饰变量:-常量修饰方法:-该方法不可被子类重写。但是可以被重载!修饰类:-修饰的类不能有子类,不能被继承,比如Math、String小数也能取余 如:double p=10.原创 2016-10-14 11:40:50 · 790 阅读 · 0 评论 -
java查漏补缺(三)
instanceof :如 :Animal d = new Dog();if(d instanceof Dog)//如果d是Dog的实例{d.voice;}为什么需要抽象类?如何定义抽象类?是一种模板模式。抽象类为所有子类提供了一个通用模板,子类可以在这个模板基础上进行扩展。通过抽象类,可以避免子类设计的随意性。通过抽象类,我们就可以做到严格限制子类的设计,使子类之原创 2016-10-15 15:58:22 · 265 阅读 · 0 评论 -
内部类的一些注意点
关于匿名内部类使用局部变量为什么要是final:java采用copy local variable来实现final,也就是说把定义为final的局部变量老被过来用,引用的也可以拿来用,只是不能重新赋值。由于在局部变量的生命周期只在方法或类以内,出了方法或类就会被回收,而由于内部类回调方法大多数在其它线程中执行,可能还要在回收后还继续访问它就会造成访问无效值,而使用final修饰不仅会保持对原创 2017-02-19 17:17:22 · 502 阅读 · 0 评论 -
深入了解Arras.sort()与Collections.sort()的区别
先来看看Arrays.sort()源码一步一步追踪下去 public static void sort(int[] a) { DualPivotQuicksort.sort(a); } public static void sort(int[] a) { sort(a, 0, a.length - 1); } public static原创 2017-03-01 17:32:24 · 530 阅读 · 0 评论 -
HashMap和LinkedHashMap、TreeMap的区别
一般情况下,我们用的最多的是HasMap,在Map中插入,删除和定位元素,HashMap是最好的选择。但如果要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMa原创 2017-03-01 21:03:10 · 1947 阅读 · 0 评论 -
重温java多态
Java多态的实现机制是什么?表示当同一个操作作用在不同对象时,会有不同的语义,从而产生不同的结果,例如,同样执行“+”操作,“3+4”用来实现整数相加,而“3”+"4"却实现了字符串的连接。在Java中提供了俩种用于多态的机制:编译时多态和运行时多态。编译时多态是通过方法的重载实现的,运行时多态是通过方法的覆盖(子类覆盖父类方法)实现的方法的重载(overload)重载是指同原创 2017-02-14 16:01:37 · 199 阅读 · 0 评论 -
深入了解java.lang.ThreadLocal类
概念概述:ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线转载 2017-03-15 21:42:02 · 278 阅读 · 0 评论 -
关于try finally解惑
一直以为finally里面的操作不会对try中的return 有影响直到看到牛客网上的这个题输出结果是30,才决心做个实验来看看试验如下package com.txr.basicSearch;public class tryFinally { public static void main(String[] args) { System.out.println(test(原创 2017-04-02 14:30:11 · 382 阅读 · 0 评论 -
Error:java: Compilation failed: internal java compiler error
JDK没设置的原因原创 2017-06-15 18:11:57 · 262 阅读 · 0 评论 -
关于bufferedreader的read()与readline()读取出错的原因
以前学习java的时候也没有太在意,直到最近做项目时使用了才发现这个问题,总是第一个字符输不出来bufferedreader这个类借用别人的话来说,就是一个包装类它可以包装字符流,将字符流放入缓存里,先把字符读到缓存里,到缓存满了或者你flush的时候,再读入内存,就是为了提高读的效率而设计的。读取一个txt文件,方法很多种而我使用的是字符流来读取int c;转载 2016-03-22 22:14:18 · 5383 阅读 · 1 评论 -
TimeUnit
public enum TimeUnitextends EnumTimeUnit 表示给定单元粒度的时间段,它提供在这些单元中进行跨单元转换和执行计时及延迟操作的实用工具方法。TimeUnit 不维护时间信息,但是有助于组织和使用可能跨各种上下文单独维护的时间表示形式。TimeUnit 主要用于通知基于时间的方法如何解释给定的计时参数。例如,如果 lock 不可用,则以下代码将转载 2017-07-11 19:08:31 · 507 阅读 · 0 评论 -
Java里一个线程调用了Thread.interrupt()到底意味着什么?
一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。而 Thread.interrupt 的作用其实也不是中断线程,而是「通知线程应该中断了」,具体到底中断还是继续运行,应该由被通知的线程自己处理。具体来说,当对一个线程,调用 interrupt() 时,原创 2017-06-29 20:20:24 · 1154 阅读 · 0 评论 -
在IDEA中创建Maven的Web项目并运行
添加java目录以及java类设置为source文件原创 2017-06-15 19:09:31 · 553 阅读 · 0 评论 -
sychronized实现原理
测试类:打开cmd,执行javac java文件的路径进行编译该文件,生成.class文件,然后执行javap -c生成的.class文件反编译.class文件,-c表示打印出方法的字节码指令,结果如下发现有俩个监视类的东西,monitorenter,monitorexit,在线查看jvm规范,描述如下大致翻译就是monitorenter 获取由objec原创 2017-04-14 21:51:39 · 823 阅读 · 0 评论 -
JDK1.8版本,java并发框架支持锁包括
1、自旋锁,自旋,jvm默认是10次,由jvm自己控制,for去争取锁2、阻塞锁 被阻塞的线程,不会争夺锁3、可重入锁,多次进入改锁的域4、读写锁5、互斥锁,锁本身就是互斥的6、悲观锁,不相信这里是安全的,必须全部上锁7、乐观锁,相信这里是安全的8、公平锁,有优先级的锁9、非公平锁,无优先级的锁10、偏向锁,无竞争不锁,有竞争挂起,转为轻量锁11、对象锁,锁原创 2017-03-15 21:58:13 · 5180 阅读 · 0 评论 -
Etcd架构与实现解析
前一段时间的项目里用到了 Etcd(http://jolestar.com/etcd-architecture), 所以研究了一下它的源码以及实现。网上关于 Etcd 的使用介绍的文章不少,但分析具体架构实现的文章不多,同时 Etcd v3的文档也非常稀缺。本文通过分析 Etcd 的架构与实现,了解其优缺点以及瓶颈点,一方面可以学习分布式系统的架构,另外一方面也可以...转载 2018-05-05 23:47:46 · 319 阅读 · 0 评论