Java
文章平均质量分 76
张小鸣
这个作者很懒,什么都没留下…
展开
-
自己编写小程序背日语50音图
写了一个小程序,可以随机出日语50音图的字形题或者读音题,帮助快速牢固掌握日语50音图原创 2023-05-24 10:59:00 · 1912 阅读 · 0 评论 -
那些年我们踩过的坑——Java中Date夏令时日期转换不一致问题
一、问题描述前段时间遇到一个很神奇且费解的问题,程序将用户的生日从日期类型转为string类型时,竟然莫名其妙的少了一天,具体表现为存在数据库的19900916这个日期,取出到程序后做转换为字符串的操作,然后神奇的变为了19900915,并且在开发环境重现时出现了有些同事能够重现,而有些同事无法复现的情况。最终,我们发现了问题的原因,真的可谓是你意想不到的坑之一。如下图为问题复现:可见19...原创 2019-11-25 17:43:34 · 7816 阅读 · 4 评论 -
Java设计模式学习——结构型
本文是笔者自己在参考大神关于设计模式的讲解并学习后记的小记,只用于自己以后复习用,其他同学若想学习设计模式的种种,请移步下面原文链接: http://blog.csdn.net/zhangerqing/article/details/8194653/综述都摘自原文: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了原创 2017-08-08 09:55:32 · 760 阅读 · 0 评论 -
Java设计模式——装饰模式
装饰模式是给一个对象增加一些新的功能,而且是动态增加,这要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。原创 2017-08-16 14:43:33 · 776 阅读 · 0 评论 -
Java设计模式学习——创建型
本文是笔者自己在参考大神关于设计模式的讲解并学习后记的小记,只用于自己以后复习用,其他同学若想学习设计模式的种种,请移步下面原文链接: http://blog.csdn.net/zhangerqing/article/details/8194653/综述都摘自原文: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重原创 2017-07-26 20:15:35 · 805 阅读 · 0 评论 -
Java读写锁ReadWriteLock
一、前言在多线程开发中,我们更多关注的是多并发情况下,修改操作不会因为并发而产生错误的情况,比如1000个线程对一个参数同时加1,最终得到的是小于1000的数字。这样的情况下我们有很多方法来保证其线程安全,比如使用synchronized关键字或者使用ava.util.concurrent包内部的类或者方法。 但其实还有一种情况,同时存在读写并发的情形,这个时候我们希望读写分离,就是对于读取这个动原创 2017-08-11 18:29:17 · 664 阅读 · 0 评论 -
JVM自带性能分析工具介绍——JPS
前言JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点,用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测,这里我们就简要介绍下这几个命令的作用和使用方法。原创 2017-09-15 20:38:00 · 851 阅读 · 2 评论 -
JVM自带性能分析工具介绍——jstack
前言JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点,用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测,这里我们就简要介绍下这几个命令的作用和使用方法。原创 2017-09-18 17:25:05 · 11938 阅读 · 0 评论 -
JVM自带性能分析工具介绍——jmap和jhat
前言JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点,用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测,这里我们就简要介绍下这几个命令的作用和使用方法。原创 2017-09-18 17:26:33 · 2983 阅读 · 0 评论 -
JVM自带性能分析工具介绍——jstat
前言JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点,用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测,这里我们就简要介绍下这几个命令的作用和使用方法。原创 2017-09-18 17:27:46 · 1240 阅读 · 0 评论 -
Java Socket定长通讯读取消息长度头
数据在网络传输时使用的都是字节流,Socket也不例外,所以我们发送数据的时候需要转换为字节发送,读取的时候也是以字节为单位读取。 那么问题就在于socket通讯时,接收方并不知道此次数据有多长,因此无法精确地创建一个缓冲区(字节数组)用来接收,在不定长通讯中,通常使用的方式时每次默认读取8*1024长度的字节,若输入流中仍有数据,则再次读取,一直到输入流没有数据为止。原创 2017-05-19 10:36:02 · 20145 阅读 · 5 评论 -
JVM内存模型你只要看这一篇就够了
让我们不厌其烦的从内存模型开始说起:作为一般人需要了解到的,JVM的内存区域可以被分为:线程栈,堆,静态方法区(实际上还有更多功能的区域,并且这里说的是JVM的内存区域,实际上Java程序还可以调用native方法使用直接内存)。 本文接下来就重点说说这三个区域。1. 线程栈简介注意这个栈和数据结构中的stack有相似之处,但并不是用户态的。准确的讲它压入的每个栈帧(Stack Frame)是程序转载 2017-10-31 18:37:57 · 840 阅读 · 0 评论 -
Java将Exception信息转为String字符串
一、前言在java中,异常机制是非常有用的构成部分,异常信息对于查找错误来说是必不可少至关重要的信息,因此我们希望在发生错误的时候先看到捕捉到底异常信息。然而,通常的异常信息的输出使用e.printStackTrace(),这样异常信息会被输出到控制台中。但有的时候我们需要异常中的部分信息,需要他是一个可以处理的String类型。原创 2017-05-25 11:04:06 · 15212 阅读 · 5 评论 -
Lombok简介与应用
简介lombok是java开发中一个非常好用的小工具,刚见到的时候就感觉非常惊艳,有一种相见恨晚的感觉,所以特此来推荐一下。lombok的官方地址:https://projectlombok.org/ lombok的Github地址:https://github.com/rzwitserloot/lombokLombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很...原创 2018-04-10 15:40:34 · 634 阅读 · 0 评论 -
Junit自动单元测试以及测试覆盖率简单使用
前言众所周知,测试对于一个工程而言是至关重要的,而现在绝大多数团队都配有专门的测试人员来使用各种工具进行专业的测试,这里介绍的Junit的更多是作为开发同学在开发过程或最后提供自测的工具,使用起来非常方便,并且可以提供出测试覆盖率,以及具体没有覆盖的代码。 下面还是使用Idea做为演示IDE,使用Eclipse或者其他IDE的同学请自行搜索搭建方式,应该都是大同小异。 这里网上有很多详细的...原创 2018-04-19 18:56:18 · 25744 阅读 · 3 评论 -
使用CountDownLatch等待多线程全部执行完成
前言 CountDownLatch 允许一个或多个线程等待其他线程完成操作。 应用场景 假如有一个列表的大量数据等待处理,最后全部处理完毕后返回处理结果。普通做法就是从头遍历,一个个顺序执行,这样单线程处理效率不高,我们希望使用多线程的方式处理,同时在主线程等待所有子线程处理完成。CountDownLatch的构造函数接收一个int类型的参数作为计数器,如果你想等待N个点完成,这里就传入...原创 2018-05-21 19:01:30 · 4402 阅读 · 1 评论 -
Log4J按照不同包名输出日志
log4j是java项目常用的日志输出组件,其配置灵活,功能强大,之前只是在项目中简单的使用,然后使用中学习其他功能,比如今天我们打算将日志按照不同的package包名输出,配置类config包下的日志输出到config.log,业务处理的日志输出到busi.log。因为配置比较简单就只贴出log4j.propertis的配置,源码过多就不贴了log4j.rootLogger =ALL,system原创 2017-07-22 16:05:23 · 9040 阅读 · 0 评论 -
Maven安装以及环境配置(Windows)
Maven是什么?Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。原创 2017-03-18 17:11:51 · 4077 阅读 · 0 评论 -
java将两个byte数组合为一个
java中byte数组无法像String类型一样直接使用”+”连接起来,而是需要使用到System.arraycopy方法来讲数组复制到另一个更大的数组指定位置中,所以这个方法也适用于合并其他类型的数组。 所以废话不多说,直接上代码,我将其写成了了一个方法,可以直接调用: /** * 合并byte数组 */ public static byte[] unitByt原创 2017-05-18 22:36:30 · 10025 阅读 · 1 评论 -
Java调用Windows内cmd命令
很多情况下,在Windows进行操作时,直接使用cmd命令提示符会远比通过Java实现简便的多,所以我们可以通过使用Java调用cmd命令的方式来完成这一操作。可以使用Java调用cmd命令删除目录下所有文件。原创 2016-05-26 10:57:41 · 17995 阅读 · 0 评论 -
通过java解析域名获得IP地址
在这里我们如果想通过java程序来解析域名获得真实IP的话,可以通过java的InetAddress类来实现原创 2016-07-26 20:06:12 · 20666 阅读 · 1 评论 -
Java并发控制synchronized与AtomicInteger类
众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题。关于线程的同步,最常用的解决方法就是使用synchronized关键字,但是如果使用场景只用在控制一个计数的整型变量时(通常这也是非常常见的一个使用场景),AtomicInteger类简洁易用的特性一定会让你对它爱不释手。原创 2016-11-14 16:28:49 · 4600 阅读 · 0 评论 -
Linux环境编译jvm源码openjdk
java是一门深受大家欢迎的语言,其最大的优点是其jvm虚拟机封装了便捷的内存管理机制以及垃圾收集策略,这一部分也正是java的核心部分。要想了解其工作原理,我们必须下载jvm的源码,对其编译。源码我们可以使用开源的openjdk,openjdk与Oracle的jdk差别很小。环境最好使用Linux或者Mac OS。接下来我记录了自己在Linux上编译openjdk的过程以及期间遇到的问题和解决方法,拿出来和大家分享。原创 2016-12-28 09:43:25 · 4874 阅读 · 1 评论 -
Java对象序列化学习与运用
java序列化想必大家都已经或多或少听说过了,那么听起来如此专业的词汇究竟是做了什么事情呢,在实际中又如何通过代码来实现?在这一篇文章中,我就将我所学到的东西全部记录下来,与大家共享,希望对大家有帮助。 1. Java序列化是什么Java序列化其实就是,将JVM内存中的Java对象转换为字节序列形式的过程,同理反序列化就是将字节序列还原为Java对象的过程 当我们清楚了什么是Java序列化和反序原创 2017-02-17 17:34:10 · 2485 阅读 · 0 评论 -
Java----Socket编程之模拟客户端Client
以Java为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。本文介绍了java Socket的建立,数据发送以及关闭等操作原创 2017-03-06 22:32:30 · 3433 阅读 · 0 评论 -
Java线程安全之volatile关键字
我们知道在多线程的场景下,线程安全是必须要着重考虑的。Java语言包含两种内在的同步机制:同步块(synchronize关键字)和 volatile 变量。但是其中 Volatile 变量虽然使用简单,有时候开销也比较低,但是同时它的同步性较差,而且其使用也更容易出错。原创 2017-04-07 10:37:02 · 8307 阅读 · 1 评论 -
Log4j动态配置日志路径
动态配置路径若程序需要的日志路径需要不断的变化,而又不可能每次都去改配置文件,那就要采取两种方法。一、使用环境变量log4j的配置文件。二、代码内配置原创 2017-04-09 09:48:10 · 5759 阅读 · 0 评论 -
Java Swing编写小工具图形化界面
因为项目需要,需要写一个能够提高工作效率的小工具,业务部分主要是将一个excel的文件解析,根据规则生成对应的xml配置文件。业务代码写好后,作为一个小工具,最好是使用可视化的图形界面来操作,所以我用了Java Swing比较简单的做了个界面,主要功能有 1.可以通过文件选择对话框选择需要进行处理的文件/文件夹 2.处理信息的输出情况 3.图标的更改原创 2017-04-11 14:09:23 · 11896 阅读 · 4 评论 -
java基础提高笔记——继承
一、前言本文是我在工作中积累一定经验后,再读《Java核心技术》一书所记录的笔记,纯粹自己记录使用,大家可以不予关注。二、继承5.1.1 通过父类定义子类时,仅需指出子类与父类不同之处原创 2017-05-11 22:24:28 · 1130 阅读 · 0 评论 -
Java一次性递归解析json报文为Map(不使用第三方jar包)
前言json报文相信大家都接触过,对于前段JavaScript来说,它是最方便处理的数据格式,而对于后端应用来说,解析json报文并没有xml格式来的那么清晰明了,尤其是对于通用的处理来说很难做到,这里在参考了阿里巴巴的json(非fastjson项目)处理后,十分佩服它的思路,尤其是递归迭代的应用,现在将其源码贴出,供自己以及大家学习。原创 2017-05-15 22:45:32 · 3940 阅读 · 0 评论 -
使用Jsoup简单解析HTML文件示例
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。在Java爬虫项目中,html解析也是必须的一环,这里简单介绍下jsoup的用法。原创 2017-05-17 21:51:09 · 10895 阅读 · 0 评论 -
Java基础提高笔记一对象与类
一、前言本文是我在工作中积累一定经验后,再读《java核心技术》一书所记录的笔记,纯粹自己记录使用,大家可以不予关注。原创 2017-05-09 15:47:58 · 1067 阅读 · 0 评论 -
java异常——no such provider:BC
对通讯中的重要信息进行加密,或者使用证书来保证安全,在使用bcprov-jdk16-146包提供的加解密方法时,报了 Java.security.NoSuchProviderException: no such provider: BC 这个错误,从错误来看是java security中没有找到BC的安全模式。解决方法有两种解决方法原创 2017-04-27 10:04:33 · 26660 阅读 · 7 评论 -
java中static修饰变量默认赋值问题
package org.roy.test;public class Test { public static int num; public static char c; public static boolean flag; public static float fl; public static long l; public static short s; public s原创 2014-09-03 10:00:48 · 11600 阅读 · 0 评论