精华内容
下载资源
问答
  • ios 动态更新 热更新

    热门讨论 2015-07-12 12:14:58
    可以实现动态更新,无需发布app版本实现增加内嵌功能
  • Android动态更新图标

    热门讨论 2016-12-27 12:35:16
    Android动态更新图标,几行代码搞定复杂问题!
  • Spring Boot配置动态更新

    万次阅读 2018-08-01 17:24:39
    解释 配置动态更新在本文中指当更改应用的...Spring Boot在配置动态更新上本身提供了支持,我们在未使用配置中心的情况也可以简单地实现配置动态更新。 实现方式 添加依赖包:spring-boot-starter-actuator...

    解释

    配置动态更新在本文中指当更改应用的配置项后,无需要重启应用新配置即可生效。

    概述

    配置动态更新是应用的一种通用性需求,很实现 的方式有很多种,如监听配置文件内容变化、使用配置中心等等。Spring Boot在配置动态更新上本身提供了支持,我们在未使用配置中心的情况也可以简单地实现配置动态更新。

    实现方式

    1. 添加依赖包:spring-boot-starter-actuatorspring-cloud-starter-config,其中spring-boot-starter-actuator为Spring Boot提供的应用监控与管理模块,spring-cloud-starter-config提供了refresh端点(endpoint)
    2. 使用@Value注解引用配置文件(如application.xml)中配置项
    3. 在类或者方法上添加@RefreshScope注解
    4. 启动应用
    5. 在配置文件中添加management.security.enabled=false配置项,用于关闭管理模块安全认证,否则需要用户登录与相关权限
    6. 更改配置文件(如application.xml)中配置项
    7. refresh端点(endpoint)发送post请求,即通过post访问http://host:port/refresh
    8. 访问refresh端点后,Spring Boot会判断哪些配置项发生了更改,添加了·@RefreshScope注解的bean如果引用了被更改配置项则会重新创建bean实例。

    创建新的bean实例后再获取相应bean时,bean中的配置值已动态更新完成。

    展开全文
  • 动态更新,iOS有三种处理方案: 一、开源框架 reactive native,但是编程语言是js 二、lua 脚本 三、使用oc语言的动态库framework。前两者,我不打算细讲,我主要介绍怎么用oc进行热更新(这种方式审核会有...

      允许转载!

    demo

     

    下载

     

      动态更新,iOS有三种处理方案:

       一、开源框架 reactive native,但是编程语言是js

      二、lua 脚本

      三、使用oc语言的动态库framework。前两者,我不打算细讲,我主要介绍怎么用oc进行热更新(这种方式审核会有问题,但是在企业包、越狱包中可以采用)

          1、创建framework工程

     

          2、代码处理:

    写一个controller的控制工具类:

     

    //
    //  HotUpdateControl.m
    //  HotUpdateMudel
    //
    //  Created by wukong on 15/12/18.
    //  Copyright © 2015年 lhc. All rights reserved.
    //
    
    #import "HotUpdateControl.h"
    #import "AController.h"
    #import "BViewController.h"
    #import "CViewController.h"
    #import "DViewController.h"
    #import "EViewController.h"
    @implementation HotUpdateControl
    
    -(NSArray *)getVcs {
        
        return @[
                 [[AController alloc]init],
                 [[BViewController alloc]init],
                 [[CViewController alloc]init],
                 [[DViewController alloc]init],
                 [[EViewController alloc]init]];
        
    }
    @end
    


    好了,开始打包framework,为了以免打包出来的framework,在真机上面运行不了,我们使用一个脚本来进行打包,目的是多型号CPU核心的合成,就是打出一个通用的包。

     

     

    # Sets the target folders and the final framework product.
    # 如果工程名称和Framework的Target名称不一样的话,要自定义FMKNAME
    # 例如: FMK_NAME = "MyFramework"
    FMK_NAME=${PROJECT_NAME}
    # Install dir will be the final output to the framework.
    # The following line create it in the root folder of the current project.
    INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
    # Working dir will be deleted after the framework creation.
    WRK_DIR=build
    DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
    SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
    # -configuration ${CONFIGURATION}
    # Clean and Building both architectures.
    xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
    xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
    # Cleaning the oldest.
    if [ -d "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    mkdir -p "${INSTALL_DIR}"
    cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
    # Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
    lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
    rm -r "${WRK_DIR}"
    open "${INSTALL_DIR}"


     

     

     

     

     

    3、建立一个主项目,就是使用这些动态库的工程

     

     

    现在进行读取离线包的测试,只要这个项目,能够从沙箱里面读取到代码文件,就意味着可以在线更新代码,远程升级!!!

    动态库已经加载到了沙箱~~~

    我修改了UITabBarController加载版块的初始化方法,如果沙箱有framework动态库,就加载framework动态库上面的版块,令到项目可以模块化

     

    //
    //  TabController.m
    //  HotUpdate
    //
    //  Created by wukong on 15/12/18.
    //  Copyright © 2015年 lhc. All rights reserved.
    //
    
    #import "TabController.h"
    //#import <HotUpdateMudel/HotUpdateControl.h>
    @interface TabController ()
    
    @end
    
    @implementation TabController
    
    -(instancetype)initWithCoder:(NSCoder *)aDecoder{
        if (self = [super initWithCoder:aDecoder]) {
            NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
            NSArray* arrFramework = [self getFilenamelistOfType:@"framework"  fromDirPath:documentDirectory];
            NSLog(@"%@",arrFramework);
            if (arrFramework.count==0) {
                 NSArray * arrTitle = @[@"首页",@"广场",@"朋友圈",@"我的",@"设置"];
                NSMutableArray * arrVcs = @[].mutableCopy;
                for (int i=0; i<arrTitle.count; i++) {
                    UIViewController * vcRoot = [[UIViewController alloc]init];
                    vcRoot.title = arrTitle[i];
                    vcRoot.view.backgroundColor = [UIColor whiteColor];
                    UINavigationController * navi = [[UINavigationController alloc]initWithRootViewController:vcRoot];
                    [arrVcs addObject:navi];
                }
                [self setViewControllers:arrVcs animated:YES];
                
            }else{
                
                NSString *bundlePath = [NSString stringWithFormat:@"%@/%@",documentDirectory,[arrFramework lastObject]];
                
                if (![[NSFileManager defaultManager] fileExistsAtPath:bundlePath]) {
                    NSLog(@"file not exist ,now  return");
                    return self;
                }
                NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
                
                if (!bundle || ![bundle load]) {
                    NSLog(@"bundle load error");
                }
                
                Class loadClass = [bundle classNamed:@"HotUpdateControl"];
                if (!loadClass) {
                    NSLog(@"get bundle class fail");
                    return self;
                }
                NSObject *bundleObj = [loadClass new];            
                NSArray * arrVc = [bundleObj performSelector:@selector(getVcs)];
                
                NSMutableArray * arrVcs = @[].mutableCopy;
                for (int i=0; i<arrVc.count; i++) {
                    UIViewController * vcRoot =arrVc[i];
                    vcRoot.view.backgroundColor = [UIColor whiteColor];
                    UINavigationController * navi = [[UINavigationController alloc]initWithRootViewController:vcRoot];
                    [arrVcs addObject:navi];
                }
                
                [self setViewControllers:arrVcs animated:YES];
                
            }
        }
        return self;
    }
    
    -(NSArray *) getFilenamelistOfType:(NSString *)type fromDirPath:(NSString *)dirPath
    {
        NSArray *fileList = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:dirPath error:nil]
                             pathsMatchingExtensions:[NSArray arrayWithObject:type]];
        return fileList;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
    }
    
    
    @end

    看结果了,如果是本地的默认版本,应该是

     

    @[@"首页",@"广场",@"朋友圈",@"我的",@"设置"];的模块

    但是如果是沙箱里面的模块

    那么久应该ABCDE

     

    good luck

     

     

     

     

    展开全文
  • ionic实现App动态更新,热更新

    千次阅读 2017-05-02 18:14:33
    ionic实现App动态更新,热更新

    本来自己要写一篇热更新的文章,发现有其他好文章,就推荐给大家:

    Ionic实现iOS与Android端代码『热更新』与Android升级下载功能

    补充一:

    在第6步之后,生成的.chcpenv文件里的

    {
          "content_url": "http://xxxxx.com",       //用于获取文件
          "config_url": "http://xxxxx.com/chcp.json"   //用于访问远程服务器配置文件
      }

    这两个地址也要改成自己的项目更新的远程地址,之后再编译打包。

    补充二:

    为了减少打包出来的App大小,在测试完成之后可删掉cordova-hot-code-push-local-dev-addon 插件

    命令如下:

    cordova plugin remove cordova-hot-code-push-local-dev-addon

    切记,要在整个流程走完之后再删除,如果刚开始不添加cordova-hot-code-push-local-dev-addon插件会报错!

    我也没搞懂为什么。。

    补充三:

    在生成热更新包www的之前,一定要确保本地config.xml中的<chcp>配置与线上版本的config.xml配置一样,

    <local-development enabled="true" /> 这个不能缺,不然会热更新失败

     <chcp>
      <native-interface version="10201" /> 
      <config-file url="http://***" /> 
      <local-development enabled="true" /> 
      </chcp>

    如果改动了,就会热更新失败。

    就是说影响热更新配置的不单单是www包里的chcp.json和chcp.manifest文件,还有config.xml文件

    补充四:

    热更新只是针对线上的文件改动做更新,就是你不能新增一个文件然后热更新,会更新失败!

    展开全文
  • ECharts 基础(三):动态更新数据

    千次阅读 2020-08-16 16:29:29
    序言:本篇继续介绍Echarts的使用,主要解决数据更新! 目录序言:本篇继续介绍Echarts的使用,主要解决...一、echarts动态更新二、echarts-for-react动态更新 一、echarts动态更新 二、echarts-for-react动态更新 ...

    序言:本篇继续介绍Echarts的使用,主要解决数据更新!

    在这里插入图片描述

    一、echarts动态更新

    echarts 由数据驱动,数据的改变驱动图表的改变,因此动态数据的实现也变得异常简单。
    echarts 中通过 setOption 更新所有的数据,我们要做的只是定时获取数据,然后使用 setOption 填入数据,至于数据在过程中发生了哪些变化,不在我们的考虑范围内。
    1、虚拟数据
    一般可能用ajax请求来获取数据,这里为了方便大家查看–整了些虚拟数据,进行随机抽取数据

    //虚拟数据
     randomList = [
     	[6, 22, 32, 11, 36, 20],
        [12, 32, 8, 34, 18, 14],
        [22, 12, 32, 10, 10, 20],
        [18, 38, 16, 26, 14, 14],
        [16, 10, 10, 38, 10, 14],
        [28, 12, 32, 35, 17, 20]
      ];
    

    2、获取随机数据,setOption更新数据
    实例化Echarts,设置了autoChange方法:随机获取数据并setOption更新数据

    // 基于准备好的dom,初始化echarts实例
    var echartBar = echarts.init(document.getElementById('echartBar'));
    function autoChange(){
        //获取随机数组
        var random = Math.ceil(Math.random()*6-1);
        console.log("random:"+random)
        // 指定图表的配置项和数据
        var optionBar = {
             title: {
             	  text: 'Echarts动态更新数据'
             },
             tooltip: {},
             legend: {
             	data:['销量']
            },
             //设置X轴
            xAxis: {
               	data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
          	  	name: '销量',
            	type: 'bar',
            	data: randomList[random], 
           	 }]
        };
        // 使用刚指定的配置项和数据显示图表。
    	echartBar.setOption(optionBar);
    }
    

    3、创建定时任务,进行动态更新
    设置定时任务,定时调用autoChange方法,完成上方gif图展示效果:

    autoChange();  //初始化实例后,首次设置数据
    setInterval(  //设置定时器,1s更新一次
    	function(){
    		autoChange();
    	},1000
    );
    

    二、echarts-for-react动态更新

    echarts-for-react 是针对于 React 的 Echarts 封装插件。
    echarts-for-react 可以在React中调用echarts接口直接渲染出Echarts图表,只要传入相关的参数和数据即可。
    1、react环境安装依赖
    使用npm安装依赖

    npm install --save echarts
    npm install --save echarts-for-react
    

    2、引入echarts-for-react

    import ReactEcharts from 'echarts-for-react';
    

    3、页面上使用

     <ReactEcharts option={this.getOption(random)} />
    

    4、实例如下
    react环境下图表若想动态更新,必须设置state值作为参数动态变化。如下完成上方gif图展示效果:

    import React, { Component }  from 'react';
    import ReactEcharts from 'echarts-for-react';
    
    const randomList = [
      [6, 22, 32, 11, 36, 20],
      [12, 32, 8, 34, 18, 14],
      [22, 12, 32, 10, 10, 20],
      [18, 38, 16, 26, 14, 14],
      [16, 10, 10, 38, 10, 14],
      [28, 12, 32, 35, 17, 20]
      ];
    
    class EchartsDemo extends Component{
      state = { 
        random: randomList[0],
      }; 
      
       // 组件初始化时要挂载的内容
      componentDidMount() {
        //设置定时器,1s更新一次
        this.timer = setInterval(() => {
          var num = Math.ceil(Math.random()*6-1);
          this.setState( 
            { 
              random: randomList[num],
            }
          )
        }, 1000)
      };
    
       //组件卸载时清除定时器
      componentWillUnmount() {
        clearInterval(this.timer);
      }
    
      /**
       * 折线图的配置对象
       */
      getOption = (random) =>{
          return {
              title: {
                  text: 'Echarts动态更新数据'
              },
              tooltip: {},
              legend: {
                  data:['销量']
              },
              xAxis: {
                  data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
              },
              yAxis: {},
              series: [{
                  name: '销量',
                  type: 'bar',
                  data: random
              }]
          };
      }
      
      render(){
          const {random} = this.state;
          return(
              <div style={{width:660,height:400}}>
                 <ReactEcharts option={this.getOption(random)} />
              </div>
          )
      }
    }
    
    export default EchartsDemo;
    
    

    ·········································································································································
    本文介绍Echarts动态更新数据,请大家多多指教,能get到知识点不要忘了关注点个赞~

    展开全文
  • 动态更新,iOS有三种处理方案 1,开源框架reactive native,但是编程语言是js iOS app可以在运行时从服务器拉去最新的js文件到本读,然后执行,因为js是一门动态的脚本语言 所以可以在运行时直接读取js文件执行,...
  •  只要审核通过后,无须再次审核,就可以动态更新,iOS有三种处理方案:  一、开源框架 reactive native,但是编程语言是js  二、lua 脚本  三、使用oc语言的动态库framework。前两者,我不打算细讲,我主要...
  • @Update动态更新

    千次阅读 2018-08-13 23:40:35
    动态更新的sql语句书写示例 : 7.0 请求示例 : { "id": 44, "createBy": "薛衎22", "updateBy": null, "updateTime": null, "description&qu
  • Mybatis动态更新数据

    千次阅读 2017-02-05 15:24:09
    Mybatis动态更新数据原理同上一篇的 Mybatis动态插入数据(使用trim标签) ,控制同一张表,但传入的参数不固定,操作表的字段不固定,就要用到mybatis动态更新,普通的的方法会出现多余的字符。方法一:使用set标签...
  • matplotlib动态更新窗口

    千次阅读 2018-01-27 15:29:55
    代码: # encoding: utf-8 ...使用 matplotlib动态更新 ''' from matplotlib import pyplot as plt import numpy as np plt.axis([0, 1000, 0, 1]) plt.ion() while True: x = [] y = [] for i in range(51
  • 最近做一个项目,是利用echarts来做疫情数据可视化,由于全国疫情的累计数据和现在确诊数据有较大的差距,所以如果visualMap 组件中,min与max字段如果使用相同的内容范围,...(如需要动态更新数据,请见 下面代码..
  • shell动态更新iptables

    2019-01-05 18:16:46
    就写一个动态更新防火墙规则的脚本,来实现白名单。 #!/bin/sh   get_ip=`ping -c 1 -t 1 www.baidu.com | grep 'PING' | awk '{print $3}' | sed 's/[(,)]//g'`   cd `dirname $...
  • 动态更新全局数据

    2017-09-22 11:27:38
    想象这样一种场景,有一份全局数据在启动的时候加载,多线程并发访问这份全局数据,那么在运行过程中如何动态更新这份全局数据? 前面说到的问题,究根结底在于读写操作是并发的,不可避免的会出现冲突。例如有...
  • Jstorm 动态更新配置文件

    千次阅读 2017-10-31 10:13:12
    Jstorm 支持动态更新配置文件 从Release 2.1.1 开始Jstorm支持动态修改拓扑的配置文件,更新后的配置文件能直接被应用响应,在响应过程中 topology任务不会被重启或者下线,保证服务的持续性。 Note:拓扑配置...
  • 小程序之数组列表动态更新

    千次阅读 2019-07-01 18:12:16
    最近写小程序遇到动态更新的问题 对数组的动态更新,清空数组我开始用的是:this.data.数组名.pop() 想直用循环删除数组,但是发现没有动态更新,后来想到之前看到的,this.data的写法不是动态更新,不是直接赋值...
  • shiro动态更新权限失败

    千次阅读 2018-07-24 13:49:18
     在之前的spring集成shiro权限控制一文中,实现了动态更新的权限的方法,即对权限表做修改后,需要更新到shiro的filterchain。后来测试的时候,发现两个问题: 1、更改权限后,并没有动态更新到shiro中去,取消权限...
  • Nacos配置详解及动态更新配置

    千次阅读 2021-02-01 22:04:21
    全网最全的Nacos配置详解,包含动态更新nacos配置
  • lua+nginx动态更新配置

    千次阅读 2020-04-26 11:41:40
    动态更新配置 1. 设计说明 考虑到配置为全局生效,即需对所有工作进程共享。更新频率比较慢,使用lua_shared_dict进行存储。如下定义: lua_shared_dict sysconfig 10k; 成员包括: “time”:配置文件的生成的...
  • select2控件动态更新option

    千次阅读 2018-07-31 15:55:31
    原文连接:... ----------------------------------------------------------------------------- 根据输入框中内容,动态更新select2组件中option内容 监听输入框内容变化事件,先销毁原有select2...
  • anroid动态更新UI界面

    千次阅读 2015-12-01 20:53:09
    在android中,一成不变的UI布局可能会使用户厌烦(现在基本上都是ViewPager+ListView的方式),那么有没有什么方式实现动态更新UI布局提高用户的体验呢?答案是肯定的,本文就是介绍一种方式实现动态更新UI布局的...
  • Flink-Cep实现规则动态更新

    千次阅读 2020-11-30 21:47:42
    Flink-Cep实现规则动态更新 规则引擎通常对我们的理解就是用来做模式匹配的,在数据流里面检测满足规则要求的数据。有人会问为什么需要规则动态变更呢?直接修改了规则把服务重启一下不就可以了吗,这个当然是不行...
  • Nacos + Confd实现Prometheus规则动态更新

    千次阅读 2019-12-05 09:01:09
    NACOS+CONFD实现Prometheus规则动态更新
  • notifyDataSetChanged() 动态更新ListView

    万次阅读 2018-07-22 00:13:11
    有时候我们需要修改已经生成的列表,添加或者...今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView。   &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt...
  • service动态更新UI界面

    2016-09-23 16:30:50
    service动态更新UI界面 编辑:kezz 来源:eoe 发布时间:2011/4/28 10:46:29  之前我们曾向您介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的。那么...
  • spring boot+spring cloud +rabbitmq 实现动态配置 配置动态更新 Spring Cloud Bus通过轻量消息代理连接各个分布的节点。它可用在广播状态的变化或者其他的消息指令。Spring Cloud Bus的一个核心思想是通过分布式的...
  • hibernate动态更新

    千次阅读 2008-06-04 10:52:00
    这两天把原来的hibernate又复习了一下,意外发现hibernate有一个动态增加和动态更新功能。就是说hibernate生成的sql语句只set,有变化的字段。这样确实会从一定程度上提高性能。 可是动态更新的问题是查询和更新必须...
  • 记录 Spring Security如何动态更新已登录用户信息 /** * 设置当前登录用户,保存 或 更新登录信息 * * @param userDetails */ public static void setLoginUser(UserDetails userDetails) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,173
精华内容 15,669
关键字:

动态更新