![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
许愿35岁退休
这个作者很懒,什么都没留下…
展开
-
用Java讲明白 回调函数Callback的来龙去脉(一)
小弟我别的不行 自我感觉表达能力不错,对于Callback的理解,之前网上看了一堆文章,人都看吐了,大多都是抄来抄去,没有意义。于是花了点时间自己弄懂了,这里分享给大家,如果你看到我这篇日志,恰巧你又想了解回调函数到底是怎么回事,那么恭喜你,你运气不错,请你耐心把这篇文章看完。为了便于将事情表达清楚,我这里给大家编一个场景吧:码农(Programmer)现在需要做几件事情:1、敲代码一整天(...原创 2019-03-16 20:46:23 · 5695 阅读 · 4 评论 -
关于集合的clone()函数
最近项目刚好可以用clone()来复制一下集合,于是乎我就用了…… Map是没实现clone功能的,不过hashMap,LinkedList等是实现了clone函数的 但是,这个clone()和我最开始以为的clone功能大相径庭…. 先看看下面代码:package cn.edu.uestc.platform.testzk;import java.io.IOException;import原创 2017-10-07 19:23:42 · 687 阅读 · 0 评论 -
IO转换流(字符流转换成字节流)
转换流:输入字节流的转换流:InputStreamReader 是字节流通向字符流的桥 InputStreamReader输出字节流的转换流: OutputStreamWriter 可以把输出字节流转换成输出字符流 。 转换流的作用: 1. 如果目前所获取到的是一个字节流需要转换字符流使用,这时候就可以使用转换流。 字节流—-> 字符流 2. 使用转换原创 2017-09-09 16:13:12 · 625 阅读 · 0 评论 -
Eclipse工程中java文件上有小问号的原因和解决办法
这是由于没有同步的原因造成的?的文件为服务器上没有的文件,及由你添加文件。需要上传至服务器或者commit一下。 也可以直接 对这工程—>team->commit原创 2017-08-31 14:33:06 · 22584 阅读 · 0 评论 -
Iterator和ListIterator的作用和区别
Iterator和ListIterator主要区别有:一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能。二、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历。但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。也转载 2017-09-25 23:59:05 · 450 阅读 · 0 评论 -
(转载) Java IO 之 FileReader 读取文件打印在控制台(处理汉字乱码bug)
测试文件IO之FileReader的使用,从自己d盘读取个txt类型的文件,然后打印输出到控制台,附上测试代码。发现的问题:测试过程中,中文汉字出现乱码。经调查,知道在电脑新建txt文本,默认是ANSI编码方式。不是utf-8编码方式。所以在FileReader读汉字显示的时候,就乱码了。你把txt文件换成个你写的Java文件,当然你的java文件默认是utf-8的就没问题,可以正常打印到控制台转载 2017-08-24 14:44:55 · 1265 阅读 · 0 评论 -
常见的码表
常见的码表如下: ASCII:a 97 美国标准信息交换码。用一个字节的7位可以表示。ISO8859-1: 拉丁码表。欧洲码表,用一个字节的8位表示。又称Latin-1(拉丁编码)或“西欧语言”。 ASCII码是包含的仅仅是英文字母,并且没有完全占满256个编码位置,所以它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入192个字母及符号,藉以供使用变音符号的拉丁字母语言原创 2017-08-24 10:37:29 · 5245 阅读 · 0 评论 -
(总结)IO之File类<一>
IO流(Input Output) :IO技术主要的作用是解决设备与设备之间 的数据传输问题。 比如: 硬盘—>内存 内存的数据—->硬盘上 把键盘的数据——->内存中IO技术的应用场景: 导出报表 , 上传大头照 、 下载 、 解释xml文件 … 数据保存到硬盘上,该数据就可以做到永久性的保存。 数据一般是以文件的形式保存到硬盘上sun使原创 2017-08-23 15:57:58 · 258 阅读 · 0 评论 -
(总结)IO之File类<二>
File类: 用于描述一个文件或者文件夹的。通过File对象我们可以读取文件或者文件夹的属性数据,如果我们需要读取文件的内容数据,那么我们需要使用IO流技术。IO流(Input Output)IO流解决问题: 解决设备与设备之间的数据传输问题。 内存—>硬盘 硬盘—>内存IO流技术:IO流分类: 如果是按照数据的流向划分: 输入流 输出流如果按照处理的单位划分:原创 2017-08-23 16:02:46 · 233 阅读 · 0 评论 -
JAVA 7并发编程实战手册
看了这本书一大半,还剩两章没看,感觉这本书确实讲得太浅太浅,而且书中错误一大堆,比如输出流之后要记得flush或者close他都没有,好多好多地方的错误,不下20处吧…..但这本书是师兄推荐给我的,我还是坚持把这本书的前面大部分看完了,后面两张测试什么的,我就不看了,买了其他两本并发编程的书,看其他的去了。第一章:线程管理先介绍了什么是真正的并发,并发是指一系列任务的同时运行。如果一台电脑有多个处理原创 2017-10-30 21:00:02 · 532 阅读 · 0 评论 -
关于volatile对变量自增不保证原子性的原因所产生的疑问。
在多线程情况下,有i变量:volatile int i = 0;这种情况下,如果多线程对i进行自增操作:i++,结果可能会与预期值不同,这是什么原因呢?先来看看大多人对这一错误的解释: 是因为volatile不能保证原子性,而i++其实有三步操作,读,修改,写,并不是原子操作,所以volatile当然不能保证结果的准确性,解释完毕!其实博主我觉得这种解释相当的流氓 让我想起原创 2018-01-31 19:32:14 · 2074 阅读 · 6 评论 -
NIO中让人混淆的读通道写通道和buf.flip的记忆方法
最近同学给我说NIO中读和写和开始学IO感觉一样,一会儿InputString,一会OutputString,经常搞不清楚这个输入和输出到底哪个对应哪个。我自己想了一个记这个的方法,分享给刚学NIO的同学,可以让你记得非常清楚。先贴一段别人的程序:public void test1(){//10874-10953 long start = System.currentTim原创 2018-01-25 14:05:56 · 2315 阅读 · 2 评论 -
白话文讲HashMap
在这片文章开始之前,我先抛出几个问题,读者可以先回忆或者思考一下,然后再继续往下看,看与读者之前的认识是否有冲突,我当然希望能有新的观点让读者眼前一亮: 1、HashMap底层是一种什么样的结构? 2、一个对象最后是如何确定到一个Hash桶的(如何确定数组中的一个位置)? 3、发生Hash冲突了如何解决? ...原创 2018-09-06 21:18:46 · 5031 阅读 · 1 评论 -
判断两个Integer是否相等,使用==会产生的问题分析
Integer a = 128; Integer b = 128; System.out.print(a==b); //false Integer c = 127; Integer d = 127; System.out.print(c==d); //true==对于非基本类型来说,是判断两个引...原创 2018-08-05 15:24:10 · 3072 阅读 · 0 评论 -
寻找和为定值的n个数(Java版)
Java基于递归的版本: 代码里有简略的注释import java.util.*;public class Demo { static ArrayList<ArrayList<Integer>> lists = new ArrayList<>(); static LinkedList<Integer> fuck = new...原创 2018-07-22 17:39:34 · 1734 阅读 · 0 评论 -
HashMap只有容量达到阀值才发生扩容吗?大错特错!
看了网上很多文章,说HashMap在元素达到负载因子对应数的时候就发生扩容。如果你看过源码就会发现,其实还有一种情况也可能会发生扩容:树形化的时候。什么是树形化? HashMap底层是由数组+链表组成的,为了方便不懂的人更容易理解,那我们就先假设HashMap底层就是数组,先不管链表。 那对于一个对象add到HashMap中,那HashMap的add方法是如何来确定这个对象是放在数组中的哪...原创 2018-06-19 09:25:56 · 10697 阅读 · 12 评论 -
聊聊ConcurrentHashMap
先来看看ConcurrentHashMap是个啥结构。 在JDK1.7中,ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成,结构如下图所示: Segment数组的意义就是将一个大的table分割成多个小的table来进行加锁,Segment数组中每一个元素就是一把锁,每一个Segment元素存储的是HashEntry数组+链表,这个和Has原创 2018-02-07 21:59:05 · 10383 阅读 · 2 评论 -
关于创建String对象过程的内存分配
看到一篇不错的文章,帮我理清了创建String对象的过程。于是转载过来 原文地址:http://blog.csdn.net/xiabing082/article/details/49759071内容如下:关于创建String对象过程的内存分配常量池(Constant Pool):指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。JVM虚拟机为每个被装载的类型维护一转载 2018-01-30 15:07:50 · 596 阅读 · 0 评论 -
模拟 CAS 算法
此代码和底层实现肯定是不一样的,但是逻辑上是一样的,一开始就存在变量value的旧值,然后直到准备更新此变量value值的时候再读一下此时内存中value的值,然后比较旧值和新值是否相等,如果相等就更新这个值,如果不相等就什么都不做。代码如下:package com.uestc;public class TestCompareAndSwap { public static voi原创 2018-02-05 18:45:34 · 295 阅读 · 0 评论 -
Java中的NIO知识点总结
IO与NIO的主要区别 Java NIO系统的核心在于:通道和缓冲区。通道的可以理解为:打开到IO设备(文件、套接字)的连接。可以想象成Channel负责传输,Buffer负责存储。缓冲区是一个用于特定基本数据类型的容器,所有缓冲区都是Buffer抽象类的子类。 Buffer主要用于与NIO通道交互,数据的读写都必须通过缓冲区。Buffer中有一些参数如下图所示:缓冲区原创 2018-01-28 14:06:41 · 455 阅读 · 0 评论 -
Json对象与Json字符串的转化、JSON字符串与Java对象的转换
一.Json对象与Json字符串的转化1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象2.浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: JSON.stringify(obj)将JSON转为字符串。JSON.转载 2017-08-26 13:48:05 · 538 阅读 · 0 评论 -
《Thinking In Java》总结, 第二章:一切都是对象
看Thinking In Java看到一半,由于看不下去了,我就从前面看过的章节往后一章一章的总结,看看自己从这些看过的章节中学到了些什么。第一章没什么可说的,直接从第二章开始吧。Java中,一切皆对象。尽管一切都是看作对象,但是平时我们实际操作的的是对象的一个引用(当然有人说这是一个指针)。可以将这一情形想象成用遥控器(引用)来操纵电视机(对象)。只要拥有这个遥控器,那我们就可以和电视机保持连接。原创 2017-09-02 22:30:47 · 461 阅读 · 0 评论 -
Openstack4J API初体验之浮动IP的查询,关联和删除
今天写一个Openstack4J API操作浮动IP的例子。首先看看有哪些浮动IP池: 代码:OSClientV3 os = OSFactory.builderV3().endpoint("http://10.0.0.11:5000/v3") .credentials("zph", "123456", Identifier.byName("default"))Li原创 2017-07-20 21:39:28 · 2563 阅读 · 0 评论 -
SQLException:Illegal operation on empty result set.
我觉得这个错误类似与空指针异常。 出现这个错误是处理了空的结果集。 部分代码如下:public Project findByProjectName(Project project) { // TODO Auto-generated method stub try { Connection conn = DBUtiles.getConnecti原创 2017-06-15 11:57:12 · 2670 阅读 · 0 评论 -
Openstack4J API初体验之删除一个实例(删除一个虚拟机)
说明:本文中,节点,实例,虚拟机这几个词是等价的。 今天写了一个删除虚拟机的函数,发现数据库设计得有问题,之前创建节点的函数是学长写的,现在看来也需要改一改才能用了,于是动手,花了大概一个小时时间,把创建删除节点的整个过程再完善了一下。 先说一下背景,我们的web界面是大概是这个样子: 这里从左边拖节点到右侧的画布区域,每拖一个卫星实际上有两件主要事要做: 1、在数据库插入创建节原创 2017-07-14 22:02:44 · 2202 阅读 · 0 评论 -
Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"(使用forEach时出错)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>贴上这个之后报错 :Can not find the tag library descriptor for “http://java.sun.com/jsp/jstl/core”解决错误:下载jtsl.jar和standard.jar bulid to path就行了。原创 2017-05-19 23:32:23 · 616 阅读 · 0 评论 -
Openstack4J API初体验之启动一个实例并为实例分配IP(将实例挂在某个网段上)
上一篇文章讲了如何授权,在学会使用Openstack4J提供给我们授权的API后,现在我们要开始创建一台VM/实例了。先授权:OSClientV3 os = OSFactory.builderV3().endpoint("http://10.0.0.11:5000/v3").credentials("username", "psw", Identifier.byName("default")) .s原创 2017-07-12 17:36:06 · 2056 阅读 · 1 评论 -
Openstack4J API初体验之Authentication
刚开始接触用java调用Openstack提供的API来操作底层的云平台。 这篇说一下Openstack中的授权。 在用户操作dashboard的时候,首先需要登录。 当点击Connect的时候,实际上是发生了这样的事情: 之后我们要访问的一切服务都需要拿着所谓的“token”去访问,例如: 请注意,顶部显示 admin 可访问的 Project 为 “admin” 和 “d原创 2017-07-12 10:25:50 · 5455 阅读 · 2 评论 -
使用springmvc 实现重定向
例子:@RequestMapping("/select.action") public String selectQuery(Model model, HttpSession httpsession) throws ParseException { System.out.println("fadsfadsdfas"); // 先获得当前数据库中user的cno原创 2017-05-19 23:36:57 · 433 阅读 · 0 评论 -
利用JSch远程登录linux服务器执行指令
最近导师项目,需要搞一个web server,需要在浏览器端控制底层虚拟机部署应用。于是有两个想法。 一、虚拟机的镜像已经部署好所有的应用,这个项目下,用户需要的应用是固定的,就那么几种,所以可以考虑直接镜像上直接安装好所有的应用。当然这个方法有点蠢,太不灵活了。 二、通过编写java程序,通过ssh远程登录到虚拟机来执行命令。于是在网上找到了Jsch。下面是网上转载的简单例子:import j原创 2017-04-29 11:45:44 · 2894 阅读 · 0 评论 -
java中二维数组获取行数和列数
今天遇到了二维数组,居然不知道如何获取行数和列数。 记录一:public class Demo1 { public static void main(String[] args) { int [][]arr = new int[3][5]; System.out.println("行数为:"+arr.length); System.out.p原创 2017-08-16 17:16:00 · 1977 阅读 · 0 评论 -
错误:the input device is not a TTY
使用JSch远程ssh到Linux服务器上执行docker命令:sudo docker exec -it nova-627e13b3-06b0-49e6-8cb9-8b649a9a8c93 ls一直报错:the input device is not a TTY在stackflow上查到,命令中去掉t 错误解决命令改为:sudo docker exec -i nova-627e13b3-06b0-4原创 2017-08-15 09:22:52 · 21809 阅读 · 3 评论 -
(上传文件错误)java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
最近需要来写后台接受前端上传的文件,出现文章名上的错误 fileupload下面的这个类找不到,也就是说,这个外来的类的jar包没有加入到工程中。 我是maven项目,直接在pom.xml文件中加入:<!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency>原创 2017-08-24 16:54:44 · 14429 阅读 · 4 评论 -
类中static{}和直接一对大括号{}作用
static{ //代码内容 //…….. //代码结束 } 静态代码域,在类的加载的时候调用一次,整个生命周期只会调用一次。 { //代码内容 //…….. //代码结束 } 普通代码域,在类的每个对象创建的时候调用。代码域中定义的变量都是局部的,只有域中的代码可以调用。原创 2017-07-28 19:19:19 · 6962 阅读 · 0 评论 -
为什么静态方法不能直接访问非静态成员
static成员是在JVM的CLASSLOADER加载类的时候初始化的,而非static的成员是在创建对象,即new 操作的时候才初始化的;类加载的时候初始化static的成员,此时static 已经分配内存空间,所以可以访问;非static的成员还没有通过new创建对象而进行初始化,所以必然不可以访问。 简单点说:静态成员属于类,不需要生成对象就存在了.而非静态需要生成对象才产生,所以静态成员不转载 2017-07-28 19:09:10 · 2759 阅读 · 0 评论 -
Java多线程学习(吐血超详细总结)
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka 写在前面的话:此文只能说是Java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java并发编转载 2017-08-20 15:49:15 · 400 阅读 · 0 评论 -
多线程的三种方式
1.继承Thread类 2.实现Runnable接口 3.实现Callable接口 并且需要线程池的支持原创 2017-04-18 22:52:20 · 469 阅读 · 0 评论