![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 67
ZeroMaster
编码一时爽,重构火葬场
展开
-
Java中容易忽视的一些小技术(持续更新)
我们在开发的时候会遇到一些问题,比如前端传入的是user_name,但是后端在写JavaBean的时候会用驼峰法写成userName。Access.AUTO:自动确定,一般是和第三个一样,啥情况不一样我也不清楚,如果不写access,默认就是这个。Access.READ_ONLY:只在反序列化时使用,类似于@JsonAlias注解。Access.READ_WRITE:在序列化和反序列化都使用修改后字段。Access.WRITE_ONLY:只在序列化时使用修改后的字段。1:@JsonProperty注解。原创 2023-07-14 15:17:02 · 210 阅读 · 0 评论 -
JAVA导出txt文件
我们在开发的时候会遇到各种导出文件的情况,有的需要导出excelJAVA导出EXCEL通用型JAVA导出EXCEL定制型但是有的需要导出txt文件。txt文件如何操作呢。首先有导出txt方法,如下,其中text就是需要导出的内容/* 导出txt文件 * @author * @param response * @param text 导出的字符串 * @return */ public void exportTxt(Htt原创 2022-03-16 14:47:39 · 7918 阅读 · 1 评论 -
Java基础知识易混淆知识点总结
一:continue、break 和 return 的区别是什么在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词:continue:指跳出当前的这一次循环,继续下一次循环。 break:指跳出整个循环体,继续执行循环下面的语句。return用于跳出所在方法,结束该方法的运行。return 一般有两种用法:return;:直接使用 return 结束方法执行,用于没....原创 2022-03-08 17:43:30 · 365 阅读 · 0 评论 -
Java多线程三(线程池执行完后再执行主线程)CountDownLatch
我们在开发多线程的时候,有两种情况 一种是我们处理好后,不用管结果。比如我需要查询某些数据然后存在数据库里。还有一种就是查询好数据(通过线程池),然后导出数据。这个就比较麻烦。因为我们要将数据通过多线程处理后,返回一个统一的结果。(由于多线程是在不同的时候执行数据),假如执行线程池后,在执行主线程,这就涉及到线程优先级。所以会比较蛮烦。import java.util.*;import java.util.concurrent.CountDownLatch;public class Te...原创 2022-01-13 14:44:11 · 5655 阅读 · 4 评论 -
JAVA导出EXCEL定制型
我们在JAVA导出EXCEL通用型中导出的是通用型的excel。只要是普通类型的都可以用上面的方法。但是一些特别的,需要合并单元格的话通用型的就不可以用了。所以需要我们做特别处理。我们接下来就说下。1先创建工作簿HSSFWorkbook workbook = new HSSFWorkbook();2:准备需要合并的单元格。如果没有合并操作的不用管。//起始行,结束行,起始列,结束列CellRangeAddress callRangeAddress = new CellR...原创 2021-12-22 15:55:33 · 852 阅读 · 0 评论 -
海报合成技术
我们有的时候营销的时候,需要把给每一位用户生成单独的海报。比如微信营销的时候,需要给每一个用户单独生成。这个时候,需要把用户昵称和头像放到海报里。这个如何开发呢?下面我们介绍下。先给背景图片中添加头像,并且根据位置和长宽等。确定位置。接着把文字添加进去,核心代码如下:/** * 把两张图片合并 */public class QrPicUtil { private static Logger logger = LoggerFactory.getLogger(QrPicU原创 2021-09-03 09:47:59 · 136 阅读 · 0 评论 -
java开发的时候遇到服务器时间不一致的一个坑
最近在开发项目的时候,发现一个问题。在我测试环境存入的时间,都是当前时间。但是我到服务器上的时候时间怎么都不对。有相差13个小时,相差1个小时等等。这种问题我们应该如何排查。第一步:确定数据库的日期是否是正常的。1:查看数据库当前时间是否正确 select DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') from dual;2:确定数据库版本select VERSION() from dual;3:查看当前数据库的时区show variabl原创 2021-03-16 17:38:05 · 1000 阅读 · 0 评论 -
java将一个url链接或者文字生成二维码并且转成base64
我们在开发的时候,肯定有这样的需求。把一个url链接转成二维码图片。提供给用户扫描,然后跳转到相应的页面。基本思路(前提:没有用统一的图片服务器如:fastdfs。)(1):把url链接转成图片保存。这样只需要提供图片的地址就行。(2):但是有的时候,需要提供base64图片流。这是因为,图片可能是在内网,不能通过ip转到外面。(3):当使用分布式服务器的时候,生成的图片的地址不一样,如果查找的时候,就不利于管理。这个时候,可以用不需要生成图片的方式。解决第一个思路:(1):需.原创 2021-02-25 14:07:58 · 2703 阅读 · 1 评论 -
java模式之工厂模式
一:为什么用工厂模式文件IO的操作我们会经常用得到吧,所以BufferedReader对象经常要创建的: // 创建一个BufferedReader对象 BufferedReader bf = new BufferedReader(new FileReader(new File("aa.txt")));你说麻烦吗?其实也不麻烦,就一行代码嘛,哪里麻烦了~如果不太熟悉IO流的同学就没有那么机灵了,创建一个BufferedReader可能就是以下的代码了: Fi...原创 2021-07-24 15:39:58 · 95 阅读 · 1 评论 -
Java常用设计模式之单例模式
一:什么是单例模式单例模式定义很简单:一个类中能创建一个实例,所以称之为单例!那我们什么时候会用到单例模式呢?? 那我们想想既然一个类中只能创建一个实例了,那么可以说这是跟类的状态与对象无关的了。 频繁创建对象、管理对象是一件耗费资源的事,我们只需要创建一个对象来用就足够了! 学过Java Web的同学可能就知道: Servlet是单例的 Struts2是多例的 SpringMVC是单例的 那既然多例是频繁创建对象、需要管理对象的,那Struts2为原创 2020-05-27 11:09:27 · 119 阅读 · 0 评论 -
Java常用设计模式之装饰者模式
在我们进行Java开发的时候,很多时候我们可能对Java提供给我们的对象不满意,不能满足我们的功能。此时我们就想对Java原对象进行增强,能够实现我们想要的功能就好。一般来说,实现对象增强有三种方式: 继承 继承父类,子类扩展 装饰器模式 使用“包装”的方式来增强对象 代理模式 代理模式 一:继承最简单的方式就是继承父类,子类扩展来达到目的。虽然简单,但是这种方式的缺陷非常大: 一、如果父类是带有数据、信息、属性的.原创 2020-05-27 10:40:44 · 130 阅读 · 0 评论 -
Java常用设计模式之代理模式
一:代理模式概念所以说代理模式就是:当前对象不愿意干的,没法干的东西委托给别的对象来做,我只要做好本分的东西就好了!什么情况下使用呢:其实只要记住一点:原有的对象需要额外的功能,想想动态代理这项技术!下面就以,程序员写代码为例来说。二:代码描述代理模式1:静态代理模式(1):一个接口,程序员每天写代码public interface Programmer { void coding();}(2):JavaProgrammer也是一个程序员,他也写代码(每个.原创 2020-05-27 09:23:02 · 171 阅读 · 0 评论 -
Java常用设计模式之观察者模式
一:什么是观察者模式在java开发的时候,随着经验的不断扩展,越来越感觉到设计模式真的很重要,如果你对设计模式不是很熟悉读spring等框架的源代码的时候是非常困难。接下来我们讲述下观察者模式当一个对象发生改变时候,自动通知其他对象作出相关动作。当一个事件发生时候,自动触发依赖这个事件的其他事件。这就是观察者模式要做的事情。举例:当一个开通会员的订单支付完成之后(第三方支付回调过来了),需要更改订单的支付状态、给用户开通会员、如果有分销的逻辑还要触发分润逻辑、给用户开通其他会员附属权益。原创 2020-05-26 09:48:22 · 268 阅读 · 0 评论 -
Java基础知识八之容器
Java基础知识中有一个很重要知识点,那就是容器。在Jdk中主要的容器是Collection容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。接下来就详细介绍下。1. Set TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 Hash...原创 2020-05-03 16:14:37 · 149 阅读 · 0 评论 -
Java基础知识总结六之面向对象的特征
Java这种面向对象的特征,他们的三大特征是:封装,继承和多态。一:封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。在java中能使用private、protected、public三种修饰符或不用(即默认defalut)对外部对象访问该对象的属性和行为进行限制。二:继承是子对象可以继承父对象的属性...原创 2020-04-26 10:01:39 · 125 阅读 · 0 评论 -
Java基础知识总结五之重载和重写的区别
java的三个特性:封装,集成和多态。而重载和重写就是体现其多态的特写。一:重写(Override):从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就...原创 2020-04-26 09:49:53 · 129 阅读 · 0 评论 -
Java基础知识总结四之Http请求的GET和POST方式的区别
GET和POST本质上就是TCP链接,并无差别,在TCP/IP协议中,TCP的可靠稳定的,不想UDP那些是尽最大努力完成的。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。长的说:对于GET方式的请求,浏览器会把http header和da...原创 2020-04-26 09:40:49 · 217 阅读 · 0 评论 -
Java基础知识三之反射
对于反射机制,估计很多程序员不是太关注,当然除了一些搭架构的除外。如果你想更深入的了解框架,反射是必不可少的知识点。一:什么是反射程序中一般的对象类型都是在编译期就确定下来的,而Java 反射机制可以动态的创建对象并调用其属性,这样对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象即使这个对象在编译期是未知的,反射的核心:是 JVM 在运行时 才动态加载的类或调用方法或属性...原创 2020-04-26 09:24:42 · 125 阅读 · 0 评论 -
java基础知识总结二java虚拟机以及虚拟机调优
我们在学习java的时候,离不开java虚拟机,所以了解Java虚拟机在后来的开发,寻找BUG的时候非常有用。并且对于代码调优也非常实用。一:Java虚拟机结构1:结构。线程私有的:程序计数器 虚拟机栈 本地方法栈线程共享的:堆 方法区 直接内存 (非运行时数据区的一部分)2:介绍(1):程序计数器序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节...原创 2020-04-16 15:48:12 · 155 阅读 · 0 评论 -
SpringBoot注解说明超详细
在说Aspect之前,先要了解下Spring AOP功能,Spring AOP面向切面编程,可以用来配置事务、做日志、权限验证、在用户请求时做一些处理等等。用@Aspect做一个切面,就可以直接实现。1.首先定义一个切面类,加上@Component @Aspect这两个注解...原创 2020-03-11 18:25:30 · 634 阅读 · 0 评论 -
Java疑点难点
1:正确使用 equals 方法Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。// 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常String str = null;if (str.equals("SnailClimb")) { ...} else { ..}运行上面的程序会抛出空指...原创 2019-11-15 11:52:55 · 147 阅读 · 0 评论 -
Mysql中视图的使用
我们了解了一些实用的sql语句,但是视图是不能不说的一个方面。视图的用法说明mysql视图的作用(详细)测试表:user有id,name,age,sex字段测试表:goods有id,name,price字段测试表:ug有id,userid,goodsid字段视图的作用实在是太强大了,以下是我体验过的好处:作用一:提高了重用性,就像一个函数。如果要频繁...原创 2019-04-17 10:29:43 · 4775 阅读 · 0 评论 -
java中excel的读取操作
在很多时候,需要批量上传excel文件里的内容,这个时候就需要相应的操作。但是excel有两种,一种xls,另外一种xlsx。(1):首先引入jar包。主要引入maven的内容如下: net.sourceforge.jexcelapi jxl 2.6.10 org.apache.poi poi 3.9原创 2018-03-01 09:15:49 · 578 阅读 · 0 评论 -
Java基础之面向切面编程@Aspect
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。在s...原创 2019-09-11 11:11:20 · 2962 阅读 · 0 评论 -
java实现两张图片合并起来。
在实际业务中我们需要把两个图片合并起来的情况,有的图片是从本地获得,有的是通过图片地址(url)获得。所以能提供一个好的方法,十分重要。下面推荐一个好用的图片合并工具。代码如下:import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImag...原创 2018-12-24 10:09:26 · 5400 阅读 · 1 评论 -
Java生成条形码
在Java中我们有的时候需要生成条形码用于实际的业务中。首先需要从maven库中获取jar包<!-- https://mvnrepository.com/artifact/net.sf.barcode4j/barcode4j-light --><dependency> <groupId>net.sf.barcode4j</groupId&...原创 2018-12-24 10:06:07 · 594 阅读 · 0 评论 -
Java中将网上的png,jpg等存储在图片服务器中并且转成pdf,并且返回相应的url地址。
通常在开发的时候,我们会遇到图片上传的功能,特别是有很多是提供url地址的方式。所以需要提供一个将url的图片等存储起来,然后提供一个我们自己的地址给用户使用。第一步:提供pdfbox的jar包。准备相应的maven <dependency> <groupId>org.apache.pdfbox</groupId>...原创 2018-08-27 13:58:10 · 2194 阅读 · 1 评论 -
java中将数据库文件的导出
很多时候,我们会遇到报表的导出,这是开发中很平常的功能,下面我们通过代码的方式试下。(1):导入jar包<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7&...原创 2018-07-13 15:16:22 · 654 阅读 · 0 评论 -
Java基础知识九之枚举
java中枚举有六种用法:第一种:定义常量:publicenumColor{RED,GREEN,BLANK,YELLOW}第二种:用于switch的方法:enumSignal{GREEN,YELLOW,RED}publicclassTrafficLight{Signalcolor=Signal.RED;pu...原创 2018-04-16 10:49:34 · 174 阅读 · 0 评论 -
在页面中的数据导出excel操作
在现在的很多开发中,为了方便很多需求就是把excel的内容通过上传的方式导入到数据库中。接下来主要讲述该功能的开发步骤。第一部分:导出(1):在页面中添加 如下代码: <!-- 导出 --> <iframe id="dataExportIframe" src="" width="0" height="0" style="display: none">&原创 2018-03-08 16:03:15 · 4406 阅读 · 0 评论 -
Http Status code说明
200 – 服务器成功返回网页 404 – 请求的网页不存在 503 – 服务不可用 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。代码 说明 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。2xx原创 2017-10-17 11:09:15 · 290 阅读 · 0 评论 -
35 个 Java 代码性能优化总结
http://blog.csdn.net/qq_37267015/article/details/78105381转载 2017-09-27 15:48:52 · 168 阅读 · 0 评论 -
Hibernate的注解开发中各个注解的含义
在SSH开发中我们通常使用HIbernate进行数据层的开发,Hibernate通常有两种开发一种是xml的方式,一种是注解开发的方式,下面我们将详细的阐述Hibernate的注解开发中各个注解的含义。 1:类级别的注解 (1) @Entity 这个是代表注册实体类的,就是我们建立的符合javaBean规范的实体类。 (2) @Embeddable 这个是用来标明原创 2017-09-26 09:54:08 · 1664 阅读 · 0 评论 -
java中解决高并发的问题
在我们开发过程中,当交易量过大或者线程过多的时候我们通常需要关注的是防止一个事情(订单)多次做的情况。这个时候我们就需要处理这种高并发的情况。处理这种情况有很多方法,其中最简单的方法是synchronized和Map想结合的方法。1:在class类中添加一个Map存储存在的数据:private static final Map<String, Boolean> ORDER_L...原创 2019-02-26 09:32:53 · 648 阅读 · 0 评论 -
JVM相关知识
对于java开发,我们必须了解JVM的结构以及运行机制,这样我们才能在开发中能够深入的了解JVM的原理并且更好的开发。接下来我们将讲述JVM的结构以及GC的机制1:JVM的结构JVM主要有如下结构,类加载器,内存区域,执行引擎,本地方法接口(1).类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件到JVM的整个...原创 2019-03-26 17:22:58 · 340 阅读 · 0 评论 -
基于Gradle生成jar包环境的系统配置与发布
在IDEA中用gradle开发的java项目,想打成jar包。需要注意如下:第一步:打包第一种方式:通过界面打包就是在idea中直接打包,在IDEA中的gradle project面栏里打包第二种方式:通过dos打包:进入到项目中。比如“xx项目”的code中然后执行:gradle :+java最终项目(不死ui)gradle :server:build -x test -...原创 2019-08-02 08:31:55 · 752 阅读 · 0 评论 -
如何给List排序。
我们在查询的时候有的时候获得了一个LIst<T>,T中有时间createTime,我们现在想不通过数据库的方式,把这个list按照时间降序重新获得一个LIst<T>,方法如下: Collections.sort(T, new Comparator<T>() { public int compare(To1, To2) { ...原创 2019-07-01 17:39:47 · 1415 阅读 · 0 评论 -
使用gradle创建Java项目
一:为什么我们使用gradle,而不使用maven在Maven和Gradle使用上,碰到的问题是引入本地jar包,Gradle一行代码就搞定了,而Maven相当麻烦,得一个个引入,没有找到批量引入的方法。二:gradle的说明1. settings.gradle位于项目根目录,用于指示 Gradle 在构建应用时应将哪些模块包括在内。rootProject.name = 'j...原创 2019-05-24 13:54:21 · 445 阅读 · 0 评论 -
java中的异常,Spring中Transactional说明以及@Aysc的使用
我们在开发的时候,当代码出现异常,首先会想到事物回滚机制,在之前的工作中没有认真学习,导致遇到很多坑,现在记录下来并且完善关于@Transactional事物的知识。首先我们需要了解一些关于异常的知识。程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设...原创 2019-04-17 10:13:08 · 967 阅读 · 0 评论 -
Java中对Map中的某个属性合并成List
import java.util.List;import java.util.Map;public class TEst { public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); for(int i=0;i<1...原创 2019-04-03 20:14:41 · 622 阅读 · 0 评论