自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 问答 (2)
  • 收藏
  • 关注

原创 Rysnc安装方法

这将会安装 gcc 和其他一些必需的编译工具。如果在编译或安装过程中遇到任何问题,请根据提示的错误信息来解决,或者查找与具体问题相关的资源。请确保系统中安装了编译工具,比如 Xcode Command Line Tools。在 macOS 系统中,默认情况下并没有预安装。是 macOS 系统自带的工具,它可以完成与。下载完毕后,你可以按照以下步骤来编译和安装。使用服务器指定的文件名来保存下载的文件。

2024-02-06 12:51:55 150

原创 Spring Boot中如何实现bean加载

如果满足条件,返回true,表示条件满足,对应的bean将被创建;上述代码中,@Configuration注解表示该类是一个配置类,@Bean注解表示创建一个bean对象。在这里,我们使用@Conditional(EnvironmentCondition.class)注解来设置条件,即只有在EnvironmentCondition类中的条件满足时,才会创建对应的bean。以上示例中,根据当前环境的属性值来创建不同的DataSource对象,可以根据具体环境的不同来创建适合该环境的bean对象。

2023-09-26 11:07:46 1120

原创 AQS原理

AQS 简单介绍AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore,其他的诸如 ReentrantReadWriteLock,SynchronousQueue,FutureTask(jdk1.7) 等等皆是基于 AQS 的。当然,我们自己也能利用 A

2020-10-12 15:17:06 3002

原创 关于死锁的总结

死锁是多个线程在运行过程中互相竞争资源发生的僵局,若无外力作用,它们都无法推进下去。死亡如风,常伴吾身。窝窝头,嘿嘿!死锁的四个必要条件互斥条件:一个资源每次只能被一个进程使用。请求和保持条件:一个进程因为请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已经获得的资源在没有使用完之前,不能强行剥夺。循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。解决死锁的基本方法预防死锁:1)资源一次性分配:一次性分配所有资源,这样就不会有请求了(破坏请求条件)2)只要有一个资源得

2020-08-01 21:20:07 342

转载 简单理解jdk的动态代理

1. 静态代理静态代理其实就是我们的装饰者设计模式,首先定义一个接口类,然后定义这个接口类的实现类,对每一个实现类定义一个代理类,这里面代理类里面传入这个实现类的引用。1.1 接口类public interface PersonInterface { void say();}1.2 实现类public class Students implements PersonInterface{@Overridepublic void say() { System.out.pr

2020-07-31 22:53:42 376

原创 由mybatis二级缓存和redis引起的思考

一级缓存Mybatis一级缓存作用域是session,session commit之后缓存就失效了二级缓存Mybatis二级缓存作用域是sessionfactory,该缓存是以namespace为单位的(也就是一个Mapper.xml文件),不同namespace下的操作互不影响。所有对数据表的改变操作都会刷新缓存。但是一般不要用二级缓存,例如在UserMapper.xml中有大多数针对user表的操作。但是在另一个XXXMapper.xml中,还有针对user单表的操作。这会导致user在两个命名空

2020-07-30 19:56:05 840

原创 单例模式的饿汉模式,懒汉模式,双重校验模式详解

1.饿汉式ublic class singleton { //饿汉式 private static singleton instance=new singleton(); private singleton(){} public static singleton getInstance(){ return instance; }}2.懒汉式class SingletonLazy{ //懒汉式 private static S

2020-07-21 17:17:32 620

原创 关于对象头引发的思考,对象在内存中是如何存储的

今天在看并发编程这本书的时候,看到了对象头这一名词(如下图所示),这是我第一次接触这个概念,或是说第一次留意到这个概念,这不仅引起了我的深思,对象到底是以何种形式存储在内存中呢首先,我上网搜了一下对象在内存中的存储结构,经过筛选得到这样一张图,了解到对象的内存结构包括对象头(MarkWord,类指针,数组长度),实例数据,对齐(为了加快访问速度,java对象的大小必然是8的整数倍)三个部分。下面直接上代码,看看对象的每个部分到底是怎么样的new Object() 和 new byte[0]占多少字

2020-07-20 12:38:10 504

原创 域名解析获得IP地址(全方位分析输入网址后计算机到底做了什么)

当你在浏览器地址栏输入www.baidu.com,www.bilibili.com时,你有想过浏览器是怎么通过域名解析到IP,定位到服务器吗,本文将帮你解决这个疑惑,准备上车!首先直接上图,整个流程如图所示:

2020-07-19 21:32:27 3832

转载 cookie和session详解和区别

写的非常详细,膜拜https://www.cnblogs.com/l199616j/p/11195667.html

2020-07-19 12:50:14 173

原创 Mybatis中的缓存详解

Mybatis中缓存分两种,一级缓存和二级缓存。一级缓存一级缓存 Mybatis的一级缓存是指SQLSession,一级缓存的作用域是SQlSession, Mabits默认开启一级缓存。 在同一个SqlSession中,执行相同的SQL查询时;第一次会去查询数据库,并写在缓存中,第二次会直接从缓存中取。 当执行SQL时候两次查询中间发生了增删改的操作,则SQLSession的缓存会被清空。 每次查询会先去缓存中找,如果找不到,再去数据库查询,然后把结果写到缓存中。 Mybatis的内部缓存使用一个Ha

2020-07-19 12:35:56 582

转载 栈帧中局部变量表,操作数栈,动态链接,方法出口的理解

栈帧的概念栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用至执行完成的过程,都对应着一个栈帧在虚拟机栈里从入栈到出栈的过程。一个线程中方法的调用链可能会很长,很多方法都同时处于执行状态。对于JVM执行引擎来说,在在活动线程中,只有位于JVM虚拟机栈栈顶的元素才是有效的,即称为当前栈帧,与这个栈帧相关连的方法称为当前方法,定义这个方法的类叫做当前类。执行引擎运行的所有字节码指令都只针对当前

2020-07-19 10:03:36 5163

原创 Java中的四种引用类型

Java中的四种引用类型:强引用、软引用、弱引用和虚引用有四种引用类型的原因在Java中是由JVM负责内存的分配和回收,这是它的优点(简化编程者的工作,不需要像C语言那样去手动操作内存),但同时也是它的缺点(不够灵活,垃圾回收对于编程者来说是不可控的)。在JDK1.2以前,如果一个对象不被任何变量引用,则程序无法再次使用这个对象,这个对象最终会被GC(GabageCollection:垃圾回收)。但是如果之后可能还会用到这个对象,就只能去新建一个了,这其实就降低了JVM性能,没有达到最大的优化策略。

2020-07-18 17:51:18 382

原创 有fullGC 为什么还会发生oom(OutOfMemoryError)

jvm有fullGc 为什么还会出现oom(OutOfMemoryError)问题:既然在触发full gc的时候,年老代和持久代都会被清理,那么为什么还会出现oom问题?而且对于强引用,当内存空间不足,java虚拟机宁愿抛出oom错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题;那么full gc机制的存在有何意义?还是说fgc主要针对的是驻扎在老年的的软引用? 既然如此,对于四种引用的方式如何抉择?总不能所有对象都创建引用队列使用软引用或弱引用吧?举个栗子类比下:为

2020-07-18 15:55:11 1379

原创 HTTP请求消息数据格式详解(请求头,请求行,请求体)

HTTP:概念:Hyper Text Transfer Protocol 超文本传输协议传输协议:定义了,客户端和服务器端通信时,发送数据的格式特点:基于TCP/IP的高级协议默认端口号:80基于请求/响应模型的:一次请求对应一次响应无状态的:每次请求之间相互独立,不能交互数据历史版本:1.0:每一次请求响应都会建立新的连接1.1:复用连接请求消息数据格式:1.请求行请求行包括三部分:请求方式 请求url 请求协议/版本GET /logi

2020-07-14 23:08:18 6368

原创 Java中Object对象方法

1.clone() 复制2.getClass() 获取对象的class3.equals() 对象值比较,重写equals方法必须重写hashcode,对象的约定,例如不重写,hashMap的kv不一致;4.hashCode() 对象的hash值5.tostring() 默认方法是 包名@改对象的hashCode十六进制表示6.notify() 线程唤起7.notifyall() 线程全部唤起8.wait() 线程等待9.finalize() 基本没啥用,垃圾回收前调用的方法...

2020-07-06 18:52:38 439

转载 深入分析Sleep(0)与Sleep(1)的区别

之前看到Sleep(0)以为是让线程不等待,字面理解,其实大错特错!!!目的:有时候我们想让线程不被调度一定的时间,也就是说让线程睡眠一段时间。API 接口:在 Win32中可以调用 Sleep,SleepEx 和 SwitchToThread 三个API。VOID WINAPI Sleep(DWORD dwMilliseconds);DWORD WINAPI SleepEx(DWORD dwMilliseconds, BOOl bAlertable);BOOl WINAPI SwitchTo

2020-07-06 18:36:06 1683

原创 CPU,缓存,内存,外存全解析

一:缓存定义:凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为Cache被扩充概念:如今缓存的概念已被扩充,不仅在CPU和主内存之间有Cache,而且在内存和硬盘之间也有Cache(磁盘缓存),乃至在硬盘与网络之间也有某种意义上的Cache──称为Internet临时文件夹或网络内容缓存等。存放的数据:内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存作用:用于协调两者数据传输速度差异的结构实际例子:缓存是CPU(Central Processing

2020-07-05 20:25:27 8462

原创 反转链表(自用复习)

2020-07-03 22:18:44 156

原创 java 二叉树的遍历(代码实现)

一、前序遍历访问顺序:先根节点,再左子树,最后右子树;1)递归实现public void preOrderTraverse1(TreeNode root) { if (root != null) { System.out.print(root.val + "->"); preOrderTraverse1(root.left); preOrderTraverse1(root.right); }}2)非递归实现public vo

2020-07-03 18:43:50 522

原创 一文读懂JVM内存栈

JVM栈(数据结构就是栈结构,FILO:fisrt in last out,先进后出)当一个线程启动的时候,栈内存都会为这个线程开辟一块单独的区域来供这个线程使用。举例:假如现在有线程1、线程2两个线程进行了下图的操作:那么,此时栈内存会为线程1、线程2分配两块内存空间:分配好的空间中又是什么结构呢?我们继续引出“栈帧”这个概念,栈帧其实就是每个线程在运行具体方法的时候所拥有的独立的内存空间,进而保证各自局部变量的作用域范围。如图:局部变量表和操作数栈:结合代码说明一下局部变量表和操作数栈

2020-06-30 18:20:35 407

原创 二叉树的深度优先遍历和广度优先遍历

数据结构中的有两个比较重要的算法。深度优先搜索和广度优先搜索。二叉树中的深度搜索就是对一个分支进行遍历,而广搜就是一层一层的搜索。一.深度优先遍历深度优先遍历包括:前序遍历,中序遍历,后序遍历三部分1.前序遍历2.中序遍历3.后序遍历一.广度优先遍历使用队列实现逐层入队,这一层入完,先进先出出队,出队的同时孩子节点入队...

2020-06-28 20:08:53 685

转载 Arrays.sort实现降序排序

在调用Arrays.sort()对数组进行排序时,默认是升序排序的,如果想让数组降序排序,有下面两种方法:1.Collections的reverseOrderimport java.util.*; public class Main { public static void main(String[] args) {// 注意这里是Integer,不是int Integer[] arr={9,8,7,6,5,4,3,2,1}; Arrays.s

2020-06-26 11:25:05 23007

原创 JAVA核心一知识点总结(一)

java的优势:跨平台windows下开发的linux也能使用jdk和jre的区别:jdk包括jre.java->.class文件jie将.class翻译成操作系统可以识别的语言main方法的特点:1.可以通过外界触发2.静态方法,程序的入口注释:功能,作者,创建时间,修改时间,上一次的修改人float精度丢失问题符号位阶位数值位float:1823double:11152数据类型boolen 32位 4字节char 不同

2020-06-16 16:00:25 324

原创 I/O操作四大抽象类及其字类 (装饰器模式)

装饰器模式

2020-06-14 16:35:36 246

原创 前端怎么接到后端抛出异常500的message值

500也是可以进success:function的,惊喜吧,惊喜吧!

2020-06-12 19:04:42 4534 3

原创 sql中的if和else

MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:IF表达式IF(expr1,expr2,expr3)如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。SELECT IF(sva=1,"男","女") AS s FROM table_name WHERE sva

2020-06-11 09:42:17 55858

转载 @Transactional(rollbackFor=Exception.class)的使用

java阿里巴巴规范提示:方法【edit】需要在Transactional注解指定rollbackFor或者在方法中显示的rollback。1.异常的分类先来看看异常的分类error是一定会回滚的这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常可查的异常(checked exceptions):Exception下除了RuntimeException外的异常不可查的异常(unchecked exceptions):RuntimeException

2020-06-06 23:28:27 406

原创 打印机打印小票代码(附工具类,接口讲解和源码)

废话不多说,直接上源码1.工具类 PrintDeviceUtilpackage com.ncxp.easy.util;import com.alibaba.fastjson.JSONObject;import org.springframework.beans.factory.annotation.Value;import java.io.IOException;import java.util.HashMap;import java.util.Map;/** * 设备打印工具类

2020-06-04 10:36:41 3363

原创 一个接口多个实现类,controller层如何操作

今天,写代码时,突发奇想,每次写Service层时都是一个接口对应一个实现类,如果有多个实现类实现同一个接口,那么在Controller层中,注入后调用,咋知道到用的是哪个接口的方法,经过一番测试,和查找资料,终于找到了结果:一个接口多个实现类,需注入指定的实现类例如:Interface 接口有两个实现类 InterfaceImpl1 和 InterfaceImpl2//实现类1@Servicepublic class InterfaceImpl1 implements Interface

2020-06-03 22:04:50 2510

原创 动态生成table的JS(笔记)

var table = document.getElementById("classTable") ; //表格行数 var index = table.rows.length-1 ; var row = 1; function add(){ var tab = document.getElementById("classTable") ; //表格行数 var row1 = tab.rows.length-1 ;

2020-06-03 16:35:45 172

原创 jQuery.validator代码(导入依赖后可直接使用)

//配置通用的默认提示语 $.extend($.validator.messages = { required: "输入不能为空.", remote: "用户名已经存在.", // 自己定义 email: "请输入一个有效的电子邮件地址.", url: "请输入一个有效的URL.", date: "请输入一个有效的日期.", dateISO: "请输入一个有效的日期 ( ISO ) ( 例:2014/08/28 ).",

2020-06-03 16:31:29 416

原创 mysql中字符串截取函数总结

1、从左开始截取字符串left(str, length) 说明:left(被截取字段,截取长度)例:select left(content,200) as abstract from my_content_t 2、从右开始截取字符串right(str, length) 说明:right(被截取字段,截取长度)例:select right(content,200) as abstract from my_content_t 3、截取字符串substring(str, pos) su

2020-06-01 18:35:52 817

原创 java接口中的default方法和static方法

在JAVA8之前java中的接口类型旨在定义类型的接口规约,并不能拥有自己的方法实现,具体实现完全交由实现类自己完成。在java8以后,接口中可以添加使用default或者static修饰的方法default方法default修饰方法只能在接口中使用,在接口种被default标记的方法为普通方法,可以直接写方法体。1.实现类会继承接口中的default方法如果接口中有default方法:public interface demo { public default void demoFun(){

2020-06-01 09:32:17 3797 3

原创 MYSQL时间相关函数总结(二) 日期、时间戳、字符串互相转换

日期、时间戳、字符串互相转换#时间日期转字符串 相当与Oracle中的to_char函数select date_format(now(), '%Y-%m-%d'); #结果:2017-02-27#时间转时间戳select unix_timestamp(now()); #结果:1488160428#字符串转时间select str_to_date('2017-02-27', '%Y-%m-%d %H'); #结果:2017-02-27 00:00:00select str_to_da

2020-05-13 18:38:15 686

原创 MYSQL时间相关函数总结(一) 时间差函数 timestampdiff、datediff、timediff

一、时间差函数:timestampdiff语法:timestampdiff(interval, datetime1,datetime2)结果:返回(时间2-时间1)的时间差,结果单位由interval参数给出。interval参数意义frac_second毫秒(低版本不支持,用second,再除于1000)second秒minute分钟hour小时day天week月quarter季度year年ps:注意:MySQL 5

2020-05-13 18:32:49 3957

原创 tomcat端口号作用及区别详解

从tomcat配置文件中,我们可以看出,在启动tomcat的时候默认启动了3个端口,分别是8080(8443)、8009、8005。一.8080(8443)端口<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />这个应该是我们最熟悉的一个,平常开发测试也经常用,该Connector用于监听浏览器发送的请求,设置为80后可

2020-05-09 09:51:56 9510

原创 SQL截取数据库某个字段中的一部分,SUBSTR()函数

substr()函数作用:用来截取数据库某个字段中的一部分。用法一:SBUSTR(str,pos);就是从pos开始的位置,一直截取到最后。用法二:SUBSTR(str,pos,len);这种表示的意思是,就是从pos开始的位置,截取len个字符(空白也算字符)。PS:如果pos为1(而不是0),表示从第一个位置开始。例子:SUBSTR(shop_order.createt...

2020-05-08 16:05:57 18579 1

原创 sql case when 的使用方法

Case具有两种格式。简单Case函数和Case搜索函数。–简单Case函数CASE sexWHEN ‘1’ THEN ‘男’WHEN ‘2’ THEN ‘女’ELSE ‘其他’ END–Case搜索函数CASE WHEN sex = ‘1’ THEN ‘男’WHEN sex = ‘2’ THEN ‘女’ELSE ‘其他’ END这两种方式,可以实现相同的功能。简单Case函数...

2020-04-26 22:56:33 482

转载 sql server order by 的一些高级用法

SQL SERVER数据库中order by的一些高级用法本文章属于转载文章,原博客地址为:https://blog.csdn.net/dieyingao/article/details/4196142先创建一个表create table ai(id int not null,no varchar(10) not null)go往表中插入数据insert into aisele...

2020-04-26 22:53:59 1836

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除