首页 文章 精选 留言 我的

精选列表

搜索[端侧AI],共10000篇文章
优秀的个人博客,低调大师

04-移动端开发教程-在线字体

在IE4开始微软就已经开始支持在线字体,不过没有流行起来,直到CSS3新增加了font-face模块,正式纳入了web开发的标准。也渐渐流行起来而且发掘了很多其他应用。 1. 为什么要用在线字体 问题 精灵图(雪碧图)用作背景的时候不能轻易的放大缩小。 低质量的位图在高清设备上放大后会有难看的锯齿,无法满足响应式页面的开发需求 在线字体带来的革命: 在线字体本质就是文字,但是也可是像图形的文字。节省了带宽(相比图片)字体文件大小也不大(一般几百k)。 在线字体本身是矢量的,放大缩小都不会失真 可以灵活的通过css来控制字体图标的大小、颜色、阴影等 可以方便的自定义字体图标 2. 在线字体 @font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,允许我们不依赖操作系统的字体,做到全平台字体统一和定制。 语法规则: @font-face { font-family: <YourWebFontName>; src: <source> [<format>][,<source> [<format>]]*; [font-weight: <weight>]; [font-style: <style>]; } 取值说明: YourWebFontName:此值指的就是你自定义的字体名称,他将被引用到你的Web元素中的font-family。如“font-family:"YourWebFontName";” source:此值指的是你自定义的字体的存放路径,可以是相对路径也可以是绝路径; format:此值指的是你自定义的字体的格式,主要用来帮助浏览器识别,其值主要有以下几种类型:truetype,opentype,truetype-aat,embedded-opentype,avg等; weight和style:这两个值大家一定很熟悉,weight定义字体是否为粗体,style主要定义字体样式。 3.字体类型 不同的浏览器对字体格式支持是不一致的,以下是各种类型的字体的介绍。 TureTpe(.ttf)格式: .ttf字体是Windows和Mac的最常见的字体,是一种RAW格式,因此他不为网站优化,支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome4+,Safari3+,Opera10+,iOS Mobile Safari4.2+】; OpenType(.otf)格式: .otf字体被认为是一种原始的字体格式,其内置在TureType的基础上,所以也提供了更多的功能,支持这种字体的浏览器有【Firefox3.5+,Chrome4.0+,Safari3.1+,Opera10.0+,iOS Mobile Safari4.2+】; Web Open Font Format(.woff)格式: .woff字体是Web字体中最佳格式,他是一个开放的TrueType/OpenType的压缩版本,同时也支持元数据包的分离,支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome6+,Safari3.6+,Opera11.1+】; Embedded Open Type(.eot)格式: .eot字体是IE专用字体,可以从TrueType创建此格式字体,支持这种字体的浏览器有【IE4+】; SVG(.svg)格式: .svg字体是基于SVG字体渲染的一种格式,支持这种字体的浏览器有【Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】。 这就意味着在@font-face中我们至少需要.woff,.eot两种格式字体,甚至还需要.svg等字体达到更多种浏览版本的支持。 4. 字体兼容写法 @font-face { font-family: 'YourWebFontName'; src: url('YourWebFontName.eot'); /* IE9 Compat Modes */ src: url('YourWebFontName.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('YourWebFontName.woff') format('woff'), /* Modern Browsers */ url('YourWebFontName.ttf') format('truetype'), /* Safari, Android, iOS */ url('YourWebFontName.svg#YourWebFontName') format('svg'); /* Legacy iOS */ } h1 { font-family: 'YourWebFontName' } 4. bootstrap在线字体应用 第一种:直接应用bootstrap提供的样式类型 <!-- 引用bootstrap样式文件 --> <!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <div> <!-- 在需要字体图标的地方添加i标签,并添加图标样式类 --> <i class="glyphicon glyphicon-eur"></i> </div> 第二种:直接下载bootstrap压缩包。 下载地址:下载 解压后,把字体包fonts文件加载拷贝到项目的根目录下。 <style> /* 自定义在线字体,浏览器会自动下载下面的字体文件 */ @font-face { font-family: 'glyphicons'; src: url('./fonts/glyphicons-halflings-regular.eot'); /* IE9 Compat Modes */ src: url('./fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('./fonts/glyphicons-halflings-regular.woff') format('woff'), /* Modern Browsers */ url('./fonts/glyphicons-halflings-regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('./fonts/glyphicons-halflings-regular.svg#glyphicons') format('svg'); /* Legacy iOS */ } .hd-r { /* 设置字体类型 */ font-family: 'glyphicons','Microsoft YaHei',serif; } </style> <div class="hd-r">&#x2002; &#xe005;&#xe012;&#x2601;</div> 5. fontawesome在线字体应用 Font Awesome gives you scalable vector icons that can instantly be customized — size, color, drop shadow, and anything that can be done with the power of CSS. Font Awesome 提供了高可用性的矢量图标字体。它可以用强大的CSS自定义图标的大小、颜色、图标阴影等。 使用方法如下:(非常类似bootstrap) <link rel="stylesheet" href="./font-awesome-4.7.0/css/font-awesome.css"> <i class="fa fa-camera-retro"></i> <i class="fa fa-camera-retro fa-lg"></i> fa-lg <i class="fa fa-camera-retro fa-2x"></i> fa-2x <i class="fa fa-camera-retro fa-3x"></i> fa-3x <i class="fa fa-camera-retro fa-4x"></i> fa-4x <i class="fa fa-camera-retro fa-5x"></i> fa-5x <i class="fa fa-refresh fa-spin fa-fw" aria-hidden="true"></i> <span class="sr-only">Refreshing...</span> 6. 自定义字体在线工具 有很多可以直接在线编辑和上传自定义字体的工具和网站。其中:icomoon就是比较常用的一个在线制作字体的网站。有很多免费的字体可以用,而且可以在线编辑和上传。 此在线工具可以选择图标、增加图标、修改图标、移动图标、上传图标等操作,操作完成后选择要下载的图标然后选择右下角的生成字体,然后就可以下载字体了。 字体下载下来后,可以直接用它提供的字体文件和样式类型文件。 其他: 定制自已的字体图标库 http://iconfont.cn/ 联系老马 对应视频地址:https://chuanke.baidu.com/s5508922.html老马qq: 515154084老马微信:请扫码 扫码加老马微信

优秀的个人博客,低调大师

Windows端部署Scala2.10.5开发环境

应用场景 如果没有服务器环境,可以在本地搭建Scala开发环境,单机版,然后安装IDE编程工具,就可以在本地机器上进行scala程序的开发! 操作步骤 1. 首先安装jdk1.8 配置环境变量等 jdk1.8下载地址 2. 安装scala环境,配置环境变量(2.10.5) scala2.10.5下载地址 3. 安装spark,配置环境变量(spark1.6.1) spark1.6.1下载地址 4. 安装hadoop,配置环境变量(hadoop2.6.0) hadoop2.6.0下载地址 5. 安装scala IDE (2.12) scala IDE2.12下载地址 重要提示 注意: 这里需要注意一点,scala版本必须是2.10.5,因为spark中也有scala,是2.10.5版本的,而使用IDE的时候,需要引入spark包,所以如果scala单独环境如果不是2.10.5,那么会提示scala版本不一致的错误,很麻烦! 切记 环境装完之后,启动scala IDE,配置build path,导入spark包,然后写程序! 上面所有组件,只需要解压后,配置环境变量即可!

优秀的个人博客,低调大师

Android客户端.So 精简策略

/** * Created by chenchangjun on 17/10/27. */ 1..So 理论基础 首先介绍一下 目前所有手机上 .So 的指令集 Android系统目前支持以下七种不同的CPU架构,每一种都关联着一个相应的ABI。而架构上对应的指令集是以下几种 Intel 64 指令集在 x86基础上扩展的(x86指令集有两种CPU位,既有32位的,也有64位的.) armabi 是针对旧的或者普通的ARM v5 CPU. armabi-v7a 是针对ARM v7 CPU (是针对有浮点运算或高级扩展功能的arm cpu). arm64-v8a 是针对最新的 ARM v8a CPU的(就是在MIPS64架构上增加了ARMv7). 安卓这些固定平台的应用通常都编译成ARM处理器的程序,不全都会编译成Intel或者MIPS处理器的程序。 为了解决这个问题,Intel和MIPS要使用特殊的转换软件把ARM的指令转换成他们处理器使用的指令。这当然是会降低性能的。 2.项目问题解决 2.1 思路分析 目前项目中的jniLib是这样的,相当冗余. image.png 思路是这样的 armabi指令集是全arm平台(包括armV7 armv8,以及x86,x86_64),都兼容的 指令集. armabi-v7a 是针对有浮点运算或高级扩展功能的arm cpu,也就是armabi的高性能版本. Android 5.0+同时支持32位与64位ABI的.so. 有arm64-v8a就用,没有就fallback到armeabi-v7a或armeabi. arm64-v8a 64位指令集,运行在64位手机cpu上,目前主流cpu都已经是64位. 所以说: 为了尽量兼容市面所有手机类型, 尽可能减少crash几率. 所以,ARM7, ARM8设备能够向下兼容ARM5的SO,也就是说只打包armabi下的so即可 2.2 调研第三方lib库 为了验证这个导论, 我反编译了一些流行app文件. 反编译了 微博 的jniLib中的 文件. 只用了 armabi的兼容包. image.png 反编译 微信 他们只用了armabi的兼容包,但是里面有_v7.so后缀的 高性能包,提高性能. image.png 反编译 淘宝 只用了 armabi的兼容包. image.png 第三方总结 这里, 都是用了 armeabi包下的.so . 不同的是, 有的他们在这个文件夹下的.so直接做了v7兼容包, 有的则可能选择了插件加载.so的方式. 相同的是, 都是只打包armeabi,提高最大的兼容性,并且减少apk体积. 3.实现,测试 3.1 代码实现 为了确保不出现问题(比如gradle引用第三方可能存在so),保留可选择性的打包.我没有删掉其他cpu指令集,而是用代码选择性编译,只保留armeabi进行编译. //'armeabi-v7a' // , ‘arm64-v8a’, ‘x86’, ‘x86_64’ ndk { abiFilters 'armeabi' } 3.2 结果对比 image.png 4. 总结 目前,可以只编译armeabi下的so,因为armeabi兼容所有的cpu架构. 理论上行得通, 主流app也都是这么做的. 至于,性能问题,so包影响程度不超过15%,性能问题 最大的还是在手机质量和运行内存.......... 5. 后期方向 5.1 只保留armabi-v7a或者arm64-v8a 随着Android 版本的提高(Android5.0以后的版本支持v7和v8指令集), 手机性能的提高(不管高通,麒麟还是联发科,目前主流cpu都是64位处理器. 也就是说支持v7和v8指令集.越来越没必要做ARM5和X86的支持了,以后就更没必要。 5.2 采用插件化 加载.so 包 我们可以采用 插件化加载.so .

优秀的个人博客,低调大师

基于python impyla的hive客户端

打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thinkgamer 写在前边的话 在hive部署的时候我们谈过hive的三种访问方式 CLI(shell 终端) HWI (Hive的web页面操作) thrift (启动hiveserver2服务,基于thrift建立hive的操作) 第三种thrift方式的,网友们进行了封装,目前有三个广负盛名的python backage pyhive impyla(小主采用该backage) pyhs2 小主本地环境介绍 CentOS6.5 /64 位 python 2.7 这里小主做的web可视化界面比较菜看两张截图吧(这个是HIW项目的一部分 github-HIW) 部署 impyla必须的依赖包括: six bit_array thriftpy(python2.x则是thrift) 为了支持Hive还需要以下两个包: sasl thrift_sasl 先安装依赖 pip install thrift_sasl pip install sasl 报错: gcc: error trying to exec 'cc1plus': execvp: No such file or directory error: command 'gcc' failed with exit status 1 解决办法: 缺少g++文件 yum install gcc-c++ (centos中g++叫gcc-c++,如果直接安装g++会出现No package g++ available. Error: Nothing to do ) 又报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 73: ordinal not i 解决办法: 在python安装目录的site-packages目录下,创建sitecustomize.py,python会自动加载,添加 import sys sys.setdefaultencoding('utf-8') 如果涉及到中文只需将utf-8修改为gb2312 即可 又报错: sasl/saslwrapper.h:22:23: error: sasl/sasl.h: No such file or directory 解决办法 centos解决办法: yum install gcc-c++ python-devel.x86_64 cyrus-sasl-devel.x86_64 ubuntu/deepin(小主自己的是deepin) sudo apt-get install libsasl2-dev 然后执行 pip install thrift_sasl pip install sasl OK pip命令安装: pip install impyla 报错: bitarray/_bitarray.c:9:20: fatal error: Python.h: 没有那个文件或目录 compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 解决办法: 由于小主的是deepin 15.2 64位,python版本为2.7,其对应的解决办法是 sudo apt-get install python-dev python3.X版本对应的命令为 sudo apt-get install python3-dev 然后在执行安装命令即可 pip install impyla 一个小Demo 注意执行该程序之前,必须启动hiveserver2服务 from impala.dbapi import connect #需要注意的是这里的auth_mechanism必须有,但database不必须 conn = connect(host='127.0.0.1', port=10000, database='default', auth_mechanism='PLAIN') cur = conn.cursor() cur.execute('SHOW DATABASES') print(cur.fetchall()) cur.execute('SHOW Tables') print(cur.fetchall()) 关于auth_mechanism解释: auth_mechanism的值取决于hive-site.xml里边的一个配置 <name>hive.server2.authentication</name> <value>NOSASL</value> auth_mechanism的值默认是NONE,还可以是“NOSASL”,“PLAIN”,“KERBEROS”,“LDAP” 对hql进行连续处理 很简单的应用场景便是我们要处理的N句SQL的连续体,而不是单句的SQL语句,我这里进行的处理办法是切分,使用python的split,然后再进行单句执行 #连接hive def conn(): con = connect(host="192.168.132.27",port=10000,auth_mechanism="PLAIN") cur = con.cursor() return cur #执行HQL语句 def run_hql(sql): sql_list = sql[:-1].split(";") cur=conn() for s in sql_list: cur.execute(s) result=cur.fetchall() return result if __name__=="__main__": sql="show databases;use default;show tables;" print run_hql(sql) 运行结果也是没有问题的 [root@master1 HIW]# python hive/phive.py [('test',)] 后续若有可能的话,我会更新一些impyla的其他一些用法,因为网上关于impyla的资料很少,除了github项目地址之外很难再找到其他的,所以 如果你有好的文章或者教程的话,欢迎留言

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册