在命令行状态下单纯执行 $ cd
dirname $0
是毫无意义的。因为他返回当前路径的”.”。
这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,
并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。
在/home/admin/test/
下新建test.sh
内容如下:
cd
dirname $0``
echo
pwd``
然后返回到/home/admin/
执行
sh test/test.sh
运行结果:
/home/admin/test
这样就可以知道一些和脚本一起部署的文件的位置了,只要知道相对位置就可以根据这个目录来定位,
而可以不用关心绝对位置。这样脚本的可移植性就提高了,扔到任何一台服务器,(如果是部署脚本)都可以执行。
Google跨平台UI框架 Flutter beta 重磅发布,这里有你需要了解的一切 2018年2月27日,在西班牙巴塞罗那世界移动大会上,Google发布 Flutter 的第一个 beta 版本。Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量的原生应用的全新移动 UI 框架。现在就可以去 flutter.io 快速上手开发精美的原生应用。为了方便开发者了解和掌握 Flutter,一颗香菜准备了以下关于 Flutter 的内容。
Flutter 推出 beta 版本,目标是解决移动开发中实现原生应用的性能和与平台的集成和移植的 UI 工具包两个问题。支持 Android Studio 和 Visual Studio Code,使用 Flutter 开发的线上应用已过百万,一些应用同时被 App Store 和 Play Store 推荐。Flutter beta 兼容 Dart 2,Flutter 生态的逐渐壮大。
作者通过介绍移动开发历史,说明了当前原生开发和混合开发在移动应用开发中的优势和缺陷,同时说明了 Flutter 是如何扬弃原生开发和混合开发现有的优缺点。
作者从组成 编写 Flutter语言 Dart 开始说起,介绍了 Dart 语言的易于学习掌握的优势。说明了 Flutter 的优势例如:简单的监听方式、一切都是组件。简化 Activity 生命周期管理。稳定的 60 帧频,这个特性对于移动游戏开发是一个利好消息。
热更新、基于Material Design的组件、一切皆是组件、Android/iOS 自动切换UI、数量众多的开发库,这五个原因可以让你爱上 Flutter吗?
今天,我们很高兴地宣布,Flutter 的首个发布预览版(Release Preview 1)正式发布!这标志着我们进入了 Flutter 正式版(1.0)发布前的最后阶段。
目前Flutter 视频在国内的网站上只有优酷上有,在第11条是 Google 开发者在优酷的主页,你可以通过查看 DartConf2018的相关内容来了解 Flutter,1-10均在 YouTube,请自备🚧 。
Flutter 教程视频在 YouTube 不是很多,但是在国外有很多做Flutter教程的网站,想学习的开发者可以根据自己的实际情况进行选择学习。
Plugins for Flutter, including FlutterFire such as google_sign_in,image_picker,video_player,firebase_admob,firebase_analytics,firebase_auth pubcloud_firestore. maintained by the Flutter team.
A powerful Http client for Dart, which supports Interceptors, FormData, Request Cancellation, File Downloading, Timeout etc. 一个强大的Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等…
A cookie manager for http requests in Dart, by which you can deal with the complex cookie policy and persist cookies easily. 一个实现HTTP协议标准Cookie管理策略的Cookie管理器,他可以自动帮您自动管理http请求cookie,并支持本地持久化。
问题:页面访问时报错
Forbidden (CSRF cookie not set.): xxx
解决方法: 修改settings.py文件,注释掉
django.middleware.csrf.CsrfViewMiddleware',
解决方法:启动服务时ip使用0.0.0.0 使用runserver启动
python3 manage.py runserver 0.0.0.0:8089
Singleton Pattern
)单例模式(
Singleton Pattern
)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。 如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例, 这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。 事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。
其实,Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,而不会再次执行模块代码。因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了。如果我们真的想要一个单例类,可以考虑这样做: ``` mysingleton.py
class Singleton(object): def foo(self): pass singleton = Singleton()
>将上面的代码保存在文件 mysingleton.py 中,要使用时,直接在其他文件中导入此文件中的对象,这个对象即是单例模式的对象
from a import singleton ```
程序中首次对一个vector对象进行下标索引赋值运算,即使该vector已经在构造函数中完成了初始化, 但是使用下标访问它,对它赋值仍然导致程序崩溃,提示访问了未初始化的对象或提示指针越界!
实际上,首次对空的vector进行增加元素,必须使用push_back(),如果对空的vector使用下标的方式来增加元素, 将会导致程序崩溃! 要么使用push_back() 要么在对空vector使用下标赋值之前先使用resize()函数修改vector容器的大小 以上限制仅仅针对于对空的vector使用下标操作时有效。