此人小小程序员一枚~ 写点技术、写点生活。 我的简书 https://www.jianshu.com/u/dd8907cc9fa5 CSDN https://my.csdn.net/ljheee GitHub https://github.com/ljheee
需求:将Mybatis的执行SQL,按天存日志文件。项目使用的是log4j2。 原先项目,都是将所有日志通通打印到控制台。现在需要将系统接收用户请求后,Mybatis的执行SQL,按天存日志文件。
我们都知道,Java关键字volatile的作用 1、内存可见性 2、禁止指令重排序 可见性是指,在多线程环境,共享变量的操作对于每个线程来说,都是内存可见的,也就是每个线程获取的volatile变量都是最新值;并且每个线程对volatile变量的修改,都直接刷新到主存。
通过javap 命令,可以将字节码文件反编译。如通过下面的命令: javap -c Xxxx.class 而有时候想看某些JDK底层实现,发现反编译得到的代码并没有什么帮助,因此本文介绍如何查看Java的汇编指令,查看Java代码最真实的运行细节。
Spring事务介绍 Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。
终极解决方案: Invalid character found in the request target. The valid characters are defined in RFC 3986 25-Aug-2018 11:27:27.
KafkaConsumer(消费者)每次调用 poll()方法,它总是返回由生产者写入 Kafka但还没有被消费者读取过的记录, 我们因 此可以追踪到哪些记录是被群组里的哪个消费者读取的。
应用程序使用 KafkaConsumer向 Kafka 订阅主题,并从订阅的主题上接收消息 。 从 Kafka 读取数据不同于从其他悄息系统读取数据,它涉及一些独特的概念和想法。
在之前的例子里(Kafka生产者——向 Kafka写入数据), ProducerRecord 对象包含了目标主题、键和值。 Kafka 的消息是 一个个 键值对, ProducerRecord对象可以只包含目标主题和值,键可以设置为默认的 null,不过大多数应用程序会用到键。
不管是把 Kafka 作为消息队列、消息、总线还是数据存储平台来使用 ,总是需要有一个可以往 Kafka 写入数据的生产者和一个可以从 Kafka读取数据的消费者,或者一个兼具两种角 色的应用程序。
发布与订阅消息系统 在正式讨论Apache Kafka (以下简称Kafka)之前,先来了解发布与订阅消息系统的概念, 并认识这个系统的重要性。数据(消息)的发送者(发布者)不会直接把消息发送给接收 者,这是发布与订阅消息系统的一个特点。
对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。
一、 MyBatis的初始化做了什么 任何框架的初始化,无非是加载自己运行时所需要的配置信息。 MyBatis的配置信息,大概包含以下信息,其高层级结构如下: 配置 属性 设置 类型命名 类型处理器 ...
MyBatis功能架构设计 image.png 功能架构讲解: 我们把Mybatis的功能架构分为三层: (1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。
AOP主要是它以横切面的方式,将增强的代码插入到主流程中。 切面织入的方法: 1、编译期织入---->Aspectj是静态织入,即编译时期就织入 2、类装载期织入 3、动态代理织入---->在运行期为目标类添加增强生成子类的方式,Spring AOP采用动态代理织入切面 AOP代理对象 AOP 代理对象其实是由 AOP 框架动态生成的一个对象,该对象可作为目标对象使用。
网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。
目标:webapp工程,监控所有service方法执行时间。 工程:Spring+SpringMVC+MyBatis AOP使用AspectJ 注解方式。
我们的程序从编写到执行,单个模块一般都是从上到下、垂直、连续的。 AOP是一种“横切”技术,能够在合适的地方“拦腰截断”、插入一些“代码”,使得原有功能进行增强。
依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系、接口与接口之间的继承关系; 实现:表示类对接口的实现; 依赖:当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种“相识关系”,只在某个特定地方(比如某个方法体内)才有关系。
代码篇 如果要随机产生一个a到b(包括a和b)之间的整数,可以使用下面的公式: int num = (int)( Math.random() * ( b – a + 1 )) + a; // 随机产生一个a到b(包括a和b)之间的整...
什么是Docker? docker_logo.png Docker 是一个开源的应用容器引擎。它支持将软件、软件的依赖、以及软件的运行环境一起打包成一个镜像文件;将镜像发布出去,其他使用者可以直接使用这个镜像。
常用的日志组件 提问:如果自己开发一个开源框架(如Spring),你将采用上述哪个日志组件? 发现哪个都不能采用,只能基于应用程序实际使用的日志组件来,不然就会日志打印多份。
用过 MyBatis Generator(以下简称MBG)插件的都知道,使用该插件可以很方便的生成实体类、Mapper接口以及对应的XML文件。 本文是基于SSM(Spring+SpringMVC+MyBatis)的webapp工程,讲解如何使用通用mapper,加速开发,解决原生MyBatis的不足。
image.png 什么是通用mapper? 通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。 可以按照自己的需要选择通用方法,还能很方便的开发自己的通用方法。
1.1.1 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。
Lambda 表达式是在Java 8中引入的,并且成为了Java 8亮点。它使得功能性编程变得非常便利,极大地简化了开发工作。 让我们从最简单的例子开始,来学习如何对一个string列表进行排序。
什么是Java8 Stream,为什么需要Stream? Stream是Java8一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。
Thrift是个RPC框架,它的目标是为各种流行的开发语言提供便利的RPC调用机制,而不需要使用那些开销巨大的方式,比如SOAP。 Thrift使用语言中立的服务定义文件(IDL,接口描述语言),描述数据类型和服务接口。
RPC框架中有3个重要的角色: image.png 注册中心 :保存所有服务的名字,服务提供者的ip列表,服务消费者的IP列表 服务提供者: 提供跨进程服务 服务消费者: 寻找到指定命名的服务并消费。
如何发布自己的服务? RPC远程过程调用中,存在2个角色,一个服务提供者、另一个服务消费者。那如何让调用者知道,存在哪些服务可以调用呢?即如何让别人使用我们的服务呢? 有同学说很简单嘛,告诉使用者服务的IP以及端口就可以了啊。
MyBatis中的SqlSession接口中提供的分页功能的方法 // 获取sqlSession的步骤略,statement略,mapper中的映射语句为 // select * from users List list = sqlSession.
1.概述 1.发展历史 JDK 1.4 之前,Java 所提供的网络编程API全部采用了I/O同步阻塞模型 JDK 1.4 引入了非阻塞I/O(NIO)类库,自此Java语言可以支持多路复用I/O模型 JDK 1.7 引入了异步I/O编程类库,被称为NIO2,也叫AIO 2.Java NIO 开源网络通信框架 Mina:Apache Grizzly: Netty:JBoss。
IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。
Buffer类 CharBuffer charBuffer = CharBuffer.allocate(8); charBuffer.capacity(); charBuffer.limit(); charBuffer.position(); 通过allocate()方法创建的Buffer对象是普通Buffer,ByteBuffer还提供了一个allocateDirect()方法类创建直接Buffer。
Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database! Caused by: com.
image.png 库 一般实现了一些复杂功能,能够 解决直接的计算或处理,把这些实现代码打包、封装供外部调用。 什么是框架? 1.框架框架不可直接运行,它是一个应用程序的半成品。
在进入NIO之前,先回顾一下Java标准IO方式实现的网络server端: public class IOServerThreadPool { private static final Logger LOGGER = LoggerFactory.
在面向对象编程中必不可少需要在代码中定义对象模型,而在基于Java的业务平台开发实践中尤其如此。相信大家在平时开发中也深有感触,本来是没有多少代码开发量的,但是因为定义的业务模型对象比较多,而需要重复写Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等。
引言 复习要点 本文大概围绕如下几点进行阐述: 为什么使用消息队列? 使用消息队列有什么缺点? 消息队列如何选型? 如何保证消息队列是高可用的? 如何保证消息不被重复消费? 如何保证消费的可靠性传输? 如何保证消息的顺序性? 我们围绕以上七点进行阐述。
image.png image.png image.png image.png 11.png 12.png
华为:##6130## 小米:##4636## VIVO:##4838## 魅族:##4636## 其它安卓型号:##4636##
消息中间件选型分析 ——从Kafka与RabbitMQ的对比来看全局 有很多网友留言:公司要做消息中间件选型,该如何选?你觉得哪个比较好?消息选型的确是一个大论题,实则说来话长的事情又如何长话短说。
关于Session,在Java Web开发中,为我们提供了很多方便,Session是由浏览器和服务器之间维护的。好吧,闲话不多说,下面让我们一步一步来实现它们。
包含的重点内容: JAVA基础 JVM 知识 开源框架知识 操作系统 多线程 TCP 与 HTTP 架构设计与分布式 算法 数据库知识 消息队列 Redis,Memcached 搜索 JAVA基础 JAVA中的几种基本类型,各占用多少字节? image 下图单位是bit,非字节 1B=8bit image String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。
1题目描述 在n个元素的数组中,找到值为k的数字对去重后的个数 image.png image.png //参考代码 30% case public class Main { public static void m...
在线笔试题(写出运行结果) int i = 5,j = 10; System.out.println(i+~j); //-6 System.out.println("A".
synchronized修饰的代码块同步执行,不在synchronized块中的代码会异步执行,因此推荐用同步代码块,而非同步整个方法。 synchronized修饰同步方法和代码块,一定是排队运行的(线程独占)。
文件相关 find 命令实现搜索 标准命令如下: find ./ -iname "*.txt" -iname 是不区分大小写。如果要区分大小写的话 -name 即可。
1、命名严禁使用拼音与英文混合的方式。 2、领域模型命名规约 1) 数据对象: xxxDO, xxx 即为数据表名。 2) 数据传输对象: xxxDTO, xxx 为业务领域相关的名称。