![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java/JavaWeb
文章平均质量分 74
清风明月和我
清风明月,都是一个人的事情.....
展开
-
不小心写了个BUG,成功让项目组几个人都换了台新电脑
背景: 项目组接一个老项目,做二次开发工作。起因:客户经常收到服务器的监控告警,磁盘将在不久被写满。开始,我们自己去手动清理程序日志,但是磁盘还是越来越大;后来,又去排查有没有其他文件占用磁盘,于是发现,程序中操作临时文件,在操作后都没删除掉结果:最后写了定时任务,每天夜里来删除这些临时文件。影响:再后来,就有小伙伴发现自己的D盘文件都没了,像是被格式化一样,莫名D盘就没了。因为电脑有点老了,就开始怀疑自己电脑出问题了,于是几个人陆陆续续都新买了电脑。可是后来,接着又发生了几次,实在诡异原创 2021-08-05 11:30:50 · 344 阅读 · 0 评论 -
Jfinal实体类添加不属于表字段的属性,解决 The attribute name does not exist: xxx异常
异常信息:com.jfinal.plugin.activerecord.ActiveRecordException: The attribute name does not exist: XXX背景:在Jfinal框架中,实体类JavaBean需要和数据库表的字段绑定,使用注解@Table(tableName = "tableName", primaryKey = "OL_NBR"),来绑定数据库表,和主键。不需要写列字段属性,直接写setter,getter方法,其中set,get中字段对应表中.原创 2021-07-20 12:37:38 · 3169 阅读 · 3 评论 -
Java中String, StringBuffer,StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。private final char value[]; String 为不可变对象,一旦被创建,就不能修改它的值。对于已经存在的String对象的修改都是重新创建一个新的.原创 2020-11-30 09:44:14 · 112 阅读 · 0 评论 -
Java文件下载,提供前端页面下载、HttpClient接口下载
学习Java的文件上传/下载需要先明白一下几点:1、下载的资源,有两种:1)、本地文件:即项目运行时可访问的文件目录,比如,在本机Idea中运行一个 fileServer,那么fileServer 可访问的你电脑目录下文件做为下载资源;或者 fileServer 在服务器上运行,就是服务器上可访问的目录下文件资源。2)、远程文件:fileServer 运行的网络环境中 可访问的 Ftp/SFtp或其他服务接口中获取的文件字节码,I/O流等。2、下载方式: 就是谁来获取这些“下载文件”,.原创 2020-11-07 16:54:27 · 7111 阅读 · 5 评论 -
从SpringMvc中的登陆拦截到SpringBoot的登陆拦截
一、SpringMVC1、创建 登陆拦截类 AuthFilter 继承 Filter, 重写 doFilter 方法。package com.web.util;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java..原创 2020-10-24 10:39:53 · 182 阅读 · 0 评论 -
CentOS7上安装Docker,并在Docker运行一个SpringBoot项目
安装前可以参看官方文档获取最新的Docker支持情况,官方文档在这里:https://docs.docker.com/engine/install/一、安装Docker我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上,RHEL/Centos的内核修补过,centos6.5的版本就可以——这个可以试试)1,root账户登录,查看内核版本如下[root@localhost...原创 2020-08-17 11:40:46 · 365 阅读 · 0 评论 -
微服务框架中修改前端项目的部署方式Jar改成war+tomcat,给前端开发随时在服务器随时修改、调试
场景:现有一个项目微服务框架,其中包含一个注册中心:eureka-server.jar ,一个后台服务: xx-server.jar , 一个前段服务: xx-portal.jar问题:一个前端妹子找到我,给我说:他是做前端,他不想在他电脑运行源码(idea运行整个SpringCoud),而服务器上的前端服务启动的是一个Jar,他的H5页面修改完无法在服务上调试。我说,那你使用Fiddler可以本机调试呀, 但是他又说:PC的可以,可是移动端的问题怎么使用Fiddler调试?我想了想,也是。看她渴望的.原创 2020-08-15 10:07:13 · 552 阅读 · 0 评论 -
数组的复制,数组复制的三种方式
一、数组复制的三种方式 String[] a = {"1", "2", "3", "4", "5"}; // 方法一 // Arrays.copyOf() String[] b = Arrays.copyOf(a, a.length); System.out.println("Arrays.copyOf(): " + Arrays.toString(b)); // 方法二 // Objec原创 2020-08-04 09:57:06 · 3789 阅读 · 0 评论 -
Java对象的持久化,将对象入库保存以及取出转换成对象实例
一、对于一个简单的实体类而言,比如学生类,商品类,订单类等,他们的属性只包含简单类型属性,我们通常的做法是直接入库保存各个字段或直接保存一个JsonString字符串,取出时直接查询转换即可。1)比如查询出用户信息:public User getUser(String userId, String password) { try { final Object[] obj = new Object[]{userId, password};原创 2020-07-24 11:13:41 · 2364 阅读 · 0 评论 -
Java后台连接服务器执行Linux命令
一、命令执行工具类ShellUtil.javapackage com.web.util;import com.jcraft.jsch.*;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;import java.util.concurrent.ExecutorService;import java.util.co.原创 2020-07-20 14:04:20 · 763 阅读 · 0 评论 -
Java操作FTP报错MalformedServerReplyException: Could not parse response code. Server Reply: SSH-2.0-OpenS
解决:MalformedServerReplyException: Could not parse response code. Server Reply: SSH-2.0-OpenSSH 异常。场景:Java后台使用org.apache.commons.net.ftp.FTPClient 连接服务器,进行FTP操作 :上传/下载文件。异常:org.apache.commons.net.MalformedServerReplyException: Could not parse res原创 2020-06-08 11:49:15 · 23746 阅读 · 4 评论 -
SpringBoot获取application配置文件中参数的三种方式
方式一:使用@Value方式 @RestController public class WebController { @Value("${test.msg}") private String msg; @RequestMapping("/index1") public String index1(){ return "方式一:"+msg; } }方式二:使用Environm原创 2020-05-28 17:50:31 · 14751 阅读 · 0 评论 -
使用JdbcTemplate插入数据 并返回当前数据在数据库的自增长主键 id
/** * 插入数据库并返回id * @param sql 插入sql语句 // insert into t_sens_generator(name, type) VALUES(?,?) * @param agrs 参数数组 // new String[]{"Samuel", "0" } * @return */ public String insertAndReturnId(String sql, String[] agrs){...原创 2020-05-23 09:51:57 · 1399 阅读 · 0 评论 -
设计模式-抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。主要解决...原创 2019-10-23 10:09:30 · 137 阅读 · 0 评论 -
设计模式-简单工厂模式(Factory Pattern)
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。一、介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的...原创 2019-10-23 09:32:00 · 156 阅读 · 0 评论 -
把金额转换为中文汉字表示
/** * 把金额转换为汉字表示的数量,小数点后四舍五入保留两位 * @param amount * @return */public static String amountToChinese(double amount) { public String[] chineseDigits = new String[] { "零", "壹", "贰", "叁", "肆", "伍"...原创 2020-01-03 10:49:26 · 400 阅读 · 0 评论 -
项目中设计一个简洁优雅高效的全局异常处理(只需增加两个类)
你们有没有见过一个项目整个controller层每一个方法写一个try..catch来处理异常情况的,例如下面这种:不但如此,在业务层的操作也全都是 try...catch,异常全靠打印异常堆栈;这是我待过的第一家公司的代码。后来其实一直想重构一下,做一个全局的异常处理,但是害怕一改全是问题,心生恐惧,犹如下图(直到离职都没敢动手):下面写一个简洁优雅的全局异常捕获处理...原创 2020-01-02 12:22:02 · 698 阅读 · 0 评论 -
Java后台生成数据库主键id(使用UUID生成唯一id字段插入数据库)
前言我们开发的时候,数据库表总会有一个主键,以前我们可能会使用自增的数字作为主键。这样做确实查询的时候比较快,但是在做系统集成或者数据迁移的的时候就麻烦了。这是id就有可能重复了。那么有什么比较好的方法解决这一问题呢?于是jdk1.5出了UUID这个类来生成唯一的字符串标识。什么是UUID? UUID含义是通用唯一识别码 (Universally Un...转载 2019-12-30 10:44:48 · 2381 阅读 · 0 评论 -
Java中如何创建一个枚举Enum类
从jdk5出现了枚举类后,定义一些字典值可以使用枚举类型。枚举常用的方法是values():对枚举中的常量值进行遍历;valueof(String name) :根据名称获取枚举类中定义的常量值;要求字符串跟枚举的常量名必须一致;获取枚举类中的常量的名称使用枚举对象.name()枚举类中重写了toString()方法,返回的是枚举常量的名称;其实toString()和va...原创 2019-12-10 15:22:21 · 17159 阅读 · 0 评论 -
Java中通过Class类获取Class对象的三种方法
1、通过Class类名:将类名作为字符串传递给Class类中的静态方法forName Class c = Class.forName("com.etoak.mssm.emp.entity.Emp");2、类名.class 获取到字节码文件对象(任意数据类型都具备一个class静态属性)Class c = User.class;3、通过Object类的getObj...原创 2019-12-10 15:12:15 · 1561 阅读 · 0 评论 -
idea下使用 Maven构建一个Java Web项目(Maven Webapp)
开篇之前先讲讲什么是Maven:Maven 是Apache下的一个开源项目,它是一个创新的项目管理工具,它用于对Java项目进行项目构建、依赖管理及项目信息管理。总结一下:Maven是个项目管理工具。这个管理工具到底如何使用,有什么用呢?这个才是要说的。在没有maven之前,我们创建一个项目工程或开发中需要依赖某个Jar,都是去下载Jar然后粘贴到当前项目 lib中来,然后每个项目的 ...原创 2019-11-27 14:34:59 · 2151 阅读 · 0 评论 -
Ajax请求中url三种写法方式(Ajax请求路径问题,$.ajax中url携带当前页面路径原因)
一、绝对路径:包括协议名称、主机地址、端口、web项目名称等的完整请求路径。例如:$.ajax({ url:"http://localhost:8080/webname/test" }); 好处:比如在webA项目中的ajax需要请求webB项目中的服务,则必须使用绝对路径。 坏处:使用绝对路径要求不能更改web项目的名称,如果webB项目重命名了,则对应的ajax请求...原创 2019-06-03 11:01:24 · 65791 阅读 · 7 评论 -
MD5在不同平台(linux、win)加密结果不同【踩过的坑,一定要自己填上】
场景:项目中使用了md5加密算法,开发环境是macOS,测试一直都OK,在部署生产环境(windows系统)时一直加密验证不通过。MD5Util,代码如下: public static String getMD5String(String str) { try { // 生成一个MD5加密计算摘要 MessageDig...原创 2019-11-21 11:16:50 · 5488 阅读 · 1 评论 -
快速排序图解和代码实现(数据结构与算法)
目录一、快速排序介绍二、快速排序的算法思想三、快速排序的实现过程四、代码实现转载 2019-11-07 13:51:43 · 343 阅读 · 0 评论 -
设计模式-原型模式(Prototype Pattern)
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库...原创 2019-10-23 11:27:15 · 196 阅读 · 0 评论 -
设计模式-观察者模式(Observer Pattern)
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用...原创 2019-10-23 08:46:19 · 199 阅读 · 0 评论 -
设计模式-代理模式(Proxy Pattern)
一、解释:在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。二、介绍意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者...原创 2019-10-22 16:53:20 · 122 阅读 · 0 评论 -
Object类的子类
方法:registerNatives() //私有方法getClass() //返回此 Object 的运行类。hashCode() //用于获取对象的哈希值。equals(Object obj) //用于确认两个对象是否“相同”。clone() //创建并返回此对象的一个副本。toString() //返回该对象的字符串表示。 notify...原创 2019-10-21 10:24:39 · 1391 阅读 · 0 评论 -
abstract(抽象)修饰符,可以修饰类和方法
1,abstract修饰类会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。2,abstract修饰方法会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以”;”代替。需要子类继承实现(覆盖)。注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法...转载 2019-10-18 14:14:49 · 15290 阅读 · 0 评论 -
fastjson应用案例
fastJson包:放在百度网盘了链接:https://pan.baidu.com/s/1feqYLJ2Fz0YclvBLOxTxgQ 密码:hfq9package com.jerehedu.fastjson;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import...原创 2019-10-17 16:22:06 · 145 阅读 · 0 评论 -
使用CloseableHttpClient调用服务接口时参数如何传递(CloseableHttpClient参数传递方式)
给一个老项目新增功能接口时,发现前人们在项目中调用外部接口,每个地方都写了一遍CloseableHttpClient,如下代码片段重复了 二十几次。 String result = null; CloseableHttpClient httpClient = HttpClients.createDefault(); try { ...原创 2019-10-11 09:40:57 · 7023 阅读 · 0 评论 -
Java 后台使用 Jackson处理json字符串(Jackson处理json字符串、字符串数组)
代码:import java.io.IOException;import java.util.Iterator;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson...原创 2017-10-12 10:53:21 · 1135 阅读 · 1 评论 -
jsp界面上传附件到服务器的实例
1、描述:在一个web项目中上传附件。demo中使用的jar包 commons-fileupload-1.3.3.jar commons-httpclient-3.1.jar commons-io-2.0.1.jar。可以在源码中获取。下载地址:http://download.csdn.net/download/shenju2011/102158282、代码解释(1)、jsp界面原创 2018-01-20 17:50:51 · 1235 阅读 · 0 评论 -
Web项目前端公共参数以及页面间参数传递总结
一.前后端信息传递,如用户登陆信息;放在session中,在前端使用Jsp获取后,其他页面直接include可直接使用。 1、在controller层处理:将信息放到session中HttpSession session = request.getSession();// 查询出登陆信息User user = userLoginService.getUser(userId, pas...原创 2019-07-11 17:07:50 · 1597 阅读 · 0 评论 -
项目中读取properties文件中配置信息方法
properties文件放在src根目录下。代码如下:package com.web.util;import java.io.*;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import java.util.Properties;public class RestartE...原创 2019-07-12 10:21:23 · 456 阅读 · 0 评论 -
记一篇I/O流的操作、FTPClient使用、压缩流中ZipInputStream,ZipOutputStream对文件压缩解压操作、压缩文件目录存在中文报错的处理
package com.web.util;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPClientConfig;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp....原创 2019-07-30 15:01:02 · 1291 阅读 · 0 评论 -
JAVA程序和数据库的连接和交互操作
一、最原始的直接连接package com.java1234.util;import java.sql.Connection;import java.sql.DriverManager;public class DbUtil { private String dbUrl="jdbc:mysql://localhost:3306/bcm"; // 数据库连接地址 private ...原创 2019-07-22 11:33:21 · 2241 阅读 · 0 评论 -
SpringMVC框架Consoller层返回格式和@ResponseBody注解的使用
最近自己从零开始搭建工程的时候,发现前端调用conroller层接口,不加@ResponseBody,报404错误,调不到,只有加上@ResponseBody才能正常调用成功。 @ResponseBody官网是这样解释的:Mapping the response body with the @ResponseBody annotationThe @ResponseBody annot...原创 2019-07-31 15:33:42 · 1105 阅读 · 0 评论 -
springmvc:一种资源返回多种形式【ContentNegotiatingViewResolver】
restful服务中一个重要的特性就是一种资源可以有多种表现形式,在springmvc中可以使用ContentNegotiatingViewResolver这个视图解析器来实现这种方式。描述资源的三种形式 一、使用扩展名http://localhost:8080/test/user.xml 以xml格式呈现http://localhost:8080/test/user.j...原创 2019-07-31 16:25:06 · 192 阅读 · 0 评论 -
BigDecimal运算
package BigDecimal;import java.math.BigDecimal;public class YunSuan { /*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubBigDecimal a = new B...原创 2016-08-18 17:27:05 · 245 阅读 · 0 评论