Java
文章平均质量分 67
码海无涯苦做舟
远方有尽头吗?
展开
-
java调用https报错PKIX path building failed问题,调用chatGPT接口报错
java调用https报错PKIX path building failed问题,调用chatGPT接口报错.因为使用chatGPT限制ip,国内无法使用,但是使用OpenAPI不限制ip,因此可以OpenAPI使用chatGPT,开发过程很快,但是在部署过程中出现了问题,试了多种解决方式(包括忽略https等等),都解决不了这个问题,因此没办法。转载 2023-02-08 21:30:00 · 1166 阅读 · 0 评论 -
Java锁机制
Java 锁分类从线程是否需要对资源加锁可以分为 悲观锁 和 乐观锁从资源已被锁定,线程是否阻塞可以分为 自旋锁从多个线程并发访问资源,也就是 Synchronized 可以分为 无锁、偏向锁、 轻量级锁和 重量级锁从锁的公平性进行区分,可以分为公平锁 和 非公平锁从根据锁是否重复获取可以分为 可重入锁 和 不可重入锁从那个多个线程能否获取同一把锁分为 共享锁 和 排他锁Java...原创 2020-01-09 22:35:47 · 153 阅读 · 0 评论 -
volatile 关键字和多处理器总线嗅探
volatile变量修饰的共享变量在进行写操作的时候回多出一行汇编:0x01a3de1d:movb $0×0,0×1104800(%esi);0x01a3de24:lock addl $0×0,(%esp);Lock前缀的指令在多核处理器下会引发两件事情。1)将当前处理器缓存行的数据写回到系统内存。2)这个写回内存的操作会使其他cpu里缓存了该内存地址的数据无效。多处理器总线嗅...原创 2019-07-10 11:49:38 · 7557 阅读 · 0 评论 -
多线程锁的升级和无锁、偏向锁、轻量级锁、重量级锁
随着竞争情况逐渐升级,锁可以升级但不能降级。锁一共四种状态,低-->高 无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态。偏向锁:优点:加锁和解锁不需要额外的消耗,和执行非同步方法相逼仅存在纳秒级的差距。缺点:如果线程间存在锁竞争,会带来额外的锁撤销的消耗(适用只有一个线程访问同步块场景)轻量级锁:优点:竞争的线程不会阻塞,提高了程序的响应速度缺点:如果始终得不到...原创 2019-07-11 17:10:22 · 166 阅读 · 0 评论 -
单例 双重检查锁定的重排序问题
双重检查锁定代码://双重检查锁定public class DoubleCheckedLocking { private static Instance instance; public static Instance getInstance() { if (instance == null) { // Single Chec...原创 2019-07-11 18:00:06 · 398 阅读 · 0 评论 -
代理模式之静态代理和动态代理
静态代理静态代理是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。(1)基于接口实现方式(2)接口继承方式实现public class OrderServiceProxy extends OrderServiceImpl { public void order() ...原创 2019-08-14 15:21:35 · 100 阅读 · 0 评论 -
jfinal打成jar包部署在服务器中
其中打成jar之后,运行一直报错。具体报错:Null identity service, trying login service: nullFinding identity service: null参照:jfinal-undertow 下部署,官网链接:https://www.jfinal.com/doc/1-3参照上述步骤之后,一直报错,但是本地运行main...原创 2019-08-10 21:50:07 · 2169 阅读 · 0 评论 -
冒泡排序、选择排序、快速排序、插入排序、希尔排序、归并排序、基数排序以及堆排序
1、冒泡排序- 依次比较相邻两元素,若前一元素大于后一元素则交换之,直至最后一个元素即为最大;然后重新从首元素开始重复同样的操作,直至倒数第二个元素即为次大元素;依次类推。如同水中的气泡,依次将最大或最小元素气泡浮出水面。实现代码就是两个for循环,然后比较交换位置。时间复杂度:O(N2)2、选择排序- 首先初始化最小元素索引值为首元素,依次遍历待排序数列,若遇到小于该最小索...原创 2019-09-01 12:44:28 · 1005 阅读 · 0 评论 -
堆外内存
在Java中创建的对象都处于堆内内存(heap)中,堆内内存是由JVM所管控的Java进程内存,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理堆内存。与之相对的是堆外内存,存在于JVM管控之外的内存区域,Java中对堆外内存的操作,依赖于Unsafe提供的操作堆外内存的native(底层使用c,c++,汇编)方法。使用堆外内存的原因对垃圾回收停顿的改善。由于堆外内存是直...转载 2019-07-12 17:04:54 · 208 阅读 · 0 评论 -
ConcurrentLinkedQueue常用方法:
ConcurrentLinkedQueue常用方法:增:add :底层调用offeroffer : 将指定元素插入此队列的尾部删:poll 是从队列取出元素并且删除该元素remove 如果此元素不存在,则返回 false,移除成功返回true读:peek() 获取但不移除此队列的头;如果此队列为空,则返回 nullcontains(Object o) 如果此队列...原创 2019-06-28 11:11:55 · 486 阅读 · 0 评论 -
Servlet详解
1、什么是Servlet servlet其实就是java里面一种java类,只不过这种java类有一些特殊的作用,所以我们就叫它servlet. 浏览器地址栏输入地址或者是点击超链接或者是点击表单的提交按钮等操作, 向服务器发送一个请求,这个请求的目的是要调用服务器中web项目里面的一个指定类 的对象(servlet对象)中的指定方法(service方法)(同时还可以把页面上的相关参原创 2017-03-09 22:13:43 · 710 阅读 · 0 评论 -
Java虚拟机类加载机制
Java虚拟机类加载机制博客分类: JavaJava Java程序运行于Java虚拟机之上,JVM屏蔽了底层细节,使得Java程序能够“一次编译,到处运行”。在Java语言中,一切皆是对象,代码一般由类、接口、enum等构成,是一种面向对象的编程语言。本文将为你揭示Java虚拟机如何加载类,一窥Java底层的秘密。类在虚拟机中的生命周期,可以分为加载转载 2017-03-23 23:18:13 · 168 阅读 · 0 评论 -
Windows系统报源路径太长,无法删除
public static void main(String[] args) { File file = new File("E:\\code\\idea\\yulang"); deleteFiles(file); } public static void deleteFiles(File file){ if( file.is...原创 2018-06-08 16:54:00 · 2108 阅读 · 0 评论 -
线程池中使用线程变量ThreadLocal 的注意以及线程池创建
从输出可以看出,线程池中的线程执行了10次,由于创建了固定的线程池就只有3个,与预期的只有一个线程才能拿到线程变量有很大差距;造成这种现象是因为线程复用导致的;测试代码:public class Demo { public static void main(String[] args) throws Exception { //创建可缓存线程池 无限大小 ...原创 2018-12-28 15:36:20 · 10736 阅读 · 0 评论 -
Java连接Linux主机执行命令
Java连接Linux主机执行命令:将IP,用户名和密码替换掉就好了package com.yulang.service.host;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;import org.slf4j.Logger;import o...原创 2019-01-10 13:13:34 · 868 阅读 · 3 评论 -
Java中matches方法换行匹配不到的问题
如String中带有换行,用下面两种方法匹配:一、直接 . 用 [\\s\\S] 即可匹配//String s = mes.replaceAll("\r|\n", "");//去掉空格//if (s.matches(".*[a-zA-z0-9]{11}.*")) {if (s.matches("[\\s\\S]*[a-zA-z0-9]{11}[\\s\\S]*")) { retu...原创 2019-01-07 15:45:24 · 2456 阅读 · 0 评论 -
Java多线程批量执行sql
当遇到大sql批量导入时几十万上百万数据,使用plsql执行等都是非常的慢。因此开发一套自定义线程池处理sql:1,线程代码import java.util.ArrayList;/** * @ClassName: com.ai.order.esb.yulang.tools.handle * @Description: TODO * @version: v1.0.0 * @a...原创 2019-05-28 16:51:29 · 8051 阅读 · 19 评论 -
快速教你十分钟学完反射
快速教你十分钟学完反射反射是什么反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了原创 2017-03-08 16:05:32 · 254 阅读 · 0 评论