- 博客(22)
- 收藏
- 关注
原创 hive sql强转类型
工作中执行一个sql时发现执行后的值和预期结果不一样,百思不得其解,遂研究之。具体表现为,预期的结果是,正常获取到id数据并写入到新表中。但查询B表发现,从A1表中获取的id字段写入到B表后值变了。猜测是A2表的数据除操作导致数据类型发生了强转且丢失了精度。可以看到,执行结果同样发生了错误。去除最外层的嵌套,只提取union操作时,对应的sql和执行结果为:结果使用了科学计数法表示数值,且从科学计数法表示的数值看到,数据值已经发生了变化,和我们输入的数据值不相等。
2023-04-16 23:14:03
576
原创 线程池拒绝策略
1. AbortPolicypublic void rejectedExecution(Runnable r, ThreadPoolExecutor e) { throw new RejectedExecutionException("Task " + r.toString() + " rejected from " +
2020-09-07 19:45:04
131
原创 springboot自动配置
1. 代码springboot项目主类上有注解@SpringBootApplication,该注解中引入注解@EnableAutoConfiguration注解开启自动配置,@EnableAutoConfiguration中引入注解@Import(AutoConfigurarionImportSelector.class)。其中,AutoConfigurationImportSelector是DeferedImportSelector的实现类,DeferedImportSelector是ImportS
2020-08-16 22:04:26
213
原创 java线上诊断工具
1. JDK自带的命令行工具2.JDK自带的可视化工具1.jconsole启动:双击jdk/bin/jconsole.exe选择要诊断的进程,建立连接“概述”页签显示的是整个虚拟机主要运行数据的概览,其中包括“堆内存使用情况”、“线程”、“类”、“CPU使用情况”4种信息的曲线图,这些曲线图的后面“内存”、“线程”、“类”页签的信息汇总。内存监控(“内存”页签) 相当于可视化的jstat命令,可查看不同内群不同分区使用量,可手动执行GC线程监控,相当于可视化的jstack命令,可查看
2020-07-22 11:51:47
522
原创 图解HTTP笔记
1. 范围请求问题:下载中断导致重头开始解决:需要一种可恢复的机制,其中,恢复是指能从之前下载中断处恢复下载范围请求(Range Request):用首部字段Range来指定资源的byte范围服务器的响应206 Partial Content,成功返回范围请求的内容200 OK,服务器无法响应范围请求,就返回200和完整的实体内容若是多重范围的范围请求,响应在首部字段Conten...
2020-05-06 14:59:58
122
原创 发布上线
1. 蓝绿发布1)重新部署一套新的环境,部署完成后指向新的环境2)优点:线上有正确版本,切换快3)缺点:成本高2. 滚动发布1)每次只更换一小部分节点为新的服务2)优点:成本低3)缺点:问题排查困难,回滚慢3. 灰度发布(金丝雀发布)1)先对一小部分群体用新的版本,如果没问题,再放开...
2020-04-13 18:17:13
126
原创 【mysql】show engine innodb status命令
执行结果:'InnoDB', '', '=====================================2020-03-18 10:47:11 3994 INNODB MONITOR OUTPUT=====================================Per second averages calculated from the last 20 seconds...
2020-03-18 12:02:33
240
原创 【Java基础】原子类
解决CAS的ABA问题AtomicStampedReference类 public boolean weakCompareAndSet(V expectedReference, V newReference, int expect...
2020-03-14 11:08:27
102
原创 【Java基础】序列化Serializable接口
序列化:将对象转变成一串由二进制字节组成的数组被transient修饰的变量不能被序列化,transient只能用来修饰普通成员变量,只作用于实现了Serializable接口的类中。一个静态变量不管是否被transient修饰,都不能被序列化...
2020-03-14 10:42:40
124
原创 【Java基础】PriorityQueue
1. 基础知识priorityQueue是基于数组实现的transient Object[] queue; public PriorityQueue(int initialCapacity, Comparator<? super E> comparator) { if (initialCapacity < 1) ...
2020-03-13 20:11:21
85
原创 【Java基础】DelayQueue
在J.U.C包中是用PriorityQueue实现的不允许null元素使用ReentrantLock结合Condition,添加或移除元素要加锁。类的定义:public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueu...
2020-03-13 19:41:14
137
原创 【mysql】常见面试知识点
1. 基本sql命令2. 索引3.行锁、表锁、间隙锁4. ACID、隔离级别脏读、幻读、不可重复读5. 优化explain中的参数分页查询的优化 limit id6. 数据库结构??...
2020-03-09 18:03:16
135
原创 【Java基础】synchronized和Lock、ReentrantLock
1. synchronized和RenentrantLock相同点:线程安全可重入不同点synchronizedReentrantLockJVM层面代码层面关键字类自动释放锁需手动释放锁竞争锁竞争锁、公平锁可以尝试获取锁可以获取锁的状态可以实现lockInterruptibly() (等待过程可被打断)...
2020-03-09 17:16:11
97
原创 【Java多线程】线程池
1. 创建线程池使用java.util.concurrent.Executors类创建线程池。线程池有如下几种类型:public static ExecutorService newFixedThreadPool(int nThreads)创建一个拥有固定线程数的线程池。如果有超过线程数的任务来了,就在queue中等待直至有一个线程可以用。如果一个线程执行出错而终止,就会new一个新的线...
2020-03-08 23:34:27
145
原创 【Java基础】StringBuffer和StringBuilder
1. 对比StringBufferStringBuilder线程安全吗?线程安全非线程安全速度慢(每个方法都用synchronized修饰)快适用场景多线程单线程2. 相同点2.1 主要方法append()在字符串尾部增加数据。StringBuffer中的append()方法: public synchronized String...
2020-03-08 22:17:44
89
原创 【Java基础】ArrayDeque
1. 定义ArrayDeque:基于数组的双端队列2. 特点用作栈时,比Stack快;用作队列时,比LinkedList快。ArrayDeque的大多数操作运行时的时间分摊下来都是常数时间(O(1))。除了remove,removeFirstOccurrence,removeLastOccurrence,contains,iterator.remove() and the bulk op...
2020-03-07 22:47:09
292
原创 【redis】使用redis分布式锁
1. 最基础的应用String lockKey="lockKey";//使用setnx命令加锁stringRedisTemplate.opsForValue().setIfAbsent(lockKey,value);...//执行业务逻辑代码完成后释放锁stringRedisTemplate.delete(lockKey);存在的问题:执行业务逻辑代码时出现异常,导致锁不能被释放。...
2020-03-06 23:28:49
211
原创 【计算机网络】https加密密钥的协商
Https用非对称加密算法协商生成一个加密密钥用于对称加解密传输的内容。RSA算法如下:加密:m^e mod n=c解密:c^d mod n=m其中,c是密文,m是原始数据,n和e是公钥,d和n是私钥。以下是使用非对称密钥生成对称密钥的过程。clientserverrandom1用证书生成公钥和私钥证书、公钥、random2生成一个premaster_secret,用random1和r...
2020-03-05 17:52:18
663
原创 【java基础】String的深坑
1. intern()《深入理解Java虚拟机》中的描述:String.intern()是一个Native方法,它的作用是:如果字符串常量池中已经包含一个等于此String对象的字符串,则返回代表池中这个字符串的String对象;否则,将此Sreing对象包含的字符串添加到常量池中,并且返回此String对象的引用。Jdk1.7的intern()实现不会再复制实例,只是在常量池中记录首次出...
2020-03-05 17:30:51
165
原创 RBAC设计权限表案例
参考:https://www.cnblogs.com/hao-1234-1234/p/8976582.html1. RBAC是什么RBAC:Role-Based Access Control(基于角色的访问控制)简单地说,就是不要直接把权限放在用户表上,而是把角色和用户关联起来,再把角色和权限关联起来。2. 利用RBAC设计表2.1 题目一个简单的管理系统,有三种角色,管理员可以做任何...
2020-03-05 13:06:16
785
原创 idea和eclipse的快捷键
1. idea1.1 debugF8 下一步F7 进入到执行方法的代码块中1.2 其他ctrl+alt+B 查看接口的实现类alt+enter 提示代码2. eclipsectrl+shift+o/ctrl+shift+m 一键导包ctrl+shift+h 查找类ctrl+1(one) 根据错误代码提示改代码alt+shift+s 生成get set方法...
2020-03-05 11:51:06
110
原创 【Java基础】equals和hashcode
1. equals()和hashcode()的用法a. equals()和hashcode()都是Object类中的方法b. equals() 1) 在未重写时,和==等效 【源码】 public boolean equals(Object obj) { return (this == obj); } 2) 可...
2020-03-05 10:59:16
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人