-
golang 计算字符串长度
golang 计算字符串长度
-
java在windows下使用opencv实现大图找小图
java在windows下使用opencv实现大图找小图
-
查看ubuntu服务器的配置
查看ubuntu服务器的配置(cpu+显卡+内存+硬盘)
-
开源协议说明
开源协议说明
Apache 2.0 许可证、Megatron-LM 许可证、MIT 许可证和 CreativeML Open RAIL-M 许可证
-
pycharm debug模式开启失败
pycharm debug模式开启失败
使用pycharm开启debug模式时,启动报错
Connection to Python debugger failed Timeout waiting for response on 501
-
windows11开启Copilot(预览版)
windows11开启Copilot(预览版)
-
baichuan2模型微调
baichuan2模型微调
-
minio上传SignatureDoesNotMatch错误
minio上传SignatureDoesNotMatch错误
-
git pull fatal: Out of memory, malloc failed (tried to allocate 524288880 bytes)
git pull fatal: Out of memory, malloc failed (tried to allocate 524288880 bytes)
-
goland控制台无法满行显示内容解决办法
goland控制台无法满行显示内容解决办法
-
es数据迁移
es数据迁移
-
java应用打包exe执行文件
windows一键部署项目
将使用的服务打包成一个exe应用程序,点击安装后运行、省去环境搭建和部署的时间。
-
获取微软Office 365应用APPID、secret、access_token、refresh_token
获取微软Office 365应用APPID、secret、access_token、refresh_token
-
Red Hat下chia安装和启动
更新库,安装python
-
gomobile的使用
gomobile的使用
-
Error: export ordinal too large after upgrading to Go 1.15
Error: export ordinal too large after upgrading to Go 1.15
-
navicat oracle字符集问题
navicat oracle字符集问题
-
oracle字符集修改
oracle字符集修改
-
oracle在docker下的安装配置
oracle在docker下的安装配置
-
protobuf学习使用
protobuf学习使用
-
Error:Could not run Bazel info
Error:Could not run Bazel info
-
docker重新进入容器时“/etc/profile”中环境变零失效问题
在docker容器中的/etc/profile配置了环境变量,容器未重新启动是可以正常使用的,但是一旦重启就失效了,解决办法是在/root/.bashrc文件最下面添加如下指令:
-
docker开启api
Docker常见端口
-
docker私服搭建-nexus3
Nexus 3
-
使用thrift
使用thrift
-
tls学习整理
-
go 笔记
目前尚需详细查看内容:
-
im部署文档
一、部署聊天服务器文件上传服务配置 (一般由运维部署,也可以自己部署,后期统一) 1、安装tomcat
1、systemctl status tomcat(查看是否有安装的tomcat或使用 ps -ef|grep tomcat。有tomcat直接跳过该部) 2、yum info tomcat 3、yum -y install tomcat(默认安装到/usr/share/tomcat/)
1、vi /usr/share/tomcat/conf/server.xml 修改server.xml 端口改为8088 2、进入 /usr/share/tomcat/webapps/ 目录下 上传assist.war 3、systemctl start tomcat 启动tomcat解压包 4、 vi /usr/share/tomcat/webapps/assist/WEB-INF/classes/jdbc.properties 修改当前数据库账 号密码
-
mysqldump备份与还原
#一. 备份类型
逻辑备份:把数据导出到一个文档中(.sql/.txt) 适合场景:中小型数据库
物理备份:保存/usr/local/mysql/data数据库文件目录 适合场景:大型数据库
在线热备(冗余):需要有多台机器,主备模式,集群模式
-
ngrinder
1、下载 在https://github.com/naver/ngrinder/releases选择合适版本下载
-
nginx 301跳转https后post请求失效问题解决
app本地请求是http端口,后来升级https强制301跳转,设置如下
server { listen 80; server name www.XXX.com; rewrite ^/(.*)$ https://www.XXX.com/$1 permanent; }
-
git开发流程
Master 分支
- Master 分支应该始终和生产环境保持一致。
- 由于 master 和生产代码是一致的,所以没有人包括技术负责人能在 master 上直接开发。
- 真正的开发代码应当写在其他分支上。
-
kafka-入门
概念:
- kafka作为一个集群运行在一个或多个服务器上。
- kafka集群存储的消息是以topic为类别记录的。
- 每个消息(也叫记录record,我习惯叫消息)是由一个key,一个value和时间戳构成。
-
访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
-
模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
-
策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
-
状态模式
状态模式
-
观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。
-
单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。
-
工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
-
备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
-
中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
-
迭代器模式
用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。
-
设计模式的六大原则
设计模式三个分类
-
解释器模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
-
命令模式
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
-
责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。
-
代理模式
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
-
JDK和CGLIB动态代理区别
- JDK动态代理
-
享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
-
外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
-
装饰模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。
-
组合模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
-
桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
-
适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
-
原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。
-
建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder类是独立于其他对象的。
-
红黑树
二叉查找树(BST)具备什么特性呢?
-
Blowfish 加密算法
Blowfish加密算法的特点:
-
内置锁与显示锁
Java中具有通过Synchronized实现的内置锁,和ReentrantLock实现的显示锁
-
ReentrantLock
使用 synchronized 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。
-
Random String来打印出”Hello World”
``` public static String randomString(int i) { Random ran = new Random(i); StringBuilder sb = new StringBuilder(); while (true) { int k = ran.nextInt(27); if (k == 0) break;
-
泛型
泛型基础
-
三目运算符----类型自动提升
public static void main(String[] args) { int i=99; System.out.println("99999判断结果:"+(true?'a':99999)); System.out.println("-1判断结果 :"+(true?'a':-1)); System.out.println("0判断结果 :"+(true?'a':0)); System.out.println("65535判断结果:"+(true?'a':65535)); System.out.println("65536判断结果:"+(true?'a':65536)); System.out.println("i判断结果 :"+(true?'a':i)); }
运算结果如下:
-
线程池
-
线程池原理
-
-
synchronized
众所周知 synchronized 关键字是解决并发问题常用解决方案,有以下三种使用方式:
-
Java 枚举查找并不抛异常的实现
- 问题
-
jvm堆内存
-
ConcurrentHashMap
- Base 1.7
ConcurrentHashMap 采用了分段锁技术,其中 Segment 继承于 ReentrantLock。不会像 HashTable 那样不管是 put 还是 get 操作都需要做同步处理,理论上 ConcurrentHashMap 支持 CurrencyLevel (Segment 数组数量)的线程并发。每当一个线程占用锁访问一个 Segment 时,不会影响到其他的 Segment。
- Base 1.7
-
Java类加载机制
##Java类加载机制的七个阶段