- 博客(26)
- 收藏
- 关注

原创 2020年下半年高级架构设计师论文
2020年11月7日我参加了高级架构设计师的考证,以前在私企工作时,时间都比较紧,大家都不太会去关注一系列的考证。2018年到了国企工作,有一定的自由时间,为了不在游戏和头条中荒废度日,我决定去考证,一来可以申请减免个税,二来可以加强理论知识的掌握,给自己充充电。 本次高级架构设计师考证下午论文题目之一:论数据库分库常用算法hash算法,一致性算hash法,range分段算法。考后查询了一下资料,我居然答对了,希望自己能过吧。1:什么是hash算法 hash算法...
2020-12-02 11:59:13
322
原创 一键部署Ollama deepSeek:科技赋能,轻松上手
一键安装Ollama与deepSeek,轻松解锁AI文本生成神器!详细步骤教你如何从拉取镜像到运行容器,再到验证安装成功。更有deepSeek模型安装指南,揭秘不同版本参数含义及应用场景,让你轻松选择最适合自己的AI助手!
2025-02-27 11:10:13
1082
原创 WebMvcConfigurationSupport 与WebMvcConfigurer冲突不生效案例
@ApiResponse:用于标记API方法的响应信息,包括响应的HTTP状态码、描述和响应数据类型等。* @ApiModelProperty:用于标记API数据模型的字段信息,包括字段的名称、描述和数据类型等。* @ApiOperation:用于标记API方法的信息,包括方法的名称、描述和HTTP方法等。* @ApiModel:用于标记API的数据模型信息,包括数据模型的名称、描述和字段信息等。* @Api:用于标记API的信息,包括API的名称、描述和版本号等。
2023-07-12 17:25:03
1157
原创 scrum敏捷开发方法介绍
1:什么是敏捷开发敏捷开发以人为核心,采用迭代、循序渐进的方法进行软件开发。我更赞同这个定义,网络上有的定义强调以用户需求为核心,突出不了人在整个敏捷开发过程的作用,后续的阐述也是围绕着人来阐述的。软件开发不以需求为核心,还以什么为核心呢。2:为什么需要敏捷开发更快更好完成用户需求,快速试错,及时迭代优化。3:敏捷开发的分类及差别现在主流的敏捷开发分为两种:scrum敏捷开发和xp敏捷开发,两者的差别是scrum强调过程,xp强调实践(XP的核心是沟通、简单、反馈、勇气四..
2020-07-23 13:49:30
1462
原创 shiro过滤器失效问题研究
问题背景项目使用了shiro 过滤器拦截请求,做一些限流,鉴权,白名单限制的事情,可是最近在上线一个新功能时,新增了一个拦截路径,上线后,发现部分设置了拦截的路径失效,导致项目回滚问题定位之前在本地开发环境出现过类似问题,怀疑是正则表达式覆盖或者是拦截器排序规则导致,可是查了一堆网上资料,均没有类似情况,加之是本地环境问题,也就草草了之了。今天在线上环境碰到就不得不去查明原因,彻底解决。这...
2019-12-17 14:37:29
3601
原创 接口防刷方法
1:网关控制流量洪峰,对在一个时间段内出现流量异常,可以拒绝请求(参考个人博客文章 https://mp.youkuaiyun.com/postedit/81672222)2:源ip请求个数限制。对请求来源的ip请求个数做限制3:http请求头信息校验;(例如host,User-Agent,Referer)4:对用户唯一身份uid进行限制和校验。例如基本的长度,组合方式,甚至有效性进行判断。或者uid具...
2019-01-14 09:51:43
4108
原创 mybatis源码分析之spring加载mapper.xml文件原理解析
首先我们来看看mapper.xml文件的加载方式第一种:基于mapper接口类具体路径配置这种情况下,如果是非注解模式的话xml配置文件必须和这个类在同一级目录,且与Mapper类同名。项目结构类似第二种:基于mapper类所在包的package路径配置 其实这算是第一种的一个变种。一个配置mapper类,每次新加删除比较麻烦,直接扫描mapper类所在包。项目结构类...
2018-08-16 16:39:38
7323
原创 互联网网关设计之限流算法
腾讯王卡业务第一代网关设计架构如上图所示,也许有许多人会问,nginx本身就能做网关了,为什么还需要另外开发网关呢?答案是nginx开发网关,在线现有成员技术背景下,条件不成熟,为了快速构建我们的微服务架构,所以我们选择了基于spring cloud zuul做网关开发,这样技术栈单一,小团队比较合适,运维维护成本较低。网关能给我们带来的好处如下: 客户端认证 无论是对内网还是...
2018-08-14 19:16:39
3713
原创 腾讯王卡运营坑之一:web容器优雅停机缓慢
什么叫做优雅停机:通俗点理解(以tomcat为例),优雅停机就是当tomcat收到停机命令时,tomcat会关闭所有入口(表明我已经要停机了,你们别再来请求我了),同时对已经接受的请求继续完成相应的处理逻辑。当所有的用户定义的线程都处理完成,进程内只剩下daemon线程时,机彻底关机,杀死进程。优雅停机的正确姿势:ps -ef|grep java 找到你需要杀死的pid 假如我...
2018-07-24 19:01:55
812
转载 微服务架构:Eureka参数配置项详解
Eureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下面对Eureka的配置项做具体介绍,供大家参考。 Eureka客户端配置 1、RegistryFetchIntervalSeconds 从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒...
2018-05-29 09:17:37
416
原创 高并发集群服务降级技术架构设计
开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文将详细聊聊降级。 为什么需要降级:当访问量剧增、服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。 降级的最终目:保证核心服务可用,即使是有损的。而且有些服务是无法降级的(如加入购物车、结算) 降级预案...
2018-05-11 15:41:13
1917
原创 常见10大web安全防护(一分钟快餐)
今天总结了一下常见web开发安全措施,因个人能力有限,总结如下,如有遗漏或者不全部对之处,欢迎大家公众号留言1:敏感信息加密传输与存储(密码、银行卡号等等)2:表单提交使用POST方式,不使用GET(太简单了,你肯定懂的)3:参数名尽量简短模糊,切记不出现id=。。。,pwd=。。。。id等唯一性记录,不要设计为数值,尽量不作参数传递(防止被遍历1、2、3、4)4:系统交互凭证加密cookie保存...
2018-05-11 15:40:09
1248
原创 系统并发量,由哪些因素决定,99%的人不知道
什么是并发:系统同时处理的 request或者 事务数 我们称之为并发. 然而并发数由什么决定,却是众说纷纭,我归纳总结由以下几个因素共同决定: 因素一:服务器网络带宽 因素二:服务器系统内存(注意是内存不是硬盘哦) 因素三:web容器 因素四:程序代码 1:服务器网络带宽 假如你的服务器带宽是5M,如果你的http求头是8k,那么你的服务器最大并发数是 5M/8k ...
2018-05-11 15:39:24
10192
原创 阿里巴巴java工程师电话面试题(付答案)
一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?答: 1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。2、String不可变是因为在JDK中String类被声明为一个final类。3、StringBuffer是线程安全的,而Str...
2018-05-11 15:38:13
7805
1
原创 mysql 字段类型默认长度
今天创建数据库表,一个字段 默认类型是 int(比如 amunt int ),创建表之后变成了 amunt int(11),为啥不是 amunt int(32)呢?网上搜集了一下资料,特作整理介绍如下(以sql为例):首先说一下mysql的数值类型,MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似...
2018-05-11 15:37:06
19367
原创 JVM详解及java 垃圾回收策略
文章开始之前,我们先明确一下两个知识点:java 堆、栈概念 和 java 内存的划分一:java 堆栈概念 从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的.而这种不同又主要是由于堆和栈的特点决定的 Heap(堆 Stack(栈)JVM中的功能内存数据区内存指令区存储数据对象实例基本数据类型, 指令代码,常量,对象的引用地址1. 保存对象实例,实际上...
2018-05-11 15:35:50
368
原创 标准SQL匹配和正则表达式匹配
MySQL中的模式匹配分为两种: 一种是标准SQL匹配,另一种是 正则表达式匹配标准SQL匹配,我们通常用的最多的一种方式 a:使用LIKE和NOT LIKE比较操作符(注意不能使用=或!=); b:模式默认是忽略大小写的; c:允许使用”_”匹配任何单个字符,”%”匹配任意数目字符(包括零字符); 正则表达式匹配。用的极少,极其影响性能...
2018-05-11 15:32:43
8714
原创 一站解决WEB跨域访问问题
在利用进行软件开发过程中,很多程序猿朋友都会碰到跨域访问问题,现在我们以JSP+Nginx+Tomcat开发的模式来谈谈跨域问题的解决方法。首先我们来描述一下什么是跨域 只要协议、域名、端口有任何一个不同,都被当作是不同的域。 跨域的解决我们可以从三个方向来思考解决,每一块都可以独立的解决问题,如果配置了多处,可能会取到相反的效果(不是双保险哦)第一方向:后端代码层面(以...
2018-05-11 15:32:16
606
原创 SQL语句调优实例锦集
怎样加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在 where 及 order by 涉及的列上建立索引。那一个表是不是索引越多越好,建立索引的方法论,也就是原则是什么呢?第一:一个表的索引不是越多越好,没有一个具体数字,根据以往经,一个表的索引最多不超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。第二:建立索引的方法论...
2018-05-11 15:29:06
367
原创 cookie VS session 你知多少
在web开发中,session是个非常重要的概念。在许多动态网站的开发者看来,session就是一个变量,而且其表现像个黑洞,他只需要将东西在合适的时机放进这个洞里,等需要的时候再把东西取出来。这是开发者对session最直观的感受,但是黑洞里的景象或者说session内部到底是怎么工作的呢?Session是什么 Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间。从不...
2018-05-11 15:27:58
590
原创 jdk lock 之ReentrantLock 、AbstractQueuedSynchronizer( AQS)
锁的独占与共享 java并发包提供的加锁模式分为独占锁和共享锁,独占锁模式下,每次只能有一个线程能持有锁,ReentrantLock就是以独占方式实现的互斥锁。共享锁,则允许多个线程同时获取锁,并发访问 共享资源,如:ReadWriteLock。AQS的内部类Node定义了两个常量SHARED和EXCLUSIVE,他们分别标识 AQS队列中等待线程的锁获取模式。 很显然,独占锁是...
2018-05-04 11:19:15
241
原创 jdk之原子类AtomicXXXX
假设你已经阅读并理解和《jdk原子类AtomicXXXX(预备篇)》,基于以上的理解,现在我们一起来研读jdk原子类。jdk原子类的实现方式总体很类似,因此我们选择一个比较具有代表性的AtomicLong来研读,学习就是要做到一通百通。AtomicLong是什么AtomicLong它提供了一些原子性的操作来操作Long类,十分适合在多线程、高并发情况下使用。对Long的操作,不使用AtomicLo...
2018-04-28 12:56:45
463
原创 jdk之原子类AtomicXXXX(预备篇)
在介绍jdk原子类之前,我们先介绍一个非常重要的知识点:Unsafe类1:Unsafe是什么 Java自己是不能直接访问底层操作系统,如果要访问该怎么办呢?Unsafe类恰恰这个能力,能直接原子性的,硬件级别的提供该能力。 Unsafe类使Java拥有了像C语言的指针一样操作内存空间的能力,同时也带来了指针的问题。过度的使用Unsafe类会使得出错的几率变大,因此Java官方...
2018-04-23 12:06:52
323
原创 LongAdder与AtomicLong
AtomicLong的原理是依靠底层的cas来保障原子性的更新数据,在要添加或者减少的时候,会使用自循(CLH)方式不断地cas到特定的值,从而达到更新数据的目的。然而在线程竞争激烈的情况下,自循往往浪费很多计算资源才能达成预期效果。 面对自循的缺点,jdk1.8推出了LongAdder类,他的实现方式有点像concurrentHashMap一样,采用空间换时间的方式,...
2018-04-18 10:34:53
685
原创 java 异常处理规范
最近架构升级,对java 异常处理机制做了一定的整理规范是大家一致认可后,并遵循的。附件是我认为合理的异常处理机制,大家可以参考下,提出更合理的建议,我们大家一致遵循,使之成为规范欢迎拍砖1:首先是dao层,一般不做异常的具体处理,直接外网抛/*** */package com.tech.sandu.Exception;import java.sql.SQL
2017-07-01 11:36:28
1450
原创 java+JavaScript 实现 非对称加密 rsa
java侧是这样的package com.tech.sandu.dal.utils;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import ja
2017-06-23 17:57:50
3414
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人