![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
Bug开发攻城狮
自古,百无一用是深情,唯有套路得人心
展开
-
可执行jar打包成exe文件(运行无须jre环境)
可执行jar打包成exe文件,最常见的大概就是exe4j了吧。不过,现在都2020年了,这里介绍一下,使用 java8提供的 javapackager 的方式来实现。预备工作 首先,需要预备工作1.java8环境 这个就不用多说了2.Inno Setup Compiler window上软件打包工具3.wix 打包成exe文件需要4.示例的可执行ja...原创 2020-01-28 16:01:30 · 4842 阅读 · 1 评论 -
java里为什么要set/get方法?
今天在刷掘金的时候,看到一篇文章Java Getter/Setter “防坑指南” 来了里面有说道:通过使用 Getter/Setter 方法,变量的访问(get)和更新(set)将变得可控。考虑以下 Setter 方法的代码public void setName(String name) { if (name == null || "".equals(name)) ...原创 2019-10-09 10:22:19 · 1604 阅读 · 0 评论 -
《深入理解Java虚拟机》整理笔记
一、内存管理1、运行时的内存区域线程私有:虚拟机栈、本地方法栈、程序计数器线程共享:堆、方法区2、各个内存区域可能抛出的异常栈1、当单线程时,栈的深度太大,会发生StackOverflowError,比如无穷的递归调用。2、当多线程时,若不停地创建线程,则会导致OutOfMemoryError,因为除去堆和方法区之外,剩下的栈总空间是转载 2017-04-26 15:50:55 · 2622 阅读 · 0 评论 -
假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?
一般情况,我们实现多线程都是Thread或者Runnable(后者比较多),但是,这两种都是没返回值的,所以我们需要使用callable(有返回值的多线程)和future(获得线程的返回值)来实现了。/** * 假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现? *...原创 2017-05-14 18:48:54 · 7842 阅读 · 0 评论 -
驴妈妈 面试题
9.对事务隔离性描述错误的是()参考 事务具有4个属性:原子性、一致性、隔离性、持久性原创 2016-12-22 00:00:39 · 3397 阅读 · 0 评论 -
jvm 性能监控 调优工具
1.jps 查看java的进程栗子,2.jstack id,查看进程的栈信息栗子,3.taskkill -f -t -im id,关闭线程栗子:原创 2017-02-08 10:59:17 · 2734 阅读 · 0 评论 -
Java调用dll
1. 首先有testdll.dll2. 需要testdll.dll的头文件,以便知道了定义了哪些接口在里面,例如:当然,要知道这些方法的实现,就要看实现部分了,一般不需要知道。 ------------------------------- 预备动作 --------------------------1. 从上面图中,我们可以接口的定义,假设现在我们需要调用如下接口,原创 2017-01-12 09:18:59 · 2479 阅读 · 0 评论 -
java 类加载器
类加载器基本概念什么是类加载器顾名思义,类加载器(class loader)用来加载 Java 类到Java 虚拟机中。具体的说就是:Java源程序(.java 文件)在经过Java 编译器编译之后就被转换成 Java 字节代码(.class文件)。类加载器负责读取 Java字节代码,并转换成 java.lang.Class类的一个实例。系统提供的类加载器系统提供的类加原创 2017-06-23 18:09:13 · 47408 阅读 · 0 评论 -
javax.crypto.BadPaddingException
错误信息:javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. at com.sun.crypto.provider.CipherCore.doFinal(Ciph...原创 2019-09-10 15:56:49 · 5062 阅读 · 2 评论 -
RSA+Base64工具类
RSA+Base64工具类RSA加密后的,需要进行base64/** * BASE64工具类 * * @author Frank.Z * */public class Base64Utils { static private final int BASELENGTH = 128; static private final int LOOKUPLENGTH = 64...原创 2019-07-29 15:48:37 · 515 阅读 · 0 评论 -
java实现单链表、双链表、环链表
链表是程序里重要的数据结构,在程序世界运用很广泛,众所周知的当属于jdk里的linkList了。 链表的优点,是相对于数组来说,扩容是非常快的,如果是数组扩容,数组是新申请一个更大空间的数组,然后把老数组内的数据复制到新数组;而链表就不必申请新链表,直接再分配一个元素的存储空间即可。 链表的缺点,相对于数组来说,数组的访问元素是直接根据下标来的,时间复杂度是O(1);而链表则需要遍...原创 2019-05-31 18:12:29 · 220 阅读 · 0 评论 -
jdk7和8 内存可见性上的一个小细节
在看一篇关于jvm内存可见性的文章的时候,无意中发现了jdk7和jdk8在处理上的细微差别,导致了两种截然不同的效果:jdk7(文中使用的是1.7.0_67)会顺利执行完;jdk8(文中使用的是1.8.0_192)会一直卡住。 下面是具体代码:public class ThreadSafeCacheJDK7 { private int result; public...原创 2019-05-20 14:40:58 · 476 阅读 · 0 评论 -
多线程 循环输出ABC AtomicInteger和Semaphore方案
看到一篇文章,说的是“多线程情况,如何循环输出ABC”,里面介绍了好几个方案,其中有一种是使用AtomicInteger原子性类去实现。AtomicInteger方案,循环输出ABC 它的思路呢,是三个线程,同时去操作AtomicInteger类,然后对atomicInteger的值取膜操作,模的结果是0,输出“A”;膜的结果是1,输出“B”;膜的结果是2,输出“C”。 代码如...原创 2019-02-27 16:28:44 · 2713 阅读 · 0 评论 -
java 给图片打水印
最近有个需求,在指定的半成品图片上,绘画数据。类似的效果是这样图片上的数据是从数据库中查出来的,也就是填充文字需要后端来实现。开始我也是很懵,经过指点,也晓得是要用java.awt包下的东西(汗颜,这个包下的东西,上次使用还是在参加工作之前。。。) 我预估这个需求,貌似也不是很难,就是三步走, 第一步:获取半成品图,转换成Image对象 第二步:在内存,把文字绘画到...原创 2017-12-16 14:05:22 · 2597 阅读 · 0 评论 -
java 给图片打水印 Plus
之前写了一篇文章,java 给图片打水印,虽然呢,功能是实现了,但是,代码结构混乱、效率低下,还使用到了SUN包下的东西,到服务器Maven打包的时候都打包不了,部门老大看了都看不下去了,忍不住亲自操刀斧正了一番,斧正后的就称呼plus版吧,我测试了下效率,原版是200+ms一张图片,plus版是10+ms,实在是汗颜啊。。。。。。。这里把plus版的贴出来,以后敲代码多借鉴下面的代码思想...原创 2018-02-25 21:55:01 · 2433 阅读 · 0 评论 -
Java 里如何实现线程间通信
正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, FutureTask, Callable 等。本文涉及代码:https://github.c...转载 2018-03-11 21:02:33 · 2424 阅读 · 0 评论 -
JAVA利用HttpClient进行POST和GET请求(HTTPS)
目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用JQuery post进行请求。但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的post请求是不允许跨域的。这时,就只能够用HttpClient包进行请求了,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽转载 2016-03-16 17:21:24 · 26366 阅读 · 2 评论 -
Java中String类的hashCode方法
首先来看一下String中hashCode方法的实现源码 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i <...转载 2017-06-15 18:24:14 · 2734 阅读 · 0 评论 -
四道Java经典基础题
一、==符的使用首先看一段比较有意思的代码[java] view plain copyInteger a = 1000,b=1000; Integer c = 100,d=100; public void mRun(final String name){ new Runnable() {原创 2017-01-03 09:33:28 · 2319 阅读 · 0 评论 -
java 回调函数
http://pan.baidu.com/s/1gfe196N请参考我,http://hellosure.iteye.com/blog/1130176请参考我,http://blog.csdn.net/fengyifei11228/article/details/5729445原创 2016-04-13 21:58:49 · 2594 阅读 · 0 评论 -
java 多线程 传参 并发处理
众所周知,只要涉及多线程或者分布式,肯定是要处理传参和处理并发的问题。1.传参多线程的传参,和java里普通类的传参很类似,一般是两种方式,构造方法和set方法1.1构造方法public class Test02 { public static void main(String[] args) { R r = new R("mike"); Thread t = n原创 2015-12-19 02:44:22 · 5709 阅读 · 0 评论 -
Caused by: java.security.cert.CertificateException: No subject alternative names present
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present at sun.security.ssl.Alerts.getSSLException(Unknown Source) at sun.security.ssl.SSLS原创 2016-03-16 16:10:30 · 9099 阅读 · 0 评论 -
java string为null时的字符串拼接
public class HelloWorld { public static void main(String args[]) { String s = null; s = s+"word"; System.out.println("hello " +s); }}对于上面的方法,可能很多人会以为输出是“hello wo...原创 2016-01-22 16:01:48 · 18263 阅读 · 3 评论 -
获取jar中的文件
使用如下方式读取JAR中的文件出错 类路径下放了一个jarfile.jar,如下所示: 如上所示,com/yyy/1.txt放在jarfile.jar中。 我原来使用如下的方式读取这个JAR中的文件: Java代码 @Test public void usingSpringMethod() throws Throwable转载 2015-07-12 23:43:20 · 2434 阅读 · 0 评论 -
java 打jar包和运行jar
1.环境JDK 1.7Eclipse Luna2.生成jar步骤3.运行jar进入jar目录, 执行jar命令 java -jar LoopPrice.jar防止遗忘,以备查看!原创 2015-12-29 11:57:27 · 3004 阅读 · 0 评论 -
java 监控文件夹变化(钩子文件)
1. 线程轮询扫描 优点:纯java实现,完美跨平台。 缺点:监听文件较多时,需要扫描的量太大;响应不是非常及时,依赖于扫描间隔时间。 2. 文件钩子 优点:事件驱动方式,无目录扫描。 缺点:跟平台相关 Jnotify开发包是个不错的文件钩子库,使用方式如下: import net.contentobjects.jnotify.JNotify;import n原创 2016-05-18 13:30:28 · 4222 阅读 · 0 评论 -
Java栈实现
栈数组实现一:优点:入栈和出栈速度快,缺点:长度有限(有时候这也不能算是个缺点)[java] view plain copypublic class Stack { private int top = -1; private Object[] objs; public Stack(int ca转载 2016-12-22 10:05:42 · 2350 阅读 · 1 评论 -
java 对象排序
1. ↑↑ Comparator类,实现对象的对比字段import java.util.ArrayList;import java.util.Collections;import java.util.List;public class TestMain0630 { public static void main(String[] args) { P p1 = new P原创 2015-06-30 22:17:00 · 2489 阅读 · 0 评论 -
Java常用分析工具之jmap
简介jmap是JDK中提供的一个用来监视进程运行中的jvm物理内存的占用情况的工具。该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量。当系统崩溃时,jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等。使用jmap会影响线上运行的应用,所以尽量不要在线上执行此命令。如果想dump堆信息,可以使用gcore命令,比jma原创 2016-08-11 17:29:48 · 7152 阅读 · 0 评论 -
java applet 一个简单的例子(applet+html)
java applet是一个类,其层次结构如下图: 类 JApplet java.lang.Object java.awt.Component java.awt.Container java.awt.Panel java.applet.Applet javax.swing转载 2016-06-07 15:54:32 · 2833 阅读 · 0 评论