- 博客(67)
- 资源 (12)
- 收藏
- 关注
原创 beyond compare4 对比class文件
使用beyond compare对比class文件需要导入插件BCFormats.bcpkg,官网上的这个插件版本需要jdk17及以上,本地环境jdk8,难得找到一个支持jdk8的插件,现记录一下;beyond compare4和插件: https://pan.baidu.com/s/1jPC_1HFEfbrs9BSC5i3-rQ?然后选中这个插件,勾选下面这个框然后 下一步-> 完成即可;导入完成后就可以进行jar包或class文件的对比;
2024-12-10 09:49:40
581
1
原创 jenkins的安装和使用
本机使用虚拟机centos 7.9.2009 安装gitlab,本机的虚拟机ip地址是 192.168.60.151, 步骤记录如下。2、我使用jdk1.8,下载 jenkins-2.190.3-1.1.noarch.rpm 版本,下载知乎上传到centos服务器。安装命令:rpm -ivh jenkins-2.190.3-1.1.noarch.rpm。第一次访问需要输入管理员密码:运行cat 红色字体 获得密码并填充。1、下载jenkins,安装jenkins之前需要安装jdk。
2024-11-18 18:28:12
517
原创 centos7 安装gitlab
本机使用虚拟机centos 7.9.2009 安装gitlab,本机的虚拟机ip地址是 192.168.60.151, 步骤记录如下;(5)、sudo gitlab-ctl tail 查看gitlab日志。(4)、sudo gitlab-ctl status 查看gitlab状态。7、启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可。安装过程中下载了多个镜像都安装失败,使用以上镜像成功,原因未知;3.下载gitlab包,并且安装。
2024-11-18 16:52:45
562
原创 springboot自动装配
在使用springboot时只需要添加启动器(starter)就会自动加载对应的bean,这些就是由自动装配实现的。
2024-11-13 16:43:21
402
原创 mongoDB的安装及使用
不要下载最新的版本,新的版本中mongo命令无法使用,也就是安装后不能通过mongo命令登录,我这里使用5.0.30版本;链接:https://pan.baidu.com/s/1nbWoLjALSm_cQEr162J_Fw?mongodb也是用用B+树作为索引结构;启动后通过postman调用;
2024-11-10 00:23:38
523
原创 TIDB的结构
1、PD 保存了 TiKV 集群的整体拓扑结构、每个 TiKV 节点(leader、副本等信息)的状态(通过心跳)、以及数据在各个节点上的分布情况(即 Region 分布,kv节点的redion对应的key范围)等关键元数据,动态调整 Region 分布以实现数据均衡;(1)、table的key对应格式如下:tablePrefix{tableID}_recordPrefixSep{rowID},tableID是唯一的、rowID在一个表内时唯一的;(2)、索引的key分为两种情况:唯一索引和非唯一索引。
2024-11-04 13:07:23
1051
原创 postgres 的使用
- 授权 test 用户 test_chema 下的所有表,增删改查权限。-- 授权 select_group 组给 user_test 用户。-- 授权 t1 表查询权限 给角色 select_group。-- 创建schema test2 授权给 test1 用户。-- 将test_schema的拥有者设置为test用户。-- 创建schema 默认为当前用户。--修改将属主为 test 的表分配给 test2。-- 进入schema。-- 进入test 库。-- 删除属于 test1 的表。
2024-10-14 20:07:19
1287
原创 线程池的使用
System.out.println("时间:" + new Date()+"线程" + Thread.currentThread().getName() + " 执行了task: " + threadId);System.out.println("时间:" + new Date()+"线程" + Thread.currentThread().getName() + " 执行了task: " + threadId);System.out.println("时间:" + new Date()+"开始" );
2024-07-03 13:54:42
973
原创 linux服务器上安装mysql
mysql数据库(5.7)忘记root密码解决方案:在 /etc/my.cnf 中添加 skip-grant-tables,然后重启mysql就可以不要密码 mysql -u root 登录了,登录后修改root密码:update mysql.user set authentication_string=password('123456') where user='root';4、在服务器上登录mysql,切换到mysql数据库,select user,host from user;
2024-02-01 18:24:56
518
原创 whistle 抓包工具使用
1、在whistle中的rules配置转发规则,如下图,当访问百度时会跳转到本地getDemo方法,页面上展示的也是getDemo的返回值,但是对本地方法的抓包目前看是不生效的,即使不勾选 “请勿将代理服务器用于本地地址” 也不行;这种设置也可以解决跨域的问题,如访问的是要跨域的B地址,可以在代码中访问不跨域的A地址,然后再whistle中配置A B 来访问B地址。6、log日志打印,配置https://www.baidu.com log://,浏览器中的日志会打印在whistle中。
2024-02-01 11:30:28
4184
原创 oauth2 的使用
3、优快云通过token再次向微信开放平台发起请求,获取用户信息,微信开放平台返回用户信息(包含 user_id,电话、姓名、地址等),优快云通过这些用户信息是否存在,如果存在则跳转到用户首页,如果不存在则根据这些用户信息创建一个用户;在上面的流程中,第二步生成token、第三部中使用token获得用户信息对应的是授权服务器和资源服务器,也都是在微信中完成的;2、资源服务器,就是保存用户资源的,就是上面例子中的微信,微信中存储着用户的信息;1、资源所有者,在上面的例子中 资源所有者 就是张三这个用户。
2024-01-15 17:27:09
408
原创 netty
4、客户端在发送消息的时候在消息前面增加一个header,herder中记录的是消息的长度,服务端在读取消息的时候首先获取这个长度,然后读取后面这个长度的字节作为一个消息,当读取了一个消息的一半而这个报文已经结束了,则会接着读这个channel中接下来的消息,一致读到这个长度为止,这样就完美的解决了粘包合半包的问题,也是目前主流的解决方案;池化和非池化:池化是将多个ByteBuf放在一个池中,需要用到的时候取出来用,用完之后再放回去,减少了对象创建时的消耗 和 GC的压力,同时也提供了非池化的创建方式;
2023-10-23 15:22:22
130
原创 k8s的安装
(1)、在虚拟机中打开浏览器,打开地址 192.168.60.156 即可打开rancher的控制台,在rancher中创建模板:在菜单 Default-> Manager Enviroments 点击按钮 Add Template,选择 kubernetes,然后点击配置,主要设置四个值(下图2、3);我这里使用vmware创建了三台虚拟机,k8s的虚拟机建议最少2核、4G内存,我的电脑配置不高采用的2核、3G的配置;虚拟机,安装完docker。
2023-09-20 11:12:38
417
原创 通过已有虚拟机快照创建虚拟机
我们在搭建redis、k8s等集群的时候,需要创建多台虚拟机,而且这几台虚拟机的配置基本上是一样的,这种情况下我们可以先创建一台虚拟机,安装需要的应用后导出快照,然后通过快照生成其他的虚拟机。2、通过快照创建虚拟机,在克隆中选择生成的快照即可。
2023-09-19 10:02:29
481
原创 vmware创建的虚拟机无法连接外网
在我本机中使用vmware创建虚拟机后,安装 docker 时使用wget 命令下载docker的安装文件 报错找不到资源,然后通过ping www.baidu.com 发现也ping不通,经过一番折腾可以访问外网了,将步骤记录下来;经过以上几步,重启虚拟机,在虚拟机中可以ping通外网了、wget也能下载外网文件了。3、设置虚拟机的网络,将网关ip设置成和第二步中的一样。1、设置虚拟机的网络适配器,设置位 VMnet8。5、设置本机中的网络,将网络共享给VMnet8。2、设置虚拟机的网关等。
2023-09-18 23:20:28
1624
1
原创 elasticsearch搭建及使用
本机使用vmware虚拟机搭建,刚开始设置虚拟机内存为2G,es启动后启动kibana时es服务挂了,所以将虚拟机内存调整为4G,es比较占内存,推荐4G及以上;链接:https://pan.baidu.com/s/1-LVG55WiPeoJQCnOXH6-ag?链接:https://pan.baidu.com/s/17yQQQdeYzdEAx_0qgdsarg?下载es、kibana、分词器等,需要下载对应版本,我这里有一套7.6.1版本的。kibana启动成功后打开。
2023-09-06 15:54:11
10
原创 kafka的使用
并不是分区越多越好,如果一个broker挂了,需要选举的分区越多、选举的时间越长,不可用风险会增加,另外分区多主备副本间的数据复制也会延迟,根据经验,每个boker上的分区限制在100*b*r内(b指集群内boker的数量,r指副本数量);在kafka的解压目录执行下面命令,往test里发送一百万消息,每条设置1KB,throughput 用来进行限流控制,当设定的值小于 0 时不限流,当设定的值大于 0 时,当发送的吞吐量大于该值时就会被阻塞一段时间。# 部署的及其ip和提供服务的端口号。
2023-08-18 16:33:32
137
原创 java自定义注解
Retention(RetentionPolicy.CLASS),默认的,注解在class字节码文件中存在,运行时无法获得。@Target(ElementType.TYPE_USE) 类型使用.可以用于标注任意类型除了 class。@Target(ElementType.TYPE_PARAMETER) 作用于类型泛型。@Target(ElementType.ANNOTATION_TYPE)作用于注解。@Target(ElementType.TYPE) 作用接口、类、枚举、注解。
2023-08-14 17:23:36
56
原创 jdk1.8日期时间API
System.out.println("相差:" + (now1.getEpochSecond()- now.getEpochSecond())+" 秒");System.out.println("相差:" + (now1.getNano() - now.getNano())+" 纳秒");System.out.println("月:" + now.getMonth().getValue());System.out.println("两天后:" + now.plusDays(2));
2023-08-12 18:15:12
57
原创 Stream的使用
jdk1.8在Collection中新增了一个默认方法Stream,Collection接口的所有实现类都可以继承这个方法,如List、Set、Vector等,对于Map、数组 等集合没有实现Collection接口,也可以通过其他方式转换成Stream;List list = Arrays.asList("张三","张三丰","成龙","周星驰");如:int count = Stream.of("a1", "a2", "a3").count();
2023-08-12 11:45:16
201
原创 jdk1.8 lambda表达式、接口增强、Optional
System.out.println("Lambda show 方法执行了...");System.out.println("show 方法执行了...");1. 在类中新生成一个方法,这个方法的方法体就是Lambda表达式中的代码。System.out.println("使用lambda表达式");2. 还会形成一个匿名内部类,实现接口,重写抽象方法。UserService 是一个接口,只有show()一个方法;2. 如果小括号内只有一个参数,则小括号可以省略。3. 在接口中重写方法会调用新生成的方法。
2023-08-11 22:19:00
79
原创 spring的使用(全局异常处理)
2、使用 @ExceptionHandler 申明要处理异常的方法,要处理的异常可以用@ExceptionHandler 的属性value申明 也可以在方法参数中申明;3、@ExceptionHandler 申明处理异常的方法不能重复异常类型,否则启动报错,申明的异常可以有父子集成的关系,捕获异常时先找子类再找父类。4、捕获异常的方法如果返回String则必须在方法上使用@ResponseBody注解,如果返回值是view则将返回类型改为ModelAndView。return name+"运行是异常";
2023-08-08 20:56:12
80
原创 线程池ThreadPoolExecutor 的使用
由于该队列的近似无界性,当线程池中线程数量达到corePoolSize后,再有新任务进来,会一直存入该队列,而不会去创建新线程直到maxPoolSize,因此使用该工作队列时,参数maxPoolSize其实是不起作用的。也就是说新任务进来时,不会缓存,而是直接被调度执行该任务,如果没有可用线程,则创建新线程,如果线程数量达到maxPoolSize,则执行拒绝策略。:创建线程的工厂类,通常我们会自定义一个threadFactory设置线程的名称,这样我们就可以知道线程是由哪个工厂类创建的,可以快速定位。
2023-08-07 22:24:02
1983
原创 spring注解说明
Bean中使用 autowireCandidate = false,这个bean会放到容器中, 但是不会被 @Autowired 注入到其他的bean中。同一个类有多个bean的时候,@Primary申明一个主类,注入的时候优先注入这个主类,一个类的bean对象最多只能使用一个@Primary。使用 @Autowired 注入对象从byType--byName中间还有以下四步。
2023-07-27 21:41:11
43
原创 线程常用方法
将一个线程添加到另一个线程中,如将t1线程添加到t2线程中,然后启动t1、t2线程(t1在前t2在后),此时t1线程执行完后再执行t2线程,如果t2在前则join失效,两个线程交替执行。sleep() 方法给其他线程运行机会时不考虑线程的优先级,yield() 方法只会给相同优先级或更高优先级的线程运行的机会;线程执行 sleep() 方法后进入阻塞状态,线程执行 yield() 方法转入就绪状态,可能马上又执行;yield方法让出CPU进入就绪状态,可能让出后马上给你就能接着执行。
2023-07-21 17:04:12
50
原创 redis分布式(锁)
解决方法是延长过期时间(也叫锁续命),默认每次延长时间是过期时间的三分之一,这种情况务必确保无论线程是否执行成功都要释放锁(redisson客户端都已经实现);3、倘若加的过期时间是30S,但是当前线程执行需要50S,这种情况下当前线程没执行完成其他的线程就开始修改数据也会有问题;解决这种情况是加锁的代码放在try中,解锁的代码放在flnally中,无论跑抛异常与否解锁的代码都会执行;2、判断这个锁是当前线程id加的,将线程id加1,然后设置过期时间。2、加锁后系统宕机,finally中的代码也不会执行。
2023-07-18 18:45:31
407
原创 spring security的使用
2、方法权限的校验:用户登录成功后将用户及权限信息放入redis中,在SecurityConfig中添加了一个拦截器JwtAuthenticationTokenFilter,这个拦截器的目的是获取token并解析出userId,然后根据userId从redis中获取用户及权限,然后将权限信息封装到Authentication,由security自动完成权限的校验(在项目中引入security的启动器,请求项目中的任何一个方法都会跳转到security的登录页,默认登录名是user、密码是项目启动时生成的。
2023-05-14 07:22:02
51
原创 spring MVC执行过程
1、获取处理请求映射的handlerMapping,我们通常用的注解如:@RequestMapping等对应的handlerAdapter就是RequestMappingHandlerAdapter,其他几个HandlerAdapter只有特别说明才会用到。3、通过handlerMapping得到handlerAdapter,因为controller有不同的返回值,如modelAndView、responseBody、视图等,不同的handlerAdapter用来解析不同的返回值。
2023-05-13 01:30:38
141
linux常用命令大全
2017-08-31
CSS4.0中文参考手册
2017-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人