- 博客(107)
- 收藏
- 关注
原创 IntelliJ IDEA插件--CodeTemplate,快速插入保持代码块
IntelliJ IDEA插件–CodeTemplate,快速插入/保持代码块插件的具体作用? 用于保存经常需要复用的代码块,例如Spring/Mybatis/SpringBoot等框架的配置文件,需要反复添加的代码等等保存的代码可以在云端同步,并随时可以快速插入模板。插件的获取: 1.在jetbrains插件库下载,插件地址 2.打开Setting->plugin,搜索CodeTemplate下载安装即可如何使用? 在安装完成以后右键即可使用该插件,在使用功能之前你需
2020-09-11 16:20:27 1683
原创 Spring源码解析一:容器初始化
超详细Spring源码解析一:容器初始化学习java也有几个月了,之前学习完Spring的源码一直没有时间总结(主要是懒),今天抽空回头做了一下复习,就想着将Spring源码的解析和理解分享出来,可能会有不贴切的地方还希望看客海涵指出。前言首先让我们看看当我们实例化一个容器时,spring做了什么//这是我们常用的实例化方式AnnotationConfigApplicationCon...
2020-04-06 19:28:01 289
原创 NIO 非阻塞式网络通信
传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降。 Java NIO 是非阻塞模式的。当线程从某通道进行读写数据时...
2020-03-29 19:30:48 240
原创 NIO 通道
通道 通道(Channel):由 java.nio.channels 包定义的。Channel 表示 IO 源与目标打开的连接。Channel 类似于传统的“流”。只不过 Channel 本身不能直接访问数据,Channel 只能与Buffer 进行交互。 Java 为 Channel 接口提供的最主要实现类如下:•FileChannel:用于读取、写入、映射和操作文件的通道。•Da...
2020-03-29 19:25:18 167
原创 NIO 缓冲区
Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer)。通道表示打开到 IO 设备(例如:文件、套接字)的连接。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理。缓冲区 缓冲区(Buffer):一个用于特定基本数据类型的容器。由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的...
2020-03-29 19:19:36 295
原创 JUC 线程池
线程池 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行任务集时使用的线程)的方法。每个 ThreadPoolExecutor 还维护着...
2020-03-29 19:08:57 117
原创 JUC 读写锁
读写锁 ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。。 ReadWriteLock 读取操作通常不会改变共享资源,但执行写入操作时,必须独占方式来获取锁。对于读取操作占多数的数据结构。 ReadWriteLock 能提供比独占锁更高的并发性。而对于只读的数据结构,...
2020-03-29 19:05:52 216
原创 JUC 控制线程通信
控制线程通讯 Condition 接口描述了可能会与锁有关联的条件变量。这些变量在用法上与使用 Object.wait 访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个 Lock 可能与多个 Condition 对象关联。为了避免兼容性问题,Condition 方法的名称与对应的 Object 版本中的不同。 在 Condition 对象中,与 wait、notify 和...
2020-03-29 19:04:19 188
原创 JUC Callable接口与同步锁
Callable接口 Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口 Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。 Callable 需要依赖FutureTask ,FutureTask 也可...
2020-03-29 19:01:55 241
原创 JUC 锁分段机制与闭锁
锁分段Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。 ConcurrentHashMap 同步容器类是Java 5 增加的一个线程安全的哈希表。对与多线程的操作,介于 HashMap 与 Hashtable 之间。内部采用“锁分段”机制替代 Hashtable 的独占锁。进而提高性能。 此包还提供了设计用于多线程上下文中的 ...
2020-03-29 18:57:59 371
原创 JUC CAS算法
CAS算法CAS (Compare-And-Swap) 是一种硬件对并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令,用于管理对共享数据的并发访问。 CAS 是一种无锁的非阻塞算法的实现。 CAS 包含了 3 个操作数: 需要读写的内存值 V 进行比较的值 A 拟写入的新值 B 当且仅当 V 的值等于 A 时,CAS 通过原子方式用新值 B 来更新 V 的值,否...
2020-03-29 18:52:54 222
原创 JUC - volatile关键字
内存可见性 内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。 可见性错误是指当读操作与写操作在不同的线程中执行时,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。 我们可以通过同步来保证对象被安全地发布。除此之外我们也可以...
2020-03-29 18:48:46 161
原创 Seata
使用搭建初始配置打开conf下的file.conf使用conf下的db_store.sql文件建库store在业务模块数据库 执行db_undo_log.sql修改register.conf 指明注册自中心是nacos,配置连接信息vgroup_mapping.my_test_tx_group = "default" #修改分组最后启动nacos 再启动seata-s...
2020-03-27 16:50:50 336
原创 Sentinel
1.在github上下载Sentinel Dashboard2.目录下执行java -jar XXX启动3.登录localhost:8080 显示界面即启动成功新建module添加依赖修改ymlspring: application: name: sentinel-payment cloud: nacos: disc...
2020-03-27 16:48:48 143
原创 Nacos集群与持久化
切换数据库1.在nacos conf 目录下找到sql脚本2.执行脚本创建数据库环境3.修改conf下的application.properties 填入 数据库链接 账号密码spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncod...
2020-03-27 16:42:42 169
原创 Nacos 服务注册 配置中心
下载 nacos server http://nacos.io解压启动后访问localhost:8848/nacos在module 中添加依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-n...
2020-03-27 16:40:47 435
原创 Sleuth链路监控
链路监控下载Zipkin https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/启动 进入到目录下,java -jar xxx.jar监控界面:localhost:9411配置服务1.添加依赖<dependency> <groupId>org.springframewo...
2020-03-27 16:32:38 129
原创 Stream消息驱动
消息驱动–生产者1.新建module添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId></dependency>...
2020-03-27 16:27:37 261
原创 Config配置中心--Bus消息总线
搭建配置总控中心github上新建仓库建模块添加依赖修改ymlcloud: config: server: git: username: ##### password: ##### uri: https://github.com/illfg/Config-Center.git #根目录 ...
2020-03-27 16:20:57 213
原创 Hystrix
三大概念:服务降级,服务熔断,服务限流开始1.添加依赖2.实现业务3.在启动类中添加注解@EnableCircuitBreaker1.服务降级为需要服务降级的方法添加注解,并提供其服务降级方法@HystrixCommand(fallbackMethod = "payment_TimeoutHandler",commandProperties = { @HystrixP...
2020-03-27 16:10:16 110
原创 GateWay
使用1.添加依赖:(不需要web依赖)2.配ymlspring: cloud: consul: host: http://localhost port: 8500 discovery: service-name: ${spring.application.name} gateway: discovery:...
2020-03-27 16:04:58 158
原创 Consul
下载解压后,路径下打开cmd,执行consul agent -dev 启动服务web可视化界面localhost:85001.添加依赖2.在启动类添加注解 @EnableDiscoveryClient3.配置ymlspring: application: name: payment-8004 cloud: consul: host: localhos...
2020-03-27 13:13:21 96
原创 OpenFeign
简单记录一下open Feign的用法1.添加依赖,2.在启动类上添加注解:@EnableFeignClients3.创建服务类----用于调用远程服务@Component@FeignClient("PAYMENT") //要调用的服务名public interface PaymentFeignService {//远程服务的handler@RequestMapping("pay...
2020-03-27 12:50:21 116
原创 Ribbon更改负载均衡模式
1.添加Ribbon依赖2.新建一个更改负载均衡的类,这个类不能放在能被@componentScan扫描的包下3.@Configurationpublic class BalanceRule { @Bean RandomRule randomRule(){ return new RandomRule(); #内置的负载均衡规则 }}4.启动类中...
2020-03-27 12:40:12 496
原创 Zookeeper服务注册
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语...
2020-03-27 12:32:38 448
原创 Eureka服务注册与发现
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Serv...
2020-03-27 12:23:20 154
原创 Spring注解 ioc内容
配置类使用JavaConfig代替xml配置文件 配置类 == 配置文件声明为配置类的java类需要加上@Configuration注解使用@Bean为容器添加一个bean,返回类型是bean的类型,相当于xml中的class,返回值为实际添加到ioc中的对象,默认id是第一个之母小写的方法名,可以指定id值@Configurationpublic class Spring_anno_...
2019-12-01 11:11:34 108
原创 事件调度器 - 蓝图破碎可破坏网格体
事件调度器在需要调用其他蓝图函数的蓝图中添加分发器被调用函数在被调用蓝图中引用调用蓝图实例,并调用(绑定事件到xxx)方法,并为他们绑定函数回到调用蓝图中,拖拽调度器点击调用即可调用之前绑定的函数破碎节点在世界中放置创建好的可破碎网格体,并在网格体的附近放置一个目标点,方便定位破碎的地点打开关卡蓝图,分别引用目标点和要破碎的网格体获取目标点位置右键并搜索app...
2019-10-27 10:46:44 335
原创 SpringMVC - 异常处理 -整合SSM
异常处理 @RequestMapping("error") public String testerror() { int i = 1/0; return "welcome"; } //处理该类中出现的ArithmeticException,AclNotFoundException //方法的参数中只能由E...
2019-10-24 21:30:42 148
原创 SpringMVC -处理JSON数据 - 文件上传 - 拦截器
springMVC通过ajax处理JSON数据需要jar包: jackson-annotations.jar jackson-core.jar jackson-databin.jar前台:服务器将返回值 以Json的格式 传给了result<script type = "text/javascript"> $(document).ready(fu...
2019-10-24 21:14:29 308
原创 SpringMVC - 类型转换 - 数据格式化 -数据校验
类型转换ConversionService 是 Spring 类型转换体系的核心接口。• 可以利用 ConversionServiceFactoryBean 在 Spring 的 IOC 容器中定义一个 ConversionService. Spring 将自动识别出IOC 容器中的 ConversionService,并在 Bean 属性配置及Spring MVC 处理方法入参绑定等场合使用...
2019-10-24 20:58:01 315
原创 SpringMVC - 视图解析器 - 国际化 - 转发方式 - 处理静态资源
视图和视图解析器请求处理方法执行完成后,最终返回一个 ModelAndView对象。对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它们装配成一个ModelAndView 对象,它包含了逻辑名和模型对象的视图• Spring MVC 借助视图解析器(ViewResolver)得到最终 的视图对象(View),最终的视图可以是 JS...
2019-10-24 20:25:19 268
原创 SpringMVC - 增加请求方式 - 接收参数 - 模型数据 - session域参数
普通浏览器:只支持get post方式:其他请求方式 如DELETE,PUT 有过滤器实(HiddenHttpMethodFilter)首先要配置过滤器当满足约定时修改请求1.<input type = "hidden" name = "_method" value = "delete|put"/>2.请求方式为post分发器中处理请求可以存在多个一样的requestM...
2019-10-23 22:38:20 333
原创 SpringMVC 环境搭建 - 基本结构
• Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一• Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架• Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。• 支持 REST 风格的 URL 请求 • 采用了松散耦合可插拔组件结构,比其他 MVC 框架更...
2019-10-23 17:44:29 124
原创 APEX 破碎系统
要使用apex破碎系统,要在项目设置的插件选项中启动apex destruction右键需要破碎的网格体选择创建可破碎网格体在编辑界面中,按住L点击鼠标左键并拖动,可以调节灯光方向damage参数其中damage threshold 是设置网格体破碎的伤害阈值damage spread设置伤害的传播(0为最小),如果要实现物体分体破碎,该值通常要小一些enable impact...
2019-10-20 09:54:02 1774 2
原创 MyBatis - 延迟加载 - 逆向工程
延时加载一对一,一对多,多对一,多对多一对一:身份证 - 身份证信息一对多:班级 - 学生如果不采用延时加载(立即加载),查询时会将一和多都查询,即班级信息,班级中所有学生的信息如果想只查询班级信息,而学生信息先不查询 而是在需要的时候再去查询 即为延时加载使用需要在conf.xml配置<!--开启延迟加载--><setting name="lazyLoad...
2019-10-13 21:22:41 106
原创 MyBatis - 日志 - 一二级缓存
日志:a,Log4j(需要log4j.jar):b,开启日志;conf.xml<settings><!--开启日志,并指定使用的具体日志--><setting name="logImpl" value="LOG4J"/></settings>如果不指定,Mybatis就会根据以下顺序 寻找日志SLF4J - Apache Co...
2019-10-13 12:58:25 412
原创 MyBatis - 一对一 - 一对多 关联查询
MySql创建外键:ALTER TABLE 表名 ADD FOREIGN KEY [外键名字] (外键字段) REFERENCES 父表 (主键字段);关联查询:一对一:a,业务拓展类(两个表用外键连接,查询时返回两个表的内容)一个类对应一张表,查询时要接收两个表的数据,即新建一个类继承父类,父类对应一张表,子类补充另一张表的变量查询sql: <!--利用业务拓展类...
2019-10-13 12:31:27 231
原创 MyBatis - 动态SQL
• 动态 SQL是MyBatis强大特性之一,极大的简化我们拼装 SQL的操作。• 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处 理器相似。• MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作。– if – choose (when, otherwise) – trim (where, set) – foreachsql片段:(实现sql复用)...
2019-10-12 22:27:16 163 1
原创 MyBatis - 两种取值符号 - mapper中输入输出参数
输入参数:parameterType#{}与${}的区别1.类型为 简单类型(8个基本类型+String) #{任意标识符} ${value} ,其中的标识符只能是value #{}会自动给String类型加上' '(自动类型转换) ${}原样输出 但是适用于动态排序(动态字段) ...
2019-10-12 22:09:24 594
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人