Java编程
Arrogant_95
这个作者很懒,什么都没留下…
展开
-
Java正则表达式向前引用
Pattern p = Pattern.compile("(\\d(\\d))\\2"); Matcher matcher = p.matcher("322"); System.out.println(matcher.matches());其中\2并不是匹配数字2而是代表引用前面的第2组匹配的值,所以匹配的结果会是True。做个对比 ...原创 2018-09-27 11:26:03 · 727 阅读 · 0 评论 -
redis集群分布式锁的实现与思考
分布式锁能帮助我们在分布式系统共享数据的并发中避免并发问题,要实现分布式锁必须保证加锁和解锁的操作是原子性的,redis的setnx和del刚好满足加锁和解锁的要求,下面使用setnx来实现可以超时的分布式锁:import org.jmqtt.common.config.StoreConfig;import redis.clients.jedis.JedisCluster;import j...原创 2019-01-20 17:12:41 · 2285 阅读 · 0 评论 -
redis集群中的模糊匹配
模糊匹配用keys *不就行了?,keys *是一次性返回所有满足条件的键,而redis是一个单线程的reactor,如果满足条件的数量很多的话就会堵塞线程,极大降低了redis的存取速度,那还有什么办法不堵塞线程的情况下进行模糊匹配呢,这个设计者肯定是已经想好了,通过scan就可以进行这样的操作。先把代码贴出来再讲一下代码的一些关键部分。public Collection<Message...原创 2019-01-20 16:16:05 · 1907 阅读 · 0 评论 -
通过泛型对方法进行重用
在做项目的时候发现虽然返回值的类型不一样,但是调用的方式和方法里面的实现几乎是一致的,如果再重新写一个方法就很浪费了,通过泛型就可以对这个方法进行重用,满足了需求。下面是实现的例子: public <T> Collection<T> hgetAllMsg(String clientId,Class objectClass) { ArrayList&a原创 2019-01-20 15:57:20 · 219 阅读 · 0 评论 -
通过单例模式访问redis集群
之前就在阿里云服务器上搭建了集群,但如何用Java访问到redis集群呢,肯定不是一个一个节点的访问,通过像是树干一样的接口来访问redis集群,但又不能每个访问redis集群的进程都生成一个新的cluster接口,所以这里选择单例模式来实现。import org.jmqtt.common.config.StoreConfig;import redis.clients.jedis.HostAn...原创 2019-01-20 15:32:22 · 840 阅读 · 0 评论 -
redis集群错误关闭后报错
测试的时候不小心把集群中某个节点给关闭了,然后导致用客户端连接不上整个集群,而且重新用redis-trib.rb create --replicas 1 addr:port (addr为ip,port为端口)方法来启动集群时报错了:Node XXX is not empty. Either the node already knows other n。这是因为之前集群的配置和快照都存下来了...原创 2018-12-25 11:43:37 · 540 阅读 · 0 评论 -
redis集群搭建踩坑指南
最近在网上一台服务器上搭建了一个3主3从的redis集群,在这记录一下搭建过程中的踩坑过程。先贴出参考的博客:https://blog.csdn.net/pistolove/article/details/58298755https://www.cnblogs.com/jasonZh/p/9547079.html坑1:版本不够,想要搭建redis集群需要redis版本足够,然后ruby版本...原创 2018-12-25 10:43:45 · 493 阅读 · 0 评论 -
Java泛型详解和Class的使用。泛型类,泛型方法的详细使用实例
一、引入1、泛型是什么首先告诉大家ArrayList就是泛型。那ArrayList能完成哪些想不到的功能呢?先看看下面这段代码:[java] view plain copyArrayList<String> strList = new ArrayList&lt转载 2018-12-22 11:27:04 · 1519 阅读 · 0 评论 -
linux load average负载详细解释
一篇关于load average比较基础的文章,转载自http://blog.51cto.com/chaochang/2059548linux load average负载详细解释top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载表示 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进...转载 2018-11-02 11:17:15 · 163 阅读 · 0 评论 -
spring使用注解实现aop
练手把上一段代码通过注解来实现,新建了一个package annotation ,其中User.java文件中只多了一句话package annotation;import org.springframework.stereotype.Component;@Component("user") //把对象交给spring容器并命名为userpublic class User impl...原创 2018-10-27 11:09:01 · 183 阅读 · 0 评论 -
基于spring实现aop
前面省略导包的过程。项目开始先创建一个接口类public interface Use { void save(); void delete();}接着根据这个借口创建一个类作为切入点public class User implements Use { @Override public void save(){ System.out....原创 2018-10-27 10:22:05 · 221 阅读 · 0 评论 -
基于spring实现事务
想象一个银行转钱的场景,如果当转账的时候操作失误,然后钱扣了,但接收人的账号却没有钱到账,这多亏呀,所以这里就需要用到事务,事物的原子性就是事务内一个操作失败了就回滚到原来的状态,从而解决了这尴尬的局面。下面就用spring来实现上面的场景。老套路,先创建一个接口:package exchange;public interface account { void addMoney(I...原创 2018-10-31 20:41:20 · 180 阅读 · 0 评论 -
基于spring完成JDBC连接xampp中的phpmyadmin数据库
1.导包,导包的操作和导什么包就不说了。2.创建Dao接口,把要执行的方法封装起来:package Jdbc;public interface UserDao { void save(User u); void delete(Integer id); Jdbc.User find(Integer id);}3.创建一个类把接口的方法实现增,删,查packa...原创 2018-10-31 20:31:41 · 834 阅读 · 0 评论 -
Java正则表达式中appendReplacement和appendTail的使用
首先要知道appendReplacement的用法,这个方法会把匹配到的内容替换为 replaceContext,并且把从上次替换的位置到这次替换位置之间的字符串也拿到。然后appendTailde 用法是把最后一次匹配到内容之后的字符串追加到 StringBuffer 中。这两个方法的参数都是 StringBufferimport java.util.regex.Matcher;impo...原创 2018-09-27 11:37:20 · 425 阅读 · 0 评论 -
分享一个简单的Java后台 SpringBoot框架项目
之前2月份的时候把之前的前端页面加了后台功能,使用了Java中的SpringBoot框架,其中版本v1.0用了原生的jdbc,GitHub地址如下:https://github.com/Arrogant95/Registration_system/tree/v1.0,而版本v1.1使用了Mybatis,GitHub地址为https://github.com/Arrogant95/Registrat...原创 2019-05-23 20:18:45 · 288 阅读 · 0 评论