自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 还记得面试时被算法支配的恐惧吗?

面试造火箭,上班拧螺丝大多数程序员心里会想"总结的真精辟",当面试到算法时,各种“跪”、“再跪”、“还是跪”......,多少人因为算法而拿不到心仪的offer,算法毁一生啊。智力面试时代现在算法已经成为大厂面试的重中之重,甚至一些国外的大厂只面试算法,为什么会这样呢?其实在早期,也就是微软当老大的时候,大厂面试最爱考“智力题”,比如:井盖为什么是圆的? 如何用3升和5升桶量...

2020-03-03 13:40:19 197

原创 写了10年的代码,我最怕写Mybatis这些配置,现在有详解了

在使用mybatis过程中, 当手写JavaBean和XML写的越来越多的时候, 就越来越同意出错。这种重复性的工作, 我们当然不希望做那么多。还好,mybatis为我们提供了强大的代码生成--MybatisGenerator。通过简单的配置, 我们就可以生成各种类型的实体类, Mapper接口, MapperXML文件, Example对象等。通过这些生成的文件, 我们就可以...

2020-03-02 22:42:38 106

原创 JDK1.6 对 synchronized 的锁优化

1. 背景在 JDK 1.6 中对锁的实现引入了大量的优化。目的减少锁操作的开销。2. 锁优化在看下面的内容之间,希望大家对 Mark Word 有个大体的理解。Java 中一个对象在堆中的内存结构是这样的:Mark Word 是这样的:2.1 适应性自旋锁自旋锁的思想:让一个线程在请求一个共享数据的锁时执行忙循环(自旋)一段时间,如果在这段时间内能获得锁,...

2019-08-27 13:03:26 256

原创 通知神器——java调用钉钉群自定义机器人

创建群自定义机器人在指定钉钉群(或者随便拉两个人建个群,然后把别人T出去)的群设置里选择 群机器人 -> 自定义,如图:然后,添加机器人,设置名字,添加成功时如下图:其中webhook非常重要,下文详述。点击设置说明可以看相关使用文档,文档链接见本文末尾。使用HTTP POST请求发送消息直接向上文所述的webhook链接发送POST请求已达到自定义机器人向群内发消息的功...

2019-08-25 15:33:22 700

原创 Mac安装Navicat

下载地址Mac版 Navicat Premium 12 v12.0.23.0 官网下载地址:英文64位 http://download.navicat.com/download/navicat120premiumen.dmg中文简体64位 http://download.navicat.com/download/navicat120premiumcs.dmg注意:我没有下载最新版本的...

2019-08-23 17:35:10 812

原创 Springboot源码分析之EnableAspectJAutoProxy

Spring Framwork的两大核心技术就是IOC和AOP,AOP在Spring的产品线中有着大量的应用。如果说反射是你通向高级的基础,那么代理就是你站稳高级的底气。AOP的本质也就是大家所熟悉的CGLIB动态代理技术,在日常工作中想必或多或少都用过但是它背后的秘密值得我们去深思。本文主要从Spring AOP运行过程上,结合一定的源码整体上介绍Spring AOP的一个运行过程。知其然,知其...

2019-08-23 17:18:35 517

原创 新手如何学JAVA呢

如果您是java的初学者,最想知道的莫过于如何才能学好java。以下是我的几点建议。1.奠定java的语法基础 学习java的第一步,就是学会使用java这个程序语言来编写程序,而学习程序语言的第一步就是熟悉其语法的使用。程序语言就是一门语言,所不同的是这 种语言是用来与计算机沟通的,所以若要熟悉语言,使用的方法莫过于多看别人写的程序,了解别人是如何使用java来解决问题的,然后针对同样的...

2019-08-19 14:32:30 82

原创 浅谈Java SE、Java EE、Java ME三者的区别

1. Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。2. Java EE(Java P...

2019-08-16 21:46:17 209

原创 在tomcat中配置JNDI数据源

在tomcat5.0中配置数据源(全局数据源、局部数据源),通过连接池机制连接数据库1. odbc-jdbc桥连2. 通过加载本地驱动连接3. 在web应用服务器中设置数据源,通过池接技术连接数据库(加载本地驱动)4. 在框架中设置数据源,通过内置连接池或者集成外部连接池与数据库交互Tomcat全局数据源的设置:1. 启动tom...

2019-08-16 16:12:29 168

原创 你真的懂 Java 的内存管理和引用类型优化吗?

对于 Java 程序员来说,在 Java 虚拟机自动内存管理机制的帮助下,不再需要为每一个 new 操作去写对应的 delete/free 代码,不容易出现内存泄露和内存溢出的问题。不过,也正是因为 Java 程序员把内存控制的权力交给了 Java 虚拟机,一旦出现内存泄露和内存溢出的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会非常艰难。本文将会对 Java 的内存管理以及四种引用...

2019-08-15 21:50:03 36

原创 什么是Kafka呢?

【前情提要】最近在gayhub上面得到一个开源项目,遂准备研究一下源码,当然第一步就是要把项目运行起来。然后看了一下技术栈,发现包管理工具是使用yarn,以前也听说过yarn但是也没有具体使用过,只知道是facebook发布的包管理程序。1、安装1.下载node.js,使用npm安装npm install -g yarn 查看版本:yarn --version2.安装node...

2019-08-15 16:51:01 40

原创 Mysql无法启动情况下,如何恢复数据呢?

本文适用于,mysql无法启动,但数据文件未丢失的情况。Mysql因意外情况,导致无法启动,数据库未做备份的情况下,如何将数据迁移至其他数据库中。原数据库地址:192.168.1.100(以下简称A服务器)新数据库地址:192.168.2.100(以下简称B服务器)数据恢复流程:进入A服务器,输入命令cat /etc/my.cnf(如文件不在当前位置,可使用find / -...

2019-08-14 16:12:38 755

原创 Kafka快速入门解析

参考官网:http://kafka.apache.org/quickstart一、下载Kafka官网下载地址http://kafka.apache.org/downloads截至2019年7月8日 最新版本为 2.3.0 2.12为编译的scala版本 2.3.0为kafka版本Scala 2.12 - kafka_2.12-2.3.0.tgz (asc, sha512)解压ta...

2019-08-14 16:01:36 239

原创 Docker上快速配置PerconaXtraDBCluster集群

在Docker上快速配置PerconaXtraDBCluster集群创建Docker内部网络# Docker创建内部网络 Create network$ docker network create pxc-network创建多个PXC节点# 初始化第一个节点 Init First node:$ docker run -d \-e MYSQL_RO...

2019-08-13 22:40:19 419

原创 Mac下Flutter 安装与配置

Mac下Flutter 安装与配置关于Flutter的安装其实超级简单,不想看此文的可以直接跳官网这篇主要是简单版的Flutter安装配置,写了:Flutter 安装 环境变量配置 Flutter vscode 配置 Flutter new Demo and runFlutter 安装准备:首先在你的Mac上必须还有700M的空间(下载的SDK有600M)、并且有一个She...

2019-08-13 22:33:57 759

原创 深入理解Java虚拟机笔记

深入理解Java虚拟机笔记---底层原理分析与性能优化文末彩蛋福利# 概念虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)。Java虚拟机阵营:Sun HotSpot VM、BEA JRo...

2019-08-13 22:27:32 60

原创 深入Java -JVM 内存管理

一.综述如果你学过C或者C++,那么你应该感受过它们对内存那种强大的掌控力。但是强大的能力往往需要更强大的控制力才能保证能力不被滥用,如果滥用C/C++的内存管理那么很容易出现指针满天飞的情况,不出问题还好,一出问题debug起来简直让人头疼得不要不要的。借用一句话,“指针一时爽,重构火葬场”。而对java程序员来说,则没有这样的烦恼,因为java直接将内存管理交由jvm来管理,这样程序员...

2019-08-12 22:02:07 43

原创 SpringBoot:如何优雅地处理全局异常

之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Controller下面,满屏幕的try{}catch,看着一点都不优雅,一点都不符合小明的气质,憋了这么久,小明今天终于决定对所有异常实施统一处理的方案。开发准备JDK8、正常的springboot...

2019-08-12 21:54:28 158

原创 Mac安装Homebrew

最近小明刚换置了一个 Mac 本,想搭建一个属于自己的博客网站,需要用到 Node.js 环境,而Node.js 在 MacOS 中是由 Homebrew 进行安装管理的……因此,便有了Homebrew的安装历程。什么是Homebrew?简而言之,Homebrew是Mac Os的包管理工具,相当于Redhat Linux(Centos/RHEL/Fedora)的yum或者D...

2019-08-12 21:49:21 237

原创 hadoop安装解决秘籍

1、故障现象Microsoft Windows [版本 10.0.18362.239](c) 2019 Microsoft Corporation。保留所有权利。C:\Users\Chirius>hadoop version系统找不到指定的路径。Error: JAVA_HOME is incorrectly set. Please update C:\dhc_h...

2019-08-11 16:31:43 58

原创 让JAVA开发头条的内存模型及结构

困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?Java内存模型Java内存模型在JVM specification, Java SE 7 Edition, and mainly in the chapters “2.5 Runtime Data Areas” and “2.6 Frames”中有详细的说明。对象和类的数...

2019-08-08 15:18:13 45

原创 多个平台的 Java Launcher 脚本

通常对于服务来说,过长的命令往往让人感到厌烦,人们需要的只是简单的操作,并且能够支持复杂的功能,对于 Java 开发的服务来说更是如此。一个比较复杂的 Jar 服务使用Java启动,命令如下java -Xms512m -Xmx512m -jar fuck.jar --config config.server -port 10086实际上许多虚拟机的语言的 Host 命令格式也是类似的...

2019-08-05 22:09:51 75

原创 深度探讨Java字节代码的操纵方法

曾给大家介绍过Java字节码文件操作技巧。Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Oracle在内的众多JCP成员积极地推动发展。但是对于Java语言的深度理解和运用,毕竟是很少会有人涉及的话题。本文为IBM工程师成富编写的《Java深度历险》的第一部分Java字节代码的操纵,希望读者们喜欢。在一般的Java应用开发过程中,开发人员使用Java的方式比...

2019-08-02 14:09:22 136

原创 Java和PHP在Web开发方面的比较

比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。以下是我就几个主要方面进行的比较:  一、 语言比较  PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如php...

2019-07-31 20:53:49 134

原创 Java垃圾回收算法

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JV...

2019-07-31 15:25:15 49

原创 Java自定义Exception

这里总结一下Java的Exception,并实现一个自定义Exception类。总结:Throwable对象分为两种类型:Error(表示编译时和系统错误);Exception(在Java类库、用户方法以及运行时故障中抛出的异常)。 Exception细分成两种异常:受检查异常(如,IOException, SQLException等。在编译时要被强制检查的异常,需要用try, catc...

2019-07-31 15:16:15 99

原创 java第一次调用 Hadoop Java API

环境:Hadoop1.2.1例:直接使用FileSystem以标准输出格式显示Hadoop文件系统中的文件编写JAVA文件import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apa...

2019-07-30 21:07:53 245

原创 win7中java编程工具安装 java环境变量设置

win7中java编程工具安装 java环境变量设置Question:编译是显示'javac'不是内部或外部命令,也不是可运行的程序或批处理文件解决:在【系统变量】里编辑java_home、classpath、path环境变量java_home的变量值为 C:\Program Files\Java\jdk1.6.0_26classpath的变量值为 .;C:\Program Fil...

2019-07-29 21:07:55 81

原创 JVM client模式和Server模式的区别

这里向大家描述一下JVMclient模式和Server模式两者的区别和联系,JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。JVM client模式和Server模式JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将...

2019-07-29 20:57:29 94

原创 Java中ThreadLocal的设计与使用

ThreadLocal是什么ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变...

2019-07-28 16:31:38 54

原创 理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc...

在描述JNDI,例如获得数据源时,JNDI地址有两种写法,例如同是 jdbc/testDS 数据源:A: java:comp/env/jdbc/testDSB: jdbc/testDS这两种写法,配置的方式也不尽相同,第一种方法应该算是一种利于程序移植或迁移的方法,它的实现与“映射”的概念相同,而B方法,则是一个硬引用。java:comp/env 是环境命名...

2019-07-28 16:30:28 213

原创 My java——JVM(java 虚拟机)

JVM是Java Virtual Machine(Java虚拟机)的缩写。一般我们在学习java中会用到很多缩写名称,如JRE、JDK、SDK、JAVA SE、JAVA EE、JAVA ME、JAVA FX、还有j2se、j2ee、javaee5,我勒个去!多得很。 有时连支持java的组织都很难搞明白,sun、oracle、openjdk三者的关系都搞不明白,taobao都有它的JVM可...

2019-07-26 16:56:37 50

原创 Redis集群.note

Redis集群1、Redis集群方案比较哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持...

2019-07-26 16:42:54 111

原创 服务容错性Sentinel

服务容错为什么需要服务容错?服务之间存在调用关系,如果被调用服务down掉,处理不及时的话,就会造成雪崩效应,又称之为级联故障、级联失效(cascading failure)。解决方案 超时处理 限流 仓壁模式(设置独立线程池,空间相对隔离) 断路器模式(监控+开关)出自于 :https://martinfowler.com/bliki/Ci...

2019-07-26 13:50:57 418

原创 Java秒杀系统实战系列~构建SpringBoot多模块项目

摘要:本篇博文是“Java秒杀系统实战系列文章”的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项目,即“秒杀系统”!。内容:传统的基于IDEA构建SpringBoot的项目,是直接借助Spring Initializr插件进行构建,但是这种方式在大部分情况下,只能充当“单模块”的项目,并不能很好的做到“分工明确...

2019-07-26 13:45:48 60

原创 LinkedList源码分析:JDK源码分析系列

1.介绍LinkedList 是线程不安全的,允许元素为null的双向链表。2.继承结构我们来看一下LinkedList的继承结构图:代码实现:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E...

2019-07-24 22:04:07 30

原创 关于 Spring JdbcTemplate 的一些总结

关于 Spring JdbcTemplate 的一些总结一个小问题的思考起因当前项目中一直使用的都是SpringData JPA,即public interface UserRepository extends JpaRepository这种用法;考虑到SpringData JPA确实有一定的局限性,在部分查询中使用到了JdbcTemplate进行...

2019-07-24 21:57:34 138

原创 Spring-Boot启动之前做了哪些事?

Spring Boot Jar文件探究初始化一个Spring 应用,添加如下依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" ...

2019-07-24 21:50:44 596

原创 SpringBoot基于数据库实现简单的分布式锁

1.简介分布式锁的方式有很多种,通常方案有:基于mysql数据库 基于redis 基于ZooKeeper网上的实现方式有很多,本文主要介绍的是如果使用mysql实现简单的分布式锁,加锁流程如下图:其实大致思想如下:1.根据一个值来获取锁(也就是我这里的tag),如果当前不存在锁,那么在数据库插入一条记录,然后进行处理业务,当结束,释放锁(删除锁)。 2.如果存在锁,判断...

2019-07-24 21:47:32 127

原创 为什么选择 Spring 作为 Java 框架?

1. 概述在本文中,我们将讨论Spring作为最流行的 Java 框架之一的主要价值体现。最重要的是,我们将尝试理解 Spring 成为我们选择框架的原因。Spring 的详细信息及其组成部分已在我们之前的教程中广泛介绍。 因此,我们将跳过介绍性的“如何”部分,并主要关注“为什么”。2. 为什么使用任何框架?在我们开始任何关于 Spring 的讨论之前,首先让我们了解为什么我...

2019-07-24 21:39:44 295

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