自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 Oracle、OceanBase中yyyy-MM-dd hh24:mm:ss格式化分钟不正确

Oracle、OceanBase中yyyy-MM-dd hh24:mm:ss格式化多分钟不正确

2022-11-16 17:29:38 2308 1

原创 判断相等重写equals和重写hashCode的原因

从开始学习编程,老师或者各种书上都说重写equals就要重新hashCode。但是为什么一定要重写hashCode呢?似乎直接重新equals方法,也是可以判断2个对象的相等。其中equals与hashCode在Object中如下:其中,对于hashCode:返回对象的hash值,是为了像hashMap这类集合提供更好的支持equals方法中相等,hashCode一定相等;hashCode相等,equals方法不一定相等;hashCode不相等,equals方法一定不相等;从这里其实就可以看到,

2022-07-07 14:19:40 307

原创 java中double类型较大或者较小会显示成科学计数法

今天有同事找到我,0.0000001,返回到前端之后变成了科学计数法,这种显示方式客户不认可,需要按正常显示。返回前端是put进了JSONObject,我的反应是put的时候是正确的字符串,那就不会有这个问题,让她转成字符串试试,然而并没有什么用。于是,去查了一下,当double类型小数点后超过3位就会按科学计数法显示:1.0E-4 ,即<=0.0001小数点前超过7位也会按科学计数法显示:1.2345678E7,即>=10000000====================

2022-05-31 22:39:48 7689

原创 位运算的一些应用(二)

在java里int的范围是 [−~],共个数,占32个字节,其中第一位是符号位 ,1表示负数,0表示整数。符号 名称 作用 例 & 与 同1为1,其他为0 1&2 结果为0 | 或 不同为1,同1为1,同0为0 1|2 结果为3 ! 非 逻辑取反 !true结果为false ~ 取反 原1为0,原0为1 ~1结果为-2 ^ 异或 相同为0,不同为1...

2022-05-18 17:27:38 288

原创 java new对象的时候发生了什么

User user=new User();当虚拟机遇到一个new指令的时候,首先回去常量池中寻找这个类的符号引用,找不到就会执行类加载过程;能找到就会对类进行内存分配。

2022-05-12 20:41:22 177

原创 volatile为什么不能保证原子性

volatile变量不能保证原子性

2022-04-22 16:49:59 3273

原创 LC 5最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd" 输出:"bb"示例 3:输入:s = "a" 输出:"a"示例 4:输入:s = "ac" 输出:"a" 提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成解题思路:回文子串的解法有多重:暴力解 动态规划 .

2021-12-29 19:55:15 196

原创 二分查找的递归和迭代实现(leecode 35)

二分查找是对有序数组的快速查找方式,时间复杂时O(log n).时间复杂度小于遍历O(n)。实现方式可以通过递归,或者遍历方式递归方式:根据左右两边的位置,找到mid,没找到,大于target就查mid左侧,小于target就查mid右侧,最后没有找到,left>rihgt.返回-1; public int binarySearch(int[] nums,int target,int left,int right) { if (left > .

2021-12-25 14:49:25 504

原创 log4j2 2.15.0 仍有安全漏洞

Apache Log4j 2.15.0 正式版已发布,安全漏洞 CVE-2021-44228 已得到解决。目前log4j2的最新版本已经更新到2.16.0Apache Log4j 2Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements availabl.

2021-12-17 19:55:45 4000

原创 递归-----及一些题的递归思路

一、递归的基本常识 递归的思路是将大问题,分解成小问题,直到最后不能再分的情况,求出结果,再将结果汇总成最终问题的解。是一种典型的分治思想。 递归,有2个比较重要的元素。一个是递归式,一个是终止条件。 递归式,也就是问题拆分过程中,如何自己调用自己,或者简介调用自己 终止条件,也就是程序的退出条件。如果没有终止条件,就是死循环,java的话,会造成栈溢出,报stackoverflow的异常。二、常见题目的递归分析1.跳台阶一...

2021-12-12 10:37:29 472

原创 NC40 两个链表生成相加链表

描述假设链表中每一个节点的值都在 0 - 9之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。数据范围:0≤n,m≤1000000,链表任意值0≤val≤9要求:空间复杂度 O(n),时间复杂度 O(n)例如:链表 1为 9->3->7,链表 2为 6->3,最后生成新的结果链表为 1->0->0->0。示例1输入:[9,3,7],[6,3]返回值:{1,0,0,0}说明:如题...

2021-12-02 00:11:01 217

原创 NC25 删除有序链表中重复的元素-I

描述删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次例如:给出的链表为1→2,返回1→2.给出的链表为1→1→2→3→3,返回1→2→3.数据范围:链表长度满足 0≤n≤100,链表中任意节点的值满足 ∣val∣≤100进阶:空间复杂度 O(1),时间复杂度 O(n)示例1输入:{1,1,2}返回值:{1,2}示例2输入:{}返回值:{}解题思路:因为链表有序,在遍历的过程中,发现重复元素,直接删掉重复节点,就能获取正确

2021-11-28 22:00:59 294

原创 NC78 反转链表

描述给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。数据范围: n≤1000要求:空间复杂度 O(1),时间复杂度 O(n)。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:示例1输入:{1,2,3}返回值:{3,2,1}示例2输入:{}返回值:{}说明:空链表则输出空 ----------------------..

2021-11-26 22:58:08 379

原创 NC33 合并两个排序的链表

描述输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围: 0≤n≤1000,−1000≤节点值≤1000要求:空间复杂度O(1),时间复杂度O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:或输入{-1,2,4},{1,3,4}时,合并后的链表为{-1,1,2,3,4,4},所以对应的输出为{-1,1,2,3,4,4},转换过程..

2021-11-25 23:38:55 888

原创 NC61 两数之和

描述给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。数据范围:2≤len(numbers)≤1500,−10≤numbersi​≤109,0≤target≤109要求:空间复杂度O(n)O(n),时间复杂度O(nlogn)O(nlogn)例如:给出的数组为 [20, 70, 110, 150] , 目标值为90返回一个数组 [1,2] ,因为 numbers1​+numbers2​=20+70...

2021-11-25 00:23:10 779

原创 使用2个栈模拟队列

题目:用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。栈的特性:先进后出队列的特性:先进先出思路:用2个栈模拟队列,只要第一个栈里添加1,2,3,4,添加之后根据栈的特性,再移动到第二个栈里,变为4,3,2,1 逐个弹出,符合队列先进先出看似问题解决,但是经过测试就会发现,如果stack2里已经有元素了,但是这时候stack1又添加

2021-11-23 21:09:37 263

原创 HashMap在jdk1.8中的实现原理(一)

jdk1.8相对于1.7,数据结构从数组+链表变为,数据+链表|红黑树一。主要属性// 初始容量,默认16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16// 最大容量,2的30次幂1073741824static final int MAXIMUM_CAPACITY = 1 << 30;// 负载因子0.75 static final float DEFAULT_LOAD_FACTO

2021-11-22 23:28:27 352

原创 单向链表和双向链表的添加操作

单向链表单向链表,每次添加,向链表尾追加元素。第一个节点为head节点,每次添加的时候,找到最后一个节点,将最后一个节点的next指向新添加的元素。先拿到head节点,每次只需要通过next,就能找到下一个节点public class SingleLinkedList<E> { // 头结点 Node head; // 最后一个节点 Node last; public void add(E e) { Node node

2021-11-16 23:23:56 918 1

原创 关于35岁程序员失业的问题

35岁的程序员,按工作经验算,应该有10年的工作经验了。boss上5-10年的java开发,薪资都不低,当然要求也不低。 35岁,会失业么?失业与否,从来都是看人的,今天给一个10年经验的java开发做了面试,对java,对框架只有简单的应用,而且用的还是老一套的SSM,不管是微服务,中间件,redis都没有了解过。活在自己的舒适区,从来都没有学习提升,10年的经验,甚至都不一定比刚毕业一两年的能力强。 想着10年经验,或许解决问题的能力会强,问了2个sq...

2021-11-12 21:59:16 1325

原创 一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度,要求算法尽可能最优。例如输入:“a1 123# abc“,结果:4;

题目:一个长字符串中含多个连续和不连续的空格,求不含空格的最长字符串长度,要求算法尽可能最优。例如输入:"a1 123# abc",结果:4;package com;import java.util.Random;public class StringAlgorithm { public static void main(String[] args) { for (int i = 0; i < 1; i++) { String s =

2021-11-02 22:51:37 104

原创 python打包成exe后提示fail to execute script main

对于这个问题的排查,网上常见的说法是看输出的日志,但是最尴尬的是没有报错信息,打包方式:pyinstaller -F -w main.py,去查pyinstaller下参数含义,-w是GUI编程的打包参数,非GUI用-c更换打包方式:pyinstaller -F -c main.py通过cmd执行打包好的程序,显示报错信息:先是,用pyinstaller-c main.py的打包方式,把chromedriver.exe放到打包目录下,程序正常运行考虑用pyinstaller -F -..

2021-06-26 14:35:36 806

原创 OceanBase中merge into的用法

对于数据库的操作,有时希望库里存在记录就更新,不存在就插入的情况,如果不使用merge into需要先update,根据update的值在进行插入

2021-05-11 16:17:31 1117 1

原创 3个线程交替打印ABC,打印2次

解题思路:设置3个信号量,通过acquire()获取信号量,获取不到阻塞,执行一条线程后,依次将下一个线程的信号量通过release()释放,执行public class Main { public static void main(String[] args) { Semaphore s1 = new Semaphore(1); Semaphore s2 = new Semaphore(0); Semaphore s3 = new S.

2021-03-25 15:21:24 66

原创 算法面试题:整型数组data[]中每个元素的取值范围是【0,99999】

题目:整型数组data[]中每个元素的取值范围是【0,99999】,编写java程序统计在每个长度为10的区间各有多少个数字:【0,9】,【10,19】。。。【99990,99999】,并将结果打印出来。注意:统计个数为零的区间不用打印个人解体方案: public static void main(String[] args) { int[] data = {1,2,9,15,78,17,9999,324,78,9996,73}; int size = .

2021-01-26 23:06:19 857 2

原创 一波三折的mysql安装

早期mysql版本,下载之后一路下一步很顺利就安装成功。最近想装个mysql8.0+,经历了各种问题mysql下载地址:https://dev.mysql.com/downloads/mysql/具体安装步骤参见:https://www.runoob.com/mysql/mysql-install.html输入安装命令:mysqld install提示:Install/Remove of the Service Denied!用管理员方式打开命令窗口,第一关通过接着,mysq

2021-01-13 20:47:17 76 1

原创 oracle查看当前隔离级别的方式(直接通过sql)

首先创建一个事务declare trans_id Varchar2(100); begin trans_id := dbms_transaction.local_transaction_id( TRUE ); end;查看事务隔离级别SELECT s.sid, s.serial#,  CASE BITAND(t.flag, POWER(2, 28))    WHEN 0 THEN 'READ COMMITTED'    ELSE 'SERIALIZABLE'

2020-11-26 10:42:40 2974 1

原创 JVM调优实战一(Parallel + ParallelOld)

常用垃圾回收器组合参数设定-XX:+UseSerialGC=Serial New(DefNew) + SerialOld . -XX:+UseConc(current)MarkSweepGC=ParNew +CMS + SerialOld -XX:+UseParallelGC(默认)=Parallel Scavenge+Parallel Old(1.8默认) -XX:+UseParallelOldGC=Parallel Scavenge+Pallel Old(该参数在JDK1.5之后已无用) -

2020-11-02 23:37:21 1571

原创 JVM调优必备理论知识-GCCollector

目录准备知识:一、常用的垃圾回收算法一)Mark-Sweep(标记清楚算法)二)Copying(拷贝算法)三)Mark-Compact(标记压缩)二、常用的垃圾回收器准备知识:存活性分析(怎么找到垃圾):1.Reference Count引用计数对象被引用,计数器加一,如果数值减到0,就判断这个对象是垃圾,可以被回收。Objective-C使用这种方式 图1-12.Root Searching根可达算法像(图1-2...

2020-10-26 23:50:50 212

原创 验证Intel CPU的指令重排序(乱序执行),及volatile的禁止指令重排序功能

在接触多线程的过程中,都会接触到volitile关键字,作用是禁止cpu指令重排序,和保证线程间的可见性。如何验证cpu存在指令重排序的呢?国外有个哥们用C做过实验,这里用java做一次https://preshing.com/20120515/memory-reordering-caught-in-the-act//** * 测试cpu的指令重排序功能(乱序执行) * @author Administrator */public class ThreadVolitile {

2020-09-19 12:25:44 1035 2

原创 rancher对容器进行SSH连接,并修改Linux容器连接密码

1.添加服务,选择镜像,在命令中添加/usr/sbin/sshd -D2.在容器中选择执行命令行3.进入到熟悉的Linux界面后,通过paaswd命令修改密码4.修改后,用ssh服务的IP和更改后的密码登录

2020-09-04 14:30:30 760

原创 jdk1.8中stream的常用Api使用记录

Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。 数据源流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。 聚合操作类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等。和以前的Collection操作不同, Stream操作还有两个基础的特征:Pipelining: 中间操作都会返回流对象本..

2020-08-22 22:23:30 364 1

原创 又一次因为Oracle增加带默认值的字段引起的问题

生产上随着需求和版本的更迭,经常会出现增加字段的情况。操作很简单:alter table 表名 add 字段 类型 (长度);本身并没有什么问题。但是如果加的字段有默认值的话,就变成这样:alter table 表名 add 字段 类型 (长度)default ‘0’;如果这个字段不作为筛选条件也没什么问题,but一旦这个默认值是查询的条件,那在增加这个字段前的记录就会因为这个字段是null查不到。也就是说,虽然这个字段默认值是0 ,但是已经存在的记录并不会设置成0,..

2020-08-20 22:41:35 1107

原创 Oracle数据库生僻字入库之后乱码问题

之前处理过一次Oracle数据库的乱码问题,后来系统升级成微服务,数据库管理员那边做的新库,由于测试环境录入的都是非生僻字,最近才由测试发现,在测试环境又出现了生僻字乱码问题。处理方案:1.查询当前数据库的编码格式select userenv('language') from dual;2.修改当前server的编码格式为ZHS32GB18030在数据库服务器上,以dba权限进入数据库sqlplus / as sysdba关闭数据库SHUTDOWN IMMEDIATE;以独占方.

2020-08-18 20:31:24 1817

原创 oracle增加表字段、修改表字段、删除表字段

增加表字段alter table 表名add字段名数据类型(长度)default默认值 是否为空;例如:alter tableemp addnamevarchar2(50) default '张三';alter tableemp addnamevarchar2(50) default '张三' not null;修改表字段alter table表名modify字段名 字段类型默认值 是否为空;例如:alter tableemp modify...

2020-08-17 16:20:49 1348

原创 Spring boot热部署导致的Druid dataSorce already closed at xxxxx

服务里有使用kafka做消费者,前不久因为总是重启麻烦,就在pom里加了热部署的包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtoos</artifactId> <scope>runtime</scope></dependency>自动编译之后,一旦...

2020-08-10 21:43:44 9686 6

原创 数据结构和算法 计数排序

原理:计数排序(Counting sort)是一种稳定的线性时间排序算法。该算法于1954年由 Harold H. Seward 提出。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。图解:代码实现:代码git地址https://github.com/baochunhai/data-structure-algorithms.git/** * 计数排序,非比较排序 * 对样本内容有要...

2020-08-06 00:01:02 123

原创 oracle通过between and做时间筛选

项目中时间普遍都是通过日期筛选,但是数据库中存储的日期是Date类型,精确到秒。当查询条件如下时,因为处理的粗心,就会查询出错查询条件 select * from table where date between sysdate and sysdate;实际查询的时间是2020年8月5日14:01:50 -2020年8月5日14:01:57而不是8月5日当天的时间对时间坐下简单处理,把查询范围设置成 2020-8-5 00:00:00 - 2020-8-6 00:00:00...

2020-08-05 14:04:59 8842 2

原创 数据结构和算法 堆排序

原理:堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。若以升序排序说明,把数组转换成最大堆(Max-Heap Heap),这是一种满足最大堆性质(Max-Heap Property)的二叉树:对于除了根之外的每个节点i, A[parent(i)] ≥ A[i]。重复从最大堆取出数值最大的结点(把根结点和最后一个结点交换,把交换后的最后一个结点移出堆),并让残余的堆维持

2020-08-04 23:52:45 136

原创 数据结构和算法 快速排序

原理:又称分区交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要O(nlog n)(大O符号)次比较。在最坏状况下则需要 O(n^2)次比较,但这种状况并不常见。事实上,快速排序O(nlog n)通常明显比其他算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地达成。快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地

2020-08-03 22:43:51 135

原创 数据结构和算法 归并排序

原理:是创建在归并操作上的一种有效的排序算法,效率为O(nlog n)(大O符号)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。分割:递归地把当前序列平均分割成两半。 集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并)。递归法(Top-down)申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初位置分别为两个已经排序序列的起始位置 比较

2020-07-28 23:16:26 117

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除