- 博客(25)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java实现一致性哈希算法
一致性哈希算法在分布式系统中应用广泛,可用于网关负载均衡、数据库分库分表、分布式缓存。使用一致性哈希算法可以尽可能的将同一资源请求路由到同一台服务器上。本文代码中仅实现顺时针方式查找核心方法:新增一个节点和N个虚拟节点删除节点及相关联的虚拟节点从某个点开始顺时针查找节点获取节点变动后的影响范围及其下一个接收请求的节点算法效果// 创建哈希环ConsistentHashLoop hashLoop = new ConsistentHashLoop(10000);Consistent
2020-07-23 17:44:48
420
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 十条关于SQL优化的小技巧~
1.在经常需要进行检索的字段上创建索引。索引的数量需要控制,过多的索引会降低insert或update的效率。2.避免在索引上使用计算。在where语句中,如果索引列是计算或者函数的一部分,则DBMS的优化器不会使用索引。3.使用预编译查询(使用参数化SQL)。既可以避免SQL注入漏洞攻击,数据库还会对参数化SQL进行预编译,在DBSM会为这个SQL进行查询优化。...
2019-06-14 00:55:58
749
原创 Java获取今天、昨天、7天前、本月第一天、本月最后一天的开始时间和结束时间
获取今天的开始时间、结束时间;获取昨天的开始时间、结束时间;获取本月第一天的开始时间、最后一天的结束时间;获取本年第一天的开始时间、最后一天的结束时间......
2024-01-12 16:57:08
722
原创 MySQL中的锁
MySQL支持四种级别的锁:全局锁、表级锁、页级锁、行级锁。MyISAM和Memory存储引擎采用的是表级锁;InnoDB存储引擎既支持行级锁,也支持表级锁,但默认情况下是采用行级锁。
2023-09-04 19:24:40
935
1
原创 Java对象的四种引用类型
在Java中,对象的引用类型分为四种:强引用、软引用、弱引用、虚引用强引用:正常情况下声明的对象皆为强引用,在强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用,则不会垃圾回收。软引用:软引用一般被作为缓存使用,软引用在垃圾回收时,虚拟机会根据当前系统的剩余内存来决定是否对软引用进行回收,如果内存比较紧张,虚拟机则会回收软引用对应的空间。弱引用:与软引用类似,不同的是,弱引用在进行垃圾回收时,是一定会被回收掉的。虚引用:虚引用不会决定对象的生命周期...
2021-03-29 09:21:27
412
原创 接口的幂等性
客户端对于某一个资源的多次请求,操作结果应当是相同的,这就叫幂等性。发起查询的请求并不会对数据进行增删改,所以查询请求是天然具备幂等性的。实现方法:在表中新增一个状态字段,处理请求时,先判断该状态是否为“已完成”,如果是,则直接返回成功,如果不是,则正常处理请求并修改状态为“已完成”。此方法在串行的情况下没什么问题,但是在高并发下,则没办法保证操作的原子性,会出现首次请求还未来得及修改状态,第二次请求就已经开始处理的情况,所以需要通过加锁的方式来将其改为串行操作。...
2021-03-06 16:46:02
170
原创 解决 "Access-Control-Allow-Methods 列表中不存在请求方法 DELETE" 错误
IE浏览器中访问请求方法为 DELETE 的接口时,出现以下错误而在Chrome和Firefox浏览器中却访问正常,根据错误日志,发现在发起OPTIONS 预请求后就报错了。查看 OPTIONS 预请求的Access-Control-Allow-Methods 响应头值为通配符 * 。结果查找资料,发现 Access-Control-Allow-Methods 通配符 * 在...
2020-04-09 17:52:52
15757
1
原创 Spring中的事务传播特性
事务的传播特性可以通过@Transactional的propagation属性指定例:@Transactional(propagation=Propagation.REUIRED)REQUIRED:默认的传播特性,业务方法需要在一个事务中运行,如果一个方法处在事务中那么就会加入这个事务,否则就会创建一个事务。NEVER:指定的业务方法绝对不能在事务范围内运行,如果业务方...
2019-10-24 10:41:24
296
原创 计算机中的内存模型
计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。...
2019-10-22 14:47:57
246
原创 MyBatis中的一级缓存与二级缓存
一级缓存mybatis默认会开启一级缓存,该缓存是session级别的,在同一个session中,如果使用相同语句进行查询,则会使用一级缓存。二级缓存映射语句文件中的所有 select 语句将会被缓存。 映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。 缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。...
2019-10-22 14:38:47
218
原创 final、finally、finalize都有什么不同?
前言Java 语言有很多看起来很相似,但是用途却完全不同的语言要素,这些内容往往容易成为面试官考察你知识掌握程度的切入点。今天,我要问你的是一个经典的 Java 基础题目,谈谈 final、finally、 finalize 有什么不同?典型回答final可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可...
2019-07-22 19:01:21
118
原创 深度优先搜索与宽度优先搜索
深度优先搜索简称:DFS基本思路深度优先遍历图的方法是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。深度优先搜索采用了一种“一直向下走,走不通...
2019-07-11 17:45:34
2522
原创 设计模式中的开闭原则
原则: 一个软件实体对扩展开放,对修改关闭。如何做到开闭原则? "开-闭"原则从另一个角度讲述,就是所谓的"对可变性的封装原则"。 "对可变性的封装原则"讲的是找到一个系统的可变元素,将之封装起来。 总结:找到一个系统的可变元素,将它封装起来。里氏替换原则 原则:任何基类可以出现的地方,子类一定可以出现。里氏替换原则是对"开-闭...
2019-07-11 09:18:46
392
原创 分布式系统中的CAP原则
CAP 原则指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新...
2019-07-09 09:53:11
843
原创 数据库中如何正确使用索引?
SQL索引有两种,聚集索引和非聚集索引。例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。那他们是怎么存储的呢? 聚集索引就是在数据库被开辟一个物理空间存...
2019-07-08 14:16:44
10461
转载 如何在npm发布自己造的包
1、前言自从Node.js出现,它的好基友npm(node package manager)也是我们日常开发中必不可少的东西。npm让js实现了模块化,使得复用其他人写好的模块(搬砖)变得更加方便,也让我们可以分享一些自己的作品给大家使用(造轮子),今天这里我就给大家分享一个用命令行压缩图片的工具,它的用法大致是这样的:// 全局安装后,在图片目录下,运行这行$ tinyhere这...
2019-03-09 17:40:29
395
原创 Java获取微信AccessToken
使用 Java 获取微信开发中需要用到的 AccessToken,超精简~需要准备的东西:appid、secret (均可在微信公众平台后台获取)我使用了 Spring Boot 作为开发框架。建项目等基本步骤就跳过啦,直接上核心代码 ~ Spring Boot 启动器:@Configuration@SpringBootApplicationpublic class Application...
2018-06-17 00:48:13
2234
转载 2018 浅谈前端面试那些事
虽然今年没有换工作的打算 但为了跟上时代的脚步 还是忍不住整理了一份最新前端知识点知识点汇总1.HTMLHTML5新特性,语义化浏览器的标准模式和怪异模式xhtml和html的区别使用data-的好处meta标签canvasHTML废弃的标签IE6 bug,和一些定位写法css js放置位置和原因什么是渐进式渲染html模板语言meta viewport...
2018-04-04 10:51:03
366
原创 CentOS 6、CentOS7 防火墙开放指定端口
当我们在CentOS服务器中装了一些开发环境(如 tomcat、mysql、nginx 等...)时,希望能从外界访问,就需要配置防火墙对指定端口开放。CentOS 6.51.开放指定端口/sbin/iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT //写入修改/etc/init.d/iptables save ...
2018-03-28 11:35:20
9064
原创 微信小游戏开放测试~
“ 小程序游戏类目开放测试,开发者可开发、调试小游戏。同时,对小游戏开放微信社交关系链、虚拟支付能力。” 01—小游戏开放测试 开发者注册小程序帐号后可选择“游戏”类目,并开发、调试小游戏。开发者的小游戏暂不可对微信用户发布,具体发布时间敬请期待。 详见《小游戏接入指南及资质要求》、《小游戏开发文档》 02—小游戏新能力 为提...
2018-03-26 10:51:32
2927
原创 js 对象替换字符串占位符
在javascript中,我们常常会有这样的需求,异步加载数据,并以元素追加的方式追加到页面中。在拿到数据后,如果在不使用其他第三方框架的情况下,则需要手动替换元素中的动态内容并拼接元素节点,写起来不仅麻烦,而且可读性非常差。因此,我们可以自己来实现占位符替换功能,来快速的替换元素动态内容,话不多说,先上代码。 核心代码 String.prototype.form...
2017-07-13 10:38:18
10656
1
转载 MySQL查询今天、昨天、本周、本月、本季、本年的数据
今天select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7...
2017-06-27 16:40:10
17006
3
原创 jquery实现from表单封装成json对象
经常会有这样的需求,就是使用ajax异步提交表单数据,我们往往会将他们封装成json发送。那么如何简单而又快速的将表单封装成json呢?我们先来看jquery给我们提供的一个方法:serializeArray()该方法的用途就是将表单封装成一个数组。所以,我们只需要在这个方法的基础,稍作修改。核心代码$.fn.serializeObject = function () {
2017-03-22 12:14:58
3707
原创 bootstrap-Treeview实现级联勾选
核心方法var nodeCheckedSilent = false;function nodeChecked (event, node){ if(nodeCheckedSilent){ return; } nodeCheckedSilent = true; checkAllParent(node); checkAllSon(node)...
2017-03-14 14:00:37
16778
17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人