SpringBoot学习总结之一项目基础
一.SpringBoot简介1.什么是SpringBootSpringBoot是由Pivotal团队提供的框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot是Spring项目中的一个子工程,与大家所熟知的Spring-framework 同属于Spring的产品。使用SpringBoot,可以让我们快速的构建庞大的Spring项目(包括web 持久化),并且尽可能的减少一切xml配置,做到开箱即用,迅速上手,让我们关注业务而非配置。 2.为什么要使用SpringBootSpringBoot的出现解决了传统Spring项目的以下问题: 配置复杂繁多:每一个组件集成Spring都需要编写对应配置文件,比如appplicationContext-xxx.xml等。 混乱的依赖管理:在Spirng中想集成对应组件时,需要导入N多的pom,并且还要考虑版本。 使用SpringBoot创建java应用,只需填写很少配置和依赖就能快速搭建,并使用java –jar...
Python图像处理库Pillow(PIL)的简单使用
一.PIL和Pillow图像处理库图像库PIL(Python Image Library)是Python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。PIL原来是只支持python2的版本,后来出现了移植到python3的库pillow,pillow其功能和PIL差不多。 PIL 软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。 二.安装PillowPillow 的安装非常简单,不过需要注意 Pillow 和 PIL 不能共存在相同的环境中,因此在安装 Pillow 之前,先要卸载 PIL。命令行下通过 pip 安装: 1pip install pillow 安装完成之后,可以在 Python 的开发环境输入以下代码,测试 Pillow 是否安装成功,以及查看相应的版本号。 123from PIL import Imageprint(Image.VERSION) 注意,虽然使用的是 Pillow,但是导入的包依然是...
Flutter与Android混编
一.Flutter工程模式flutter有四种工程模式:application、plugin、package、module 1.Flutter Application: Flutter应用(1.)创建命令1flutter create xxapp (2.)目录结构1234567891011121314│ pubspec.lock│ pubspec.yaml│ README.md├─android│├─ios│├─lib│ main.dart│├─test│ widget_test.dart│└─web android:Android原生代码目录。 ios:iOS原生代码目录。 lib:这个是Flutter项目的核心目录,写的Flutter代码放在这个目录,也可以在这个目录创建子目录。 test:测试代码目录。 pubspec.yaml:这个是Flutter项目的依赖配置文件,类似于Android build.gradle文件,这里面包含了Flutter SDK 版本、依赖等。 (3.)说明Flutter...
Flutter使用Provider进行状态管理
provider状态管理几种常见情况,点击一个按钮,改变另外一个控件的值思路: 首先给要改变值得控件绑定一个监听,${context.watch().count},如果点击按钮改变了数据,监听文字自动发生改变。 点击一个按钮,获取另外一个控件的值思路:首先这个控件上显示的数据肯定不是死数据, 否则也没有获取的意义了,如果你说默认是死数据但是有可能会发生改变, 那么发生改变的时候应该用一个变量来控制。也就是先用${context.watch().count}监听, 死数据也通过改变数据的方式来改变控件文字。这样获取的时候就用${context.read().count}即可。 初始化数据后, 通过数据改变更改控件数据思路:和第二种情况类似, 通过model来驱动视图。 看下 ChangeNotifierProvider 用法,一个单一的观察者模式 123456789101112131415161718192021222324//继承ChangeNotifier后,可以通知所有订阅者class Counter with ChangeNotifier { int...
Python使用Pyinstaller将源代码打包成exe可执行文件
Pyinstaller简介PyInstaller是Python的第三方打包库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件进行打包,通过对源文件打包,实现将.py扩展名的任何Python的源代码转换成Windows、Linux、Mac OS X下的可执行文件,这样 Python 程序可以在没有安装 Python 的环境中运行。对于Windows来讲,PyInstaller可以将Python源代码打包成.exe的可执行文件,样就可以直接运行程序,不需要安装Python解释器,也不需要对计算机进行相关的环境配置。需要注意的一点是虽然PyInstaller可以在Windows、Mac OS X和Linux上使用,但是并不是跨平台的,如果希望将python源代码打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作;需要打包成mac app,则需要在Mac OS上使用PyInstaller进行打包。 使用Pyinstaller打包exe文件安装Pyinstaller模块1pip install...
Linux部署Android打包环境
一.配置JDK、Gradle、Git环境1.安装Java环境(1.)通过apt-get安装Java环境12apt-get updateapt-get install openjdk-8-jdk (2.)通过软件包安装Java环境 下载JDK下载地址。 解压安装包。 配置环境变量。12345678910$ mv jdk1.8.0_161 /usr/local/$ ln -s /usr/local/jdk1.8.0_161 /usr/local/jdk$ vim /etc/profile #配置JDK的环境变量export JAVA_HOME=/usr/local/jdkexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar$ source /etc/profile #重新加载系统环境变量$ java -version ...
Android依赖注入框架之Koin
一.依赖引入Koin是一款轻量级的依赖注入框架,根据官方的描述,它无代理,无代码生成,无反射。 12345678def koinVersion = "2.2.2" //Koin for android implementation "org.koin:koin-android:$koinVersion" //Koin for scope feature implementation "org.koin:koin-android-scope:$koinVersion" //Koin for viewModel feature implementation "org.koin:koin-android-viewmodel:$koinVersion" 二.基础使用在application中来做startkoin初始化的动作 123456789101112class MyApp : Application() { override fun onCreate()...
使用Shell脚本助力Linux系统自动化
一.Shell和Shell脚本1.什么是Shell程序对于图形界面例如(Windows,Ios,Android),用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。也就是说图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel), 图形界面和命令行只是架设在用户和内核之间的一座桥梁。由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序; 该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。 Shell...
Kotlin封装一个DSL语法的DialogFragment
一.领域特定语言 DSL的概念1.什么是DSLDSL(domain specific language),即领域专用语言:专门解决某一特定问题的计算机语言。由于它是以简洁的形式进行表达,整体上直观易懂,使得调用代码和读代码的成本都得以降低,即使是不懂编程语言的一般人都可以进行使用。比如大家比较熟悉的SQL语句和正则表达式。 所谓领域也就是限定语言是适用于一定范围的。可以看做是封装了一套东西, 用于特定的功能, 优势是复用性和可读性的增强。 (1.)DSL的特点 用于专门领域,不能用于其他领域。 有更高级的抽象,不涉及类似数据结构的细节。 表现力有限,其只能描述该领域的模型。 (2.)通用编程语言和DSL的区别:通用编程语言(如 Java、Kotlin、Python等),往往提供了全面的库来帮助开发者开发完整的应用程序,而 DSL 只专注于某个领域,比如 SQL 仅支持数据库的相关处理,而正则表达式只用来检索和替换文本,无法用 SQL 或者正则表达式来开发一个完整的应用。 2.外部 DSL 和内部 DSLDSL分为外部DSL和内部...