自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 论坛 (1)

原创 BigDecimal的equals方法

BigDecimal作为浮点数据的一个处理对象,在平时用的挺多,但是今天才注意到它的equals方法有特殊的地方。equals方法是需要比较数值的精度的。 BigDecimal b_1 = new BigDecimal("1");//精度0 BigDecimal b_2 = new BigDecimal("1.0");//精度1 System.out.println(b_1.equals(b_2));//false BigDeci

2020-09-30 16:55:36 7

原创 Python中使用with优美的释放资源

Python中有和jdk7中的资源释放语法糖,可以优美的释放资源流程import mysql.connector as connclass DBUtil: def __init__(self, host, user, passwd, database): self.db = conn.connect(host=host, user=user, passwd=passwd, database=database) # with定义完成 def __enter

2020-09-04 17:15:22 80

原创 Python的序列解包

Python的序列解包是一种语法糖,很实用,在函数返回多个值的时候使用尤为方便def test_two_res(): n = 2 m = 3 return n,mn,m = test_two_res()print(n,m) #2 3n,m,*c = "zhangsan"print(n,m,c) #z h ['a', 'n', 'g', 's', 'a', 'n']...

2020-09-04 16:26:27 40

原创 Python批量插入数据

Python批量插入数据到mysql中,相较于jdbc,简化了长度。import mysql.connector as conndef __getConn(): db = conn.connect( host="localhost", user="root", passwd="root", database="test" ) return dbdef insertBatch(db): cur =

2020-09-04 15:41:36 69

原创 Python中的a, b = b, a + b的理解

a, b = 0, 1a, b = b, a + b可以这么理解:先将等号右边的进行计算,得到的值再赋值所以结果a = 1 b = 1这个与 a = b ; b = a + b的结果是不一样的

2020-08-28 16:54:35 29

原创 SQL中的WITH AS

在Oracle和TDH中可以使用with as语法,将子查询结果进行抽取,达到提高可读性和复用的效果。mysql中没有这个语法。 WITH A AS (SELECT * FROM USER WHERE AGE > 20), B AS (SELECT * FROM USER_SCORE ) SELECT A.ID,A.NAME,B.SCORE FROM A LEFT JOIN B ON A.UID = B.UID这是一个很简单的用法。但是在TDH环境下需要注意,Oracle没有下面的

2020-08-26 17:10:08 24

原创 Oracle的row_number函数的使用

Oracle提供的row_number()函数可以实现加rownum的作用,并且可以根据字段值的分类,在同类中进行排序SELECT id,NAME,class_id,score,row_number() OVER (PARTITION BY class_id ORDER BY score DESC )FROM STUDENT将学生表中将每个年级的学生成绩进行排名其中PARTITION BY后可以接多个字段进行分类over中还可以只有order by 就实现了rownum的效果...

2020-08-07 15:31:48 37

原创 Oracle表空间中指定表占用大小

在此记录一个可能不怎么用得到的一个SQL,查询指定Oracle的表在表空间中占用的大小。SELECT segment_name AS TABLENAME, BYTES B, BYTES / 1024 KB, BYTES / 1024 / 1024 MBFROM user_segmentsWHERE segment_name = '表名'...

2020-08-07 14:30:41 29

原创 mybatis中jdbcType的使用

mybatis-plus中注入参数有#{}和${},一般情况下使用预编译的#{}方式,能避免SQL注入问题。在Oracle数据库场景下,mybatis如果参数是null可能出现报错的情况。有2种解决方式:1、在mybatis的xml中在#{}中标记数据类型eg: #{bo.age,jdbcType=DECIMAL}2、在mybatis-plus的配置中做配置mybatis-plus: configuration: jdbc-type-for-null: 'n

2020-08-07 10:43:56 30

原创 java导出动态表头的CSV文件

CSV相较于xlsx在导出大数据量+字段多的场景下速度更快!本地测试导出30万条数据,CSV比xlsx快20秒+。不过当数据量小或字段少(2个字段)这种情况下使用CSV并没有明显的优势,并且由于CSV存储相同数据占用的磁盘大小比xlsx的大得多(差不多一倍),在网络传输较为频繁的场景也不适合使用CSV。以下为动态导出CSV的功能代码,表头不固定。pom <dependency> <groupId>org.apac

2020-08-05 22:33:47 112

原创 PostgreSQL查询表主键及注释内容

网上关于pgSql获取表主键的内容都是千篇一律,并且对于存在多主键的场景不支持。附上测试后可获取多个主键字段值的SQLSELECT string_agg(DISTINCT t3.attname,',') AS primaryKeyColumn ,t4.tablename AS tableName , string_agg(cast(obj_description(relfilenode,'pg_class') as varchar),'') as commentFROM pg

2020-07-31 18:19:24 119

原创 Enhancer的简单实践

需求:对指定类的方法做代理。可以使用Proxy+InvocationHandler实现,但是如果代理类没有父接口的情况下,如何快速实现?spring的cglib下提供的Enhancer可以快速实现对某个类的所有实例方法(除final)进行代理。public static void main(String[] args) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(MyHandler

2020-07-08 17:10:12 50

原创 增强for循环(foreach)在数组和集合中的不同实现原理

我认为foreach是一种语法糖,简化遍历的代码,实际编译之后是另外实现形式。数组:数组的foreach是通过普通for循环实现的 int[] arr = {1,2,3}; for (int i : arr) { System.out.println(i); } String[] arr2 = {"ss","sa"}; for (String s : arr2) {

2020-07-06 19:13:36 47

原创 xshell修改终端字符编码

在此记录一下关于xshell工具时,针对中文乱码问题的解决方案。例如查看日志,发现有中文乱码,首先查看是否xshell的配置问题。在【文件】-【属性】-【终端】中确认

2020-06-04 09:44:03 646

原创 一种Oracle数据库分页查询优化思路

在项目中需要对一张表进行分页查询,按照常规的分页写法,使用ROWNUM实现了分页,但是随着数据的不断增加,目前达到300万条,并且有CLOB字段,在查询后几页数据时,直接超时。SELECT L4.ID, L4.EXECUTE_TIME FROM ( SELECT * FROM ( SELECT L2.*,ROWNUM ROW_ID FROM (SELECT * from TABLE1 L ORDER BY L.ID DESC )L2 WHERE ROWNUM <=

2020-05-25 23:01:36 66

原创 MAT分析DUMP文件

如何在jvm启动脚本中添加内存溢出自动dump的内容就不赘述了。今天就只关注dump下来的文件如何进行分析,如何找到是哪一块代码出现了问题。使用的工具是MAT第一步:使用MAT打开dump文件第二部:点击Dominator Tree可以看到内存占用比较高的线程有2个第三部:选中需要查看的线程,查看stack第四部:此时显示的就是发生堆栈溢出时的栈信息,并且有占用大小,就能找到对应的代码位置,未截图的部分就是项目中的代码位置了另外还可以查看集合中的元素值,也是在

2020-05-18 17:56:42 819

原创 上传jar包到Nexus——页面方式

在此记录通过页面方式将第三方jar包上传到私服的操作经历:因第三方jar没有pom,需要手动将jar上传到公司私服上。步骤:1、登录nexus,然后选择左侧菜单的upload,其他版本的nexus可能是其他方式上传。2、填写信息,需要注意 “Generate a POM file with these coordinates”需要勾上。3、点击upload,然后就可以在项目中使用maven引入了。...

2020-05-12 09:05:55 650

原创 Oracle存储过程中创建表,报权限不足

项目需要在存储过程中首先判断表是否存在,如果不存在,则创建表。按照普通的存储过程编写完成后,执行却报权限不足(幸好本地跑了一遍,免得被测试屌( ̄ェ ̄;))网上的解决思路有2中:1、给当前用户增大权限2、在存储过程中添加权限说明我采用的第二种方式:CREATE OR REPLACE PROCEDURE DATA_UPDATE_SQLauthid current_user...

2020-04-26 21:05:40 152

原创 Hadoop伪集群搭建实践

环境:CentOS7 1G前期准备:1、4台机器(1master+3slave)虚拟机,为减少放开端口的操作,直接关闭防火墙2、安装java环境,配置环境变量,此处使用JDK83、上传hadoop安装包,此处使用2.7.7版本,解压至/usr/local下下面开始搭建过程:1、修改/usr/local/hadoop-2.7.7/etc/hadoop下的hadoop-env...

2020-04-07 22:38:07 40

原创 leetcode 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]java版解决:获取两数之和为10的下标 public static void...

2020-03-19 11:40:58 23

原创 leetcode 无重复字符的最长子串

给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。给定"bbbbb",最长的子串就是"b",长度是1。给定"pwwkew",最长子串是"wke",长度是3。想了个java版解决方案:将临时字符放在listpublic static void main(S...

2020-03-19 11:38:29 30

原创 Jenkins安装出现离线问题的解决实践

本次采用在centos7上通过war包的方式进行安装,仅用作测试。因为本地网络问题,镜像和官网下载都太慢了。所以采用下载war包,然后java命令启动。在此分享一下war包之前使用Tomcat安装遇到的问题是,在初始化Jenkins时,一直提示处于离线状态该Jenkins实例似乎已离线网上的解决方案,一直找不到default.json的文件所在今天尝试使用jar命令的方式...

2020-02-22 10:12:18 122

原创 MongoDB的字段命名谨慎使用点号

在MongoDB中,字段中的点号 "." 需要谨慎使用。因为在搜索时,点号代表着内涵字段例如:db.testdb.insert({"name":"lisi","T1.field1":"zhangsan"})在保存在MongoDB后还是以字符串“T1.field1”保存。但是在条件搜索的时候却会出现不能根据内含字段进行搜索db.testdb.find({"T1.field1"...

2020-02-15 22:16:00 201

原创 Jmeter Web接口测试

Jmeter使用了一下,还是比较简单的。安装步骤就是下载->解压->启动。需要有JDK8环境。tips:在Jmeter中一个plan下的thread group是一起执行的。1、创建线程组可以设置线程数、间隔时间等信息2、在创建好的thread group 上新建http request defaults可以设置host port...

2020-02-15 12:45:44 32

原创 MongoTemplate的简单实用

实用 MongoTemplate 可实现简单的CRUD。目前简单介绍下新增和分页查询实用springboot2.x1、引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-d...

2020-02-15 11:25:50 47

原创 CentOS7环境单机搭建Mongodb副本集搭建

MongoDB的集群模式有3种,这儿只介绍副本集的搭建。也是在网上找了些资料,进行实践后得到的可行性搭建经历记录。主要参照的网友文章是:https://blog.csdn.net/hsg77/article/details/90645251具体的步骤我就不多说了,我主要对这文章中一些说的不清楚的地方进行说明。1、因是本地虚拟机搭建的,因此只有一台机器。我配置的主节点端口是...

2020-02-15 10:13:51 117

原创 ConcurrentHashMap如何实现线程安全

HashMap在多线程情况下会出现问题:put操作,若是新增一个节点,若进行扩容有几率会发生死循环的问题。而ConcurrentHashMap为了解决这个问题,采用了如下方式:首先贴出源码final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) ...

2020-01-18 20:58:31 46

原创 CompletionService实现多线程任务

使用CompletionService可以简便的实现多线程执行任务后获取结果汇总。//定义线程池ThreadPoolExecutor executor = new ThreadPoolExecutor(5,10,5, TimeUnit.SECONDS, new LinkedBlockingDeque<>());CompletionService<List<Met...

2020-01-15 08:56:05 54

原创 Springboot使用quartz动态添加任务

项目中需要页面动态新增定时任务,还需要进行任务删除的功能。借鉴了其他人的做法。现将设计方式记录如下:1、springboot项目直接依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-qua...

2020-01-13 20:33:38 463

原创 nginx 刷新报404问题 修改nginx配置不生效问题 ——nginx版本问题

项目中采用nginx作为路由中间件,在页面刷新时出现404错误。通过查找资料发现了需要在nginx的配置文件(项目中是放在con.d中)的location / 中使用如下方式location / { root /www/front/build/; #index index.html index.htm; try_fi...

2019-12-17 20:50:23 193

原创 SpringCloud - Gateway入门实践

目前Gateway正在逐渐取代Zuul的地位,相关性能分析就不多说了,不涉及其它组件,只完成路由功能,直接上代码。pml文件:<properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.M3</spring-cloud.version&g...

2019-10-19 12:24:30 285

原创 Java中非静态代码块的使用

针对非静态代码块的调用时机进行分享:非静态代码块在构造方法中执行,因此每次new对象都会执行一次。以下是证明:Java代码:public class Sun{ String name; { System.out.println("非static代码块1"); } static { System.out.printl...

2019-08-13 22:01:45 167

原创 Spring循环依赖的解决办法

当spring初始化时如果遇到循环依赖的问题,可采用set注入方式在xml文件中配置,可解决循环依赖问题。

2019-07-28 21:52:39 70

原创 浅谈Vector、ArrayList、CopyOnWriteArrayList和ConcurrentHashMap

ArrayList应该是用的比较多的一个容器类了,我们都知道这是线程不安全的。与之对应的线程安全的有Vector和CopyOnWriteArrayList。Vector的很多方法的都是使用synchronized修饰方法完成的:public synchronized int lastIndexOf(Object o){....}public synchronized E get(in...

2019-07-26 22:02:19 51

原创 Keepalive + nginx的部署问题

具体安装请另行百(谷)度(歌)。在部署高可用的Keepalive + nginx过程中,也是参照网上的进行安装配置,不过最后却出现如下问题:1、首先假设虚拟IP(VIP)为 100.20.20.20,需要高可用的机器有:100.20.20.1/2,在这2台机器上部署有keepalive + nginx + tomcat。 这儿需要注意的是:VIP的前三位需要与真实IP一致。...

2019-07-26 21:35:35 284

原创 浅谈HashMap与ArrayList的一些区别

1、都是可扩容的容器。 HashMap具有2个关于扩容相关的字段,当容器元素达到threshold后就会进行扩容,而threshold的值与负载因子loadFactor(0.75)有关。 初始容量16,此时threshold = 16 * 0.75 = >12。而每次扩容都是原容量的2倍。 具体扩容的步骤详见源码。int thre...

2019-07-26 21:16:46 101

原创 spring boot 外置tomcat需要8以上

springboot 如果需要使用外置的tomcat,以war包的形式发布,需要确保tomcat的版本是8及以上,否则会报各种莫名其妙的错。严重: Unable to process Jar entry [META-INF/versions/9/module-info.class] from Jar [jar:file:/G:/IDEAWorkSpace/demo/demo1129/targ...

2018-11-29 22:50:34 1221

原创 Spring Data Solr创建动态域报错:org.springframework.data.solr.UncategorizedSolrException

今天在项目中使用Spring Data Solr导入动态域数据报错, 控制台打印错误信息如下:Exception in thread "main" org.springframework.data.solr.UncategorizedSolrException: nested exception is java.lang.NullPointerException at org.spring...

2018-08-15 09:17:08 5856 2

空空如也

idea的根据数据库表生成实体类的Generate POJOS消失了

发表于 2018-07-08 最后回复 2019-09-20

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