java

Java(JDK/Tomcat/Maven)运行环境配置及工具(idea/eclipse)安装详细教程

2021-02-27
Java(计算机编程语言) Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程. Java具有简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多线程.动态性等特点. Java可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等. Java环境配置(

Java 如何使用JDBC连接数据库

2021-02-27
一.使用JDBC连接数据库 1.使用JDBC-ODBC桥驱动程序连接数据库 基本步骤: (1)加载并注册数据库驱动 (2)通过DriverManager获取数据库连接 (3)通过Connection对象获取Statement对象 (4)使用Statement接口执行SQL语句 (5)操作ResultSet结果集 (6)关闭连接,释放资源 2.下面进行代码演示 1.注册数据库驱动程序的语法格式如下: DriverManager.registerDriver(Driver driver) 或者 Cl

Java CAS操作与Unsafe类详解

2021-02-27
一.复习 计算机内存模型,synchronized和volatile关键字简介 二.两者对比 sychronized和volatile都解决了内存可见性问题 不同点: (1)前者是独占锁,并且存在者上下文切换的开销以及线程重新调度的开销:后者是非阻塞算法,不会造成上下文切换的开销. (2)前者可以保证操作的原子性,但是后者不能保证操作的原子性. 三.在什么情况下才会使用volatile 写入变量是不依赖当前值的,如果是依赖当前值的话,由于获取-计算-写入,三者不是原子性操作,而volatile是

Integer和int的区别实例详解

2021-02-26
Integer和int最本质的区别就是:Integer是封装类,int是基本数据类型(这是废话). 本文是希望能对Integer和int的区别进行更详细的对比说明并加以举例 Integer和int的区别 Integer的默认初始值是null,而int的初始值是int,也就是说Integer能够区分出未赋值和值为0的区别,而int却不能表达出未赋值的情况,所以int不适合作为web层的表单数据填写.(例如:一个学生参加考试且成绩为0,和没参加考试成绩为null) Integer是类,自带很多方法供

Java算法之数组冒泡排序代码实例讲解

2021-02-26
冒泡排序是数组查找算法中最为简单的算法 冒泡排序原理: 假设一个数组长度为k(最高索引k-1),遍历前k - 1个(最高索引k-2)元素,若数组中的元素a[i]都与相邻的下一个元素a[i+1]进行比较,若a[i] > a[i+1] ,则这两个元素交换位置.以此类推,若a[i+1] > a[i+2],则交换位置-直至a[k-2]与a[k-1]比较完毕后,第0轮迭代结束.此时,a[k-1]为数组元素中的最大值. 第1轮迭代,再对数组a的前k-1个元素重复进行以上操作. - 第k-2轮迭代,对数组a

Java 如何解决跨域问题

2021-02-26
引言 我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果.跨域就像分离前端和后端的一道鸿沟,君在这边,她在那边,两两不能往来. 什么是跨域(CORS) 跨域(CORS)是指不同域名之间相互访问.跨域,指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略所造成的,是浏览器对于JavaScript所定义的安全限制策略. 什么情况会跨域 同一协议, 如http或https 同一IP地址, 如127.0.0.1 同一端口, 如8080 以上三个条件中有一个条件不同就会产生跨

Spring Boot使用JSR-380进行校验的示例

2021-02-26
介绍 JSR-380 是 J2EE 的一个规范,用于校验实体属性,它是 JSR-303 的升级版,在 Spring Boot 中可以基于它优雅实现参数校验. <!--more--> 示例 在没有使用 JSR-380 之前,我们一般都会将参数校验硬编码在 controller 类中,示例: public Result add(@RequestBody User user){ if(StringUtils.isBlank(user.getName())){ return Result.error(

IDEA利用jclasslib 修改class文件的实现

2021-02-26
idea安装jclasslib-bytecode-viewer插件 file–>settings–>plugis ,搜索安装jclasslib-bytecode-viewer,重启idea. 准备好class文件 把要修改的class文件用idea打开. 使用jclasslib view–>show bytecode with jclasslib. 常量池,使用过滤器过滤文本.找到对应的指向数字. 使用下列代码更改内容. package com.yys.screendisplay.con

Java JDBC自定义封装工具类的步骤和完整代码

2021-02-26
封装JDBC工具类的作用可以优化代码,提高开发效率 步骤 ① 创建配置文件(config.properties),用于存放注册驱动和连接数据库时所需要的参数值 ② 自定义一个类(JDBCUtils.java) ③ 实现构造私有方法 private JDBCUtils(){} ④ 声明所需要的配置变量 private static String driverClass; private static String url; private static String username; priva

解决logback的日志文件路径问题

2021-02-26
假如使用绝对路径,没有任何问题,就是移植性不太好. 假如使用相对路径,则要注意当前路径"."是在哪儿? 一般我们都会在配置文件中加入log文件的存储目录,如 本人通过研究测试发现: 1.对于J2SE项目,当前路径为工程所在目录 如我的工程为:D:\test 则使用-/logs生成的日志文件位于:D:\logs 2.对于J2EE项目,当前路径为tomcat\bin所在目录 如我的tomcat路径为:D:\tomcat\bin 则使用-/logs生成的日志文件位于:D:\tomcat\lo

IDEA 集成log4j将SQL语句打印在控制台上的实现操作

2021-02-26
适用地点:maven的mybatis的项目 配置log4j.properties 内容为 log4j.rootLogger=error, Console log4j.logger.cn.bdqn.dao=debug #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.C

Java实现2048小游戏(可直接运行)

2021-02-26
运行效果: 1.项目结构 2.代码 BaseData接口 package com.hsy.game; import java.awt.*; public interface BaseData { Font topicFont = new Font("微软雅黑", Font.BOLD, 50); Font scoreFont = new Font("微软雅黑", Font.BOLD, 28); Font normalFont = new Font("宋体&q

java中redis增删查以及清理缓存的案例

2021-02-26
我就废话不多说了,大家还是直接看代码吧~ Controller @ApiOperation(value = "获取信息放入Redis中") @RequestMapping(value = "/getPropertyTakeLookShoppingDetailRedis",method = RequestMethod.POST) public JsonResult getPropertyTakeLookShoppingDetailRedis(@RequestBody

jstack+jdb命令查看线程及死锁堆栈信息的实例

2021-02-26
如果程序挂死,有时使用jstack查看进程中线程信息时,需要添加上-F参数,此时如果有死锁信息,则可能不会打印出死锁堆栈信息,使用jdb则可以查看当前死锁线程的运行堆栈. 如下模拟一个简单的死锁程序 package com.demo.bootdemo; import java.util.HashMap; import java.util.Map; import org.springframework.context.ApplicationListener; import org.springfr

快速解决idea @Autowired报红线问题

2021-02-25
1.点击右下角的小老头 2.点击Configure inspections 3.输入spring找到 spring core中的Autowiring for bean class,选择Severity中的Error改为Warning. 补充:idea解决@Autowired注解警告提示和注入类红色下划线报错问题 前言: 当使用@Autowired注解进行对象的注入时候,会出现对象显示红色错误波浪线和@Autowired出现黄色警告,是因为idea会帮忙检查bean对象的注入,虽然报错,但不影响我

SpringBoot 设置传入参数非必要的操作

2021-02-25
我就废话不多说了,大家还是直接看代码吧~ 设置参数是否为必要参数 @RequestParam(required = false) 补充:SpringBoot 开发案例之参数传递的正确姿势 前言 开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼. 姿势 学习参数传递的正确姿势,先说怎么做,再说为什么,本质上还是复制粘贴一把撸,问题是你想问不想问为什么! 传递 用户登录 前端代码: var param = { "userna

Java 自定义线程池和线程总数控制操作

2021-02-25
1 概述 池化是常见的思想,线程池是非常典型的池化的实现,<Java并发编程实战>也大篇幅去讲解了Java中的线程池.本文实现一个简单的线程池. 2 核心类 [1]接口定义 public interface IThreadPool<Job extends Runnable> { /** * 关闭线程池 */ public void shutAlldown(); /** * 执行任务 * * @param job 任务 */ public void execute(Job job);

解决IDEA克隆代码后在右下角没有git分支的问题

2021-02-25
解决办法: 1.VCS--->Enable Version Control Integration 2.选择要关联的版本工具 补充:git clone 指定分支和切换分支 git clone 指定分支: git clone -b 分支名称 项目地址 假设分支名称为test,则: git clone -b test 项目地址 git命令查看当前分支: git branch git命令切换分支: git checkout 分支名 合并分支: 将test分支合并到master分支 先切换到master

Springboot返回的json屏蔽某些属性的操作

2021-02-25
entity上增加@JsonIgnoreProperties注解,标记需要忽略的属性,支持多个 @Entity @JsonIgnoreProperties(value={"status","updateTime"}) public class GoldSell implements Serializable{ 还有一种方式,直接注解在具体的property上,效果一样 @JsonIgnore private Integer status; 不过这两种都是影响属性,会

聊聊Spring循环依赖三级缓存是否可以减少为二级缓存的情况

2021-02-25
基于Spring-5.1.5.RELEASE 问题 都知道Spring通过三级缓存来解决循环依赖的问题.但是是不是必须三级缓存才能解决,二级缓存不能解决吗? 要分析是不是可以去掉其中一级缓存,就先过一遍Spring是如何通过三级缓存来解决循环依赖的. 循环依赖 所谓的循环依赖,就是两个或则两个以上的bean互相依赖对方,最终形成闭环.比如"A对象依赖B对象,而B对象也依赖A对象",或者"A对象依赖B对象,B对象依赖C对象,C对象依赖A对象":类似以下代码: publ