- 博客(75)
- 收藏
- 关注
原创 【oracle安装】
1. 安装oracle 11g 出现的问题问题描述安装oracle报:oracle net configuration assistant失败。2. 解决办法这是之前卸载oracle不干净,oracle的环境变量没有删除,本次安装时和环境变量发生了冲突。所以需要先将之前的环境变量删除。然后再此进行安装。2. 彻底卸载oracle关闭oracle的服务打开cmd,输入service.msc,将所有oracle…开头的服务都停掉删除oracle注册表打开cmd,输入regedit,删
2022-02-09 15:54:25 2284
原创 Java SPI + Dubbo SPI
1. 什么是SPISPI全称Service Provider Interface,服务提供接口,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。2. API和SPIAPI (Application Programming Interface)叫应用程序接口,是有实现方制定接口并完成对接口的实现,调用方仅仅依赖接口调用,且无权选择不同实现。 从使用人员上来说,API 直接被应用开发人员使用。SPI (Servic
2021-12-01 17:11:46 470
原创 mysql(4)主从复制、读写分离
1. 主从复制1.1 为啥要主从复制解决读写分离。由于在写库时的行锁表锁的行为,可能导致在读取的时候,正好有线程在写库,可能正在进行表锁或者行锁,读线程也需要同步等待。所有进行主从复制,主库负责写数据,从库负责读数据,读写分离。可以做数据的热备。当主库挂了,可以使用从库顶上架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。便于分库分表1.2 主从复制的配置操作1.2.1 机器和服务器的准备两台机器,一个作为
2021-11-30 09:35:41 1041
原创 网络TCP UDP
目录网络编程三要素IP地址端口号协议 tcp udp网络模型InetAddress IP地址对应的java对象Socket套接字基于TCP协议的Socket编程发送 字符串上传图片传输对象网络编程三要素 IP地址 1. ip地址的表示方法 ip地址32 位, 由4个 8位的二进制数组成 ip地址点分十进制表示 IP地址 = 网路ID+主机ID2. ip地址分类3....
2021-10-12 17:27:40 113
原创 mysql(1)-基本结构,索引,日志
1. mysql 基本架构先来个图看一下。大概mysql的工作架构图如下,客户端发送请求到mysql服务端,服务端进行一系列的处理。接下来聊一下server端的各个部分。连接器a. 作用:管理连接,进行权限验证,用户名密码认证,查询权限等b. 利用show processlist 命令查看当前连接,如果长时间无动静会自动断开,可以通过wait_timeout控制,默认是8个小时c. 连接分两种长连接:推荐使用长连接,但是也要周期性的断开。短连接分析器a. 作用: 词法分析,语法
2021-10-12 00:35:29 178
原创 dubbo(4)-负载均衡
dubbo的负载均衡,在集群负载均衡时,Dubbo 提供了多种均衡策略,默认为 random 随机调用。负载均衡介绍:负载均衡(Load Balance),是指将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。最常见的负载均衡这一种古老的方式,通过入口提供不同线路、不同服务器链接的方式,来实现负载均衡,一般在提供下载业务的网站比较常见。负载均衡分类:集中式负载均衡即在客户端和服务端之间使用独立的负载均衡设施(可以是硬件,如 F5, 也可以是软件,如 ng
2021-10-03 19:43:47 248
原创 dubbo(3)-dubbo-admin的使用
dubbo-admin的使用下载地址:https://github.com/apache/dubbo-admin由于现在dubbo-admin没有提供一个war 或者jar包,所以我们需要下载项目,然后编译一下一个小问题:我在打包的时候用idea去打包,发现打包不成功。每次package的过程中总会运行一些test测试代码(图二),导致打包失败。解决办法是如图三,将dubbo-admin-server下的test包Excluded.然后重新打包。在dubbo-admin-distri
2021-10-03 15:50:31 695
原创 dubbo(2)-dubbo的搭建
dubbo 官方文档地址:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/1. dubbo介绍dubbo是基于RPC协议的。RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。1.1 dubbo架构图说到dubbo就不得不看一下经典的dubbo架构图
2021-10-02 22:15:05 204
原创 dubbo(1)-架构的演变
架构演变:1. 单体应用All in one ,一个系统包含所有的功能。项目比较大。eg:一个商城系统,系统中包含了很多功能,订单功能,用户功能,物流功能,购物车功能。刚开始,打成一个war包,部署服务。网站访问量小,流量少,完全可以支撑。随着流量越来越多,已经不足以支撑流量,我们需要进行优化和扩展单体应用。怎么扩展呢。分为水平扩展和垂直扩展:水平扩展:就是多搞几台机器,多部署几台机器,起到分流的作用。垂直扩展:对于硬件来说就是换更厉害的机器。换牛逼的cup,硬盘等,但是这些终究
2021-10-02 14:56:27 163
原创 多线程(4)-相关容器
1. 容器的实现物理结构上,就是 数组+链表利用数组+链表可以实现各种各样的容器2. 容器的分类容器分两大类,Collection和 Map,Collection有分为 List Set Queue3. 容器的演变3.1 MapHashtable-----> HashMap-----> synchronizedHashMap----->ConcurrentHashMap(写入效率慢,读快)Hashtable 实现Map接口,是线程安全的,Hashtable 的方法都是s
2021-08-30 22:38:58 124
原创 多线程(3)-源码分析(ReentrantLock-AQS,ThreaLocal)、强软弱虚引用
1. synchronizedpublic void hello(){ synchronized (this){ System.out.println("a"); }}经过编译的字节码 0 aload_0 1 dup 2 astore_1 3 monitorenter 4 getstatic #2 <java/lang/System.out : Ljava/io/PrintStream;> 7 ldc #3 <a> 9 in
2021-08-24 23:20:32 111
原创 多线程(2)-基于CAS的相关工具类
1. CAS ( 无锁优化,自旋锁,乐观锁)全名(Compare And Set)基本原理类似于这样的工作原理:基本就是下面的代码逻辑cas(Value , Expected ,NewValue)if(Value=Expected),判断当前值和期望的当前值是否一致。Value=NewValue ,如果一致,进行+1操作,并赋值。当前值是0,期望的当前值也是0,给+1的新值赋值给变量else try again or fail,如果不一致,try again(自旋),等待下一次获取cup资源进
2021-08-20 11:35:19 382
原创 多线程1-基础、synchronized、volatile
1 . 线程一个进程里面的不同的执行路径2 . 线程实现方式继承Thread实现Runnable。可以使用lambda表达式。线程池3. 线程的方法sleepyieldjoin把一个线程加入到另一个线程中执行。状态newstart() ,线程调度器(操作系统)调起。 Runnable。ready(就绪) ,Running(),TimeWaiting , Waiting , BlockedTeminatedthread.interrupt() thread.st
2021-08-20 11:34:43 103
原创 jvm(3)-运行时数据区、指令集
1. Runtime Data Area and Instruction Set(运行时数据区和指令集)1.1 jvm运行时数据区分为以下几部分:jvm stacks ,就是我们常说的栈,栈里面包含frame(窗口,也叫栈帧)Program Counter,简称PCmethod area 方法区,包括常量池。native method stacks,本地方法栈。Direct, 直接内存heap,堆详细了解一下这几个区:1.2 Program Counter 简称PCPC计数器
2021-07-30 14:56:20 201
原创 JVM(2)-指令重排、乱序、对象的内存分布
DCL单例乱序问题DCL单例,双重检查单例。T t = new T();指令重排问题。先给成员变量赋值初始化,还是先将new内存地址指向变量t。如果是先初始化,在指向变量t。 这是正确的。如果是先指向t,在初始化。相当于是半初始化状态。成员变量还没赋值成功。利用volatile可以解决这个问题java内存模型硬件层的并发优化基础知识硬件层数据一致性mesi catch一致性协议(inter)cpu每个cache line标记四种状态。缓存锁实现之一。现代一致性的的实现 总线锁
2021-07-29 22:53:44 721 1
原创 JVM(1)-类加载过程、双亲委派、Class Format
java 从编译到执行解释器执行即时编译执行混合执行jvm Java Virtual Machinejvm跨语言的平台。java scala kolin groovy 等语言。任何语言,只要能变成class,就可以在jvm上执行。不论是谁,只要能变成class文件,就是jvm的菜java是跨平台的语言jvm是一中规范,每种环境上都有自己的实现linux unix windows每种都有自己的实现jvm 和java无关,jvm只跟class文件有关jvm规范java .
2021-07-29 15:12:46 243
原创 ActiveMQ(3)
1. ActiveMQ 协议官网地址:http://activemq.apache.org/configuring-version-5-transports 从5.13.0 开始,ActiveMQ 支持通过 TCP、SSL、NIO 和 NIO SSL 自动检测有线协议。支持 OpenWire、STOMP、AMQP 和 MQTT。有关详细信息,请参阅AUTO传输参考。activemq连接支持多种协议,常用的是openwire,默认是tcp协议,使用的是BIO。可以通过配置,修改为NIO。NIO也是
2021-06-28 20:46:35 516 2
原创 ActiveMQ(1)
目录1. 简介2. 消息中间件的特点3. 消息类型3.1 p2p 点对点3.2 发布订阅4. 角色5. 下载安装ActiveMQ6. 小程序测试activeMQ点对点模式6.1 依赖包6.2 消息提供者6.3 消息提供者6.4 启动进行测试7. 小程序测试activeMQ订阅发布模式7.1 依赖包7.2 订阅者7.3 发布者7.4 测试1. 简介activeMq是一种消息中间件,常用的消息中间件还有RabbitMQ、Roc...
2021-06-16 23:07:25 187
原创 zookeeper(2)-java操作
zookeeper的API目录1. 创建zookeeper2. 创建节点、获取节点的值2.1 分类3. watcher3.1 设置watcher3.2 重新设置watcher3.3持久化watcher1. 创建zookeeper ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", 3000, new Watcher() { @Override public void pr.
2021-06-06 22:15:51 164 2
原创 redis(8)spring整合redis
目录1. jar包2. xml配置2.1jedisConnectionFactory 工厂2.2 redisTemplate2.2.1 序列化2.2.2 StringRedisTemplate3. 使用redis3.1 hash映射器4. 测试类spring整合spring-data-redis1. jar包 <!--spring redis相关--> <dependency> .
2021-05-31 21:14:18 337 3
原创 redis(5)key 超时时间 回收策略
redis 作为缓存和数据库的区别redis缓存 数据不重要,不是全量数据。redis缓存要随业务变化而变化,redis只保留热数据。1. key的有效期。set k1 helloexpire k1 10ttl k1 查看key的时间key的有效期,不会随着访问而延长 key的有效期,在修改的时候,会直接剔除过期时间2. 内存是有限的,随着数据的访问,应该淘汰掉冷数据。lru 碰了多少次lfu 多久没碰...
2021-05-31 21:12:26 1054
原创 redis(4) 击穿 穿透 雪崩
1. redis 击穿当redis作为缓存使用时,当key由于 失效时间过期 或者 LRU LFU算法 使得redis总的key失效后,突然有了高并发,此时,redis中没有这个key,到时并发去数据库获取数据。相当于击穿了redis,到数据库上了解决的办法。方法1: setnx 设置锁假设有3个线程同时到达。1. 先去get key 获取目标key 。此时获取的为nli2. 设置锁 ,setnx lockkey lockvalue。 setnx 调用,当没有lockkey...
2021-05-31 21:11:50 283 1
原创 Redis(2) redis数据类型
1. Redis介绍1. 1 简介Redis是用C语言开发的一个开源的高性能基于内存运行的键值对NoSQL数据库redis的官网地址,非常好记,是redis.io1.2 特征(1) 支持数据的持久化,可以将数据保存在磁盘中,重启之后可以再次加载到内存中使用(2) 支持多种数据类型,除了KV类型的数据,还支持list、set、hash等数据结构(3) 支持master-slave模式的数据备份1.3 redis基础常识Redis采用单线程机制进行工作 Redis默认拥有16个
2021-05-31 21:10:59 136
原创 springboot(3)数据源
1. springboot 数据源配置1.1需要的jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency>
2021-05-22 20:30:58 1162 2
原创 spring boot(2)- web
1. springboot整合Servlet,Filter,Listener步骤:1. 创建servlet,filter,listener。servlet继承HttpServletfilter 实现Filter接口listener 实现HttpSessionListener 接口2. 将这些类注入到spring中1.1 创建Servlet类servlet 需要 servletname 和 url方式1:用注解@WebServlet的方式+@ServletCompo..
2021-05-20 22:15:20 146
原创 spring boot(1)-开始
回顾springspring boot架构演变之路单体-----》rpc----->soAspring boot 项目搭建(1)通过官网,手脚架下载,start.spring.io. 生成一个压缩包,下载,导入IDE中 (2) 使用idea或者其他的工具生成(3) 动态生成 banner。banner.txt文件spring boot的配置文件1. 配置文件支持两种 yaml(yml) properties2. 配置文件的位置优先级...
2021-05-12 14:15:57 463 3
原创 mybatis(9)通用mapper(tk.mybatis.mapper)
官方地址:https://mapperhelper.github.io/docs/1 集成通用mapper1 maven依赖jar <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>4.1.5</version&g.
2021-04-30 16:42:03 1780 1
原创 mybatis(8)-mybatis-plus2代码生成器
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
2021-04-28 13:31:42 56
原创 mybaits(7)之mybatis-plus1
学习mybaits-plus,首先要明确 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。也就是说已经mybatis的配置都没有发生改变,都可以使用,这是在这个基础上做了增强。1.搭建mybatis-plus环境1.1原来mybatis环境<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spring
2021-04-27 22:03:27 494
原创 mybatis(6)spring + mybatis整合
一直说mybatis和spring整合,那么到底是整合了什么呢。既然是整合,肯定要对比整合之前,和整合之后1. mybatis单独使用需要的组件mybatis-config.xml,mybatis的核心配置,可以配置下面的属性,能够扫描sql映射文件 1. properties 属性 2. settings 设置 3. typeAliases 类型别名 4. typeHandlers 类型处理器 5. ...
2021-04-26 21:25:21 111
原创 mybatis(5)-逆向工程
1. jar包的支持逆向工程核心包,除此之外还需要一些其他的包,如果连接mysql,还需要mysql的包,mysql-connector-java <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> &l
2021-04-22 22:28:08 40
原创 Mybatis(4)-缓存
目录缓存一级缓存二级缓存属性三个条件:缓存开启和清空缓存的机制缓存MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。 为了使它更加强大而且易于配置,我们对 MyBatis 3 中的缓存实现进行了许多改进。默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。也叫做一级缓存要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行<!--二级缓存开启--><cache/>一级.
2021-04-22 17:03:01 136
原创 mybatis(3)-动态sql
目录动态sql1. if2. trim、where、set1. where2. trim3. set4. foreach动态sql动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,eg:拼接时要确保不能忘记添加必要的空格注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。if choose (when, otherwise) t..
2021-04-21 20:40:22 216
原创 mybatis(2)
目录映射文件(mapper)1. 主要的元素2. select3. insert update delete4. 获取参数5. 结果映射映射文件(mapper)1. 主要的元素cache– 该命名空间的缓存配置。 cache-ref– 引用其它命名空间的缓存配置。 resultMap– 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。 sql– 可被其它语句引用的可重用语句块。 insert– 映射插入语句。 update– 映射更新语...
2021-04-21 12:49:17 198
原创 mybatis(1)
1. 第一个Mybatis项目导入依赖包(mabatis包+ mysql包) <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4</version> </dependency>
2021-04-15 22:42:17 48
原创 spring mvc(6)总结
1. spring mvc 9大组件spring mvc 9大组件Spring mvc核心类-----DispatcherServlet.class包含9大组件@Nullableprivate MultipartResolver multipartResolver;@Nullableprivate LocaleResolver localeResolver;@Nullableprivate ThemeResolver themeResolver;@Nullablepri..
2021-04-14 22:09:13 77 1
原创 spring mvc(5) 异常处理机制
1. ExceptionHandlerExceptionResolver当前类中的全局2. ResponseStatusExceptionResolver3. DefaultHandlerExcepionResolver总结spring mvc 9大组件
2021-04-08 20:33:19 107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人