聚合文章列表
0 浏览

Android Architecture Components之LiveData

LiveData是一个数据持有者类,它持有一个值并允许观察该值。不同于普通的可观察者,LiveData遵守应用程序组件的生命周期,以便Observer可以指定一个其应该遵守的Lifecycle。LiveData实现了对数据的监听,利用这点,我们可以更好的实现获取数据和数据展示解耦。本文着重讲解数据更新和更新UI逻辑分离,LiveData的LifeCycle特性暂不做介绍。下文用一个简单的例子来介绍如何实现数据更新和UI展示解耦,实现逻辑分离。UI展示逻辑代码如下:privateMutableLiveDatausername;privateTextViewtvUsername;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_live_data);tvUsername=findViewByI

软件架构 2017-12-14 发布
0 浏览

了解这些内容,就能完成程序员到架构师的转变题文章

当你点开这篇文章,也许正是你踌躇不前的时期,职场生涯正处于迷惘阶段,不上不下。你可以选择点击右上角,关上一扇窗,但上帝不会为你打开另一扇门,因为钥匙在自己手上。很多程序员,到了25--30岁的时候依然迷茫,在代码中忙忙碌碌,整日加班,认为很努力。是这样吗?并不是。这并不是努力,虽然在进步,却相对静止。我认识很多程序员,他们每晚都在加班,在同样的大环境,背景下,当所有人都在加班的时候,你自认为付出的努力会比别人多吗?请别曲解了努力的概念,同时也不要与其他行业来做对比。当你在选择了程序员这条路之后,你的收获会与真正的努力成正比。那么,对于程序员如何成为架构师呢?现在是一个知识爆炸的时代,知识更新非常快。据测算,一个大学毕业生所学到的知识,在毕业之后2年内,有效的不过剩下5%。对于IT行业而言,这种形势更为明显,我们赖以立足的,不在于我们现在掌握了多少知识,而是我们有多强的学习能力。一、广度架构师应该对所在领域的主流技术体系有一个全面的认识知道每种技术的每种技术的由来为什么会出现这种技术这个技术是用来解决什么问题的

软件架构 2017-08-02 发布
0 浏览

春秋二十载 中科汇联在政务服务中实现全域智能

农业、工业、信息、智能,社会在不停的进阶,漫长的发展历程中,生产资料和生产工具不断发生着变化。AIphaGo0:3打败柯洁、AIphaGoZero自我学习及少许训练完美击败AIphaGo,透过这些AI热点事件,可以看到生产工具正在向基于数据、信息、知识、价值的智能工具转变。但AIphaGo、AIphaGoZero如没有规则和知识的支撑,何来对弈之说。规则和知识从何而来?是人类先验经验与知识;是理学、工学、文学的结合;所以说,想要在某一细分行业有所建树,必须要深耕了解业务,有全面详尽的知识图谱,深厚的智能技术积累才能够提供全方位服务。春秋二十载在政务服务中实现全域智能于1999年成立的中科汇联,在政务服务方面经验颇丰,中科汇联董事长游世学表示,主管部门在整个新科技的技术应用层面有所迟缓,AI融入政务服务,才刚崭露头角。目前,国务院的新一代AI的发展框架和纲要指出:2020年要实现科技惠及民生,AI要服务民生。2025要推动智能社会形成,智能社会也意味着政府需向智能政府转变。游世学·中科汇联董事长当问及中科汇联在Ai+政务服务

软件架构 2017-12-14 发布
AD 友情赞助
0 浏览

数据库介绍(MySQL安装 体系结构、基本管理)

第1章数据库介绍及mysql安装1.1数据库简介数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。1.1.1什么是数据数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。1.1.2数据库管理系统非关系型数据库NoSQL:非关系型数据库(NotonlySQL)不是否定关系型数据库,做关系型数据库的的补充。想做老大,先学会做老二。关系型数据库关系型数据库的特点二维表典型产品Oracle传统企业,MySQL是互联网企业数据存取是通过SQL(结构化查询语句)最大特点,数据安全性方面强(ACID)1.1.3NoSQL特性总览l不是否定关系型数据库,而是作为补充,现在也有部分替代的趋势。l关注高性能,高并发,灵活性

MySQL 2008-01-16 发布
0 浏览

MySQL引擎特性:InnoDB IO子系统

前言InnoDB做为一款成熟的跨平台数据库引擎,其实现了一套高效易用的IO接口,包括同步异步IO,IO合并等。本文简单介绍一下其内部实现,主要的代码集中在os0file.cc这个文件中。本文的分析默认基于MySQL5.6,CentOS6,gcc4.8,其他版本的信息会另行指出。基础知识WAL技术:日志先行技术,基本所有的数据库,都使用了这个技术。简单的说,就是需要写数据块的时候,数据库前台线程把对应的日志先写(批量顺序写)到磁盘上,然后就告诉客户端操作成功,至于真正写数据块的操作(离散随机写)则放到后台IO线程中。使用了这个技术,虽然多了一个磁盘写入操作,但是由于日志是批量顺序写,效率很高,所以客户端很快就能得到相应。此外,如果在真正的数据块落盘之前,数据库奔溃,重启时候,数据库可以使用日志来做崩溃恢复,不会导致数据丢失。数据预读:与数据块A“相邻”的数据块B和C在A被读取的时候,B和C也会有很大的概率被读取,所以可以在读取B的时候,提前把他们读到内存中,这就是数据预读技术。这里说的相邻有两种含义,一种是物理上的相邻,一种是

MySQL 2017-12-14 发布
0 浏览

MySQL UPDATE语句一个“经典”的坑

最近好几次有开发同学在钉钉上问我,比如下图:问题归纳起来就是:在MySQL里面update一条记录,语法都正确的,但记录并没有被更新...刚遇到这个问题的时候,我拿到这条语句直接在测试库里面执行了一把,发现确实有问题,但和开发描述的还是有区别,这里我用测试数据来模拟下:有问题的SQL语句:updateappssetowner_code='43212'andowner_name='李四'whereowner_code='13245'andowner_name='张三';执行之前的记录是这样的:执行之后的记录是这样的:可以看到,结果并不像这位开发同学说的“好像没有效果”,实际上是有效果的:owner_name的值没有变,但owner_code变成了0!why?看起来,语法是完全没有问题,翻了翻MySQL官方文档的update语法:看到assignment_list的格式是以逗号分隔的col_name=value列表,一下子豁然开朗,开发同学想要的多字段更新语句应该这样写:

MySQL 2017-12-14 发布
AD 友情赞助
0 浏览

使用 forRoot() 幫助 SharedModule 提供單一實例服務

在Angular專案中,我們會把共用的元件(Component)、指令(Directive)、管道(Pipe)放在一個SharedModule中做管理,那服務(Service)呢?一般來說,我們希望服務是單一實例(SingletonService)的狀態,但基於底層運作的方式,直接在SharedModule建立服務,會產生多個重複的單一實例服務,而可能引發問題,這時我們可以透過forRoot()來幫我們避免這狀況的發生。模組分割Angular提供模組化的概念讓我們能輕鬆管理應用程式的各個功能,在官方的StyleGuide針對模組架構也做了相當多的建議。根據StyleGuide的模組章節,會建議我們會將Angular專案分成以下幾個模組:共享模組(SharedModule)核心模組(CoreModule)特性模組(FeatureModule)特性模組不是只做一個模組叫FeatureModule,而且將多個功能特性區分成多個模組,例如AFeatureMod

Angular 2017-12-14 发布
0 浏览

Angular 上用 MathJax 的一些问题

写文章登录Angular上用MathJax的一些问题Axurez4hoursago首发于Eliseos:我是如何解决Angular上用MathJax的一些问题的-Eliseos话说我本来是倾向于KaTeX的,因为我感觉他很快,而且MathJax似乎很难配。但是大家表示对缺少功能的KaTeX并无好感,给我提供了一些钻研MathJax的动力。其实也不算钻研,因为实际上MathJax很简单,调用MathJax.Hub.Queue(['Typeset',MathJax.Hub,this.element.nativeElement]);就可以渲染一个元素(这个this.element.nativeElement是从Angular中调用它DOM的语法),这个.Queue实际上是MathJax自己实现的回调格式,语法非常清奇,参数个数不定,每个都是数组,代表一个回调,顺序执行。比如这个['Typeset',MathJax.Hub,this.element.nativeElem

Angular 2017-12-14 发布
0 浏览

过渡与动画 - steps调速函数&CSS值与单位之ch

撰写于2017-12-13修改于2017-12-14分类web开发/CSS标签CSS/animation写在前面上一篇中我们熟悉五种内置的缓动曲线和(三次)贝塞尔曲线,并且基于此完成了缓动效果.但是如果我们想要实现逐帧动画,基于贝塞尔曲线的调速函数就显得有些无能为力了,因为我们并不需要帧与帧之间的过渡状态,就像上篇中所看到的,所有基于贝塞尔曲线的调速函数都会在关键帧之间进行插值运算,从而产生平滑的过渡效果。这个特性显然很棒,平滑的效果确实是我们使用css过渡和动画所追求的。但是在逐帧动画的场景下,这种平滑的特性恰恰毁掉了我们想要实现的逐帧动画的效果.逐帧动画我们经常会看到一段卡通影片、一个复杂进度的提示框、一个小loading,我们不会单纯的选择一张GIF动画胜任,因为它的局限性和短板表现的很明显.GIF图片所能使用的颜色数量被限制在256色GIF不具有Alpha透明的特性,GIF动画一旦生成,参数就固定在文件内部,只能通过图像处理软件去重新生成.在某些场景下,基于图片的逐帧动

CSS 2017-12-14 发布
AD 友情赞助
0 浏览

「文经课表」当日课表界面实现方法

先简单介绍一下「文经课表」:基于微信小程序MINA框架的WXML、WXSS、JS为代码语言进行开发,视图层采用Flex弹性布局,逻辑层采用模块化模式开发。发布一周累计用户人数1000+,烟台大学文经学院、烟台大学文经学院学生会等官方微信公众号主动关联小程序,更多介绍:https://lab.sangsir.com/kb/。为什么要单独说这个界面的实现方法,其实这与课表数据是分不开的。好,装逼完成,开始说一下当日课表界面的实现方法。分析先看一下我处理的课表数据,这是一个由上到下,由左到右进行的分组。每一大节课为1个数组,数组内包含8个数组,里面包含星期一到星期日的两小节的课程内容。嗯,有点绕,总之这样写有利于for循环出当日课表。因此这样一个for循环出来之后的数据是无法使用css选择器直接控制格式,可以看一下直出后的效果。所有内容都挤在了一行之中,那该怎么办?这样也未免太不注重用户体验了吧?每循环一次加一个
总可以了吧?不不不,前言中说了,微信小程序中的代码语言为WXML、

CSS 2017-12-14 发布
0 浏览

CSS Flexbox详解

Flexbox是一个强大而灵活的布局,本篇文章主要对其进行学习了解。一、Flexbox简介Flexbox布局(FlexibleBox)模块旨在提供一个更加有效的方式制定、调整和分布一个容器里的项目布局,即使他们的大小是未知或者是动态的。简单的理解,就是可以自动调整,计算元素在容器空间中的大小,并进行有效合理的布局。Flexbox布局中有两个重要的概念:Flex容器和Flex项目。Flex容器包含多个Flex项目,通过对Flex容器和Flex项目的具体属性进行设置,可以达到各种各样灵活的布局样式。Flexbox使用Flexbox的使用非常简单,只需要对Flex容器设置display:flex或者display:inline-flex,就可以具体操作使用Flexbox布局了。下面以具体示例演示:html代码

css代码.container{widt

CSS 1900-01-01 发布
0 浏览

浏览器里的黑天鹅:不可预知的前端变革点

『黑天鹅』是这样的事件:难以预测、冲击性大,并且能马后炮地事后分析。少数的黑天鹅事件几乎能解释这个世界上发生的所有事情。难道前端领域的演化也不是循序渐进,而是黑天鹅式的吗?让我们换一种角度回顾一下历史吧…不可预知的黑天鹅审视一下你周围的环境,回顾自你出生以来周围发生的重大事件、技术变革和发明,把它们与人们此前关于它们的预期相比较,然后看一下它们中有多少是在预料之中的?看看你自己的生活,你的职业选择、你与配偶的邂逅、你被迫离开故土、你面临的背叛、你突然的致富或潦倒,这些事有多少是按照计划发生的?——《黑天鹅》许多史书、传记都以一种决定论的视角来阐述历史演化的必然性,但实际上对于生存在当时的芸芸众生而言,历史上的巨大变革点往往在某个平凡的日子里突然地发生,没有一点点防备也没有一丝顾虑。比如,当年一位准备离休当教授的江南老人,怎么就突然去了北京呢?我的这个经历就是到了上海,到了89年的年初的时候,我在想我估计是快要离休了,我想我应该去当教授……我绝对不知道,我作为一个上海市委书记怎么把我选到北京去了。——:eyeglasses:

jQuery 2017-12-14 发布
AD 友情赞助
0 浏览

踩坑:Vue2.0与1.0命名的区别

ThereareonlytwothingsinComputerSciences:cacheinvalidationandnamingthings.---PhilKarlton今天在vue-cli中使用iview时,控制给了这个警告:两种解决办法:1.在main.js里面添加代码2.使用iview-loader之前用vue1.0的时候,都没有这个警告,经查阅相关资料得知:vue升级2.0后才会出现这个问题,这里涉及变量命名的问题,Vue组件的名称最好不要和原生HTML标签相同。为了避免重名,通常会在组件名称前面加上一个前缀,如el-button、i-input、等。这通常不会有什么问题,但有时候你的模板中混杂了原生HTML标签和组件标签,要想区分它们并不是很容易。

vue.js 2017-12-14 发布
0 浏览

vue源码

vuejs内置组件component实现tab切换懒加载和表单输入框内容的清空vuejs内置组件component的使用vue的双向绑定原理及实现vue的双向绑定原理及实现Vue.js2.0快速上手精华梳理自从Vue2.0发布后,Vue就成了前端领域的热门话题,github也突破了三万的star,那么对于新手来说,如何高效快速的学习Vue2.0呢。Vue基础对于没有接触过es6和webpack的童鞋来说,不建议直接用官方的脚手架vue-cli构件项目。先按文档顺序最少学习完组…Vuex源码分析之前大致分析过了vue-cli源码和vue-router源码,这两个工具也是vue生态中比较重要的组件.而最近因为业务上的需要,接触到了vuex的一些组件源码.vuex集中于MVC模式中的Model层,规定所有的数据操作必须通过action-mutation-statechange的流程来进行,再结合vue的数据视图双向绑定特性来实现页面的展示更新:合格前端系

vue.js 2017-12-14 发布
0 浏览

数组方法的封装/代码的复用加强

前言在编写JavaScript代码的时候存在一些对于数组的方法,可能涉及的页面会很多,然后每次去写一堆代码。长期下去代码会特别的繁多,是时候进行一波封装了,话不多说开始书写优美的代码代码已上传github,需要的欢迎star(https://github.com/Xieguoiang...)。关于数组一些方法的封装1.数组去重`上文提到的Set的封装`//ES6新增的Set数据结构,类似于数组,但是里面的元素都是唯一的,其构造函数可以接受一个数组作为参数//ES6中Array新增了一个静态方法from,可以把类似数组的对象转换为数组//方法二newfunctionremoveRepeatArray(arr){returnArray.from(newSet(arr))}2.数组顺序打乱functionupsetArr(arr){returnarr.sort(function(){returnMath.random()-0.5});}3.数组最大值最小值//这一

vue.js 2017-12-14 发布
0 浏览

Vue.js 子组件的异步加载及其生命周期控制

前端开发社区的繁荣,造就了很多优秀的基于MVVM设计模式的框架,而组件化开发思想也越来越深入人心。这其中不得不提到Vue.js这个专注于VM层的框架。本文主要对Vue.js组件化开发中子组件的异步加载和其生命周期进行一些探讨。阅读本文需要对Vue.js有一定的了解。注意:本文中的一些例子代码,是以vue-cli采用webpack模板初始化的项目为基础。异步组件讨论异步加载,需要先了解下异步组件。Vue.js的异步组件是把组件定义为一个工厂函数,在组件需要渲染时触发工厂函数,并且把结果缓存起来,用于后面的再次渲染。例如注册一个全局异步组件:Vue.component('async-demo',function(resolve,reject){setTimeout(function(){//将组件定义传入resolve回调函数resolve({template:'<div>Iamasync!</div>' &nb

vue.js 2017-12-14 发布
0 浏览

Vue笔记系列(一)Vue.js入门

Vue笔记系列2、Vue.js渐进3、Vue.js进阶Vue.js的概述如官网所说,Vue.js是一款轻量级的以数据驱动的渐进式JavaScript框架。老卜的前端开发之走进Vue.js介绍到:Vue.js数据驱动的原理在于View层的视图发生改变时,Vue会通过DOMListeners来监听并改变Model层的数据。反之,当Model层的数据发生改变时,也会通过DataBingings来监听并改变View层的展示。从而实现双向数据绑定的功能。例如:jQuery通过操作DOM来改变页面的显示,而Vue通过操作数据来实现页面的更新与展示。这样我们就能很直观的理解数据驱动的意思了。上面介绍到的是Vue.js的原理,下面再来科普一下MVVM这个概念(一像素写的《Vue.js和MVVM小细节》),可以让你更好的理解Vue,但是没有太大的实践作用,但是可以装B,更重要的是可以在面试的时候装B。MVVM是Model-View-ViewModel的缩写,它是一种基于前端开发的架构模式,其核心是提供对View和ViewM

vue.js 2017-12-14 发布
0 浏览

vue简易表格全选

最近以为公司业务需要不让用我最爱的elementUI了,刚开始感觉没啥,后来真到开始写了,真的就懵逼,组件不让用啥都得自己写了。。最常用表格全选都都变成了一个坎。对于表格全选,我们一定能想到就是判断表格的个数和表格选中的个数相比较,相等全选按钮就处于选中状态,不等就不选中,可是这又不是jQuery,选择器又不能用。对于刚接触vue半年而且大部分时间都在用饿了么组件的我真的是不知所措。搜了很多资料,看到很多解决方案都是要在数据中加入checked状态,我是拒绝的,就算我愿意后台哥哥也不愿意啊,这不是脏数据嘛!而且还不是组件式的,谁想用都得copy一大坨代码,我相信我们组长是拒绝的。感觉好难哦。。。但是问题还是要解决,饭还是要吃的。回家的想了想,看了看vue的官网,灵感就来了,很快就把解决了。你以为就这就完了??全选反选只是checkbox选中,我们的选中是为了获取数据啊,不然选它干啥!刚开始想为每行的checkbox的click事件传值,后来具体操作发现这是有bug的。然后又各种尝试最后解决了问题。下面上代码:Vue.com

vue.js 2017-12-14 发布
0 浏览

关于vue自定义事件中,传递参数的一点理解

例如有如下场景<!--父组件--><template><div><!--我们想在这个dealName的方法中传递额外参数name--><test-sonv-for="iteminlist"@dealName="todo(item.name,arguments)":item="item"></test-son></div></template><script>exportdefault{name:'test-p',data(){return{list:[{name:'小王'},{name:'小刚'}]}},methods:{todo(name,data){co

vue.js 2017-12-14 发布
0 浏览

基于手淘 flexible 的 Vue 组件:TextScroll -- 文字滚动

vue-flexible-components基于手淘flexible.js的Vue组件前言:目前手头的移动端Vue项目是用手淘的lib-flexible作适配的,并用px2rem来自动转换成rem。关于lib-flexible和px2rem的配置,请移步vue-cli配置flexible。由于使用rem作适配,导致现有的很多移动端UI框架不能与之很好的配合,往往需要大动干戈更改UI框架的样式,背离了使用UI框架达到快速开发的初衷。为了以后项目的组件复用,以及提高开发可复用组件的能力,特把平时项目中常用的、简单的组件单独拎出来。此为小白之作,论代码质量、难易程度、复用度,远不及各位大佬之杰作,求轻喷。同时,也恳请各位,提出意见和建议,不胜感激!GitHub地址:vue-flexible-componentsTextScroll--文字滚动效果展示  代码分析利用vue的列表过渡transition-group来进行动画渲染。滚动元素都是相对于滚动视口绝对定

vue.js 2017-12-14 发布
AD 友情赞助