解决_解决方案 - CSDN
精华内容
参与话题
  • TeamViewer“试用期已到期”解决方法

    万次阅读 2014-12-10 09:28:21
    今天打开TeamViewer,显示试用期已到期,不能远程至其它电脑上。软件重装也没用,因为它与你的机器及网卡做了绑定。 ... 说明:操作前,原来的TeamViewer版本不用卸载。...首先,在运行里输入%appdata%,在出来的列表...

    今天打开TeamViewer,显示试用期已到期,不能远程至其它电脑上。软件重装也没用,因为它与你的机器及网卡做了绑定。

    查看网上资料,发现需要删除注册信息等操作才能继续使用,步骤如下:

    说明:操作前,原来的TeamViewer版本不用卸载。

    首先,在运行里输入%appdata%,在出来的列表中删除TeamViewer文件夹,如下图所示

    teamviewer1

    teamviewer2

    然后打开注册表,将以下两个目录下的TeamViewer目录删除。

    HKEY_LOCAL_MACHINE\SOFTWARE\ 
    HKEY_CURRENT_USER\SOFTWARE\

    再打开设备管理器,单击有线网卡鼠标右键,选择“属性”,如下图

    teamviewer3

    选择“本地管理地址”,原为不存在,更改为值,任意输入12位数字(最后可以将此选项改回“不存在”),如下图所示。

    teamviewer4

    最后,将9.0的crack文件拷贝至teamviewer安装目录并运行,点击“Patch”。

    teamviewer5

    完成后,再次运行TeamViewer,试用期到期的通知已经消失。

    teamviewer6

    teamviewer7

    展开全文
  • 作者:灰灰链接:...一方面: ResNet解决的不是梯度弥散或爆炸问题,kaiming的论文中也说了:臭名昭著的梯度弥散/爆炸问题已经很大程度上被normalized initialization and int...
    作者:灰灰
    链接:https://www.zhihu.com/question/64494691/answer/271335912
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    一方面: ResNet解决的不是梯度弥散或爆炸问题,kaiming的论文中也说了:臭名昭著的梯度弥散/爆炸问题已经很大程度上被normalized initialization and intermediate normalization layers解决了;

    另一方面: 由于直接增加网络深度的(plain)网络在训练集上会有更高的错误率,所以更深的网络并没有过拟合,也就是说更深的网络效果不好,是因为网络没有被训练好,至于为啥没有被训练好,个人很赞同前面王峰的答案中的解释。

    在ResNet中,building block:

    <img src="https://pic1.zhimg.com/50/v2-8a3aff8f962e06c523bae17c5b1cd3eb_hd.jpg" data-caption="" data-size="small" data-rawwidth="831" data-rawheight="482" class="origin_image zh-lightbox-thumb" width="831" data-original="https://pic1.zhimg.com/v2-8a3aff8f962e06c523bae17c5b1cd3eb_r.jpg">

    H(x)是期望拟合的特征图,这里叫做desired underlying mapping

    一个building block要拟合的就是这个潜在的特征图

    当没有使用残差网络结构时,building block的映射F(x)需要做的就是拟合H(x)

    当使用了残差网络时,就是加入了skip connection 结构,这时候由一个building block 的任务由: F(x) := H(x),变成了F(x) := H(x)-x

    对比这两个待拟合的函数,文中说假设拟合残差图更容易优化,也就是说:F(x) := H(x)-x比F(x) := H(x)更容易优化,接下来举了一个例子,极端情况下:desired underlying mapping要拟合的是identity mapping,这时候残差网络的任务就是拟合F(x): 0,而原本的plain结构的话就是F(x) : x,而F(x): 0任务会更容易,原因是:resnet(残差网络)的F(x)究竟长什么样子?中theone的答案:

    F是求和前网络映射,H是从输入到求和后的网络映射。比如把5映射到5.1,那么引入残差前是F'(5)=5.1,引入残差后是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。这里的F'和F都表示网络参数映射,引入残差后的映射对输出的变化更敏感。比如s输出从5.1变到5.2,映射F'的输出增加了1/51=2%,而对于残差结构输出从5.1到5.2,映射F是从0.1到0.2,增加了100%。明显后者输出变化对权重的调整作用更大,所以效果更好。残差的思想都是去掉相同的主体部分,从而突出微小的变化,看到残差网络我第一反应就是差分放大器


    后续的实验也是证明了假设的, 残差网络比plain网络更好训练。因此,ResNet解决的是更好地训练网络的问题,王峰的答案算是对ResNet之所以好的一个理论论证吧.

    展开全文
  • 缓存失效及解决方案

    千次阅读 2018-11-16 09:38:11
    这几天在网易云课堂上看到几个关于Java开发比较好的视频,推荐给大家 Java高级开发工程师公开课 这篇文章也是对其中一门课程的个人总结。 何谓缓存失效 对于一个并发量大的项目,缓存是必须的,如果没有缓存,...

    这几天在网易云课堂上看到几个关于Java开发比较好的视频,推荐给大家
    Java高级开发工程师公开课
    这篇文章也是对其中一门课程的个人总结。

    何谓缓存失效

    对于一个并发量大的项目,缓存是必须的,如果没有缓存,所有的请求将直击数据库,数据库很有可能抗不住,所以建立缓存势在不行。

    那么建立缓存后就有可能出现缓存失效的问题:

    1. 大面积的缓存key失效
    2. 热点key失效

    类似12306网站,因为用户频繁的查询车次信息,假设所有车次信息都建立对应的缓存,那么如果所有车次建立缓存的时间一样,失效时间也一样,那么在缓存失效的这一刻,也就意味着所有车次的缓存都失效。通常当缓存失效的时候我们需要重构缓存,这时所有的车次都将面临重构缓存,即出现问题1的场景,此时数据库就将面临大规模的访问。
    针对以上这种情况,可以将建立缓存的时间进行分布,使得缓存失效时间尽量不同,从而避免大面积的缓存失效。

    下面讨论第二个问题。
    春节马上快到了,抢票回家的时刻也快来临了。通常我们会事先选择好一个车次然后疯狂更新车次信息,假设此时这般车的缓存刚好失效,可以想象会有多大的请求会直怼数据库。

    使用缓存

    下面是通常的缓存使用方法,无非就是先查缓存,再查DB,重构缓存。

    @Service
    public class TicketService {
    
        @Autowired
        TicketRepository ticketRepository;
        
    
        @Autowired
        RedisUtil redis;
        public Integer findTicketByName(String name){
            //1.先从缓存获取
            String value = redis.get(name);
            if(value != null){
                System.out.println(Thread.currentThread().getId()+"从缓存获取:"+value);
                return Integer.valueOf(value);
            }
            //2.查询数据库
            Ticket ticket = ticketRepository.findByName(name);
            System.out.println(Thread.currentThread().getId()+"从数据库获取:"+ticket.getTickets());
            //3.放入缓存
            redis.set(name,ticket.getTickets(),120);
            return 0;
        }
    }
    

    接下来我们模拟1000个请求同时访问这个service

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class RedisQpsApplicationTests {
    
        //车次
        public static final String NAME = "G2386";
    
        //请求数量
        public static final Integer THREAD_NUM = 1000;
    
        //倒计时
        private CountDownLatch countDownLatch = new CountDownLatch(THREAD_NUM);
        @Autowired
        private TicketService tocketService;
    
        @Autowired
        private TicketService2 tocketService2;
    
        @Autowired
        private TicketService3 tocketService3;
        @Test
        public void contextLoads() {
            long startTime = System.currentTimeMillis();
            System.out.println("开始测试");
            Thread[] threads = new Thread[THREAD_NUM];
            for(int i=0;i<THREAD_NUM;i++){
                threads[i] = new Thread(new Runnable() {
                    @Override
                    public void run() {
    
                        try {
                            //所有开启的线程在此等待,倒计时结束后统一开始请求,模拟并发量
                            countDownLatch.await();
                            //查找票数
                            tocketService.findTicketByName(NAME);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
    
                    }
                });
                threads[i].start();
                //倒计时
                countDownLatch.countDown();
            }
    
            for(Thread thread:threads){
                try {
                    thread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("结束测试===="+(System.currentTimeMillis()-startTime));
        }
    
    }
    

    经过测试可以很简单地发现所有的访问都直接去查询数据库而获得数据
    在这里插入图片描述
    那么明明我们已经使用了缓存为什么还会出现这种情况呢?只要稍微了解多线程的知识就不难知道为什么会出现这个问题。
    我们的思路是第一个访问的人在没有缓存的情况下,去重构缓存,那么剩下的访问再去查缓存。上述的情况就是因为在第一人去查DB的时候,剩下的访问也去查DB了。
    那么根据我们的思路无非就是想让剩下的访问阻塞等待嘛,于是有了我们下面经过改良的方案。

    加锁重构缓存

    @Service
    public class TicketService2 {
    
        @Autowired
        TicketRepository ticketRepository;
    
        Lock lock = new ReentrantLock();
    
        @Autowired
        RedisUtil redis;
        public Integer findTicketByName(String name){
            //1.先从缓存获取
            String value = redis.get(name);
            if(value != null){
                System.out.println(Thread.currentThread().getId()+"从缓存获取:"+value);
                return Integer.valueOf(value);
            }
            //第一人获取锁,去查DB,剩余人二次查询缓存
            long s = System.currentTimeMillis();
            lock.lock();
            try {
                System.out.println(Thread.currentThread().getId()+"加锁阻塞时长"+(System.currentTimeMillis()-s));
                value = redis.get(name);
                if(value != null){
                    System.out.println(Thread.currentThread().getId()+"从缓存获取:"+value);
                    return Integer.valueOf(value);
                }
                //2.查询数据库
                Ticket ticket = ticketRepository.findByName(name);
                System.out.println(Thread.currentThread().getId()+"从数据库获取:"+ticket.getTickets());
                //3.放入缓存
                redis.set(name,ticket.getTickets(),120);
            }finally {
                lock.unlock();
            }
    
            return 0;
        }
    }
    

    通过单元测试可以看到确实符合我们的预期。第一个去重构缓存,剩余的查缓存。这里要注意记得在锁内对缓存进行二次查询

    在这里插入图片描述
    这种解决方案怎么说呢,有好有坏。

    • 优点:简单通用,使用范围广
    • 缺点:阻塞访问,用户体验差,锁粒度粗

    关于锁的粒度:12306的车次是非常多的,假设有两个车次的缓存都失效了,假设使用上述方案,第一个车次的去查DB,第二个车次的也要去查DB重构缓存啊,凭什么我要等你第一个车次的查完,我再去查。这就是锁粒度粗导致的,一把锁面对所有车次的查询,当别车次拥有了锁,那你只好乖乖等待了。

    缓存降级

    缓存降级简单的理解就是降低预期期望。比如双十一的时候很多人因为支付不成功而提示的稍后再试,这些都属于缓存降级,缓存降级也有好几种方案,具体要结合实际业务场景,可以返回固定的信息,返回备份缓存的值(并不一定是真实值),返回提示等待…

    对锁的粒度进行优化结合缓存降级,对于每一个车次如果已经在重构缓存,那么同车次的访问进行缓存降级,不同车次的访问则也可以重构缓存。大体思路如下
    在这里插入图片描述
    下面使用ConcurrentHashMap对每个车次的锁进行标记

    @Service
    public class TicketService3 {
    
        @Autowired
        TicketRepository ticketRepository;
        //标记该车次是否有人在重构缓存
        ConcurrentHashMap<String,String> mapLock = new ConcurrentHashMap<>();
    
        @Autowired
        RedisUtil redis;
        public Integer findTicketByName(String name){
            //1.先从缓存获取
            String value = redis.get(name);
            if(value != null){
                System.out.println(Thread.currentThread().getId()+"从缓存获取:"+value);
                return Integer.valueOf(value);
            }
            boolean lock = false;
            try {
                /* putIfAbsent 如果不存在,添加键值,返回null,存在则返回存在的值 */
                lock = mapLock.putIfAbsent(name,"true") == null ;  //1000个请求,只有一个拿到锁,剩余人缓存降级
                if(lock){   //拿到锁
                    //2.查询数据库
                    Ticket ticket = ticketRepository.findByName(name);
                    System.out.println(Thread.currentThread().getId()+"从数据库获取:"+ticket.getTickets());
                    //3.放入缓存
                    redis.set(name,ticket.getTickets(),120);
                    //4.有备份缓存 双写缓存 不设时间
                }else{
                    //方案1 返回固定值
                    System.out.println(Thread.currentThread().getId()+"固定值获取:0");
                    return 0;
                    //方案2 备份缓存
                    //方案3 提示用户重试
                }
            }finally {
                if(lock){//有锁才释放
                    mapLock.remove(name);//释放锁
                }
    
            }
    
            return 0;
        }
    }
    

    详细代码已经见码云

    总结

    缓存失效的两种情况:
    1.大面积缓存key失效,所有车次查询都依赖数据库,可对缓存的时间进行随机分布
    2.热点key失效,某个key的海量请求直击数据库
    缓存的实现原理:先查缓存,再查DB,塞进缓存
    1.缓存失效:缓存有有效时间,当有效时间到达,大量并发线程会直击数据库。
    解决方案:1.Lock 第一人查DB,做缓存,剩余人二次查询缓存

    优点:简单有效,适用范围广
    缺点:阻塞其他线程,用户体验差
    锁颗粒度大
    优化:细粒度锁实现

    2.缓存降级:1)做备份缓存,不设置事件 2)返回固定值
    主备都无数据,一人去查DB,剩余人返回固定值
    主无数据,备有数据,一人查DB,剩余人查备份
    优点:灵活多变
    缺点:备份缓存数据可能不一致

    展开全文
  • Beyond Compare4过期解决方法

    万次阅读 多人点赞 2019-05-06 09:59:55
    修改注册表 1、在搜索栏中输入 regedit,打开注册表 2、删除项目CacheId : HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4\CacheId

    修改注册表

    1、在搜索栏中输入 regedit   ,打开注册表

    2、删除项目CacheId :

          HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4\CacheId

    展开全文
  • WEB前端缓存解决方案

    千次阅读 2018-11-09 16:38:49
    WEB前端缓存解决方案问题描述页面缓存js/css缓存 问题描述 使用angularjs(1.5.0)+gulp(3.9.0)做SPA开发时,修改js后,使用gulp-rev(6.0.1)对文件名进行了修改,但是刷新界面后修改的文件并没有加载,必须使用CRLT+F5...
  • 如何解决高并发,秒杀问题

    万次阅读 多人点赞 2018-08-28 19:16:59
    相信不少人会被这个问题困扰,分享大家一篇这样的文章,希望能够帮到你!   一、秒杀业务为什么难做? 1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息); ...
  • Connection reset 异常原因及解决

    万次阅读 2018-12-07 09:26:25
    第三方访问外网提供的接口,出现Connection reset 异常,自己调用外网接口无问题,第三方调不通 最后发现原因为第三方使用的jdk版本为1.7,而我们使用的是1.8,jdk... 解决方法:在nginx中nginx.conf文件中设置ssl...
  • 【python】错误SyntaxError: invalid syntax的解决方法总结

    万次阅读 多人点赞 2019-10-13 17:09:51
    今天学习了python,然而刚开始就出了一个难题,明明代码没有一点...经过查询解决了这个问题,所以总结一个这个问题的解决方法: 版本问题: 因为python2和python3是不兼容的;可以尝试更换版本; 粗心问题: 忘...
  • 本文分为三部分,第一部分主要直观的介绍深度学习中为什么使用梯度更新,第二部分主要介绍深度学习中梯度消失及爆炸的原因,第三部分对提出梯度消失及爆炸的解决方案。有基础的同鞋可以跳着阅读。 其中,梯度消失...
  • 五种百度云盘下载速度慢解决方法

    万次阅读 多人点赞 2018-09-26 09:51:22
    chrome浏览器插件帮你解决!里面有介绍过一些百度云盘下载工具和chrome插件解决百度云盘下载限速的问题。时间久了有些方法并不好用啦,今天我们重新整理了五种百度云盘下载速度慢解决方法。希望可以帮助到大家。 ...
  • 解决ajax跨域问题【5种解决方案】

    万次阅读 多人点赞 2018-09-02 21:31:33
    什么是跨域问题? 跨域问题来源于JavaScript的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。...
  • 出现Permission denied的解决办法

    万次阅读 多人点赞 2018-05-08 20:35:16
    提示 Permission denied 解决的办法: $ sudo chmod -R 777 某一目录 其中 -R 是指级联应用到目录里的所有子目录和文件 777 是所有用户都拥有最高权限
  • Adobe Photoshop 2020(PS2020)打开闪退完美解决方案

    万次阅读 热门讨论 2019-11-27 19:32:52
    背景 近日,由于博主的笔记本电脑过于卡顿,升级了128GB的固态硬盘到512GB,重装系统后也需要重装生产力工具——Adobe系列全家桶。 2019年10月,Adobe发布了最新的Adobe Photoshop 2020以及其他系列的最新版本全家桶...
  • 彻底解决tomcat中文乱码问题的终极方案

    万次阅读 多人点赞 2018-08-16 15:28:01
    这几天测试的兄弟发现了项目中存在乱码问题 经过排查发现是tomcat中的...终极解决方法:在C:\apache-tomcat-8.5.30\bin\catalina.bat文件中加了如下一条语句彻底解决乱码了 注:这种方法可能只适用一部分问题! ...
  • Window 解决开机报错:Invalid Partition Table

    万次阅读 热门讨论 2018-01-06 17:18:29
    导语 Invalid Partition Table,即无效磁盘分区,硬盘不能启动。 一般我们都会使用多硬盘的Windows电脑,如固态硬盘+机械硬盘结合的双硬盘搭配。出现这个报错原因就是开机时默认启动加载机械硬盘了,可以简单理解...
  • 我从网上查了一堆解决办法,但是都是2017年以前的解决方案,并且都是针对于source insight 3.5及以下版本的,目前SI软件版本都到4.0了,应该有新方法出现了。 ————————————————————————...
  • 迅雷下载有的电影电视剧的时候会出现:应版权方要求,文件无法下载,或者显示迅雷任务包含违规内容 无法继续下载。...网上的方法要么失效要么难操作,下面给出终极解决方案: 下载迅雷下载试用工具 下载地址:h...
  • 解决win10 自动修复失败电脑无法开机问题

    万次阅读 多人点赞 2020-02-06 09:36:02
    各种搜索解决办法,不想重装系统,手上也没有任何U盘等修复工具,经过一番搜索终于完美解决我的问题。 自动修复失败 首先点击重新启动,可以多次点击,若幸运的话,电脑可能成功开机,可惜我的无论是重新启动还是...
  • VMware虚拟机黑屏解决

    万次阅读 多人点赞 2018-08-21 19:55:33
    相信VM( VMware Workstation)虚拟机很多人都在用,不知道有没有人跟我一样也遇到过VM虚拟机黑屏现象 具体表现为:虚拟机可以正常开机,但是屏幕不显示,处于黑屏状态。 之前有一次好像是因为win10更新,然后更新...
  • 转自 PheonixHkbxoic 的《前端解决跨域问题的8种方案(最新最全)》 原址:https://www.cnblogs.com/PheonixHkbxoic/p/5760838.html 1.同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.js ...
1 2 3 4 5 ... 20
收藏数 8,054,996
精华内容 3,221,998
关键字:

解决