Java
文章平均质量分 70
Java相关技术汇总,基础,web框架开发,相关工具,以及大数据生态系统。
成功人士从不写博客
这个作者很懒,什么都没留下…
展开
-
分布式事务的方案选择
分布式事务方案XA/二阶段提交基于XA协议的二阶段提交所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问各个数据库准备好了吗?如果每个数据库都回 ok,那就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,不适合高并发的场景。JTAJTA只是Java实现XA事务的一个规范原创 2021-02-28 15:32:31 · 327 阅读 · 1 评论 -
从 SpringApplication.run 开始
从 SpringApplication.run 开始这是你的 SpringBoot ,启动,只需一键。@SpringBootApplicationpublic class ServerApplication { public static void main(String[] args) { SpringApplication.run(ServerApplication.class,args); }}但这一键背后发生了什么?挂着嘴边的 IOC 容器何时诞生,天天原创 2020-10-14 17:59:06 · 359 阅读 · 0 评论 -
23种设计模式【Java】全案例解析
具体解析创建型结构型7个原则单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】: 一个类负责一项职责。里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】: 继承与派生的规则。依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】: 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要针对实现编程。接口隔离原则【INTERFACE SEGREGATION PRINC原创 2020-06-21 16:13:28 · 2731 阅读 · 0 评论 -
如何完成一次 IO - Linux I/O详解
如何完成一次 IO哪个男孩不想来一场异步非阻塞的甜蜜恋爱?21 点,你打开微信,开心地对女孩说:“晚上好”。女孩说:“我在洗澡”。你抱着手机等待晚点聊,此刻,你是阻塞的,也是同步的。为什么?写在前面谈起 IO, Javaer 会说起 BIO、NIO、AIO,也会提到同步异步、阻塞非阻塞。但到底什么是 IO, IO又是怎么完成的?1. 什么是 I/O学术的说 I/O 是信息处理系统(计算机)与外界(人或信息处理系统)间的通信。如计算机,即 CPU 访问任何寄存器和 Cache 等封装以外的原创 2020-06-14 18:10:06 · 3033 阅读 · 1 评论 -
分布式缓存选择
分布式缓存的选择和问题如今,缓存系统的应用非常广泛,能够用来提高并发数、数据吞吐量,提高快速响应能力。那么当数据量达到一定程序,单机环境可能就显得有些力不从心了,就需要一个分布式缓存系统。1. 缓存系统的选择 图1-1如上图所示,首先缓存大致可以分为四大类。CDN缓存:CDN即内容分发网络,CDN边缘节点将数据缓存起来。反向代理缓存:如Nginx...原创 2019-12-22 16:01:25 · 707 阅读 · 0 评论 -
Mac Cornerstone查看日志出现:Cornerstone couldn't contact repository to read the lastest log entries
百度查到的是:退出Cornerstone软件打开终端,输入下面命令,并执行defaults delete com.zennaware.Cornerstone HistoryCacheUsage打开finder 前往文件夹 ~/Library/Caches/Cornerstone,删除文件夹但是破解版文件名和com.zennaware.Cornerstone都是不对应的,...原创 2018-12-21 15:32:07 · 741 阅读 · 0 评论 -
Eclispe中scala maven-scala插件的安装
maven-scala插件的安装scala IDE eclipse的插件在https://blog.csdn.net/liyifan687/article/details/80115771中已安装过。这里需要安装一个 m2e-scala1.安装m2e-scala网址http://alchim31.free.fr/m2e-scala/update-site/ ?问题 第一次安装以上三个只安装了...原创 2018-04-28 09:14:41 · 2356 阅读 · 0 评论 -
Git与Github的连接和使用
1. 先输入ssh-keygen –t rsa –C “邮箱地址”,注意ssh-keygen之间是没有空格的,其他的之间是有空格的。2. 会在c盘指定位置产生 id_rsa.pub,复制在github上设置里添加key3. 验证一下是否设置成功,在git bash下输入如下命令:ssh –T git@github.com 4. 配置用户名和邮箱:git config –global user.na...转载 2018-04-24 14:09:46 · 543 阅读 · 0 评论 -
Swagger 自定义Model、Enum(SpringFox源码分析)
Springfox源码分析-自定义Model、Enum先说一说Springfox和Swagger的关系Swagger 是一种规范。springfox-swagger 是基于 Spring 生态系统的该规范的实现。springfox-swagger-ui 是对 swagger-ui 的封装,使得其可以使用 Spring 的服务。由于工作中遇到需要基于 Swagger Json 做一些处...原创 2019-12-05 13:38:43 · 5200 阅读 · 1 评论 -
Spring事务与JDK/CGLIB动态代理
近日面试问及AOP和动态代理,再之后的事务方面有所生疏,感谢面试官特意给我介绍了下,一个之前的知识盲区。首先Spring事务在开发过程中是通过@Transactional注解来控制。1. Transactional注解的原理对于使用了Transactional注解的方法的类,Spring AOP代理会在运行时生成这个类的代理对象。当这个对象运行这个注解方法时,会读取@Transa...原创 2019-05-29 21:18:03 · 3695 阅读 · 2 评论 -
JVM架构浅析
架构图方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有的内存区域。编译器将Java文件编译为Java .class文件,然后将.class文件输入到JVM中,JVM执行类文件的加载和执行的操作。JVM分为三个主要子系统:类加载器子系统(Class Loader Subsystem)运行时数据区(Runtime Data Area)执行...原创 2018-12-17 13:51:31 · 270 阅读 · 0 评论 -
ElasticSearch-Java-SearchGuard连接和使用
Elasticsearch主要是Elasticsearch使用searchguard后Java连接及安全验证安全验证这部分大多选择的Xpack,但Xpack收费当时就用了searchguard,但searchguard相关的文档很少,算是一点点去看官方文档解决。1. searchGuard与ELK的结合1.1 安全证书可以通过官方网站在线生成,填写集群节点信息。邮件发送后下载到本地。1....原创 2018-09-26 10:36:34 · 4219 阅读 · 2 评论 -
原生AJAX和jQuery ajax的使用和区别
Ajax简介 Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写)。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式 。1.原生JavaScript写...原创 2018-05-23 15:17:22 · 4325 阅读 · 0 评论 -
动态(静态)代理实例解析
1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做可在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到的一个思想:不要随意去修改别人已写好的代码或方法,如需修改,可通过代理方式来扩展 例如想邀请一位明星,并不是直接联系明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只...原创 2018-05-16 10:40:59 · 396 阅读 · 0 评论 -
字符串倒序输出的五种方法
//1. 使用数组循环public static String array(String s){ int length=s.length(); char[] array=s.toCharArray(); for(int i=0;i<length/2;i++){ array[i]=s.charAt(length-1-i)...原创 2018-05-07 13:05:01 · 64764 阅读 · 6 评论 -
Shiro自定义Realm的实现
在web中, 用户输入用户名密码登录,我们需要用这些信息和已经注册存在在数据库中的账户信息进行对比,判断用户名和密码是否正确。shiro提供了自定义realm的实现来进行处理对不同数据源的校验: realm就是一个安全数据源。可以将其看作为数据库的另一层封装,连接了应用和db用户提交的数据流到reaml中,reaml中存着数据库中的账户信息,因此进行对比。先调用Subject.l...原创 2018-05-01 13:34:48 · 366 阅读 · 0 评论 -
理解AJAX及基本使用
1. AJAX对 ajax 的认识Ajax 是一种创建交互式网页应用的的网页开发技术;Asynchronous JavaScript and XML”的缩写。Ajax 的优势:通过异步模式,提升了用户体验。优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。Ajax 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务...原创 2018-04-25 13:36:09 · 257 阅读 · 0 评论 -
启动tomcat显示build success但无法继续启动的解决方法
1. 启动tomcat显示build success但无法继续启动的解决方法2. Servlet.service() for servlet [jsp] in context with path [/***] threw exception [java.lang.NullPointerException] with root cause 本次解决方法:最初在Build Path里...原创 2018-04-23 10:58:34 · 5865 阅读 · 1 评论 -
The import ueditor cannot be resolved
<%@ page import=”ueditor.Uploader” %>maven开发时考虑能网络问题那个包未加载成功,可单独下载到本地,本地调用原创 2018-04-23 08:52:19 · 1658 阅读 · 0 评论 -
Swagger-Codegen使用详解
Swagger-Codegen使用1. 是什么swagger 是什么应该不需要介绍。swagger-Codegen是同一团队维护的开源项目,官方介绍如是:Swagger Codegen can simplify your buildx process by generating server stubs and client SDKs for any API, defined with th...原创 2019-12-05 13:43:46 · 17026 阅读 · 0 评论 -
牛客网Java测试题解析
另有:java基础总结1.String、StringBuffer、StringBuilderString字符串是常量,其值不能改变StringBuilder是线程不安全的,速度更快StringBuffer是线程安全的,速度比StringBuilder慢2 .下面有关JVM内存,说法错误的是?C程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几...原创 2018-04-23 17:01:42 · 1355 阅读 · 0 评论 -
Java 基础知识总结-1
主要包含:基本语法,多态,异常处理,一些api1. string数据不可变2. Maven和AntAnt和Maven都是基于Java的构建(build)工具。理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷。Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。 Ant特点 :没有一个约定的目录结构 必须明确让ant做什么,什么时候做,然后编译,打包 没有生命周期...原创 2018-04-24 10:51:42 · 229 阅读 · 0 评论 -
Java 基础知识总结-2
0. 数据类型1. String 是引用类型,底层用 char 数组实现的.2. short s1 = 1; s1 = s1 + 1; short s1 = 1; s1 += 1;前者不正确,后者正确。对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型, 需要强制转换类型才能赋值给 shor...原创 2018-04-24 12:35:51 · 272 阅读 · 0 评论 -
Java 面试题-1
1. OSI的7层从上到下应用层 -表示层 -会话层 - 传输层 -网络层 - 数据链路层 - 物理层 2. 以下哪些不是 javaScript 的全局函数( C )A. eval B. escape C. setTimeout D. parseFloat3. rmdir和rmrmdir删除一个空文件夹 使用方式: rmdir [-p] dirNa...原创 2018-04-25 11:36:05 · 797 阅读 · 0 评论 -
Java 面试题-2
1. 执行以下程序后输出的结果是 AB,By=x;这一句没有任何意义,这只是改变了局部变量的指向,并没有修改哪一个对象,所以对外部无影响。2. Integer.MAX_VALUE+1=Integer.MIN_VALUEInteger.MAX_VALUE的二进制是0111 1111 1111 1111 1111 1111 1111 1111Integer.MIN_VALUE的...原创 2018-04-27 08:12:58 · 1834 阅读 · 0 评论 -
Java 面试题-3
1. 简述SSH概念及主要设计思想?集成 SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。使用 Struts作系统的整体基础架构,负责 MVC 的分离,在 Struts 框架的模型部分,控制业务跳转,利用 Hibernate 框架对持久层提供支持,Spring 做管理,管理 struts和 hibernate。具体:用面向对象的分析方法根据需求提出一些模型,...原创 2018-04-27 08:35:09 · 322 阅读 · 0 评论 -
Hibernate入门基础详解
1. 简述 hibernate 的开发流程第一步:加载 hibernate 的配置文件,读取配置文件的参数(jdbc 连接参数,数据 库方言,hbm 表与对象关系映射文件) 第二步:创建 SessionFactory 会话工厂(内部有连接池) 第三步:打开 session 获取连接,构造 session 对象(一次会话维持一个数据连接, 也是一级缓存) 第四步:开启事务 第五步:...原创 2018-04-26 10:22:17 · 272 阅读 · 0 评论 -
spring依赖注入(IOC)
在Spring容器中为一个bean配置依赖注入有三种方式:使用属性的setter方法注入 使用构造器注入;注解方式1. 使用属性的setter方法注入也就是基于xml的开发 2. 使用字段(Filed)注入(用注解方式)3. 构造器注入:通过将@Autowired注解放在构造器上来完成构造器注入,默认构造器参数通过类型自动装配,...原创 2018-04-23 15:25:28 · 282 阅读 · 0 评论 -
Spring重点概述
1. 对 Spring 的理解* 开源框架,为简化企业级应用开发而生。* Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能。* Spring 是一个 IOC 和 AOP 容器框架。Spring 容器的主要核心是:控制反转(IOC),传统java开发模式中,需一个对象时,会使用 new或getInstance 等直接或间接调用构造方法创建一...原创 2018-04-26 09:00:14 · 345 阅读 · 0 评论 -
Spring事务管理的三种方式
Spring事务管理的核心接口PlatformTransactionManager1. Spring事务的传播属性2. 事务隔离级别3.配置3.1. 编程式事务管理编程式事务管理可通过PlatformTransactionManager实现来进行事务管理,提供了模板类TransactionTemplate进行事务管理,下面主要介绍模板类,需在配...原创 2018-04-26 09:07:11 · 739 阅读 · 0 评论 -
Struts2基础详解
1. 简单介绍 Struts2按照 MVC 设计模式设计的 WEB 层框架,在 struts 1 和 WebWork 的技术基础上进行了合并。全新 Struts2 体系结构与Struts 1差别巨大。Struts 2 以WebWork为核心,采用拦截器机制处理用户的请求, 使业务逻辑控制器能够 ServletAPI 完全脱离。 可把 struts2 理解为一个大servlet,这serv...原创 2018-04-26 10:03:03 · 262 阅读 · 0 评论 -
Mybatis基础详解
0. 开发jdbc开发:pojo实体类xxx.java,xxx.xml映射文件,写sql,sqlmapconfig.xml加载,action调用原生dao开发:实体类,dao接口,daoimpl调用方法xxx.xml文件中sql,action中调用imlp方法 2.1 原生dao:spring配置文件中指定dao实现类 。dao实现类需继承sqlsessiondaosupport超类 。...原创 2018-04-26 09:30:26 · 184 阅读 · 0 评论 -
JAVA集合类简述
结构图 1. 介绍Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但却让其被继承产生了两个接口,Set和List。Set不能包含重复的元素。List是有序的集合,可包含重复的元素,提供按索引访问的方式。Map是Java.util包中的另一个接口,和Collection接口没有关系,相互独立的,但都属于集合类的一部分。Map包含了key-val...原创 2018-04-24 13:58:53 · 407 阅读 · 0 评论 -
Java线程浅析
1. 线程实现两种方式继承Thread类;重写run接口继承Thread类class MyFirstThread extends Thread{ private int i=0; @Override public void run() { // TODO Auto-generated method stub...原创 2018-04-24 17:17:48 · 126 阅读 · 0 评论 -
Java反射浅析
1. 反射的概述反射机制是在运行状态中,对任意一个类,都能够知道这个类的所有属性和方法; 对任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.反射就是把java类中的各种...原创 2018-04-24 17:33:36 · 149 阅读 · 0 评论 -
Jsp和Servlet简述
jsp1. 什么是jsp,什么是Servlet?jsp和Servlet有什么区别?jsp 本质就是一个 Servlet,是Servlet 的一种特殊形式,每个jsp页面都是一个servlet实例。Servlet是由Java提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器管理,用来生成动态内容。一个servlet 实例是实现了特殊接口 Servl...原创 2018-04-24 17:58:55 · 1617 阅读 · 2 评论 -
Java 垃圾回收机制(GC)简述
1. 既有 GC 机制,为什么还会有内存泄露的情况 理论上 Java 因为有垃圾回收机制(GC)不会存在内存泄露问题(这也是 Java 被广泛使用于服务器端编程的一个重要原因)。然而在实际开发中,可能会存在无用但可达的对象,这些对象不能被 GC 回收,因此也会导致内存泄露的发生。 例如 hibernate 的 Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而...原创 2018-04-25 10:13:32 · 2262 阅读 · 0 评论 -
JDBC原生连接与连接池介绍
1. 步骤 Class.forName()加载数据库连接驱动。 第一种:直接注册数据库驱动 DriverManager.registerDriver(new Driver()); 第二种:利用反射机制间接加载数据库驱动,Class.forName(“com.mysql.jdbc.Driver”);(常用) 负责管理JDBC驱动程序的类 DriverManager 会...原创 2018-04-25 10:51:02 · 2692 阅读 · 0 评论 -
Shiro的基础介绍和理解
1. Shiro 框架是 Java 的一个安全框架.可完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。三个核心组件:Subject, SecurityManager 和 Realms. Subject:即“当前操作用户”。但在 Shiro 中,Subject 这一概念并不仅仅指人,也可是第三方进程、后台帐户(Daemon Account)或其他类似事物。仅意味着“当前跟软...原创 2018-04-26 09:11:22 · 289 阅读 · 0 评论 -
SpringMVC一些基础问题
1. SpringMVC 的工作原理用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping 将请求映射到处理器 HandlerExcutionChain;DispatchServlet 根据获得...原创 2018-04-26 08:38:42 · 275 阅读 · 0 评论