![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java开发
文章平均质量分 85
小夏陌
临渊羡鱼,不如退而结网;扬汤止沸,不如釜底抽薪。
展开
-
源码系列 之 ThreadLocal
ThreadLocal的作用是做数据隔离,存储的变量只属于当前线程,相当于当前线程的局部变量,多线程环境下,不会被别的线程访问与修改。原创 2023-12-25 11:54:53 · 136 阅读 · 0 评论 -
如何用Redis实现分布式锁?
分布锁很重要,经常作为面试考题,接下来就让我们一起来了解下分布式锁原创 2022-05-01 08:00:00 · 42444 阅读 · 2 评论 -
Java 应用如何进行线上问题排查?
线上故障排查,是每个程序员必备的技能,为什么这么讲呢,因为项目上线后,不是随时都有条件debug,所以需要程序员有线上排查的能力原创 2022-02-25 18:15:37 · 38213 阅读 · 0 评论 -
Java语言中,finally一定会执行吗?
Java语言中,finally一定会执行吗?你这么肯定?原创 2022-02-20 16:46:48 · 42379 阅读 · 8 评论 -
Java是值传递还是引用传递?还是两者皆有?
很多人不知道Java属于值传递还是引用传递,大多数可能认为Java传基本类型时是值传递,传对象时是引用传递,那么事实真是如此吗?原创 2022-02-11 15:05:15 · 38148 阅读 · 2 评论 -
前后端分离的跨域问题
跨域问题原因在现在流行的前后端分离开发中,跨域问题突显了出来,跨域问题的根本原因:浏览器有同源策略限制,当前域名的js只能读取同域下的窗口属性,这是一个基础安全功能。那么什么是同源策略呢?即两资源的URL中 协议,域名,端口,都相同则称为同源,若两资源为不同源,则不允许共享资源的。例如:以http://www.baidu.com/dir1/a.html为例子请求地址结果原因http://www.baidu.com/dir1/b.html成功同一域名端口,相同文件夹htt原创 2021-02-20 15:36:16 · 44002 阅读 · 0 评论 -
Java基础知识——IO流
简介IO是指Input/Output,即输入和输出。以内存为中心:Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。为什么要把数据读到内存才能处理这些数据?因为代码是在内存中运行的,数据也必须读到内存,最终的表示方式无非是byte数组,字符串等,都必须...原创 2020-08-11 11:59:56 · 4849 阅读 · 0 评论 -
SprinnBoot 项目目录结构
代码层结构根目录:com.example.myproject配置类config:com.example.myproject.config常量类constant:com.example.myproject.constant前端控制器层controller:com.example.myproject.controller数据传输对象dto:com.example.myproject.dto异常类层exception:com.example.myproject.exception过滤器类层filt原创 2020-05-15 18:24:27 · 1565 阅读 · 0 评论 -
Java基础知识——JVM
简介JVM 是可运行 Java 代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆和一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。运行过程: Java 源文件通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。即:Java 源文件—>编译器—>字节码文件—>JVM—>机器码,每种平台的解释器不同,但虚拟机相同,这就是Java能跨平台的原因,每个原创 2020-05-14 17:48:55 · 3842 阅读 · 0 评论 -
Java基础知识——Stream
简介Java从8开始,不但引入了Lambda表达式,还引入了一个全新的流式API:Stream API。它位于java.util.stream包中,Stream API的特点有,一、提供了一套新的流式处理的抽象序列;二、支持函数式编程和链式操作;三、可以表示无限序列,并且大多数情况下是惰性求值的。与java.io的区别Stream不同于java.io的InputStream和OutputSt...原创 2020-05-14 17:40:43 · 5794 阅读 · 0 评论 -
Java高并发编程学习(三)java.util.concurrent包
简介从Java 5开始,引入了一个高级的处理并发的java.util.concurrent包,它提供了大量更高级的并发功能,能大大简化多线程程序的编写。Java语言直接提供了synchronized关键字用于加锁,但这种锁一是很重,二是获取时必须一直等待,没有额外的尝试机制。java.util.concurrent.locks包提供的ReentrantLock用于替代synchronized加...原创 2020-05-14 17:48:29 · 5808 阅读 · 0 评论 -
Java高并发编程学习(二)线程同步
当多个线程同时运行时,线程的调度由操作系统决定,程序本身是无法决定的。因此,任何一个线程都有可能在任何指令处被操作系统暂停,然后在某个时间段后继续执行。这个时候,有个单线程模型下不存在的问题就来了:如果多个线程同时读写共享变量,会出现数据不一致的问题,接下来研究一下线程同步与线程安全问题。原创 2020-05-14 17:48:06 · 5182 阅读 · 0 评论 -
Java高并发编程学习(一)多线程基础
简介此篇主要是并发编程的一些基础知识进程在计算机中,我们把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程。一个进程中可能还有一些子任务,例如,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程。进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程。操作系统调度的最小任务...原创 2020-05-14 17:47:45 · 5264 阅读 · 0 评论 -
SpringBoot整合TensorFlow
简介TensorFlow 是一个开源的、基于 Python 的机器学习框架,它由 Google 开发,并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用,是目前最热门的机器学习框架,它可以帮助开发人员轻松获取数据,准备和训练模型,预测未来状态,以及执行大规模机器学习。除了 Python,TensorFlow 也提供了 C/C++、Java、Go、R 等其它编程语言的接口。但现在...原创 2020-05-14 17:41:40 · 8132 阅读 · 0 评论 -
Java基础知识——集合
简介在Java中,如果一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合,故Java的数组也可以看作是一种集合。那么即然有了数组,为什么Java还要提供集合类呢,原因:一、数组初始化后大小不可变;二、数组只能按索引顺序存取CollectionJava标准库自带的java.util包提供了集合类:Collection,它是除Map外所有其他集...原创 2020-05-14 17:40:07 · 5460 阅读 · 0 评论 -
Java基础知识——日志
简介在编写程序的过程中,发现程序运行结果与预期不符,这时怎么办呢?以前的做法是用System.out.println()调试,可是调好以后还要删了,出错了又要重写,如此反复很麻烦,但现在有更好的解决方法,那就是使用日志日志的优点可以设置输出样式,避免每次都写"ERROR: " + var;可以设置输出级别,禁止某些级别输出。例如,只输出错误日志;可以被重定向到文件,这样可以在程序运行结...原创 2020-05-14 17:40:02 · 5664 阅读 · 0 评论 -
Java基础知识——泛型
简介泛型就是编写模板代码来适应任意类型。即编写一次,万能匹配,又通过编译器保证了类型安全,这就是泛型。擦拭法泛型是一种类似”模板代码“的技术,不同语言的泛型实现方式不一定相同,Java语言的泛型实现方式是擦拭法(Type Erasure),所谓擦拭法是指,虚拟机对泛型其实一无所知,所有的工作都是编译器做的。导致了以下两点特性:编译器把类型<T>视为Object编译器根据&l...原创 2020-05-14 17:39:56 · 5146 阅读 · 0 评论 -
Java基础知识——Lambda表达式
简介函数式编程(Functional Programming)是把函数作为基本运算单元,函数可以作为变量,可以接收函数,还可以返回函数。历史上研究函数式编程的理论是Lambda演算,所以我们经常把支持函数式编程的编码风格称为Lambda表达式。Lambda 表达式,也可称为闭包,Java平台从Java 8开始提供支持。允许把函数作为一个方法的参数,传递进方法中使用,并且使用 Lambda 表达式...原创 2020-05-14 17:39:52 · 5179 阅读 · 0 评论 -
Java基础知识——反射
反射原理除了int,float等基本类型外,Java的其他类型全部都是class(包括interface),即class的本质是数据类型(Type)。而class是由JVM在执行过程中动态加载的。JVM在第一次读取到一种class类型时(也是第一次要使用时才读取),将其加载进内存。每加载一种class,JVM就为其创建一个Class类型的实例,并关联起来。注意:这里的Class类型是一个名叫Cl...原创 2020-05-14 17:39:48 · 4920 阅读 · 0 评论 -
SpringBoot整合OpenCV
简介接下来会讲解怎么用SpringBoot整合OpenCV初始化SpringBoot项目这里正常初始一个SpringBoot项目依赖文件在安装目录下找到以下两个文件,如果不知道怎么安装OpenCV,可查看这篇文章,Windows下安装OpenCVopencv\build\java\opencv-420.jaropencv\build\java\x64\opencv_java420....原创 2020-05-14 17:39:43 · 15478 阅读 · 12 评论 -
Java常用类库和API
简介如果不会总结,很多知识学习后想回顾就会花很多时间,这里总结一下Java常用的类库,都是日常开发中常用到的库,并且之后用到比较好用的库也会再这里添加日志类库无论是开发,学习和运维,日志已经是每个环节都必须的存在,不幸的是在java中日志体系比较混乱,这时我们需要去梳理一下这些类库,常用的有log4j、JUL、logback等等,以及后来出现的日志框架commons-logging、SLF4...原创 2020-05-14 17:39:35 · 20518 阅读 · 0 评论 -
SpringBoot整合Hbase
当单表数据量过大的时候,关系性数据库会出现性能瓶颈,这时候我们就可以用NoSql,比如Hbase就是一个不错的解决方案。。。原创 2020-05-14 17:39:30 · 82437 阅读 · 15 评论 -
常见加密算法介绍
简介做为一个开发人员,了解一些加密算法是很有必要的,通过加密算法,我们能完成数据通信的三个目标,分别为数据的保密性、数据的完整性、源和目标用户的合法性,而常见的加密算法类型大体可以分为三类:对称加密,非对称加密,单向加密对称加密算法加密算法与解密算法的秘钥key一致,即加密解密的密钥一致。在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方...原创 2020-05-14 17:34:54 · 2977 阅读 · 0 评论 -
为什么不推荐使用外键
外键的好外一、数据一致性由数据库自身保证数据一致性、完整性会更可靠,程序很难100%保证数据的一致性、完整性二、ER图可靠性有主外键的数据库设计可以增加ER图的可读性外键的坏处一、级联问题阿里巴巴的开发手册中,就曾指出强制要求不允许使用外键,一切外键概念必须在应用层解决。 因为每次级联delete或update的时候,都要级联操作相关的外键表,不论有没有这个必要,由其在高并发的场景下...原创 2020-05-14 17:39:13 · 24891 阅读 · 5 评论 -
SpringBoot整合Redis实例
RedisTemplate与StringRedisTemplate的区别两者数据各自存,数据不互通RedisTemplate不能取StringRedisTemplate存入的数据StringRedisTemplate不能取RedisTemplate存入的数据一般RedisTemplate用于存取对象(即value值为对象),StringRedisTemplate用于存取字符串(即valu...原创 2020-05-14 17:38:24 · 6715 阅读 · 2 评论 -
SpringBoot与Hibernate整合 一对多,多对多(实例)
简介一对多:在一对多双向关联时,在一的一方需要设置@OneToMany和mappedby,在多的一方需要设置@ManyToOne和@JoinColumn多对多:在多对多双向关联时,在控制的一方设置@ManyToMany和@JoinTable,在另一方需要设置@ManyToMany和mappedbyDemo目录数据表核心代码application.properties#自己的数...原创 2020-05-14 17:38:11 · 7130 阅读 · 0 评论 -
Hibernate常见数据库配置
mysql数据库配置spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL57Dialectspring.datasource.driver-class-name = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://localhost:330...原创 2020-05-14 17:38:07 · 6742 阅读 · 0 评论 -
Hibernater学习笔记
简介Hibernate 将 Java 类映射到数据库表中,从 Java 数据类型中映射到 SQL 数据类型中,并把开发人员从 95% 的公共数据持续性编程工作中解放出来。Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象。如下图所示:Hibernate 优势Hibernate 使用 XML 文件来处理映射 Java 类别到数...原创 2020-05-14 17:37:55 · 5453 阅读 · 0 评论 -
Spring Security学习笔记二(实例)
运用实例建表DROP TABLE IF EXISTS `user`;DROP TABLE IF EXISTS `role`;DROP TABLE IF EXISTS `user_role`;DROP TABLE IF EXISTS `role_permission`;DROP TABLE IF EXISTS `permission`;CREATE TABLE `user` (`...原创 2020-05-14 17:37:24 · 5046 阅读 · 0 评论 -
Spring Security学习笔记一
简介Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤器的安全框架,能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,在 Web 请求级和方法调用级处理身份确认和授权。为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。(Spring Boot使Spring Security更加易用,也使...原创 2019-11-21 11:49:21 · 3821 阅读 · 0 评论 -
Maven学习笔记
源教程地址:https://www.runoob.com/maven/maven-tutorial.htmlMaven简介Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管...原创 2019-10-18 16:19:07 · 3545 阅读 · 0 评论 -
RESTful风格
RestFul风格Restful(REpresentational State Transfer)就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。资源通过 URL 进行识别和定位,然后通过行为(即 HTTP 方法)来定义 REST 来完成怎样的功能。接下来了解几个名词资源所谓"资源",就是网络上的一个实...原创 2019-11-02 12:06:06 · 17829 阅读 · 0 评论 -
JavaWeb常用注解
简介注解根据来源可分为: 系统注解(自带的,取决于JDK版本)、自定义注解以及第三方注解系统注解根据用途又可分为: java内置注解和元注解根据运行机制(保留到什么时候)可分为: 源码注解、编译注解和运行注解java内置注解@Override覆盖父类方法@Deprecated(不赞成)用于方法,表明方法已过期,不建议使用@Suppvisewarning忽略警告,例如当我们要使用...原创 2019-10-25 16:53:29 · 4831 阅读 · 0 评论