精华内容
下载资源
问答
  • 针对全年十个方面重点工作、31项重点任务,总部各部门要加强督导检查,明确进度安排和质量要求,公司各单位要结合实际抓好贯彻执行,逐项落实到位。要把握好市场化、透明度、高效率三个关键点,确保改革攻坚年重点...
  • xmind文档,非常详细的从如何保证job运行的唯一性出发,到定时任务实现方式,传统定时job特征,到传统定时任务和分布式任务的区别,各方面都给出了具体的解释和解决方案,推荐下载。
  • 前端开发的十个任务

    千次阅读 2018-08-03 12:10:50
    在这里我想谈谈我总结出来的前端开发需要负责的十个任务。 我从2011年开始接触前端,2012年毕业后在百度工作了年,最近几年专注于React生态系统,也涉猎了一些后端和运维的东西。通过一系列项目和工具的实践,我...

    如果你身处互联网行业,那你很可能听说过前端,接触过前端开发,或者说你就是一个前端工程师,由于浏览器的普及以及浏览器技术的发展,网站的前端开发正在变得越来越重要。在这里我想谈谈我总结出来的前端开发需要负责的十个任务。

    我从2011年开始接触前端,2012年毕业后在百度工作了三年,最近几年专注于React生态系统,也涉猎了一些后端和运维的东西。通过一系列项目和工具的实践,我把前端开发涉及到的工作归结为以下十点:

    一、定义目录结构及开发和部署流程

    目录结构,主要涉及源文件、打包后文件、样式文件、测试文件、工具文件、公用文件的位置,以及模块的组织方式,比如一个模块的样式文件是应该跟该模块的其他文件放在一起还是跟其他模块的样式放在一起。还有一些细节比如文件夹的命名方式,是所有都按复数命名,components, assets, views,还是都按单数命名。对于开发和部署流程,目前主要的工具是webpack,开发流程主要是指如何启动本地服务器实时看到开发中的页面效果,目前主要是基于webpack-dev-server。部署流程主要是将文件打包,准备好上线。如果你或你的团队已经有一些经验,可以按照自己的经验和习惯来定义目录结构及开发和部署流程,如果没有,可以参考github上一些例子,也可以使用一些工具,比如creat-react-app和vue-cli,它们会根据你的选择给出webpack配置并自动创建出符合最佳实践的目录结构,同时提供开发和部署命令。

    二、配置路由

    通过浏览器地址的变化来控制页面内容的切换是网站与用户交互的基础,它的主要作用是让网站的各部分内容可以独立地被访问,让用户可以在我们的网站中使用浏览器的前进后退按钮,并保证用户刷新页面时仍会停留在当前内容。对于路由的配置和使用目前的主流方式仍然是传统的静态定义方式,也就是在上层统一定义路径和相应的模块,当然,对于多层次的嵌套路由就需要树形的配置。最新的第四版React-router颠覆了传统,它是一个完全动态的路由配置方式,路由的定义被完全组件化了,刚开始我觉得很不适应,但逐渐发现这种方式十分灵活有效,从某种程度上让整个路由思想更加得合理。

    三、开发视图层

    基础的视图层就是html,单页面应用还需要把数据融合进去,也就是用模板。模板的形式从传统的php, python等开始并没有发生太大变化,vue的模板形式也是一样,React的Jsx从某种程度上打破了传统,模板和js合为一体,让数据的融入变得更加灵活。

    四、管理样式

    html和css是分不开的,有了页面结构,我们还得用css让它按照设计的样子呈现出来。样式管理涉及到的东西不少,对于css,传统的方式是统一写样式类控制全局,首先涉及到预处理器,也就是less/sass;其次需要确定类的命名规则,比如BEM, SMACSS等;剩下的工作还有公共类的复用,处理响应式布局,规划栅格系统,管理Icon和图片等等。与传统方式不同,新的样式思想比如css in js、css module和css scope,它们主要是想解决样式的作用域问题,不知道大家觉得这些新的方式是否已经成熟。

    五、管理组件

    我们这里说的组件主要是指公共组件,比如按钮和弹窗等,业界有很多第三方组件库和样式库,比如Bootstrap, Kendo UI, Material UI等等,Bootstrap前些年很火最近逐渐降温,我理解也是跟React等库的出现让前端组件的开发变得更加简单有关。个人认为,引入第三方组件或样式库意味着学习成本和维护成本,对于一个长期的项目来说这显得并不明智,从头建立自己的样式和组件系统并不难,而自己建立的系统维护起来会容易得多。但如果你只是想快速开发成型,而库的样式风格正符合你的需求,那第三方组件库也许会是比较好的选择。

    六、绑定用户输入

    用户的输入是前端复杂性的根源,正是用户的操作引起了反向数据流动以及相应的页面变化。对于初步的输入响应,传统的方式是找到节点并绑定事件,现在的方法基本上都是在视图层的模板上声明事件以及相应的处理方法,这里涉及到一些bind和传递参数的问题,但总体来说并不复杂。

    七、与服务器通信

    单页面系统的前端与服务器的通信主要是指使用XMLHttpRequest的Ajax技术,业界可用的工具很多,比如新的浏览器原生标准Fetch API,可以通过polyfill支持IE,还有axios, SuperAgent, request等,总体来说主要是语法上的区别。当然,关于通信还有很多细节,比如解决跨域,熟悉http状态码等等。除了Ajax技术,我们还经常需要处理js/css/html文件的缓存,传递jwt(json web token)让服务器验证用户身份,甚至还涉及到第三方授权方案的选择。还有最近开始流行的GraphQL,它对于数据的获取方式给出了一些新的规则。另外,有时候为了便于前后端分离开发,我们会需要在本地对API请求进行Mock。除了http,我们还可能用到web socket来与一些服务进行双向通信,常见的工具有Socket.IO和html5的WebSocket,语法都是广播和收听的形式。

    八、管理事件和数据

    这是近些年前端技术发展的重点,也是前端技术的难点,经过Backbone, Angular.js, Knockout等对前端MVC的不断探索,我们终于有了React的Redux和Mobx, Vue的Vuex和Angular的Rxjs等,目前基本达成了共识,也就是数据统一管理,事件单向流动的模式。个人认为前端框架花了很长时间才进化到当前状态的主要原因是一直没有很好地解决跨模块的数据管理问题,我们一直在模块内部做文章,MVC和MVVM也主要是针对同一个模块来说的。后来,React定义了component state, jsx, component life cycle和component system,这些几乎完美地解决了模块内部的问题,再后来,把React内部数据单向流动的模型应用在整个系统上,就有了当前的架构。目前很多人对于Redux还有质疑,个人认为主要是因为没有复杂实际项目的经验很难认识到Redux的Action和Immutable等规则的重要性。

    九、处理模块间通信

    传统的模块间通信可以通过一些publish/subscribe方式来实现,对于当前的前端技术,模块之间的通信基本用上面的事件和公共数据管理方式就可以解决了,但还是有一些技术可以辅助使用。比如react的context以及父子模块之间通过属性的事件和数据传递,但个人认为只有在不影响整体数据管理并且使用方便的情况下才应该使用这些技术。

    十、测试

    前端页面的测试对于一个系统的成熟和稳定十分重要,但是由于前端的繁琐和变化多端,很多项目常常不能很好地做好前端的测试覆盖。对于前端测试有两个极端,一种认为它事倍功半,干脆直接荒废掉,另一种则认为它至关重要,要求所有细节全部覆盖。个人认为做前端测试需要先问自己想要保证什么功能不出问题,然后再根据成本决定测试的程度。常见的前端测试有两种,一是单元测试,针对模块或者是工具方法、功能点的测试,这个相对简单,用库的测试辅助工具和assert工具就可以做起来,二是整体自动化测试,也就是模拟用户使用对系统整体的测试,这个据我所知大都是基于selenium的,我比较熟悉的是webdriver.io,用js写代码,语法也比较清晰,整体自动化测试的问题在于需要让模拟工具找到页面上的节点,如果系统还在频繁开发阶段,这种自动化测试会经常因为页面的改变而需要被调整。

    总结这十个方面主要是提供一个看待前端的角度,他们可以用来检查自己对于前端技术掌握得是否全面,也可以通过观察在各个方面的工作难度来对比不同前端解决方案的优劣。这十个方面主要是针对单页面系统的前端开发,如果是传统的展示型网站,前面几点的工作会更多一些,对第7/8/9点涉及得会比较少。作为一个前端开发者,为了完成好这十个任务,还需要首先具备两方面基础知识:html/css/js基础知识以及浏览器基础知识,这些可以后续单独展开来介绍。这些内容是我目前的一些理解,权且抛砖引玉,希望大家多多批评指正。

    React和Vue是目前前端比较流行的库,后续我想分别用这两种技术开发同一个应用,从上述十个方面出发,用具体代码对React+Redux和Vue+Vuex及其周边解决方案进行对比,希望通过这些对比让大家更细致和全面地了解到两种技术的区别。已经发布了一个chat活动,地址如下,https://gitbook.cn/gitchat/activity/5b62342ba120e74da6654cbf,希望大家多多支持。

    展开全文
  • 任务调度App除了通过屏幕向用户展示可交互的界面元素之外,还经常需要在后台做些背地里做的事情,比如说精密计算、文件下载、统计分析、数据导入、状态监控等等,这些用户看不到的事一般放在Service中处理。...

    任务调度

    App除了通过屏幕向用户展示可交互的界面元素之外,还经常需要在后台做些背地里做的事情,比如说精密计算、文件下载、统计分析、数据导入、状态监控等等,这些用户看不到的事一般放在Service中处理。

    然而有时候我们希望在特定情况下再启动事务,比如说延迟若干时间之后,或者等手机空闲了再运行,这样一方面不会在系统资源紧张之时喧宾夺主,另一方面也起到削峰填谷提高系统效率的作用。对于这些额外的条件要求,Service并不能直接支持,往往需要加入其他手段,才能较好地满足相关的运行条件,比如:
    一、对于延迟时间执行,通常考虑利用系统的闹钟管理器AlarmManager进行定时管理,有关AlarmManager的说明参见《 Android开发笔记(五十)定时器AlarmManager》。
    二、对于是否联网、是否充电、是否空闲,一般要监听系统的相应广播,常见的系统广播说明如下:
    1、网络状态变化需要监听系统广播android.net.conn.CONNECTIVITY_CHANGE;
    2、设备是否充电需要监听系统广播Intent.ACTION_POWER_CONNECTED也就是android.intent.action.ACTION_POWER_CONNECTED;
    3、设备是否空闲需要监听系统广播Intent.ACTION_SCREEN_OFF也就是android.intent.action.SCREEN_OFF;

    可是要想给Service补充以上条件,势必加大了程序逻辑的复杂度,一会儿注册这个事件,一会儿注册那个事件,工程代码将变得不易维护。有鉴于此,Android从5.0开始,增加支持一种特殊的机制,即任务调度JobScheduler,该工具集成了常见的几种运行条件,开发者只需添加少数几行代码,即可完成原来要多种组件配合的工作。

    任务调度机制由三个工具组成,首先是JobInfo,它指定了一个任务的概要信息,比如何时启动,启动时需要满足什么条件等等;其次是JobScheduler,它是系统提供的任务调度服务,它的实例从系统服务Context.JOB_SCHEDULER_SERVICE中获得;最后是JobService,它描述了该任务内部的具体业务逻辑,它的运行时刻由JobScheduler根据JobInfo指定的条件而计算决定。下面分别说明这三个工具的编码过程:


    JobInfo

    任务信息的运行条件由JobInfo.Builder来构造,下面是Builder的函数说明:
    构造函数:指定该任务来源与目的,与Intent类似,第二个参数指定了开发者自定义的JobService。
    setRequiredNetworkType:设置需要的网络条件,有三个取值:JobInfo.NETWORK_TYPE_NONE(无网络时执行,默认)、JobInfo.NETWORK_TYPE_ANY(有网络时执行)、JobInfo.NETWORK_TYPE_UNMETERED(网络无需付费时执行)
    setPersisted:重启后是否还要继续执行,此时需要声明权限RECEIVE_BOOT_COMPLETED,否则会报错“java.lang.IllegalArgumentException: Error: requested job be persisted without holding RECEIVE_BOOT_COMPLETED permission.”而且RECEIVE_BOOT_COMPLETED需要在安装的时候就要声明,如果一开始没声明,而在升级时才声明,那么依然会报权限不足的错误。
    setRequiresCharging:是否在充电时执行
    setRequiresDeviceIdle:是否在空闲时执行
    setPeriodic:设置时间间隔,单位毫秒。该方法不能和setMinimumLatency、setOverrideDeadline这两个同时调用,否则会报错“java.lang.IllegalArgumentException: Can't call setMinimumLatency() on a periodic job”,或者报错“java.lang.IllegalArgumentException: Can't call setOverrideDeadline() on a periodic job”。
    setMinimumLatency:设置至少延迟多久后执行,单位毫秒。
    setOverrideDeadline:设置最多延迟多久后执行,单位毫秒。
    build:完成条件设置,返回构建好的JobInfo对象。


    JobScheduler

    任务调度的实例从系统服务Context.JOB_SCHEDULER_SERVICE中获得,代码举例如下:
    		JobScheduler js = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
    获得任务调度实例后,即可进行任务调度操作,下面是任务调度的相关方法:
    schedule:把指定的JobInfo对象放入调度队列,并在条件满足时触发该对象中定义的JobService。
    cancel:取消指定编号的任务。
    cancelAll:取消所有任务。
    getAllPendingJobs:获取所有挂起(即尚未执行)的任务。


    JobService

    任务服务是一种特殊的Service,它描述了该任务内部的具体业务逻辑,需要开发者重写的方法如下:
    onStartJob:在任务开始执行时触发。返回false表示执行完毕,返回true表示需要开发者自己调用jobFinished方法通知系统已执行完成。
    onStopJob:在任务停止执行时触发。

    JobService内部另外实现了两个方法,说明如下

    1、onBind方法,源码如下所示
        public final IBinder onBind(Intent intent) {
            return mBinder.asBinder();
        }
    JobService实现了onBind方法,表示任务调度在工作的时候,JobService是通过绑定方式启动的。

    2、jobFinished方法,源码如下所示
        public final void jobFinished(JobParameters params, boolean needsReschedule) {
            ensureHandler();
            Message m = Message.obtain(mHandler, MSG_JOB_FINISHED, params);
            m.arg2 = needsReschedule ? 1 : 0;
            m.sendToTarget();
        }
    因为JobService由系统触发,不是在App的主线程中,所以这里通过Message机制与主线程进行通信。


    启动方式

    由于JobService继承自Service,因此既可以把它当作专门的调度服务来启动,也可以把它当作普通的服务来启动。


    在Service外部进行调度

    在Activity代码中增加任务调度,需要声明JobInfo对象,并通过JobScheduler进行调度,具体代码如下所示:
    	//将任务作业发送到作业调度中去
    	public void scheduleJob() {
    		Log.d(TAG, "scheduleJob");
    		JobInfo.Builder builder = new JobInfo.Builder(0, 
    				new ComponentName(this, SimpleJobService.class));
    		//设置需要的网络条件,默认为JobInfo.NETWORK_TYPE_NONE即无网络时执行
    		//NETWORK_TYPE_NONE
    		builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
    		//builder.setPersisted(true); //重启后是否还要继续执行
    		builder.setRequiresCharging(false); //是否在充电时执行
    		builder.setRequiresDeviceIdle(false); //是否在空闲时执行
    		//builder.setPeriodic(1000); //设置时间间隔,单位毫秒
    		//setPeriodic不能和setMinimumLatency、setOverrideDeadline这两个同时调用
    		//否则会报错“java.lang.IllegalArgumentException: Can't call setMinimumLatency() on a periodic job”
    		//“java.lang.IllegalArgumentException: Can't call setOverrideDeadline() on a periodic job”
    		builder.setMinimumLatency(500); //设置至少延迟多久后执行,单位毫秒
    		builder.setOverrideDeadline(3000); //设置最多延迟多久后执行,单位毫秒
    		JobInfo ji = builder.build();
    		
    		JobScheduler js = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
    		js.schedule(ji);
    	}

    该方式用到的JobService代码例子如下所示:
    	public class SimpleJobService extends JobService {
    	private final static String TAG = "SimpleJobService";
    
    	private Handler mHandler = new Handler() {
    		@Override
    		public void handleMessage(Message msg) {
    			try {
    				Thread.sleep(5000);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			JobParameters param = (JobParameters) msg.obj;
    			jobFinished(param, true);
    			Log.d(TAG, "jobFinished");
    		}
    	};
    
    	@Override
    	public int onStartCommand(Intent intent, int flags, int startId) {
    		Log.d(TAG, "onStartCommand");
    		return START_NOT_STICKY;
    	}
    	
    	@Override
    	public boolean onStartJob(JobParameters params) {
    		Log.d(TAG, "onStartJob");
    		Message message = Message.obtain();
    		message.obj = params;
    		mHandler.sendMessage(message);
    		//返回false表示执行完毕,返回true表示需要开发者自己调用jobFinished方法通知系统已执行完成
    		return true;
    	}
    
    	@Override
    	public boolean onStopJob(JobParameters params) {
    		//停止,不是结束。jobFinished不会直接触发onStopJob
    		//必须在“onStartJob之后,jobFinished之前”取消任务,才会在jobFinished之后触发onStopJob
    		Log.d(TAG, "onStopJob");
    		mHandler.removeMessages(0);
    		return true;
    	}
    	
    }

    以上代码需要注意的是:
    1、因为系统服务是通过绑定方式启动JobService,所以此时onStartCommand方法永远不会执行;
    2、onStopJob顾名思义是在任务停止时触发,但是直接调用jobFinished方法并不能触发onStopJob。原因是onStopJob的触发是有条件的,首先这里的停止指的是取消任务而不是完成任务;其次必须在“onStartJob之后,jobFinished之前”取消任务,才会在jobFinished之后触发onStopJob。

    另外注意在AndroidManifest.xml中补充服务声明:
            <service
                android:name=".service.SimpleJobService"
                android:permission="android.permission.BIND_JOB_SERVICE" />


    在Service内部进行调度

    如果Activity通过常规的startService方法启动JobService,那么就得JobService自己在onStartCommand方法中进行任务调度了。除了对onStartCommand的处理存在区别之外,其它代码与上一种方式基本相同,完整的JobService代码如下所示:
    public class MultiJobService extends JobService {
    	private final static String TAG = "MultiJobService";
    
    	private Handler mHandler = new Handler() {
    		@Override
    		public void handleMessage(Message msg) {
    			JobParameters param = (JobParameters) msg.obj;
    			jobFinished(param, true);
    			Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    			startActivity(intent);
    		}
    	};
    
    	@Override
    	public int onStartCommand(Intent intent, int flags, int startId) {
    		Log.d(TAG, "onStartCommand");
    		scheduleJob();
    		return START_NOT_STICKY;
    	}
    
    	@Override
    	public boolean onStartJob(JobParameters params) {
    		Log.d(TAG, "onStartJob");
    		Message message = Message.obtain();
    		message.obj = params;
    		mHandler.sendMessage(message);
    		//返回false表示执行完毕,返回true表示需要开发者自己调用jobFinished方法通知系统已执行完成
    		return true;
    	}
    
    	@Override
    	public boolean onStopJob(JobParameters params) {
    		Log.d(TAG, "onStopJob");
    		mHandler.removeMessages(0);
    		return true;
    	}
    	
    	//将任务作业发送到作业调度中去
    	public void scheduleJob() {
    		Log.d(TAG, "scheduleJob");
    		JobInfo.Builder builder = new JobInfo.Builder(0, 
    				new ComponentName(this, MultiJobService.class));
    	  //设置需要的网络条件,默认为JobInfo.NETWORK_TYPE_NONE即无网络时执行
    		builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
    		//重启后是否还要继续执行,此时需要声明权限RECEIVE_BOOT_COMPLETED
    		//否则会报错“java.lang.IllegalArgumentException: Error: requested job be persisted without holding RECEIVE_BOOT_COMPLETED permission.”
    		//而且RECEIVE_BOOT_COMPLETED需要在安装的时候就要声明,如果一开始没声明,在升级时才声明,那么依然会报权限不足的错误
    		builder.setPersisted(true);
    		builder.setRequiresCharging(false); //是否在充电时执行
    		builder.setRequiresDeviceIdle(false); //是否在空闲时执行
    		builder.setPeriodic(1000); //设置时间间隔,单位毫秒
    		JobInfo ji = builder.build();
    		
    		JobScheduler js = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
    		js.schedule(ji);
    	}
    
    }

    另外注意在AndroidManifest.xml中补充服务声明:
            <service
                android:name=".service.MultiJobService"
                android:permission="android.permission.BIND_JOB_SERVICE" />


    点击下载本文用到的任务调度机制的代码


    点此查看Android开发笔记的完整目录
    展开全文
  • 通过一系列项目和工具的实践,我把...这十个方面主要是提供一看待前端的角度,它们可以用来检查自己对于前端技术掌握得是否全面,也可以通过观察不同前端解决方案在各个方面的工作方式来对比他们的优劣。 React...

    通过一系列项目和工具的实践,我把前端开发涉及到的工作归结为以下十点:

    1. 定义目录结构及开发和部署流程。
    2. 配置路由。
    3. 开发视图层。
    4. 管理样式。
    5. 管理组件。
    6. 绑定用户输入。
    7. 与服务器通信。
    8. 管理事件和数据。
    9. 处理模块间通信。
    10. 测试。

    这十个方面主要是提供一个看待前端的角度,它们可以用来检查自己对于前端技术掌握得是否全面,也可以通过观察不同前端解决方案在各个方面的工作方式来对比他们的优劣。

    React和Vue是目前前端比较流行的库,我会分别用这两种技术开发同一个应用,从上述十个方面出发,用具体代码对React+Redux和Vue+Vuex及其周边解决方案进行对比,希望通过这些对比让大家更细致和全面地了解到两种技术的区别。

    阅读全文: http://gitbook.cn/gitchat/activity/5b62342ba120e74da6654cbf

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 所谓屁股决定脑袋,很多时候,你坐到什么岗位上,你才知道你需要做什么。没有人去教欧阳明怎么去做开发经理。只是项目经理王维说了一句: “以后开发的事情你来负责”。...打不好听的比方,磨粉的骡子,突然没有
      
    

    所谓屁股决定脑袋,很多时候,你坐到什么岗位上,你才知道你需要做什么。没有人去教欧阳明怎么去做开发经理。只是项目经理王维说了一句:

    “以后开发的事情你来负责”。

    这就是说,欧阳明的工作从以前有人安排,突然陷入到需要自己给自己安排工作的境界。打个不好听的比方,磨粉的骡子,突然没有了鞭子,反而不知道向前走了。

    在很长的一段时间内,欧阳明的工作就是有什么事情找他,他解决什么事情。慢慢的,他总结出,这就是一种风险驱动的工作模式。他急忙的去翻阅书籍,开始学习很多研发管理方面的理论和实践故事。这是一个孤单的旅程。开发经理只有他一个,别人也没有经验可以参考给他。他必须坚定的走下来。那个时候他读了《快速软件开发》、《人月神话》、《需求管理》等等一些书,但是理解不深刻,总感觉不能和实际工作联系在一起。

    比如说,快速软件开发中的工作量估算中,一个功能点,对应多少代码行。这是一个经验值。但是公司当时没有这个数据,只能估算一个。

    没有银弹这个论断虽然大家都接受,但是大家都还在追求银弹。

    需求管理很专业,但是没有人愿意改变原有的工作模式去接受新的方式。

    开发经理,让欧阳明接触到了除了编程技术以外还有很多问题需要解决,还有很多领域他不清楚,他曾经认为擅长的,只是占有了一小块。

    关于如何做好一个开发经理,欧阳明曾经看到网上有一段描述,说外国的某某某,坚持每天编程半天,说这样才能了解系统的整体情况。他也坚持这么做了。虽然他也不知道这样对不对。不过依他很多年之后的总结来看。如果真想做管理,那就应该放弃这些技术上的诱惑,否则,技术只是他管理的干扰。

    就这样,欧阳明工作也是越做越顺。系统也慢慢的接近发版。但是在这个时候,欧阳明突然接到要转到其他项目组做开发经理的邀请,这让他非常犹豫,最后他的选择是去还是留呢?

    展开全文
  • 然而近日,Salesforce发布了一项新的研究成果:decaNLP——一可以同时处理机器翻译、问答、摘要、文本分类、情感分析等项自然语言任务的通用模型。 Salesforce的首席科学家RichardSocher表示:我们的decaNLP就...
  • 种定时任务的比较

    万次阅读 2016-05-30 19:35:49
    综观目前的 Web 应用,多数应用都具备任务调度的功能。本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺点进行比较,目的在于给需要开发任务调度的...
  • 《当程序员的那些狗日日子》(三十一)特殊任务

    千次阅读 热门讨论 2011-07-19 10:59:27
    在家过了一平静而祥和的春节假期后,我继续回到公司上班。 与洪互相协调后,在兑换系统的相关工作上,我们两人也重新分配了任务,他负责银行数据处理引擎、晴提出的新业务需求开发的相关工作,以及面向中国银行和...
  • 分布式任务调度

    万次阅读 2018-10-01 22:31:50
    什么是定时任务? 指定时间去执行任务 Java实现定时任务方式 1.Thread public class Demo01 { static long count = 0; public static void main(String[] args) { Runnable runnable = new Runnable() { ...
  • 关于影响SparkSQL工作效率的三个方面【面试解答】

    万次阅读 多人点赞 2019-01-17 16:20:38
    众所周知,SparkSQL操作最终是要被转换为spark操作的,而Spark是基于内存运算的,不管是运算还是shuffle操作亦或是persist/cache操作,都需要内存资源,这些操作的内存资源的在一执行者进程所拥有的内存占比可以...
  • 分布式定时任务

    千次阅读 2019-08-02 16:46:10
    首先,我们要了解计划任务概念,计划任务是指由计划的定时运行或者周期性运行的程序。我们最常见的就是Linux的‘crontab’和Windows的‘计划任务’。 那么什么是分布式定时任务,个人总结为...
  • 十三五”时期,国家在能耗“双控”方面主要采取以下几方面措施。 **一是落实目标责任。**将全国“双控”目标分解到各地区、主要行业和重点用能单位,加强目标责任评价考核。各地区根据国家下达的任务明确年度工作...
  • 魔兽世界任务分类及游戏任务系统设计启示魔兽的任务号称有1500多,这么多任务,难免有些水分在里面,不过把这些浩瀚如星海的任务分类一下,倒也可以借鉴不少。(由于我练的是部落,所以选部落方向的比较经典的任务...
  • 魔兽的任务号称有1500多,这么多任务,难免有些水分在里面,不过把这些浩瀚如星海的任务分类一下,倒也可以借鉴不少。(由于我练的是部落,所以选部落方向的比较经典的任务) 有人说,魔兽的任务很多,但基本上...
  • 系统任务4.1 显示任务4.1.1 display和write任务4.1.2 strobe监控4.1.3 连续监控4.2 文件I/O任务和函数4.2.1 打开文件和关闭文件4.2.2 文件输出4.2.3 数据转换为字符串4.2.4 读取文件内容4.2.5 文件I/O错误状态4.2.6 ...
  • 这是一重要的目标,特别是对于每天都有类似例行任务的程序员。 让我们考虑3技巧,以识别在编码或开发IT产品或服务时如何保持参与。 使用合适的奖励 一位行为经济学家Gary Charness博士认识到,一人可能会...
  • 任务管理的历史

    千次阅读 2011-03-03 17:06:00
    个任务一般包含要达到的目标、可利用的资源、可采取的手段、时间和成本要求等信息。有任务,就有任务管理。任务无处不在,任务管理也无处不在。可以说,人类的一切管理,都是针对任务的管理,或是与任务有关的管理...
  • 在上一章【第三十九章:基于SpringBoot &amp; Quartz完成定时任务分布式单节点持久化】中我们已经完成了任务的持久化,当我们创建一个任务任务会被quartz定时任务框架自动持久化到数据库,我们采用的是...
  • Quartz任务调度

    万次阅读 2008-04-15 10:19:00
    了解Quartz体系结构Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述:●Job:是一接口,只有一方法void ...
  • 分布式任务ijobhandle

    千次阅读 2017-09-18 09:53:20
    XXL-JOB是一轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 1.2 特性 1、简单:支持通过Web页面对任务进行CRUD操作...
  • 游戏任务系统设计思路

    千次阅读 2016-11-09 15:59:00
    一.为什么要设计任务系统 1. 体现世界观世界观 指主线剧情,历史背景,塑造主角的成长历程。...WOW中的任务虽然不是必须完成的,但是顺着部落...//希尔斯布莱德丘陵的赫尔库拉的复仇任务,部落的做这个任务有点
  • 第11章 任务管理Jbpm的核心业务是持久化流程执行的能力,对于管理任务和个人任务清单来说这是一非常重要的特性,Jbpm允许指定一段软件描述所有人的任务中处于等待状态的流程。11.1 任务任务是流程定义的一部分,...
  • 无人机任务决策

    千次阅读 2018-05-14 16:52:18
    存在不确定性的自主决策是一深入研究的问题空间,特别是在陆、空、海的自主系统运行领域。无人机执行任务的复杂性以及环境的不确定性,要求其系统具有更高的决策能力和自主性。现在的自主决策方法一般是基于人工...
  • 综观目前的 Web 应用,多数应用都具备任务调度的功能。本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺点进行比较,目的在于给需要开发任务调度的...
  • Spring Quartz 任务调度

    千次阅读 2013-11-01 13:43:11
     Spring对Quartz的集成与其对JDK Timer的集成在任务、触发器和调度计划的声明式配置方面等都非常相似。  Quartz的核心由两接口和两类组成:Job和Scheduler接口,JobDetail和Trigger类。不同于JDK
  • 这东西在任务调度方面,很有一套的,学习他有段时间了,自己也试图在项目中用,但苦于没有这机会。这两天要给部门写rest的短信接口,但是总感觉那东西时不时的会堵塞,致使其他的逻辑跑不通,所以把要发信息的这...
  •   本文是我在一技术分享群里面,对于任务调度和开源软件opencron的分享和使用体会,现在... 我计划从五个方面来进行分享: 1 任务调度需求与要素分析  任务调度,平时在大家的工作中应该会遇到比较多

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 296,328
精华内容 118,531
关键字:

十三个方面的任务