- 博客(40)
- 收藏
- 关注
原创 HTTPS 发送请求出现TLS握手失败2
这样可以解决问题,同时也不会对原有的代码造成影响!同事分析说可能是对方服务器最近更新了密码套件之类引起的,因为以前也出现过这样的情况,但是我没遇到过,我只能问一下他们确认一下了, 但是他们说没改动过的,这就无解了,没办法,暂时先这样吧,问题是解决了,就是不知道引发问题的原因。由此可见,这个包是包含常用的一些加密方法的,同时也包含国密的加密套件,问过写这个代码的同事,他说当时是因为有些项目需要使用国密的签名方法,所以使用这个包的Provider替换了原有的SunEC Provider,避免了名称的冲突;
2024-07-09 11:07:46
827
1
原创 HTTPS 发送请求出现TLS握手失败
我本人对这个方面的研究不深,到达了我的知识盲区,刚好身边有个博士做过这方面的研究,他所在的团队实现了TLS1.3的一个版本,对这个非常熟悉,请他看了一下日志,可以判断,也是缺少椭圆曲线;两者对比可以发现,服务端选择了TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384加密套件,正常请求是有这个套件的,而失败的请求是没有这个套件的;经过了一天的努力,终于发现了问题所在,之前有个哥们不知道因为什么原因,把SUN公司的ECC曲线都删掉了,导致了问题;从网上找了写方法,都没有解决;
2024-07-07 10:40:41
509
原创 MyBatis原理
Executor类会创建StatementHanlder、ParameterHandler、ResultSetHandler这3个类的对象,首先使用ParameterHandler类设置SQL语句中的占位符参数,然后使用StatementHanlder类执行SQL语句,最后使用ResultSetHandler类封装执行结果。实际上,除统计SQL语句的执行耗时以外,Mybatis Plugin还可以做很多事情,比如分库分表、自动分页、数据脱敏和加解密等。
2024-04-14 11:38:35
162
原创 java虚拟机结构
jvm结构jvm栈:新生代(Eden, From, To),老年代,永久代jvm垃圾回收算法: 引用计算法,无法处理循环引用 复制法,需要2倍空间 标记-清除法,会暂停整个应用,同时会产生内存碎片 标记-整理法,基于标记-清除法和复制法,不会产生内存碎片 垃圾收集器:Scavenge GC(次收集,发生在新生代,需要速度快、效率高的算法)和Full GC(全收集,老年代)老年代对象大部分是Minor GC过程中从新生代进入老年代。full GC的速
2021-07-07 10:14:50
87
原创 Java多线程高并发
什么是进程:进程是正在运行的应用程序,进程是线程的集合什么是线程,线程就是一条执行路径,一个独立的执行单元什么是多线程,为了提高效率实现多线程的方式:1.继承Thread类,重写run方法2.实现runnable接口3.使用匿名内部类4.callable5.使用线程池创建线程Thread和Runnable 如果只是使用run方法,不修改...
2021-07-07 10:13:23
227
原创 java基础知识
注解:java.Annotation作用:不是程序本身,可以对程序作出解释(这一点和注释comment没什么区别)可以被其他程序(比如:编译器等)读取Annotation的格式:注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如@SuppressWarnings(value="unchecked")Annotation在哪里使用?可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现
2021-07-07 10:11:42
71
原创 常用设计模式图示
设计模式图示策略模式:抽象工厂模式:建造者模式:代理模式:工厂模式:门面模式:桥接模式:适配器模式:装饰者模式:观察者模式:责任链模式:...
2021-07-07 10:10:05
150
原创 常用设计模式
设计模式23种设计模式:创建型模式: 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式 结构型模式: 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式行为型模式: 模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、 策略模式、责任链模式、访问者模式一:单例模式:Singleton实现方式:懒汉模式(LazySingleton)、饿汉模式(Hungr...
2021-07-07 10:05:57
62
原创 MySQL性能调优
MySQL性能调优MySQL索引的数据结构:B+Tree(B-Tree变种):本质是个多叉平衡树 非叶子节点不存储data,只存储索引(冗余,磁盘文件地址,可以分层加载索引),可以放更多的索引 叶子节点包含所有索引字段 叶子节点用指针连接,提高区间访问的性能InnoDB索引实现(聚集) 表数据文件本身就是按B+Tree组织的一个索引结构文件 聚集索引-叶节点包含了完整的数据记录 为什么减一InnoDB表必须建主键,并且推荐...
2021-07-07 10:04:52
65
原创 Linux进程间通信机制
Linux进程间通信机制1.无名管道:只能用于亲缘进程之间的通信 单向通信 双向通信亲缘进程: 只要存在继承关系的进程就是亲缘进程,继承关系分为两种。 (1)直接继承 :父进程 -->子进程 (2) 间接继承:父进程 -->子进程 -->子进程 读管道时,如果没有数据的话,读操作会休眠(阻塞) 2.有名管道: 单向通信 双向通信 无名管道因...
2021-07-07 10:01:36
116
原创 Spring全家桶
Spring全家桶包括:Spring + Spring MVC + MyBatis + Spring Boot + Spring CloundSpring两大核心机制: IoC:工厂模式 AOP:代理模式IoC是Spring框架的灵魂,控制反转lombok可以帮助开发者自动生成实体类相关方法,在IDEA中使用,要安装插件。开发步骤: 创建maven工程,pom.xml导入依赖 <dependency><gro...
2021-07-07 10:00:03
721
原创 Spring Framework原理
Spring Frameworkjava中创建对象的方法: 构造方法,newstudent() 反射 序列化 克隆 IOC:容器创建对象(不需要在代码中创建对象) 动态代理 ioc的体现: servlet: 1. 创建类继承HttpServelt 2. 在web.xml注册servlet,使用<servlet-name> myservlet </servlet&g...
2021-07-07 09:59:08
224
原创 Java面试题
面试题synchronized和lock的区别1.作用位置不同synchronized可以给方法,代码块加锁,lock只能给代码块加锁2.锁的华侨锁和释放机制不同:synchronized无需手动获取和释放锁,发生异常会自动解锁,不会出现死锁lock需要自己加锁和释放锁,如lock()和unlock(),如果忘记使用unlock()则会出现死锁所以一般我们会在finally里面使用unlock()synchronized修饰成员方法时,锁对象就是当前对象
2021-07-06 11:00:51
377
原创 Spring MVC原理
Spring MVC是Spring Framework提供的web组件核心组件: DispatcherServlet Handler HandlerMapping HandlerInterceptor HandlerExecutionChain HandlerAdapter ModelAndView ViewResolver工作流程: 1. 客户端请求被DispatcherServlet接收 2. 根据HandlerMapping映...
2021-07-06 10:48:17
92
原创 Redis运行快的原因
redis运行快的原因: 1. Redis对请求的真实处理是单线程的,避免了线程切换的资源消耗 2. Redis单线程机制也避免了资源的共享和锁的竞争问题 3. Redis基于内存存储,内存读写非常快 4. Redis使用了高性能的数据结构,比如跳表、哈希等 5. Redis使用了非阻塞的IO多路复用机制(异步机制)...
2021-07-06 10:44:26
229
原创 MongoDB
设置启动路径创建存放数据的目录mkdir -p /usr/local/mongodb/data/db创建存放日志的目录mkdir -p /usr/local/mongodb/logs创建日志记录文件touch /usr/local/mongodb/logs/mongodb.log前台启动:启动脚本bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --l
2021-07-06 10:43:57
53
原创 数据库原理
三大范式: 1. 列不可分 2. 要有主键 3. 不可存在递归依赖比如商品表里面关联商品类别表,那么只需要一个关联字段product_type_id即可,其他字段信息可以通过表关联查询即可得到。如果商品表还存在一个商品类别名称字段,如product_type_name,那就属于存在传递依赖的情况,第三范式主要是从空间的角度来考虑,避免产生冗余信息,浪费磁盘空间。反范式设计(第三范式)原因1. 提高查询效率(读多写少)预处理解决方案:采用PreparedState...
2021-07-06 10:41:57
45
原创 java相关书籍
不错的java和mysql的书籍:java性能权威指南Effective javajava并发编程java8实战java核心技术mysql必知必会高性能mysql高可用mysqlRedis深度历险深入理解java虚拟机深入理解kafkajava编程思想数据结构与算法分析...
2021-07-06 10:40:03
46
原创 Java Class文件字节码解释
下面的信息可以通过javap这个反编译命令或者jclasslib这个插件查看第一部分:CA FE BA BE 前四个字节 魔数第二部分:次版本号 00 00(0)第三部分:00 34(52)-->1.8 51->1.7 ...JDK主版本号第四部分:常量池的个数2个字节 00 19(25-1=24)第0号常量被jvm给占用了,表示什么都不引用 常量池分类:字面量、符号引用,第一个字节是tag//java/lang/Object."<init>":()V 没...
2021-07-06 10:37:56
78
原创 Go goroutine
使用sync.WaitGroup和go 组合,实现多线程可增长的栈 OS线程一般都有固定的栈内存(通常为2MB),一个gorutine的栈在其生命周期开始时只有很小的栈(典型情况下2KB),goroutine的栈不是固定的,它可以按需增大和缩小,goroutine的栈大小限制可以达到1GB,虽然极少会用到这么大。所以在Go语言中,一次创建十万左右的goroutine也是可以的。goroutine调度GMP是Go语言运行时(runtime)层面的实现,是go语言自己实现的一套调度系统。区...
2021-07-06 10:34:12
82
原创 Go channel
Go语言的并发模型是CSP(Communicating Sequential Processes),提倡通过通信共享内存而不是通过共享内存而实现通信channel是Go程序并发线程之间的连接,channel是可以让一个goroutine发送特定值到另外一个goroutine的通信机制channel是一个FIFO的管道,保证收发数据的顺序。每一个通道都是一个具体类型的导管,也就是声明channel的时候需要为其指定元素类型。通道是引用类型,通道类型的空值是nilvar ch chan int
2021-07-06 10:12:29
177
原创 Go并发同步和锁
互斥锁是一种常用的控制共享资源访问的方法,它能够保证同时只有一个goroutine可以访问共享资源。Go语言中使用sync包的Mutex类型来实现互斥锁。使用方法:lock sync.Mutexlock.Lock()......lock.Unlock()读写互斥锁互斥锁是完全互斥的,但是有很多实际的场景下是读多写少的,当我们并发的去取得一个资源不涉及资源修改的时候是没有必要加锁的,这种场景下使用读写锁是一个更好的选择。读写锁在sync.RWMutex读写锁分:
2021-07-06 10:08:25
231
原创 jquery动态生成控件绑定事件无效的解决方法
点击一个控件新增一些控件,其中有个删除控件,希望点击删除控件然后删除新增的控件,但是设置的点击事件没有触发,动态新增控件: $('#add-record').on('click', function () { $('.detail-items').append('<div class="weui-flex js-category">' + ...
2019-01-21 17:23:16
864
转载 delphi editmask设置方法
博客原文:https://blog.csdn.net/zengcong2013/article/details/12223415 至于掩码的格式子符有许多种,在这里一一例举不太可能,我只能给你几个常用的 # 其所对应的位置只能输入数字或正负号,但不一定要输入 9 其所对应的位置只能输入数字,但不一定要输入 0 其所对应的位置只能输入数字,一定要输入 c ...
2018-07-17 16:15:58
1119
原创 delphi 动态添加字段表格控件
在使用delphi有时候会遇到需要生成动态添加字段的报表,要达到这样的效果,需要几个控件配合使用:TFunctionButtonMTableMBBDBGridMDataSource四者缺一不可,有了这几个控件后需要进行一些设置, MBBDBGrid有一个缺点就是不能设置UseMultiTittle属性,不能显示多行的字段名,这样就不能设置复杂的表头,如果要实现这个效果就需要使用TDBGr
2017-11-16 09:46:38
3067
原创 delphi 把表格控件的内容转出到Excel
delphi 把表格控件的内容转出到Excel需要使用ExcelApplication控件范例如下Var I,K,m:Integer; ExcelID: Variant ;begin ExcelApplication1.Connect; ExcelID :=CreateOleObject('Excel.Application') ; ExcelID.Vi
2017-11-16 09:31:46
1217
原创 正则表达式的使用方法
常用的正则表达式字符:() 里面填写一个子表达式\s 匹配空格,比如 (\s*)update 可以匹配前面含有零个或多个空格的update. 通配符,匹配除\n换行符之外的任意字符,包括空格* 匹配零次或多次前面的表达式+ 匹配一次或多次前面的表达式?匹配零次或一次前面的表达式,或者指定一个非贪婪限定符\ 转移字符| 指明两项之间的一个选择^匹配输入字符串...
2017-11-02 15:53:54
156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人