自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (131)
  • 收藏
  • 关注

转载 【高并发】synchronized原理是什么?这次彻底懂了!!

一、synchronized的基本使用synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码。(2)保证共享变量的修改能够及时可见。(3)有效解决重排序问题。从语法上讲,synchronized总共有三种用法:(1)修饰普通方法。(2)修饰静态方法。(3)修饰代码块。接下...

2020-03-30 16:28:35 1381

转载 【集合框架】JDK 1.8中的HashMap的实现原理,这次彻底懂了

前言HashMap在日常开发中基本是天天见的,而且都知道什么时候需要用HashMap,根据Key存取Value,但是存和取的时候那些操作却是很少去研究。同时在面试中也是面试官们必问的。以下是基于JDK1.8正文先看看HashMap的结构图:1. 先来认识一下HashMap中定义的一些需要了解的成员变量// hashMap数组的初始容量 16static final in...

2020-03-30 15:29:03 1275

原创 【高并发】如何解决可见性和有序性问题?这次彻底懂了!

Java内存模型是一个非常复杂的规范,网上关于Java内存模型的文章很多,但是大多数说的都是理论,理论说多了就成了废话。这里,我不会太多的介绍Java内存模型那些晦涩难懂的理论知识。 其实,作为开发人员,我们可以这样理解Java的内存模型:Java内存模型规范了Java虚拟机(JVM)如何提供按需禁用缓存和编译优化的方法。

2020-03-27 17:31:45 2316 1

原创 【高并发】一文秒懂Happens-Before原则

缓存导致了可见性问题,编译优化导致了有序性问题。也就是说解决可见性和有序性问题的最直接的办法就是禁用缓存和编译优化。但是,如果只是简单的禁用了缓存和编译优化,那我们写的所谓的高并发程序的性能也就高不到哪去了!甚至会和单线程程序的性能没什么两样!

2020-03-26 23:14:32 852

原创 【高并发】解密导致并发问题的第三个幕后黑手——有序性问题

编译器或者解释器为了优化程序的执行性能,有时会改变程序的执行顺序。但是,编译器或者解释器对程序的执行顺序进行修改,可能会导致意想不到的问题!CPU为了对程序进行优化,会对程序的指令进行重排序,此时程序的执行顺序和代码的编写顺序不一定一致,这就可能会引起有序性问题。

2020-03-25 22:07:00 2089

原创 【高并发】解密导致并发问题的第二个幕后黑手——原子性问题(文末有福利)

我们也可以这样理解原子性,就是线程在执行一系列操作时,这些操作会被当做一个不可拆分的整体执行,这些操作要么全部执行,要么全部不执行,不会存在只执行一部分的情况,这就是原子性操作。线程在执行某项操作时,此时如果CPU发生了线程切换,CPU转而去执行其他的任务,中断了当前线程执行的操作,这就会造成原子性问题。

2020-03-25 10:44:04 1010

原创 【高并发】一文解密诡异并发问题的第一个幕后黑手——可见性问题

可见性是一个线程对共享变量的修改,另一个线程能够立刻看到,如果不能立刻看到,就可能会产生可见性问题。在单核CPU上是不存在可见性问题的,可见性问题主要存在于运行在多核CPU上的并发程序。归根结底,可见性问题还是由CPU的缓存导致的,而缓存导致的可见性问题是导致诸多诡异的并发编程问题的“幕后黑手”之一。我们只有深入理解了缓存导致的可见性问题,并在实际工作中时刻注意避免可见性问题,才能更好的编写出高并发程序。

2020-03-24 12:55:30 2266 4

原创 【高并发】导致并发编程频繁出问题的“幕后黑手”

写在前面工作了3年的小菜同学,平时在公司只是做些CRUD的常规工作,这次,出去面试被面试官一顿虐啊!尤其是并发编程的知识简直就是被吊打啊。小菜心有不甘,回来找自己工作经验非常丰富的朋友大冰来帮助自己提升并发编程的知识,于是便有了接下来的一系列小菜学并发的文章。并发编程的难点并发编程一直是很让人头疼的问题,因为多线程环境下不太好定位问题,它不像一般的业务代码那样打个断点,deb...

2020-03-23 21:42:04 993

原创 【高并发】要想学好并发编程,关键是要理解这三个核心问题

写在前面写【高并发专题】有一段时间了,一些读者朋友留言说,并发编程很难,学习了很多的知识,但是在实际工作中却无从下手。对于一个线上产生的并发问题,又不知产生这个问题的原因究竟是什么。对于并发编程,感觉上似乎是掌握了,但是真正用起来却不是那么回事!其实,造成这种现象的本质原因就是没有透彻的理解并发编程的精髓,而学好并发编程的关键是需要弄懂三个核心问题:分工、同步和互斥。分工比较官方的解释为...

2020-03-22 14:47:27 11318 16

原创 高并发之——如何使用Java7提供的Fork/Join框架实现高并发程序?

Fork/Join框架位于J.U.C(java.util.concurrent)中,是Java7中提供的用于执行并行任务的框架,其可以将大任务分割成若干个小任务,最终汇总每个小任务的结果后得到最终结果。基本思想和Hadoop的MapReduce思想类似。主要采用的是工作窃取算法(某个线程从其他队列里窃取任务来执行),并行分治计算中的一种Work-stealing策略为什么需要使用工作窃取...

2020-03-21 11:22:12 1002

原创 高并发之——朋友去面试竟然栽在了Thread类的源码上

前言最近和一个朋友聊天,他跟我说起了他去XXX公司面试的情况,面试官的一个问题把他打懵了!竟然问他:你经常使用Thread创建线程,那你看过Thread类的源码吗?我这个朋友自然是没看过Thread类的源码,然后,就没有然后了!!!所以,我们学习技术不仅需要知其然,更需要知其所以然,今天,我们就一起来简单看看Thread类的源码。注意:本文是基于JDK 1.8来进行分析的。Thread类的...

2020-03-21 09:35:58 7114 22

原创 高并发之——浅谈AQS中的ReentrantLock、ReentrantReadWriteLock、StampedLock与Condition

ReentrantLock概述Java中主要分为两类锁,一类是synchronized修饰的锁,另外一类就是J.U.C中提供的锁。J.U.C中提供的核心锁就是ReentrantLock。ReentrantLock(可重入锁)与synchronized区别:(1)可重入性二者都是同一个线程进入1次,锁的计数器就自增1,需要等到锁的计数器下降为0时,才能释放锁。(2)锁的实现synchr...

2020-03-19 13:07:54 1438

原创 Java之——检测字符串使用的编码格式

不多说,直接上代码吧。package com.taiping.vehicle.version11.utils;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.net.URL;/** * Detect encoding * @author F...

2020-03-18 18:45:57 2342

转载 Redis之——Jedis、jedisCluster的使用

1、Jedis客户端https://redis.io/clients2、Jedis源码包与使用介绍https://github.com/xetorthio/jedis3、项目中使用通过maven引入Jedis的依赖包<dependency> <groupId>redis.clients</groupId> <art...

2020-03-18 18:06:35 7786

原创 高并发之——浅谈AQS中的CountDownLatch、Semaphore与CyclicBarrier

CountDownLatch概述同步辅助类,通过它可以阻塞当前线程。也就是说,能够实现一个线程或者多个线程一直等待,直到其他线程执行的操作完成。使用一个给定的计数器进行初始化,该计数器的操作是原子操作,即同时只能有一个线程操作该计数器。调用该类await()方法的线程会一直阻塞,直到其他线程调用该类的countDown()方法,使当前计数器的值变为0为止。每次调用该类的countDown()...

2020-03-18 17:40:44 1559

原创 Mycat之——Mycat的限制

不支持的SQL语句create table like xxxcreate table select xxxselect for updateselect lock in share modeselect into outfile/into var_name不支持跨库多表关联查询、子查询。不支持多表UPDATE或者UPDATE分片键。不支持跨分片的update/dele...

2020-03-16 23:53:30 1917

原创 Mycat之——Mycat集群优化

Linux优化配置优化/etc/sysctl.conf文件net.ipv4.ip_forward= 0kernel.sysrq = 0kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = 68719476736kernel.shmall = 4294967296net.ipv4.tcp_syncookies = 1n...

2020-03-16 23:28:13 1086

原创 Mycat之——通过命令行管理Mycat

在《Mycat之——搭建Mycat+Zookeeper+HAProxy+Keepalived+MySQL高可用架构》一文中,我们搭建了Mycat的高可用环境,在高可用环境中,实现了HAProxy的高可用、Mycat的高可用、MySQL的高可用、Zookeeper的高可用和Keepalived的高可用。我们就需要实现Mycat的管理和监控了,不然出了问题,我们是没办法及时发现的。1.Mycat管...

2020-03-16 22:43:18 3168

原创 Mycat之——搭建Mycat+Zookeeper+HAProxy+Keepalived+MySQL高可用架构

前言业界对系统的高可用有着基本的要求,简单的说,这些要求可以总结为如下所示。系统架构中不存在单点问题。可以最大限度的保障服务的可用性。一般情况下系统的高可用可以用几个9来评估。所谓的几个9就是系统可以保证对外提供的服务的时间达到总时间的百分比。例如如果需要达到99.99的高可用,则系统全年发生故障的总时间不能超过52分钟。注意:如下文章是有关Mycat的精选博文,大家可以自行...

2020-03-15 23:15:41 3286 6

原创 Mycat之——SQL防火墙

如果说Mycat提供的SQL拦截器是为了事后审计SQL语句的话,那么,Mycat提供的SQL防火墙就是为了事先的预防。为什么需要使用SQL防火墙?对应熟悉MySQL的童鞋来说,我们可以指定用户只能通过某些IP来访问数据库。但是,一旦我们使用了Mycat,所有访问数据库的认证就交由Mycat来进行。之前我们在Mycat的server.xml文件中所配置的那些用户,在所有能够访问到Mycat的主机...

2020-03-04 20:47:04 1722

原创 Mycat之——SQL拦截

其实,看到这个标题后,我本人也会提出一个疑问:SQL拦截到底有什么用呢?,接下来,就让我们带着这个疑问来阅读本文。为何需要使用Mycat的SQL拦截功能?首先,我们来列举一个真实的案例场景:我们在实际的工作中,经常会遇到这样一种场景:业务人员突然发现业务数据库中的数据被莫名其妙的修改了,但又不知道是如何修改的。于是,就来求助DBA,想要来查询一下修改数据的SQL语句。通常情况下,DBA只能通过...

2020-03-04 20:43:23 1809

原创 Mycat之——实现ER分片

【前言】引出ER分片在《Mycat之——设置全局自增id》一文中,我们为水平分片的数据表设置了全局自增的id值,解决了由于分片后各自数据节点的数据表自增,导致Mycat查询数据时,出现的id值重复的问题。此时,我们继续在Mycat下执行如下SQL语句来关联查询order_master数据表和order_detail数据表的数据。mysql> select * from order_ma...

2020-03-04 00:10:54 1300

原创 Mycat之——设置全局自增id

在《Mycat之——实现MySQL的水平分表》一文中,我们将商城数据库的订单数据库中的order_master数据表,根据customer_id字段进行了水平切分,当我们通过Mycat向order_master数据表中插入数据后,再通过Mycat查询order_master数据表中的数据时,发现通过Mycat查询出来的数据中,order_id字段有很多重复的值。这是由于在orderdb01orde...

2020-03-01 22:50:43 2333

原创 Mycat之——实现MySQL的水平分表

在《Mycat之——实现MySQL垂直分库》一文中,我们将整个商城数据库分成用户库、商品库和订单库。由于订单数据库中的订单表数据会随着业务的不断增长而增长,最终单表难以承载巨大的数据量,此时,我们就需要在垂直分库的基础上对订单表中的数据进行水平切分。而Mycat对数据表的水平切分提供了多种切分规则和算法,后续,我们会深入介绍这些切分规则和算法。这里,我们直接根据order_master表中的cu...

2020-03-01 21:37:29 2063 1

原创 Mycat之——实现MySQL垂直分库

Mycat之——实现MySQL垂直分库数据库架构演化对于一个早期的商城系统来说,由于业务量不太大,数据承载压力不高,我们可以将所有的数据放在一台MySQL服务器上,此时的数据库架构就类似于下图所示。随着业务量的不断增加,数据库的压力越来越大,此时我们可以将MySQL做成主从复制集群,使用Mycat完成MySQL的读写分离,其中,MySQL主库作为写库,MySQL从库作为读库,此时的数据库架...

2020-03-01 15:15:40 2301 2

原创 高并发之——深度解析ScheduledFutureTask类源码

JDK 1.5提供的ScheduledThreadPoolExecutor执行定时任务时,会将任务封装成ScheduledFutureTask对象。那么,ScheduledFutureTask对象有何特殊之处?今天,我们就一起来手撕ScheduledFutureTask类的源码,来深入理解ScheduledFutureTask类的细节。类的层级关系从ScheduledFutureTask类的定...

2020-03-01 00:04:19 4389

Navicat for Premium.rar

Navicat for Premium 15是一款功能十分强大的数据库管理功能类的软件,我们这款软件就是可以在软件中实现数据传输的一个操作,也就是通过这款软件到用户们的数据库就可以自己想要传输的数据进行传输,并且还可以将那些新的数据进行传输到数据库中来使用

2020-07-30

Flume采集Nginx日志到新版Hive.rar

Flume采集Nginx日志到新版Hive,Flume中需要添加的Jar包,各软件版本为:Hadoop 3.2.0、Flume 1.9.0、Hive 3.1.2、Nginx 1.17.2。

2019-09-20

Servlet3.1规范(中文最终版)

Servlet3.1规范中文最终版,可以参考实现Servlet异步请求与回调机制

2019-09-08

Flume采集Nginx日志到Hive.rar

Flume采集Nginx日志到Hive的事务表时需要导入到Flume下的Jar文件,具体使用方式可参见博文:https://blog.csdn.net/l1028386804/article/details/97975539

2019-08-01

Apache标准Log,Hive测试使用

Apache标准Log,Hive测试使用,有冰河大神亲自整理,具体使用请参考博文:https://blog.csdn.net/l1028386804/article/details/88617592

2019-03-17

glibc-2.14 Hadoop专属glib

升级glib解决Hadoop WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... 和 SequenceFile doesn't work with GzipCodec without native-hadoop code 问题, 具体请参见博文:https://blog.csdn.net/l1028386804/article/details/88420473

2019-03-12

avro-1.8.1

运行Sqoop报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/LogicalType,下载此资源放到Sqoop的lib目录下即可

2019-02-28

Python2.7的scapy安装

python2.7安装scapy的工具包,由冰河大神整理分享,欢迎下载使用

2019-02-18

freefloatftpserver1.0 漏洞重现

freefloatftpserver1.0 漏洞重现 ,freefloatftpserver1.0安装程序,并冰河大神亲自整理

2019-02-14

BSPlayer V2.68 + 渗透脚本

BSPlayer V2.68 + 渗透脚本, 由冰河大神亲自整理发出

2019-01-17

php-utility-belt

学习php-utility-belt的远程代码执行漏洞,由冰河大神整理

2019-01-17

PCMan-FTP+溢出脚本

PCMan-FTP+溢出脚本,实战渗透PcMan-FTP,由冰河大神亲自整理奉献

2019-01-17

VulnServer

Vulnserver是一款Windows服务器应用程序,其中包含一系列可供利用的缓冲区溢出漏洞,旨在为大家在学习和实践基本的fuzzing、调试以及开发技能方面提供必要的辅助。关于Vulnserver的更多信息,例如下载链接等

2019-01-16

Easy File Sharing Web Server 7.2

Easy File Sharing Web Server 是一种允许访客容易地经由浏览器上传/下载文件的文件分享系统.

2019-01-15

ImmunityDebugger

Immunity Debugger软件专门用于加速漏洞利用程序的开发,辅助漏洞挖掘以及恶意软件分析。它具备一个完整的图形用户界面,同时还配备了迄今为止最为强的Python安全工具库。它巧妙的将动态调试功能与一个强大的静态分析引擎融合于一体,它还附带了一套高度可定制的纯pythont图形算法,可用于帮助我们绘制出直观的函数体控制流以及函数中的各个基本块。

2019-01-15

hydra 一键安装包

Hydra一键安装包,内含脚本,直接运行脚本就可以安装了,由冰河大神亲自整理

2019-01-07

免杀端口转发lcx

免杀lcx,下载后尽量不要放在桌面或其他敏感的地方解压,以免被360等杀毒软件恶意封杀,程序本身是没毒的,亲测成功。 

2018-11-29

SQL漏洞测试平台

SQL漏洞测试平台,安装WAMP,然后项目部署在WAMP_HOME\apache2\htdocs下,即可。可作为SQL注入漏洞的入门平台

2018-11-19

sqoop1.46和1.47

sqoop框架开发工具使用的jar,目前版本有1.4.6和1.4.7两个jar包,启动Sqoop时,抛出异常:Error: Could not find or load main class .usr.local.sqoop-1.4.7.sqoop-1.4.7.jar 则可以下载资源将sqoop-1.4.7.jar放到sqoop的lib目录下重新启动,问题解决

2018-09-12

基于java开发的功能强大、配置灵活的数据库之间的同步工具

基于java开发的功能强大、配置灵活的数据库之间的同步工具源码,具体解析详见博文:https://blog.csdn.net/l1028386804/article/details/80341251

2018-05-16

《Spring IOC核心技术》- 冰河原创电子书

这是一本专注讲解Spring IOC最核心的知识的电子书,从简单的使用案例到深度解析源码,只讲Spring IOC最核心的知识,让你知其然,更知其所以然。涵盖:AnnotationConfigApplicationContext、组件添加、组件赋值、组件注入。 说起Spring,绝对是Java开发领域的佼佼者,试问,做Java开发的有谁不知道Spring?做Java开发的又有谁没用过Spring?又有哪家公司在Java Web项目中没使用过Spring?就算有,那也应该很少吧!所以,骚年,如果你选择了Java开发这条不归路,你就必须牢牢掌握Spring! 如果小伙伴们还在用Spring的基础框架,例如:Spring、SpringMVC、MyBatis,也就是传说中的SSM,来整合开发的时候,可能会大量的写配置文件。那么,在SpringBoot和SpringCloud兴起之后,Spring的注解驱动就用的非常多了!其中,会用到非常多的注解。为了能够更加深刻的理解这些注解的原理,更好的使用这些注解提高我们的工作效率。这里,我结合实际工作中使用Spring的一些经验,向大家分享下如何使

2023-01-28

冰河的渗透实战笔记-冰河.pdf

冰河整理的全网首个开源的以实战案例为背景的渗透实战笔记,全书共442页,共计37万字(不计空格)。整本书的内容涵盖:Kali基础、渗透工具、木马制作、钓鱼链接生成、爆破密码、内存溢出攻击、web渗透、数据提权、社会工程学。

2021-05-18

Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成yaml安装文件

Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成yaml安装文件,为避免读者搭建环境过程中出现各种异常情况,冰河特别整理了这份yaml安装文件,一起加油呀~~

2021-05-12

深入理解高并发编程(冰河原创电子书)

全网首个最全的免费开源的高并发电子书,内容涵盖源码分析、基础案例、实战案例、面试和系统架构,内含秒杀系统和分布式锁的完整架构过程,历时半年精打细磨,一经发布,火遍全网,至今全网累计下载60万+,无论是刚工作的初级程序员,还是工作多年的老司机,都值得一看!

2021-04-28

中国象棋游戏源码.rar

中国象棋游戏Java源代码,完整的源码和注释,可直接运行,可直接用作毕业设计,也可作为学习Java语言的小项目

2021-04-26

FastDFS6.06完整安装包

FastDFS完整安装包,安装步骤详见:https://binghe.blog.csdn.net/article/details/108803782

2021-04-13

MySQL8.0.19安装包

冰河亲自整理的MySQL8.0.19安装包,具体安装步骤参见:https://binghe.blog.csdn.net/article/details/109036011

2021-04-10

jnative.rar

采用JNative方式Java调用dll的必用jar包和源码以及必须的dll

2021-03-26

流程引擎(Flowable+Activiti)

流程引擎包,包含:Flowable 6.4.2和Activiti 6.0,需要整合流程引擎的同学可以下载,国外的下载链接太慢了,现分享出来。

2020-07-28

nexus-2.11.2-03-bundle.rar

Nexus——搭建Maven私有仓库,参见博文:https://blog.csdn.net/l1028386804/article/details/71037336

2020-06-15

Navicat For MongoDB 15.0.6

Navicat for MongoDB 15是一款功能十分强大的数据库管理功能类的软件,我们这款软件就是可以在软件中实现数据传输的一个操作,也就是通过这款软件到用户们的数据库就可以自己想要传输的数据进行传输,并且还可以将那些新的数据进行传输到MongoDB中来使用

2020-06-13

linux库:compat-libstdc++-33-3.2.3-61

compat-libstdc++-33-3.2.3-61.i386.rpm及compat-libstdc++-33-3.2.3-61.x86_64.rpm

2020-04-20

商城数据库SQL脚本文件.rar

垂直分库后的商城数据库SQL脚本文件,下载可以稍微修改下即可用于项目中,同时,也可以拿来学习商城数据库的架构知识

2020-03-01

MySQL各版本my.cnf配置文件.rar

MySQL 5.6、5.7、8.0版本的my.cnf完整配置文件,亲测可用,配置文件中优化了MySQL中的一些默认配置项,能够有效的提高MySQL数据库的并发处理能力!

2020-01-12

MySQL 8.0.18源码安装包.rar

MySQL 8.0.18源码安装包,如何编译安装最新版本的MySQL,如何编译MySQL 8.x, 参见博文:https://blog.csdn.net/l1028386804/article/details/103211544

2019-11-23

升级gcc与cmake所需的安装文件.rar

编译安装MySQL 8.x所需要的gcc与cmake安装文件,gcc版本为9.2.0, cmake版本为3.15.2,具体升级方式可参见博文:https://blog.csdn.net/l1028386804/article/details/103211544

2019-11-23

VMWare安装MacOS的unlocker.rar

解锁虚拟机苹果系统选项的批处理工具,解压即可使用,利用此工具就可以在虚拟机上安装macOS系统啦!亲测可用

2019-11-19

vmware虚拟机苹果补丁

解锁虚拟机苹果系统选项的批处理工具,解压即可使用,利用此工具就可以在VMware虚拟机上安装macOS系统,冰河大神亲自整理

2019-11-16

CentOS6.8 64位安装镜像.rar

CentOS 6.8操作系统安装镜像,具体安装步骤参见博文:https://blog.csdn.net/l1028386804/article/details/41595081

2019-11-16

性能测试工具(postman+ab+jmeter).rar

性能测试往往需要开发人员在开发的时候就引起重视,在此,冰河分享性能测试工具集,包括:postman+ab+jmeter,希望对大家有所帮助

2019-10-23

空空如也

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

TA关注的人

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