
JAVA
文章平均质量分 55
拉丁解牛说技术
大道至简、行胜于言。坚持实用至上,擅长结合大厂生产实践案例,持续专注分享互联网金融技术架构实战经验。
展开
-
java常见的几种并发安全问题及解决方案
并发的应用场景,在开发过程会经常遇到,服务应用启动后,需要简单统计接口的总访问量;实时更新订单状态,成交总额,在多线程并发下可能会存在并发问题,如何解决呢?原创 2025-03-06 22:01:22 · 446 阅读 · 0 评论 -
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
这样配置后,日常堆栈打印效果是这样的,报错输出的堆栈,没有携带trace_id信息,这样在做日志筛查时候,非常不方便。不能快速定位异常代码位置。在日常项目开发中,我们会自定义一个traceId方便,链路追踪。在log4j2.xml 我们可能是这样去配置日志打印格式。我们可以通过%xthrowable 配合{suffix(pattern)}使用,在每个堆栈帧的末尾添加trace_id输出。添加后,验证效果,堆栈信息末尾都添加了traceId。原创 2024-09-05 16:40:56 · 774 阅读 · 0 评论 -
监控你的java程序服务
当我们JAVA开发工程师开发一个服务或系统后,我们想监控JVM里面的各种资源情况,实现可视化和告警。可以使用prometheus+ grafana去做。环境系统:CentOS 7.5软件:jmx_prometheus_javaagent-0.3.1.jar客户端 下载jmx_exporter # mkdir -p /usr/local/prometheu...转载 2018-11-28 11:11:23 · 1162 阅读 · 0 评论 -
JVM垃圾回收器 CMS和G1的区别
转自:https://www.cnblogs.com/rgever/p/9534857.htmlCMS:以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现过程:1、初始标记:独占PUC,仅标记GCroots能直接关联的对象2、并发标记:可以和用户线程并行执行,标记所有可达对象3、重新标记:独占CPU(STW),对并发标记阶段用户线程运行产生的垃圾对象进行标记修正...转载 2018-12-25 17:18:50 · 2058 阅读 · 0 评论 -
Java中的时间与时区__java
转:https://yq.aliyun.com/ziliao/245667 摘要: 本文讲的是Java中的时间与时区__java, 0. 前言: 时间格式: //世界标准时间,其中T表示时分秒的开始(或者日期与时间的间隔),Z表示这是一个世界标准时间 2017-12-13T01:47:07.081Z //本地时间,也叫不含时区信息的时间。时间格式://世界标准时间,...转载 2019-01-11 14:21:53 · 4295 阅读 · 0 评论 -
junit使用
常用几个方法,assertTrue()、assertFalse()、assertEqual()、还有抛出的异常@Test(expected= 异常类.class)。还有几个常用注解,@Before、@BeforeClass、@After、@AfterClass、@PrepareForTest、@Test等。下面具体介绍,fail()用法。摘自//www.cnblogs.co...原创 2019-03-06 20:56:20 · 348 阅读 · 0 评论 -
powermockito的使用技巧
当IT中有些依赖组件无法正常集成,需要mock支持测试,可以使用power mockito。特别注意: 当对一个对象进行powermockito,应该在prepare方法,统一mock这个对象。然后在其他方法,分别进行调用when,否则,多个方法内进行mock,会出错。比如有个 Service处于IT case的底层,普通的mock根本mock不进去,但我们又不能为了集...原创 2019-03-06 21:00:09 · 2539 阅读 · 0 评论 -
有序二叉树层次遍历
遍历有序二叉树,顺序输出每一层node 的data。 比如二叉树 6 3 91 5 7 10打印输出就是,6,3,9,1,5,7,10。这个利用队列实现非常高效。package dayscode;import java.util.LinkedList;import j...原创 2018-08-22 11:59:44 · 273 阅读 · 0 评论 -
判断一个整数是否为素数算法
素数:n%i==0,那就可以判断n是非素数。算法的复杂度,依赖i的取值范围,如果是2~n那就是O(N)。如果是2~sqrt(N),复杂度就是O(sqrt(N))。 package dayscode;import java.util.Scanner;/** * 判断是否为素数,也就是一个整数只能被1和自己整除。1不是素数 */public class Prime { ...原创 2018-08-22 17:45:16 · 4212 阅读 · 0 评论 -
两数相加-一看就懂,非常详细code解法解释
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807解法: ...原创 2018-08-27 11:41:34 · 486 阅读 · 0 评论 -
leetcode 两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法: 该实现时间复杂度是O(N),空间复杂度为O(N). *依赖hashM...原创 2018-08-27 13:33:53 · 353 阅读 · 0 评论 -
java文档注释添加url链接和class跳转链接
@link 语法{@link package.class#member label}为文档注释添加url链接可以使用@see,记得,@see前面必须是*注释,否则无法正常使用。@see <a href="http://www.luo.com">luo.com</a>...原创 2018-09-01 13:21:45 · 14953 阅读 · 0 评论 -
Java中字符串indexof() 、subString(x),subString(x,y)的用法
这两个方法,尤其是字符串截取,经常忘记。记录一下。 indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。 subString(x,y)和subString(x)的区别 str=str.substring(int beginIndex,int endIndex);中最终得到的值 beginIndex ...原创 2018-09-02 12:15:32 · 785 阅读 · 0 评论 -
JDK 8 foreach的用法
forEach forEach 方法接收一个 Lambda 表达式,然后在 Stream 的每一个元素上执行该表达式。清单 打印姓名(forEach 和 pre-java8 的对比) 1 2 3 4 5 6 7 8 9 10 // Java 8 roster.stre...原创 2018-09-05 15:44:41 · 15681 阅读 · 0 评论 -
官方翻译 Java 8的新特性—完整版
转载自:https://www.jianshu.com/p/5b800057f2d8声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自己翻译了一版(写作驱动学习,加深印象),有些地方参考了该同学的。Java 8前言: Java ...转载 2018-10-12 17:27:44 · 293 阅读 · 0 评论 -
JVM加载类class文件的原理机制
JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。 由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是...原创 2018-10-15 22:35:00 · 546 阅读 · 0 评论 -
JVM GC算法和过程
GC回收算法1、标记清除算法(Mark-Sweep算法) 先标记然后删除,这个算法效率不高。而且容易导致内存碎片多,难以找到连续足够大的内存片供使用。2、复制算法(Copying) 将内存分为两块,一块是在使用的。这块使用到一定程度,开始回收。将里面还活着的对象复制到另一半中。让后清理整半块内存。缺点就是内存利用率不高,只有一半。而且存活对象多时候,复...原创 2018-10-15 22:40:08 · 299 阅读 · 0 评论 -
深入理解Java 类加载机制(阿里面试题)
转载:https://www.cnblogs.com/aspirant/p/7200523.html(1)阿里的面试官问我,可以不可以自己写个String类答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了;(2)能否在加载类的时候,对类的字节码进行修改答案:可以,使用Java探针技术,可以参考:Java探针-Java Agent技术...转载 2018-10-16 09:23:03 · 1140 阅读 · 0 评论 -
新建有序二叉树BST、求树的最大深度或高度
新建有序二叉树,left node 小于等于root,right node 大于等于root。并求二叉树的树高。package dayscode;import java.util.Scanner;/** * 插入new node到有序二叉树,获取二叉树最大树高 */public class BSTHeight { static class Node { ...原创 2018-08-22 11:16:18 · 1819 阅读 · 0 评论