Java编程之路
文章平均质量分 68
分享java相关知识
饭一碗
Java工程师
展开
-
(转)深拷贝与浅拷贝详解
1.拷贝的引入(1)引用拷贝创建一个指向对象的引用变量的拷贝。例1:转载 2021-05-29 12:20:20 · 821 阅读 · 0 评论 -
接口幂等性设计的简单思考
幂等性场景接口重试:服务A调用服务B,B由于某些原因未在指定时间内返回响应,出于容错性考虑服务A进行多次重试,服务B接口未做幂等性设置,影响业务数据; 表单重复提交:用户注册接口,用户很激动,瞬时点击多次造成表单重复提交,造成同一用户注册多次; 请求重发:网络抖动引发的nginx重发请求,造成重复调用; 消息重复消费:例如kafka的"再均衡"造成消息重复消费,影响业务数据;幂等性含义从数学的角度来看,幂等性表示为f(f(x))=f(x),即x经过同一函数多次计算和一次计算的效果相同,从程序原创 2021-02-23 22:51:06 · 1017 阅读 · 0 评论 -
解决Kafka消费端错误:o.s.kafka.listener.LoggingErrorHandler : Error while processing: null
简单记录下使用kafka遇到的问题,万一也会有小伙伴遇到了呢。程序端使用springboot服务消费kafka,某天出现消息大量堆积,经过定位到错误日志如下:2020-05-12 10:22:36.500 ERROR 5171 --- [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] o.s.kafka.listener.LoggingErrorHandler : Error while processing:原创 2020-05-12 12:06:41 · 10584 阅读 · 0 评论 -
CopyOnWriteArrayLis简单使用
背景Collections.synchronizedList()、Vector虽然线程安全,但是使用的synchronized锁实现,锁粒度较粗,且迭代时候不允许修改,否则会抛出异常,鉴于这种情况,java.util.concurrent包下提供了CopyOnWriteArrayList、CopyOnWriteSet一类的并发集合,本文以CopyOnWriteArrayList为例,简单聊聊这...原创 2020-03-24 18:11:23 · 1228 阅读 · 1 评论 -
优雅的替换if-else语句
场景日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段:优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...原创 2020-03-18 23:09:30 · 28781 阅读 · 33 评论 -
RestTemplate调用post方式接口
场景~我的服务是应用层,要调用其它项目组的搜索接口,接口访问方式是HTTP POST,搜索接口中用了@RequestBody注解修饰入参,希望接收到的参数格式为:按照正常思路,噌噌噌的写了如下代码:HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON_U...原创 2020-03-18 22:03:26 · 3444 阅读 · 1 评论 -
java中的final关键字
Centos7+VMware10+jdk1.8.0+Hadoop2.2.0搭建伪分布式服务器原创 2017-04-01 17:16:41 · 678 阅读 · 0 评论 -
Java中的共享锁和排他锁(以读写锁ReentrantReadWriteLock为例)
重要声明:本人之前对java中的读写锁也不是非常了解,用的也不是很多,尤其在读写锁的策略原理一块没有深究过,本篇文章是在学习【玩转Java并发工具,精通JUC,成为并发多面手】课程后写的,故文章类型选择为"转载",因为本文的很多结论都是来自于那门课程,请知悉~。希望对各位同仁有帮助~读写锁的基本使用在【ReentrantLock锁详解】一文中讲到了java中锁的划分,本篇主要讲述共享锁和...转载 2020-02-14 16:11:41 · 4937 阅读 · 1 评论 -
CAS原理详解
本文包含知识点CAS是什么? CAS应用场景及原理 CAS的不足1.CAS是什么?CAS是Compare And Swap的缩写,比较并更新,是非阻塞同步的实现原理,它是CPU硬件层面的一种指令,从CPU层面能保证"比较并更新"两个操作的原子性。CAS指令操作包括三个参数:内存值(内存地址值)V、预期值A、新值B,当CAS指令执行时,当且仅当预期值A和内存值V相同时,才更新内存值...原创 2020-02-12 22:46:20 · 1757 阅读 · 0 评论 -
ThreadLocal类(线程本地存储)详解
本文包含知识点ThreadLocal是什么? ThreadLocal使用场景 ThreadLocal的具体使用 ThreadLocal注意事项1.ThreadLocal是什么?从广义上来说实现线程安全的方式包括:互斥同步、非阻塞同步、无同步方案三种,ThreadLocal就属于无同步方案中的一种。ThreadLocal被称为线程本地存储,顾名思义就将共享的数据存储到每个线程本...原创 2020-02-11 13:07:09 · 4360 阅读 · 4 评论 -
记录一次pre环境OOM异常解决过程
问题发现部署在客户机器上的程序经常发生OOM异常:java.lang.OutOfMemoryError: GC overhead limit exceeded。初步排查1、系统本身代码问题;2、系统大量调用了第三方接口http超时或者被第三方服务超量调用;3、机器问题;这个程序的主要作用就是拉取kafka里的消息落地到mysql,外加两个kafka消息写入及堆积的监控接口,不涉及到被其...原创 2020-01-10 14:04:06 · 3686 阅读 · 2 评论 -
面试时如何做自我介绍?聪明的应聘者只聚焦1点
最近帮其它项目组同事面试了几位java后端开发人员,发现他们刚开始的自我介绍一段都非常的不理想,扯了半天完全没有主次重点,然后想起之前收藏的这篇文章,觉得很有必要分享给在或即将踏上求职路上的你。重要声明:本文转自微信公众号:Yangongzi2015自我介绍通常是面试过程中的第一个问题,它非常关键,直接影响了面试官对你的第一印象。那么,自我介绍时,面试官到底想要听什么?容易犯哪几个误区...转载 2019-11-07 18:29:09 · 3277 阅读 · 0 评论 -
java后端面试总结
重要声明:本文转自https://www.cnblogs.com/JavaArchitect/p/10011253.html 在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面的。 我也知道,不少候选人能力其实不差,但面试时没准备...转载 2019-01-25 15:49:36 · 5315 阅读 · 5 评论 -
策略模式详解
策略模式核心点: 把每个核心方法逻辑抽象封装出来,使得程序调用结构更加灵活和扩展。典型应用就是用来替换程序中过多的if else分支结构。当程序逻辑分支很多时,我们会选择if else语句或switch case语句来切分,但是这样的结果往往是程序难以维护,例如下面一段代码,是根据价格包pricecode来区分给用户赠送哪些权益类型:原来的if else嵌套结构可以看到,一个充值方法...原创 2019-01-22 10:31:17 · 658 阅读 · 0 评论 -
使用Quartz实现定时任务(包含管理界面)
引言年底出去面试的的时候,被问到如下问题: 定时任务是如何实现的?定时任务是如何监控的?因为我们项目中的定时任务就是使用Spring的@Scheduled(cron = "0 59 23 * * ?")来实现的,至于监控方面的,没有,就是通过在定时任务代码里面打一些日志,特别重要的定时任务,失败了额外发个邮件通知下,人工补偿。然后他又问了下现在需要重构定时任务,你有没有什么想法?然后我就简单的...原创 2019-01-01 18:43:34 · 25466 阅读 · 31 评论 -
Java中的static关键字解析(转载)
重要声明: 本文转自https://www.cnblogs.com/dolphin0520/p/3799052.htmlstatic关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲: ...转载 2018-12-20 17:04:03 · 275 阅读 · 0 评论 -
高并发秒杀功能架构设计
本文包含的知识点秒杀场景简述及分析 使用乐观锁控制库存数量 结合redis缓存层减小DB压力 使用zookeeper分布式锁控制库存数量 kafka异步削峰 接口限流 jmeter压测接口前阵子经常开发一些秒杀/抽奖类型的项目,故而抽时间总结下。把我们产品的流程图大致勾勒了下:项目中的秒杀逻辑简图秒杀一类项目有一些公共的特点:秒杀开始时并发流量瞬间增大 秒...原创 2018-12-18 23:09:34 · 5968 阅读 · 17 评论 -
使用Java VisualVM监控远程Tomcat
本文出处:https://blog.csdn.net/arkblue/article/details/6229637,在原文基础上做了部分修改。作用:JVM和监控的应用程序运行在不同的服务器上,减轻应用程序的负担,特别是HeapDupm的时候,应用常能够续负担很大。1、为 10.87.40.141 上的 tomcat 配置 jvm 启动参数。在 tomcat 的 catalina.sh ...转载 2018-12-14 11:12:28 · 1618 阅读 · 0 评论 -
springboot中连接kafka失败问题
重要申明:本文转自https://blog.csdn.net/maoyuanming0806/article/details/80553632?utm_source=copy 记录使用kafka遇到的问题:- 1.Caused by java.nio.channels.UnresolvedAddressException null- 2.org.apache.kafka.common.e...转载 2018-09-27 17:43:35 · 16406 阅读 · 1 评论 -
java接口防止XSS攻击的常用方法总结
在前面的一篇文章中,讲到了java web应用程序防止 csrf 攻击的方法,参考这里 java网页程序采用 spring 防止 csrf 攻击. ,但这只是攻击的一种方式,还有其他方式,比如今天要记录的 XSS 攻击, XSS 攻击的专业解释,可以在网上搜索一下,参考百度百科的解释 http://baike.baidu.com/view/2161269.htm, 但在实际的应用中如何去防止这种攻...转载 2018-08-16 10:46:38 · 13291 阅读 · 1 评论 -
Java项目中使用log记录日志的一些总结
重要申明:本文转自https://www.imooc.com/article/21178本文介绍了一下自己在Java项目中使用log的一些总结,从日志的作用、日志的选用、日志级别介绍、日志记录的一些最佳实践几个方面阐述。日志的作用主要作用包括:1、出问题后定位当时问题2、显示程序当前运行状态日志的选用Java里存在众多的开源日志框架: slf4j, logback, log4j, JCL(Apac...转载 2018-07-06 15:42:21 · 2427 阅读 · 0 评论 -
解决:Invalid character found in method name. HTTP method names must be tokens
养成的一个好习惯是,每天早上到公司后都会查看项目日志,看看有无异常数据信息等,今天忽然发现日志中抛了个这个错误(此服务器上安装的是Tomcat8):06-Jul-2018 03:10:34.029 INFO [http-nio-8080-exec-6] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP re...原创 2018-07-06 13:35:40 · 63542 阅读 · 2 评论 -
Tomcat内核、集群、参数及性能
本文转载自https://blog.csdn.net/wangyangzhizhou/article/details/79147877主题简介:内核实现原理分布式集群生产部署关键参数性能监控和分析一、内核实现原理HTTPWeb服务器与浏览器之间以HTTP协议通信,浏览器要访问服务器即向服务器发送HTTP请求报文。如图,此处用get方法访问了localhost的8080端口的Web、Index、JS...转载 2018-07-02 22:32:26 · 811 阅读 · 0 评论 -
解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
mvn clean package -Dmaven.test.skip=true今天项目用maven命令打包时候抛出错误:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project springbootdemo: Fata...原创 2018-06-30 14:22:42 · 650954 阅读 · 40 评论 -
解决javac错误:编码GBK的不可映射字符
今天在DOS窗口用javac命令编译OutterClass.java文件时,报错错误:编码GBK的不可映射字符public class OutterClass { private static int code; private String name; public class InnerClass{ /* 静态内部类的内部可以存在static元素 */ ...原创 2018-05-23 20:36:35 · 3125 阅读 · 3 评论 -
ReentrantLock锁详解
开发中有时需要向别人演示你的本地项目、微信开发时每次修改测试都需要发版……内网穿透可以简化这些问题,ngrok或natapp都可以,natapp官网在这边:http://natapp.cn可以申请免费的使用,也可以搭建ngrok方便大家使用,本篇讲述的是免安装版的ngrok.1、下载ngrok压缩包并解压,点这里2、进入并在此目录下按住shift键,进入此目录下的dos窗口3、执行...原创 2018-12-20 18:04:34 · 1957 阅读 · 0 评论 -
SecureCRT信号灯超时时间已到
SecureCRT软件一段时间没写入命令后就报信号灯超时时间已到,断开了session连接,之前没理会,一直以为是跳板机的某种自动识别机制导致的,今天查资料看了下,解决方案如下Options 》 Session Options 》 Terminal 》勾选Send protocol NO-OP...原创 2018-04-11 18:05:22 · 17800 阅读 · 1 评论 -
java中instanceof用法
java中instanceof用法转载 2017-11-28 17:21:33 · 1032 阅读 · 0 评论 -
数字签名算法RSA
文章转自:http://blog.csdn.net/kongqz/article/details/6305548一、概述1、数字签名算法可以看做是一个带有密钥的消息摘要算法,并且这个密钥包括了公钥和私钥。他是非对称加密算法和消息摘要算法的结合体2、数字签名算法是公钥基础设施(PKI),以及许多网络安全机制的基础3、数字签名算法有抗否认的作用4、遵循“私钥转载 2017-12-18 10:54:35 · 993 阅读 · 0 评论 -
QPS从0到4000请求每秒,谈达达后台架构演化之路
文章转自:http://www.infoq.com/cn/articles/imdada-high-performance-server-optimization业务场景达达是全国领先的最后三公里物流配送平台。 达达的业务模式与滴滴以及Uber很相似,以众包的方式利用社会闲散人力资源,解决O2O最后三公里即时性配送难题。 达达业务主要包含两部分:商家发单,配送员接单配送,如转载 2017-12-11 16:51:00 · 1699 阅读 · 0 评论 -
secrurecrt experenced a fatal error and must close.A crash dump file has been created in
前两天,由于机子上SecureCRT是英文版本,无法显示汉语,在网上下了个绿色汉化版的。然后将英文版删除。结果在使用汉化版是提示错误:SecureCRT experienced a fatal error and must close.A crash dump file has been created in:‘ C:\\*** ’.汉语为 SecureCRT 遇到一个致命的错误且必须关闭转载 2017-11-30 14:25:26 · 1010 阅读 · 0 评论 -
nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
项目中使用的mybatis执行SQL后报错:nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)本人项目中使用到的mybatis的逆向生成工具类在单独的一个项目中(因为项目生产环境中非常不建议将mybatis-generator集成到业务项目中...原创 2017-11-01 20:07:35 · 1348 阅读 · 0 评论 -
Zookeeper分布式锁实现
一、锁设计 获取锁实现思路:1. 首先创建一个作为锁目录(znode),通常用它来描述锁定的实体,称为:/lock_node2. 希望获得锁的客户端在锁目录下创建znode,作为锁/lock_node的子节点,并且节点类型为有序临时节点(EPHEMERAL_SEQUENTIAL);例如:有两个客户端创建znode,分别为/lock_node/lock-1和/lock_node转载 2017-11-01 16:47:50 · 729 阅读 · 0 评论 -
多线程间共享对象和数据方式
(一)若每个线程执行的代码相同,可以用同一个Runnable对象,Runnable里面有共享的对象和数据,例如卖票系统,5个线程共同卖100张票public class ThreadTest2 { public static void main(String[] args) { ShareTicket shareTicket=new ShareTicket(); new Th原创 2017-04-12 12:33:00 · 2655 阅读 · 0 评论 -
线程范围内共享数据(一)
Java开发过程中,若单个线程需要在多个对象与模块中访问同一个变量,则通过静态变量就可以实现,那么问题来了,当存在多个线程,多个对象与模块去访问同一变量时,就不行了。例如public class ThreadShare { private static int data = 0; public static void main(String[] args) { for(int原创 2017-04-10 18:54:17 · 542 阅读 · 0 评论 -
线程范围内共享数据(二)
本篇讲述通过ThreadLocal类来实现线程范围内共享数据代码如下:public class ThreadLocalShare { private static ThreadLocal threadLocal=new ThreadLocal(); public static void main(String[] args) { for(int i=0;i<2;i+原创 2017-04-10 20:14:18 · 358 阅读 · 0 评论 -
Java的自旋锁
Java线程原创 2017-04-09 20:44:06 · 451 阅读 · 0 评论 -
java list和map的初始化
项目中经常需要使用到ArrayList、HashMap集合的初始化操作,下面分享几种ArrayList实例化的方法,都是项目中实际用到的,方法二、三同样适用于HashMap等其他常用的集合类方法一:普通版 List<String> list = new ArrayList<String>(); list.add("a"); Map<S...原创 2019-01-29 16:53:00 · 3412 阅读 · 2 评论 -
简单工厂与抽象工厂模式
平时写项目里的代码,分层一般都是:持久层 》业务层 》表现层,业务层里一般的形式就是:接口api 》 接口api实现类,即public interface Sender {……}public class BossSender implements Sender {……}@Autowiredprivate Sender sender;你肯定也这样写过,那么结合标题:简单工厂模式来看...原创 2018-12-10 23:02:39 · 294 阅读 · 0 评论 -
nginx实现静态资源代理、动静分离、代理服务(负载均衡)
Nginx是什么?开源且高性能、可靠的HTTP中间件、代理服务。类似于nginx的?HTTPD-apache基金会、IIS-微软、GWS-Google为什么使用nginx? IO多路复用epoll 轻量级(功能模块少、代码模块化) CPU亲和:把CPU核心和nginx工作进程绑定的方式,把每个worker进程固定在一个cpu上执行,以获取最好的性能 ...原创 2018-10-24 18:19:46 · 14294 阅读 · 0 评论