人工智能
qq_1249870753
一个热爱分享的程序员。欢迎分享知识1249870753@qq.com
展开
-
经常被问的LinkedHashMap
LinkedHashMap简介LinkedHashMap是一个根据某种规则有序的hashmap。根据名字,我们也可以看出这个集合是有hash散列的功能的同时也有顺序。hashmap是无法根据某种顺序来访问数据的,例如放入集合的元素先后的顺序。list都有这个功能,可以根据放入集合的先后来访问具体的数据。这里大家也肯定是有疑问的,例如都已经使用了hash了,为什么还要去保证顺序访问。这个在后面的场景中解释。LinkedHashMap的实现当刚遇到这个集合的时候,我也疑惑,能同时满足条件的数据结构究原创 2020-05-10 14:53:32 · 476 阅读 · 0 评论 -
从classloader1.6-1.7
lassloader从1.6到1.7整体分成了两个版本。重点区别就是并行类加载。1.6版本protectedsynchronizedClassloadClass(Stringname,booleanresolve)throwsClassNotFoundException{……returnc;}1.6版本加了一个方法锁。1.7版本privatefinalConcurrentHa...原创 2020-05-10 14:51:24 · 229 阅读 · 0 评论 -
优先级队列~~~~~~~~~
队列与栈两种数据结构是老生常谈的问题了,其中队列是先进先出(FIFO),栈是先进后出(FILO),明白这两个特性,就很简易理解了。但是有一种特殊的队列也是我们常用的数据结构——优先级队列。优先队列的作用是能保证每次取出的元素都是队列中权值最小(大)的,Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通过堆实现,具体说是通过完全二叉树(complete bin...原创 2020-04-19 11:24:40 · 353 阅读 · 0 评论 -
对账系统的设计方案.你有兴趣吗?
前言对账系统作为支付系统中的基石系统,处于整个支付环节中的最后一层,主要用来保证我方支付数据与第三方支付渠道或银行的数据一致性。在没有对账系统之前,财务在第二日手工核对前一日的应收与实收。倘若不一致,这就需要一一核对数据,找出不一致的数据。对账系统出现之后,就可减少以这种繁琐手工操作,财务只需要每天关注系统的对账记录,释放了生产力。本文主要结合实际的项目经验,聊聊对账系统的设计方案。...原创 2020-04-18 17:19:56 · 395 阅读 · 0 评论 -
如何保证缓存与数据库的双写的一致性?这样答面试官
Cache Aside Pattern 最初级的缓存不一致问题及解决方案 比较复杂的数据不一致问题分析 分布式缓存是现在很多分布式应用中必不可少的组件,但是用到了分布式缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?Cache Aside Pattern最经典的缓存+数据库读写的模式,就是 Cach...原创 2020-04-18 17:12:21 · 195 阅读 · 0 评论 -
线上服务应急攻关方法论
1海恩法则和墨菲定律海恩法则指出:每一起严重事故的背后,必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。海恩法则强调两点:(1)事故的发生是量的积累的结果;(2)再好的技术,再完美的规章,在实际操作层面,也无法取代人自身的素质和责任心。根据海恩法则,一起重大事故发生之后,我们要在处理事故和解决问题的同事,还要及时的对同类问题的「事故征兆」和...原创 2020-03-31 21:20:30 · 966 阅读 · 0 评论 -
Redis面试连环问,快看看你能走到哪一步!
今天,我不自量力的面试了某大厂的java开发岗位,迎面走来一位风尘仆仆的中年男子,手里拿着屏幕还亮着的mac,他冲着我礼貌的笑了笑,然后说了句“不好意思,让你久等了”,然后示意我坐下,说:“我们开始吧。看了你的简历,觉得你对redis应该掌握的不错,我们今天就来讨论下redis……”。我想:“来就来,兵来将挡水来土掩”。Redis是什么面试官:你先来说下redis是什么吧我:(这不就是...原创 2020-03-29 22:31:03 · 262 阅读 · 0 评论 -
【35期】谈谈你对Java线程之间通信方式的理解
多线程和并发,在平时开发中有些小伙伴用的不多,但是有些工作经验的面试中还是容易被问到的,故在之后几期先整理一些常见的多线程面试题供参考。通信方式 ①同步 ②while轮询的方式 ③wait/notify机制 ④管道通信 一,介绍本文总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代...原创 2020-03-29 22:29:23 · 176 阅读 · 0 评论 -
支撑百万级并发,Netty如何实现高性能内存管理
Netty作为一款高性能网络应用程序框架,实现了一套高性能内存管理机制通过学习其中的实现原理、算法、并发设计,有利于我们写出更优雅、更高性能的代码;当使用Netty时碰到内存方面的问题时,也可以更高效定位排查出来本文基于Netty4.1.43.Final介绍其中的内存管理机制ByteBuf分类Netty使用ByteBuf对象作为数据容器,进行I/O读写操作,Netty的内存管理也是...原创 2020-03-28 22:10:34 · 295 阅读 · 0 评论 -
深度解析RocketMQ Topic的创建机制
我还记得第一次使用rocketmq的时候,需要去控制台预先创建topic,我当时就想为什么要这么设计,于是我决定撸一波源码,带大家从根源上吃透rocketmq topic的创建机制。topic在rocketmq的设计思想里,是作为同一个业务逻辑消息的组织形式,它仅仅是一个逻辑上的概念,而在一个topic下又包含若干个逻辑队列,即消息队列,消息内容实际是存放在队列中,而队列又存储在broker中...原创 2020-03-28 10:50:48 · 863 阅读 · 0 评论 -
Dubbo服务治理之灰度发布方案(版本发布控制影响范围)
方案背景背景:基于Dubbo服务的治理,是否可以支持业务级别的灰度发布、是否基于业务参数的路由转发。例如以GIS为例,当发布一个新版本时,是否可以以按照解析地址或合作伙伴来区分,版本发布之初,只希望地址为:广东省的解析请求发送到新版本,而其他的地址请求还是使用旧版;或者根据合作伙伴例如UCP(优享寄)的请求转发到新版本服务器,其他合作伙伴还是转发到旧版,实现业务级别的灰度发布,控制新版本的影响...原创 2020-03-28 10:49:04 · 536 阅读 · 0 评论 -
从Nginx、Apache工作原理看为什么Nginx比Apache高效!
Nginx才短短几年,就拿下了Web服务器大壁江山,众所周知,Nginx在处理大并发静态请求方面,效率明显高于Httpd,甚至能轻松解决C10K问题。在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx + PHP(FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。...原创 2020-03-26 20:36:35 · 168 阅读 · 0 评论 -
为什么代码规范要求SQL语句不要过多的join?
送分题面试官:有操作过Linux吗?我:有的呀面试官:我想查看内存的使用情况该用什么命令我:free 或者 top面试官:那你说一下用free命令都可以看到啥信息我:那,如下图所示 可以看到内存以及缓存的使用情况 total 总内存 used 已用内存 free 空闲内存 buff/cache 已使用的缓存 avaiable 可...原创 2020-03-25 12:44:09 · 206 阅读 · 0 评论 -
参考:创业公司搭建自己的技术架构
其实这里面主要给大家说的是技术选型。由于我中型互联网公司工作,针对用于手机APP或者pc的后台开发,基本可以支撑几万用户。本文会对可能用到的相关技术进行技术选型的说明,以及技术的架构介绍技术指标说一下一些技术指标的计算过程可以作为其他同学的参考 QPS,如果是5万日活,使用集中在每天的4小时,每个用户大概产生100的请求,那么平均下来,我们系统大概应该支撑的请求为:50000 ...原创 2020-03-23 13:31:36 · 277 阅读 · 0 评论 -
多个单列索引和联合索引的区别详解
背景:为了提高数据库效率,建索引是家常便饭;那么当查询条件为 2 个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下。一、联合索引测试注:Mysql 版本为 5.7.20创建测试表(表记录数为 63188):CREATE TABLE `t_mobilesms_11` ( `id` bigint(20) N...原创 2020-03-23 13:28:12 · 403 阅读 · 0 评论 -
探讨:为什么大公司一定要使用微服务?
而比较有趣的这其中以小公司出来的人为绝大多数,大的公司出来的人简历上倒是很少提这些东西。对于我自己来说,从 2015 年就开始关注这一块,看过马丁·福勒最开始的关于微服务的论文、也看过不少对微服务的论证的英文文章和书,也研究过 Spring Cloud、Sofa 等开源实现以及 Service Mesh。考虑到我们公司研发团队人力不足、基础设施不完善,当初是没有推行微服务的。...原创 2020-03-22 15:41:24 · 704 阅读 · 1 评论 -
Hutool Java工具类库导出Excel,超级简单!
前言在开发应用系统的时候,导出文件是必不可放的功能。以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用。今天给大家介绍一款新工具,java工具类库Hutool。之前整体介绍过该工具库:贼好用的Java工具类库,GitHub星标10k+,你在用吗?Hutool简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低...原创 2020-03-22 15:11:02 · 688 阅读 · 0 评论 -
java毕业设计_小型图书管理系统
小型图书管理系统设计与实现mysql数据库创建语句小型图书管理系统设计与实现oracle数据库创建语句小型图书管理系统设计与实现sqlserver数据库创建语句小型图书管理系统设计与实现spring+springMVC+hibernate框架对象(javaBean,pojo)设计小型图书管理系统设计与实现spring+springMVC+mybatis框架对象(javaBean,pojo)...原创 2020-03-22 15:09:10 · 589 阅读 · 0 评论 -
高手总结的9种 OOM 常见原因及解决方案
当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。转存失败重新上传取消1、Java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap sp...原创 2020-03-22 15:07:28 · 1030 阅读 · 0 评论 -
Java项目构建基础:统一结果,统一异常,统一日志
统一结果返回目前的前后端开发大部分数据的传输格式都是json,因此定义一个统一规范的数据格式有利于前后端的交互与UI的展示。统一结果的一般形式 是否响应成功; 响应状态码; 状态码描述; 响应数据 其他标识符 结果类枚举前三者可定义结果枚举,如:success,code,message@GetterpublicenumRes...原创 2020-03-21 11:20:55 · 573 阅读 · 0 评论 -
在SpringBoot中使用Spring Session解决分布式会话共享问题
前言如果你正在使用Java开发Web应用,想必你对HttpSession非常熟悉,但我们知道HpptSession默认使用内存来管理Session,如果将应用横向扩展将会出现Session共享问题。Spring Session提供了一套创建和管理Servlet HttpSession的方案,以此来解决Session共享的问题,更为重要的是在Spring Boot中使用它极其简单。Ses...原创 2020-03-21 11:07:00 · 200 阅读 · 0 评论 -
Redis(7)——持久化【一文了解】
一、持久化简介Redis的数据全部存储在内存中,如果突然宕机,数据就会全部丢失,因此必须有一套机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制,它会将内存中的数据库状态保存到磁盘中。持久化发生了什么 | 从内存到磁盘我们来稍微考虑一下Redis作为一个"内存数据库"要做的关于持久化的事情。通常来说,从客户端发起请求开始,...原创 2020-03-20 20:29:19 · 171 阅读 · 0 评论 -
Redis(9)——史上最强【集群】入门实践教程
一、Redis 集群概述Redis 主从复制到 目前 为止,我们所学习的 Redis 都是单机版的,这也就意味着一旦我们所依赖的 Redis 服务宕机了,我们的主流程也会受到一定的影响,这当然是我们不能够接受的。所以一开始我们的想法是:搞一台备用机。这样我们就可以在一台服务器出现问题的时候切换动态地到另一台去:转存失败重新上传取消幸运的是,两个节点数据的同步我们可以使用 R...原创 2020-03-20 20:26:42 · 156 阅读 · 0 评论 -
图文并茂,带你梳理一下 OAuth2.0 概念和授权流程机制
阅读目录 OAuth2 的概念 OAuth2授权模式 授权码模式(Authorization Code Grant) 隐式授权模式(Implicit Grant) 密码模式(Resource Owner Password Credentials Grant) 客户端模式(Client Credentials Grant) OAuth...原创 2020-03-18 21:12:34 · 392 阅读 · 0 评论 -
SpringBoot配置文件放在jar外部
Spring Boot程序默认从application.properties或者application.yaml读取配置,如何将配置信息外置,方便配置呢?查询官网,可以得到下面的几种方案:通过命令行指定SpringApplication会默认将命令行选项参数转换为配置信息例如,启动时命令参数指定:java-jarmyproject.jar--server.port=...原创 2020-03-18 21:08:51 · 237 阅读 · 0 评论 -
网络常见的 9 大命令,非常实用!
1.ping 命令ping 是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping 就是一个测试程序,如果 ping 运行正确,大体上就可以排除网络访问层、网卡、Modem 的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。ping 能够以毫秒为单位显示发送请求到返回应答之间的时间量。如果应答时间短,表...原创 2020-03-17 23:11:29 · 203 阅读 · 0 评论 -
在RedisTemplate中使用scan代替keys指令
SCAN 简介SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements): SCAN 命令用于迭代当前数据库中的数据库键。 SSCAN 命令用于迭代集合键中的元素。 HSCAN 命令用于迭代哈希键中的键值对。 ZS...原创 2020-03-17 23:05:14 · 1065 阅读 · 0 评论 -
python实现从文件查找关键字
要求写一个函数,传入一个路径和一个关键字(关键字是文件内容),找到文件内容里面有这个关键字的文件代码 123456789101112131415161718 import osdef find_file(keywords,path='/Users/wym/Desktop/work/Besttest/笔记/day6')...原创 2020-03-12 23:12:36 · 12184 阅读 · 1 评论 -
13个 Spring MVC 顶级技巧!
通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求。然后,控制器调用业务类来处理与业务相关的任务,然后将客户端重定向到逻辑视图名称,该名称由Spring的调度程序Servlet解析,以呈现结果或输出。这样就完成了典型的请求-响应周期的往返。今天整理了一下编写Spring MVC控制器的14个技巧,你今天get到了吗?(≧▽≦)/1.使用@Controller构造...原创 2020-03-08 12:21:06 · 170 阅读 · 0 评论 -
工作不饱和 ? 给你 9个程序员接私活的网站
程序员客栈:程序员的经纪人 快码众包-让互联网产品开发更快速 开源中国众包平台 oschina众包 Coding 码市 - 云技术众包平台 我爱方案网-电子方案开发,供应链平台 码易-高质量软件众包交付服务平台 人人开发 -让管理软件开发更容易 我要外包网:找项目、找团队、投资合作,只要技术过硬就不怕没项目 you...原创 2020-03-08 12:19:05 · 607 阅读 · 0 评论 -
rm -rf /* 真来了,微盟遭员工“删库跑路”:SaaS服务暂停,或涉及300万商户
2月25日消息:日前,微盟遭遇内部员工“删库跑路”事件,服务出现故障,大面积服务集群无相应。微盟方面今日发布《自愿公告SaaS业务生产环境和数据遭到破坏》,称2月23日晚7点,收到系统监控报警,服务出现故障,大面积服务集群无相应。 微盟表示,本次SaaS业务数据系遭一员工“人为破坏”,而在SaaS 生产环境和数据遭到破坏后,微盟当前已暂时无法向客户提供 SaaS 产品服务。微盟事后对恶意破...原创 2020-02-25 20:52:02 · 3273 阅读 · 0 评论 -
重载“+”与StringBuilder效率及原来
String对象是不可变的。涉及String值的操作都是创建了一个全新的String对象,原来的String值一点也没有变。用于String的“+”与“+=”是Java中仅有的两个重载过的操作符,并不允许程序员重载任何操作符。操作符“+”可以用来连接String:publicclassConcatenation{publicstaticvoidmain(String...原创 2020-02-08 22:33:23 · 234 阅读 · 0 评论 -
从零开始javaweb项目——毕业设计参考指南
前言本文章详细的列出了开发一个传统JavaWeb项目需要注意的要点,从环境准备开始到三层架构搭建,需要注意的地方全部罗列出来。第一部分:环境准备1. Maven命令创建web骨架mvnarchetype:create-DgroupId=net.rocketa-DartifactId=mywebapp-DarchetypeArtifactId=maven-archetype...原创 2020-02-08 22:19:40 · 2021 阅读 · 0 评论 -
Spring框架的@Async实现异步任务
概要说明在此篇文章中,我们根据使用@Async注解进行探索Spring对异步执行的支持。简单的把@Async注解放到Bean的方法上就会使用不同的线程运行,也就是说,调用者执行此方法不用一直等待整个方法执行完毕。在Spring中比较有趣的一点就是事件机制也支持异步处理,如果你想这样使用的话。配置并开启@Async扫描支持让我们开始使用JAVA的注解配置开启异步处理机制,只需要简...原创 2020-01-06 22:54:19 · 497 阅读 · 0 评论 -
效率专精:前后端分离实践中如何提升RestAPI开发效率【建议精读】
团队内部RestAPI开发采用设计驱动开发的模式,即使用API设计文档解耦前端和后端的开发过程,双方只在联调与测试时耦合。在实际开发和与前端合作的过程中,受限于众多因素的影响,开发效率还有进一步提高的空间。本文的目的是优化工具链支持,减少一部分重复和枯燥的劳动。现状梳理前后端工作流 需求理解:前后端先理解产品思路、需求的详细内容 敲定接口:后端出API设计文档初稿,与前端面...翻译 2020-01-01 23:06:08 · 630 阅读 · 0 评论 -
Git 从入门到精通,这篇包教包会
简介Git 是什么Git 是一个开源的分布式版本控制系统。什么是版本控制版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。什么是分布式版本控制系统介绍分布式版本控制系统前,有必要先了解一下传统的集中式版本控制系统。集中化的版本控制系统,诸如 CVS,Subversion 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的...翻译 2019-12-30 22:42:55 · 812 阅读 · 0 评论 -
java并行并行并行
前言谈到并行,我们可能最先想到的是线程,多个线程一起运行,来提高我们系统的整体处理速度;为什么使用多个线程就能提高处理速度,因为现在计算机普遍都是多核处理器,我们需要充分利用cpu资源;如果站的更高一点来看,我们每台机器都可以是一个处理节点,多台机器并行处理;并行的处理方式可以说无处不在,本文主要来谈谈Java在并行处理方面的努力。无处不在的并行Java的垃圾回收器,我们可以看到每一代...翻译 2019-12-28 21:07:47 · 500 阅读 · 0 评论 -
了解 Swagger 文档
前言目前来说,在 Java 领域使用Springboot构建微服务是比较流行的,在构建微服务时,我们大多数会选择暴漏一个REST API以供调用。又或者公司采用前后端分离的开发模式,让前端和后端的工作由完全不同的工程师进行开发完成。不管是微服务还是这种前后端分离开发,维持一份完整的及时更新的REST API文档,会极大的提高我们的工作效率。而传统的文档更新方式(如手动编写),很难保...原创 2019-12-27 23:28:16 · 572 阅读 · 0 评论 -
彻底搞懂MySQL分区
一.InnoDB逻辑存储结构 段 区 页 二.分区概述 分区 三.分区类型 RANGE分区 LIST分区 HASH分区 KEY分区 四.分区和性能一.InnoDB逻辑存储结构首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。段段就是上图...翻译 2019-12-27 23:17:29 · 134 阅读 · 0 评论 -
一份tcp、http面试指南,常考点都给你了
TCP要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。TCP/IP 协议分层模型 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换 链路层代表驱动 网络层 使用 IP 协议,IP 协议基于 IP 转发分包数据 IP 协议是个不...翻译 2019-12-26 23:02:49 · 83 阅读 · 0 评论