自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乔布斯基的博客

乔布斯基的博客

  • 博客(70)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入理解Java虚拟机-类加载与双亲委派

类加载过程1,类生命周期分为加载,验证,准备,解析,初始化,使用和卸载,其中验证,准备和解析阶段和称为连接。2,加载:通过一个类的全限定名来获取定义此类的二进制字节流,将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。数组本身不通过类加载器创建,它有虚拟机直接创建。3,...

2018-12-15 20:16:31 314

原创 win10家庭版安装Docker

我们工作中使用Docker都是部署在linux服务器上面的,但是我们个人电脑一般使用的是Windows,那么docker能够部署在Windows上面吗?1,首先来了解一下什么是Docker(参考文档1):Docker 是起源于 Linux 上的技术,是基于 Linux 内置的 Namespace 和 CGroup 等系统内隔离机制而抽象出来的一种轻虚拟化技术。微软与 Docker 在 ...

2018-12-08 15:37:47 33851 23

原创 Navicat连接Mysql报错:Client does not support authentication protocol requested by server;

 Navicat连接MySQL Server8.0版本时出现Client does not support authentication protocol requested  by server;1,启动MySQL 8.0 Command Line Client2,输入密码,登录Mysql3,分别输入如下命令USE mysql;ALTER USER 'root'@'l...

2018-12-08 00:34:50 479

原创 深入理解Java虚拟机-一张图了解Class文件结构

 Class文件是Java虚拟机执行引擎的数据入口,也是Java技术体系的基础构成之一,老衲废寝忘食总结Class文件结构要件,希望各位施主能够了解一二,奉上知识图谱一份。...

2018-12-07 22:48:03 192

原创 深入理解Java虚拟机-JDK自带工具集

1,JPS:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程   1.1,jps -q:只输出LVMID(Local Virtual Machine Identifier本地虚拟机唯一ID),省略主类的名称   1.2,jps -m:输出虚拟机进程启动时传入给主类mian()函数的参数   1.3,jps -l:输出主类的全民,如果进...

2018-11-20 21:50:30 435

原创 深入理解Java虚拟机-垃圾收集算法及收集器

1,如何判断对象是否还在被引用?    a,引用计数算法:给对象添加一个引用计数器,当对象被引用时,计数器+1,当引用失效时,计数器-1,计数器为0时,表示对象已经不再被使用。引用计数法会因为循环引用导致对象无法被回收。    b,可达性分析算法:通过一系列的“GC Roots”作为起始点,从这些点开始向下搜索,搜索所有走过的路称为引用链。当一个对象到GC Roots不可达时,表示该对象不...

2018-11-16 21:30:57 137

原创 深入理解Java虚拟机-Java内存区域、对象创建及访问

1,运行时数据区域包括:方法区,虚拟机栈,本地方法栈,堆,程序计数器,如下图1图1,Java虚拟机运行时数据区    1.1,程序计数器(Program Counter Register),是一块较小的内存空间,可以看做是当前线程所执行字节码的行号表示器。唯一不会抛出OOM异常的区域。    1.2,Java虚拟机栈(Java Virtual Machine Stacks),线程私...

2018-11-04 22:55:41 240

原创 深入理解Java虚拟机-OOM分析

OOM即Out Of Memory Error,内存溢出。如果不断的创建对象,并且这些对象到GC Roots之间有可达路径,那么这些对象就不会被垃圾回收机制清楚,当对象数量达到容量限制是就会产生内存溢出。在虚拟机中,只有程序计数器不会产生OOM,除此之外其他几个运行时区域都有可能发生OOM。下面通过一段代码模拟内存溢出:public class OOMObject { priv...

2018-11-03 21:51:42 664

原创 深入理解Java虚拟机-Eclipse Memory Analyzer 安装使用说明

Eclipse Memory Analyzer(简称MAT)是一个功能丰富且操作简单的JVM Heap Dump分析工具,可以用来辅助发现内存泄漏减少内存占用。使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象的 Retained Size,查看是谁在阻止垃圾回收,并自动生成一个 Leak Suspect(内存泄露可疑点)报表。...

2018-11-03 10:59:14 1538

原创 领域驱动设计之我见-实现模式

领域驱动设计,这个名词从字面上来看分为三个部分,领域,设计,驱动。前面我针对领域做了一些叙述,总结起来就是一句话:技术专家和业务专家一起采用面向对象的思想来提取业务模型。那么接下来要看设计了,有了比较恰当的业务模型了,怎么将其设计为一个合理的软件系统呢?在网上搜一下,随处可见各大博主对领域驱动设计的精彩描述,但是有读过埃文斯前辈的《领域驱动设计:软件核心复杂性应对之道》的读者会发现,各大博文基...

2018-07-19 22:13:42 756

原创 领域驱动设计之我见-领域建模

前面两节絮絮叨叨重点讲了一句话:领域驱动设计的核心在领域模型,领域建模核心在精通领域业务。那么该如何做好领域建模呢?需要精通的能力都没有捷径可走,但是也不是没有方法可循,下文就领域业务和建模两方面做一下讲解。做好领域建模,首先要做的工作是要精通领域业务知识,那么领域业务知识从哪里来呢?前面章节讲了从事软件研发的工程师并非全部来自于科班出身的学生,有些计算机相关学科天然带着领域业务知识,例如GI...

2018-07-18 22:05:24 2782

原创 领域驱动设计之我见-领域业务

谈到领域驱动设计(DDD),人们很容易想到如下这张图,那么是不是你的软件做了如下的分层设计就是领域驱动设计的了?显然不是,以下分层只能说明的软件做了分层架构,领域驱动设计的核心在领域模型,领域模型的核心在业务知识。如果能够采用面向对象思维将业务抽象为恰当的模型,不管用什么架构都称得上领域驱动设计。在大学期间学了很多GIS的专业课程。其中《GIS原理与应用》,原理讲什么?就是现实世界如何抽象...

2018-07-16 21:56:28 1241

原创 领域驱动设计之我见-面向对象思维

领域驱动设计之我见-面向对象思维公司最近在推动研发体系员工技能图谱学习,其中对技术经理有一项基本要求是领域建模能力。关于领域驱动设计,埃文斯前辈出版过一本书《领域驱动设计:软件核心复杂性应对之道》,想必大多软件工程师都有读过,也对领域驱动设计有不同的见解,我的理解领域建模也就是面向对象建模。我本身并非科班出身,原本是个地道的Giser,大学期间学的第一门语言是C语言,继而又学习了C++,也...

2018-07-15 21:01:31 1002

原创 微服务优化之异步调用

微服务优化之异步调用前一节《微服务优化之并行》,主要从并行的角度来提高微服务的响应时间,本节讲一下微服务优化之异步调用。异步的前提是对依赖的RPC接口调用,不需要关心其执行结果,对数据没有强一致性要求,只要能够达到最终一致性就好。该种情况下,实现方式一般有两种:第一种,对于最终一致性要求很低的情况,比如当用户投资抢标的情况下,只要用户的请求到达服务端,并且校验通过允许抢购,就可以记录用...

2018-05-18 23:01:48 7088

原创 微服务优化之并行调用

微服务优化之并行调用互联网产品随着用户的增加,系统对服务的高性能、高可用、可伸缩、可扩展的支持,大都采用分布式RPC框架。然而随着业务的增加,系统越来越多,系统之间的调用也越来越复杂,原本一个系统中一次请求就可以完成的工作,现在可能被分散在多个系统中,一次请求需要多个系统响应。这样就会放大RPC调用延迟带来的副作用,影响系统的高性能需求。例如:一个RPC接口中需要依赖另外三个系统的RPC服...

2018-05-10 22:54:34 7721 3

原创 一张图读懂大型网站技术架构

软件架构师最大的价值不在于掌握多少先进的技术,而在于具有将一个大系统切分成N个低耦合的子模块的能力,这些子模块包含横向的业务模块,也包含纵向的基础技术模块。这种能力一部分源自专业的技术和经验,还有一部分源自架构师对业务场景的理解、对人性的把握、甚至对世界的认知。----李智慧以下为李智慧老师的大型网站技术架构的全文思维导图,和希望在技术道路上越走越远的你共享。点击下载   完整思维

2018-01-21 21:31:34 4416

转载 最全的freemarker教程

FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:1,文本:直接输出的部分2,注释:格式部分,不会输出3,插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出4,FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出下面是一个FreeMarker模板的例子,包含了

2017-11-11 21:11:48 563

原创 mybatis自动生成器(mybatis.generator)使用

我们在工程开发时经常会需要很多表,需要生成很多model对象,如果需要一个一个的写这些model和对应的映射文件及sql,是一件比较繁杂的事情。幸好,有现成的工具可以通过简单的配置,然后一键生成github地址 点击打开链接下面展示一下使用方式1,第一步下载eclipse插件下载地址2,创建generatorConfig.xml文件 <classPathEntry l

2017-08-31 22:01:31 470

原创 Spring-Javaconfig-Mybatis-JNDI连接mysql配置

本文主要演示通过jndi配置数据源,通过spring-javaconfig的方式配置mybatis,连接mysql数据源主要看代码1,maven工程中添加依赖 org.mybatis mybatis-spring 1.3.0 org.mybatis mybatis 3.4.2 mysql mysql-conne

2017-08-29 22:48:44 2949

原创 Java RMI特性及实例代码

RMI (Remote Method Invocation)1,RMI 采用stubs 和 skeletons 来进行远程对象(remote object)的通讯。stub 充当远程对象的客户端代理,有着和远程对象相同的远程接口,远程对象的调用实际是通过调用该对象的客户端代理对象stub来完成的。2,RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging

2017-08-26 14:13:41 384

原创 spring实战-Spring-security自定义登入登出、防csrf攻击及视图保护

第十篇:Spring-security自定义登入登出、防csrf攻击及视图保护这是Spring及SpringMVC的最后一篇,本次主要演示SpringSecurity更使用的示例,如自定义的登录页面,系统登出,防止CSRF跨站攻击,以及视图保护视图保护可以定义到按钮级别的权限先看自定义的登录页面1,还是SecurityConfig的configure配置@Override p

2017-08-21 18:45:55 4222

原创 spring实战-Spring-security权限认证白名单

第九篇:spring实战-Spring-security权限认证白名单当我们为程序设置权限认证时,主要是希望能够保护需要保护的功能,并不是说所有的功能都需要被保护起来,比如说系统主页,帮助中心等等此时我们可以通过白名单的方式,让某些功能对未登录用户公开,Spring-security提供了对固定路径,或者模糊匹配路径的保护com.halfworlders.idat.config

2017-08-21 15:22:50 24510 3

原创 spring实战-Spring-security实现用户权限认证登录

第八篇:Spring-security实现用户权限认证登录spring-security原本是Acegi Security组件,该组件是一个强大的安全框架,但是使用方式很繁琐,要配置几百行XML。集成进Spring后,就可以通过xml或者JavaConfig的方式,很容易的就实现了系统的集成。下面示例展示了通过JavaConfig的方式集成spring-security安全框架

2017-08-19 23:14:27 6126

原创 spring实战-Spring中Filter以及处理Exception方式

第七篇:spring实战-Spring中Filter以及Exception方式Filter对于Web应用程序是至关重要的,如果web请求的字符转换,XSS攻击拦截等等在SpringMVC中添加Filter也是非常方便的,可以通过重写AbstractAnnotationConfigDispatcherServletInitializer的getServletFilters()来实现如我们

2017-08-19 14:43:11 4733 3

原创 spring实战-Spring文件上传MultipartFile

第六篇:spring实战-Spring文件上传MultipartFile在构建网站是,处理文件上传功能是必须的,比如创建用户需要用户上传头像,创建服务器列表需要上传Excel文件等等在Springmvc中对文件上传做了比较好的支持,同时支持基于Servlet3.0的标准multipart请求(StandardServletMultipartResolver),也支持基于Jakarta的Co

2017-08-19 12:02:33 665

原创 spring实战-Spring-Tiles模板的应用

第五篇:Spring-Tiles模板的应用在网页搭建时,为了保持一个站点网站的风格统一,网页往往会包含相同的公共头尾或者侧边栏,如果把这些功能的页面区域写到各个页面里面,会导致很多的重复工作,而且带来繁重的后期维护成本。apache tiles 提供了一个比较好的解决方案,就是定制网页模板,通过模板搭建网站各个网页共同的区域,每个页面只维护

2017-08-17 22:56:27 715

原创 spring实战-Spring-JSP标签

第四篇:Spring-JSP标签1,Spring绑定标签,合计14个如下2,Spring通用标签,合计10个,有些已经不再使用,下面重点使用messages标签3,绑定标签实例<!-- prefix可以赋值为任意值,本系列,将其命名为form,后面使用时需要以此为前缀,如 spring的jsp标签库合计有1

2017-08-17 01:01:00 4786

原创 spring实战-参数传递,表单处理及表单校验

第三篇:Spring MVC的参数传递,表单处理及表单校验在处理应用时,客户端不仅仅是被动的接受服务器传过来的信息,还需要与服务器端进行交互,甚至向服务器提交文案或上传文件本节主要演示SpringMVC的两种参数传递的方式,创建表单form以及将from表单内容提交到服务器,并进行验证http://www.halfworlders.com/* 直接接受对象类型Interface 作为入参 * form表单中input的属性name和Interface的属性一一对应 * 注解@Valid启用校

2017-08-15 21:01:48 969

原创 spring实战-将模型传递到视图中渲染

第二篇:构建基本数据模型,并将模型传递到视图渲染在SpringMVC中将模型传递到前端有多种方式,可以通过Model,将数据传到前端,也可以通过控制器返回值将数据传递到前端在web层我们主要通过Model将数据传到前端,在后面Service层我们会主要通过返回值+@ResponseBody注解的方式,将数据回传客户端IdatControl

2017-08-14 22:50:29 683

原创 spring实战-搭建SpringWeb应用程序

系统名称:IDAT(interface document and test)系统分层:web层,service层Web层:标准MVC模型设计,主要面向客户端,设计用户操作逻辑编写,不直接对接数据库Service层:基于领域对象模型设计,负责Web层的服务对接系统使用组件:Spring,SpringMVC,MyBatis后续可能使用Spring Cloud

2017-08-13 22:39:55 561

原创 spring实战-基于注解的面向切面编程(AOP)

Spring提供了强大的面向切面编程,实现对象之间的解耦,目前Spring-aop仅提供基于函数的切面TestMainpackage com.halfworlders.test;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotati

2017-08-12 19:41:56 942

原创 spring实战-条件装配bean

在做大型项目时,我们的系统会有多个运行环境,如开发人员自己的本地环境dev,测试人员的测试环境sit,上线前的预生产环境pre,线上环境prd在不同环境中我们可能需要不同的配置,如数据库配置,MQ配置等,在不同的环境都有相应的不同的配置,这时候我们需要根据不同的环境来创建不同的配置强大的Spring为我们提供了条件化装配Bean和profile的bean装配 * profile的需要两个参数:spring.profile.active和Spring.profile.default * 有多种方式配

2017-08-10 21:55:31 1090

原创 spring实战-混合装配bean

spring 还可以使用xml和JavaConfig进行混合装配Bean * 通过@ImportResource在JavaConfig中引入XML配置 * 还可以通过@Import导入另外一个JavaConfig配置@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=ServiceConfig.class)

2017-08-09 23:16:51 500

原创 spring实战-JavaConfig装配bean

Spring还提供了基于Java配置(JavaConfig)来装配bean,在编程时推荐使用类型安全,且比XML更加强大的JavaConfig。TestMain4 * 1,@ComponentScan 等价于<context:component-scan> * 2,@ComponentScan不带参数时, 表示扫描该JavaConfig文件所在包以及子包内的所有带注解的Bean * 3,系统开发时通常将JavaConfig集中放在一个包内,以方便管理,此时可以通过basePackages参数

2017-08-08 22:26:47 1235 1

原创 spring实战-注解装配bean

spring提供的基于xml的bean装配并不受所有人的欢迎,实际上很多开发人员排斥太多的xml配置,spring还提供了基于注解的bean申明和装配,事实上该种方式也是目前最普遍受欢迎的方式 * @Primary 注解 设置首选bean * @Qualifier 注解设置限定符 * @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) 注解设置作用域 xmlns:xsi="http://www

2017-08-06 22:10:28 760 1

原创 spring实战-自动装配bean

如果采用显式的装配所有bean,可能会觉得会配置很多的bean,spring定义了一套自动装配bean的方式<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www

2017-08-06 18:02:01 558

原创 spring实战-显式装配bean

以下实例说明了spring中bean的创建方式,作用域,初始化和销毁,以及属性注入等方法<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframewo

2017-08-05 00:31:59 926

原创 java并发编程实战-Java内存模型

1,JMM(Java类型模型)规定了JVM必须遵循的一组最小保证,这组保证规定了对变量的写入操作在何时将对于其他线程可见。  1.1,平台的内存模型:在共享内存的多处理器体系架构中,每个处理器都拥有自己的缓存,并且定期地与主内存进行协调。要想确保每个处理器都能在任意时刻知道其他处理器正在进行的工作,将需要非常大的开销。Java还提供了自己的内存模型,并且JVM通过在适当的位置插入内存栅栏来屏蔽

2017-07-29 18:29:58 304

原创 java并发编程实战-CyclicBarrier和FutureTask使用

import java.util.concurrent.Callable;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.FutureTask;public class FutureTest { public static void main(String[] args) { new Fut

2017-07-27 20:26:47 745

原创 java并发编程实战-原子变量与非阻塞同步机制

1,近年来,在并发算法领域的大多数研究都侧重于非阻塞算法,这种算法用底层的原子机器指令(例如比较并交换指令)代替锁来确保数据在并发访问中的一致性。2,与基于锁的方案相比,非阻塞算法在设计和实现上都要复杂得多,但它们在可伸缩性和活跃性上却拥有巨大的优势。3,锁的劣势  3.1,当有多个线程同时请求锁时,JVM需要借助操作系统的功能,将线程挂起并且在稍后恢复运行。当锁上存在着激烈的竞争时,

2017-07-24 22:30:18 336

mybatis自动生成器-eclipse插件

mybatis自动生成器-eclipse插件 通过该插件配合generatorConfig.xml文件实现mybatis自动根据数据库表名生成对应的model对象,dao接口,mapper文件 使用说明:http://blog.csdn.net/tidu2chengfo/article/details/77754738

2017-08-31

空空如也

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

TA关注的人

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