JavaSE
csucoderlee
这个作者很懒,什么都没留下…
展开
-
java异常处理机制
Error类 和 Exception类都是Throwable的直接子类,从单词字面上看 able 为尾缀,意味着本身具有一种能力,什么能力呢,就是“抛出”的能力,在 Java 中只有 Throwable 类型的实例才可以被 抛出 throw或者 被 catch,这也是java异常处理机制的基本组成类型。Error是指会导致程序出现非正常的,不可恢复的状态。所以不应该也不需要去捕获。比如outo...原创 2018-07-26 22:32:35 · 229 阅读 · 0 评论 -
write once , run anywhere
write once , run anywhere。大家知道的java特性之一,重点都是在后面两个单词上,跨平台运行。 但是往往就忽略了前面的那句话,write once ,翻译过来就是只需要编写一次。还是那句话,没有对比,就没有伤害,我们对比C/C++看下。C/C++中,如果调用了操作系统的函数,就需要对应不同的操作系统,修改相应的操作系统底层函数,也就意味着每换一个运行环境,都需要去修...原创 2018-07-26 22:35:21 · 715 阅读 · 0 评论 -
谈谈final, finally, finalize有什么不同?
final 可以修饰类、方法、变量。 1. 修饰类,这个类就不可以被继承2. 修饰方法,这个方法就不能被override(注意和overload的区别)3. 修饰变量,这个变量就不能被修改final 不要用来被滥用,为了所谓优化性能,来到处考虑使用final,那就是跑偏了。我们写代码最重要的一点就是写出的代码具有语义,final是一个具有很强语义的关键字。但是,这里要注意一点,如果f...原创 2018-07-26 23:32:11 · 326 阅读 · 0 评论 -
synchronized的可重入性
今天,被一个阿里的冷面大佬无情的diss了。不过,话说回来,跟冷面的大佬聊天也是比较爽快的一件事,总比有的大佬扯了半天,也扯不到关键。。。线程请求一个由其它线程持有的对象锁时,该线程会阻塞,而线程请求由自己持有的对象锁,如果可以获取,就说明这个锁支持可重入。/** * @author by bixi.lx * @created on 2018 07 30 20:01 */pu...原创 2018-07-30 20:07:49 · 1301 阅读 · 0 评论 -
@Transactional,自己抛出异常时不会回滚
今天,面试的时候,突然被问到了一个点,结果,这个自己踩的坑,自己都忘记了。前年,接手了一个项目,一直会有并发的情况,导致插入重复数据的情况。所以在项目中使用了事务 + 数据库锁,来处理并发。伪代码如下: @Transactional public <T> T lock(Staff staff, Trade trade, ILockCallback<T&...原创 2018-07-30 20:53:12 · 7849 阅读 · 0 评论 -
JMM思维导图
JMM是java程序员必备的技能之一,虽说没必要将知识图谱中各个知识点,像背书一样把他流利的背下来,最起码,要理解消化。几乎每种语言都有自己的内存模型。JMM,java memory model,java内存模型总有自己的来龙去脉。这个要先从硬件 - 内存模型 - java内存模型讲起。硬件基础计算机执行程序,每条指令代码都是在CPU中执行的,指令代码是用来操作数据的,而数据最开...原创 2018-08-04 15:19:42 · 493 阅读 · 0 评论 -
有关ThreadLocal的总结
定义java api中是这样定义的:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, i...原创 2018-08-02 11:00:53 · 787 阅读 · 0 评论 -
自旋锁以及Java中的自旋锁的实现
什么是自旋锁多线程中,对共享资源进行访问,为了防止并发引起的相关问题,通常都是引入锁的机制来处理并发问题。获取到资源的线程A对这个资源加锁,其他线程比如B要访问这个资源首先要获得锁,而此时A持有这个资源的锁,只有等待线程A逻辑执行完,释放锁,这个时候B才能获取到资源的锁进而获取到该资源。这个过程中,A一直持有着资源的锁,那么没有获取到锁的其他线程比如B怎么办?通常就会有两种方式:1...原创 2018-08-07 00:45:18 · 21398 阅读 · 3 评论 -
HashMap扩容机制
HashMap中的主要参数 = 容量、加载因子、扩容阈值容量 // 默认容量 = 16 = 1<<4 = 00001中的1向左移4位 = 10000 = 十进制的2^4=16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 最大容量 = 2的30次方,如果指定的最大容量超过了2的30次方,那...原创 2018-08-21 11:10:49 · 1828 阅读 · 0 评论 -
this引用逃逸
什么是this引用逃逸指的是对象还没有构造完成,他的this引用就已经发布出去了。先确定两个名词定义,对象的发布与逸出。发布:发布一个对象的意思是指,使对象能够在当前作用域之外的代码中被使用。如,将一个指向该对象的引用保存到其他代码可以访问的地方,或者在某一个非私有的方法中返回该引用,或者将引用传递到其他方法中。所以,从对象发布的角度,我们将对象分为两种,一种是可以发布出去的,另外...原创 2018-07-29 14:49:09 · 2460 阅读 · 1 评论 -
Java生产环境线程池使用场景
talk is cheap, show me the code 直接上代码import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;/** * @author by bixi.lx * @created on 2018 07 28 22:17 */public class Th...原创 2018-07-29 00:04:52 · 7897 阅读 · 1 评论 -
重载与重写的区别
头脑不清晰的时候,跟人讲理论,也会有那么一瞬间知识定义模糊的时候。重载和重写傻傻说不出定义是什么。重写,也成为覆盖,甚至有的人说是覆写,注解标识为@Override,一般为实现某个接口,或者继承某个抽象父类,来重写父类的方法。重载,是一种多态性的表现。重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。...原创 2018-06-03 14:29:28 · 224 阅读 · 0 评论 -
不要混淆length、length()和size()的区别
我起初学习java的时候,数组、字符串和集合当中的元素个数问题一直都记得不扎实,经常容易搞混,现在说说这三个属性方法的区别:1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.3.ja原创 2015-04-17 15:21:34 · 13607 阅读 · 0 评论 -
DOS命令下用Java SDK开发工具开发应用程序
很多人都喜欢使用java集成开发环境(IDE)去进行java程序的编译和运行。但是在不使用任何Java集成环境的情况下,就需要我们掌握Java的DOS命令。编译的目的是将.java文件转化成.class机器码文件,运行的目的是将.class文件转换成机器码,这样你的计算机才能够根据机器码进行相关操作先举个非常简单的例子,比如在D:/user/user.java,d盘的user文件夹下,有一原创 2015-04-25 09:56:18 · 929 阅读 · 0 评论 -
Java代码安全性的解析
java的设计者已经编写了颇有影响力的白皮书,内容摘要可以用11个关键术语进行组织:简单性、可移植性、面向对象、解释型、网络技能、高性能、健壮性、多线程、安全性、动态性、体系结构中立,这11个术语,也可以说是官网给出的java语言带有的特性。下面详细解释一下面试中常问的有关安全性的问题。通常安全性问题,很广很大,不能深入研究,所以大多数安全性的发问点都是和代码安全性有关系,相关的术语有原创 2015-04-25 15:53:17 · 3868 阅读 · 0 评论 -
Java中访问数据库的步骤是什么?
首先要介绍几个相关的类1.DriverManager类:用来建立与数据库的连接Connection con = DriverManager.getConnection(url,"user","password");2.Connection接口主要有两个方法:Statement createStatement(); // 创建一个Statement对象并原创 2015-04-28 21:12:11 · 7433 阅读 · 0 评论 -
Java中的异常处理
在java的lang包里有一个Throwable类,它是所有异常的父类或者间接父类。Error和Exception是两个直接子类。Error类及其子类是用来处理系统内部及程序运行环境的异常,一般与硬件有关,由系统直接处理,不需要程序员在程序中处理。Exception是类是程序能够捕获到的异常情况。什么叫做能够捕获?就是你自己在程序代码中,可以用catch关键字来捕获到他。Excepti原创 2015-04-27 21:49:04 · 396 阅读 · 0 评论 -
理解inputstream和outputstream
注意reader/writer和inputstream/outputstream的区别,其实说白了,就是字符操作和字节操作。public class FileCount { public static void main(String[] args) throws IOException { //可以两个字节一起读 //byte[] buffer =原创 2017-01-09 17:02:25 · 1031 阅读 · 0 评论 -
两个对应不同类的list如果有相同的id,差集去重
今天上班,review同事写的代码,发现了一个bug,这里就不贴出实际代码了,自己写段代码,来重现一下这个bug。(别纠结代码,我是用groovy写的,有的人说你的java代码为什么没有分号,汗)。其实,目的就是两个对应不同类但是有相同字段的list进行去重复的操作。有两个类A,Bclass A { Long id String detail Long ge原创 2017-02-05 14:43:42 · 8703 阅读 · 1 评论 -
使用线程池模拟多个线程并发访问遇见的问题,引申出来的知识
最近在慕课网看一些视频,发现了这样的一段代码,这段代码的目的是模拟多个线程访问一个方法,代码如下,public class SyncronizedExample { public void test1() { System.out.println("执行方法1"); for (int i = 0; i < 10; i++) { ...原创 2018-04-30 22:31:47 · 1525 阅读 · 0 评论 -
Java并发编程之Lock接口
Lock接口对比synchronized关键字 synchronized 官方目前推荐使用的,在之前,synchronized的性能问题一直备受诟病,但是后面synchronized加入了偏向锁和自旋锁等等的优化,性能也还是可以的。synchronized 隐式的获取/释放锁,比较便携Lock,可以显式的操作来获取/释放锁,可中断的获取锁,超时获取锁的优点对比表格如下...原创 2018-05-26 23:52:58 · 212 阅读 · 0 评论 -
javaSmileyCount
软件使用说明书(要完成品代码的直接私聊我): First,you should start your eclipse.Then new a java project named that what you want to name.And then new a class named SmileyCount,the copy the code ,paste it into the Smi原创 2014-05-16 19:37:02 · 554 阅读 · 0 评论