java开发日常总结
文章平均质量分 55
平常在开发中遇到的问题记录,和一些功能技巧的总结.
笔墨新城
stay hungry stay foolish(饥渴求知,虚怀若愚)
展开
-
特殊字符校验java
特殊字符校验原创 2022-10-14 16:34:15 · 679 阅读 · 0 评论 -
java stream 操作map根据key或者value排序的实现
java8 使用lambda表达式和Stream APi 实现 list 集合转成map, 根据map的key 排序 和value 排序的实现public class Test02 { public static void main(String[] args) { List<FundBenchMarkInfo> fundBenchMarkList = new ArrayList<>(); fundBenchMarkList.add(new原创 2022-04-12 16:55:58 · 5657 阅读 · 0 评论 -
spring定时任务 cron的含义
1.cron 表达式的定义cron 表达式是一个字符串,该字符串由 6 个空格分为 7 个域,每一个域代表一个时间单位。格式如下: [秒] [分] [时] [日] [月] [周] [年]通常定义 “年” 的部分可以省略,实际常用的由 前六部分组成cron 线上工具 : https://cron.qqe2.com/2.cron 中的通配符, 这里指的是在两个以上的时间点中都执行,如果我们在 “分” 这个域中定义为 8,12,35 ,则表示分别在第 8 分,第 12 分 第 35 分执行该定时任务原创 2021-10-27 15:49:42 · 3567 阅读 · 0 评论 -
系统cpu飙升的原因查询记录
前言自己在项目中需要的一个问题,很常见,如果平时不注意,日常环境运行还OK,但是到了生产环境就出现cpu飙升异常.问题排查首先登录服务器 用 top命令看下那个cpu使用率最高. 找到对应的pid .2.jstat 一个极强的一个VM监控工具;jstat -gcutil pid 可以查看对应该id进程的gc所有状况.3.然后定位到时一段代码 for 循环引起的异常.在for循环中进行字符串拼接 用 String str="_"+name; 用 + 来拼接起来的,循环次数越多,性能指数倍下降原创 2021-04-07 14:48:40 · 284 阅读 · 0 评论 -
怎么判断一个Java类是否是线程安全?有那些角度?
最近遇到一个面试的问题,面试官问我给我一个Java类你怎么判断它是否是线程安全?有那些角度可以判断它是否安全?我当时回答: 我说看 临界资源是否被抢夺,是否用到锁如果这个类在单线程下跑出的结果 和在多线程下跑出的结果 数据一致 就是线程安全。 是否是在线程写的情况下 出现数据不一致 …反正回答的不是太好。然后问我线程安全的角度 ? 当时有点懵逼 回答的不太好…事后我问了一下度娘,觉得以下回答很合理。在此记录。程序次序规则:一个线程内,代码的执行会按照程序书写的顺序管程锁定原则:对同一变量的un原创 2021-03-31 10:21:25 · 2107 阅读 · 1 评论 -
HashMap LinkedHashMap TreeMap 集合的比较
1.有序的Map 集合 LinkedHashMap在开发中,HashMap 集合是我们使用的, 但是它是无序的集合,有时用起来比较痛苦.我们希望 存的顺序是什么,取的时候也是什么顺序. LinkHashMap 就可以满足我们的需求.HashMap//HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。LinkedHashMapLinkedHash原创 2021-03-14 12:33:53 · 285 阅读 · 0 评论 -
jvm调优记录
4)JVM问题排查记录案例JVM服务问题排查 https://blog.csdn.net/jacin1/article/details/44837595次让人难以忘怀的排查频繁Full GC过程 http://caogen81.iteye.com/blog/1513345线上FullGC频繁的排查 https://blog.csdn.net/wilsonpeng3/article/details/70064336/【JVM】线上应用故障排查 https://www.cnblogs.com/Dhous原创 2021-03-12 22:40:54 · 263 阅读 · 0 评论 -
数据结构
数据结构的分类常用的数据结构分类1、数组2、栈3、队列4、链表5、树6、散列表7、堆8、图\/1、数组数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。int[] data = new int[100];data[0] = 1;优点:1、按照索引查询元素速度快2、按照索引遍历数组方便缺点:1、数组的大小固定后就无法扩容了2、数组只能存储一种类型的数原创 2021-01-22 20:42:03 · 88 阅读 · 0 评论 -
volatile 和 sychronized 的区别
基本概念补充一下概念:Java 内存模型中的可见性、原子性和有序性。可见性:可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。**可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。**也就是一个线程修改的结果。另一个线程马上就能看到。比如:用volatile修饰的变量,就会具有可见性。volatile修饰的变量不允原创 2021-01-29 11:40:37 · 403 阅读 · 0 评论 -
JVM调优和一些参数设置的含义
jvm 中一些参数的设置含义原创 2021-01-26 17:56:30 · 541 阅读 · 0 评论 -
MySql数据库的存储引擎 InnoDB 和 MyISAM 去区别 面试题
1: MySql数据库的存储引擎:1.InnoDB(MySQL默认存储引擎 从版本5.5.5开始)支持事务,行级锁,以及外键,拥有高并发处理能力。但是在创建索引和加载数据时,比MyISAM慢。2.MyISAM不支持事务和行级锁。所以速度很快,性能优秀。可以对整张表加锁,支持并发插入,支持全文索引。3.MEMORY支持Hash索引,内存表,Memory引擎将数据存储在内存中,表结构不是存储在内存中的,查询时不需要执行磁盘I/O操作,所以要比MyISAM和InnoDB快很多倍,但是数据库断电或是重原创 2021-01-21 22:10:12 · 184 阅读 · 0 评论 -
递归 算法结构
递归的使用原创 2020-12-12 10:51:36 · 223 阅读 · 0 评论 -
正则替换 字符串含有3种类型的空格 unicode
statement=statement.replaceAll("[\r\n\u00A0\u0020\u3000]+"," ");LOG.info(“去除空格*”+ statement);原创 2020-11-26 18:51:15 · 650 阅读 · 0 评论 -
LinkedList基本使用总结
前言我们都知道 java数据存储重要的四种结构 : 堆栈、队列、数组、链表.这里拓展一下List集合存储数据的结构:数据存储的常用结构:堆栈、队列、数组、链表。1、堆栈:(子弹夹)先进后出(堆栈的入口、出口都是堆栈的顶端位置);存元素为压栈,取元素为弹栈。2、队列:(过安检)先进先出(队列的入口、出口各占一侧)。3、数组(长度不可变):查找元素快(通过索引)、增删元素慢(需要创建新的数组)。4、链表(多个节点之间,通过地址进行连接):查找元素慢(需要通过连接的节点,一次原创 2020-11-22 12:06:56 · 1191 阅读 · 3 评论 -
JVM调优
jvm 内存调优对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。原创 2020-09-15 09:40:10 · 156 阅读 · 0 评论 -
JVM基础
走进JVMjava 源代码是怎么被机器执行的呢?答案是 : java虚拟机.即 Java Vi1tualMachi ,简称 JVM 提供商包括 Sun BEA IBM 等。它 Java平台的基石,解决了硬件和操作系统的相互独立性.不同平台(Windows,Linux和MacOS)的JVM都是不同的,但是他们都提供了相同的接口。虚拟机可以分为系统虚拟机和程序虚拟机。系统虚拟机就是VMware和VirtualBox这一类的,完全是对物理资源的隔离。而Java虚拟机是程序虚拟机,它包含了一组指令集并在运行时原创 2020-08-30 19:19:08 · 135 阅读 · 0 评论 -
java 面试技巧总结
不错的知识点。1、 你用过哪些JVM参数?Xms 堆最小值Xmx 堆最大值Xmn: 新生代容量XX:SurvivorRatio 新生代中Eden与Surivor空间比例Xss 栈容量XX:PermSize 方法区初始容量XX:MaxPermSize 方法区最大容量XX:+PrintGCDetails 收集器日志参数更多请看 链接https://yq.aliyun.com/ar...原创 2019-11-29 09:57:56 · 124 阅读 · 0 评论 -
git 命令总结
git指令总结git add . 把所有的修改 提交到暂存区删除远程分支命令行 : $ git push origin --delete 删除本地分支命令行 : $ git branch -d 1、主分支更新代码查看远程仓库$ git remote -v从远程获取最新版本到本地$ git fetch origin master 的意思是 从远程的origin仓库的mast...原创 2019-04-25 14:44:39 · 141 阅读 · 0 评论 -
查看LINUX进程内存占用情况 和 进程运行的完整路径方法
查看LINUX进程内存占用情况 和 查看进程运行的完整路径方法(1)toptop命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracletop -p 12...原创 2019-01-11 10:04:23 · 561 阅读 · 0 评论 -
JVM虚拟机调优
JVM虚拟机调优一、JVM引言1、JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也叫虚拟计算机。操作系统装入JVM是通过jdk中Java.exe来完成的二、JVM内存结构1、方法区:方法区 (Mthod Area): 也称“永久代(permanent generation)”,“非堆”,用于储存虚拟机加载的类信息,常量,...原创 2019-01-10 10:10:10 · 128 阅读 · 0 评论 -
Hadoop常见知识点总结
Hadoop常见知识点总结前言Hadoop早期衍生自Nutch(Java开源的搜索引擎),早期Nutch构建开源的搜索引擎,同样在少数的机器上同时运行计算任务面临着问题,在这个时候Google发布了GFS和Map Reduce论文。人们参考着这两篇论文中所阐述的思想开始重建Nutch的存储和计算模型。一开始尝试在20台机器的计算和存储,不久人们发现为了满足web服务高扩展性,需要将集群规模扩展...原创 2019-01-04 18:06:40 · 494 阅读 · 0 评论 -
字符串${id}/#{functionId}的正则替换
package com.fl.test;import java.util.HashMap;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;import static java.util.regex.Pattern.compile;/** * @author: fenglei.fl * @date: Created in 2020/11/18 14:23 * @desc原创 2020-11-19 09:09:08 · 433 阅读 · 0 评论 -
ElasticSearch在开发中的使用总结
1.前言项目中需要对较大量的数据进行搜索和分析,所以就E对lasticSearch进行研究在这记录一下.2.ElasticSearch是什么?是一个高可用开源全文检索和分析组件。提供存储服务,搜索服务,大数据准实时分析等。一般用于提供一些提供复杂搜索的应用。基于Lucene的搜索服务器(是一个基于 lucence 可水平扩展的自动化近实时全文搜索服务组件)。基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索原创 2020-10-24 16:16:19 · 486 阅读 · 0 评论 -
字符串(被逗号分隔)与List互转 和 常用集合使用小技巧归纳
前言此篇主要是记录 开发中用到的一下字符串处理的小技巧,处理字符串的方式很多,但就是觉得能不多写代码就不多写,尽量用一些工具类来解决.尽量把代码写的优雅一写.1 以逗号分隔的字符串 转成list// 将逗号分隔的字符串转换为ListString str = "小花,小明,小米";// 1.逗号分隔的字符串-->数组-->listList<String> result = Arrays.asList(str.split(","));// 2.使用Apache Commo原创 2020-09-20 18:24:08 · 4551 阅读 · 0 评论 -
阿里fastjson 转换string/toJsonString出现 会出现$ref 的问题
问题描述:项目中用到了 fastjson ,恰巧在做一个复杂的对象转化,用postman 调用时返回结果正常解析。但是 调用 pop 接口生成blink 任务的时候,里边的格式除出现 $ref 的问题。分析:引用标识说明:“$ref”:”..” 上一级“$ref”:”@” 当前对象,也就是自引用“$ref”:”$” 根对象{"$ref":"../.."} 引用父对象的父对象“$ref”:”$.children.0” 基于路径的引用,相当于root.getChildren().get(0)原创 2020-07-16 09:43:10 · 1615 阅读 · 2 评论 -
lombok常用注解总结
lombok 简介Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。“Boilerplate”是一个术语,用于描述在应用程序的许多部分中很少改动就重复的代码。对Java语言最常见的批评就是在大多数项目中都可以找到这种类型的代码,由于语言本身的局限性而更加严重。龙目岛计划(Project Lombok)旨在通过用简单的注释集代替众多的代码。lombok官网常用的注解@Data//生成get和set (注解原创 2020-05-19 09:46:30 · 618 阅读 · 0 评论 -
mybatis查询解决驼峰字段返回为null的问题
mybatis自定义的SQL语句中,如select语句,如果数据库表的字段为驼峰命名,即如img_address这样的形式,那么select语句执行的结果会变成null。解决办法是在配置文件中加上开启驼峰映射的配置信息。根据配置文件的类型分为以下两种:1.在.properties文件中添加:mybatis.configuration.map-underscore-to-camel-case=...原创 2020-05-08 15:28:21 · 2158 阅读 · 0 评论 -
java采坑总结
一、一些特殊集合1 、把 Array 转换 为 ArrayListList<String> list = Arrays.asList(arr);不能 用这样构造出的list 进行 添加 、删除 操作。但实际上,Arrays.asList() 返回的 ArrayList 并不是 java.util.ArrayList,而是 Arrays 的内部私有类 java.util.A...原创 2020-01-12 20:59:38 · 201 阅读 · 0 评论 -
jdk8新特性lambda表达式和Stream Api的使用总结
lambda 表达式原创 2019-12-25 17:18:03 · 507 阅读 · 2 评论 -
字节、字、bit、byte、 b KB 的关系
字 word字节 byte位 bit字长是指字的长度1字节=8位(1 byte = 8bit)1字=2字节(1 word = 2 byte)一个字节的字长是8一个字的字长为16bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56Kbps、100.0Mbps 等等。Bps 即是Byte per...原创 2019-12-12 15:03:47 · 7360 阅读 · 0 评论 -
索引什么情况下会失效及注意事项
索引失效的场景和注意事项:1、如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引alter table student add index my_index(name, age) // name左边的列, age 右边...原创 2019-11-29 11:11:11 · 1272 阅读 · 0 评论 -
Java 编码规约梳理
线程类1、 线程池的创建不允许使用executes 去创建,而是通过 ThreadPoolTaskExecutor 的方式去创建。https://www.cnblogs.com/bfyq/p/10845700.html原创 2019-11-25 18:09:36 · 123 阅读 · 0 评论 -
tps 、qps、bps、Bps的含义
一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成...原创 2019-07-29 11:38:54 · 14279 阅读 · 0 评论 -
数据库索引创建规则和优缺点
索引的原理:索引的原理大致概括为以空间换时间,数据库在未添加索引的时候进行查询默认的是进行全量搜索,也就是进行全局扫描,有多少条数据就要进行多少次查询,然后找到相匹配的数据就把他放到结果集中,直到全表扫描完。而建立索引之后,会将建立索引的KEY值放在一个n叉树上(BTree)。因为B树的特点就是适合在磁盘等直接存储设备上组织动态查找表,每次以索引进行条件查询时,会去树上根据key值直接进行搜索,...原创 2019-11-23 22:24:07 · 507 阅读 · 0 评论 -
数据库索引和 一些使用 sql语句记录
感觉还不错的参考信息参考 链接 :http://www.yuanrengu.com/index.php/2017-01-13.htmlhttps://www.cnblogs.com/heyonggang/p/6610526.html原创 2019-08-12 18:06:20 · 113 阅读 · 0 评论 -
mybatis 常见问题总结
在 mybatis.xml 中,写分页的时候 的操作 是limit #{page},#{pageSize}要计算总条数,在 代码中要计算 分页 page=(page-1)*pageSize 来传入pagesql 中如果遇到排序 ,排序一定要放到最后,避免sql 出错。mybatis 动态判断 判断不为空 是可以的test 里边只能是动态标识,不能是英文,或是汉字之...原创 2019-08-29 20:40:46 · 527 阅读 · 0 评论 -
throws 和 throw 的区别
throws 和 throw 的区别throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。用在方法声明后面,跟的是异常类名可以跟多个异常类名,用逗号隔开表示抛出异常,由该方法的调用者来处理throws表示出现异常的一种可能性,并不一定会发生这些异常throw:则是用来抛出一个具体的异常类型。用在方法体内,跟的是异常对象名只能抛出一个异常...原创 2019-07-02 11:35:59 · 132 阅读 · 0 评论