- 博客(54)
- 资源 (1)
- 收藏
- 关注
原创 try(FileInputStream fileInputStream = new FileInputStream(filePath))可不用finally
try catch FileInputStream
2023-03-06 14:31:47 921
原创 Git相关操作
git操作记录下,以备使用1.代码提交到远程仓库,但是被abandoned,回退到某个版本并保留本地工作空间修改 :git reset XXX(commit的id);
2020-06-19 14:15:32 357
原创 解决request请求流只能读取一次的问题
解决request请求流只能读取一次的问题实际开发碰到的问题解决request请求流中的数据二次或多次使用问题实际开发碰到的问题springboot项目中,为了防止sql注入,采用Filter拦截器对所有请求流中的json数据进行校验,请求数据没问题则继续向下执行,在后边的代码中应用到请求参数值时,发现request中的json数据为空;除上边描述的情况,尝试过两次从request中获取json数据,第二次同样是获取不到的。解决request请求流中的数据二次或多次使用问题继承HttpServle
2020-06-19 11:46:52 1258
原创 maven中jar包版本选择
下面用spring各jar包版本举例先来认识一下版本号的完整含义第一个数字:主版本,有可能进行大的架构调整,各大版本之间并不一定兼容第二个数字:次版本,在主版本架构不变的前提下,增加了一些新的特性或变化第三个数字:增量版本,bug修复,细节的完善M:里程碑版本,测试版本,发布版本的前兆RC:候选发布版本,稳定版本,并不一定会发布RELEASE: 发布版本,稳定版本,在项目中真正可用的...
2020-02-19 14:06:29 2043
原创 java,Hash冲突及解决办法
Hash冲突:理解Hash冲突前,先了解一下Hash函数哈希函数数据元素的存储地址,是根据数据的关键字K通过一定的函数关系计算得出,这个函数关系即称哈希函数。Hash冲突就是,不同的数据元素关键字K,计算出的哈希值相同,此时两个或多个数据,对应同一个存储地址,即产生冲突。Hash冲突解决办法:开放定址法再哈希法链地址法建立公共溢出区开放定址法使用某种探测算法在散列表中...
2020-01-15 16:51:56 1293
原创 java跳出多层循环
开发中,碰到了多层循环,需要直接跳出多层循环for(int i = 0; i < 10; i++){ for(int j = 0; j < 5; j++){ if(j == 2){ //跳出多层循环,进入外部程序 } }}此时发现,使用break,continue只能跳出一层循环,但是跳不到循环的外边。此时有两种解决办法:方法一:使用标识(推荐)for(...
2020-01-15 15:39:40 250
原创 java,jdk8,LocalDateTime,LocalDate,LocalTime
java,API时间日期,新老对比在java8以前:有关时间日期的操作,Date;日期、月份、天数相加减时,Calendar;时间日期进行格式化时,SimpleDateFormat,DateFormath或其他子类。缺点: 这些有关的时间日期操作对象,都是可变的、线程不安全的,代码繁琐,性能低。java8提供新的时间日期操作:LocalDate : 只含年月日的日期对象;Local...
2020-01-09 16:08:13 406
原创 java,SimpleDateFormat(jdk1.7)线程不安全和DateTimeFormatter(jdk1.8)线程安全区别与使用
区别:SimpleDateFormat是线程不安全的,在并发环境下使用SimpleDateFormat(方法见使用);DateTimeFormatter是线程安全的,jdk8自带( java.time.format.DateTimeFormatter);Joda time里的DateTimeFormat也是线程安全。多线程中使用:SimpleDateFormat:在需要执行时间格式化...
2020-01-09 13:32:06 1700
原创 java获取服务器ip(windows系统和linux系统)
获取服务器真实ipInetAddress.getLocalHost().getHostAddress():根据服务器名称获取服务器ip,在linux系统下***可能***存在问题public static String getIp() { try{ if (isWindowsOS()) { logger.info("wi...
2020-01-07 15:56:15 698
原创 Maps.newHashMap 和 new HashMap的区别
Map<String, Object> result = new HashMap<String,Object>();是java原生API写法,需要手动加泛型。Map<String, Object> result = Maps.newHashMap();是google的guava.jar提供的方法,不需要手动加泛型...
2020-01-04 14:36:15 1375
原创 java访问控制符public,protected,default,private区别
public:具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。protected:主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。default:有时候也称为friendly,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等...
2019-09-10 14:53:57 316
原创 springBoot版本过高,导致项目访问路径一直找不到
springBoot2.x版本,项目访问路径配置中使用servlet而springBoot1.5.6版本,项目访问路径配置如下所以springboot的版本不同,相对应的配置是不一样的,有些jar包的引用也如此,需要jar包版本与springBoot版本对应...
2019-07-31 17:59:43 1622
原创 IDEA,ctrl加鼠标,点击方法进不到对应的方法中,显示Cannot find declaration to go to
使用IDEA开发过程中,有一次想进入方法,查看方法的实现,结果鼠标放在方法上,按住ctrl键,点解鼠标,竟然显示Cannot find declaration to go to:产生原因如下:直接采用open的形式打开项目解决办法如下close掉当前项目 :重新import项目 :这样打开的项目,就可以查看你的方法了...
2019-07-31 17:41:11 3202
原创 java中String类型的json数据处理
开发过程中很多请求结果是json格式,需要对结果进行处理,此处做简单的记录:我引入的json包是: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> ...
2019-06-28 16:03:27 3123
原创 java几种对象的区别(PO,POJO,VO,BO,DAO)
PO(persistant object 持久对象) :与数据库中的表相映射的java对象,每个属性基本都对应数据库表里面某个字段;可以理解为一个PO就是数据库中的一条记录,一条记录即为一个对象。POJO(plain old java object 简单的java对象) :就是普通JavaBeans,为了避免和EJB混淆所创造的简称,通常指没有使用Entity Beans的普通java对象...
2019-06-18 09:56:13 347
原创 springboot注解
开发总遇到的注解进行记录:@GetMapping :组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写;@PostMapping :组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写;@JsonInclude(Include.NON_NULL) :放在类头上用于解决实体类与json...
2019-06-13 14:48:33 139
原创 登录mysql区分大小写
开发过程中,发现登录没有大小写的区分,后加以补充,现做记录。登录区分大小写有两种实现方式:java代码实现 ;mysql实现 ;java代码实现先从数据库取出数据,在代码中进行登录账号的对比,此处,我拿出代码中的一部分,可参考,无法直接使用。采用java字符串的compareTo方法进行比较,若结果不等于0,则存在大小写区别。想详细了解compareTo()方法,可参照java字...
2019-06-05 15:33:08 1000
原创 字符串的compareTo(),indexOf()方法
java中字符串String的方法有很多,现就我使用的、方便以后查看的方法,进行记录。1.compareTo():比较两个字符串是否相等a.相比较的两个字符串长度不等:返回两个字符串相差的长度差;b.相比较的两个字符串长度相等:从第一个字符开始比较,返回不等字符的ASCII码差值;代码实测: /* * @description: 字符串的co...
2019-06-04 17:45:12 890
原创 java中三种获取时间的方式
/* * @description: 测试System.currentTimeMillis() Date 获取时间的区别 */ SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Long mills = System.curr...
2019-05-31 18:12:34 490
原创 git 使用
git fetch和git pull详解git pull看起来像git fetch+get merge,但是根据commit ID来看的话,他们实际的实现原理是不一样的。关于git运行机制:git分为本地仓库和远程仓库,我们一般情况都是写完代码,commit到本地仓库(生成本地仓的commit ID,代表当前提交代码的版本号),然后push到远程仓库(记录这个版本号)。本地git文件夹里面...
2019-03-20 17:20:47 190
原创 IDEA 搭建 SSM(spring,spring mvc,mybatis)maven项目
打开Idea编辑器,新建项目;若项目打开,也可点击编辑器左上角,new 新建项目2.选择maven,勾选create from archetype,选择org.apache.maven.archetypes:maven-archetype-webapp3.填写groupId和artifactIdgroupId是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里jav...
2019-02-13 11:38:37 294
原创 SQL,exists和in的区别
SQL,exists和in的区别exists 和 in 的区别:如果子查询得出的结果集记录较少,主查询中的表较大且有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,有索引时使用exists。其实区分exists和in主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是in,那么先执行子查询,所以我们会以驱动表的快速返回...
2019-02-11 11:43:52 3072 1
原创 java,操作符 ++
java,操作符,i ++ 与++i 的区别i++ 即先执行后边操作,再执行加1操作++i 即先执行加1操作,再执行后边操作亲测代码:public static void main(String[] args) { int numIncrease = 10; int numDecrease = 10; System.out.printl...
2019-01-07 18:03:55 181
原创 CSRF(跨站请求伪造) 攻击
CSRF认识CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF攻击即用户身份被盗用,发送恶意请求。比如以你的名义发邮件,发消息,盗取账号购买商品等。CSRF原理CSRF攻击须具备两个条件:1.登录受信任网站A,并在本地生成Cookie。...
2018-12-18 18:31:18 506
原创 IDEA Git 使用,annotate显示代码编写者及时间
IDEA,Git 使用IDEA开发工具左侧边界点击,除了可显示行号外,还有一个集成版本控制工具----&gt;annotate,可查看代码修改时间及修改人,作为程序媛,难免会有锅砸在头上,这个时候可以打开annotate查看代码修改者,但有时候我们打开项目时,发现左侧annotate是灰色的,这个时候需要进行配置:1.左侧annotate是灰色的,不可点击2. 项目最上方进行配置3.点...
2018-12-11 15:26:52 54305 18
原创 java 多线程之join()方法
join()方法作用:阻塞线程,即等同于主线程进入子线程的wait()方法,等待子线程执行完,唤醒主线程才能继续执行,子线程join到主线程。(join()只阻塞主线程,若线程中有其他线程,仍然是并行状态)注意: 虽然join只阻塞主线程,其他线程处于并行状态,但前提是再主线程被阻塞之前已经开启其他线程,否则主线程被阻塞,其他线程未被开启,当然不存在并行的情况。如:main是主线程,在main...
2018-10-17 16:31:00 443
原创 Mysql中count()语法的使用
Mysql中count()语法的使用count()四种写法:count(*) 包括所有列,相当于统计表的行数,不忽略列值为NULL的记录。count(1) 忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,不忽略列值为NULL的记录。count(列名) 只包括指定列,返回指定列的记录数,会忽略列值为NULL的记录。count(distinct 列名) 只...
2018-09-20 20:08:25 2729
原创 cmd 命令查看端口占用,杀死进程
1.查看端口占用情况:windows命令行窗口下执行:netstat -aon|findstr "端口号"可以看到端口“8080”被PID(进程号)为12988的进程占用2.查看端口被哪个应用占用tasklist|findstr "12988"可以看到进程号为12988的进程是javaw.exe3.关闭进程 a.按进程号关闭进程taskkill /pid 12988b.按进程名关闭进程taskki
2018-01-05 20:01:56 766
原创 java 多态
面向对象的三大特性:封装、继承、多态。1.多态定义 多态是同一个行为具有多个不同表现形式或形态的能力,即同一个接口,使用不同的实例而执行不同操作。 如现实中的例子:动物(Anamal)作为父类(存在eat()方法),子类有大熊猫(Panda),狐狸(Fox)实现eat()方 法,大熊猫的eat()方法是吃竹子,狐狸的eat()方法是吃肉; Anamal anamal =
2018-01-05 18:17:44 314
原创 java 多继承
面向对象的三大特性:封装、继承、多态。多继承总结: java 中类不允许多继承,即子类只能继承(extends)单个父类,但是可以实现(implements)多个接口 接口允许多继承,即一个接口可以继承多个接口; 原则: a.类优先于接口。 如果一个子类继承的父类和实现的接口有相同的方法实现。 那么子类继承父类的方法 b.子类型中的方法优先于父类型中的方法。类继承 子类只能继承
2018-01-04 18:15:55 662
原创 java,代理模式(静态代理,动态代理)
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象. 好处:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 编程思想:不随意修改已经写好的代码或者方法,如果需要修改,可以通过代理的方式来扩展该方法。
2018-01-03 14:01:50 372
原创 java构造对象的方式
开发项目中,创建对象时,总是实例化对象,采用对象.set**的方法,当碰到对象的字段很多时,写的代码重复性高,所以总结了创建对象的几种方式,个人偏爱第一种一种:构造器模式 例子(共3步): 1.构造一个Person对象,里面的字段name名字(必传参数),学号(必传参数),年龄(选传参数),班级(选 传参数)。 2.构建一个Builder内部类,Person类的必传参数作为Builder
2018-01-03 11:39:36 344
原创 mabits 传入参数为(Long, String, Integer)在mappe.xml文件中if判断时的坑
这是我在写测试用例时,对Long类型的id做空判断时碰到的问题,后来测试了String和Integer类型,都存在此问题代码:<!-- 根据用户id获取签到签退记录 --><select id="getSignById" resultType="com.jw.taskmanager.model.Sign" parameterType="java.lang.Long"> select
2018-01-02 17:03:59 2283
转载 编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2018-01-02 16:48:46 272
原创 mabatis框架mapper.xml文件中mysql数据类型对应Jdbc数据类型和java数据类型
mabits中mapper.xml文件,mysql数据库类型和jdbc数据库类型及java数据类型的对应
2017-11-22 18:09:31 3537
原创 windows电脑快捷键使用
切换电脑屏幕:Alt+TabQQ截屏: Ctrl+Alt+A打开QQ消息: Ctrl+Alt+Z关闭QQ消息框:Alt+C保存信息 :Ctrl+S刷新界面: F5打开控制台: F12浏览器网页全屏显示: F11
2017-11-07 15:45:22 797
原创 redis过期时间设置
Redis对存储值的过期处理实际上是针对该值的键(key)处理的,时间的设置也是设置key的有效时间。 注: 1、除了字符串自己独有设置过期时间的方法外,其他方法都需要依靠expire方法来设置时间 2、如果没有设置时间,那缓存就是永不过期 3、如果设置了过期时间,之后又想让缓存永不过期,使用persist keyexpire key time(以秒为单位)--这是最常用的方式
2017-11-03 14:50:06 10125
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人