java基本知识
java基本知识
小瞿慢慢跑
有梦想,谁都了不起
展开
-
jasper模板支持动态生僻字显示
jasper模板动态显示生僻字原创 2024-09-04 16:32:11 · 98 阅读 · 0 评论 -
java将含生僻字的字符串截取成一个个的字
【代码】java将含生僻字的字符串截取成一个个的字。原创 2024-08-17 09:32:26 · 98 阅读 · 1 评论 -
java拆分pdf
java 拆分单个pdf为多个pdf原创 2023-10-11 15:38:20 · 435 阅读 · 0 评论 -
java合成多个pdf为一个pdf
java合并pdf原创 2023-10-11 14:16:26 · 606 阅读 · 0 评论 -
java cpu高原因排查(windows系统)
java cpu飙高原创 2023-03-07 17:44:41 · 365 阅读 · 0 评论 -
高并发场景下分布式锁的优化思路
如果秒杀一件商品采用分布式锁,当每秒请求达到上千请求,传统做法是用商品id作为redis锁的key,这样会导致请求串行化,同一时刻只有一个请求在运行。对于并发请求量大的场景,传统的redis分布式锁及其影响效率,可以采用类似ConcurrentHashMap的分段锁,把商品分成n份,每份用一个redis锁的key,例如key1,key2,key3…,当请求过来后,可以随机到n份库存中某一份进行加锁,并发量大时这样就相当于n个请求同时处理,如果某个分段库存不足应及时释放锁,立马换下一个分段库存。...原创 2021-10-25 16:26:59 · 714 阅读 · 0 评论 -
Eureka和Consul
Eureka缺点:Eureka 2.x停止维护Eureka集群的实例每一个都是对等的,包含了全部的服务注册表,每个实例接收到了服务注册/下线等请求的时候,会同步转发给集群中其他的Eureka实例,实现集群数据同步。若集群中的服务很多,则注册表会越来越大,可能会超过单击内存支撑的极限。服务注册到一个server实例上去,同步到其他实例需要时间,在这段时间中,这样会导致其他的server看不到刚注册得那个服务。Consul通过Raft歇息实现强一致性支持强大的健康检查支持简单的key-va原创 2021-09-02 15:34:01 · 208 阅读 · 0 评论 -
AQS浅谈
公平锁:如图中线程1释放后,下一个线程为等待队列里面的线程。线程2,线程3进来后第一步是先查询等待队列是 否有数据,如果有数据,加入等待队列等待。非公平锁:如图中线程2,线程3进来后第一步是先试图获取锁,不管等待队列里面是否有数据,如果获取成功,执行代码,如果未获取成功,加入等待队列。...原创 2021-08-26 20:36:31 · 74 阅读 · 0 评论 -
java8 cas性能优化
AtomicInteger integer = new AtomicInteger(0);integer.incrementAndGet();先获取值,然后自己累加,更新主内存的时候比对是否是之前的值,如果是之前获取的值,则更新为新的值,如果不是则获取新的重复操作。如果大量线程并发修改AtomicInteger,可能会多线程会不停地获取值比对,然后再获取值再比对,陷入不停地自旋,进入一个无限重复的循环中。LongAdder adder = new LongAdder();LongAdder尝试使用原创 2021-08-25 17:21:39 · 154 阅读 · 0 评论 -
volatile关键字
变量加了volatile修饰之后,只要一个线程修改了这个变量的值,立马强制刷回主内存,接着强制过期其他线程的本地工作内存中的缓存,最后其他线程读取变量值的时候,强制重新保证了可见性的工作原理。...原创 2021-08-25 15:57:02 · 48 阅读 · 0 评论 -
幂等性
幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的。解决方法:1. 代码逻辑判断2.token .每次请求携带个token 存在redis或者其他地方,每次请求校验token是够有效,请求成功失效token...原创 2021-04-19 20:18:37 · 48 阅读 · 0 评论 -
transient关键字
用transient修饰的变量,当对象存储时,它的值不参与序列化。用static修饰时,也不参与序列化public class User implements Serializable { private transient int age; //transient 被标记的不能序列化 private static String name; //get set toString 方法 省略。。。} private static void demo原创 2021-04-16 14:19:15 · 86 阅读 · 0 评论 -
递归和循环的优缺点
递归代码简洁,但也有缺点。递归是函数调用自己本身,而函数调用是有时间和空间的消耗的,每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址和临时变量,而且往栈里压入数据和弹出数据都需要时间.递归有可能很多计算都是重复的调用栈溢出。每一次函数调用在内存栈中分配空间,而每个进程的栈的容量是有限的,当递归调用的层级太多是,就会超出栈的容量,从而导致内存栈溢出...原创 2021-03-31 13:53:32 · 463 阅读 · 0 评论 -
StringBuilder,StringBuffer,String区别
StringBuilder,StringBuffer,StringString连接通常是通过StringBuilder (或StringBuffer )类及其append方法实现的,因为每次String自己操作,都会开辟新的堆内存空间,不仅效率低下,还浪费空间。StringString 字符串常量,被创建,不能被改变,String类为什么是被final修饰的被final修饰的类不能被继承,不能有自己的子类,被final修饰的方法不能被重写,被final修饰的变量,无论是类属性,形参,还是局部变量原创 2021-03-24 17:10:52 · 66 阅读 · 0 评论 -
volatile关键字
volatile关键字每个线程都有自己的工作内存,同时还有一个共享的主内存。线程在运行时,会把主内存的值加载到自己的工作内存中。在线程中加了volatile的变量,工作内存data的值被改变之后会马上把主内存data的值更新,并强制失效其他线程工作内存中的data值,其他线程使用时需要再次从主内存中获取...原创 2021-03-23 14:57:09 · 49 阅读 · 0 评论 -
Mysql和索引基本知识(二)
MVCC学习日记事物的隔离级别 (innodb默认是RR级别)读未提交 read uncommitted 脏读 不可重复读 幻读读已提交 read committed 不可重复读 幻读可重复读 repeatable read 幻读串行化 serilizable脏读:读到了其他事物未提交的数据不可重复读:在同一事物里面,不同时刻读的同一批数据可能不一样幻读:针对插入操作,事物A更改了某些行的内容,还未提原创 2021-03-22 20:52:33 · 64 阅读 · 0 评论 -
HashMap的基本知识
一、HashMap的底层实现原理及源码分析在jdk1.6,jdk1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多时,即hash值相等的元素较多时,通过key值依次查找的元素较多,而jdk1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换成红黑树,这样大大减少查找时间。首先有一个每个元素都是链表的数组,当添加一个元素时,就首先计算元素key的value值,以此确定插入数组的位置,原创 2021-03-22 20:21:21 · 113 阅读 · 0 评论 -
linux的redis安装步骤
linux的redis安装步骤下载安装包 网址 https://redis.io/download上传到linux的文件夹中,我上传的是/software/redis 这个文件夹解压 tar -zxvf redis-6.2.1.tar.gz编译cd /software/redis/redis-6.2.1/make安装make PREFIX=/software/redis/redisinstall install --这里我是另外用的一个文件放安装的文件 PRE原创 2021-03-04 10:24:09 · 100 阅读 · 1 评论 -
方法调用方法事物失效问题
方法调用方法事物失效问题如下实例 中,此时事务是不生效的,因为@Transactional注解事务是通过代理来控制的,方法调用本类方法,事务不会生效。@Servicepublic class TranditionalClassImpl implements TranditionalClass { @Override public void a() { b(); } @Transactional public void b(){原创 2021-03-03 10:35:51 · 922 阅读 · 0 评论 -
Mysql和索引基本知识
Mysql引擎InnoDB从mysql 5.7版本开始默认的储存引擎,支持事物,行锁和外键约束,支持自动增加列AUTO_INCREMENT属性,适用于大量insert和update的表,支持B树索引、hash索引、全文索引,默认时B+树MyISAM无法处理事物,不支持行锁和外键约束,只支持表锁,适用于有大量的select操作的表,如日志表,支持B树索引、全文索引索引索引在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干原创 2021-02-26 17:47:27 · 69 阅读 · 0 评论 -
TCP学习
TCP和UDPOSI七层网络协议OSI将通讯协议中必要的功能分成了七层,每个分层接收下一层的服务,并为上一层提供服务,上层和下层之间的交互叫做接口,同层之间的交互所遵循的约定叫做协议物理层--硬件负责数据传输的硬件,相当于以太网或电话线等物理层的设备数据链路层--网络接口层网络接口层利用以太网中的数据链路层进行通信,因此属于接口层,也就是说,把它当做让NIC起作用的驱动程序也无妨。驱动程序是在操作系统与硬件之间起桥梁的软件。网络层--互联网层互联网层使用IP协议,相当于第三层的网络转载 2021-02-24 23:18:06 · 185 阅读 · 0 评论 -
阿里云服务器搭建流程及常见错误
阿里云服务器搭建流程1、下载jdkhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html解压 tar -zxvf jdk-8u181-linux-x64.tar.gz在etc/profile文件最后加上配置下面的配置export JAVA_HOME=/software/jdk1.8.0_251export PATH=$JAVA_HOME/bin:$PATH export原创 2020-12-17 20:56:42 · 470 阅读 · 0 评论