自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

james的博客

记录一下

  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

原创 记录2022年被裁员后的面试经历,60轮面试拿到10个offer

做Android开发有6年半的时间了,博客很少更新,起初还有时间记录一些工作中遇到的问题,后来因为事情比较多(最主要是因为懒)博客就基本不更新了。首先说一下结论吧,历时不到一个半月的面试,大小公司面了有不到20家,拿到小米、百度、美团、字节以及一些其他中小厂共10个左右offer,最终决定去字节(验证一下字节一年人间是否3年,哈哈)。我媳妇儿说不如把这个经历自己写到博客中,也算是对自己这一个半月面试经历的一次总结,正好离入职时间还有几天时间,所以决定重新拾起笔头,争取能够通过记忆复盘一下整个的面试情况和自己

2022-06-11 18:56:44 4049 4

原创 TextView修复中英混排意外换行,集成展开收起功能

Android开发中经常要使用的就是TextView,平时没有注意到,前几天测试提了一个bug,在含有英文和中文的TextView中,因为某些原因导致意外换行,本来以为很简单的问题,结果修复起来发现事情不是这么简单,通过从度娘以及github,google等搜索,最后发现最好的修复方式就是自己实现一个TextView,自己实现onMeasure,onDraw,这样改的最彻底,同时如果不去重写接口,...

2019-05-05 19:25:12 909 1

原创 Activity的启动流程

看了不少网上关于Activity的启动流程,但总觉得过犹不及,所以想自己通过自己的理解总结一下,这样自己也能通过自己的话讲出来了,没有流程图,没有源码分析,只有自己的理解以及几个主要的类和函数,就能描绘清楚Activity的启动流程。Instrumentation:可以理解成一个应用的使用手册,是给系统看的手册,准确的说是通过对清单文件的描述创建而来的,在应用启动前就存在的对象,其中包...

2019-01-13 01:14:33 252

原创 Binder系列(一) 什么是Binder,如何自己写一个Binder

Binder的概念   在Android中一说到跨进程通信,就不能避开Binder,可Binder又是一个很难一下子解释清除的技术,因此本人先从如何使用Binder开始说起,然后再回头理清楚什么是Binder。   即便不给Binder下定义,也要稍微说一下Binder,以下从四个纬度来认识Binder。  1.直观来说,Binder就是一个类,它实现了IBinder接口,同时也是...

2019-01-10 18:07:14 1332

原创 自定义控件-SurfaceView实现类似卫星菜单的动画

 先看一下gif图,实际是比较流畅的。 为了体现出来是可以设置SurfaceView的背景,所以把Activity的背景设置为了红色,接下来说一下我实现的思路。这个动画可以拆分为以下几个阶段动画来对待。1.从无到有的扩散动画,从一个圆渐变为一个类似于五角星的图形,然后再扩散为5个圆,并且伴有粘连效果以及OverShot插值器效果2.点击其中的任一按钮,如果按下时间在ti...

2018-12-25 11:25:35 493

原创 java ForkJoin模型缩短密集型处理时间

在进行物体检测的android7.1设备中,3399的开发板运行tensorflow实时检测指定的物体,需要提高到10FPS以上,因为这个android板子是内嵌到我们的设备中不需要考虑用户交互,板子只要能完成串口与串口之间的数据透传,以及检测物体坐标位置,摄像头距离真实的场景是比较近的,所以先想到的就是降低预览尺寸,实际上320*240对于我们的应用场景也是基本够用了,这样能把预处理(将预览数据...

2018-12-12 16:09:39 469

原创 mac homebrew /usr/local权限问题,卸载重装

mac上的brew因为版本问题导致无法安装opencv,需要更新brew,但是更新brew又反复提示‘/usr/local目录无权限’,当时并没有想到是因为mac内置的SIP机制在作乱,这个机制是用来防护mac系统的软件,可以在terminal上输入 csrutil status 查看当前的SIP运行状态,如果显示为 System Integrity Protection status: disa...

2018-12-12 15:23:24 2274

原创 Homebrew 下载更新太慢,切换源

1.下载官网脚本curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install2.下载完毕后在该目录下修改brew_installvim ./brew_install#注释以下两句#BREW_REPO = “https://github.co...

2018-12-12 15:08:49 7782

原创 mac mysql 卸载重装,以及密码重置

之前的mysql出了问题,死活找不到原因,所以就直接卸载了mysql,卸载的方法,网上比较多,这里罗列出自己使用的命令sudo rm /usr/local/mysql sudo rm -rf /usr/local/mysql* sudo rm -rf /Library/StartupItems/MySQLCOM    #若存在 sudo rm -rf /Library/Preferenc...

2018-11-14 13:09:57 532

原创 利用samba实现mac与ubuntu虚拟机共享文件夹

使用VirtualBox创建一个Ubuntu虚拟机步骤:1.安装VirtualBox2.在Ubuntu官网下载iso镜像。3.创建虚拟机。------------------------------------------------------------------------------------------------------------------------...

2018-10-01 16:40:21 2602

原创 ByteBuf 一个用于在通信中的数据解析传输组装的自定义容器类

在做和硬件通信的项目的时候,通信的内容一般都是最基本的byte数组,比如BLE,UART等等方式,传递的都是byte数组。移动端在接收的时候,就需要去解析byte数组,然后从中通过拼接和或(|)以及位移等运算来得到想要的数据类型,比如说,unsignedByte,short,int,float,double,long,char,string等数据类型。我们当然可以通过java提供的一些IO类来...

2018-09-21 18:37:37 1290

原创 linux ssh tmux使用基础篇

在学习SpringBoot的时候,想着直接把SpringBoot提供的demo部署到自己的阿里云上,可是通过ssh运行项目之后,总不能一直开着SSH,这个时候tmux就有用武之地了,以下为本人在部署SpringBoot项目的步骤以及tmux的使用。1.在自己的服务器上通过git clone SpringBoot提供的demo,要是没有git 就需要安装git了,命令为 yum insta...

2018-09-14 16:25:30 794

原创 IOS--swift BLE蓝牙通信管理(多设备)

之前一直做的是Android,公司IOS端突然要同时进行多个项目,IOS同学表示压力山大,所以临危受命由我来完成项目中关于BLE通信的功能模块,由于之前做过Android版本的,并且运行状况良好,一直都比较稳定,因此分享出来,也希望大家能提出好的建议。总共有4个swift文件。如图:BLEManager用于管理中心蓝牙提供扫描,延时停止扫描等功能BLEModel是用于按照嵌入式...

2018-08-28 17:56:04 4191

原创 算法(6) 最大堆

普通队列:先进先出,后进后出优先队列:出队顺序和入队顺序无关;和优先级有关优先队列主要操作:1.入队2.出队:取出优先级最高的元素 二叉堆 Binary Heap1.在二叉树上任何一个节点都不大于父亲节点2.必须是一个完全的二叉树:除了最后一层的节点之外,其他层节点个数必须是最大值,最后一层可以不是最大值,但是最后一层的所有节点都必须集中在最左侧 满...

2018-08-28 17:41:23 379

原创 算法(5) 快速排序 java

快速排序是对世界影响最大的排序算法之一,至于其背景之类的知识可百度获取.思路如下:假设待排序数组如下现在要将4 放到4应该放到的位置,快速排序的思想是将整个数组划分为两部分,一部分的数据都小于等于4,另一部分的数据都大于4,如下图:继续抽象思路,观察上面的排列情况,假设待排序数组为[l,r]前闭后闭,[l+1,j]区间满足小于v,[j+1,i)前闭后开满足大

2018-01-23 18:01:18 209

原创 算法(4)归并排序 java

在介绍归并排序之前,先简单的说一下O(NlogN)和O(N2)之间的比较,通过下面的图片可以明显的看出来,前者的优势是很明显的,并且随着N的增大,优势会越来越明显,优化之后的代码可能意味着笨的算法一辈子都算不出来结果,而优化之后的算法,一瞬间就算出来了(细思极恐,这不就是现实生活吗...)归并排序:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用

2018-01-09 18:15:12 273

原创 算法(3) 希尔排序 java

简介:希尔排序的实质其实是分组插入排序,再通俗的讲就是缩小增量排序,是一种比O(N^2)要好的排序算法,当然,是比不上O(NlgN)的算法.原理:将整个待排元素序列分割成若干个子序列(由相隔某个增量值gap的元素组成),再分别对每个子序列进行快速插入排序,然后减少gap再进行快速插入排序,待gap减少到足够小,最好是减少到1的时候进行最后一次快速插入排序(gap为1的时候,相当于整个数组是一个

2018-01-08 15:24:53 176

原创 算法(2) 插入排序算法 java

简介:插入排序和选择排序一样都是时间复杂度为O(N^2)的排序算法,相较于选择排序,插入排序可以提前终止内层循环,因此在性能上如果使用得当,要比选择排序性能好,尤其是面对近乎有序的源数据时,性能更是碾压选择排序甚至会比一些O(NlgN)的算法还要好.原理:将一个数组划分为两部分,第一部分是已经排好序的,第二部分为未排序的,从未排序部分的第一个数据开始,逐一与前面已排好序的数据进行比较,如果比那

2018-01-05 16:56:18 205

原创 算法(1) 选择排序算法 java

简介:选择排序是一个时间复杂度为O(N^2)的基本排序算法,当然也有其适用的场景,比如说该算法的易于实现的特性,可应用于对某些实际问题的快速实现上.原理:从未排序的数据中,选出最小的数据,然后与未排序的第一个数据进行比较交换操作,直到所有的数据都排好序.步骤:①在未进行排序的数据中,寻找到最小的数据,假设为A,并记录下该下标②用未排序的第一个数据B与从①中得到的数据A进行比较,如果

2018-01-04 16:38:12 199

原创 android 多功能自定义画板控件(用于解决特定需求)

在项目中需要做一个可以自定义轨迹,但始终只有一条线,并且支持撤销(撤销单位为MotionEvent的down到up事件),还要支持动画预览等功能,最重要的是能够按照间隔像素来获取所有点的坐标,用于项目的其他功能.整体的思路1.项目中的应用场景需要画板是一个圆形的,这个好实现用Canvas画圆就好2.始终一条线, 这个也好实现,在onTouchEvent中做文章(如果只是单纯的画一条线估

2017-08-11 15:47:30 998

原创 Face++人脸识别 android studio开发集成

最近几年人脸识别被炒到了风口上,相对应的第三方平台也比较多,如face++,科大讯飞,阅面科技,包括腾讯等等都有自己的人脸数据库,以及开放的api接口,因为项目需要,因此需要在android平台集成人脸检测以及人脸识别技术,在此过程中也是踩了不少坑,在此,把我集成的步骤以及遇到的坑分享一下.先说需求:1使用google的亲儿子google pixel c平板作为平台,当进入人脸识别的界面中

2017-07-27 13:57:42 7190

原创 android 性能优化

Android的内存管理方式1.android系统内存分配和回收方式一个app通常就是一个进程对应一个虚拟机通过adb shell 查看应用的内存分配情况①通过ps来查看系统内的进程②通过 dumpsys meminfo 包名 查看对应的应用的内存分配情况GC只在heap剩余空间不够的时候才触发垃圾回收,GC触发的时候,所有的线程都是会被暂停2.app内存限制机

2017-07-27 11:13:01 308

原创 python进阶知识点

1.Python支持的函数式编程A.不是纯函数式编程:允许有变量(纯函数式编程:不需要变量,没有副作用,测试简单B.支持高阶函数:函数可以作为变量传入C.支持闭包:有了闭包就能返回函数D.有限度地支持匿名函数2.高阶函数能接收函数做参数的函数变量可以指向函数函数的参数可以接受变量一个函数可以接收另一个函数作为参数能接收函数作参数的函数就是高阶函数A.ma

2017-06-26 13:08:51 1267

原创 python基础知识点:与java类比

1.特点:优雅,明确,简单2.适合的领域A.web网站和各种网络服务B.系统工具和脚本C.作为胶水语言把其他语言开发的模块包装起来方便实用3.不适合的领域贴近硬件的代码(首选C)移动开发游戏开发:(c,C++)4.对比虽然运行速度慢:但是现在CPU的计算能力很强大,因此本身的影响不大,瓶颈在于带宽和数据库的访问,这些问题每个语言都会遇到5

2017-06-16 16:28:29 526

原创 kotlin(3):类和对象以及其他的概念属性

类和对象类声明由类名,类头(指定其类型参数,主构造函数等)和由大括号包围的类体构成,类头和类体都是可选的,如果一个类没有类体,可以省略花括号. 1.主构造函数在kotlin中的一个类可以有一个主构造函数和多个次构造函数,主构造函数是类头的一部分,跟在类名后.class Demo constructor(data: String){}如果主构造函数没有任何注解或者可见性修饰符

2017-06-07 15:26:03 344

原创 mysql 数据库导出表数据到Excel 以及Excel 科学计数法显示完整数据

在linux中导出mysql的某一个表的数据 命令: select * from table1 into outfile '/tmp/table1.xls'通过上面的命令就可以将table1中的数据导出到linux中tmp的目录下在Excel中如果一项数据都是数字,并且当数字的长度较长的时候,excel会默认将该数字转换为科学计数法表示,为了能正常显示数据,可以通过以下操作

2017-06-07 13:12:54 7921

原创 Linux mysql 中文乱码处理

在项目中,通过tomcat上部署的web服务器,客户端通过http向服务器的mysql插入数据,但插入的中文会变成???这样的内容,原因有很多1.服务器没有对request和response进行编码处理,这点好解决,可以通过设置字符集来处理/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResp

2017-06-05 09:46:27 402

原创 kotlin(2):控制流

控制流1.if表达式If可以返回一个值使用:val v = if(3>4) 5 else 1    If的分支可以使代码块,最后的表达式作为该块的值,如果使用if作为表达式而不是语句,该表达式需要有else分支2.when表达式When取代了switch,不会顺序执行,when将参数和所有的分支条件顺序比较,直到某个分支满足条件,when既可以被当做表达式使用也可以当做

2017-05-25 16:44:10 222

原创 kotlin(1):基本类型+包

基本类型在kotlin中,所有的东西都是对象(没有类似于java的基本数据类型),因此可以在任何变量上调用成员函数或者属性. 1.数字与java不同的是,对于数字没有隐式拓宽转换(在java中int可以隐式的转换为long)提供了六种内置的类型:Double,Float,Long,Int,Short,Byte  (不包括Char类型) 2.字面常量十进制:123

2017-05-25 10:26:47 425

原创 Kotlin在AS中的配置使用

1.需要下载kotlin的插件 使用的AS的版本是2.1.2,下载完成后需要重启才能使用kotlin 截图(已下载): 2.新建Android项目 在项目的gradle文件中 修改配置如下 3.在module的gradle文件中 修改配置如下apply plugin: 'com.android.application'apply plugin: 'kotlin-android'apply

2017-05-22 16:15:14 2122

原创 java版本CRC16

因为项目需要CRC16的校验,因此在博客上记录一下这个,貌似在网上挺难找的,/** * CRC16相关计算 * CRC16多项式:1021,初值:0000 */public class CRC16 { public static short calCRC16(byte[] datas) { int crc = 0; for (int index

2017-05-04 14:33:18 621

mysql-python 32位

MySQL-python-1.2.4.win32-py2.7.exe

2017-07-07

mysql-python 64位

MySQL-python-1.2.3.win-amd64-py2.7.exe

2017-07-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除