显示接口

前端干货之JS最佳实践

岁酱吖の 提交于 2020-03-30 10:22:54
持续更新地址 https://wdd.js.org/js-best-pr... 1. 风格 一千个读者有一千个哈姆雷特 ,每个人都有自己的code style。我也曾为了要不要加分号给同事闹个脸红脖子粗,实际上有必要吗? 其实JavaScript已经有了比较流行的几个风格 JavaScript Standard Style Google JavaScript Style Guide Airbnb JavaScript Style Guide 我自己使用的是 JavaScript Standard Style , 我之所以使用这个,是因为它有一些工具。可以让你写完代码后,一旦保存,就自动帮你把你的风格的代码修正成标准分割,而不是死记硬背应该怎么写。看完这个页面,你就应该立马爱上 JavaScript Standard Style , 如果你用vscode, 恰好你有写vue, 你想在.vue文件中使用standard风格,那么你需要看看 这篇文章 2. 可维护性 很多时候,我们不是从零开始,开发新代码。而是去维护别人的代码,以他人的工作成果为基础。确保自己的代码可维护,是赠人玫瑰,手留余香的好事。一方面让别人看的舒服,另一方面也防止自己长时间没看过自己的代码,自己都难以理解。 2.1. 什么是可维护代码 可维护的代码的一些特征 可理解 易于理解代码的用途 可适应 数据的变化

springboot整合freemarker

倖福魔咒の 提交于 2020-03-18 18:21:49
前言 本篇文章主要介绍的是springboot整合freemarker填充ftl模板文件,生成新的文件(如html),以及freemarker的语法。 GitHub源码链接位于文章底部。 freemarker介绍 freemarker是一款模板引擎,它基于模板来生成文本输出。这里的文本包括但不限于html页面,word,各种源代码文本...... 工作原理 模板:就是一份已经写好了基本内容,有着固定格式的文档,其中空出或者用占 位符标识的内容,由使用者来填充,不同的使用者给出的数据是不同的。在模板 中的占位符,在模板运行时,由模板引擎来解析模板,并采用动态数据替换占位 符部分的内容。 freemarker的应用方向有两个,一是基于ftl文件,将内容填充到ftl文件中,就可以使用制作ftl模板的文本的方式进行访问和显示了,比如使用html文本制作了一个ftl模板,我们使用代码填充数据进ftl模板,那么我们就能以访问html的方式去打开这个文件了;另一种方式则是直接生成对应的文件,比如生成xxx.html的文件。 应用场景 : 淘宝中的商品数不胜数,在商品的详情页这一块,如果全都以真实的html页面显示,那么有多少个商品就得有多少个页面了,何况还有增删改的情况。所以使用一个固定的ftl模板,填充数据,这样一个文件就能显示无数个页面的内容了。 再比如一些政府单位的项目

Activity窗口及视图的创建

∥☆過路亽.° 提交于 2020-03-12 12:41:06
Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API。但它并不是显示视图,实际上Activity调用了PhoneWindow的setContentView()方法,然后加载视图,将视图放到这个Window上,而Activity其实创建的时候初始化的是Window(PhoneWindow)。Activity其实是个控制单元,即可视的人机交互界面。打个比方,Activity是一个工人,它来控制Window;Window是一面显示屏,用来显示信息;View就是要显示在显示屏上的信息,这些View都是层层重叠在一起(通过infalte()和addView())放到Window显示屏上的。而LayoutInfalter就是用来生成View的一个工具,XML布局文件就是用来生成View的原料。 Activity类的成员变量mWindow的类型为Window,它用来描述一个应用程序窗口。通过这个成员变量,每一个Activity组件就都会有一个对应的Window对象,即一个对应的应用程序窗口。 Window类是一个抽象类,提供了绘制窗口的一组通用API。可以将之理解为一个载体,各种View在这个载体上显示。 Window类有一个类型为Context的成员变量mContext,它指向的是一个Activity对象

模型-视图-提供器 模式

允我心安 提交于 2020-03-05 06:26:13
原文:http://www.tracefact.net/Software-design/Model-View-Presenter-Pattern.aspx 出处: http://msdn.microsoft.com/en-us/magazine/cc188690.aspx 引言 随着像Asp.Net和Windows窗体这样的用户界面创建技术越来越强大,让用户界面层做多于它本应做的事是很常见的。没有一个清晰的职责划分,UI层经常沦为一个包含实际上应属于程序其他层的逻辑的容器。有一个称为 模型(Model)-视图(View)-提供器(Presenter)(MVP)的设计模式,特别适合解决这个问题。为了表明我的观点,我将为Northwind数据库中的客户建一个遵循MVP模式的显示屏幕(display screen)。 为什么在UI层包含太多的逻辑是很糟糕的?在既不手动运行应用程序,也不维护丑陋的自动执行UI组件的UI运行者脚本(runner script)的情况下,位于应用程序UI层中的代码是非常难于调试的。虽然这本身就是一个很大的问题,一个更大的问题是在应用程序的公共视图之间会有大量的重复代码。当执行某一特定业务的功能在UI层的不同部分之间拷贝,通常很难找到好的可选重构方法。MVP设计模式使得将UI层中的逻辑和代码 重构为 更加易于测试的新型的、可重用的代码 更加容易。 图1

MVC,MVP设计模式

吃可爱长大的小学妹 提交于 2020-02-17 18:39:15
什么是MVP   MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。   模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;   视图(View):负责界面数据的展示,与用户进行交互;   主持人(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。   如下图所示,View与Model并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。   这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。当然

微信小程序操作反馈

試著忘記壹切 提交于 2020-02-09 16:49:55
博客简介 本篇博客介绍微信小程序中界面与用户交互响应用户的操作进行反馈的方法,包括4类反馈: 显示消息提示框wx.showToast 显示模态对话框wx.showModal 显示 loading 提示框wx.showLoading 显示操作菜单wx.showActionSheet 显示消息提示框wx.showToast wx.showToast用于显示消息提示框,提示用户操作的状态 wx.showToast参数信息: 属性 类型 默认值 必填 说明 itemList Array.<string> 是 按钮的文字数组,数组长度最大为 6 itemColor string #000000 否 按钮的文字颜色 success function 否 接口调用成功的回调函数 fail function 否 接口调用失败的回调函数 complete function 否 接口调用结束的回调函数(调用成功、失败都会执行) object.success 回调函数 参数 Object res 属性 类型 说明 tapIndex number 用户点击的按钮序号,从上到下的顺序,从0开始 使用方法 //wxml < button size = "mini" bindtap = "showActionSheetFunc" > showActionSheet显示菜单 < / button > /

2020-01-29

拜拜、爱过 提交于 2020-01-30 07:31:46
自己的一些面试总结 线程 多线程 线程的创建方式 1.继承Thread类创建线程 2.实现Runnable接口创建线程 3.使用Callable和future创建线程 4.使用线程池例如用Executor框架 线程怎么启动 Thread.start();//开启线程 Thread.run();当普通方法的方式调用 线程的状态(就绪、运行、阻塞、结束) 1.新建状态:当用new操作符创建一个线程时,线程还没有开始运行,此时线程处在新建状态 2.就绪状态:一个新创建的线程并不自动开始运行,要执行线程,必须调用线程start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态 3.运行状态 当线程获取cpu时间后,他才进入运行状态,真正开始执行run()方法 4,阻塞状态:线程运行过程中,肯峨眉号各种原因进入阻塞状态; sleep方法进入睡眠状态 线程在等待某个触发条件 线程的同步 同步就是发出一个功能调试时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。 线程、进程的区别 线程和进程都是一个时间段的描述,是cpu工作时间段的描述。 进程的颗粒太大

Android 代码优化点滴

天大地大妈咪最大 提交于 2020-01-23 02:13:01
MVC 模型:Mode,View,Controller与view相关的类:DragLayer (自定义的帧布局DragLayer 包含hotseat ,workspace ,和DragController , DragListener 等一起使得桌面上的shortcut具备拖动功能,和DropTarget一起具备删除功能 桌面拖动,删除的处理:将workspace 和DragLayer通过一些接口:DropTarget, DragSource, DragScroller配套完成,DragLayer 和DragController 操纵以上接口类,在workspace 去实现具体)àworkspace(自定义的类似pageview,自己可以snapToPage,即可在不同的cellLayout之间切换,同时实现拖动,触摸等接口,做具体的动作)à cellLayout(默认一个workspace 包含两个cellLayout,可以增加,删除 )à ShortcutAndWidgetContainer(在cellLayout 中,真正是它来确定桌面上的Shortcut 的位置,大小等)à (ShortcutInfo,FolderInfo) 与Mode 相关的类:LauncherProvider 提供和数据库直接操作相关的接口,LauncherModel 非UI线程(后台线程

STM8L的LCD接口详解及驱动程序

半城伤御伤魂 提交于 2020-01-14 18:29:06
STM8L部分型号集成了段式液晶驱动器,可以驱动4*28=112个液晶段.段式液晶屏为低功耗显示器件,功耗根据屏的大小和显示段数会有所不同,通常功耗在10ua左右.生活中,数字电子表,数字万用表,数显温度计等,使用的都是段式液晶屏,通常一颗纽扣电池可以保证设备间隔不断显示数字两年或更久. 大家比较熟悉的液晶屏1602模块其实也是段式液晶,是一个有很多段的点组成的,由于点比较多,所以1602模块集成了驱动芯片,我们只需给1602送数据,就可以控制1602进行显示了.液晶本身不会发光,1602之所以会发光是因为使用了LED背光板. 段式液晶驱动器,通常会含有一个电压泵,一个频率分频器.电压泵用来提供驱动液晶段的电压,电压的高低决定着显示的清晰度,也就是决定着液晶的对比度.提供给LCD驱动器的频率决定着,刷新段式液晶的频率,如果提供给LCD的频率太低,会看到显示时的频闪. 从上图可以看到,除了分频器和电压泵部分,还有显存.所有液晶屏都会有显存,每个显存控制着对应的引脚,对于STM8L的八位显存,可以控制8个引脚和一个COM引脚,比如STM8L的RAM0控制着COM0对应的S0~S7引脚. 当我们需要驱动一块液晶屏时,首先要拿到这种液晶屏的引脚对应显示段的图纸.如下图,由于STM8L152C6的RAM0控制着COM0对应的S0~S7引脚,如果要显示下图的"元"

Windows命令-route

不打扰是莪最后的温柔 提交于 2020-01-08 03:13:40
Windows route命令 添加一条永久网关:route add 0.0.0.0 mask 0.0.0.0 192.168.2.1 -p 例如: route -p add 192.168.0.0 mask 255.255.255.0 192.168.100.1 具体功能 该命令用于在本地IP路由表中显示和修改条目。使用不带参数的ROUTE可以显示帮助。 2.语法详解 route [-f] [-p] [command [ destination ] [mask netmask ] [ gateway ] [metric metric] [if interface] 3.参数说明 -f 清除所有不是主路由(子网掩码为255.255.255.255的路由)、环回网络路由(目标为127.0.0.0,子网掩码为 255.255.255.0的路由)或多播路由(目标为224.0.0.0,子网掩码为240.0.0.0的路由)的条目的路由表。如果它与命令之一(例 如Add、Change或Delete)结合使用,表会在运行命令之前清除。 -p 与Add命令共同使用时,指定路由被添加到注册表并在启动TCP/IP协议的时候初始化IP路由表。默认情况下,启动TCP/IP协议时不会保存添加的路 由,与Print命令一起使用时,则显示永久路由列表。所有其他的命令都忽略此参数。永久路由存储在注册表中的位置是