自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 JVM系列总结(一)

什么是JVM?JVM(Java Virtual Machine,Java虚拟机) Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行程序,...

2018-03-19 18:43:15 174

转载 35 个 Java 代码性能优化总结

前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑 的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上 线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考

2017-07-18 11:22:56 382

原创 【ERC-721与ERC-1155有什么区别?】

无论您是加密爱好者还是第一次使用密码,您都可能听说过以太坊。它是最具影响力的开源区块链平台之一,用于创建智能合约、加密货币和去中心化应用程序。以太坊的智能合约改变了加密货币的世界,区块链技术现在渴望成为全球多个行业的标准。...

2022-06-09 21:54:12 3287

原创 JVM运行结构图

JVM简介JVM是Java Virtual Machine的简称,意为Java虚拟机。JVM有很多种,使用最为广泛的JVM为HotSpot。JVM是Java程序得以运行的平台,也是Java程序可以跨平台的底层支撑,从整体上来看,JVM的主要功能可以分为加载和执行两大块。其中类加载器负责.class文件的寻址与加载,执行引擎负责字节码指令执行及内存的管理等等。下面是JVM一个经典的体系结构图:...

2019-11-18 22:12:34 631

原创 Mysql千万级大数据SQL优化

Mysql数据库优化mysql优化是一个综合性的技术,主要从以下几个层面来优化:•表的设计合理化(符合3NF)•添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]•分表技术(水平分割、垂直分割)•读写[写: update/delete/add]分离•存储过程 [模块化编程,可以提高速度]•对mysql配置优化 [配置最大并发数my.ini, 调...

2019-11-17 23:08:54 709

原创 Java线上应用故障排查

前言在平时的工作中有时会碰到线上故障排查,把排查故障的方法和解决方案做个总结,记录下来作为笔记,一可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的朋友有好的经验可以交流,大家一起进步。一、故障排查高CPU占用1、top命令:Linux命令,可以查看实时的CPU使用情况,也可以查看最近一段时间的CPU使用情况。2、PS命令:Linux命令,强大的进程状态监控命令,可以查看进程以及...

2019-11-16 22:09:10 304

原创 解锁Redis分布式锁的正确实现姿势

一、什么是分布式锁?分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。二、常见的分布式锁有哪些实现方式?数据库乐观锁或者悲观锁实现的分布式锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。本次将主要介...

2019-11-12 22:53:46 687

原创 高并发分布式场景最全的MQ消息重发幂等性解决方案

@T高并发分布式场景最全的MQ消息重发幂等性解决方案OC一、幂等性是什么?在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。简单来说就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的。二、什么情况下会出现重复消费?...

2019-11-09 09:43:53 1170

原创 最全的分布式事务总结

目录1. 事务的定义 22. 数据库本地事务四大特性 ACID 23. mysql InnoDB 实现原理 24. 什么是分布式事务 35. 分布式事务产生的原因 46. 分布式事务的基础理论 47. 分布式事务协议 58. 分布式常用解决方案 79. 开源分布式框架 131.事务的定义事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执...

2019-03-15 11:58:06 322

转载 JAVA线程池总结 详解二

Executor框架的两级调度模型在HotSpot VM的模型中,JAVA线程被一对一映射为本地操作系统线程。JAVA线程启动时会创建一个本地操作系统线程,当JAVA线程终止时,对应的操作系统线程也被销毁回收,而操作系统会调度所有线程并将它们分配给可用的CPU。在上层,JAVA程序会将应用分解为多个任务,然后使用应用级的调度器(Executor)将这些任务映射成固定数量的线程;在底层,操作...

2019-02-27 13:48:53 154

转载 JAVA线程池总结 详解一

线程池的优点1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。线程池的创建1 public ThreadPoolExecutor(int corePoolSize,2 int maximum...

2019-02-27 13:47:56 150

原创 C# Convert.FromBase64String(salt) 转 java 写法

C# Convert.FromBase64String(salt) 转 java  写法:/**base64**/byte[] saltByte = DatatypeConverter.parseBase64Binary(salt);

2018-09-03 19:45:35 4982

原创 C# Encoding.Unicode.GetBytes(password) 转 java 写法

在 .net   C#中16进制  Encoding.Unicode.GetBytes(password) 转java 写法为:/**16进度**/byte[] passwordByte = paswword.getBytes("UTF-16LE");

2018-09-03 19:05:30 3425 1

原创 java集合总结

以思维导图的形式梳理java集合,便于直观的对集合有一个整体清晰的认识。java技术交流群有兴趣的朋友可以加微信一起交流学习,微信号:zw9191991

2018-03-22 11:32:31 218

转载 JVM系列(二)java类的加载机制详解

java类的加载机制详解 1、什么是java类的加载    类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载器并...

2018-03-19 19:02:19 167

转载 NIo、Bio、aio、 的原理及区别与应用场景

在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙不才,在查了一部分资料后,愿试着以通俗易懂的方式解释下这几个名词。如有不足之处,还望告知。 在弄清楚上面的几个问题之前,我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个...

2018-03-17 16:58:17 179

转载 BIO与NIO、AIO的区别

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如...

2018-03-17 16:46:20 189

转载 数据库垂直分割、水平分割、库表散列

一般对表进行水平分割和垂直分隔会极大的提高数据库性能。  1、水平分割:     一般适用于下列情况:    A、表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高了查询速度    B、表中的数据本来就有独立性,例如表中分别记录了各个地区或不同时期的数据;或者有些数据常用,有些数据不常用    C、需要把数据存放到多个介质上。     水平分割会给应用增加复杂度,...

2018-03-06 17:44:18 657

转载 jvm中的年轻代 老年代 持久代 gc

 虚拟机中的共划分为三个代:年轻代(Young Generation)、老年代(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系不大。年轻代和年老代的划分是对垃圾收集影响比较大的。     年轻代:所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对...

2018-03-01 11:45:23 207

转载 《高性能MySQL》读书笔记--查询性能优化

对于高性能数据库操作,只靠设计最优的库表结构、建立最好的索引是不够的,还需要合理的设计查询。如果查询写得很糟糕,即使库表结构再合理、索引再合适,也无法实现高性能。查询优化、索引优化、库表结构优化需要齐头并进,一个不落。6.1 为什么查询速度会慢通常来说,查询的生命周期大致可以按照顺序来看:从客户端>>服务器>>在服务器上进行解析>>生成执行计划>>执行>>返回结果给客户端。其中执行

2018-02-01 16:16:53 204

转载 什么是聚簇索引与非聚簇索引

今天我们来聊一聊关于 聚簇索引和非聚簇索引的问题;  刚开始学数据库SQL的时候,就知道有主键啊(Primary-key),外键啊(Foreign-key)啥的,连个表查询就已经不清楚是要on 那几个字段了,在数据量不太大的情况下,根本不会考虑索引的问题了,然后,随着大数据时代的到来,数据量大了,没有索引那是要不得的啊,客户又吐槽了,你知不知道,你知不知道,我等到花儿都谢鸟。。。。。没有索

2018-02-01 16:13:46 823

转载 MySQL运行原理与基础架构详解

1.MySQL基础            MySQL是一个开放源代码的关系数据库管理系统。原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用。 2008年MySQL公司被Sun公司收购并发布了首个收购之后的版本MySQL5.1,该版本引入分区、基于行复制以及plugin API。移除了原有的BerkeyDB引擎

2018-02-01 15:12:11 275

转载 MySQL高级-索引

1、索引是什么  索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。  可以理解为“排好序的快速查找数据结构”  在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,  这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。2、优势  类似大学图书馆

2018-01-23 15:11:09 127

转载 高并发系统的一些处理策略

高并发系统的一些处理策略:服务器配置数据库设计以及优化缓存数据一致性处理 服务器配置:         集群的环境,每个主机选择apahe 还是nginx,nignx的并发性好。nginx和apche区别 以及服务器的配置,例如缓存大小等        根据实际情况,可能对于图像比较多的情况,单独配置nginx服务器,作为图像服务器。在实习中使用的是七牛家的云存储单独作为图

2017-11-29 11:47:44 1464

转载 MySQL 对于千万级的大表要怎么优化?

优化顺序是:第一优化你的sql和索引;第二加缓存,memcached,redis;第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要

2017-11-28 19:50:15 174

原创 软件项目开发步骤

第一步:需求调研分析   1、相关系统分析员向用户初步了解需求,然后用word列出要开发的系统大功能模块,每个大功能模块有哪些小功能模块,对于有些需求需要明确相关的界面时,在这一步里面可以初步定义好少量的界面。   2、系统分析员深入了解和分析需求,根据自己的经验和需求用word或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚利用系统大致的大功能模块,大功能模块有哪些小功能模

2017-11-25 17:00:19 3666

原创 TCP 三次握手

三次握手根据下面这幅图我们来看一下TCP三次握手。p.s: 每个箭头代表一次握手。tcp三次握手第一次握手client发送一个SYN(J)包给server,然后等待server的ACK回复,进入SYN-SENT状态。p.s: SYN为synchronize的缩写,ACK为acknowledgment的缩写。第二次握手server接收到SYN(seq=J)包后就返

2017-07-20 11:08:34 306

原创 java中yield()方法如何使用

Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程。yield()应该做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会。因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。结论:yield()从未导致线程转到等待/...

2017-06-02 15:08:16 68591 12

转载 java之yield(),sleep(),wait()区别详解-备忘笔记

1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的

2017-06-02 15:00:06 206

转载 单例模式中为什么用枚举更好?

枚举单例有序列化和线程安全的保证,而且只要几行代码就能实现是单例最好的的实现方式,不过你仍然可以使用其它的方式来实现单例,但是我仍然得不到一个更有信服力的原因不去使用枚举。

2017-04-05 18:59:37 286

原创 Intellij IDEA常用快捷键介绍 Intellij IDEA快捷键大全汇总

Intellij IDEA最常用快捷键1.Ctrl+E,可以显示最近编辑的文件列表2.Shift+Click可以关闭文件3.Ctrl+[或]可以跳到大括号的开头结尾4.Ctrl+Shift+Backspace可以跳转到上次编辑的地方5.Ctrl+F12,可以显示当前文件的结构6.Ctrl+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择7.Ctrl+N,可以快

2017-04-05 18:46:32 241

转载 单例模式中为什么用枚举更好?

枚举单例有序列化和线程安全的保证,而且只要几行代码就能实现是单例最好的的实现方式,不过你仍然可以使用其它的方式来实现单例,但是我仍然得不到一个更有信服力的原因不去使用枚举。

2017-04-05 18:13:17 214

原创 大数据中Hadoop能做什么

Hadoop能做什么

2015-01-29 18:15:14 1214

最好的SSI框架实现增删改查

SSI框架实现增删改查,最好的整合,非常不错的一个整合

2011-05-15

空空如也

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

TA关注的人

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