![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 69
一块钱硬币2015
纸上得来终觉浅,绝知此事要躬行。
展开
-
synchronized锁住的是代码还是对象
在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码: class Sync { public synchronized void test() {...原创 2018-04-01 16:14:30 · 236 阅读 · 0 评论 -
JAVA代码编写的30条建议
列举了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导: (1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如: ThisIsAClassName thisIsMethodOrFieldName 若在定义中出现了常数初始化字符,则大原创 2016-10-19 20:18:10 · 455 阅读 · 0 评论 -
线程阻塞原因
线程在运行的过程中因为某些原因而发生阻塞,阻塞状态的线程的特点是:该线程放弃CPU的使用,暂停运行,只有等到导致阻塞的原因消除之后才回复运行。或者是被其他的线程中断,该线程也会退出阻塞状态,同时抛出InterruptedException。 导致阻塞的原因有很多种,大致分为三种来讨论,分别是一般线程中的阻塞,Socket客户端的阻塞,Socket服务器端的阻塞。原创 2016-09-29 10:18:45 · 2324 阅读 · 0 评论 -
Java单例模式
概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、原创 2016-09-19 20:47:38 · 346 阅读 · 0 评论 -
Java 基本数据类型 范围及默认值
原创 2016-10-22 18:03:42 · 358 阅读 · 0 评论 -
Java中堆和栈区别
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟原创 2016-10-12 10:37:55 · 222 阅读 · 0 评论 -
设计模式之工厂模式
简单工厂模式 当需要加法类的时候,调用工厂类的CreateOperate(),要指定制造的Product 例如在大话设计模式P11给的运算工厂例子: public static Operation createOperate(string operate){Operation oper = null;12switch (oper原创 2016-10-22 00:04:13 · 206 阅读 · 0 评论 -
JDO快速入门
Java数据对象(Java Data Objects,JDO)是一个应用程序接口(API),它是Java程序员能够间接地访问数据库,也就是说,不需使用直接的结构化查询语言(SQL)语句。JDO是作为Java数据库连接(JDBC)的一个补充来介绍的,而JDBC是一个支持使用SOL语句对流行的数据库程序进行访问的接口。有了 JDO,程序员就可以使用类来定义数据对象,然后支撑程序就会根据类的定义来管理对原创 2016-10-21 23:47:10 · 4163 阅读 · 0 评论 -
二叉树面试常考题【JAVA】
转:http://www.2cto.com/kf/201311/259183.html package BinaryTreeSummary; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; impor原创 2016-09-21 14:49:16 · 627 阅读 · 0 评论 -
【Java】HashSet、LinkedHashSet、TreeSet使用区别
HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放;LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代; TreeSet:提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快。用例代码:package com.test; import ja原创 2016-09-07 15:05:19 · 371 阅读 · 0 评论 -
PreparedStatement与Statement的区别
本人的几点浅见,各位大大不喜勿喷。先说下这俩到底是干啥的吧。其实这俩干的活儿都一样,就是创建了一个对象然后去通过对象调用executeQuery方法来执行sql语句。说是CreateStatement和PrepareStatement的区别,但其实说的就是Statement和PrepareStatement的区别,相信大家在网上已经看到过不少这方面的资料和博客,我在此处提几点,大家看到过的原创 2016-09-16 21:46:31 · 16127 阅读 · 1 评论 -
Class.forName()用法详解
主要功能Class.forName(xxx.xx.xx)返回的是一个类Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法。一.什么时候用Class.forName()?先来个热身,给你一个字符串变量,它代表一个类的包名和类名,你怎原创 2016-09-16 20:49:12 · 238 阅读 · 0 评论 -
java Finally块中代码什么时候执行
public class Test{ public static int testFinally(){ int i =0; try { i=i+2; System.out.println("try "+i); return i; } catch (Exception e) { // TODO: handle exception return 0;原创 2016-08-02 10:03:28 · 2439 阅读 · 1 评论 -
Java中关于String类型的10个问题
http://www.codeceo.com/article/top-10-questions-of-java-strings.html1. 如何比较两个字符串?用“=”还是equals简单来说,“==”是用来检测俩引用是不是指向内存中的同一个对象,而equals()方法则检测的是两个对象的值是否相等。只要你想检测俩字符串是不是相等的,你就必须得用equals()方法。原创 2016-08-04 17:21:54 · 214 阅读 · 0 评论 -
Java中对象的深复制(深克隆)和浅复制(浅克隆)
这篇文章主要介绍了Java中对象的深复制(深克隆)和浅复制(浅克隆) ,需要的朋友可以参考下1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 ⑵深复制(深克隆) 被复制对象的所有变原创 2016-10-08 17:03:29 · 270 阅读 · 0 评论 -
Java中的XML
1、什么是XML主要便于跨平台之间的通信。举个例子: 冰与火之歌 乔治马丁 2014 安徒生童话 乔治马丁 2014 2、Java读取XML在Java程序中如何获取xml文件的内容1,在Java程序中读取xml文件的过程也称为——解析xml文件2,解析的目的:获取节点名、节点值、属性名、属性值3,解析方式:DOMSAX原创 2016-12-21 22:04:46 · 288 阅读 · 0 评论 -
mybatis教程
转:http://blog.csdn.net/kutejava/article/details/9164353#t6(读者注:其实这个应该叫做很基础的入门一下下,如果你看过hibernate了那这个就非常的简单)(再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看中文的:http://myb转载 2017-06-07 17:09:29 · 308 阅读 · 0 评论 -
Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。 乐观锁:顾名思义,就是很乐观,每次去拿数据的时候...原创 2018-04-01 10:43:34 · 205 阅读 · 0 评论 -
Java知识点
跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视。准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说)。今天给大家分享下chenssy在这次跳槽中整理的Java面试大纲,其中大...原创 2018-03-22 13:51:50 · 460 阅读 · 0 评论 -
多线程编程注意捕获异常
多线程编程时,注意每个线程处理的任务是否存在异常的情况,如果存在,必须try catch进行捕获,否则只要一个线程出现异常,就会阻塞后面的线程的执行。 工资代发业务时,通过rabbitMQ消息队列的方式和其他系统进行交互,在对发过来的消息进行校验员工数据,其中一条数据出现了异常,导致后面的消息一只阻塞在队列中,无法消费。例如下面的例子:参考:https://my.oschin...原创 2018-03-09 13:55:47 · 282 阅读 · 0 评论 -
记一次synchronized锁字符串引发的坑兼再谈Java字符串
问题描述业务有一个需求,我把问题描述一下:通过代理IP访问国外某网站N,每个IP对应一个固定的网站N的COOKIE,COOKIE有失效时间。并发下,取IP是有一定策略的,取到IP之后拿IP对应的COOKIE,发现COOKIE超过失效时间,则调用脚本访问网站N获取一次数据。为了防止多线程取到同一个IP,同时发现该IP对应的COOKIE失效,同时去调用脚本更新COOKIE,针对IP加了锁。为了保证锁的...原创 2018-03-09 10:40:12 · 513 阅读 · 0 评论 -
分布式锁 Java常用技术方案
分布式锁1 Java常用技术方案前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。所以自己结合实际工作中的一些经验和网上看到的一些资料,做一个讲解和总结。希望这篇文章可以方便自己以后查阅,同时要是能帮助到他人那也是很好的。 =======================================...原创 2018-01-04 16:23:45 · 180 阅读 · 0 评论 -
Java 200道题
Java 200道题1. junit用法,before,beforeClass,after, afterClass的执行顺序一个测试类单元测试的执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass每一个测试方法的调用顺序为:@Before –> @Test –>原创 2018-02-02 15:32:39 · 2455 阅读 · 0 评论 -
Java之CountDownLatch使用
CountDownLatch1、类介绍一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重原创 2017-12-06 15:21:44 · 148 阅读 · 0 评论 -
Java ExecutorService四种线程池的例子与说明
参考Executor源码解析:https://www.jianshu.com/p/87bff5cc8d8c原文这里1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?[java] view plain copynew Thread(new Runnable() { @Override public void run() { /...原创 2017-12-06 14:29:06 · 155 阅读 · 0 评论 -
实现Comparable接口不严谨导致Comparison method violates its general contract!
因为业务需要,自己的model实现了Comparable接口,在Service层使用Collections.sort()方法对model对象的list进行排序。但是在运行的时候,却报下面的异常。java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.C...原创 2017-12-21 14:53:07 · 545 阅读 · 0 评论 -
Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何使用Maven来搭建spring+Mybatis+SpringMVC+MySQL的搭建实例,文章写得很详细,有代码有图片,最后也带有运行的效果。本文工程免费下载一、准备工作1. 首先创建一个表:[sql原创 2017-07-03 14:32:18 · 303 阅读 · 0 评论 -
【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题
【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题今天是用JUnit测试一段代码,报错method initializationerror not found::出现如下问题:双击这个就显示出现如下的错误:查询网上,说是junit版本的问题:那我就不使用原创 2017-07-16 15:13:04 · 384 阅读 · 0 评论 -
Spring和MyBatis环境整合
转:http://www.cnblogs.com/jyh317/p/3834142.htmlSSH框架的结合几乎家喻户晓,但是一般的中小项目,使用Spring和MyBatis就够了,而且MyBatis轻便好使,易上手,值得大家尝试一次。 开篇简介: Spring:Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。两个重要转载 2017-06-09 15:49:19 · 187 阅读 · 0 评论 -
Eclipse 保存文件时自动格式化代码
很多同学不知道Eclipse有个很有用的功能,就是自动格式源代码的功能,一般大家都是直接Ctrl+Shift+F手动格式化,多浪费时间。 其实Eclipse里已经带有自动格式化功能了,默认是没有代开该功能的。 具体方法:windows-->Preferences-->Java --> Editor-->Save Actions, 看到右边的选项了吧,勾选“Perform the sel原创 2017-06-30 11:06:26 · 227 阅读 · 0 评论 -
容器简介
存储结构分类集合和数学中集合的概念有些类似,比如说某个学校的全体班级、某个公司的全体员工等。了解集合,先从数据在内存中的数据结构说起,这样更易于理解。一般数据存储结构分为以下几种。第一,顺序存储:指元素在内存中连续的存储在一起,根据第一个元素的地址和每个元素所占的字节很容易计算其他任意位置的元素的地址,进而可以访问钙元素,如数组。这种存储方式优点:利于元素访问。缺点是:增加和删除元素的性能原创 2016-06-15 21:42:01 · 322 阅读 · 0 评论 -
容器--ArrayList、Vector、LinkList
ArrayList、Vector这两种和数组一样都是顺序存储(比数组方便的是:无需事先定义容器大小),所以通过下标访问速度较快,但在元素中间插入、删除元素,效率较低,需要对元素进行移动。两者不同的是:两者实际在声明时会定义容器大小,当超过这个容量时,会进行扩充,Vector默认扩充为原来的2倍,ArrayList默认扩充原来的1.5倍。Vector优于ArrayList的地方是:Vecto原创 2016-06-15 22:30:53 · 285 阅读 · 0 评论 -
求1+2+。。。+n,不用乘除,for、while、if、else、switch、case等关键字及条件判断语句
public class A{ static int sum; public static int csum(int n) { sum += n; sum = n == 0 ? sum : csum(--n); //利用递归实现循环 return sum; } public static void main(String[] args) { A a = new A();原创 2016-04-09 15:07:45 · 494 阅读 · 0 评论 -
Java 带转义字符字符串长度
public class Test { public static void main(String[] args) { String str1 = "\n\r\\"; System.out.print("str1的长度:"+str1.length()); }}// 输出://str1的长度:3原创 2016-04-25 22:40:15 · 2329 阅读 · 0 评论 -
Java多线程中join方法的理解
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。t.join(); //使调用线程 t 在此之前执行完毕。t.join(1000); //等待 t 线程,等待时间是1000毫秒 先上一段JDK中代码:Java代码转载 2016-02-26 14:28:23 · 231 阅读 · 0 评论 -
Java 集合转换(数组、List、Set、Map相互转换)
package com.example.test;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;转载 2016-04-04 12:56:55 · 329 阅读 · 0 评论 -
Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见转载 2016-02-25 16:33:19 · 285 阅读 · 0 评论 -
Java中堆(heap)和栈(stack)区别
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器转载 2016-03-02 22:08:49 · 321 阅读 · 0 评论 -
java中面向对象的三大基本特征
众所周知,java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】一、封装 对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性) 具体来说: 1.属性: 私有 private(提供set和get方法) 2.方法: 公开或私有public/private转载 2016-03-02 22:01:26 · 279 阅读 · 0 评论 -
Java开发必会的Linux命令
作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用--help查看帮助或者直接通过google搜索学习。1.查找文件转载 2016-02-12 22:00:42 · 448 阅读 · 0 评论