自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 Mysql存储引擎innodb关键特性中的参数

#查看innodb的版本(mysql的版本一致)show VARIABLES LIKE 'INNODB_version'#查看innodb的IO线程数(默认读写的的线程数都为4)SHOW VARIABLES LIKE 'innodb_%io_threads'#查看线程状态SHOW ENGINE INNODB STATUS#查看innodb的purge线程(1.2之后默认是4个)SHOW VARIABLES LIKE 'INNODB_purge_threads'#查看innodb的缓.

2022-01-05 16:43:49 955

原创 Redis分布式技术

Redis的主从复制在redis.conf配置文件中找到 # replicaof <masterip> <masterport> 打开并配置从属于哪个主节点 启动后可以使用 slaveof host port指定从属于哪个主节点 查看主从的关系 info replication只有主节点能写入数据,从节点只能读数据 slaveof no one 从主节点中脱离redis主从复制的不足没有解决高可用问题 需手动切换主从高可用思路服务端:自动切换主从 客.

2021-12-03 11:32:53 422

原创 synchronized之CAS机制的实现原理

CAS机制(比较与替换)CAS方法会传递三个参数,第一个参数V表示要更新的变量,第二个参数E表示期望值,第三个参数U表示更新后的值。更新的方式是,如果V==E,表示预期值和实际值相等,则将V修改成U并返回true,否则修改失败返回false。在Java中的Unsafe类中提供了CAS方法,针对int类型变量的CAS方法定义如下。//这是java的本地方法public final native boolean compareAndSwapInt(Object paramObject, l.

2021-12-02 10:33:27 1158

原创 Java多线程学习之synchronized实现原理(2)

偏向锁的原理偏向锁可以认为是在没有多线程竞争的情况下访问synchronized修饰的代码块的加锁场景,也就是单线程执行的情况下。偏向锁的作用就是,在没有线程竞争的情况下去访问synchronized同步代码块时,会尝试先通过偏向锁来抢占访问资格,这个抢占过程是基于CAS来完成的,如果抢占锁成功,则直接修改对象头中的锁标记。其中,偏向锁标记为1,锁标记为01,以及存储当前获得锁的线性ID。而偏向锁的意思就是,如果线程X获得了偏向锁,那么当线程X后续再访问这个同步方法时,只需要判断对象中的线程ID和线

2021-12-01 17:19:43 403

原创 synchronized同步锁实现原理(1)

同步锁的实现猜想同步锁的核心特性是排他,要达到这个目的,多个线程必须去抢占同一个资源。 在同一时刻只能有一个线程执行加了同步锁的代码,意味着同一时刻只允许一个线程抢占到这个共享资源,其余没抢占到的线程只能等待。 处于等待状态的线程不能一直占用CPU资源,如果没抢占到锁就要被阻塞等待,并释放CPU资源。 如果非常多的线程都被阻塞了,那么我们要通过一个容器来存储线程,当获得锁的线程执行任务并释放锁后,要从这个容器中唤醒一个线程,被唤醒的线程会再次尝试抢占锁。synchronized同步锁标记..

2021-12-01 09:41:26 770 2

原创 Synchronized同步锁

导致线程安全的问题在于,存在多个线程2同时操作一个共享资源,需要解决这个问题,就需要保证对共享资源访问的独占性,因此人们在Java中提供了synchronized关键字,我们称之为同步锁,它可以保证在同一时刻,只允许一个线程执行某个方法或代码块。synchronized同步锁具有互斥性,这相当于线程由并行执行变成串行执行,保证了线程的安全性,但损失了性能。synchronized的使用方法作用在方法级别,表示针对m1()方法加锁,当多个线程同时访问m1()方法时,同一时刻只有一个线程能执行。

2021-11-29 16:46:02 3391

原创 java如何正确终止线程

线程通过start()方法启动后,会在run()方法执行结束后进入终止状态。stop()方法终止线程会导致的两个问题立即抛出ThreadDeath异常,在run()方法中任何一个执行指令都可能抛出ThreadDeath异常。 会释放当前线程所持有的所有锁,这种锁的释放是不控的。示例代码/** * stop()方法会出现的问题 * @author ZhangHao * @since 1.0.0 */public class ThreadStopExample extends Thr

2021-11-22 14:58:03 544

原创 Java中多线程

并发与并行并发:并发是指两个或多个任务在同一时间间隔内发生,比如在4核CPU上运行100个线程,由于核数限制,这100个线程无法在同一时刻运行,所以CPU只能采用时间片切换的方式来运行,如果这100个线程能够在1s内全部处理完成,那么我们可以认为当前的并发数为100. 并行:当有多个CPU核心时,在同一个时刻可以同时运行多个任务,这种方式叫并行。比如,4核CPU可以同时运行4个线程。在linux系统中可以通过命令ulimit -n查看,假如得到的结果是1024,那么该进程能够并行处理的连接数就是10

2021-11-22 11:29:37 1065

原创 Redis原理

发布订阅基本命令订阅频道:可以一次订阅多个(subscribe channel-1 channel-2 channel-3) 向指定频道发布消息:(publish channel-1 "message") 取消订阅: unsubscribe channel-1 按规则(pattern)订阅频道:psubscribe *sport(关注运动消息);psubscribe news*(关注所有新闻);psubscribe news-weather(关注天气新闻)事务命令multi: 开启事务 .

2021-11-16 16:07:59 1480

原创 Redis基础

关系型数据库的特点基于行存储数据,二维的模式 存储结构化的数据,数据存储有固定的模式(schema) 表与表之间存在关联(relationship) 大都支持sql(结构化查询语言)的操作,支持复杂的关联查询 通过支持事务ACID来提供严格或者实时的数据一致性关系型数据库的不足要实现扩容的话,只能向上(垂直)扩展,不支持动态的扩缩容 表结构修改困难,因此存储的数据格式也受到限制 高并发情况下,基于磁盘的读写压力比较大。非关系型数据库的特点存储非结构化的数据,比如文本、图片、音频、

2021-11-13 16:33:27 666

转载 Java几种时间格式的转化

Java几种时间格式的转化_小木子~的博客-CSDN博客博主写的很好很全面。

2021-10-15 15:57:40 109

原创 mysql根据某字段的指定顺序排序

select *from table_namewhere <字段名> in (字段值,字段值,...)order by field(字段名, 字段值,字段值,...)

2021-10-13 10:43:43 488

原创 InfluxDB添加用户认证

创建一个admin用户#显示用户SHOW USERS#创建用户CREATE USER "username" WITH PASSWORD 'password'#创建管理员权限的用户CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES#删除用户DROP USER "username"默认情况下,认证在配置文件是禁用的需要在配置文件里把[http]下的auth-enabled选项设置为true。

2021-10-13 09:49:56 608

原创 常用的正则表达式

起始符“^” 结束符“$” 字符词量“?”0-1次 “+”≥1次 “*” 任意次 {n}固定n次 {n,}n次及以上 {m,n}≥m&&≤n次“·”任意字符 “[]”字符范围 “[^]”排除字符范围

2021-09-15 15:45:54 552

原创 使用httpclient上传文件

//http请求文件下载接口 public static String doPostFileUpload(String url, MultipartFile[] files, DrawTemplate drawTemplate) { CloseableHttpClient httpClient = HttpClients.createDefault(); String result = ""; HttpEntity httpEntity = null.

2021-08-17 15:23:15 608

原创 SQL查询语句(查询结果排序)

SQL查询语句(查询结果排序)1.以指定次序对查询结果排序//显示部门10中的员工名字、职位和工资,并按照工资升序排序select enamel, job, salfrom empwhere deptno = 10order by sal asc//显示部门10中的员工名字、职位和工资,并按照工资降序排序select enamel, job, salfrom empwhere deptno = 10order by sal desc2.按多个字段排序//在emp表中首

2021-04-13 17:02:40 4491

原创 SQL查询语句(检索记录)

SQL查询语句(检索记录)1.从表中检索所有行和列//查看表中的所有行和列select * from emp2.从表中查看满足条件的行select * from emp where deptno = 10 3.从表中查看满足多个条件的行//查找部门10中,所有得到提成的员工,以及查找部门20中,所有工资不足2000元的员工select * from empwhere deptno = 10or comm not nullor deptno = 20 and sal.

2021-04-12 15:11:39 1059

原创 将一个单词中的所有大写字母全部转回为小写字母

思路如下String类型的字符串转化为char[] 遍历数组找到大写字母在此基础上+32 最后返回字符串数字0-9是由ASCII码48-57 大写字母A-Z是由ASCII码65-90 小写字母a-z是由ASCII码97-122 public static String toLowerCade(String str){ char[] chars = str.toCharArray(); for (int i = 0; i < chars.length;

2021-03-10 18:11:44 593

原创 SpringBoot整合WebSocket+Redis实现实时数据推送到web界面

实现的主要过程

2021-03-09 20:35:33 2745 1

原创 MQTT+Flink实现实时消息的订阅与发布

整体的大致思路配置mqtt服务(MqttConfig.java); 用一实现类MqttConstumer实现FLink的RichParallelSourceFunction<String>通过flink的StreamExecutionEnvironment类的实例调用实例addSource()将Mqtt发布的消息转化为flink需要的流数据; 使用一个MsgCallback实现MqttCallback的实现类,在收到消息的时候实现方法会掉; flink可以对流数据进行一系列的筛选、统计

2021-03-09 17:12:33 5231 3

原创 java中的this和super关键字

java中的this和super关键字对象实例化时,至少有一条从本类出发抵达Object的通路,而打通这条路的两个主要关键字就是this和super。但是this和super往往是默默无闻的,在很多情况下可以省略,比如:本类方法调用本类属性 本类方法调用本类的另一个方法 子类构造方法隐含调用super()任何类在创建之初,都有一个默认的空构造方法,他是super()的一条默认通路。构造方法的参数列表决定了调用通路的选择;如果子类指定调用父类的某个构造方法,super就会不断往上溯源;如果没有指

2021-03-07 20:24:45 84

原创 java的访问权限控制

访问权限控制面向对象的核心思想之一就是封装,只把有限的方法和成员公开给别人,这也是迪米特法则的内在要求,使外部类调用方对方法体内的实现细节知道尽可能少,如何实现封装呢?需要使用那些关键字来限制类外部对类内部属性和方法的随意访问,这些关键字就是访问权限控制符。java中的访问权限包括四个等级,权限控制严格程度由低到高,如下表所示。访问权限控制及可见范围 访问权限控制符 任何地方 包外子类 包 内 类 内 public OK OK OK OK..

2021-03-07 17:18:08 963 5

原创 Java中的类以及内部类实现

Java中类的定义Java中类的定义由访问级别、类型、类名、是否抽象、是否静态、泛型标识、继承或实现关键字、父类或接口名称等组成。类的访问级别有pubic和无访问控制符,类型为class、interface、enum。Java类主要由两部分组成:成员和方法。在定义Java类时,推荐首先定义变量,然后定义方法。公有方法是类的调用者和维护者最关心的方法,因此最好首屏展示; 保护方法虽然只被子类关心,但也可能是模板设计模式下的核心方法,因此重要性仅次于公有方法; 私有方法对外部来说是一个黑盒...

2021-03-07 16:38:45 400 1

原创 HTTPS协议

HTTPS协议(全称是HTTP over SSL,即在HTTP传输上增加了SSL协议的加密能力)

2021-01-30 11:02:17 528 1

原创 XSS(脚本攻击)和CSRF(请求伪造攻击)

XSS(跨站脚本攻击)xss是指黑客通过向正常用户请求的HTML页面中插入恶意的脚本。XSS主要用于信息窃取、破坏等目的。技术原理: 后端Java开发人员、前端开发人员都有可能造成XSS漏洞,比如下面的模板文件就可能导致反射型XSS。<div><h3>反射型XSS示例</h3><br>用户:<%= request.getParameter("userName") %><br>系统错误信息:<%= request.get

2021-01-25 11:26:21 291

原创 如何防止SQL注入

如何防止SQL注入过滤用户输入参数中的特殊字符,从而降低被SQL注入的风险。禁止通过字符串拼接的SQL语句,严格使用参数绑定传入的SQL参数。合理使用数据库访问框架提供的防注入机制。比如MyBatis提供的#{}绑定参数,从而防止SQL注入。同时谨慎使用${},因为它相当于使用字符串拼接SQL语句。...

2021-01-21 14:04:19 231

原创 TCP/IP的三次握手与四次挥手

TCP/IP协议1.TCP/IP(Transmission Control Protocol / Internet Protocol) 中文译为传输控制协议/因特网互联协议。2.其他知名的协议还有HTTP、HTTPS、FTP、SMTP、UDP、ARP、PPP、IEEE802.x等。链路层: 单个0,1是没有意义的,链路层以字节为单位把0与1进行分组,定义数据帧,写入源和目标主机的物理地址、数据、检验位来传输数据。-网路层: 根据IP定义网络地址,区分网段。子网内根据地址解析协议(ARP)进行MA

2021-01-08 11:31:13 273

原创 Java的流库-2021-01-05

Java SE 8 的流库1.迭代与流的操作2.流的创建1.迭代与流的操作对列表中的长单词计数1.迭代操作long count = 0;for(String w : words){ if.(w.length() > 12) count++;}2.使用流操作实现相同功能long count = words.stream().filter(w -> w.length() > 12),count();使用流代替循环的好处: 流操作遵循“做什么而非

2021-01-05 13:01:08 134

原创 Spring中的编程思想

Spring的设计初衷(简化开发)四个基本策略 基于POJO的轻量级和最小侵入性编程 通过依赖注入和面向接口松耦合 基于切面和惯性进行声明式编程 通过切面和模板减少样板式代码spring的编程思想OOP :Object Oriented Programming (面向对象编程)用程序归纳总结生活中的一切事物。(封装,继承,多态)。 BOP:BeanOriented Programming (面向bean编程)面向Bean设计程序,解放程序员。(一切从Bean开始)。 AO...

2020-10-28 21:16:46 434

原创 学习笔记——JVM(2)java虚拟机、Java对象内存布局

java虚拟机Java对象内存布局

2020-09-02 17:03:59 99

原创 学习笔记——JVM(1)运行时数据区(JVM内存模型)

JVM(1)JVM运行时数据区1.方法区(Method Area)(JDK1.7:PermSpace永久代)(JDK1.8:MetaSpace元空间)方法区只有一个,线程共享的内存区域【线程不安全】,生命周期和虚拟机是一样的。 方法区中存储已经被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存。 【逻辑上属于堆的一部分】,垃圾回收一般不讨论方法区的垃圾回收。 内存不够抛出OutOfMemoryError(OOM)。2.堆(Heap)堆只有一个,线程共享的内存区域【

2020-09-02 10:21:06 123

原创 学习笔记——装饰器模式

装饰器模式(Decorator Pattern)定义:装饰器模式也叫包装模式,是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案。属于结构型模式。适用场景用于扩展一个类的功能或给一个类添加附加职责 动态的给一个对象添加功能,这些功能可以在动态的撤销通用写法public abstract class Component { /** * 示例方法 */ public abstract void operatio

2020-08-25 17:51:00 148

原创 学习笔记——门面模式

门面模式(Facade Pattern)定义:门面模式又叫外观模式,提供了一个统一的接口,用来访问子系统的一群接口。特征:门面模式定义了一个高层接口,让子系统更容易使用。属于结构性模式门面模式的适用场景子系统越来越复杂,增加门面模式提供简单接口构建多层系统结构,利用门面对象作为每层的入口,简化层间调用门面模式的通用写法(general)// 外观角色 Facadepublic class Facade { private SubSystemA a = new Su

2020-08-18 11:38:56 174

原创 学习笔记——代理模式

代理模式(Proxy pattern)——SpringAOP是用代理模式实现的。定义:代理模式是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用属于结构型设计模式生活中的代理模式(这些都是动态代理)房产中介 快递小哥 黄牛党(抢票在卖给需要的人)代理模式适用场景保护目标对象 增强目标对象代理的通用写法(general)public interface ISubject { void request();}publi

2020-08-18 09:58:35 116

原创 学习笔记:设计模式之建造者模式

建造者模式(Builder Pattern)定义:建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 特征:用户只需要指定需要建造的类型就可以获得对象,建造过程及细节不需要了解。 属于创建型模式。适用场景适用于创建对象需要很多步骤,但是步骤的顺序不一定固定。 如果一个对象有非常复杂的内部结构(很多属性) 把复杂对象的创建和使用分离通用写法@Datapublic class Product { private String name;

2020-08-09 18:48:29 137

转载 学习笔记(13):第2章 架构师内功心法之设计模式 -原型模式的优缺点及小结

不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。 我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。 本章内容将按照创建型模式(工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式)、结构...

2020-08-03 18:08:36 162

转载 学习笔记(13):第2章 架构师内功心法之设计模式 -分析原型模式浅克隆带来的问题

不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。 我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。 本章内容将按照创建型模式(工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式)、结构...

2020-08-03 18:01:16 99

转载 学习笔记(12):第2章 架构师内功心法之设计模式 -原型模式的定义及应用场景

不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。 我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。 本章内容将按照创建型模式(工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式)、结构...

2020-08-03 16:44:57 82

原创 com.alibaba.druid.pool.DruidDataSource - init datasource error

今天遇到了这个错误,在网上找了半天答案都不适合我的。错误的主要原因:我的MySQL版本是8.0以上的版本,我pom.xml引用的mysql-connector-java.jar的版本是5.0的版本; 开始我用的JDBC是com.mysql.jdbc.Driver,而8.0以上版本的MySQL要用com.mysql.cj.jdbc.Driver; 而且Url必须加上时区,之前我没写;修改后: jdbc.driver=com.mysql.cj.jdbc.Driver jd.

2020-07-27 21:50:09 10351 2

转载 学习笔记(11):第2章 架构师内功心法之设计模式 -单例模式详解(下)

不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。 我们把设计模式作为一个专题,主要是学习设计模式是如何总结经验的,把经验为自己所用。学设计模式也是锻炼将业务需求转换技术实现的一种非常有效的方式。 本章内容将按照创建型模式(工厂方法模式、抽象工厂模式、单例模式、原型模式、建造者模式)、结构...

2020-07-25 22:57:11 97

空空如也

空空如也

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

TA关注的人

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