- 博客(50)
- 资源 (8)
- 问答 (2)
- 收藏
- 关注
原创 Java NIO
标准的IO编程接口是面向字节流和字符流的。而NIO是面向通道和缓冲区的,数据总是从通道中读到buffer缓冲区内,或者从buffer写入到通道中。
2025-01-03 14:34:20
1060
原创 UDP和TCP的区别
一、基本性质UDP:是User Datagram Protocol的简称,即用户数据报协议。它是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址。 TCP:是Tranfer Control Protocol的简称,即传输控制协议。它是一种面向连接的、可靠的、基于字节流的传输层通信协议。二、连接与可靠性UDP:无连接,发送方和接收方不建立连接,数据报在网络上以任何可能的路径传往目的地。因此,UDP不保证数据到达、到达目的地的时间以及内容的正确性。 TCP:面向连接,在数
2024-12-31 15:48:59
610
原创 Thread中的setDaemon方法
java中设置一般线程不会因为主线程的销亡而销亡,即使主线程销亡了子线程依然执行,为了使子线程虽主线程一同结束,引入。为守护线程时,主线程结束,子线程也结束。打开注释后程序则快速退出。
2024-12-23 17:27:36
503
原创 Serializable
Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输。一般地,当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让实体类实现Serializable接口,目的就是为了让其可序列化。当然,序列化后的最终目的是为了反序列化,恢复成原先的Java对象实例。所以序列化后的字节序列都是可以恢复成Java对象的,这个过程就是反序列化。
2024-12-21 15:23:49
193
原创 ES bool查询
bool查询是一种组合查询,可以通过组合多个查询条件来实现更复杂的查询需求。上面的查询条件表示查询标题中包含“Elasticsearch”并且作者为“优快云”,或者分类为“Apple”或“Banana”,但不包括状态为“1”的文档。3. must_not查询:表示必须不满足的查询条件,相当于逻辑运算中的“非”。2. should查询:表示可选的查询条件,相当于逻辑运算中的“或”。1. must查询:表示必须满足的查询条件,相当于逻辑运算中的“与”。如果某条文档满足所有的must查询条件,才会被返回。
2024-05-30 13:58:25
1052
原创 activity操作时对应表数据变化
select * from act_hi_procinst where PROC_DEF_ID_='审批流程-3:2:e98211ea-9fd5-11ee-a759-acde48001122';select * from act_ru_task where PROC_DEF_ID_='审批流程-3:2:e98211ea-9fd5-11ee-a759-acde48001122';-- 执行流程实例表,核心,启动后会生成一个流程实例和待执行的任务节点。-- 待执行的用户任务节点换成下一个用户任务节点。
2023-12-23 17:39:28
118
原创 elasticsearch集群搭建-windows
elasticsearch集群搭建-windows1、下载elasticsearch到本地并解压下载地址:https://www.elastic.co/cn/downloads/elasticsearch解压之后复制两份,node1当作主节点,node2、node3当作从节点2、修改主节点配置文件#集群名字cluster.name: my-es#节点名字node.name: node-1#是否作为主机node.master: true#是否作为数据节点node.data..
2020-09-21 22:23:42
133
转载 一文彻底理解ReentrantLock可重入锁的使用
java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能。而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的角度来分析一下ReentrantLock。一、简介ReentrantLock常常对比着synchronized来分析,我们先对比着来看然后再一点一点分析。(1)synchronized是独占锁,加锁和解锁的过程自动进行,易于操作,但不够灵活。Reentra
2020-06-17 20:50:19
694
原创 synchronized与Lock的区别
1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类;2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;3.synchronized会自动释放锁(a线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁;4.用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞,线程2.
2020-06-17 17:30:19
211
原创 Atomic、volatile、ThreadLocal
volatile:轻量级的synchronized,高并发下保证变量的可见性。可见性:在一个线程的工作内存中修改了该变量的值,该变量的值能立即回显到主内存中,从而保证所有线程看到这个变量的值是一致的。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做Atomic正是采用了CAS算法,所以可以在多线程环境下安全地操作对象ThreadLocal提供线程内的局部变量。每个线程都自己管理自己的局部变量,互不影响。...
2020-06-04 20:26:59
180
原创 线程池
JDK1.8创建线程池有的几种方式:newFixedThreadPool :定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程数量不再变化,当线程发生错误结束时,线程池会补充一个新的线程。newCachedThreadPool:可缓存的线程池,如果线程池的容量超过了任务数,自动回收空闲线程,任务增加时可以自动添加新线程,线程池的容量不限制newScheduledThreadPool:定长线程池,可执行周期性的任务newSingleThreadExecutor:单.
2020-06-04 17:32:28
126
转载 守护线程和非守护线程
基本概念守护线程:和主线程一起结束的线程,叫守护线程。 非守护线程:主线程的结束不影响线程的执行的线程,也叫用户线程。示例代码非守护线程:public class MyThread extends Thread{ @Override public void run() { //重写run方法 for(int i=1;i<11;i++){ try { Thread.sleep
2020-06-04 16:33:55
470
原创 并发、并行、串行
并发是同时处理(dealing)很多的事情并行是同时做(doing)很多的事情并发是在同一实体上的多个事件并行是在不同实体上的多个事件串行是多个任务,执行时一个执行完再执行另一个。比喻:吃完饭再看视频。并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。.
2020-06-04 16:09:03
270
转载 Java 实现线程安全的三种方式
一个程序在运行起来的时候会转换成进程,通常含有多个线程。通常情况下,一个进程中的比较耗时的操作(如长循环、文件上传下载、网络资源获取等),往往会采用多线程来解决。比如显示生活中,银行取钱问题、火车票多个售票窗口的问题,通常会涉及到并发的问题,从而需要多线程的技术。当进程中有多个并发线程进入一个重要数据的代码块时,在修改数据的过程中,很有可能引发线程安全问题,从而造成数据异常。例如,正常逻辑下,同一个编号的火车票只能售出一次,却由于线程安全问题而被多次售出,从而引起实际业务异常。第一种实现..
2020-06-03 18:02:31
508
原创 MySQL 悲观锁和乐观锁
悲观锁悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。Java synchronized 就属于悲观锁的一种实现,每次线程要修改数据时都先获得锁,保证同一时刻只有一个线程能操作数据,其他线程则会被block。悲观锁乐观锁(Optimistic Lock),顾名思义,就是很乐观,每次去拿数据的时候
2020-06-03 17:48:57
107
原创 windows下安装两个mysql主从同步
1.配置ini文件[mysqld]#设置3310端口port = 3310#server-id和log-bin必须设置#设置master的serveridserver-id=1#log-bin=mysql-bin 表示开启二进制日志,并把二进制日志前缀改为mysql-binlog-bin = mysql-bin#要同步的数据库binlog-do-db=demodb#不同步的...
2020-05-29 22:04:40
87
原创 安装多个mysql
1.编辑my.ini文件,文件内容如下:安装目录最好用\\,防止转义[mysql]# 设置mysql客户端默认字符集default-character-set=utf8[mysqld]#设置3306端口port = 3307# 设置MYSQL安装目录basedir=E:\\dev\\DB\\slave\# 设置MYSQL数据目录datadir=E:\\dev\\DB\\slave\\data# 允许最大连接数max_connections=200# 服务端使用的字符集默认.
2020-05-29 17:33:05
131
原创 Redis-sentinel
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance),Redis 的 Sentinel 为Redis提供了高可用性。使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。该系统执行以下三个任务:监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否允许正常。提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知。自动故障迁移(Aut
2020-05-26 20:38:02
350
转载 redis.conf 配置文件介绍
redis.conf 配置项说明如下:1: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2: 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/run/redis.pid3: 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为6379在手机按键上ME...
2020-05-15 15:39:20
118
原创 Redis集群搭建
1.一个Master可以有多个Slaves 默认配置下,master节点可以进行读和写,slave节点只能进行读操作,写操作被禁止 不要修改配置让slave节点支持写操作,没有意义,原因一,写入的数据不会被同步到其他节点;原因二,当master节点修改 同 一条数据后,slave节点的数据会被覆盖掉 slave节点挂了不影响其他slave节点的读和mas...
2020-05-08 11:05:21
147
原创 redis主从搭建
1.复制一份 redis.windows-service.conf 成 redis.windows-service-6380.conf2.修改redis.windows-service-6380.conf中的端口:port 6380, logfile "server_log_6380.txt", dbfilename dump_6380.rdb, appendfilename "appendo...
2020-05-07 16:29:05
116
转载 isAnnotationPresent()方法
isAnnotationPresent()方法官方释义:java.lang.Package.isAnnotationPresent(Class<? extends Annotation> annotationClass)方法返回true,如果指定类型的注释存在于此元素上,否则返回false。这种方法的设计主要是为了方便访问标记注释.例:A.isAnno...
2019-07-26 15:37:19
6750
转载 同步、异步、阻塞、非阻塞
本文为转载文章,原文链接:https://www.jianshu.com/p/3d603166f54d1、从I/O说起这些概念之所以容易令人迷惑,在于很多人对I/O就没有清晰准确的理解,后面的理解自然不可能正确。我想用一个具体的例子来说明一下I/O。设想自己是一个进程,就叫小进吧。小进需要接收一个输入,我们不管这个输入是从网络套接字来,还是键盘,鼠标来,输入的来源可以千千万...
2019-07-12 13:31:25
114
转载 Spring Boot项目在多环境下调用不同配置文件
我们知道,一个项目在开发环境、测试环境、生产环境,不同的环境会有不同的配置,比如数据库的配置就不同,那么怎么样才能做到,不用每次换环境的时候,都去修改这些配置呢,下面以我写的一个小案例来作说明。如下图是我项目的三个配置文件,其中,application.yml是启动服务时,服务器会自动加载的配置文件,而application-dev.yml代表的是开发环境的配置文件,application-p...
2019-07-10 17:34:55
1066
转载 tomcat+nginx+redis实现均衡负载、session共享(二)
1.redis简介及下载安装作为这次的主角,相信大家对redis应该都一定印象,redis是一款开源的高性能key-value数据库,拥有丰富的键值储存类型,并提供多种语言的API。与一般数据库不同,redis是使用内存作为主存,而使用硬盘来实现数据持久化,而且redis是周期性的将数据写到硬盘上。这就意味着一旦我们服务器出现断电、重启之类的情况,我们很可能会出现数据丢失的情况,所以不建议...
2019-06-19 21:36:32
220
转载 session共享方式
第一种方式:nginx配置 ip_hash轮询机制实现,这个实现方式简单,但是有很大的局限性,同一个ip,会被分配始终访问同一个tomcat,因为ip不变,nginx计算出来的hash也就不变,除非这个tomcat挂了,才会分配到另外一个tomcat访问,万一出现这种情况,session就会丢失,分配到的新tomcat并没有它在前一个tomcat里的session,所有,这并不是session共享...
2019-06-19 14:19:55
364
转载 Mysql的my.ini文件
第一步,我们找到mysql安装文件下面的my.ini文件,打开可以看到第一句:# MySQL Server Instance Configuration FileMysql服务实例配置文件好,咱们撇开那些不是那么重要的字幕,直接进入重点,看看它可以配置些什么,和到底配置了些什么,那么带着这样的心态,我们往下看。CLIENT SECTION客户端章节:[client]po...
2019-06-06 16:27:10
2454
转载 windows设置tomcat定时重启(关闭,启动)设置成服务,并重启服务
一、配置windows设置tomcat定时重启1.首先将tomcat注册为服务,先打开tomcat的bin目录下service.bat文件,修改下面的值,这是sevvice的注册名称和显示名称,一般可使用默认值。set SERVICE_NAME=tomcat-7.0.59 (注册名称)set PR_DISPLAYNAME=tomcat-7.0.59(显示名称)打开cmd命令窗口,...
2018-10-26 14:25:25
182
转载 IntelliJ Idea 常用快捷键列表
Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,可以快速打开类C...
2018-09-18 13:07:49
92
转载 利用JAXB实现java实体类和xml互相转换
1、应用场景在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换2、Demo2.1 student.java 实体类,包含list(set同理)、map、Teacher、Date 类型的属性package jaxb;import java.util.Date;import java.util.List;import ...
2018-09-18 11:34:29
858
转载 java使用省略号代替多参数(参数类型... 参数名)
J2SE 1.5提供了“Varargs”机制。借助这一机制,可以定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。本文介绍这一机制的使用方法,以及这一机制与数组、泛型、重载之间的相互作用时的若干问题。到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须...
2018-09-18 10:14:46
253
转载 hibernate基于注解的维护权反转:@OneToMany(mappedBy=)
hibernate基于注解的维护权反转:@OneToMany(mappedBy=)背景说明:首先是SSH环境下,对象基于注解的方式映射到数据库;昨天遇到一个比较纠结的问题,@OneToMany(mappedBy="xxx"), mappedBy属性有什么用,然后是写在哪一边?还有一个问题是:@JoinColumn(name="xxxxx"),JoinColumn有什么用? 先贴...
2018-09-14 10:12:11
625
转载 WebService中的WSDL详细解析
WebService中的WSDL详解 有人在WebService开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户(或后台)给你一个WSDL文件(或网址),说按照上面的进行适配, 这时就要对WebService的WSDL有一定的理解,本文将对WSDL(WebService描述语言)进行详细总结。 WSDL (Web Services Descrip...
2018-07-19 20:18:15
10427
转载 JaxWsProxyFactoryBean 与 JaxWsDynamicClientFactory
1、 JaxWsProxyFactoryBean 简介:调用方式采用了和RMI类似的机制,即客户端直接服务器端提供的服务接口(interface),CXF通过运行时代理生成远程服务的代理对象,在客户端完成对webservice的访问;几个必填的字段:setAddress-这个就是我们发布webservice时候的地址,保持一致 缺点:这种调用service的好处在于调用过程非常简单,...
2018-07-16 14:00:56
2039
转载 Java 对象的生命周期
在Java中,对象的生命周期包括以下几个阶段:1. 创建阶段(Created)2. 应用阶段(In Use)3. 不可见阶段(Invisible)4. 不可达阶段(Unreachable)5. 收集阶段(Collected)6. 终结阶段(Finalized)7. 对象空间重分配阶段(De-allocated) 图1. Java...
2018-05-11 09:59:50
128
转载 Java的GC机制及算法
GC的阶段 对每个对象而言,垃圾回收分为两个阶段:finalization和reclamation。 finalization: 指运行这个对象的finalize的方法。reclamation: 回收被这个对象使用的内存。GC的过程的基本步骤 首先确认对象是不可达的,即将被回收。其次,如果对象有finalize方法,那么对象被添加进finalization queue中;然后在某个时间点final...
2018-05-10 15:24:12
276
转载 HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。哈希表那么我们能不能综...
2018-05-10 14:27:04
92
转载 Java 泛型
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型)? - 表示不确定的java类型泛型的...
2018-05-09 10:28:39
92
转载 JAVA集合类汇总
一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、层次关系如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是...
2018-05-08 16:14:02
126
mysql-connector-java-5.1.6.jar
2017-11-15
关于mybatis的sql语句问题
2016-06-13
有关springmvc方面的问题
2016-03-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人