- 博客(55)
- 收藏
- 关注
原创 启动报错:An incompatible version [1.2.24] of the Apache Tomcat Native library is installed
复制openssl.exe到JDK的bin目录下,根据电脑位数复制tcnative-1.dll和tcnative-1-src.pdb至jdk的bin目录下。当前目录下为32位所需,64位需要进入x64目录下。虽然不影响正常启动,但是,看着红色的ERROR就必须想办法解决。下载好后用解压工具打开,进入bin目录。
2025-01-24 10:05:05
465
原创 解决java.sql.SQLException: Unable to load authentication plugin ‘caching_sha2_password‘.
在更新产品的yangtze-shop商城系统部分的版本时,报错。
2024-12-02 13:38:42
1465
原创 程序员、架构师、技术经理、技术总监和CTO分别都是干什么的?
CTO做的事情,是商业、产品、技术、管理、团队相平衡的综合统管,公司的技术研发方向与重点商业化的结果负责,激励员工,营造工程师文化。技术总监主要是协调团队内部各个资源,引入工具,和方法提升工作效率。技术经理角色相对具体,绩效考核,产品落地,执行优胜劣汰的规则。架构师主要是为公司产品的业务问题提供高质量技术解决方案并能有效落地。正像《少有人走的路》,每个人的成长路径都不同,但无一不是兴趣与使命驱动——无论你是程序员,技术经理,还是在CTO的角色。
2024-10-19 11:18:11
910
1
原创 debian系统安装mysql8
在文件中找到 `[mysqld]` 部分,并添加或修改 `bind-address` 为 `0.0.0.0`,这将允许MySQL监听所有的网络接口。接下来,我们需要从MySQL官方网站下载APT配置工具,并安装它以便能够通过APT仓库安装MySQL。首先,需要确保我们的软件包列表是最新的。这可以通过运行 `apt update` 命令来完成。再次更新软件包列表,以便APT可以识别新添加的MySQL仓库。保存并关闭文件后,重新启动MySQL服务以应用更改。现在我们可以使用APT安装MySQL服务器。
2024-09-02 09:13:17
1822
原创 使用kettle抽取数据
ETL简介ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),ETL流程是数据仓库建设的核心环节,它涉及从各种数据源中抽取数据,经过清洗、转换和整合,最终加载到数据仓库中以供分析和决策。对于开发或者运维人员来说,经常会遇到各种数据的处理、转换、迁移。Kettle1、Kettle简介Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,数据抽取高效稳定 (数据迁移工具)。
2024-07-25 08:40:44
1241
原创 解决:error An unexpected error occurred: “https://registry.npm.taobao.org/xxx.tgz: certificate
最近Vue开发过程中,npm run dev遇到报错。查看npm仓库地址。切换淘宝镜像地址或官源地址。再npm run dev依旧报错。ssl过期。
2024-05-08 16:27:20
1113
原创 Python安装和开发环境搭建
Python的下载访问Python语言官网(Welcome to Python.org)进行下载相关安装包,根据需要和系统环境、下载相应的windows/linux/macOs安装包。
2024-04-22 18:14:53
767
原创 解决java: 无法访问org.bouncycastle.crypto.params.ECPrivateKeyParameters 找不到org.bouncycastle.crypto.param
如果使用了ProGuard或其他混淆工具,可能需要相应地配置以保留Bouncy Castle的类。:检查构建脚本或IDE设置,确保包含了Bouncy Castle jar包的路径。:检查使用的Bouncy Castle版本,确保它与项目兼容,并且包含所需的类。:可能使用的Bouncy Castle jar包版本不兼容,或者缺少某些类。:在某些情况下,Java的安全管理器可能阻止加载某些类。:即使已经添加了jar包,类路径也可能没有正确设置。:更新混淆配置,以确保所需的类不被混淆或重命名。
2024-03-24 11:46:20
3181
原创 解决Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tre
请注意,如果在经过上述尝试后,即使重新运行构建后仍然出现错误,可能是由于 IntelliJ 有一些缓存仍在获取以前的 lombok 版本。问题原因是Lombok ,与 JDK 21 兼容的最低 Lombok 版本是 1.18.30,最小的 Spring Boot 版本是 3.1.4。直接先升级lombok至1.18.30或以上版本,若仍不行,再尝试升级Spring Boot 至3.1.4或以上版本。在更新自建项目基础过程中,compile、install报错。这里先升级到1.18.30版本、问题解决。
2024-03-23 21:05:53
61890
23
原创 Go语言基础
运算符是一种特殊的符号,可以表示数据的运算,赋值,比较等1)算术运算符2)赋值运算符3)比较运算符4)逻辑运算符5)位运算符6)其他运算符比较两个数的大小。a:=101b:=66if(a>b){fmt.Printf("a大一些")}else{fmt.Printf("b大一些")注意:go语言不支持三元运算符在Go语言中,切片(Slice)是数组的一个引用。它会生成一个指向数组的指针,并通过切片长度关联到底层数组部分或者全部元素。
2024-03-10 19:14:17
674
1
原创 解决java: 无法访问javax.servlet.ServletException
在对历往项目工具类总结和归纳更新过程中,common模块在compile编译过程中遇到了“Error java: 无法访问javax.servlet.ServletException 找不到javax.servlet.ServletException的类文件”这个报错问题。IDE使用的是idea2021。
2024-03-07 16:12:26
1929
原创 Java之BigDecimal详解
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。
2023-12-14 12:25:57
978
原创 Linux安装MySQL8.0
自定义密码比较简单,不符合密码策略。yum仓库文件:wget http://repo.mysql.com/mysql80-community-release-el7-10.noarch.rpm。查看安装的mysql信息:rpm -qa|grep -i mysql。删除mysql相关服务:rpm -e --nodeps。
2023-09-13 21:24:24
750
原创 Python常用命令
type() 函数:查询对象的类型input() 函数在:函数接受一个标准输入数据,返回为 string 类型range() 函数:用于构造一个从[start, stop) (不包含stop)之间的连续的不可变的整数序列对象len() 函数: 用于获取容器对象中的元素个数reversed() 函数:反转序列对象,你可以将字符串进行反转,将列表进行反转,将元组反转random() 函数:返回随机生成的一个实数,它在[0,1)范围内。
2023-08-01 17:04:17
955
原创 算法之基数排序
基数排序:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位 开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序 列。
2023-07-27 19:47:31
117
原创 算法之桶排序算法
桶排序的基本思想是: 把数组 arr 划分为 n 个大小相同子区间(桶),每个子区间各自排序,最 后合并。计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。2.使用 动态数组 ArrayList 作为桶,桶里放的元素也用 ArrayList 存储。桶的数量为(maxmin)/arr.length+1。3.遍历数组 arr,计算每个元素 arr[i] 放的桶。1.找出待排序数组中的最大值 max、最小值 min。
2023-07-27 19:24:08
594
原创 算法之归并排序算法
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列 分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
2023-07-27 18:57:04
289
原创 算法之二分查找
二分查找 又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置 的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小, 则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
2023-07-27 16:57:21
224
原创 Spring Bean
6. 如果这个 Bean 关联了 BeanPostProcessor 接口,将会调用 postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor 经常被用 作是 Bean 内容的更改,并且由于这个是在 Bean 初始化结束时调用那个的方法,也可以被应 用于内存或缓存技术。10. 最后,如果这个 Bean 的 Spring 配置中配置了 destroy-method 属性,会自动调用其配置的 销毁方法。
2023-07-13 12:17:59
570
原创 VMware将虚拟机网络设置为NAT模式
编辑路径/etc/sysconfig下的文件network vi /etc/sysconfig/network ,加入一条语句:NETWORKING=yes(网络是否工作:是)配置公共DNS服务,在vi /etc/resolv.conf文件里增加:nameserver 8.8.8.8、nameserver 8.8.4.4。BOOTPROTO=none #ip获取方式,DHCP为自动获取,静态IP为none和static。关闭防火墙服务:systemctl stop firewalld.service。
2023-07-12 19:43:33
3320
原创 Java之枚举
枚举的本质枚举的常见用途枚举创建单例枚举抽象方法Java中的枚举,大家在项目中经常使用吧,主要用来定义一些固定值,在一个有限的集合内,比如在表示一周的某一天,一年中的四季等。那你了解枚举的本质吗,或者说底层是什么样的?了解枚举的一些神仙用法吗?枚举主要用来定义一个有限集合内的固定值。枚举编译后实际上继承了java.lang.Enum这个类,后面详细讲解,我们看下这个类的关键方法:返回指定名字、给定类的枚举常量返回枚举常量名返回枚举常量在enum中的位置,从0开始。
2023-06-27 14:15:19
251
原创 Windows安装JDK并实现多版本切换
变量值增加:%JAVA_HOME%\bin;,放到x:\xx\Common Files\Oracle\Java\javapath前面。通过 JAVA_HOME的值%JAVA8_HOME%、切换使用不同版本的jdk。变量名:CLASSPATH。
2023-05-26 10:46:09
214
原创 Java泊松分布
Poisson泊松分布,是一种统计与概率学里常见到的离散概率分布。泊松分布的概率函数为:泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生次数。泊松分布适合于描述单位时间内随机事件发生的次数。泊松分布的期望和方差均为λ。
2023-05-06 17:25:18
729
原创 ConcurrentHashMap底层实现原理
当数组长度不够时,ConcurrentHashMap需要对数组进行扩容,在扩容的实现上,ConcurrentHashMap引入了多线程并发扩容的机制,简单来说就是多个线程对原始数组进行分片后,每个线程负责一个分片的数据迁移,从而提升了扩容过程中数据迁移的效率。ConcurrentHashMap中有一个size()方法来获取总的元素个数,而在多线程并发场景中,在保证原子性的前提下来实现元素个数的累加,性能是非常低的。并发安全的主要实现是通过对指定的Node节点加锁,来保证数据更新的安全性。
2023-05-04 14:51:10
1333
原创 HashMap底层实现原理
通过对cap进行位移或操作计算,获取扩容阈值2的幂次方。此时这里的阈值threshold不是初始容量*负载因子,不必在意,这只是临时的,真正设置threshold在后面put方法中。HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现,它是一个key-value结构的容器。JDK1.8 版本的HashMap,底层数据使用数组 + 链表/红黑树实现。Node的数据结构是一个链表结构,红黑树也是基于Node的数据结构构建得到。计算key.hashCode()并将哈希的高位数扩展到低位数。
2023-05-04 12:09:14
13084
原创 Java 17 新特性尝鲜
JDK 17更新了包括14个特性,具体如下表所示:恢复始终严格模式(Always-Strict)的浮点语义增强型伪随机数生成器新增macOS渲染管道支持将JDK移植到macOS或AArch64弃用待移除的Applet API强封装JDK内部APIswitch模式匹配进入预览(Preview)阶段移除RMI(远程方法调用)激活机制密封类移除实验性AOT和JIT编译器弃用待移除的安全管理器(Security Manager)外部函数和内存API(孵化器)孵化阶段Vector API(第二孵化器)第二孵化阶段。
2023-04-28 09:41:31
1692
1
原创 JVM锁优化和逃逸分析详解
这里的答案是不会,x + y + z 操作的优化「经过逃逸分析」过后,他的动态作用域被限制在了 concatStr方法内,就是说当前实际执行的 StringBuilder 的操作在 concatStr 方法内部,「其他的外部线程无法访问」到,所以这里「虽然有锁,但是可以被安全的消除掉。原则上,我们在写代码的时候,总是推荐将同步块的作用范围限制得尽可能的小--只在共享数据的实际操作作用域中才进行同步,这样也是为了使得需要同步的操作尽可能的变少,即使存在锁的竞争,等待的锁的线程也能很快的获取到锁。
2023-04-05 11:54:36
445
原创 计算机基础之CPU架构
电子计算机由中央处理器CPU、内部存储器(简称内存)和输入输出设备(简称IO设备)组成。CPU是计算机的核心。CPU负责解释并执行计算机命令、产生各种信号、令各部件协调工作,使整个系统构成一个有机整体。MPU---集成在芯片上的CPU,称为微处理器,简称MPU。MPU总体功能上由运算器、控制器、寄存器组构成。
2023-03-29 15:40:43
1513
原创 算法之Redis集群CRC16算法
算法原理:将需要发送15位的二进制信息,表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x)中x^k的系数。查表法是将移位异或的计算结果做成了一个表,就是将0~256放入一个长度为16位的寄存器中的低八位,高八位填充0,然后将该寄存器与多项式0XA001按照上述3、4步骤,直到八位全部移出,最后寄存器中的值就是表格中的数据,高八位、低八位分别单独一个表。或者将接受到的所有信息除多项式,如果能够除尽,则信息正确。
2023-03-27 17:05:17
1268
原创 MongoDB+springboot+spring+MongoTemplate简单Demo
【代码】MongoDB+springboot+spring+MongoTemplate简单Demo。
2023-03-13 21:44:33
178
原创 算法之希尔排序-改进的插入排序
希尔排序将整个数组根据间隔h分割为若干个子数组,他们相互穿插在一起,每一次排序时,分别对每一个子数组进行排序。当h=3时,希尔排序将整个数组分为交织在一起的三个子数组。如图所示。其中,所有的方形为一个子数组,所有的圆形、三角形分别组成另外两个子数组。每次排序时总是交换间隔为h的两个元素。在每一组排序完成后,可以递减h的值,进行下一轮更加精细的排序。直到h=1,此时等价于一次插入排序。
2023-03-13 11:43:28
212
原创 算法之插入排序
插入排序的基本思想:一个未排序的数组(链表)可分为两部分,前部分时已排序的,后半部分是未排序的。在进行排序时,在未排序的部分中选择一个元素,将其插入前面有序的数组中即可。最终,未排序的部分直到0,排序就完成了。当前数据的插入依赖于上一次得到的有序序列,所以插入排序很难并行化。
2023-03-13 10:20:45
110
原创 算法之奇偶交换排序
奇偶排序解开了冒泡排序每次迭代交换数据的相关性。它将排序分为两个过程,奇交换和偶交换。对于奇交换来说,它总是比较奇数索引及其相邻的后续元素。对于偶交换来说,它总是比较偶数索引及其相邻的后续元素。奇交换和偶交换会成对出现,这样能保证比较和交换涉及数组中的每一个元素。
2023-03-12 16:10:51
746
原创 算法之冒泡排序
在每次迭代的交换过程中,由于每次交换的两个元素存在数据冲突,对于每个元素,它既可能与前面的元素交换,也可能与后面的元素交换,因此很难直接改造成并行算法。在冒泡排序的执行过程中,如果数字较小,就会逐步被交换到前面去,相反,对于大的数字,则会下沉,交换到数组的末尾。该算法的最差时间复杂度为O(n2),最优时间复杂度为O(n),平均时间复杂度为 O(n2)。
2023-03-12 15:28:58
124
原创 矩阵算法之矩阵乘法
1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。
2023-03-12 13:51:53
29563
1
原创 设计模式之不变模式
当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步操作,但同步操作对系统性能有损耗。注意:不变模式通过回避问题而不是解决问题的态度处理多线程并发访问控制,不变对象不需要进行同步操作。由于并发同步会对性能产生不良影响,因此,在需求允许的情况下,不变模式可以去除这些同步操作,提高并行程序性能,确保其在没有同步操作的多线程环境中保持内部状态的一致性鄂汇正确性。将所有属性设置为私有,并用final标记,确保其不可修改。不变模式可以提高系统的并发性能和并发量。
2023-03-11 11:54:39
437
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人