`
文章列表
递归转非递归总结: 递归的时候,计算机透明的帮我们做了入栈,出栈等等操作,而且在入栈的时候,还记录了上下文信息,很重要的是记录了当此节点出栈后,应该继续从什么位置进行执行。 若我们自己进行递归转非递归,那么我们就得自己记录上面的信息了。入栈及记录出栈后从什么位置开始执行。 列子: 递归 public class Recursion { public static int count = 0; public static int childrenCount = 5; public static void builderTree(int[] tree,int index) { if ...
假如一条记录可以用id,idcard,name分别唯一的查询到, 且提供了三个接口(支持上面的查询) 存储映射 key:id      idcard      name value:id         id        id 存储真实值 key:id   value:value 需要查询两次(用idcard 与name来查询) 想的是比方用idcard来查询,查询缓存,有值,那么在通过这个值去取真实数据。    第一次取   查询缓存  不存在记录,那么取值,在将idcard与记录标识存起来    在看看记录标识在缓存中是否存在  不存在  则缓存起来 避免多个值被存储,节约空间 ...
import java.io.Serializable; import java.util.List; /** * Created by Administrator on 2017/4/19. * 这是基于是单线程来执行同步   千万不允许多线程执行    多线程执行太难写了  放弃吧!!!!! * 这里我们考虑有时间因素、以及mysql mvcc非锁定读的因素。 * 时间因素我们这样解决:1、以主服务器的时间为准。而非本地时间。本地时间快与慢不会影响同步功能 *                       2、主服务器可以调整它的时间,可以向前(改小时间)或向后(改大时间)调整,程 ...
Rabbitmq高可用设计思路 设计保证: 1、消息不丢失(将消息存储到磁盘)。Rabbitmq服务器分为内存服务器和磁盘服务器,若你需要你的消息服务器保证消息不丢失,则将消息保存到磁盘,是磁盘消息。 如何将消息设置为磁盘消息 ...
rabbitmq实现rpc调用基本思路: 客户端(client):客户端发起rpc调用,这当成一个消息,发送到rabbitmq服务器。这个消息会携带两个特殊(额外)的信息,一个是调用序号,一个是回调队列名称。调用序号需要服务端原样返回,而回调队列名称是用于服务端将结果放入这个队列中,以便客户端取回结果。 服务端(service):服务端接收到了一个rpc调用后,执行调用代码,将结果返回到指定的回调队列中去。 这里我们可以约定一个数据模型,见代码: public class RpcInvokeModel implements Serializable {           //真实传输的数据 ...
package com.cc.sec; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.web.filter ...
//<!--蒙板--> var showLoad = '<div id="bigloadGifShow" style="filter: Alpha(opacity=30); -moz-opacity: 0.3; -khtml-opacity: 0.3;position: absolute; left: 0; top: 0; display: back; overflow: hidden;background-color: #000;"></div>'; //<!--弹出层----> showLoad+ ...
通过修改web.xml让服务器重启的问题? 通过修改web.xml让服务器重启时,项目中开启的线程都不会自动的被关闭,只有你自己去传达web容器关闭事件,通知运行中的线程,让其自动关闭。这里我经常使用的是观察者模式, 代码如下: 监听web容器关闭事件,并自启动一个关闭线程来进行关闭操作,因为web容器的关闭时间是有限的。 public class WebContentClose implements ServletContextListener,Runnable { @Override public void contextDestroyed(ServletContextEvent arg ...
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.Date; import com.pdy.test.User; //这就是一个实现了深拷贝的反射 public class UseReflectColne2 { public static Object clone(Object obj) throws SecurityException, NoSuchMethod ...
package com.hengyunsoft.cryptography.sign.desimpl; import java.util.Arrays; import java.util.Random; import com.hengyunsoft.cryptography.sign.SignReversible; public class SimpleDesSign implements SignReversible { //下面这个是秘钥 private byte[] secretKeys = new byte[] {5,62,54,110,26,57,96,41,96,45,12 ...
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; public class ApiInvokeLimit { private volatile long nextTime = 0; private final long invetime = 5; private final int maxCount = 2000; private ConcurrentHashMap<String,AtomicInteger> appKey2Inv ...
package com.hengyunsoft.test; import java.util.Comparator; import java.util.Random; import edu.emory.mathcs.backport.java.util.Arrays; public class PriorityArray<E> { /** * 当前已用大小 */ private int size; private Object[] e; private Comparator<E> comparator; public PriorityArr ...
import java.util.LinkedList; import java.util.Random; public class ThreadDispatch extends Thread{ //需要暂用几个时间片 private int count; //是否分配到了处理器标志 private volatile boolean holdCpu; //暂用的处理器名称 private volatile String cpuName; public ThreadDispatch(int count,String name) { super(name); this.c ...
package com.huawei.test; import java.util.HashMap; import java.util.Map; public class SpinReadWriteLock { private volatile Thread writeThread = null; private volatile int writeCount = 0; //标记已经获取读lock的线程想要获取写lock   但被阻止了(因各种原因) private volatile Thread readRequestWriteLockingThread = null; pri ...
定时任务: 1小时一次: 1、商定取值时间:时间 = min(主服务器时间 - 1小时5分,上次商定的时间 + 1小时) 这里的5分钟我考虑的是最大事物的用时。就是假定所有事物的时间长度不可以超过5分钟。 因为我们在程序中经常是先设置更新时间,然后插入数据库,然后再做些别的(浪费了一些时间), 最后提交了事物。那么根据mvcc模式,非锁定读,是读快照。导致更新时间本应该在本次同步中被同步的,而并没有同步到 (不可见),而下一次的同步时间又大于了这个更新时间。导致会丢失更新。所以每次同步,都多同步5分钟的数据。 就怕丢下这种间隙中的数据。 2、用商定的取值时间进行同步数据。 主服务器数据不可以 ...
Global site tag (gtag.js) - Google Analytics