自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(201)
  • 资源 (2)
  • 收藏
  • 关注

转载 MySQL大表优化方案

MySQL大表优化方案

2022-01-17 11:12:29 510

原创 WindowsServer2012r2 、Windows Server 2008或2012 修复CVE-2016-2183(SSL/TLS)漏洞的办法

一、漏洞说明Windows server 2008或2012远程桌面服务SSL加密默认是开启的,且有默认的CA证书。由于SSL/ TLS自身存在漏洞缺陷,当开启远程桌面服务,使用漏洞扫描工具扫描,发现存在SSL/TSL漏洞。例如如下漏洞:二、修复办法1、登录服务器,打开windows powershell,运行gpedit.msc,打开“本地组策略编辑器”。2、打开“本地组策略编辑器”-“计算机配置”-“管理模板”-“网络”-“SSL配置设置”, 在“SSL密码套件顺序”选项上,右键“编辑”。.

2021-12-16 10:23:43 4865

原创 架构之业务架构

业务架构之产品经理的职责产品经理的职责用户的原始需求往往是零散和碎片化的,产品经理的职责就是:告诉用户,系统长什么样子;告诉开发,他要实现什么功能。产品经理定义了系统的外表。产品经理的职责:1、收集用户的原始需求,2、梳理成一个个业务流程,每个业务流程由多个业务步骤组成。一个业务步骤包含三部分的内容:输入、输出和业务功能。3、需求梳理好后,产品经理会把每个步骤具体化为页面原型。在原型中,会以直观的方式给出各个步骤的输入或输出,以及用户的操作过程,最后再把这些页面串起来,形成一个业

2021-09-06 15:44:52 7840 1

原创 mac环境下安装webdriver/selenium/python

1、安装python3.9https://www.python.org/downloads/2、添加环境变量cd ~vim .bash_profile3、.bash_profile添加如下内容:PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}"export PATHalias python="/Library/Frameworks/Python.framework/Versions/3.

2021-08-02 10:41:29 1432

原创 创建和更新数据时,如何保证数据准确无误?

在一个系统中,数据最重要的资产。在设计和实现一个系统的存储过程中,有哪些问题是要特别考虑的。一个合格的系统系统,最基本的要求是什么?数据不能错。一个流程,流程中每一个环节,都少不了更新数据,每一次更新操作又可能需要同时更新好几张表。这些操作可能被随机分布到很多台服务器上执行,服务器有可能故障,网络有可能出问题。在这么复杂的情况下,保证数据一笔都不能错,是不是很难?实际上,只要掌握了方法,其实并不难。首先,你的代码必须是正确没 Bug 的,如果说是因为代码 Bug 导致的数据错误,那谁也救不了

2021-05-08 17:57:55 1428

原创 实战:内存持续上升解决

生产环境中可能会遇到内存溢出或是内存使用率过高的问题。碰到内存持续上升的情况,其实我们很难从业务日志中查看到具体的问题,那么面对多个进程以及大量业务线程,那么该如何精准地找到背后的原因呢?常用的监控和诊断内存工具工欲善其事,必先利其器。平时排查内存性能瓶颈时,我们往往需要用到一些 Linux 命令行或者 JDK 工具来辅助我们监测系统或者虚拟机内存的使用情况,下面我就来介绍几种好用且常用的工具。Linux 命令行工具之 top 命令top 命令是我们在 Linux 下最常用的命令..

2021-05-08 15:07:53 2590

原创 优化JVM内存分配

JVM 调优是一个系统而又复杂的过程,但我们知道,在大多数情况下,我们基本不用去调整 JVM 内存分配,因为一些初始化的参数已经可以保证应用服务正常稳定地工作了。但所有的调优都是有目标性的,JVM 内存分配调优也一样。没有性能问题的时候,通常情况不会随意改变 JVM 内存分配的参数。那有了问题呢?有了什么样的性能问题我们需要对其进行调优呢?又该如何调优呢?JVM 内存分配性能问题谈到 JVM 内存表现出的性能问题时,你可能会想到一些线上的 JVM 内存溢出事故。但这方面的事故往往是应用程序.

2021-05-08 11:30:43 215

原创 垃圾回收机制

在 Java 开发中,开发人员是无需过度关注对象的回收与释放的,JVM 的垃圾回收机制可以减轻不少工作量。但完全交由 JVM 回收对象,也会增加回收性能的不确定性。在一些特殊的业务场景下,不合适的垃圾回收算法以及策略,都有可能导致系统性能下降。面对不同的业务场景,垃圾回收的调优策略也不一样。例如,在对内存要求苛刻的情况下,需要提高对象的回收效率;在 CPU 使用率高的情况下,需要降低高并发时垃圾回收的频率。可以说,垃圾回收的调优是一项必备技能。回收(后面简称 GC)的算法有哪些,体现 GC 算法好坏

2021-05-08 10:55:26 160

原创 优化JVM

优化JVM.java 文件被编译成 .class 文件的过程,这个编译我们一般称为前端编译。Java 的编译和运行过程非常复杂,除了前端编译,还有运行时编译。由于机器无法直接运行 Java 生成的字节码,所以在运行时,JIT 或解释器会将字节码转换成机器码,这个过程就叫运行时编译。类文件在运行时被进一步编译,它们可以变成高度优化的机器代码,由于 C/C++ 编译器的所有优化都是在编译期间完成的,运行期间的性能监控仅作为基础的优化措施则无法进行,例如,调用频率预测、分支频率预测、裁剪未被选择的分支等.

2021-05-08 09:26:03 109

原创 JVM内存模型

运行一个Java 应用程序,我们必须要先安装JDK 或者JRE 包。这是因为Java 应用在编译后会变成字节码,然后通过字节码运行在JVM 中,而JVM 是JRE 的核心组成部分。JVM 不仅承担了Java 字节码的分析(JIT compiler)和执行(Runtime),同时也内置了自动内存分配管理机制。这个机制可以大大降低手动分配回收机制可能带来的内存泄露和内存溢出风险,使Java 开发人员不需要关注每个对象的内存分配以及回收,从而更专注于业务本身。JVM 自动内存分配管理机制...

2021-05-08 09:02:49 147

原创 性能监测

今天周五,说点性能监测的事吧。1. Linux 命令行工具之vmstat 命令vmstat 是一款指定采样周期和次数的功能性监测工具,我们可以使用它监控进程上下文切换的情况。vmstat 1 3 命令行代表每秒收集一次性能指标,总共获取3 次。以下为上图中各个性能指标的注释:procsr:等待运行的进程数b:处于非中断睡眠状态的进程数memoryswpd:虚拟内存使用情况free:空闲的内存buff:用来作为缓冲的内存数cache:缓存大小swap..

2021-04-16 08:53:23 371

原创 多线程调优

首先,多线程操作导致了上下文切换。什么是上下文切换在单个处理器的时期,操作系统就能处理多线程并发任务。处理器给每个线程分配 CPU 时间片(Time Slice),线程在分配获得的时间片内执行任务。CPU 时间片是 CPU 分配给每个线程执行的时间段,一般为几十毫秒。在这么短的时间内线程互相切换,我们根本感觉不到,所以看上去就好像是同时进行的一样。时间片决定了一个线程可以连续占用处理器运行的时长。当一个线程的时间片用完了,或者因自身原因被迫暂停运行了,这个时候,另外一个线程(可以是同一个线程

2021-04-14 11:03:58 676

原创 多线程之锁优化 使用乐观锁优化并行操作

Synchronized 和 Lock 这两种同步锁都属于悲观锁,是保护线程安全最直观的方式。我们知道悲观锁在高并发的场景下,激烈的锁竞争会造成线程阻塞,大量阻塞线程会导致系统的上下文切换,增加系统的性能开销。那有没有可能实现一种非阻塞型的锁机制来保证线程的安全呢?答案是肯定的。今天我就带你学习下乐观锁的优化方法,看看怎么使用才能发挥它最大的价值。什么是乐观锁开始优化前,我们先来简单回顾下乐观锁的定义。乐观锁,顾名思义,就是说在操作共享资源时,它总是抱着乐观的态度进行,它认为自己可以..

2021-04-07 20:21:05 299

原创 多线程之锁优化Lock同步锁的优化

在 JDK1.5 之后,Java 还提供了 Lock 同步锁。那么它有什么优势呢?相对于需要 JVM 隐式获取和释放锁的 Synchronized 同步锁,Lock 同步锁(以下简称 Lock 锁)需要的是显示获取和释放锁,这就为获取和释放锁提供了更多的灵活性。Lock 锁的基本操作是通过乐观锁来实现的,但由于 Lock 锁也会在阻塞时被挂起,因此它依然属于悲观锁。我们可以通过一张图来简单对比下两个同步锁,了解下各自的特点:从性能方面上来说,在并发量不高、竞争不激烈的情况下,Synchro.

2021-04-07 20:01:32 246

原创 多线程之锁优化synchronized同步锁的优化

在并发编程中,多个线程访问同一个共享资源时,我们必须考虑如何维护数据的原子性。在 JDK1.5 之前,Java 是依靠 Synchronized 关键字实现锁功能来做到这点的。Synchronized 是 JVM 实现的一种内置锁,锁的获取和释放是由 JVM 隐式实现。到了 JDK1.5 版本,并发包中新增了 Lock 接口来实现锁功能,它提供了与 Synchronized 关键字类似的同步功能,只是在使用时需要显示获取和释放锁。Lock 同步锁是基于 Java 实现的,而 Synchronized

2021-04-07 19:48:28 326

原创 系统调优之字符串优化

通过三种不同的方式创建了三个对象,再依次两两匹配,每组被匹配的两个对象是否相等?代码如下:String str1= "abc";String str2= new String("abc");String str3= str2.intern();assertSame(str1==str2);assertSame(str2==str3);assertSame(str1==str3)回答:在一开始字符串"abc"会在加载类时,在常量池中创建一个字符串对象。创建 a 变量时,调用

2021-04-07 19:29:43 196

原创 MySQL的事务隔离级别

日常开发业务开发少不了利用 Java 对数据库进行基本的增删改查等数据操作,这也是 Java 工程师的必备技能之一。做好数据操作,不仅仅需要对 Java 语言相关框架的掌握,更需要对各种数据库自身体系结构的理解。今天说说 MySQL 支持的事务隔离级别,以及悲观锁和乐观锁的原理和应用场景?典型回答所谓隔离级别(Isolation Level),就是在数据库事务中,为保证并发数据读写的正确性而提出的定义,它并不是 MySQL 专有的概念,而是源于ANSI/ISO制定的SQL-92标准。每种关系型数

2021-03-31 16:11:35 120

原创 动态代理的原理

反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造对象,甚至可以运行时修改类定义。动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的,比如用来包装 RPC 调用、面向切面的编程(AOP)。实现动态代理的方式很多,比如 JDK 自身提供的动态代理,就是主要利用了上面提到的反射机制。还有其他的实现方式

2021-03-26 20:25:44 1628

原创 String、StringBuilder、StringBuffer的区别

简要回答:String 是 Java 语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的 Immutable 类,被声明成为 final class,所有属性也都是 final 的。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。StringBuffer 是为解决上面提到拼接产生太多中间对象的问题而提供的一个类,我们可以用 append 或者 add 方法,把字符串添加到已有序

2021-03-26 19:55:11 114

原创 关于异常的理解

首先,我们先来理解 Throwable、Exception、Error 的设计和分类。掌握那些应用最为广泛的子类,至少做到基本心里有数。Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且.

2021-03-26 19:41:15 207

原创 对JAVA平台的理解

Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外,JAVA平台具有垃圾收集(GC, Garbage Collection)机制,Java 通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。那么,“Java 是解释执行”,这句话正确吗?我们日常会接触到 JRE(Java Runtime Environme

2021-03-22 16:32:22 77

转载 mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题

主服务器IP:192.168.58.128从服务器IP:192.168.58.129192.168.58.128主操作:首先要保证主从两台数据库的版本,数据库表等一致, 本教程是基于5.7, 64位的mysql数据库, 系统是centos 5.7, 主从均为虚拟机主节点配置:编译/etc/my.cnf文件的[mysqld]下加入如下配置server_id = 1 #主数据库端ID号log-bin = mysql-bin #开启二进制日志binlog-do-db = mytest #需要复

2020-07-27 11:13:52 2663

原创 将maven默认的地址修改成阿里云地址

DEA自带了maven,所以不需要再去下载了,接下来一步一步的找一下它的地址在哪idea自带的maven,其中下面哪个有它的地址,但是注意 最开始上述地址中IntelliJ IDEA.app最开始中间是有一个空格的,这就导致了终端一直无法找到这个文件夹,所以先把这个应用重命名,中间加上下划线,然后就能进入maven3文件夹了后续就可以进行环境变量的配置了…在maven的安装目录下找到 conf/settings.xml 文件然后找到<mirrors>,添加上阿里云地址保存即

2020-07-16 15:41:04 1571

原创 对中国标准时间(CST)和中国夏令时(CDT)的不同处理

问题重现:通过接口从后端获取时间戳,在前端用JS格式化显示。发现Chrome在Mac和Windows下,对特定的时间段(1986年至1991年),的处理方式并不相同。问题产生原因:查询资料后发现,原来中国也曾经使用过夏令时。1986年至1991年,中华人民共和国在全国范围实行了六年夏令时,每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)。除1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。1.

2020-06-18 14:06:00 4616

原创 druid数据库连接池

原理数据库连接池的结构连接池一般对外提供获得连接、归还连接的接口给客户端使用,并暴露最小空闲连接数、最大连接数等可配置参数,在内部则实现连接建立、连接心跳保持、连接管理、空闲连接回收、连接可用性检测等功能。连接池的结构示意图,如下所示:连接池的运行机制本质上,数据库连接池和线程池一样,都属于池化资源,作用都是避免重量级资源的频繁创建和销毁,对于数据库连接池来说,也就是避免数据库连接频繁创建和销毁。如下图所示,服务端会在运行期持有一定数量的数据库连接,当需要执行 SQL 时,并不是直接创建

2020-06-18 10:11:09 1807

原创 NEO4j安装并修改配置文件

安装安装社区版(免费)我下载的是neo4j-community-3.3.0,因为搭配jdk8,neo4j-community-4也可以,jdk需要11. 喜欢的自行安装修改配置文件一、打开dbms.connectors.default_listen_address=0.0.0.0# With default configuration Neo4j only accepts local connections.# To accept non-local connectio.

2020-06-18 09:52:00 1667

原创 Tomcat : consider increasing the maximum size of the cache

tomcat8布署war包,出现如标题的报错,这是因为tomcat8以上对resource采取了cache,而默认的大小是10M。解决的办法很简单,就是在context.xml中调大缓存。在配置文件<Context>中添加一行,代码如下:<Context>.........<Resources cachingAllowed="true" cacheMaxSize="100000" /></Context>...

2020-05-15 13:59:02 606

原创 数字签名证书

非对称加密已经灰常安全了,但是还有一个破绽:服务器A公布了自己的公钥,我的电脑是用服务器A的公钥加密数据后再发给服务器A的;这时候服务器B侵入了我的电脑,把我用来加密的公钥换成了它的公钥,于是我发出去的数据就会被服务器B的私钥破解了。如何防止公钥被篡改呢?可以使用消息摘要,服务器A把公钥丢给我的时候,同时去CA申请一份数字证书,其实主要就是公钥的消息摘要,有了这份证书,当我再用公钥加密的时候,我就可以先验证一下当前的公钥是否确定是服务器A发送给我的。例子:RSASign:import .

2020-05-13 15:16:41 498

原创 非对称加密(RSA、DH)

概念 非对称加密算法需要两个密钥来进行加密和解密,分别是公钥和私钥。需要注意的一点,这个公钥和私钥必须是一对的,如果用公钥对数据进行加密,那么只有使用对应的私钥才能解密,反之亦然。由于加密和解密使用的是两个不同的密钥,因此,这种算法叫做非对称加密算法。常见对称加密算法有RSA、DH。RSARSA 算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。import java.security....

2020-05-13 15:02:40 770

原创 对称加密(DES、3DES、AES、PBE)

概念 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。而因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。当然,安全性较低带来的优点就是优计算量小、加密速度快、加密效率高。常见对称加密算法有DES、3DES、AES、PBEDESDES,全称为“Data Encryption Standard”,中文名为“数据加密标准”,是一种使用密钥加密的块算法。DES 算法为密码体制中...

2020-05-13 14:44:28 875

原创 消息摘要算法(MD5、SHA)

概念 消息摘要(Message Digest)又称为数字摘要(Digital Digest)。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。HASH函数的抗冲突性使得如果一段明文稍有变化,哪怕只更改该段落的一个字母,通过哈希算法作用后都将产生不同的值。而HASH算法的单向性使得要找到哈希值相同的两个不同的输入消息,在计算上是不可能的。所以数据的哈希值,即消息摘要,可以检验数据的完整性。 通俗点说,就是通过消息摘要算法产生一段...

2020-05-13 13:50:58 810

原创 Base64以及关于Base64遇到的坑

使用Base64public String encode(String src){ byte[] encodeBytes = Base64.getEncoder().encode(src.getBytes()); return new String(encodeBytes);}public String decode(String src){ byte[] decodeBytes = Base64.getDecoder().decode(src.getBytes());...

2020-05-13 13:35:37 5838

原创 热加载、热部署,体验hotswap

Java应用程序运行时升级软件,无需重新启动的方式有两种,热部署和热加载。热加载热加载即在在运行时重新加载class,实现原理主要依赖java的类加载机制,是在运行时通过重新加载改变类信息,直接改变程序行为。在实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。生产环境中,由于热加载这种直接修改jvm中字节码的方式是难以监控的,不同于sql等执行可以记录日志,直接字节码的修改几乎无法记录代码逻辑的变化,对既有代码行为的影响难.

2020-05-12 11:15:31 1383

原创 JRebel 最简单的使用

JRebel 破解最简单的使用前提提示JRebel是一款JVM插件,它使得Java代码修改后不用重启系统,立即生效。IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费时间浪费生命。目前对于idea热部署最好的解决方案就是安装JRebel插件。idea下安装JRebel插件安装JRebel插件很简单,只需要搜索一下就直接安装了。1.png注意:如果不是通过在线安装的话,一定要注意要下载最新版本的JRebel插件。.

2020-05-12 10:21:29 2448

原创 parameter data (excluding uploaded files) exceeded the limit for maxPostSize set

问题:一个 springboot项目经过测试时,在文本框上传时传入大文本(大约5M的文字),系统报错:The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector根据上述文字可知,post的parameter data大小过大导致报错,于是查了一下Tomcat不同

2020-05-11 10:43:11 2546

原创 使用@ControllerAdvice统一处理responsebody

数据库存储了转义字符,取出时放入responseBody里,先需要将其反转义。@ControllerAdvice,是Spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强。本文主要用于处理responseBody中的转义字符。package cn.ac.bcc.ebap.modules.sys.interceptor;/** * Created by zhanghaipeng on 2020/5/9. *///拦截返回值的类import cn.ac.bcc.ebap..

2020-05-09 15:58:10 556

原创 JVM参数设置例子

查看JAVA进程JVM参数jinfo -flags pid(进程号)-XX:CICompilerCount=2 最大的并行编译数-XX:InitialHeapSize=16777216 JVM 的初始堆内存大小-XX:MaxHeapSize=257949696 JVM 的最大堆内存大小-XX:MaxNewSize=85983232-XX:MinHeapDeltaBytes=19660...

2020-04-26 14:45:51 886

转载 Linux流量监控工具iftop查看带宽流量及使用详解

在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop。目录 [隐藏]1 iftop是什么? 2 iftop有什么用? 3 安装iftop 3.1 编译安装 3.2 使用yum安装iftop工具 4 运行iftop 5 使用案例 6 相关...

2020-04-21 10:51:48 1367

原创 Linux性能瓶颈排查,查看系统平均负载情况(工具说明篇)

查看系统平均负载情况使用top、htop命令查看,平均负载体现系统整体情况,属于CPU、内存、磁盘性能的综合情况,通过分析,一般会发现平均负载值大于CPU核数,依此说明机器资源紧张。查看是什么资源导致平均负载高使用top命令查看cpu每个核使用情况,如果占比很高,那瓶颈很可能是CPU。然后查看是什么进程导致的。查看内存情况(CPU无问题,然后看内存是否有问题)使用free查看内存使用情况...

2020-04-20 16:48:59 1847

原创 网站视频播放慢的解决方案

近期做了一个视频培训项目,使用了文件服务器存放视频文件。但是播放效果不理想,部分手机端用户(主要是移动的4G网络下)播放非常不流畅,经过一轮探讨和咨询,解决方案如下:1. 咨询服务器租赁房,得知服务器默认申请的电信的IP网段,因此又申请了移动的ip网段,这样可根据用户的运营商给其分配对应的访问ip。(如果有域名可使用DNS判断匹配,否则只能通过ip手动匹配)2. 视频做了流化处理。原视...

2020-04-20 10:21:34 6892

xom-1.2.10.jar

javaws.jar 常用jar包(不含源代码)

2015-08-10

javaws.jar

javaws.jar 常用jar包(不含源代码)

2015-08-10

空空如也

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

TA关注的人

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