- 博客(38)
- 资源 (20)
- 收藏
- 关注
原创 是什么让员工选择了“混日子”
或许有不少公司的员工都出现了这样的现象:越来越多人上班迟到执行力代下,安排的事延期完成不爱反馈、总结、汇报不爱发表意见,没有了新想法估计作为管理者的你看到这样的情况,都在想能过一些方式来激发一下员工的积极性,于是你采取了如下手段:实施优秀员工激励计划,具体激励为奖金组织团建提升团队凝聚力使用员工自我提升的思维感召他最后发现结果是:每月或者每个季度都有优秀员工...
2019-11-29 15:34:45 457
原创 浅谈:做技术也要运营思维?
在越来越追求快、极致、口碑的互联网世界里,一切都以用户和结果为导向,这要求行业的各个角色都需要思考各个职能如何能达到更好的用户体验和更好的业务目标。因此,经常可能看到在一些技术的招聘要求里提到需要有产品sense或者运营思维,看下面一例招聘JD:Android APP研发负责人职位诱惑: 技术研发负责人职位描述:1、负责出海APP的研发、进行开发架构设计、技术改进和优化、关键技术选型与产...
2019-11-26 22:04:20 564 1
原创 重新认识管理
越来越多的互联网公司在强调扁平化管理,所以“百无一用是管理吗”本文讨论的更多是中基层管理,适合管理初学者交流一、管理是什么管理,一个让人既熟悉又陌生的词。管理无处不在,先看管理的定义:管理是指一定组织中的管理者,通过实施计划、组织、领导、协调、控制等职能来协调他人的活动,使别人同自己一起实现既定目标的活动过程。管理是一种过程,管理者是通过别人来工作的。只有认识到这点,才会对管理要做什么事...
2019-11-21 16:38:34 493
原创 ubuntu实现开机自启动服务
有时自己写的或者是下的第三方软件需要在开机自启动,那么在ubuntu下如何实现呢,主要要了解的知识就是linux的service和systemctl的功能,service可以实现服务的注册,启动,停止等,systemctl也可以实现上述service功能,除此之外它还能实现开机启动等服务的管理,要实现开机自启动主要也是使用这个功能,下面就讲一下方法:首先需要写一个servcie的描述文件,需要在...
2019-11-13 11:20:23 1351
原创 mac系统XAMPP安装phpredis扩展
phpredis扩展(关键是php版本和扩展版本要对应,尤其是有两个PHP环境,需要指定哪个php相关命令来执行):• 1.根据php版本到https://pecl.php.net/package/redis下载扩展源码本机是mac系统装的xampp,php版本是7.0.2,扩展页面显示redis5.0.0以上就可以支持php7.0.0~7.9.99,本次下载了最新版本5.0.1• 2.进...
2019-09-22 13:29:42 510
原创 使用libjpeg实现windows截图保存成jpeg文件【看这一篇就好啦】
工程中有个需求是要求在windows平台下截图某一个窗口,并实现保存成jpeg,实现功能大概是:1.查找窗口2.截图得到bitmap数据3.把bitmap数据保存成jpeg文件其中bitmap数据保存成jpeg文件这里使用libjpeg来实现,这里记录下编译和使用时遇到的一些坑,首先要下载源码进行编译1、下载源代码下载地址:http://www.ijg.org/files/,选择最新版...
2019-09-17 21:42:32 857
原创 妙用Fragment轻松实现Android动态权限申请库
Android M之后,有的在manifest定位的权限需要在运行时动态申请才可以使用,这方面的详细信息可以参考官方文档:https://developer.android.com/training/permissions/requesting?hl=zh-cn,一般是需要申请权限时,需要检查是否已经有权限,如果没有则申请,主要使用到如下步骤:首先使用ContextCompat.checkSel...
2019-01-24 11:41:54 1635
原创 百度地图定位获取不到地址信息问题
在接入百度地图时,按官网的文档来做,在AndroidStudio配置时会遇到这个问题:sourceSets{ main{ jnilibs.srcDir 'libs' jni.srcDirs = [] //disable automatic ndk-build }}这个配置在Studi...
2019-01-23 17:22:40 3279
原创 深入理解Android中的Drawable类
Drawable对于Android开发工程师来说非常熟悉,最常用的用法是在drawable目录里放入png或其他格式的图片,然后在代码里就可以用resources访问到如:// 访问test图片资源getResources().getDrawable(R.drwable.test);这里不是要讲Drawable资源怎么使用,而是来看一下这个类实现的一些原理以及它相关的一些子类的实现原理。...
2018-12-25 17:00:45 1749
原创 如何通俗易懂地理解gradle
1.什么是Gradle从gradle.com的userguide可以看到这样一段话:Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build scripts are written using a Groovy or Kotlin DSL. Read ...
2018-12-17 17:43:31 315
原创 实现命令行CD命令
有的面试题要求实现cd命令,实现思路如下:扫描要cd到的目标路径,以目录分割符/作为切换扫描的分割点,如果扫描到.号则当前目录不变,如果扫描到“…“字符串,则把从当前路径从后往前找/号,当前路径就是从前面到这个/号的位置的内容。如果扫描到其他合法字符串就将当前内容拼上这个字符串。举个例子:当前路径是:/a/b/c要切到…/d/e扫描目标目录,分别要扫描到"…",“d”,“e&
2018-12-17 14:23:16 4198
原创 图片加载库Picasso和Glide对比
Android上图片加载库现在出现了有挺多了,比较出名的有ImageLoader、Picasso、Glide、Fresco,这里来对比一下两个比较相像的库,Picasso和Glide。这两个库在API使用上非常的类似,都是很简单的链式调用法,但是实现上却有较大的不同,下载源码就能发现Glide复杂很多,Picasso相对就简单不少,下面就分几个方面来简单对比一下这两个库的不同之处和实现的关键点。...
2018-12-14 15:39:13 553 1
原创 Java线程池用法
Java几种线程池的用法:Java的线程池一般使用ThreadPoolExecutor,它实现了ExecutorService接口,ExecutorService又实现了Executor接口,但创建线程池一般使用Executors来创建,分别有下面几种不同的方法:1.newFixThreadPool /** * Creates a thread pool that reuse...
2018-12-12 16:05:50 600
原创 快速排序实现
快速排序算法虽然看起来简单,但是要手写实现一个没有bug的版本,对不是每天都在做数据结构和算法的工程师来说还是有点困难的,这里给出了4种两边查找的排序算法的实现,亲测过!实现主要是细节的注意,最关键是下标的处理上:/** * 排序方法一(基数固定在第一个位置): * 设置左右两个扫描指针,左边是从第一个位置再往前一个位置(即排除基数的位置)开始,右边从最后一个位置再往后一个位...
2018-11-23 17:36:05 289
原创 Android Sqlite数据库转义字符模糊查询
Android数据库使用的是sqlite3,有时会有模糊查询的需求,比如包含“12345”的SQL查询语句为:select * from Table where title like "%12345%"模糊查询使用like关键字,%通配符表达0个或多个字符在当前位置,如果查询的内容刚好含有转义字符怎么办?一般是使用escape关键指定转义符,然后将查询内容的转义符做转义,但android里面...
2018-11-08 16:32:21 868
原创 Vue.js上传文件踩坑之旅
最近在丰富Enlarge上传文件到手机上,因为项目中ajax是用了axios,所以文件上传也准备用它来做,以下是上传文件示例,网上也有很多代码:// input的onchange事件onFileSelected(e) { var data = new FormData(); for (let i = 0; i < e.target.files.length; i++) {...
2018-11-04 22:17:17 1886
原创 Android多语言适配繁体中文
Android多语言适配一般默认是values/drawable目录下的文件是英文语言的资源,如果在中文下使用不同的资源则需要新建values-zh/drawable-zh-xxxdpi这样,res目录下的命名规则是drawable-语言-国家-xxxdpi,在没有特定国家的资源会先找语言相关的目录.但是中文有点特别!这也是一个坑,按常规思维drawable-zh应该是简体中文/繁体中文共有的资源...
2018-10-30 19:21:01 5528 2
原创 手机PC互联开源项目Enlarge
EnlargeEnlarge是一个在PC网页端操作手机端数据的工具,目的打造一个开源的可定制化的PC与手机之间数据通信的系统,让你可以轻松就可以拥有AirDroid般的强大功能!Enlarge-Android手机app端,提供http/websocket服务,扫二维码登录功能Enlarge-Web浏览器操作手机的前端界面Enlarge-Server二维码登录服务...
2018-10-25 14:55:32 513
原创 使用AnnotationProcessor自动生成代码
在上一篇实现类spring框架的文章中,android基于注解实现类似spring服务端框架使用了注解实现了与web服务本身的解耦,但实现的方式是使用反射得到method对象然后在请求到来时实例化对象然后用反射调用对应的函数,这种方法有一定的性能的损耗,使用上不够极致,这里再用注解处理器的方法实现对注解自动生成代码,实现一样的功能.注解处理器的基础就不多介绍了,这里直接说说如何实现.第一步:将...
2018-10-25 13:45:51 2067
原创 android基于注解实现类似spring服务端框架
用过spring或Retrofit的人都知道实现函数和http请求的绑定和解耦非常方便,这里分享一下基于NanoHttpd实现的简单注解框架。第一步定义注解类://http控制类,被该注解的类用来处理http请求@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface Controller ...
2018-10-21 21:57:00 872
原创 在vue.js上使用websocket
在vue.js上使用websocket有两种方法:方法一:使用内置websocket实现data() { return { websock: null, }},mounted() { //初始化 this.initWebSocket();},methods() { initWebSocket(){ //初始化weosocket...
2018-10-19 11:07:35 5095
原创 使用express布署vue.js项目
默认情况下,express是通过路由来选择模板文件来渲染前端页面,vue.js是静态的前端项目,要想在express下布署vue.js项目可以试下将vue.js打包的文件放在静态文件目录即可,实现如下:在app.js下做如下修改var app = express();// view engine setupapp.set('views', path.join(__dirname, 'vi...
2018-10-19 10:49:31 1198
原创 使用express4与socket.io搭建服务器
首先安装express4,参考http://www.expressjs.com.cn/starter/generator.htmlnpm install express-generator -g然后创建express项目express -e myapp这样就创建了一个基于ejs模板的express后台服务项目.接下来安装soket.ionpm install socket.io -...
2018-10-19 10:41:21 1107
原创 Vue.js动态切换组件
在实际项目中,通常会有这样的需求: 在同一个界面区域内,要根据不同的情况展示不同的内容,比如像文件浏览器(windows资源管理器,finder)有列表显示文件夹内的内容和表格显示文件夹的内容,一般通过点击工具栏上的按钮进入切换. 那么像这种需求应该如何实现呢?用过vue.js都知道两个不同的界面显示和相关操作通常会抽象出不同的component来实现,如列表的实现FileView.vue...
2018-10-13 22:01:47 3324
原创 UiAutomator2.0遍历控件
使用过UiAutomator1.0的人应该有非常痛的痛点,那就是在遍历View树时非常麻烦或者说做不到,百度上找到的基本上是这么用的:UiScrollable list = new UiScrollable(new UiSelector().resourceId("com.xxx.xxx:id/ni"));for (int i = 0; i < list.getChildCount();...
2018-10-01 21:29:30 6746
原创 Android View/ViewRoot泄漏但Activity不泄漏问题
一般android里的内存泄漏都是activity泄漏,测试方法通常是在back回到桌面的时候,查看其activity,view实例对象是否为0来判断,activity泄漏一般比较好定位,方法网上文章也有很多,都是通过查看acitivity对象的gcroot路径来看是谁引用了来定位问题。最近在开发过程中遇到activity实例为0但是view/viewroot实例不为0的情况,这种情况定位问题跟...
2018-09-23 11:01:22 1723 2
原创 Android O TextView内存泄漏
最近在版本迭代过程中遇到一个奇怪的内存泄漏问题,用mat打开hprof文件后,看到Activity实例还存在,查看其gc root后,是这样的结果:可以看到是因为AsycTask引用了TextView,然后引用了EditText再引用了mContext,其中EditText是自己代码里的用的控件,Calculator是一个Acitivity,奇怪的问题是代码里面没有任何在AsyncTask里使...
2018-09-23 10:12:48 1678
原创 离线MP3波形解析
关于MP3波形显示网上其实也有不少的文章,但主要讲的是在录音过程中的展示,方法是通过获取MediaRecorder的getMaxAmplitude得到正在录音过程的最大振幅值来做的,但笔者遇到的问题是要从已经录好的文件里解析出波形,关于离线文件的解析波形也有个开源的项目叫做ringdroid 这个项目的原理是使用andrid原生MediaCodec先解析出pcm数据,然后再把pcm数据转...
2018-07-06 15:27:46 2107 1
原创 Html网页标签曝光埋点
移动开发过程中经常要用埋点来促进产品的改进,在native端做埋点相对来说简单一点,比如曝光,在view的类中可以使用显示回调来做,但在网页中要如何做埋点呢,比如要知道一个div标签的曝光次数应该怎么做,类比客户端自然是想知道有没有类似显示的回调,很不幸,Html里没有这个事件回调,但onload是有的,要实现曝光埋点,需要自己实现曝光事件的检测.以下是实现思路:曝光,即是标签从浏览器中不可见...
2018-06-15 15:35:22 3385
原创 基于VueJs加载更多控件实现
最近在研究vuejs上拉加载更多实现方案,上网找了下这方面的文章和代码貌似不是太多,而且逻辑实现并不太清晰,于是自己结合了前人的经验自己整合了下总结下经验. 上拉加载更多实现思路最关键的就是如何识别手指滑动操作,如果不是用vuejs,可以用html的onscroll函数来监听滑动的位置来实现,如果是基于vuejs,直接在标签里用onscroll事件是没用,这个具体没有研究清楚.下面就讲讲vuej...
2018-06-08 18:01:30 4227 2
原创 Chrome 66 ES6模块测试
最近在学习es6语法,想着chrome应该已经支持,于是想本地写写一测试代码,网上找es6相关的文章都是使用bable来转换的,但我只是本地测试一下,不是在正式环境上使用,不想再安装一堆东西.于是首先就想先试试模块的用法://test.jsclass Point { constructor(x, y) { this.x = x; this.y = y;...
2018-06-06 15:33:26 1601
原创 利用UIAutomator发微信消息
最近在研究发自动给微信发消息,有研究过WebApi的方案实现出来了,但这种方式容易被封号,在想其他方案时想到用外挂这种偏门的方法看下行不行,于是就想到了android的UIAutomator测试框架,这个框架总体上来说是使用AccessibilityService来实现发送模似点击等消息,比如很多抢红包的方案就是用这个来做的.UIAutomator测试框架使用起来其实很简单,首先新建一个andro...
2018-06-04 11:03:34 5109 1
原创 定制Gradle任务自动打包jar
日常Android开发中,很大部分不需要自定义Gradle插件,但是需要定制一些task来满足需求,比如自定义打jar包,本文就借自定义打包来讲讲gradle的task使用方法和如何利用现在的task修改依赖关系。自定义打包在N年前我也曾写过一篇博文,[使用gradle打包指定包名和类的jar](http://www.alloyteam.com/2015/03/shi-yong-gradle-da...
2018-05-30 14:53:22 3104 2
原创 深入Gradle插件开发
上面一篇文章学会了基本的Gradle插件开发流程,相当于Helloworld,这次深入的探究下Gradle插件开发的其他方面,一个新建的app工程的build.gradle通常有如下内容:apply plugin: 'com.android.application'android { compileSdkVersion 27 defaultConfig { ap...
2018-05-30 14:48:15 3094
原创 Gradle插件开发入门
平常开发过程中一般只要对gradle里的一些配置懂就可以,但如果想要一些高级一点的处理功能比如自定义打包Jar,或者最近本人在研究android上面的AOP编程,其中用到了AspectJ参与编绎过程,这种就要自己定制一下gradle脚本,但只是修改gradle文件如果脚本内容一多项目一多维护起来就非常麻烦,使得原来的脚本并不清晰优雅,这样就得了解gradle插件开发原理把脚本写在一个插件。...
2018-05-30 11:09:46 1007
原创 android中恶心的getDrawingCache
最近要写一个可调整listviewitem的listview,当用户按下listitem的某个区域时,可以上下拖动item并放下时调整listitem的位置。在里面用了getDrawingCache来获取按下的listitem相应的bitmap并放在一个创建的ImageView中,然后在move的时移动ImageView。但发现即使调整的listItem的位置,按下时得到的bitmap也是原来的l
2012-03-26 19:59:22 1604 1
原创 android不让程序显示在最近程序列表中
最近看到一些程序打开了,但在最近程序列表里却找不到,但在DDMS的进程列表中却可以看到相应的进程,原还以为是在系统底层做了手脚,后来才发现activity有个属性叫android:excludeFromRecents,将它设置为true就可以让你的程序不在最近列表中显示,这样就类似实现了隐藏进程的功能了。
2012-03-21 19:47:08 1042
原创 android完全退出应用程序
最近开发的一个应用程序中,需要在两个activity之间来回切换,但又不想让这两个activity在切换时候重新创建,于是使用了android:launcher属性为singleInstance,这样切换不重新创建的目标达到了。但想在其中之一在按返回键的时候完全退出应用程序,google了下,说是使用// 关闭进程android.os.Process.killProcess(andr
2012-03-01 21:06:35 947
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人