自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hello world!

认准一件事,坚持下去,总有一天,你会看到好的风景! 记录是最好的学习方法

  • 博客(1674)
  • 资源 (14)
  • 收藏
  • 关注

原创 MySQL之SQL优化实战记录

点击上方“Java大数据修炼之道”,选择“置顶公众号”技术文章第一时间送达!背景本次SQL优化是针对javaweb中的表格查询做的。部分网络架构图业务简单说明N个机台将业务数据发送至服务...

2019-01-24 19:00:00 396 1

原创 记录一次mybatis动态新增拼接sql语句出现的异常(主要是数据库SQL Server与jdbcType数据类型之间的对应关系)

源码如下:因为前端页面并不是所有的项均为必填项, 故insert 新增sql语句需动态拼接, 刚开始通过tomcat后台发现报如下错误: 经过查阅mybaits官网才知道以下事实: 1、mybatis insert语句中 jdbcType  后面跟的类型字母必须全部都大写; 2、JdbcType所拥有的数据类型和Java类型以及SQL Server语言所拥有的数据类型存...

2018-12-21 14:36:38 1586

原创 Java基础进阶小结

面向对象1.继承:是类和类之间的关系,继承与对象无关。子类无条件拥有父类中所有“可继承”的属性和方法。(构造方法不可继承)Override方法重写:重写也叫覆盖 (面试中有的会问到Ove...

2018-11-29 08:00:00 349

原创 Java开发必知的代码片段

代码调试增强for循环*jdk1.5以上才能支持*增加for循环实现equals()classPerson{Stringname;intbirthYear;byte[]...

2018-11-16 08:00:00 245

原创 学习Java需吃透这些基本概念

学习好比盖房子,打地基好很重要,房了能盖多高关键看地基;学习同样道理,基础知识是以后学习一切技术的必要条件,我们在准备学习一门开发语言时,首先要学习它的基础,不仅要会,更要融会贯通;万变...

2018-10-21 07:00:00 367

原创 使用Mybatis框架时怎样可以让程序在tomcat日志中打印出执行的SQL语句

我们都知道,如果是直接使用mysql我们是看不到项目运行过程中执行了哪些对应的SQL语句, hibernate可以直接加一一条配置就搞定, mybatis其实也大同小异, 废话不多说, 直接上代码只需要在mybatis的配置文件中加入 <settings> <setting name="logImpl" value="LOG4J" />...

2018-07-23 18:54:38 5296

原创 面试真题之递归算法

题目是这样的:   使用递归算法找出指定路径下所有的文件夹及文件  包括子文件夹目录下的文件...private static List<String> getAllFilePaths(File filePath, List<String> filePaths) { File[] files = filePath.listFiles(); if (files == nu...

2018-05-11 09:51:15 1411

原创 jquery判断浏览器的类型

使用原生JavaScript判断浏览器类型, 附上代码地址:点击打开链接

2018-04-03 16:17:16 475

原创 mybatis如何在控制台或者tomcat日志中打印出执行的sql语句

第一步:在mybatis的配置文件中添加以下代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"...

2018-02-22 17:35:37 12967

原创 linux下修改tomcat默认访问主页为自己项目的页面

其实很简单,具体操作步骤如下:首先找到tomcat下的webapps文件夹,然后删除除了WEB-INF文件夹外的所有文件,紧接着加入一个index.jsp文件,代码如下:   top.location='fuzz'; //fuzz表示项目的名字,此处需要将fuzz更改为你项目对应的名字关闭并重启tomcat就行了,打开浏览器就不再需要输入ht

2018-02-05 09:24:50 5908 4

原创 修改tomcat默认的欢迎首页,将tomcat默认的欢迎页面改成自己项目的页面

推荐阅读: IT编程语言百度网盘学习资源汇总 !!!前言: 安装好tomcat以后,我们输入网址(或者ip),访问到tomcat,浏览器当中出现的是tomcat的欢迎界面,如下:那么如何能够输入地址以后能够访问到我们自己发布的默认欢迎界面呢?方法如下:第一步:找到tomcat的server.xml(在conf目录下),找到:代码如下:<H...

2018-01-25 19:25:42 92556 13

原创 java调用Python脚本文件的同时,并向其中传入参数

我的项目部署到linux环境中的tomcat中,使用java调用的是已经编译后的Python二进制文件,在此只贴出关键代码,以前不知道怎么在调用命令的时候同时向其中传递所需参数,现在这个问题终于解决了String ip1 = request.getParameter("ip1");//旧ipString ip2 = request.getParameter("ip2");//新ip

2018-01-24 16:39:04 1110

原创 上传文件需求: 文件名称不可包含中文正则表达式的正确写法

数据包(上传文件名不可包含中文)直接贴出关键代码functioncheckfile(){var file=document.getElementById("upload").value;//上传文件名var re = /[\u0391-\uFFE5]+/g; //是否为中文的 正则表达式if(file.match(re) != null){aler

2018-01-16 18:55:34 1028

原创 Java 定时器(Timer,TimerTask)基础入门实例代码

实现的功能:距离当前系统时间,在指定多少分钟后,执行一件事(方法),此处简单的在控制台打印一句话,具体代码如下大家根据自己项目的实际情况导入相应的包(特别是最上面的包路径),TimerTaskTest01类中的代码如下:java定时器timer执行一次后就停止,我需要达到的要求就是只执行一次,如果不停止jvm虚拟机会一直运行,时间久了势必会消耗CPU资源,占用内容,正如上面

2017-12-29 11:44:38 804

原创 java中获取当前系统时间以及过半小时之后的时间的实现

我就不过多的使用文字描述了,大家直接看代码就行:package cn.zj.project;import java.text.SimpleDateFormat;import java.util.Date;public class TestSystem {public static void main(String[] args){Long time = System

2017-12-19 10:51:27 19719

原创 读取Spring配置文件获取bean的几种情况

情况一:spring的配置文件applicationContext.xml在src路径下(配置文件放在class目录下:)直接使用  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); 情况二:spring的配置文件applicat

2017-12-05 15:24:08 1518

原创 完全java实现一款开源的报表工具简表(JOR)

简表(JOR),是一款开源的报表工具,完全java实现,核心代码来自于国内一线报表工具品牌杰表.2008 。  提起开源的报表工具,不能不说说jaspereport,jasperreport作为著名的开源报表工具,在java程序员中一直享有盛名。但由于其设计主要是针对西式的简单报表,设计起复杂的中式报表来,有点力不从心,所以,在国内的项目中能成功应用的例子并不多。JOR,作为能做复杂报表的开源

2017-12-03 20:49:23 15676

原创 mysql建表常用sql语句个人经验分享

连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\" 修改密码:mysqladmin -u用户名 -p旧密码 password 新密码 删除授权: revoke select,ins

2017-11-19 19:48:39 408

原创 面试中单例模式有几种写法

纠结单例模式有几种写法有用吗?有点用,面试中经常选择其中一种或几种写法作为话头,考查设计模式和coding style的同时,还很容易扩展到其他问题。这里讲解几种猴哥常用的写法,但切忌生搬硬套,去记“茴香豆的写法”。编程最大的乐趣在于“know everything, control everything”。大体可分为4类,下面分别介绍他们的基本形式、变种及特点。饱汉模式

2017-11-14 14:41:59 382

原创 同一台电脑教你配置多个Tomcat的环境变量

装两个tomcat 分别是6.0和7.0 可想运行tomcat6.0 但是实际上却运行tomcat7.0 两个版本都是用解压缩包 其实就是不能运行tomcat6.0 只能运行7.0 两个环境变量都配置了。端口也改了 还是不行我遇到这种情况了,不知大家遇到没有,如下是我的解决方法: 当第一个tomcat启动后,后面tomcat的server.xml中的端口不管怎么改,仍然会报端口冲突。后来

2017-11-13 20:25:32 7958 3

原创 浅谈Java中的反射机制以及Class、Constructor、Field、Method简单框架原理

"font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">------"http://www.itheima.com" target="blank" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb

2017-11-02 13:01:42 820

原创 Java中io流的一些简单操作(包含文件复制,向硬盘中写入文本文件,以及io流高级应用序列化和反序列化)

package cn.io.demo;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream;import org.junit.Test;import cn.io.entity.Stud

2017-10-30 17:17:45 429

原创 深入分析Java规范中JVM的内存布局模型

Java是一门结合了编译执行与解释执行的语言。首先,Java编译器把Java源码编译成Java字节码(byte-code),然后,Java字节码在Java虚拟机(JVM)上解释执行。实际上,Java虚拟机在执行Java代码的过程中,会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时机,有些区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立

2017-10-21 16:31:54 509 1

原创 Java Web 简单的分页显示实例代码

这篇文章主要介绍了Java Web 简单的分页显示实例代码的相关资料,本文通过,计算总的页数和查询指定页数据两个方法实现分页效果,非常不错,具有参考借鉴价值,需要的朋友可以参考下本文通过两个方法:(1)计算总的页数。 (2)查询指定页数据,实现简单的分页效果。思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JS

2017-10-10 19:59:15 1447

转载 Java 泛型的本质:类型擦除与边界通配符

类型擦除的意思是:当你写 List<String>、List<Integer> 这样的泛型代码时,编译器在生成字节码之前,会把所有类型参数替换成它们的边界(默认是 Object),然后在需要的地方插入强制类型转换。假设有一个父类 Animal 和子类 Dog,父类里有一个方法 List<Dog> getDogs(),子类重写这个方法时,类型擦除会把父类的方法变成 List getDogs(),而子类如果直接写 List<Dog> getDogs(),在 JVM 看来两个方法的签名就一样了,不构成重写关系。

2026-04-16 20:31:07 5

转载 彻底搞懂 equals() 和 hashCode() 的契约关系

假设你把两个内容相同的User对象put进HashMap,由于它们的hashCode不同(Object默认用内存地址计算),HashMap会把它们放到不同的桶里。下次写实体类时,别偷懒,两个方法一起生成。如果两个对象通过equals()比较相等,那么它们的hashCode()必须返回相同的值。如果对象放入HashMap后,修改了参与hashCode计算的字段,它的哈希值会变,导致再也找不到这个key。哈希表的工作原理是:先通过hashCode确定桶的位置,如果桶里有多个元素,再用equals逐个比较。

2026-04-13 20:39:16 28

转载 Java异常体系:Checked vs Unchecked 的设计哲学

Error 代表 JVM 层面的严重错误,比如 StackOverflowError 和 OutOfMemoryError,这类问题程序员基本无能为力,程序能做的最多就是感知到并优雅退出,通常不推荐捕获。这类异常代表「预期内的异常路径」,调用者有明确的应对策略,强制处理是合理的。Java 的 Checked Exception 是语言设计史上一个大胆的实验,出发点是好的——希望强制开发者正视错误、不能忽略。但在实践中,它的局限性也很明显:过度强制导致开发者绕过它,破坏封装,影响代码的可维护性。

2026-04-11 20:30:55 10

转载 Stream API 原理:惰性求值与并行流陷阱

比如你写 list.stream().filter(x -> x > 0).filter(x -> x % 2 == 0),两次 filter 会导致 Pipeline 中有多个 Stage,虽然惰性机制保证元素不会多次遍历整个操作链,但每次 filter 都会产生一个新的中间对象,有一定的内存和调用开销。更重要的是,Stream 的中间操作是惰性的。并行流还要求操作是无状态的。如果你在 forEach 中修改共享变量,并行流下的行为是未定义的——元素处理的顺序完全不确定,共享变量的值也会出现竞态条件。

2026-04-10 20:31:32 12

转载 Lambda 与函数式接口:不只是语法糖

建议在复杂的 Lambda 中加入适当的日志,或者把复杂 Lambda 提取为普通方法再用方法引用。Java 选择了一种安全的实现方式:Lambda 捕获的是变量的副本,而不是引用。真正影响性能的是 Lambda 内部的逻辑,而不是 Lambda 本身。Lambda 的优势是简洁,太长的 Lambda 反而降低可读性。记住,Lambda 是为了表达简单的行为,不是用来写复杂逻辑的。理解函数式接口的本质、Lambda 的实现机制、闭包的限制、以及适用的场景,才能用好这个强大的特性。

2026-04-09 20:30:22 13

转载 注解的本质:从定义到运行时解析全流程

理解注解的生命周期(SOURCE/CLASS/RUNTIME)、元注解的作用(@Retention/@Target/@Inherited/@Documented),以及运行时通过反射读取注解的机制,是深入理解 Spring、MyBatis 等主流框架的基础。当编译器处理带有注解的代码时,注解信息会被写入 .class 文件的特定属性区域。注解的成员方法:注解中定义的方法称为"成员",它们没有参数,没有方法体,返回类型只能是基本类型、String、Class、枚举、注解,或这些类型的数组。

2026-04-07 20:34:42 13

转载 Java 反射机制:原理、性能代价与最佳实践

正常情况下,我们写代码时就知道要调用的类和方法,但有了反射,可以在运行时才决定要操作哪个类、哪个方法,甚至可以绕过访问修饰符的限制。JVM 的即时编译器会对热点代码做优化,但反射调用的代码模式不固定,难以被 JIT 识别并优化,所以即使代码运行了很久,性能也可能不如普通方法调用。第一次通过 Class.forName() 加载类时,JVM 要进行类的加载、验证、准备、解析、初始化等步骤,这是一次性的开销,但不可忽视。通过反射获取方法对象后,可以绕过编译期检查,直接在运行时调用任意方法,包括私有方法。

2026-04-05 20:30:38 11

转载 Iterator 与 fail-fast 机制:你不知道的细节

它的迭代器遍历的是创建迭代器时的快照,所以遍历过程中其他线程的修改不会影响当前遍历,也不会抛 ConcurrentModificationException。先用 iterator 找到要删除的元素,然后调用 iterator.remove(),这样 modCount 和 expectedModCount 会保持同步,不会触发 fail-fast。第二,如果要按条件删除多个元素,强烈推荐使用 removeIf() 方法,这是 JDK 8 引入的,底层帮你处理了 Iterator 的正确使用方式。

2026-04-02 20:30:15 15

转载 ArrayList vs LinkedList:不只是数据结构的区别

实际上,只有在已经持有目标节点引用的情况下(比如通过迭代器遍历时),LinkedList 的删除操作才是真正 O(1) 的。对于 ArrayList,查找是 O(1),但插入需要移动后续元素,是 O(n)。ArrayList 的底层数组在内存中是连续的,访问一个元素时,相邻的元素也会被加载到缓存中。因为数组的内存是连续的,给定索引 i,可以直接计算出元素的内存地址:基地址 + i 乘以 元素大小。实际测试表明,顺序遍历相同数量的元素,ArrayList 的速度可能是 LinkedList 的数倍。

2026-04-01 20:30:21 16

转载 ConcurrentHashMap 为什么比 HashMap 安全?

ConcurrentHashMap 通过 CAS + synchronized 的组合,将锁粒度细化到单个桶,读操作完全不加锁,写操作只锁单个桶,在保证线程安全的同时实现了高并发性能。两个线程同时执行 put 操作,如果两个 key 的 hash 值相同,都判断该位置为空,然后都往同一个位置写入,后写入的会覆盖先写入的,导致数据丢失。HashMap 的 size 字段没有任何同步保护,多线程并发 put 时,size 的自增操作不是原子的,最终 size 的值会比实际元素数量少。

2026-03-31 21:03:29 14

原创 HashMap 源码深度解析:从数组+链表到红黑树

之所以选择 8 而不是更小的数字,是因为红黑树虽然查询效率高(O(log n)),但它的节点占用内存是普通链表节点的两倍,而且维护树结构(旋转、变色)也有额外开销。这就是链表的基础结构。两个线程同时执行 put 操作,如果它们的 key 映射到同一个桶,且桶为空,两个线程都判断桶为空并各自创建节点,最终只有一个节点会被保留,另一个被覆盖,导致数据丢失。JDK 8 在这里做了一个巧妙的优化:由于容量是 2 的幂次,扩容后每个元素的新桶位置只有两种可能——要么保持原位,要么移动到"原位置 + 旧容量"的位置。

2026-03-29 20:31:05 563

转载 深拷贝 vs 浅拷贝,你踩过这个坑吗?

这样 person.clone() 得到的新对象,基本类型字段是独立的,但 Address 对象是共享的。浅拷贝之后,两个 Person 对象的 name 是独立的,但 address 字段指向同一个 Address 对象。如果要深拷贝数组,可以使用 Arrays.copyOf() 或 System.arraycopy(),但这两个方法对于对象数组来说也只是浅拷贝(只复制了引用)。当你复制一个对象时,只复制了对象本身的基本类型字段,而对于引用类型字段,只复制了引用地址,并没有复制引用指向的对象本身。

2026-03-28 20:31:16 18

转载 求求你别再手动部署jar包了,太low了!动态上传热部署真的太爽了!

如果用户上传的jar包含了spring的上下文,那么就需要扫描jar包里的所有需要注入spring容器的bean,注册到当前系统的spring容器中。接下来系统要把上传的jar包加载到当前线程的类加载器中,然后通过完整类名,加载得到该实现的Class对象。近期开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传到系统中。考虑到用户实现接口的两种方式,使用spring上下文管理的方式,或者不依赖spring管理的方式,这里称它们为注解方式和反射方式。

2026-03-27 20:31:48 20

转载 再见 Maven!

mvnd的守护进程能够在构建之间保持活跃,减少了资源的浪费,特别是在持续集成/持续部署(CI/CD)环境中,频繁的构建会更加受益于此优化。Maven 的缺点是,对于大一点的项目来说,构建太慢了。,是Apache Maven团队借鉴了Gradle和Takari的优点,衍生出来的更快的构建工具,maven的强化版,解决Maven构建慢的问题,又不需要重新学习,懂Maven你就能驾驭。旨在提供一个更高效、更快速的构建体验,同时保持与现有Maven工作流的兼容性,从而为开发团队带来更高的生产力和更快的迭代速度。

2026-03-26 21:33:53 12

转载 Java 小白到高手:一篇吃透语法、集合、并发、Web 全流程!

今天这篇内容,就是把 Java 学习路线拆成四个阶段,从语法基础 → 集合 → 并发 → Web,把你带到能独立做项目的程度。,覆盖了 Java技术、面试题精选、操作系统基础知识、计算机基础知识、Linux教程、计算机网络等等。学到这里,你已经能写“程序”,而 Web 阶段则能让你写“产品”。掌握到这里,你已经可以写结构清晰的 Java 小程序了。至此,一个可运行的 Java Web 后端就完成了。第四阶段:Web 开发(Java 最闪亮的地方)掌握集合,你就能写 90% 的业务逻辑。

2026-03-25 21:23:29 9

转载 String、StringBuilder、StringBuffer 的本质区别

a == b 结果是 true(常量池复用),a == c 结果是 false(new 在堆上创建新对象),a.equals(c) 结果是 true。StringBuffer 比 StringBuilder 早出现,API 几乎一模一样,最大的区别是所有方法都加了 synchronized 关键字,保证多线程安全,但也带来了性能开销。你以为是在修改 s,实际上是创建了一个新的 String 对象 "hello world",然后让 s 指向这个新对象。底层也是 char 数组,但这个数组是可变的。

2026-03-25 21:23:29 11

程序员表白用源码 HTML5(炫酷效果)

炫酷HTML特效, 可以拿去表白用, 说不定就被你的炫酷代码技术给感动了呢

2019-01-08

mymusic.rar

在最新版的Chrome浏览器(以及所有以Chromium为内核的浏览器)中,已不再允许自动播放音频和视频。(Google的某些做法还真是令开发者不爽)。就算你为video或audio标签设置了autoplay属性也一样不能自动播放。 今天从另外一个角度重新思考; 打开页面后通过单击页面任意空白处来触发播放

2020-12-17

hamcrest-core-1.3.jar

使用junit4.13作单元测试报 “ java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing “ 异常完美解决方案 !! 需要导入hamcrest-core-1.3.jar 这个jar包, 注意jar包版本是1.3 大家下载下来后直接使用解压缩软件 右键解压即可使用

2020-12-28

ssh框架 + bootstrap + mysql 公司员工信息管理系统,完整版

本套企业员工管理系统虽然没有达到真正企业级的那种大型项目的架构模式,但里面使用的都是现在比较主流的Java开发技术,SSH框架在里面都有用到,对自己检测在框架学习这块不尽可以起到检测好加强练习的作用,更能帮助大家从深层次的去理解框架的原理,大家都知道,原理理解透彻了,一切都好说,当然对于那快毕业的学生或实习生作为自己的毕业项目设计也是十分合适的,希望对你有帮助,感谢大家的支持!!!

2017-10-12

java报表技术实例

JasperReports报表技术实例代码, 这个的重要性想必参加过开发的朋友都知道其重要性了, 很常见很实用的一项技术

2019-01-08

非maven项目ssm项目需要的jar包集合

在进行实际项目开发过程中, 如果你的项目没有使用maven, 那么是需要自己手动的导入jar包的 , 先小编将spring 、springmvc、mybatis整合需要的jar包进行上传分享

2020-12-15

springboot整合mybatis完整版代码示例

springboot整合mybatis示例 , 传统的spring 整合mybatis大家都知道光配置文件就很复杂, 繁琐, 有一个地方编写有问题, 整个项目就会跑不起来, 总而言之就是各自配置过于繁琐, 但是sprintboot就不一样了, 直接集成了好多spring的东西, 无需编写传统的spring配置文件, 就能很轻松方便的把项目跑起来, 提高了开发效率, 整个过程变得十分高效简洁, 使用起来那叫一个让人轻松愉悦, 哈哈哈

2020-12-15

quickui-free_4.0.6 去水印js

quickui-free_4.0.6免费版去水印 去授权js~~quickui-free_4.0.6免费版去水印 去授权js 亲测可用

2019-03-13

node-v6.9.2-x64.msi

支持windows7系统的node.js,小编亲自测试好用, 可用

2021-04-09

Redis-x64-3.2.100.msi

redis 3.2.100 针对window系统64位 安装包 redis 3.2.100 针对window系统64位 安装包 redis 3.2.100 针对window系统64位 安装包

2020-12-16

springboot全面整合mybatis

我们都知道传统的spring整合mybatis , springmvc过程稍显负责, 特别是配置文件编写有一个步骤弄错就会导致整个项目都跑不起来, 有springboot后, 整合mybatis整个过程就变得十分的轻松和愉悦了

2020-12-02

javascript判断浏览器类型

简单的一二十代码, 就可以判断出当前所有浏览器的类型, 支持的浏览器也有很多,感谢支持

2018-04-03

使用javaScript或jquery实现页面时钟走动效果(包含秒表计时), 和系统时间同步

使用简单的十行左右代码就可以实现html页面计时效果, 同系统时间同步, 并带有秒表实时走动效果哦,感谢大家的支持

2018-04-03

搭建spring 框架第一个案例所需jar包.rar

搭建spring 框架第一个案例所需jar包

2020-05-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除