java
心雨先生
做一条有理想的咸鱼
展开
-
基于springboot的RestTemplate、okhttp和HttpClient对比
1、HttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。2、RestTemplate: 是 Spring 提供的用于访问Rest服务的客户端, RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。引入jar包:<dependency> <groupId>org.springframework.boot</groupId> <artifactId&g转载 2020-08-24 08:50:36 · 1923 阅读 · 0 评论 -
Spring Boot 集成多个 Kafka
一、配置文件application.ymlspring: kafka: one: bootstrap-servers: IP:PORT consumer: group-id: YOUR_GROUP_ID enable-auto-commit: true two: bootstrap-servers: ...转载 2020-04-13 15:37:32 · 2374 阅读 · 0 评论 -
缓存竟也能导致跨域问题!
业务背景由于页面设计需要,页面展示图片,并可点击下载按钮进行下载(需要前端打包多个图片,所以需要使用ajax请求图片获得二进制内容,不能直接使用img或a进行下载),如图:问题现象图片存储再阿里云OSS,阿里云OSS的CORS设置的跨域并没有问题:1access-control-allow-methods: GET, POST, PUT, DELETE, HEAD2a...转载 2019-11-11 08:21:57 · 1733 阅读 · 0 评论 -
并发编程之美——通知与等待原理分析(wait、notify、notifyAll)
转载至:https://my.oschina.net/u/3995125/blog/3057943生产者消费者模型是我们学习多线程知识的一个经典案例,一个典型的生产者消费者模型如下: public void produce() { synchronized (this) { while (mBuf.isFull()) { ...转载 2019-06-05 09:38:45 · 441 阅读 · 0 评论 -
秒杀系统架构分析与实战
1 秒杀业务分析1. 正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货2. 秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;2 秒杀技术挑战假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有...转载 2019-03-21 15:25:13 · 274 阅读 · 0 评论 -
1.0 Spring Cloud中基于maven的分布式架构搭建
1,背景介绍在现在功能繁多的业务架构中,传统的 maven 项目已经无法支持项目的流畅需求,所以现在的项目已经开始开始走向分布式架构,在这主要搭建一个空的 maven 分布式架构,可以运用到实际项目中进行扩展,源码会在git上同步。maven 分布式工程的基本架构,如下:parent-project---- spring-application1---- spring-appl...原创 2019-03-14 10:35:26 · 405 阅读 · 0 评论 -
linux Crontab定时运行JAR
在linux下面运行java程序,一般情况下我们先打包成jar文件,然后放在linux下,用脚本去执行它。time.sh:#!/bin/bash export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64export PATH=$JAVA_HOME/bin:$PATH java -jar /opt/local/test/SimHa...原创 2018-10-17 08:29:09 · 3045 阅读 · 0 评论 -
eclipse如何打jar包
1,工程结构如下:2,在工程里创建一个manifest.mf文件:Manifest-Version: 1.0Main-Class: com.sim.main.RepeatClass-Path: lib/mysql-connector-java-5.1.40.jarBuilt-By: lvjie a. Main-Class 指定程序的入口,这样可以直接用java -j...原创 2018-10-09 13:42:47 · 2540 阅读 · 0 评论 -
redis实现秒杀demo
代码package com.prosay.redis;import java.util.List;import redis.clients.jedis.Jedis;import redis.clients.jedis.Transaction;public class SaleRunable implements Runnable{ String productKey="...转载 2018-09-26 09:26:51 · 215 阅读 · 0 评论 -
一个月面试 4 家,3 家 Offer,来看看面霸真君是如何面试的!
自古真情留不住,总是套路得人心。本文聊聊面试中那些百试不灵的套路。 作者 | 纪小雄责编 | 郭芮近来常听到很多小伙伴抱怨说面试难,难于上青天。但是我,人称 “面霸真君”,却从不觉得面试是个问题——毕竟我在6月份面了4家公司,最后稳稳地拿下了3份offer,所以在这里就跟大家分享下我的面试经(套)验(路)。当然,我面的是数据分析师这一偏业务方向的职位,对其他岗位如果没...转载 2018-09-20 09:45:13 · 148 阅读 · 0 评论 -
一道面试题考验了你对java的理解程度
最近看到一篇文章,关于一道面试题,先看一下题目,如下:public static void main(String[] args) {Integer a = 1;Integer b = 2;System.out.printf("a = %s, b = %s\n", a, b);swap(a, b);System.out.printf("a = %s, b = %s\n", ...转载 2018-08-28 16:44:43 · 585 阅读 · 0 评论 -
Linux下RabbitMq安装
spring boot使用:https://www.cnblogs.com/boshen-hzb/p/6841982.html安装环境:Linux: centOS 6.8 mini版rabbitMq:3.6.2查询linux版本more /etc/issuemqrabbitMq服务端网址下载,这里推荐3.6.2http://www.rabbitmq.com/r...原创 2019-04-01 09:09:23 · 287 阅读 · 0 评论 -
文本相似度计算之余弦定理
前言余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中。用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,反之越接近0就表示两个向量相似度越低,这就叫"余弦相似性"。正文重温余弦定理先简单的重温一下高中数学知识,余弦定理这个公...转载 2019-05-15 14:30:54 · 531 阅读 · 0 评论 -
老生常谈Java虚拟机垃圾回收机制(必看篇)
垃圾收集垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。判断一个对象是否可被回收1. 引用计数算法给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。两个对象出现循环引用的情况下,此时...转载 2019-05-13 15:02:43 · 1353 阅读 · 0 评论 -
经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】
写在前面:设计模式源于生活,而又高于生活!为什么要使用设计模式重构代码使用设计模式可以重构整体架构代码、提高代码复用性、扩展性、减少代码冗余问题。Java高级工程师装逼的技能!什么是策略模式策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。1.环境(Context)角色:持有一个Strategy的引用...转载 2019-06-05 09:52:56 · 794 阅读 · 0 评论 -
Java性能优化-字符串和数字构造
1.1 构造字符串字符串在Java里是不可变的,无论是构造,还是截取,得到的总是一个新字符串。看一下构造一个字符串源码private final char value[];public String(String original) { this.value = original.value; this.hash = original.hash;}原有的字符串的valu...转载 2019-07-03 09:32:58 · 470 阅读 · 0 评论 -
1.3 spring boot整合presto
首先自己创建springboot工程,做好基本引用;下面只介绍满足presto的引用引用pom文件:<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>...原创 2019-07-05 08:38:19 · 5066 阅读 · 1 评论 -
一文学会Java死锁和CPU 100% 问题的排查技巧
微信公众号(纯洁的微笑)上看到比较实用的文章。00 本文简介作为一名搞技术的程序猿或者是攻城狮,想必你应该是对下面这两个问题有所了解,说不定你在实际的工作或者面试就有遇到过:第一个问题:Java死锁如何排查和解决?第二个问题:服务器CPU占用率高达到100%排查和解决?第三个问题:有哪些工具能够快速查看线程使用情况?本文对这三个问题进行总结整理,通过实例演示讲解,精彩干货,...转载 2019-07-19 11:10:33 · 260 阅读 · 0 评论 -
代码中太多 if else 怎么办?
今天看微信公众号(Web项目聚集地),发现一个有意思的文章,分享下:前言前段时间,我将公司系统中的批量审单的功能进行了重构,用到了java的并发编程进行异步化处理,数据库的乐观锁机制处理多线程并发更新数据。其中批量审单的业务处理涉及到多种任务类型,对应不同的业务方法进行处理,比如转仓,转快递,添加赠品,删除赠品,拆分订单,批量驳回,批量作废等等,其中就用到了策略模式。if else模式...转载 2019-08-05 15:13:48 · 6724 阅读 · 1 评论 -
详解浏览器跨域
一、什么是跨域?JavaScript出于安全方面的考虑做的同源策略的限制,不允许跨域访问其他资源。通常跨域请求成功后,浏览器会拒绝响应服务器端返回的结果。1.出于哪些方面的安全考虑?同源政策的目的是为了防止恶意网站窃取用户数据信息冒充用户做一些操作。同源限制只是提高攻击成本。如果没有JavaScript同源限制:(1)CSRF攻击(2)XSS攻击2.什么是同源...转载 2019-09-16 09:27:37 · 741 阅读 · 0 评论 -
java线程系列之创建线程的8种方式
问题(1)创建线程有哪几种方式?(2)它们分别有什么运用场景?简介创建线程,是多线程编程中最基本的操作,彤哥总结了一下,大概有8种创建线程的方式,你知道吗?继承Thread类并重写run()方法public class CreatingThread01 extends Thread { @Override public void run() { ...转载 2019-10-09 08:17:01 · 240 阅读 · 0 评论 -
Java中synchronized 和 ReentrantLock 有什么不同?
相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善)。区别:这两种方式最大区别就是对于Synchronized来说,它是java语言的关键...转载 2018-08-28 10:28:54 · 1439 阅读 · 0 评论 -
Java学习:Java程序员必读的经典书籍没有之一,你读过几本?
身为Java程序员的你可能正在思考平时应该看一些什么书籍来提高自己的能力,那么团长今天就给大家推荐一些我曾经看过的经典书籍。1.《Java从入门到精通(第3版)》这本书从Java初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。2.《Java核心技术 卷1 基础知识》Java领域最有影响力和价值的著作之一,与《Java...转载 2018-08-09 08:35:13 · 32678 阅读 · 7 评论 -
9.3 scala和Java做Spark操作
注意导入spark-assembly-1.6.0-hadoop2.4.0.jarscala:package com.scalaimport org.apache.spark.SparkContextimport org.apache.spark.SparkConfobject Test { def main(args: Array[String]): Unit = { val conf =...原创 2018-07-16 09:24:16 · 624 阅读 · 0 评论 -
java读取内容生成Excel文档
今天别人突然问我下载生成Excel,我看了一下他的方式,感觉太麻烦了,给他写了个例子,分享一下下载Excel:pom.xml文件:<!-- 读取Excel --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> &...原创 2018-04-27 09:16:32 · 378 阅读 · 1 评论 -
深入理解微服务架构spring的各个知识点(面试必问知识点)
前言:最近整理Spring相关的知识点(面试必问) ,在我整理的过程中,我发现自己对Spring的理解有点朦胧,因为在平时我们接受的是Spring单个的知识点或者知道但没有代码的支持所有有点朦胧,所以我就把Spring知识点从整体然后往局部,到最后一个一个知识点拎出来,我想有很多的朋友或者是初学的朋友和我一样对Spring有点朦胧,所以我分享出来,写的不完全和不好的欢迎指出什么是springspr...转载 2018-05-10 14:04:05 · 3005 阅读 · 0 评论 -
Spring MVC核心技术
异常处理Spring MVC中, 系统的DAO, Service, Controller层出现异常, 均通过throw Exception向上抛出,最后由中央处理器DispatchServlet交由全局异常处理器进行异常处理, 如下图所示常用的Spring MVC异常处理方式主要有三种:使用系统定义好的异常处理器SimpleMappingExceptionResolver使用自定义异常处理器使用异...转载 2018-05-10 13:55:45 · 226 阅读 · 0 评论 -
深入理解 Java 多线程核心知识:跳槽面试必备
多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲。在平时工作中如若使用不当会出现数据错乱、执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关重要。本文从基础概念开始到最后的并发模型由浅入深,讲解下线程方面的知识。概念梳理本节我将带大家了解多线程中几大基础概念。并发与并行并行,表示两个线程同时做事情。并发,表示一会做这个事情,一会做另一个事...转载 2018-04-24 13:37:26 · 171 阅读 · 0 评论 -
JVM垃圾收集器笔记整理
摘要: 个人笔记,针对jvm垃圾收集器的知识点整理Serial收集器历史最久远的垃圾收集器,采用复制算法,依旧是虚拟机运行在Client模式下的默认新生代收集器。优点: 1. 简单而高效(与其他收集器的单线程相比);对于限定单个CPU的环境来说,Serial收集器由于没有线程开销,专心做垃圾收集自然可以获得最高的单线程收集效率。缺点1.在多核CPU环境下,效率较低,无法在Server模式下发挥...转载 2018-04-24 13:26:59 · 206 阅读 · 0 评论 -
eclipse下载,安装,配置教程(多图)
第一步:下载eclipse,并安装。下载链接:http://www.eclipse.org/downloads/点击 Download Packages;根据自己的系统选择32位还是64位的,点击相应链接下载(可能会弹出一个需要你付费的页面,并不是eclipse需要付费,这只是请求你捐钱的,无需理会)下载完成后,解压安装包,解压路径随意。打开之后,选中图中的文件,在桌面创建快捷方式,安装告一段落,...转载 2018-04-23 14:32:19 · 3430 阅读 · 1 评论 -
Java读取配置文件-JDBC工具类
jdbc.properties:mysql.url=jdbc:mysql://192.168.12.120:3306/es_history?useUnicode=true&characterEncoding=utf8mysql.username=rootmysql.password=12345678mysql.driver=com.mysql.jdbc.Driver============...原创 2018-03-08 14:03:21 · 494 阅读 · 0 评论 -
Spring boot工程创建和打包
本工程采用maven进行jar管理;一 工程创建-根据官网稍微修改了一下pom.xml:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <ve...原创 2018-02-28 08:41:19 · 310 阅读 · 0 评论 -
这些年一直记不住的 Java I/O
本文目录参考资料前言从对立到统一,字节流和字符流从抽象到具体,数据的来源和目的从简单到丰富,使用 Decorator 模式扩展功能Java 7 中引入的 NIO.2NIO.2 中的异步 I/O总结参考资料 该文中的内容来源于 Oracle 的官方文档。Oracle 在 Java 方面的文档是非常完善的。对 Java 8 感兴趣的朋友,可以从这个总入口Java SE 8 Documentation...转载 2018-05-12 09:25:29 · 526 阅读 · 0 评论 -
大型分布式电商系统架构是如何从0开始演进的?
本文是学习大型分布式网站架构的技术总结。对架构一个高性能、高可用、可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考。文中一部分为读书笔记,一部分是个人经验总结,对大型分布式网站架构有较好的参考价值。一、大型分布式网站架构技术1、大型网站的特点用户多,分布广泛大流量,高并发海量数据,服务高可用安全环境恶劣,易受网络攻击功能多,变更快,频繁发布从小到大,渐进发展以用户为中心免费服务,付费...转载 2018-05-12 09:45:44 · 386 阅读 · 0 评论 -
7.8 Java操作redis
/** * 使用jedis操作redis需要jedis-2.1.0.jar * 使用Redis连接池,还需commons-pool-1.5.4.jar * <p>内容描述:操作redis</p> * @author lvjie * @date 2017年7月7日 上午11:55:06 */public class UseRedis { private static Jedi...原创 2018-07-03 10:35:21 · 211 阅读 · 0 评论 -
一文带你看穿String
1.1 前言 String对象是不可变的。String类中每一个看起来会修改String值的方法,例如拼接、裁剪字符串,实际上都会创建一个全新的String对象,用来包含修改后的字符串内容。因此字符串的相关操作往往对性能有明显的影响。1.2 定义public final class String implements java.io.Serializable, Compara...转载 2018-06-20 11:04:07 · 201 阅读 · 0 评论 -
浅谈设计模式之单例模式
单例模式(Singleton Pattern)是 Java 中常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他...转载 2018-06-20 08:20:45 · 158 阅读 · 0 评论 -
html 之间如何通过URL传输参数,并解决中文乱码问题
当在输入框中输入内容后,点击搜索,应用就会跳转到搜索页面,并传递了上一个页面搜索的内容“九”,同时搜索关联游戏,起初,如果直接通过 url?+搜索内容,这种方法实现参数传递的话,当我们搜索数字或者英文字母时,不会有问题,但是搜索中文的时候,就会出现一堆百分号样的搜索数据,这就可以说是Url中传递中文参数乱码。 怎么解决HTML界面间传递中文参数的乱码问题呢? 1.可以使用encodeURI...转载 2018-06-25 13:52:25 · 1040 阅读 · 0 评论 -
分享深入理解Java注解
java注解是在JDK5时引入的新特性,鉴于目前大部分框架(如Spring)都使用了注解简化代码并提高编码的效率,因此掌握并深入理解注解对于一个Java工程师是来说是很有必要的事。本篇我们将通过以下几个角度来分析注解的相关知识点理解Java注解基本语法声明注解与元注解注解元素及其数据类型编译器对默认值的限制注解不支持继承快捷方式Java内置注解与其它元注解注解与反射机制运行时注解处理器Java 8...转载 2018-06-25 11:17:47 · 240 阅读 · 0 评论 -
京东Java架构师讲解购物车的原理及Java实现
今天来写一下关于购物车的东西, 这里首先抛出四个问题:1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码 问:购物车商品还在吗?4)用户登陆了用户名密码,添加商品...转载 2018-05-21 15:57:49 · 277 阅读 · 0 评论