Android 三个SDKVersion的含义

1
2
3
4
5
6
7
8
9
10
11
android {
compileSdkVersion 27
defaultConfig {
applicationId "online.shuzhi.app"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}

compileSdkVersion

表示整个项目编译时所使用的sdk版本,用于一些检查,一般使用最新版本,此值,影响了dependencies中Android Support的一些依赖包,需要同步到此版本的最新版本的依赖包,否则会提示报错,但不会影响编译

minSdkVersion

表示打包后的apk支持最低Android系统为多少,此值会记录在apk安装包中

targetSdkVersion

关系到是否能够使用到什么版本的新特性。举例:
android 23 ,加入了运行时权限,那么如果设置为23及之后的值,则需要在代码中适配运行时权限的操作
android 26,加入了通知栏渠道,那么在26之后的值需要使用最新的代码编写通知

此值关系到能否使用最新版本的android中的新效果,新特性,同时在某些功能上需要重新编写代码,因此,如果不想适配新的功能,则不要设置此值为最新,同时也无法使用到最新版本所优化的一些功能。

结论:如果没有使用到最新SDK中的技术,某一版本就能够达到开发APP的要求,那么也就没有必要升级到最新版本的targetSdkVersion,不过如果你已经了解并熟悉了最新特性的代码的编写,升级到响应的sdk版本,能够得到更好的效果。

附android版本图:

分享到

IOS移动开发:数据库orm增删改查

基于SQLite.swift的数据库orm增删改查 github:XMDBModel

1
2
3
4
5
6
7
8
9
/*
XMDBModel Type SQLite.swift Type SQLite Type
NSNumber Int64(Int,Bool) INTEGER
NSNumber Double REAL
String String TEXT
nil nil NULL
Data SQLite.Blob BLOB
Date Int64 (Date) INTEGER
*/

How To Use

1、copy Source to your project

2、add depend library:pod ‘SQLite.swift’, ‘~> 0.11.4’

3、creat Model imp:XMDBModel

4、API :demo中XMBean中有属性方法介绍,ViewController中有增删改查使用方法

参考:

ActiveSQLite

License

XMDBModel is available under the MIT license.

分享到

Mysql数据库的迁移

备份:mysqldump -uroot -p1234 [databases name] >bck.sql
还原:mysql -uroot -p1234 <bck.sql

分享到

Centos+python3+nginx+uwsgi+flask

1、下载Python3

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

2、安装openssl

$ yum install openssl -y (-y 是遇到选择yes/no的时候默认提前yes了)
$ yum install openssl-devel -y

3、解压Python3

$ tar -zxf Python-3.6.3.tgz
$ cd Python-3.6.3

4、编译Python

$ ./configure
$ make & make install

5、安装虚拟环境

$ pip3 install virtualenv
$ virtualenv --no-site-packages -p python3 **_env (不关联系统库,使用python3)

$ source **_env/bin/activate(激活)
$ deactivate (退出虚拟环境)

6、安装nginx

$ yum install nginx
$ service nginx start

6.1、谁占用了80端口?kill掉

$ netstat -tln | grep 80
$ kill -9 'id'

7、安装uwsgi

$ pip install uwsgi

8、配置nginx与uwsgi之间

$ vim /etc/nginx/nginx.conf
    server {
        listen 80;
        server_name localhost;
        charset utf-8;
        client_max_body_size 75M;
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
            uwsgi_param UWSGI_PYHOME /var/www/leefeng_env;
            uwsgi_param UWSGI_CHDIR /var/www/leefeng;
            uwsgi_param UWSGI_SCRIPT core:app;
        }
    }
$ vim /var/www/leefeng/uwsgi.ini
    [uwsgi]
    socket = 127.0.0.1:8000
    plugins = python
    chidir = /var/www/leefeng
    virtualenv = /var/www/leefeng_env
    wsgi-file = core.py
    callable = app

    threads = 2
    processes = 4

9、编写代码

$ pip install flask
$ vim /var/www/leefeng/core.py
1
2
3
4
5
6
7
8
9
from flask import Flask
app=Flask(__name__)

@app.route('/')
def index():
return '<h2>Hello Word!</h2>'

if __name__ == '__main__':
app.run()

10、开启

$ uwsgi uwsgi.ini
$ nohup uwsgi uwsgi.ini & (断开终端依旧运行)
$ ps -ef|grep uwsgi (查询正在运行的uwsgi的进程,然后kill -9 id 后退出uwsgi)

错误解决

make时报错zipimport.ZipImportError: can't decompress data; zlib not available:#yum install zlib-devel
启动nginx报错:nginx: [emerg] socket() [::]:80 failed=需要在nginx.conf 注释掉#listen       [::]:80 default_server;
pip报错:ssl module in Python is not available=(需要重新python :./configure make & make install )
yum install openssl -y (-y 是遇到选择yes/no的时候默认提前yes了)
yum install openssl-devel -y
安装python错误:Prior to installing Python in CentOS 7, let’s make sure our system has all the necessary development dependencies:

# yum -y groupinstall development
# yum -y install zlib-devel


1.查看数据库编码格式
mysql> show variables like 'character_set_database';
2.查看数据表的编码格式
mysql> show create table <表名>;
5.修改数据库的编码格式
mysql>alter database <数据库名> character set utf8;
6.修改数据表格编码格式
mysql>alter table <表名> character set utf8;
分享到

Linux安装Python3

一、首先,官网下载python3的所需版本。

wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz

想下载到那个文件夹下就先进入到那个文件夹下——cd /home/download

二、然后,解压缩文件》

tar -xvf Python-3.6.0.tgz

三、创建安装文件的路径。(可以不指定目录)

mkdir /usr/local/python3

四、编译。(可以直接./configure,那样的话python3就可以与系统区分了)

./configure –prefix=/usr/local/python3

五、安装。(失败没有安装gcc):#yum install gcc

1、make

2、make install

3、完毕
(第四部直接./configure不需要软连接)以下步骤不需要操作了

六、创建新版本的软连接。

1、修改旧版本

mv /usr/bin/python /usr/bin/python_bak

2、创建新的软连接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

3、检查python的版本

python -V

python-3.6.0

软连接创建成功

七、配置成功后,pip3用不了,需进一步配置。

1、PATH=$PATH:$HOME/bin:

2、PATH=$PATH:$HOME/bin:/usr/local/python3/bin

3、完成

这时pip3就可以使用了。

分享到

Linux 命令

1.查找被占用的端口

1
2
netstat -tln
netstat -tln | grep 8083

netstat -tln 查看端口使用情况,而netstat -tln | grep 8083 则是只查看端口8083的使用情况

2.查看端口属于哪个程序?端口被哪个进程占用

1
lsof -i :8083

3.杀掉占用端口的进程

1
kill -9 进程id

4、数据库备份

1
2
3
4
如果把文件从远程机器拷贝到本机当前目录用这个命令: 
scp root@192.168.0.2:/home/a.tar.tz
拷贝远程机器的整个目录下的文件
scp -r root@192.168.0.2:/home/* ./

5、添加全局环境变量

1
2
3
$ sudo vi /etc/paths

/usr/local/mysql/bin

6、数据库创建database

1
CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;

分享到

Just Do It

最近的一段工作中,进入了大量学习的阶段,压力并不是外在的,而是自己强加给自己的,需要适度的适应。

<a>此处删了100行</a>
Python,Kotlin,Swift,Java...

Just Do It
分享到

Change Coming Soon

分享到

Swift ijkplayer

Swift-IJKPlayer

IJKPlayer的封装视频播放器封装,Swift编写。仿今日头条视频播放器。

How To Use

1、添加依赖库

需要下载的framework:

真机(一般用于上线):链接:http://pan.baidu.com/s/1dF2Bx3j 密码:t56g

模拟器+真机(一般用于测试):链接:http://pan.baidu.com/s/1gf5VjUz 密码:w8fh

2、把项目中 VideoPlayer 文件夹拖进自己的项目

3、有一个桥接文件,如果自己已经配置了则添加:#import “Slider.h” ,没有则使用VideoPlayer文件夹中的 Swift-IJKPlayer-Bridging-Header.h 文件作为桥接文件。

4、基本设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//以下必须配置
//得到控制器
playerController = PlayerViewController()
if let playerView = playerController?.view {
//初始化播放界面的大小
playerController?.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width,height: height)
//添加控制器
addChildViewController(playerController!)
//添加播放界面
view.addSubview(playerView)

}
//设置路径后立即播放,默认true
playerController?.isAutoPlay = false
//设置路径
playerController?.url = "http://baobab.wandoujia.com/api/v1/playUrl?vid=2616&editionType=normal"
//以下选配
//设置封面
playerController?.coverImageView()?.image = UIImage(named: "cover")
playerController?.playerTitle = "leefeng.me"
//协议
playerController?.playerProtocol = self

5、协议方法

1
2
3
4
5
6
7
8
9
10
11
internal func playerStartComplete() {
print("playerStartComplete 播放完成")
}

internal func playerStartPause() {
print("playerStartPause 播放暂停")
}

internal func playerStartPlay() {
print("playerStartPlay 开始播放")
}

6、其他API

play()播放

pause() 暂停

shutDown()退出

基库: https://github.com/Bilibili/ijkplayer

License

1
2
3
4
5
6
7
8
9
10
11
12
13
Copyright  2017 Limxing

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
分享到

再见,世景

两年的时间,在这里成长,今天是在世景的最后一天,心中难掩不舍,虽然是一个集团大家庭,没有小公司的浓厚氛围,我想我是一个比较理性带有感性的人。两年,是一个不长不短的日子,感谢公司给与我这个工作机会。

在世景的两年里,我所骄傲的是我的Android能力的提高,世景给了我富足的时间让我学习、自我提高,在社区上分享了自己的轮子,得到了不少行内的认同和鼓励,学习了IOS开发,让我对移动开发的认识进一步的提高。

祝福世景

分享到