重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
花费大概一个多月的时间,这个完全由Flutter编写的Todo-List项目总算初步完成了!现在,它终于要被开源出来了。
创新互联建站服务项目包括涧西网站建设、涧西网站制作、涧西网页制作以及涧西网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,涧西网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到涧西省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
在开始介绍之前,先来简单的看一下真机运行效果吧
下面,针对使用者和开发者,我将来分别介绍一次
app中,可以在主题切换界面选择各种主题颜色进行切换,app自带六个默认主题,这些都是我经过多次尝试所挑选出来的颜色搭配。同时你也可以选择自定义主题颜色
在app中,每项任务都会带有一个图标,而app提供了所有 Flutter 自带的 Material design 风格的图标。这些图标,你同样可以进行任意颜色的自定义
在app中,有多项其他的操作是你可以进行自定义的
比如说主页测滑栏的头部展示内容。当然,还有一些其他的操作,就由你去自行体验了
当你完成了一项任务后,这个任务就会从主页转移到完成列表页面,在这里你可以看到任务的一些额外信息
那么,对于使用者的介绍就到这里结束
下面就是为广大开发者们介绍的时间了!
各位开发者们请扶好你们的秀发,下面就我来带领各位参观参观这个项目的内部构造
项目中使用了一些非常优秀的第三方库,也特别感谢这些开发者们,让我的发量保持健康
下面就是这些控件的信息
项目使用的状态管理框架是 codeProvider/code ,而整个项目的架构如下
看起来是不是和 Android 中的 MVP 模式很像呢?其实都差不多的,只是名字略有不同罢了,你也可以就把上面的模式当作是 MVP 模式。
Flutter 可以说是特别适合这种架构模式的,因为视图跟随数据而变化,你基本上不用去关心View,只要去对数据进行操作就好了。
项目目录结构如下:
先说明一下除了 lib 外的其他目录:
然后是 lib 目录
项目创建于6月21日,到如今发布1.0.0版本花了三十多天的时间,虽然我做过很多测试,解决了很多bug,但是时间确实不充裕。纰漏也会在所难免
所以如果使用过程中遇到什么问题,或者对于项目有什么好的建议,欢迎在app中的反馈界面提出来,也可以在下面留下评论,又或者在github上提issue。
项目的UI设计与后台接口均由我独自一人完成,所以这也是为什么时间不够的原因。不过目前项目中只是包含了两个自己写的接口,后续计划中应该会加入登录功能,到时候会有很多接口操作。
若有兴趣,请持续关注!
如果你觉得这个app不错,或者这个项目有帮助到你,不妨给这个项目一个Star吧。项目后面也会持续保持更新和维护!
ToDo-List
UI项目地址
密码:Aczh
1. Spring
Spring框架是一款功能强大的轻量级Web应用开发框架。面对需要高性能的复杂Web应用需求,Spring能够提供出色的开发服务,因此它在各个框架中能够脱颖而出。Spring框架的核心宗旨是使得Java开发人员可以轻松地创建出企业级的应用程序。
Spring提供了包括:Spring MVC、Spring Core、Spring Security、Spring Transaction、Spring Boost、以及Spring ORM在内的许多模块,以方便企业应用根据实际情况灵活选用。如果您想深入了解其具体的使用场景和用法的话,可以参见《Spring框架注释指南(A Guide to Spring Framework Annotations)》。
优点
它提供了一个轻量级的容器,用户无需使用Web服务器、或应用服务器软件,即可启动之。
由于支持JDBC,因此可提高实际应用的生产率,并减少错误率。
Spring能够同时支持XML,以及基于注释的配置。
它提供了代码的向后兼容性,和可测试性。
2. JSF(Java Server Faces)
由Oracle开发的Java Server Faces(JSF),可用于创建企业级的应用程序、各种原生应用、以及Web应用的开发。它往往也被用于为基于Java的应用开发用户界面。
作为一款稳定的、且基于组件的MVC框架,JSF具有一种清晰的体系结构,用户可以用它来明确地区分出目标应用的逻辑和表示。
JSF只需通过拖放UI组件,即可帮助开发人员创建用户界面。开发者无需掌握诸如:HTML、CSS、JavaSript之类的高级客户端技术知识,便可用它来简化应用程序的表示层,并进行开发。
优点
JSF是Java EE的组成部分。
它提供了出色的工具和丰富的库。
由于允许用户使用Web界面,来扩展现有的后端Java代码,因此用户不必通过引入新的框架,来更改基本的应用程序。
3. Google Web Toolkit
Google Web Toolkit(GWT)是一个完全免费的,流行且开源的Web框架。它可以帮助开发人员针对Java Ajax应用进行开发和调试。
借助GWT,您可以编写出各种复杂的、基于浏览器的应用程序,而无需具备JavaScript等前端技术方面的专业知识。
当然,GWT也有一些独特的功能,其中包括:跨浏览器的可移植性、历史记录的管理、国际化、以及书签。许多Google产品,包括:AdSense、Google Wallet、以及Blogger都是使用GWT编写的。
优点
开源且完全免费。
对开发人员十分友好。
支持常见的Web开发任务重用。
Google API可以在GWT应用程序中被使用。
提供国际化、跨浏览器的可移植性、UI抽象、书签、以及历史记录管理。
4. Vaadin
Vaadin是一种用于简化Java开发的Web应用框架。它能够方便开发人员构建出自定义的Web开发服务。
该框架的主要优势在于客户端与服务器端之间可以流畅地通信。Vaadin可以从Java虚拟机处直接访问DOM。作为一个轻量级的框架,Vaadin Flow可被用于处理服务器端和客户端之间的路由通信。Vaadin允许开发者将Vaadin组件集成到他们正在使用的任何一款IDE中。由于Vaadin是跨平台类型的框架,因此用户无需将代码迁移到其他的平台上。
在使用Vaadin的过程中,开发人员不需要具有丰富的HTML、CSS、以及JavaScript经验。Vaadin会自动将Java转换为标记。
优点
通过支持拖放、以及其他出色的功能,它简化了Java应用单页UI的创建。
具有WebSocket支持的自动化“服务器端-客户端”通信方式。
使用MVC(Model-View-Controller)或MVP(Model-View-Presenter),来进行数据绑定。
带有嵌套路由和参数支持的路由器。
支持包括Kotlin和Scala在内的JVM语言。
内置了对于Spring的支持。
5. Hibernate
Hibernate是一个对象关系映射(Object-Relational Mapping,ORM)型数据库,可被用于开发出稳定的Java框架。对象关系映射往往被用于横跨两个不兼容的系统,以连接数据。Hibernate在关系数据库管理系统(relational database management systems,RDBMS)和Java应用程序之间,提供了良好的通信。它非常适合工作在复杂的生态系统中,并对数据流实现无缝化。
在使用诸如Java之类的面向对象的语言时,开发人员往往会遇到被称为“对象关系阻抗不匹配”或“范例不匹配”的问题。Hibernate为开发人员提供了一个可以克服此类问题的框架。
Hibernate的查询与SQL类似,称为HQL(Hibernate查询语言)。Hibernate可以直接将Java类映射到相应的数据库表上,反之亦然。Hibernate在其主文件--hibernate.cfg.xml中,提供了使用数据库配置映射的各种Java类信息。
优点
一种强大的跨数据库解决方案。
可扩展。
数据可以轻松地实现转换。
可配置。
总结
希望上面介绍到的各种最受欢迎的、使用最广泛的Web应用开发Java框架,能够帮助您从易用性、配套文档、以及技术支持等需求维度,选出适合自己实际项目的框架。当然如果您是一名新手,那么我建议从《Java信息图(Java Infographic)》一文,快速熟悉并上手Java。
android自己卷自己,自己造一个MVI架构模式吗?
MVI架构模式是国内android开发者最近一两年造出来的吗?
看了很多MVI的资料,发现都提到cycle.js框架。android的mvi架构就是启发于cycle.js框架。
我们再看看Cycle.js框架是什么时候开始的,又是什么时候开始使用MVI模式的。
Cycle.js框架 第一个预发版本 :
再结合官方文档来看,Cycle.js框架就是为了MVI架构模式而生的。
虽然不知道,Cycle.js框架是不是首个MVI模式框架。
但是从很多资料可以推测,MVI架构模式就是Cycle.js框架推广开来的。
而且早在2014年就已经在前端开发中用得飞起了。
想想2014年,咱们在干嘛?android在用什么架构模式。
正所谓,天下武功出少林啊。
我们android的很多技术,在前端早就用“烂了”。
我们知道MVP和MVVM的爹都是MVC。MVI的爹也是MVC。
MVC的Controller是命令是编程组件,不能直接实现响应式编程思想。
响应式编程范式(Reactive programming):
安卓官方的compose框架、微信小程序、Flutter、React、鸿蒙UI的开发框架,都是使用响应式开发框架。
这里就不拓展开来讲了,上面提到的任何一个开发框架,你只要会一个基本就能理解响应式编程范式。
如果一个都不会也没关系,现在不理解响应式编程也没关系,等你学会MVI就理解了,这种只有实际使用过才能深刻理解。
学不会也没关系,不要焦虑(尤其那些工作不久的小伙伴,学不会属于正常现象~)
MVI,咱第一遍学不会,就等2年,再学一遍~
2年后也没学会,那就再等2年~ 一定要有耐心~
如果还是学不会,那也没关系,因为MVI早晚也会过时~ 等过时了就不用学了~
哈哈哈~ 别笑,正经Android可不会开玩笑的。
就像rxjava,当年有多少人死活学不会,android开发现在谁还学Rxjava?哈哈哈~
用一张图来总结这次升级的核心思想:
新版架构指南在旧版的基础上,做了如下调整和建议:
1. 将LiveData组件改成了StateFlow
对协程的使用更友好。并且更能体现面向数据流开发的思想。
实际上,依然使用LiveData也没毛病。
2. ViewModel传递给View的数据限制为View的UIState
ViewModel从Model层获取数据后,转换为UIState数据,通过StateFlow流向View层。
UIState的数据面向界面组件而定义的,是能直接控制View组件如何显示的数据。
所以我们也可以称UIState为界面的状态或者View的状态。
如下:
3. 单数据流还是多数据流的选择
官方指南并没有强制我们使用单流。
同一个界面应该使用单个StateFlow还是多个StateFlow,需要我们自己判断。
我们应该根据UIStates数据们之间关联程度来决定多流还是单流。
单流优缺点都十分明显:
优点: 数据集中管控,会提高代码的可读性和修改的便利性。
缺点: 当数据非常多且复杂时,会影响效率。因为我们没有diff功能,View层不能只更新有变化的数据,只会根据UIState刷新当前界面。
我们再看下官方新版架构图:
当然不仅仅MVVM可以改造成响应式开发范式,MVP也是可以的。
不信你看 这篇blog :
1. 理解MVC架构模式的思想【MVC是其他架构模式之爹,他的思想是MVP、MVVM、MVI的基础,学会它是关键步骤~】。
3. 学习kotlin的StateFlow组件,的使用:Sequence-Flow-StateFlow。
4. 学习ViewModel组件的使用(虽然不用ViewModel也能实现MVI架构,但是ViewModel还是值得学习)。
5. 理解DRY(Don't Repeat Yourself)原则。
6. 理解MVVM(因为官方的MVI模式是基于MVVM的基础改造的~)。
7. 学习官方架构指南。
8. 实战。
在这里就分享一份由大佬亲自收录整理的 学习PDF+架构视频+面试文档+源码笔记 , 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
当然,你也可以拿去查漏补缺,提升自身的竞争力。
真心希望可以帮助到大家,Android路漫漫,共勉!
如果你有需要的话,只需 私信我【进阶】即可获取
SA系列伺服放大器是专为我所研制的CSDY系列射流管电液伺服阀配套而设计的专用控制器。该放大器和我所生产的CSDY系列电液伺服阀配以各种不同的执行元件及反馈检测元件,可构成阀控油缸,阀控马达,阀控泵等多种性能优良的位置、速度、加速度、力电液伺服控制系统。SA-01型伺服放大器下主要针对部分CSDY系列设计的。根据不同的负载选择不同输出额定电流档位。该放大器有输出额定电流分别为8mA,15mA,20mA,40mA四个档位,对应的负载(阀线圈)阻抗分别为500欧姆、175欧姆、80欧姆、20欧姆。可以差动、串联、并联等方式工作,我们建议选用并联工作方式为好。
SA-02型市带有振颤信号的伺服放大器。该振颤信号源为一双T网络的正弦波振荡器,其频率为159Hz左右,其作用市给伺服阀一个高于工作频率的扰动量,用以改善阀芯的静态及低频摩擦特性,减小伺服阀的滞环,改善伺服阀的控制性能。
伺服放大器(servo-valve amplifier)
Model:SA-01型:
放大增益
Amplify gain 1-20mA/V
输入电压
Input pressure Vpp=+-10V
最大输出电流
Max Output current 1P=2(rated current)
非线性失真
nonlinear distortion =+-1%
稳定性
Stability =1.5%
Model:SA-02型:
放大增益
Amplify gain 1-20mA/V
输入电压
Input pressure Vpp=+-10V
最大输出电流
Max Output current 1P=1.5(rated current)
非线性失真
nonlinear distortion =+-1%
稳定性
Stability =1.5%
颤振信号源
Flutter signal F=159Hz
扰动幅值
Amplitude perturbation =30%(rated current)
Model:SA-01型:
输入电压
Input pressure AC 220V 50Hz
输出电压
Output pressure DC+-15V +5V
线性调整率(电压稳定度)
Linear adjustment rate (pressure stability) =1%
负载调整率(负载稳定度)
Load adjustment rate (Load stability) =1%
纹波及噪声
Ripple and noise =1%的输出电压(MVP-P)
Output pressure
Model:SA-02型:
输入电压
Input pressure DC 24V 5W
输出电压
Output pressure DC +-5V
Servo-valve Amplifier Model:SA-01
Amplify gain 1-20mA/V
Input pressure Vpp=+-10V
Max Output current 1P=2(rated current)
Nonlinear distortion =+-1%
Stability =1.5%
Servo-valve Amplifier Model:SA-02
Amplify gain 1-20mA/V
Input pressure Vpp=+-10V
Max Output current 1P=1.5(rated current)
Nonlinear distortion =+-1%
Stability =1.5%
Flutter signal F=159Hz
Amplitude perturbation =30%(rated current)
Servo-valve Amplifier Model:SA-01
Input pressure AC 220V 50Hz
Output pressure DC+-15V +5V
Linear adjustment rate (pressure stability) =1%
Load adjustment rate (Load stability) =1%
Ripple and noise =1% Output pressure(MVP-P)
Servo-valve Amplifier Model:SA-02
Input pressure DC 24V 5W
Output pressure DC +-5V
我是双非本科15年毕业的,毕业之后就一直在做Android相关方面的开发工作,到18年经历了两家创业公司,一家工作了不到半年老板就跑路了,一家工作到18年初,因为运营不当倒闭了(一度怀疑自己是不是去哪家公司就得哪家倒闭)。自上家公司倒闭后,只身来到深圳寻求发展,因为之前待的小公司不是老板跑路,就是公司倒闭,所以这次就想找个大公司,想稳定一点,时大公司技术底蕴也比较强,想多学习学习,提升自己。前后大概经过了1个月左右,找到了一家公司,虽然不是大厂级别,但我所在的技术团队也有大几十号人,相比于我之前的经历,这应该也算得上大公司了,然后一直待到了今年5月份。
大公司和小公司真的不一样,我以前一直在小公司做开发,一个同时开发几个app也是比较常见的。在大公司里面,充斥着各种规章制度,流程规范价值观的衡量,kpi考核等。同时个人做的事也比较窄,因为大公司要求的深度而不是广度,人多,各人负责自己的那一方面,我在里面主要做一些业务需求的迭代开发,整体而言不算很难,属于比较养老的。在这家公司我待了大概2年3个月的时间。以前我一直念念想找一家大公司,可是等我真正进去了以后才发现,其实不是我想的那样,你要是被分进了核心项目组的话那还好说,如果在边缘项目组的话,结果那就不好说了。KPI考核这个东西,好坏还真不好衡量。就像阿里的325一样,有的时候因为这个KPI,愣是把人搞成了抑郁症。
跑题了,跑题了。还是说回自己跳槽的原因,马云曾说辞职原因无非有:第一,钱没给到位,第二,心受委屈了!我的原因更倾向于前者,在这家公司公司待了2年半,活不多,但由于岗位原因,自己的技术方面和工资方面一直都没有太大的涨幅,同时也因为其他一些原因,我在今天5月初疫情高峰过去后选择了裸辞。然后准备了2个月,在7月份的时候开始投简历找工作。虽然疫情已经过去一段时间了,但还是能感受到疫情对IT行业的影响的,从投简历就能看出来,招人的需求不多,投了简历,公司回应也不是很积极。从投简历,到约公司面试,到最后入职的话花了2个月左右的时间,下面我就记录以下具体的经历。
面试的公司从几个人的小公司到几万人的大公司,从不出名的小公司到BAT和宇宙条都有,我面试的公司主要有,TourABC,7猫,哈啰出行,360金融,触宝,商米科技,比心陪练,传音控股,毒APP,爱奇艺,B站,阅文集团,饿了嘛,阿里巴巴,今日头条等比较出门的一些大公司,同时我还面试了一些比较小的的公司,不出名,前后大概有20家左右吧,通过率大概在50%左右,不过最后因为薪资的问题没有谈拢,所以就拒绝掉了。怎么说呢,我出来上班,首先考虑的是薪资,比较都要先活着再谈其他的。不过有的公司薪资虽然达到了,但是因为做的东西跟我预期的不一样,所以也拒了。还有一些大公司,像宇宙条,阿里,腾讯的,就是我自身问题了,能力达不到他们的要求,被拒了,这也很正常,毕竟能进去的也是少部分人,大多数的还是比较普通的。
一开始我是找的关于应用层的开发,但是发现需求很少,现在Android面试找工作的方向一般有应用需求开发,系统framework研发,音视频开发,基础架构开发,跨平台开发等几个方面,从这次找工作来看,除了应用需求开发以外,其他的几个方面的需求还是比较高的,但同时要求也很高,并不是说你会使用MVP+Rxjava+Retrofit+Dagger2+Glide+Jetpack+Flutter+RN等技术点就可以了,现在一般公司都要去你懂原理,了解技术实现细节了,现在市场上对于初中级的Android开发要求比较少了,更多的是对于高级研发的需求量比较大,所以对于Android研发的人而言,需要加强自身的硬技术,有过硬的技术就不怕找不到好工作。
因为这次疫情的影响,找工作都是电话面试和视频面试。基本上一面是电话面试,二面三面的是视频面试,一般是在牛客网等平台开一个面试房间,有的公司需要在线coding的,要求比较高。我从投简历到约公司面试,大概面了十几家公司,我每次面试完一家公司都会做个总结,把涉及到的内容都记录下来,同时不会的也会去恶补一下,都整理成相关文档,现在详细记录以下我的面试内容,供有需求的同学参考参考。
面试的范围主要涉及Java基础,Android相关的,数据结构与算法,计算机网络等几个方面。下面依次列出所问的问题:
Java部分
Android 部分
网络部分
其他关于每家公司问的面试内容具体我整理成了一个文档,需要的可以随手点赞+任意评论后,私信我获取领取方式。
这是我自己总结出来的面试问题答案,每次面完都会查漏补缺。
文档获取方式:点赞+任意评论后,私信我获取领取方式!
总共面试了将近20家公司,大概可以的有40%~50%左右,不过有的公司因为薪资达不到自己的期望,所以拒绝了,有的公司要求比较高,我没有达到他们的期望也被拒绝了,最终选择了一家中等规模的公司,主要做基础架构部分的内容,他们家的app,用户量达到5000万左右,日活也有几百万,进去主要做性能优化这方面的,比较符合我的预期,所以就选择了这家,目前已经上班2个月了,一切都还满意。