Java基础
文章平均质量分 52
qq_29750461
这个作者很懒,什么都没留下…
展开
-
【SQL】替换某个字段中的某个值
情况说明数据库中的数据存储情况:在下面的 *Imgs 字段,为如下情况:<img width='100%' src='http://192.168.0.*/image/productIntroImgs/1.jpg'></img><img width='100%' src='http://192.168.0.*/image/productIntroImgs/2.jpg'></img><img width='100%' src='http://192.1原创 2022-04-08 11:00:40 · 1553 阅读 · 0 评论 -
【解决】Eclipse中Maven项目属性中没有Deployment Assembly问题
最近在整理一个前后端分离的web项目,后端使用Maven做jar包管理,使用Eclipse进行开发,由于长期没有写过Web项目了,项目使用Tomcat发布时候,发现无法jin'x原创 2021-06-21 11:27:36 · 3239 阅读 · 2 评论 -
【java】BlockingQueue解析【硬】
什么是BlockingQueueBlockingQueue即阻塞队列,它算是一种将ReentrantLock用得非常精彩的一种方式,很好的解决了多线程中,如何高效安全“传输”数据的问题。依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式。Java中BlockingQueue源码public interface BlockingQueue<E> extends Queue<E> { //将给定元素设置到队列中,如果设置成功原创 2020-07-23 11:36:55 · 368 阅读 · 0 评论 -
【java】线程通信
什么是线程间的通信线程的等待与唤醒又称为线程之间的通信,等待与唤醒机制是实现两个或多个线程在执行任务过程相互配合相互协作的一种技术。线程通信的目的通信的目的是为了更好的协作,线程无论是交替式执行,还是接力式执行,都需要进行通信告知。Java中四种线程通信方式方法1...原创 2020-07-21 13:16:43 · 174 阅读 · 0 评论 -
【Java概念】可重入函数
什么是可重入函数可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数。即:如果一个函数执行过程中,被中断服务程序打断,去执行另外一段代码,然后恢复先前的功能,而不妨碍其早期的操作,则称该函数能是可重入的。可重入函数用于硬件中断处理,递归等应用程序可重入函数的条件1 不使用全局和静态数据。虽然没有限制,但一般不建议。因为中断可能会改变某些全局值,之后使用新数据恢复可重入函数的动作过程可能会产生不希望的结果。2 可重入函数不应修改自己的代码。我们需要函数的动作在整个代码中保原创 2020-07-21 09:59:02 · 668 阅读 · 0 评论 -
【java】happens-before规则
1 程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生 书写在后面的操作;2 锁定规则:一个unLock操作先行发生于后面对同一个锁lock的操作,即先释放锁,再给线程加锁;3 volatile变量规则:对一个变量的写操作先行发生于后面对这个变量的读操作,保证读操作读取的是最新的变量值;4 传递规则:如果操作A先行发生于操作B,而操作B又先行发生于操作C,则可以得出操作A先行发生于操作C;5 线程启动规则:Thread对象的start()方法先行发生于此线程的每一个动作;6 线程中断原创 2020-07-21 09:13:46 · 146 阅读 · 0 评论 -
【java】锁的相关概念
前面两篇都讲了java中锁的基本使用,里面穿叉了少量的原理,这里主要是针对Java锁的一些概念来讲解1 可重入锁像synchronized和ReentrantLock都是可重入锁,可重入性实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。【比如】,当一个线程执行到某个synchronized方法时,比如说method1,而在method1中会调用另外一个synchronized方法method2,此时线程不必重新去申请锁,而是可以直接执行方法method2。原因如下:由于me原创 2020-07-20 23:04:43 · 170 阅读 · 0 评论 -
【Java锁】Lock接口的使用
前言java中同步锁包括synchronized与Lock,前面已经讲过关于synchronized的使用和基本原理,synchronized是java内置关键字,在jvm层面,Lock是个java类,其实指的是 JDK 中的同步锁。为什么Java中除了内置的锁,还要使用 java类 来声明一个同步锁呢?这主要是synchronized有缺点,为了弥补缺点,所以引出了JDK中的同步锁。synchronized有什么缺点?如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行原创 2020-07-20 22:08:19 · 863 阅读 · 0 评论 -
【Java】synchronized使用和原理
前言为什么用synchronized?在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile(这个关键字也很重要,可以关注下)实现原理synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性。(1)syn原创 2020-07-19 12:01:25 · 419 阅读 · 1 评论 -
Java线程和线程池知识整理【较详细】
前言在讲多线程之前,首先明白几个概念1 程序:计算机中,程序是一个有序的有限指令序列,一般是按照有顺序执行,直至遇到跳转程序或者出现中断,注意程序是静态的,不运行就是一系列的代码。2 进程:首先明确,进程是计算机最小的资源分配单位,可以把它理解为正在运行的程序实例,广义上也认为是具有一定独立功能的程序在相关数据上的运行活动,通常一个进程中包含了若干线程。比如我们打开微信等客户端程序就在打开一个进程。多进程的作用不是提高执行速度,而是提高CPU的使用率;进程和进程之间的内存是独立的;3 线程原创 2020-07-13 12:17:59 · 311 阅读 · 0 评论 -
Mysql主从复制原理和作用(较详细)
最近一直在了解数据库的一些实现细节,今天结合网上的一些资料,总结一下Mysql的原理和作用。什么是主从复制主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。一般在数据量较大的情况下会考虑,当然我们做的单机程序可能用不到这些内容,但是现在是个大数据时代,各种技术都会和分布式相联系,主要是为了进行负载均衡,数据库的主从复制其实就是为了解决数据过大,单机进行增删改查压力会比较大,所以把数据的增删改和查分开。主从复制的作用1 作为后备数据库,主数据原创 2020-07-04 16:20:41 · 1809 阅读 · 0 评论 -
【面试】数据库原理
什么是数据库数据库简单来讲就是存放数据的地方,面试过程中,数据库一般都会被问到,这里主要是自己查阅的资料和一些总结,主要为了巩固下自己的对数据库的理解和认识。这里主要结合MySQL数据库进行整理。存储过程(Store Procedure)MySQL数据库是一种常用的关系型数据库,操作语言是SQL语句,SQL语句一般在执行的时候需要先编译,然后执行。而存储过程一般是有预先定义的SQL语句集,经编译后存储在数据库中,用户指定存储过程的名字并给定参数(如果存储过程有参数的话),然后直接可以执行。一个原创 2020-06-30 19:25:27 · 673 阅读 · 0 评论 -
【Java】序列化和反序列化
什么是序列化和反序列化序列化:指堆内存中的java对象数据,通过某种方式把对存储到磁盘文件中,或者传递给其他网络节点(网络传输)。这个过程称为序列化,通常是指将数据结构或对象转化成二进制的过程。简单来讲:将对象转化为二进制,用于保存,或者网络传输。反序列化:序列化的逆过程,把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。简单来讲:将二进制数据转化为对象为什么需要序列化和反序列化?现在开发过程原创 2020-06-20 11:29:06 · 234 阅读 · 0 评论 -
SpringSecurity使用
这里写一下SpringSecurity官网的常用操作,主要结合Thymeleaf来实现用户登录过滤和权限管理来描述其应用。基于 Idea 操作。首先明确SpringSecurty主要用来干什么的?认证 (你是谁)授权 (你能干什么)攻击防护 (防止伪造身份)其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户...原创 2020-04-22 11:44:30 · 760 阅读 · 0 评论 -
【算法学习系列】java语言单链表的相交问题
题目引入:如果两个单链表相交,则返回他们相交的第一个节点。算法分析:该问题其实包含的情况很复杂,我们一步步来分析。首先应该结合单链表的结构,一个值域,一个指针域,当两个单链表相交时,有以下几种情况。无环状态下的两种情况,一种是在某个节点相交,然后后面的链全部共有,第二种是两条链没有任何交集,第三种情况是不会出现的,因为违背了链表中节点只有一个指针的定义。有环状态下的链表相交,包含三种情...原创 2019-12-05 10:02:46 · 243 阅读 · 0 评论 -
【算法学习系列】Java语言判断单链表回文
【题目描述】:给定一个单链表,例如 1->2->3->2->1,即为回文链表,如果为 1->2->3->3->1 即不是回文链表。给出算法,实现时间复杂度O(N),空间复杂度O(1)。难点:如何实现空间复杂度为O(1)的操作。首先声明一个单链表(此声明可以是Java内部类,也可以是外部类,进行import):class Node{ ...原创 2019-11-25 08:36:04 · 235 阅读 · 0 评论 -
[Redis]:Sorry, can't connect to node 192.168.xxx.xxx
1 redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf解决办法:注释掉bind 127.0.0.1可以使所有的ip访问redis若是想指定多个ip访问,但并不是全部的ip访问,可以bind在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错修改办...原创 2018-11-24 21:23:50 · 3459 阅读 · 1 评论 -
Redis启动出错:Creating Server TCP listening socket 127.0.0.1:6379: bind: No error
windows下安装redis第一次启动报错:[2368] 21 Apr 02:57:05.611 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error解决方法:在命令行中运行redis-cli.exe127.0.0.1:6379>shutdownnot connected>exi...原创 2018-10-29 21:27:08 · 640 阅读 · 2 评论 -
Meaven+ SSM框架搭建Web工程(IDE为:Eclipse)
一 下载 配置Meaven连接:http://maven.apache.org/download.cgi下载完成 进行解压,然后进行配置 meaven1 新建 MEAVEN_HOME,值为:解压的meaven路径2 建立 MEAVEN_OPTS 值为:-Xms128m -Xmx512m,这是为了防止Meaven 在执行期间出现 堆栈溢出3 然后添加到系统的...原创 2018-09-21 10:53:56 · 976 阅读 · 0 评论 -
Java 文件流三:缓冲流(BufferedInputStream 和 BufferedOutputStream)
在Java文件操作中,有缓冲流的操作 BufferedInputStream 和 BufferedOutputStream(操作字节流) 以及 BufferReader 和 BufferedWriter (操作字符流)方法,这里我们采用较常用的字节缓冲流进行讨论,字节缓冲流旨在提高文件传输的速度,使用这个会比FileInputStream 和 FileOutputStream 要快。具体实例如...原创 2018-07-23 17:47:33 · 504 阅读 · 0 评论 -
Java 文件流四:转换流(InputStreamReader 和 OutputStreamWriter)
Java中转换流是个文件流操作中的一个小知识点,主要包含了文件的编码和解码过程。这里套用别人的图进行一个形象的关于转换流的表达:这里结合实例给大家进行一些说明,望详细看代码/* * 转换流:InputStreamReader OutputStreamWriter * 编码:字符串-->字节数组 * 解码:字节数组--->字符串 */...原创 2018-07-23 17:54:14 · 4129 阅读 · 0 评论 -
Java 多线程一:继承Thread类和实现Runnable接口
关于进程核线程的区别,这里不佳赘述,大家只要知道,进程里包含很多线程,进程是资源分配的最小单位,线程是执行的最小单位。且程序被执行才可以有线程和进程的概念,程序是静态的,进程和线程是动态的。Java 中线程一般有两种实现方式,分别是继承Thread类和实现Runnable 接口,这里先对继承和接口的实现的作简要的实例分析。注意:用的比较多的是使用接口实现的方法。1继承Thread类 实例...原创 2018-07-24 16:59:55 · 372 阅读 · 0 评论 -
Java 多线程二:线程死锁
什么是线程的死锁?通俗点来说,不同线程等待对方先释放,互不释放资源,造成程序无法继续执行。如下面一段程序:public class TestLock { static StringBuffer sb1=new StringBuffer(); static StringBuffer sb2=new StringBuffer(); public static void ...原创 2018-07-26 16:20:11 · 176 阅读 · 0 评论 -
Java 多线程三:线程间的通信
线程间通信主要是以下三个方法: * wait notify notifyAll * 这三个方法定义在Object中,且都在同步代码块中使用 * wait:令当前线程挂起并放弃CPU 同步资源,让别的线程可以访问修改共享资源 * 当前线程排队等候再次对资源的访问 * notify:唤醒正在排队等待的同步资源的线程中优先级最高者结束等待 * notifyAll:唤醒正在排队等待的同步资源的...原创 2018-07-26 16:26:37 · 208 阅读 · 0 评论 -
Eclipse IDE的一些快捷操作(持续更新.....)
1.更改java文件大小设置Window->preferences->General->Appearance->Colors and Fonts->Java->Java Editor Text Font->右边按钮Change 英文版默认的是Courier New 常规 102.更改jsp文件大小设置(此设置也同事更改其他类型文件的字体...原创 2018-07-30 14:39:59 · 427 阅读 · 0 评论 -
Java实现连接MySQL数据库(JDBC)
想要操作数据库,电脑需要已经转好了SQL数据库,怎么安装,大家可以在网上查下,借鉴下前人的经验。百度词条(Mysql下载与安装)这里使用 java 语言与MySQL数据库相连,实现数据持久化操作。需要用到Jar包:mysql-connector-java-5.1.40-bin.jar可以在这里下载: https://pan.baidu.com/s/1axOzC8Qrdovvn...原创 2018-07-30 16:17:48 · 902 阅读 · 0 评论 -
Eclipse中web工程目录结构(未完全 会更新)
这里我建立的是一个动态的web工程(以后会更新Maven的)。这里介绍常用的文件目录操作 1 建好工程后,目录是这样的:2 Java 源码要放在以下文件夹中:3 Java jar一般放在 WEB-INF下的lib中:如图:4 JSP 页面放在webContent下,访问路径:http://localhost:8080/web/test.jsp,当然也可以放在文件...原创 2018-07-30 17:44:19 · 1859 阅读 · 0 评论 -
Java 文件流一:字节流(FileInputStream 和 FileOutputStream)
Java文件流操作是一个非常重要的内容。下图列举了关于Java基本的文件流操作,当然目前还有NIO,这个后来会进行讨论,先看基本的文件流操作。我们主要使用的是访问文件的流和缓冲流。 文件的流操作一般包含字符流和字节流,两者区别在于,字符流每次传播16bit数据,字节流一次读取8bit数据。这里先对Java中字节流的使用展开讨论。 必须明确一个概念,流操作包含了输入输出流,其中...原创 2018-07-22 17:38:49 · 3016 阅读 · 0 评论 -
Java 文件操作(File类)
在Java中,文件操作和流操作经常结合在一起进行,其中,文件操作主要是针对一个文件的增删改查和重命名,不涉及一个文件的内容的更改,关于具体文件内容的操作属于流操作的范畴。这里,先对文件操作进行的一些方法结合代码进行简要的描述,希望对大家有用。1 示例代码如下: import java.io.File;import java.io.IOException;import java.ut...原创 2018-07-21 19:16:44 · 1337 阅读 · 0 评论 -
Java中的枚举类(enum)
在Java中,枚举可以使用一般的方法进行实例化类或者使用关键字enum,他可以用来作为作为枚举类型,也可以进行集成接口。具体实现如下:1 使用类的实例化进行枚举://枚举类class Season{ //提供类的属性声明为private final类型的 private final String seasonName; private final Str...原创 2018-07-21 16:54:27 · 243 阅读 · 0 评论 -
Java主要关键字的简介
1 this :修饰属性 方法 构造器 表示:当前调用的对象或者正在创建的对象2 super:修饰属性 方法 构造器 表示:当前对象的父类或者正在创建对象的父类,尤其是用在子父类具有相同命名的方法 属性的时候使用,调用父类方法 属性3 static : 修饰方法 属性 代码块 表示:随着类的加载而加载,其属性一般在静态区,常用于计数等4 final: 修饰方法 属性 类 表示:最终...原创 2018-07-11 14:43:07 · 218 阅读 · 0 评论 -
Java面向对象的四个特征
Java面向对象的几个特征分别为:封装,继承,抽象,多态。1封装: 这里的封装主要是针对类的封装。一个业务逻辑的实现往往需要多个对象和方法去实现,封装旨在对不同对象的方法进行封装处理,即不同对象的方法处在一个单独的对象类中。把对象的全部属性和全部服务结合在一起,形成不可分割的独立的单位(对象);信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接...原创 2018-07-01 08:56:29 · 8898 阅读 · 1 评论 -
Java关键字:static和final用法和区别
在Java里static (静态的),是静态关键字,用来修饰静态变量、方法、代码快等。1 当static修饰变量的时候,该变量将被JVM直接分配到堆内存上,且所有程序对其的引用都指向同一个地址,不会再进行重新分配内存空间,一般常用于修饰计数器。2 用来修饰方法的时候,注意该类中如果调用其他方法,则调用的方法也必须为静态的,但是变量可以声明为非静态或者使用静态全局变量。好处就是可以直接通过类...原创 2018-06-30 23:47:31 · 199 阅读 · 0 评论 -
解决:Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
在使用 Gson Jar 包辅助 Json 进行传值的时候,出现了这个异常:Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $,这个错误是 Json 的格式不对,应该使Json的 格式表示为{“key1”:xxx,"key2":xxx...}记住 key一定要加引号!!...原创 2018-08-16 16:44:21 · 103295 阅读 · 7 评论 -
JACKSON报错:java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionExc
这个错误是 Spring 的Jar包 和 Jackson Jar 的版本冲突,是后者Jar 包中没有 InvalidDefinitionException这个类。最新的Spring Jar包应该和最新的Jackson Jar相配合原创 2018-09-15 20:47:05 · 4759 阅读 · 0 评论 -
org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.Mult
Java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest在用springMvc做上传文件的时候报这个错误,在网上查了一天,总结一下大致有几种情...原创 2018-09-15 15:49:57 · 10948 阅读 · 4 评论 -
Java 文件流二:字符流 (FileReader与FileWriter)
Java 中对于文本文档的操作除了之前介绍的字节流操作外,一般对于文本数据使用FileReader与FileWriter进行操作,要高效一些。这一组方法是直接对字符进行操作。具体实例如下:1 使用FileReader读文件(这里面有中文的时候,有些时候会有乱码出现,关于此问题,在后面的文章里会有涉及,自己也可以以思考办法解决)public void testFileReader() ...原创 2018-07-23 17:37:44 · 435 阅读 · 0 评论