Java
Java语言,JDK8系列相关知识
麦克波菲柯特
人需要先说很多话,然后保持静默
展开
-
StringBuilder.append(null)发生的奇怪事情
最近Coding, 发现一个bug,没有按照预期走到指定分支,意外发现StringBuilder.append(null)的奇怪事情StringBuilder.append(null);然后判断 StringBuilder的内部状态,是否为空,按照常识,应该是 空 才对,然后真实的结果如下所示太奇怪了,StringBuilder.append(null); 结果 StringBuilder里面 既不是null值也不是空串,而是 4个char字符长度,这是啥情况?!判断 StringBuilder原创 2020-06-13 22:55:16 · 5233 阅读 · 0 评论 -
利用JDK8的stream 对List、int[ ]、Integer[ ]进行相互转换
coding,需要用到 int[ ]转换为List ,每次都有大量for循环重复代码,偶然得知 JDK8 的stream可以一行代码搞定这种转换关系,随记录如下案例int [ ] nums = new int [ ] {1,2,3,4,5}; 转换为 List存储往常做法int [] nums = new int[]{1,2,3,4,5};List<Integer> res = new ArrayList<>(); for(int i:nums){ res.原创 2020-05-26 22:56:52 · 1514 阅读 · 0 评论 -
读书笔记(二)《码农翻身》
2020年的第二篇读书笔记,陶醉在读书笔记和博客之间,作为一种正反馈,不断吸引我去记录学到的知识,和学生时代一样,边学边记录,时间在这里似乎变得珍贵了不少。浪潮之巅的Web浏览器,超文本,标记语言,网络服务器,共享内存来通信,自定义socket通信,Web服务通信,HTTP GET/POST+JSONWeb通信过程 :HTTP发送请求,HTTP报文打包在TCP报文段中,又被放在IP层数据...原创 2020-02-22 15:43:15 · 585 阅读 · 0 评论 -
读书笔记(一)《码农翻身》
好久都没有写技术博客了,大概有一年左右没有开始写了,原因是自己弄了一个日志博文,当然这不是重点,重点是心态发生了改变,从心里上感觉技术兴趣不大了,后来又发现,并不是对技术失去了兴趣,而是被2018年的各种变故打击掉了自信心,从M家离开以后那种自信就消失了,机缘巧合之下又来到了T家,心态上这才开始慢慢好转起来了。今天来写一写《码农翻身》这本书的读书笔记,感觉很不错,适合技术上的深究和归纳线程...原创 2020-02-22 01:56:57 · 915 阅读 · 0 评论 -
漫画:Java内存模型与线程安全
以下内容转载自程序员小灰,微信公众号,后面补充了: 简单的Java线程安全与锁优化。 漫画:什么是volatile关键字?(整合版) “————— 第二天 ————————转载 2018-01-22 21:31:18 · 1227 阅读 · 0 评论 -
Java之简单的集合
还有一天半就要换个地方了,所以这短暂的时间里需要进行一些扫尾工作,上次的Java还有集合和反射没有更新完,还有深入理解Java虚拟机有几章还没来得及整理,所以时间上比较急,开始介绍一下Java集合Java集合定义集合之所以会诞生,是因为Java数组虽然可以存放基本数据类型也可以存放引用数据类型,但是数组的长度是固定的,很不方便,集合的长度是不固定的,所以就引入了集合的概念。集合和数组很原创 2018-01-20 21:19:39 · 408 阅读 · 0 评论 -
Java迭代器简介
迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要里了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,所以迭代器通常被称为轻量级的容器。迭代器的用法: 1、 使用容器的iterator()方法返回一个Iterator,然后通原创 2018-01-29 22:11:58 · 340 阅读 · 0 评论 -
妙解之数组篇
最近看了一些Java中的题解题目,感觉还不错,拿来记录一下如何找出数组中只出现一次的数字问题:一个整型数组中除了一个数字之外,其他数字都出现了两次。找出这个只出现一次的数字,要求时间复杂度是O(n),空间复杂度O(1) 题解:本来是打算排序后挨个比较找出这个数字,但是其时间复杂度最快都是O(nlogn),题目强调除了一个数字,其他数字都出现两次,首先想到异或运算,根据异或运原创 2018-02-04 21:50:13 · 274 阅读 · 0 评论 -
设计模式之面试基础的单例模式
单例模式三种模式,饿汉、饱汉、双重锁模式,实例及优劣详解 转载自https://blog.csdn.net/zhangliangzi/article/details/52438401 原创 ...原创 2018-04-08 12:22:58 · 222 阅读 · 0 评论 -
一个让人超级坑爹的tomcat机制
前言前些日子赶上了阿里云的豪车,勒紧裤腰买了两年的阿里云主机,买完后很是兴奋,赶紧上线部署一个个人博客玩玩,有刚需的可以走链接:(有优惠)*https://promotion.aliyun.com/ntms/act/group/team.html?group=xubxmgq0Vv本次采用的博客系统是GitHub上名噪一时的[]B3log开源博客,后端采用的是Java框架,对新人十分友好,...原创 2018-04-11 18:59:29 · 418 阅读 · 0 评论 -
异常:com.alibaba.druid.pool.GetConnectionTimeoutException
背景今天访问服务器的认证模块,发现无法访问,应该是出现问题了,看下服务器的输出日志,发现了一些蛛丝马迹。经过ssh上去之后,使用vim 打开tomcat/logs/catalina.out 发现了一些东西, 异常发生的前提是提交了很多次的表单,数了一下正好10个,记得前段时间修改了一下druid的初始化大小,正好也是10个,会不会有什么关联呢?首先声明,绝对不是conne...原创 2018-05-04 21:46:00 · 71466 阅读 · 11 评论 -
Java方向知识点梳理(一)
2018年春招复习笔记草稿,舍不得扔,遂码上去通过什么方式访问Hibernate: 1、使用HibernateTemplate的反转控制以及回调方法 2、继承HibernateDAOSupport,并申请一个AOP拦截器节点Spring与Hibernate结合: 配置HibernateSessionFactory 继承HibernateDAOSupport...原创 2018-06-24 18:22:34 · 491 阅读 · 0 评论 -
Java方向知识点梳梳理(二)
续接前文,主要是笔记草稿太多。。。线程本地存储:若一个变量要被某个线程独享,Java.lang.Threadlocal类来实现线程本地存储功能,每一个线程的Thread对象都有一个ThreadLocalMap对象,该对象存储一组以ThreadLocal.threadlocalHashCode为键,以本地线程变量为值得K-V值对。ThreadLocal对象:是当前线程threadlocalM...原创 2018-06-25 15:42:23 · 353 阅读 · 0 评论 -
源码级别:Java中的Integer.toHexString(int i)原理
刷题中。。偶遇进制转化,以前一直都是自己手写来着,这次居然丧心病狂的要求对负数进行进制转化,二话不说,直接拿起Java中的toHexString()方法,完事之后,大惊失色,怎么这么好用,可以处理负数的进制转换,本着学习的心态,进行了一番探究在Java中,如果想要把一个十进制整数转换为十六进制,可以使用Integer.toHexString(int i)方法,该方法的源代码如下: ...原创 2018-07-04 10:56:07 · 1993 阅读 · 1 评论 -
《Java并发编程的艺术》—读书的笔记
前言本文内容摘抄自: Java并发编程的艺术线程上下文切换单核处理器也支持多线程执行代码,CPU时间片分配算法来循环执行任务,一次上下文切换:当时间片切换到下一个任务时,会保存当前任务状态,所以任务从保存到再加载的过程就是一次上下文切换测量工具:Lmbench3可以测量上下文切换时长vmstat可测量上下文切换次数,其中显示的cs表示上下文切换次数jstack命令可以dum...原创 2019-04-19 21:34:58 · 558 阅读 · 1 评论 -
Java基础知识小清单(一)
*Java确实是一门不错的语言,但是概念太多往往过上一段时间当时拍手叫好的东西也会被忘得一干二净,所以开了篇回头看博文,重点介绍基础知识中的字符串Java的8个基本数据类型浮点型默认为double,故定义float类型需要加上f(F)。字符型默认值是编号为0的字符,而不是字符0,这个切记。以上是Java的自动类型转换,注意: 任意的基本数据类型都可以转为String。题目:不借助临时变量,交换a,b原创 2017-12-11 10:38:57 · 687 阅读 · 0 评论 -
Java基础知识小清单(二)
本文为续二,重点讲述Java基础中的字符串知识String类的常用方法charAt()startWith()和endsWith()equalsIgnoreCase()toCharArray(),valueOf()String(char[] value)indexOf()方法length(),切记length是针对数组来说,String是对象所以要用方法public class StringDem原创 2017-12-24 15:43:25 · 527 阅读 · 0 评论 -
Java大整数运算之计算1!+2!+…+100!的总和.
最近开了Java课程,可是课后习题似乎有点超前了一点点,莫非老师要锻炼我们的动手能力………………..Java大整数运算转载import java.util.*;import java.math.*;public class Main{ public static void main(String args[]){ Scanner cin = new Scanner(Syst原创 2017-09-26 16:46:06 · 2521 阅读 · 0 评论 -
Java的简单应用之插入排序和shell排序
理解了插入排序,就相当于理解了一半的shell排序今天简单的理一理插入排序和shell排序的关系,重点还是为java的用法练一练手插入排序 这个我就不多说了,核心思想就是for循环;while循环;以及逻辑思维的应用。核心代码static void sort(int[]a){ int i,j,temp; for(i=1;i<a.length;i++){ j=i-原创 2017-09-10 17:04:22 · 380 阅读 · 0 评论 -
Java多线程入门
说来惭愧,距离第一次发布Java的博客已经过去整整一个多月了,可恶的是我居然刚到多线程这里徘徊,这效率可真是急煞人也,兴许是中间参杂了一些其他的技术课程给耽搁了,感觉每天都很忙,备忘录里一大堆的事情数都数不过来,想好好总结一下刚结束的网络程序设计C#+SQLSever建站过程,又想将`scrapy框架添个redis再梳理梳理,还忙着复习复习下周就结课的操作系统,又要抽空看看多媒体的PCA,特征脸,K原创 2017-10-28 11:05:30 · 372 阅读 · 0 评论 -
Java简单枚举应用
枚举是个好东西,前段时间因为需要命名一种常量连续分布的数据结构,第一时间就想到了枚举,枚举确实不错,尤其是加入了面对对象技术之后,简直就是一大命名神器,下面介绍一下枚举简单的应用JDK1.5开始新增关键字enum,即定义枚举类型[public] enum 枚举类型名{ 枚举成员1,枚举成员2 ,枚举成员3........;}一个源文件只能定义一个public类型的枚举类型,枚举类型经过J原创 2017-10-21 10:59:37 · 378 阅读 · 0 评论 -
利用位向量实现海量数据存储
最近需要接触大型数据存储,正好操作系统课上讲到了位图法,考虑到以后可能会用到,所以将以前的题目翻出来晒一晒先来讲一讲简单的位图法(位向量法) 位向量顾名思义就是用位来存储一个数,文中说存储N=10000000个数,每一位代表一个数。 我们可以定义一个int类型的数组int a[N],那么如果a[9]的值为1,则表明文件中存在一个值为9。 这样的话,我们就可以用一个数组来表示这么多数原创 2017-11-04 17:44:47 · 1332 阅读 · 2 评论 -
Java异常处理与断言
学习Java,一定要懂得如何面对对象,说白了就是要懂得如何区分抽象与实例的区别,理所当然的,对于Java异常处理来说,它也是采用面对对象思想的异常处理结构层次(图片来源网上) 从上图可以看出,所有的异常都是父类object的子类,并且都是继承于Throwable这个异常,它有Error和Exception两个子类。 Error类描述的主要是Java中内部系统错误及资源耗尽情况下的错误。 Exc原创 2017-10-15 12:01:04 · 952 阅读 · 0 评论 -
Java类的高级用法总结
马上就要进入10月中旬了,距离开学已经过去整整一个半月了,想想大四的学长学姐们的忙碌的生活,我似乎也感受到了他们内心的躁动,但要淡定,学东西就是要沉住气,今天先来梳理梳理Java类的高级用法主要内容: 1、final关键字 2、抽象方法及抽象类 3、接口 4、对象数组 5、内部类final 1、定义基本数据类型时,可在构造块和构造方法中进行初始化; 2、 当父原创 2017-10-11 21:46:40 · 1351 阅读 · 0 评论 -
Java的输入输出
今天简单的谈一谈Java的输入和输出吧,算是做一个总结概括Java输入输出系统(input/output)简称Java I/O,Java的 I/O是通过Java.io包下的类和接口支持,其中最重要的是5个类,分别是File、Output Stream、Input Stream、Write、Reader及一个接口Serializable,且io操作必须捕获异常。Java程序的所有读写操作都是通过流来实原创 2017-11-05 10:40:52 · 701 阅读 · 0 评论 -
Java向上向下转型问题
面对对象有三大基本特性:继承,封装和多态。多态是面对对象中技术最灵活的机制,它不但可以增加程序的可维护性,还可以提高代码的可读性,多态是依赖继承性的,甚至可以说是多态性是继承性的扩展。多态性分为对象方法的多态和对象类型的多态。对象方法的多态:方法的重载和重写(重载只要函数名一致即可,重写需要与父类保持一致)对象类型的多态:在Java中,对象类型的多态可以分为向上转型和向下转型。向上转型是程序自动原创 2017-10-05 17:01:33 · 1099 阅读 · 0 评论 -
Java之简单的泛型
最近真是 多事之秋,内心空荡荡的,可能接收知识的速度还是太慢了,感觉时间越来越不够用了,马上就要三月份了,多少有些紧张,唉不管了,先抓紧现在的每一分每一秒再说了本来想直接看完后面的Java集合那点东西然后就可以结束了,但是似乎如果没有泛型的思想,Java集合的东西理解起来不得要领,故而先探究Java泛型。泛型的定义 泛型的本质是参数化类型,参数化类型是指用来声明数据本身的类型,可以根据需求改变类原创 2017-12-09 19:48:21 · 562 阅读 · 0 评论 -
Java简单的网络编程
时间有些紧迫了,一个星期的悠闲时光也就这么结束了,开始巩固新东西,今天来说一说Java中的网络编程学习网络编程首先需要知道一些计算机网络的基本知识TCP/IPip地址划分注意: A类地址中的127开头的地址都是保留地址,例如最常见的127.0.0.1代表localhost,C类地址中的私有地址:192.168.X.X表明不是公网地址。端口URLTCP三次握手TCP四次挥手InetAddress类原创 2017-12-03 12:09:43 · 493 阅读 · 2 评论 -
Java面试题链表、树和位操作
最近金九银十刚刚过去,可谓是有人欢喜有人愁,不过,今天的任务是跑不掉的,走到最后的才是胜利者,下面记录几个面试题链表之快慢法实现一个算法,找出单向链表中倒数第k个节点 太直观的解法我们就不去考虑了,我们考虑一下迭代法吧,使用两个指针P1和P2,将它们指向链表中相距K个结点的两个节点,具体做法是先将P1 和P2 指向链表首结点,然后将P2向前移动K个节点,然后以相同的速度移动这两个指针,P2 会在原创 2017-10-21 19:39:18 · 538 阅读 · 0 评论 -
Java中的常用类库
11月24号了,这是一个多么令人激动的日子,因为这一天又是我零收入的一天。。。现在的我要好好地总结知识点,技术过硬才能够胜任工作。今天来好好简单的总结一下Java中的常用类库Object类 任何对象都可以调用Object类的方法,在Java中所有的类都直接或者简介地继承自Object类,即使没有显式使用extends关键字继承Object类,系统也会自动继承该类。Object类式整个Java语言原创 2017-11-24 22:13:45 · 469 阅读 · 0 评论 -
Java中的正则表达式
还记得前段时间在崇老师那里学的python正则表达式——30张图入门吗,今天正好碰上了Java的正则表达式,也算是看看Java中的有什么不同,顺便复习复习 pattern类Matcher类从JDK1.4开始,Java就开始支持正则表达式了,和python的正则比起来,方法的用法不一样,但原理都差不多,所以很快就能够上手, 一般都是这样的步骤: 1、创建Pattern实例 Pattern p=Pa原创 2017-11-25 12:17:33 · 409 阅读 · 0 评论 -
Java中的代码块分类及执行顺序
Java是一门神奇的语言,使用起来感觉额外的顺手,尤其是编译器的自动补全(有官方出版的汉化包),如果你还没有尝试过,那建议你可以选择尝一尝鲜。今天主要是介绍介绍Java中代码块的分类以及执行的顺序 在Java中,使用花括号{}括起来的代码称为代码块,根据其位置和声明的不同,可以分为普通代码块,构造块,静态块,和同步代码块(多线程内容) 强调:相同类型的代码块的顺序为:先定义的先执行,后定义原创 2017-09-24 09:17:18 · 816 阅读 · 0 评论