- 博客(78)
- 收藏
- 关注
原创 java引用python时,in.readLine()为null,proc.waitFor()为1
之前查询了java去引用python代码的方法,因为python中使用了第三方库,选择使用。
2023-04-14 10:25:49
519
原创 RabbitMQ消息中间件
MQ全称(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。思考:原来服务与服务之间如何通信?Openfeign 服务与服务之间直接调用。我们也可以使用MQ完成系统与系统之间得调用。rabbit的工作原理>1.Producer:生产者【生产消息】>2. Consumer:消费者(从队列中获取消息)>2. Connection:连接通道【生产者和消费者和Rabbit服务连接】
2022-09-20 22:38:03
1516
原创 RabbitMQ的安装过程
RabbitMQ也有类似的权限管理;在RabbitMQ中可以虚拟消息服务器Virtual Host,每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)但无法查看节点的相关信息(上图红框标识的部分)。可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
2022-09-19 16:54:16
179
原创 mysql的主从创建及mycat的安装
复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。
2022-09-18 20:07:17
1213
原创 分布式事务
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。1. A服务【订单微服务】的TM[事务发起者]向TC[seata服务端]申请开启一个全局事务,TC就会创建一个全局事务并返回一个唯一的XID。2. A服务开始远程调用B服务【账户微服务】,此时XID会在微服务的调用链上传播。5. 全局事务调用链处理完毕,TM根据有无异常向TC发起全局事务的提交或者回滚。3. B服务的RM向TC注册分支事务,并将其纳入XID对应的全局事务的管辖。TC : 事务管理器【seata的服务端】.
2022-08-31 11:51:13
303
1
原创 微服务保护(Sentinel)
获取请求来源的接口是什么?处理BlockException的接口是什么?默认情况下,发生限流、降级、授权拦截时,都会抛出异常到调用方。如果要自定义异常时的返回结果,需要实现BlockExceptionHandler接口:而BlockException包含很多个子类,分别对应不同的场景:String msg = "未知异常";msg = "请求被限流了!";}String msg = "请求被降级了";}}...
2022-08-25 22:57:05
870
原创 微服务(SpringCloud)之配置管理及链路追踪
zipkin 由Twitter公司开源,开放源代码分布式的跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题,包括:数据的收集、存储、查找和展现《图形化》。cat 由大众点评开源,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。(2)商品微服务和订单微服务这些微服务可能会存在相同的配置,如果这些相同的配置发生改变,需要对每一个微服务都要修改。(1)商品微服务搭建一个集群,如果配置文件的内容发生改变,所带来的问题就是每一台商品微服务都要进行改变。apollo配置中心。
2022-08-22 21:40:05
696
原创 微服务(SpringCloud)使用汇总
微服务架构,简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳30s 90s的方式去监测清单中 的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。
2022-08-20 21:09:56
2646
1
原创 ES整合SpringBoot并实现京东搜索
IK分词器是ES的一个插件,主要用于把一段中文或者英文的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如"我爱技术"会被分为"我","爱","技","术",这显然不符合要求,所以我们需要安装中文分词器IK来解决这个问题;此处图例只是为了举例,更方便理解代码。ik_smart为最少切分,添加了歧义识别功能,推荐;"text":"你爱学习,天天向上","text":"你爱学习,天天向上",....
2022-08-16 15:30:33
2329
1
原创 Elasticsearch(ES)的用法
概念:用户输入想要的关键词,返回含有该关键词的所有信息。场景:(1)互联网搜索:谷歌、百度、各种新闻首页(2)站内搜索(垂直搜索):企业OA查询订单、人员、部门,电商网站内部搜索商品(淘宝、京东)场景。1.2 数据库做搜索弊端1.2.1站内搜索(垂直搜索):数据量小,简单搜索,可以使用数据库。问题出现:(1)存储问题。电商网站商品上亿条时,涉及到单表数据过大必须拆分表,数据库磁盘占用过大必须分库(mycat)。(2) 性能问题:解决上面问题后,查询“笔记本电脑”......
2022-08-15 19:53:17
3415
1
原创 前后端分离之权限管理
使用mybatis-plus生成中间表(rolePermission)相对于之前添加了根据角色查询该角色具有的权限id内容。console.log打印的结果(第二处ids)此处使用TODO可以在后面进行查找此业务是否完成。借助elementui中的对话框和树形结构。借助elementui中的表格部分。serviceImpl层。点击遮罩层的确定处理。controller层。...
2022-08-11 21:53:26
3165
原创 关于前后端分离
origins = {"192.168.0.111:8080","192.168.0.120:8081"},allowedHeaders="运行哪些请求头跨域",methods={"GET","POST"})但是此处即使使用spring容器来管理,但是使用注解注入时,结果为null 重新new一个结果也是空。每次请求都得要人为添加参数token. 我们可以使用axios得请求拦截器。出现两个请求: 有一个请求的方式为: OPTIONS 和真实的请求方式。methods: 允许哪些请求方式跨域。...
2022-08-09 21:52:38
2007
原创 Vue的使用方法
整个项目中node_modules占用项目的空间99%。因为前端项目也需要依赖一些插件:比如:axios elementui 那么我们可以使用npm下载并安装到当前项目。在子组件中使用(在components下创建Hello.vue子组件,与上边的组件路径一致)根据意思来理解就是说,template模板编译错误,组件模板需要一个根元素而不仅仅是个文本。此处使用别名hello 在子组件中props中定义该名称。npm install -- 安装项目需要的模块。--子组件调用-->//子组件的prop方法。.
2022-08-07 19:59:50
4938
1
原创 ssm及springboot整合shiro
/该方法用于完成认证的功能//1.根据token获取账号//2.根据账号查询用户信息if(user!=null){//从数据库中获取的密码}}}//授权部分//什么时候执行该方法:当你进行权限校验时会执行该方法@Override//根据账号查询该用户具有哪些权限if(list!}}//认证部分@Override//1.根据token获得账号//2.根据账号查看用户信息if(user!=null){//从数据获取的密码}}}...
2022-08-06 21:34:09
955
原创 shiro安全框架
基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。...
2022-08-03 22:04:20
3747
原创 redis的使用场景
查看的缓存: 前部分代码相同@before通知,后部分代码也相同后置通知。我们可以AOP完成缓存代码和业务代码分离。我们看到同一个库存被使用了n次。以及数据库中库存为负数。数据存储在内存中,数据查询速度快。--使用注解即可完成。注意此处的测压速度不易太快(推荐使用5秒100个线程)查询频率比较高,修改频率比较低。发现又出现: 重复数字以及库存为负数。如果搭建了项目集群,那么该锁无效。对应的service层修改为。(1)使用idea开集群项目。service对应代码修改。(1)把缓存的配置类加入。...
2022-08-03 20:13:52
7330
3
原创 Java及SpringBoot对redis的使用
springboot对redis的操作封装了两个StringRedisTemplate和RedisTemplate类,StringRedisTemplate是RedisTemplate的子类,StringRedisTemplate它只能存储字符串类型,无法存储对象类型。还有就是放行对应的端口:6001、6002、6003、6004、6005、6006,因为之前放行的实在10000端口,注意以上两点,才可以使用idea创建成功。该类把对每种数据类型的操作,单独封了相应的内部类。(1) 引入相关的依赖。...
2022-08-02 23:08:07
1036
原创 redis的集群模式
redis集群中内置了16384个哈希槽,当需要在Redis集群中放置一个key-value时,redis先对key使用crc16算法算出一个整数结果,然后把结果对16384求余数,这样每个key都会对应一个编号在0-16383之间的哈希槽,redis会根据节点数量大致均等的将哈希槽映射到不同的节点。一个主节点,多个从节点,那么主节点可以负责读操作,写操作。准备一主二从-----3台----开三个虚拟机--为了节省虚拟机,在一台主机开启三个redis服务。......
2022-08-01 22:02:08
1270
1
原创 redis的常用命令及使用特点
使用频率最高是Strings字符串类型,Lists列表类型,Sets集合类型,Hashes哈希类型,SortedSets有序集合。它的value值为String类型,在实际开发中,它可以存储任意的数据类型。(2)AOF日志追加记录服务器接受的每个写入操作,当服务器启动时再次加载该日志,会把日志中的命令重新执行一遍。它的value类型为list列表类型,它的value可以是多个值,而且这些者可以重复,有序。它的value类型是一个set集合类型,这个集合类型元素无序,且不能重复。...
2022-07-31 16:12:12
476
1
原创 redis的用法
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过RedisSentinel和RedisCluster自动分区提供了高可用性。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。NoSQL--非关系型数据库---缓存数据。,但是又第三方版本。...
2022-07-30 14:22:57
205
1
原创 Linux的使用及软件安装
1)重命名|移动mvmv源文件名目标文件名例mva.txtb.txt把a.txt重名为b.txtmv源文件名目标目录例mva.txt/usr/local把a.txt移动到/usr/local目录下(2)复制cpcp/usr/local/b.txt/hh把/usr/local/b.txt文件复制到/hh目录下cp-rhh/usr/local/把目录hh复制到/usr/local下(3)搜索find。.........
2022-07-28 21:13:33
437
1
原创 Linux的使用
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。安装虚拟机VMwareWorkstationPro创建多个虚拟电脑---每个电脑可以安装自己相应的系统镜像。进入命令模式[不能输入内容]---->i----->编辑模式【可以输入内容】---->Esc推到命令模式---wq[保存退出]...
2022-07-27 10:21:45
288
原创 初识SpringBoot--2
上面默认这个数据源使用的连接池Hikari。如果不想使用默认的连接池,我们可以引入第三方的连接池。为什么总的自动装配类由127个。因为这些自动装配类都在某个文件中写死了。(2)配置数据源信息---application.properties。无需手动加载某些配置,而由Springboot自动加载进来。@ApiModelProperty---->实体类属性的说明。它是一个接口文档----用来前后端分离的一款文档。@Api接口类的注解---接口类上tag属性。@ApiModel----实体类接口注解。.....
2022-07-23 14:24:42
415
1
原创 初识SpringBoot
SpringBoot其设计目的是用来简化新Spring应用的初始搭建以及开发过程,即Springboot可以帮助简化spring的搭建,并且快速创建一个spring的应用程序。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。思考我们在实际开发中,环境有哪些?开发环境---->测试环境---->线上环境由于环境的不同,那么就会有不同的配置内容。难道我们不断的修改配置内容。----不会,只会在里面配置相对应的接口号。......
2022-07-21 20:36:52
514
1
原创 JDK1.8新特性之stream流及日期
目录1.什么是Stream2.为什么使用Stream3.Stream流的操作原理4.如何获取Stream流对象5.Stream流中常见的api6.新增了日期时间类 Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找、过滤、筛选等操作。 当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。 例如:一个ArrayList集合中存储数据;需求:1.拿到所有姓张的 2.拿到名字长度为3个字的 3.打印这
2022-07-20 22:11:42
2811
1
原创 JDK1.8新特性
方法引用是Lambda表达式的一种简写形式。如果Lambda表达式方法体只是调用一个特定的已经存在的方法,则可以使用方法引用。常见形式(1)对象方法名(2)类名静态方法(3)类名普通方法(4)类名new调用的构造器new调用数组的构造器。...
2022-07-19 22:37:49
250
原创 java高级之线程
上面讲解的使用Executors创建线程池的方式,都是使用底层ThreadPoolExecutor,而阿里开发手册,建议使用最原始的方式。线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。*intcorePoolSize,核心线程数*intmaximumPoolSize,最大线程数*longkeepAliveTime,空闲时间。......
2022-07-18 22:10:11
797
1
原创 java高级之泛型和注解
目录1.什么是泛型2.为何使用泛型2.1.如何定义泛型2.2.通配符2.3.受限泛型2.4.泛型接口2.5.泛型方法3.java高级--注解3.1.预定义注解3.2.自定义注解(初级)3.3.元注解3.4.自定义注解(高级) 其实我们在使用集合时就用过泛型List 创建一个List对象List list=new ArrayList();它就是泛型。 所谓的泛型就是在类定义时,不为类中属性和方法指定数据类型,而是在类对象创建时为其指定相应的数据类型。 ...
2022-07-13 22:09:10
485
原创 MySQL事务管理
目录1.为何使用事务管理2.数据库事务的原理3.什么是事务3.1 事务的特性ACID3.2 事务的并发问题3.3 隔离级别4.Spring事务管理 可以保证数据的完整性。事务(Transaction),就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内 的所有SQL都将被取消执行。 例子: 转账为例。 金庸向张无忌转账1000元。----在数据库中修改两个账号的余额。发生意外情况,则出现金庸减钱成功,而张无忌加钱失败。 如何解决?使用事务进
2022-07-07 20:53:20
378
原创 AOP动态代理
目录1.IOC、AOP概念2.为何使用动态代理2.1 JDK原生动态代理 2.1.1 MathService接口类2.1.2 MathServiceImpl实现接口类2.1.3 ProxyFactory动态代理工厂2.1.4 测试类2.2 cglib动态代理 2.2.1 MathServiceImpl类2.2.2 ProxyFactory动态代理工厂2.2.3 测试类3.AOP动态代理3.1 添加对应依赖3.2 配置spring.xml文件3.3 MathService接口类 3.4 MathService
2022-07-06 21:02:29
4774
1
原创 SSM整合进阶版
目录1.整体结构及呈现样式2.添加依赖3.自动生成代码配置(generator)4.java部分代码展示4.1 controller层下对应代码4.1.1 StudentController4.1.2 UserController4.2 dao包4.2.1 StudentMapper4.2.2 UserMapper4.3 entity包4.3.1 Student4.3.2 User4.4 interceptor4.4.1 LoginInterceptor4.5 service4.5.1 UserServic
2022-06-17 20:48:40
832
1
原创 Git添加远程库
目录1.创建远程仓库2.连接远程仓库3.Git设置使用rsa上传文件到gitee4.idea关联git(1)根据GitHub的提示,在本地的仓库下运行命令添加后,远程库的名字就是,这是Git默认的叫法,也可以改成别的,但是这个名字一看就知道是远程库。(2)下一步,就可以把本地库的所有内容推送到远程库上把本地库的内容推送到远程,用命令,实际上是把当前分支推送到远程。由于远程库是空的,我们第一次推送分支时,加上了参数,Git不但会把本地的分支内容推送的远程新的分支,还会把本地的分支和远程的分支关联起来,在以后的
2022-06-17 09:18:11
22954
1
原创 Git分布式版本
目录1.如何下载git2.如何使用Git2.1 安装完成后设置2.2 创建版本库2.3 把一个文件放到Git仓库2.4 注意2.5 分支3.git的工作流程 在命令行输入第一步,选择一个合适的地方,创建一个空目录,如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。第二步,通过命令把这个目录变成Git可以管理的仓库。瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个的目录,这个目
2022-06-16 22:39:52
213
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人