自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

向阳而生

终身学习

  • 博客(191)
  • 收藏
  • 关注

原创 618京东到家APP-门详页反爬实战

在这次反爬经历中也有很多需要反思总结和提高的地方,下面列了几点给大家参考,希望本篇文章对大家有所帮助。1.要尽量防患于未然,核心系统接口提前做好反爬的一些基础工作,避免被临时杀个措手不及。2.涉及多网关的时候,要梳理爬虫的来源及特征,借助各物理网关的反爬能力,针对性的处理。3.登录态开启需要提前测试确定影响,各端是否支持,用户体验是否受损,其它反爬措施同理。4.微信小程序不能开启强登陆,会被认为违规进行处罚。

2023-10-26 14:31:24 921

原创 HttpMessageConverter

HttpMessageConverter中看懂不同参数解析器所支持的content-Type

2023-03-26 20:59:43 487

原创 Mac Sublime Text编辑器 过滤所有符合条件的查找行

2,⌃ ⌘ G 快速查找所有的 (⌃ 这个是control, 不是数字6上的符号)3,⌘ L 选择行(匹配查找到关键字的每一行)4,⌘ L 选择行(匹配查找到关键字的每一行)1,输入、选中要查找的字符串。1,输入、选中要查找的字符串。6,⌘ N 新打开窗口。3,⌥ ↩ 查找所有的。6,⌘ N 新打开窗口。

2022-12-29 21:52:16 833

原创 加密和验签

区分签名与加密的概念

2022-08-09 14:04:12 2466

原创 乐观锁-基于CAS原理

乐观锁的操作过程中其实没有没有任何锁的参与,乐观锁只是和悲观锁相对,严格的说乐观锁不能称之为锁。下面我们就通过乐观锁与悲观锁的对比来更好的理解乐观锁。 乐观锁适用于写比较少的情况下(多读场景),即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果是多写的情况,一般会经常产生冲突,这就会导致上层应用会不断的进行retry,这样反倒是降低了性能,所以一般多写的场景下用悲观锁就比较合适。 乐观锁大部分是基于CAS来实现的,即Comp

2022-07-06 20:45:30 1716

原创 Java程序启动后首次访问很慢--JVM预热

目录导读为什么刚启动发起的请求会有损?如何预热小结 在项目部署或者重启后,机器挂到线上直接承接线上流量,会出现请求有损或者请求性能极差的情况,表现形式:max高,请求失败等,几次请求过后,线上各项指标恢复正常。 那么为什么会造成这样的情况?以及如何解决呢? 当应用的第一个请求到来,会触发逻辑相关类的第一次加载,此过程会有一定的耗时,会影响第一次调用的实时响应。这主要是因为JVM的懒加载及JIT机制 降低对用户请求的损耗

2022-06-29 17:04:56 1938

原创 如何在Git Hub上学习开源项目+社交

背景Git Hub作为一个专业的开源网站,基于版本控制软件Git来实现各项功能,对于程序员来说是交流经验与学习开源项目的天堂。但由于国内外的学习方式、编程思维均存在较大差别,导致至今仍有很多国人对于Git Hub的使用感到不解。对于如何从Git Hub上寻找符合需求的开源项目并进行阅读学习,如何为他人的项目贡献自己的力量,以及如何与其他程序员进行交流,多数人还是不了解。笔者也经历过很长一段的迷茫期,现在才敢写出一些个人心得,以帮助大家少走弯路。前提条件会基础Git命令、make命令 已

2022-05-22 12:45:46 770 1

原创 处理泛型反序列化-fastjson-TypeReference

fastJson 泛型反序列化

2022-05-19 11:29:23 1292

原创 MapStruct

场景再现: Bean 拷贝在我们的工作中非常的普遍,因为我们对实体进行了分层,常用的必入dto用来数据传输,vo是给前端在展示用的,所以我们经常会定义两层Object字段是保持一致的,便于我们 拷贝。编写这样的映射代码是一项乏味且容易出错的任务。我们常用的是Spring的BeanUtils工具类,那么当有复杂的对象转换的时候呢比如map转bean等,List复杂对象需要深拷贝时候用Spring的BeanUtils还是要去自己封装写一些工具类,而这些工具类使用到了反射,而M...

2021-10-26 15:08:06 1529 1

原创 父子线程间参数传递方案

公参传递处理解决方案全链路压测标解决方案背景:公参: 接口公共参数可以认为是每次调用都需要带上的用户个人信息、地址、版本、设备、网络、链路压测标使用到线程池那么参数应该如何传递给呢?首先推出三个内容,理解下其解决了什么问题ThreadLocal解决了参数在一个线程中各个函数之间互相传递的问题(Thread类的成员变量ThreadLocal.ThreadLocalMap threadLocals) InheritableThreadLocal...

2021-10-26 10:08:13 2251

原创 玩转Stream流

“引言部分。Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregateoperation),或者大批量数据操作 (bulk data operation)。Stream..

2021-06-17 14:17:05 282 3

原创 一行错误代码带来的影响:new Long[activityPageRequest.getStoreId()]

问题描述一次上线之后从JVM上观察YGC变频繁,从1次/5min-> 3次/1min 出现FGC3.从性能来看左侧是问题,右侧是正常,各项指标异常,MAX能到2s,可用率不足100% 背景描述:两个需求同时上线,涉及两个接口,部署在同一应用A. (有问题代码)B. (正常)排查步骤:如何确定呢?通过nginx切流量,来移除变量观察监控定位到是店内活动页造成的问题通过loca...

2021-04-20 11:22:46 293

原创 new HashMap(list.size())指定size就能完全避免扩容带来的额外开销了吗?

public static void longLongAGo() { int count = 1000000; System.out.println("---------------- 不设置hashMap初始容量 ------------"); long start = System.currentTimeMillis(); HashMap<Integer, Object> map = new HashMap<>(); for (int .

2021-04-20 11:15:22 663 1

原创 Map的key,value是否可以为null?

public static void main(String[] args) { Map<String,Boolean> searcher = new HashMap<>(); searcher.put("one",null); searcher.put("two",null); searcher.put("three",null); System.out.println(MapUtils.is...

2020-12-11 18:24:43 5292

原创 类的私有成员变量,若是多例则是线程私有,若单例则全局共享

结论:类的私有成员变量,若是多例则是线程私有,若单例则全局共享,不要被私有给迷惑住了问题背景: 一个楼层资源是否展示是通过flag来控制的,一次请求中可以有n个楼层, 那么每个楼层开启一个线程去并行处理,理想情况下是每个线程用自己的flag部分true,部分false,结果问题是所有线程的flag值都一样,要么都true,要么都false问题原因: @Service默认是单例,也就是全局唯一bean解决方案: 方案1. 把flag做成局部变量 ...

2020-12-09 16:20:48 635 1

原创 String长度上限

String长度上限是多少?前言话说Java中String是有长度限制的,听到这里很多人不禁要问,String还有长度限制?是的有,而且在JVM编译中还有规范,,而且在之前开发的中也真实地遇到过这个String长度限制的场景(将某固定文件转码成Base64的形式用字符串存储,在运行时需要的时候在转回来,当时文件比较大),那这个规范限制到底是怎么样的。String首先要知道String的长度限制我们就需要知道String是怎么存储字符串的,String其实是使用的一个char类型的数组来存储字

2020-12-03 09:45:08 1525 1

原创 G1调优---

Jvm g1调整1.升级jdk8过程1.使用运维工具jdk升级,(升级失败,需要重新申请机器);2.修改启动脚本 相关参数start.sh;3.摘除线上流量后,更新配置重启应用;4.恢复线上流量观察jvm;2.Cms-api-work调优目标Cms-api-work是为c端流量提供基础服务的,调优第一目标是低延迟,第二目标是提高吞吐量;3.jvm启动相关配置参数解读:OPTS_MEMORY="-server-Xms6G ##jvm内存最大...

2020-11-28 16:15:54 419

原创 BigDecimal在金额计算中丢失精度问题

一、问题现象:我们在使用金额计算或者展示金额的时候经常会使用BigDecimal,这个类型也是涉及金额时非常推荐的一个类型,BigDecimal也提供了很多构造器方法,这些构造器方法使用不当可能会造成不必要的麻烦甚至是金额损失,如下图所示:Android收银台页面也曾出现过这个bug,显示一个非常长的数字,幸好只是展示,不涉及计算和存储。二、问题分析:先看下BigDecimal提供的部分构造器方法public BigDecimal(double val) { this(va

2020-10-26 16:08:53 940

原创 com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)

问题:实体类双向映射进行Json序列化时出现无限循环的异常 背景:事情很简单,就是日志打印的时候,一条日志的打印没有任何毛病,这行代码没问题,但由于数据可变,某些情况下会报异常com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) 影响范围:看你这条日志打在哪了,主要看try catch的作用范围,打在功能主流程中,有try catch的情况下,整个...

2020-09-05 16:19:34 3449 1

原创 架构概论

顶层涉及按需、预期未来、规划企业架构业务全局触发,制定可落地的架构方案技术选型,难题解决规划方案与代码,广度与深度技术+管理(人,资源,技术)缓冲 Buffer缓存 Cache复用 Pool分治 Sharding亲密(粘性) sticky权衡 Balance or trade-off拆解分层: 流程 服务(偏业务) 功能(比业务更细)DB/Redis/Tommcat按X轴(可用性):...

2020-08-09 10:52:54 225 1

原创 Java 按字符为单位截取

背景 按长度截取字符功能是为了解决什么问题呢?首先了解下两个维度的基础 1. Java中很多工具类在按长度截取文本的时候,无论是中文/英文/数字/中英文标点符号每一个都代表一个长度,比如subString方法 2. 一个中文和英文数字所占的内存和显示的大小也不同,一个中文是2个字符问题 当UI或者功能要求按长宽高等固定尺寸来作为衡量标准的时候,那么长度就不能作为我们的衡量标准,因为1个中文长度是1个单位,1...

2020-07-26 16:37:27 457 1

转载 Linux 常用命令全拼

供大家查阅-------------------要知其然并知其所以然pwd: print work directory 打印当前目录 显示出当前工作目录的绝对路径 ps: process status(进程状态,类似于windows的任务管理器) 常用参数:-auxf ps -auxf 显示进程状态 df: disk free 其功能是显示磁盘可用空间数目信息及空间结点...

2019-11-13 18:11:13 426

原创 Mysql事务隔离级别-----简单到不能再简单的理解

读未提交:别人改数据的事务尚未提交,我在我的事务中也能读到。读已提交:别人改数据的事务已经提交,我在我的事务中才能读到。可重复读:别人改数据的事务已经提交,我在我的事务中也不去读。串行:我的事务尚未提交,别人就别想改数据。这4种隔离级别,并行性能依次降低,安全性依次提高。...

2019-10-15 16:46:35 233

转载 每个程序员都应该收藏的算法复杂度速查表

这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 O复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。每次我都需要准备这个,所以,为了节省大家的时间,我就准备了这个,希望你喜欢!图例数据结构操作数组排序算法图操作堆操作大O复杂度图表来源:LCTT原文:http://bigo...

2019-10-01 14:45:30 199

转载 java并发锁ReentrantReadWriteLock读写锁源码分析

1、ReentrantReadWriterLock基础所谓读写锁,是对访问资源共享锁和排斥锁,一般的重入性语义为 如果对资源加了写锁,其他线程无法再获得写锁与读锁,但是持有写锁的线程,可以对资源加读锁(锁降级);如果一个线程对资源加了读锁,其他线程可以继续加读锁。java.util.concurrent.locks中关于多写锁的接口:ReadWriteLockpublic interfa...

2019-09-30 21:25:33 160

原创 【Maven】——Jar包冲突解决方案调研

一.jar包冲突的本质Java 应用程序因某种因素,加载不到正确的类而导致其行为跟预期不一致。二. jar包冲突的两种情况第一类jar包冲突问题(同一jar包版本不同)应用程序依赖的同一个 Jar 包出现了多个不同版本,并选择了错误的版本而导致JVM加载不到需要的类或加载了错误版本的类。 出现该问题的三个必要条件:依赖树中出现了同一个jar包的多个版本。 该jar包的多...............

2019-09-12 10:43:12 1031 1

原创 【JVM】类加载---JAVA获取CLASSPATH路径

JAVA获取CLASSPATH路径ClassLoader 提供了两个方法用于从装载的类路径中取得资源:public URL getResource (String name); public InputStream getResourceAsStream (String name); 这里name是资源的类路径,它是相对与“/”根路径下的位置。getRe...

2019-09-06 10:46:43 1394 1

原创 【JVM】自动内存管理机制《七》---内存分配与回收策略

导读到目前为止我们讲完了:【JVM】自动内存管理机制《一》---内存划分及异常可能情况 【JVM】自动内存管理机制《二》---- 内存区域为何划分,以什么原则划分,为何自动管理? 【JVM】自动内存管理机制《三》---对象的生死判定和算法详解 【JVM】自动内存管理机制《四》---垃圾收集器(索命黑白无常回收垃圾对象) 【JVM】自动内存管理机制《五》---垃圾收集器(索命...

2019-08-14 09:25:39 275 2

原创 【JVM】自动内存管理机制《六》---面试官问JDK中默认的垃圾收集器?

目录导读查看JDK1.8.0_25的默认垃圾收集器其他JDK版本的默认垃圾回收器呢?默认的收集器详解小结导读在上篇博客中:【JVM】自动内存管理机制《五》---垃圾收集器(索命黑白无常回收垃圾对象),我们了解了各种垃圾收集器,那么大家有没有想过,我们的JDK中默认用的哪种垃圾收集器?查看JDK1.8.0_25的默认垃圾收集器打开控制台,在控制台中...

2019-08-14 09:25:00 504 2

原创 【JVM】自动内存管理机制《五》---垃圾收集器(索命黑白无常回收垃圾对象)

目录导读垃圾收集器有哪些Serial收集器——单线程收集器特点:应用场景:设置参数ParNew收集器——Serial收集器的多线程版本特点应用场景设置参数为什么只有ParNew能与CMS收集器配合Parallel Scavenge收集器特点应用场景设置参数Serial Old收集器特点应用场景Parallel ...

2019-08-13 09:07:39 362 1

原创 【JVM】自动内存管理机制《四》---垃圾收集器(索命黑白无常回收垃圾对象)

目录导读宏观概览哪些内存需要回收?垃圾收集算法复制算法标记清除算法标记整理算法分代收集算法垃圾收集器小结导读接下来本篇博客着重讲:如何自动管理内存,今天接着解决第三个问题,详细会按以下思路讲解-:如何自动管理的?谁管理的?接下来按下面的顺序讲述,我们已经讲完了对象存活的判定,接下来要讲垃圾收集算法,垃圾收集器:内存回收机制...

2019-08-11 11:05:05 297

原创 【JVM】自动内存管理机制《三》---对象的生死判定和算法详解

目录导读对象存活判定标准对象存活判定标准:对象回收标准:对象存活判定算法引用计数器算法循环引用的问题运行的结果:可达性分析算法小结导读上篇博客我们已经讲了Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域是线程私有,也就是生死随着线程。接下来本篇博客着重讲:如何自动管理内存,今天解决第三个问题,第三个问题有些复杂...

2019-08-07 09:52:56 223 1

原创 【JVM】自动内存管理机制《二》---- 内存区域为何划分,以什么原则划分,为何自动管理?

导读上篇博客:【JVM】自动内存管理机制《一》相信你明白了为什么内存需要管理:为了解决有限资源和无限需求的冲突!内存是有限的,但在运行的过程中最大的冲突就是:内存不够用。也看了java8的内存模型是分区域的,那么有没有想过一个问题:内存为什么划分?还有上篇博客的遗留问题:内存为什么要自动管理?如何自动管理的?这一切都是为了更好的利用和管理内存那么今天会解决这三个问题1.jvm虚拟...

2019-08-03 09:19:09 316

原创 【JVM】自动内存管理机制《一》---内存划分及异常可能情况

目录导读java内存区域内存溢出测试思路小结导读java内存区域与内存溢出异常 垃圾收集器与内存分配策略本篇主要讲jvm的自动内存管理机制,首先我们要拆分“自动内存管理机制”这个词:首先是一个管理机制, 管理什么?内存! 为什么内存需要管理?、 内存会带来什么问题? 如何管理?自动管理! 如何自动管理?带着这几个疑问,所以我们接下里会讲...

2019-08-02 08:31:21 251 1

原创 数据库字段为什么要尽可能的使用not null

目录null有哪些缺点?1. 空间相关 可能有些晦涩难懂,举个栗子:二、索引相关三、count函数相关四、NOT IN子查询在有NULL值的情况下返回永远为空结果再说下为什么Not Null更优化小结null有哪些缺点?1. 空间相关 NULL占空间 下面是来自Mysql官网的解释:“NULL...

2019-07-28 09:11:38 1391

原创 Linux(CentOS)如何上外网

目录在上一篇博客的基础上:打开编辑配置文件同样重载配置文件,便可测试是否可以上网,小结:在上一篇博客的基础上: Linux(CentOS)配置静态IP/动态IP打开编辑配置文件输入:vi /etc/sysconfig/network-scripts/ifcfg-ens33同样重载配置文件, 重启服务:service network re...

2019-07-17 20:59:10 4136 1

原创 win10添加应用程序到开机启动项

目录背景解决方式小结背景 为什么会有这篇博客的产生呢? 1、应用设置了开启自启动,没作用 2、无奈每次都自己再点快捷方式启动 实在是无可忍受呀,必须解决!解决之后,发现:实现开机自启,和取消开机自启非常容易呀,用代码实现也是这个思路的呀!解决方式方法一:1、...

2019-07-16 16:05:02 675 2

原创 VSCode插件配置信息同步———如何使用 VSCode 的 Setting Sync 插件

目录前言SettingSync插件的作用SettingSync插件适用的场景SettingSync插件如何使用?1、安装 2、配置设置同步3、上传下载您的设置上传您的设置下载您的设置小结前言作为一名程序员,同时自己也是一个资深用户,所以必须要有不讲究的习惯,高效率,节省时间!对每一款软件,都要追求用户体验的完美度!S...

2019-07-16 15:12:29 480 3

原创 java8的Stream流使用

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行...

2019-07-14 21:17:57 190 1

原创 Zookeeper分布式高性能协调服务-what、why、how

目录zookeeper的由来zookeeper是什么?设计目的?zookeeper带来的问题zookeeper有什么? zk特性ZK主从集群ZAB协议zookeeper的由来说到这里,zookeeper是为了解决分布式集群带来的问题,就得说说什么是分布式?分布式集群带来了哪些问题?zookeeper解决了什么问题?1.什么是分布式?分布式两...

2019-07-07 09:34:37 224 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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