自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(139)
  • 资源 (4)
  • 收藏
  • 关注

原创 kotlin的属性初始器与属性Setter

一、完整的Kotlin属性声明var|val <propertyName>[: <PropertyType>] [= <property_initializer>] [<getter>] [<setter>]一个kotlin属性声明可分为必选部分:属性关键字、属性名、属性类型;以及可选部分:属性初始器(property_initializer)、Getter、Setter。注意:val没有Setter。二、问题:在属性初始

2021-07-18 17:01:51 378 2

原创 设置Linux在未登录账号情况下自动连接wifi

最近将闲置的PC安装了Deepin,作为内网的一台服务器。一般使用场景都是通过ssh远程登录,但是发现设备通电开机后,如果没有登录账号,wifi是不会自动连接的。这就有点尴尬了,每次通电开机后都要手动去机器上登录下账号,进入了桌面环境后再连接个wifi,然后才能在内网用ssh远程登录操作,非常不方便。期望机器能在通电进入系统后,即使没有登录账号也能自动连接wifi。可以使用Linux的网络管理工具的命令:nmctl device wifi connect [ssid wifi名字] password [

2020-12-29 15:09:51 1226 1

原创 transient修饰对象成员变量反序列化为null

1. transient关键字的用途用于在实现Serializable接口的类中标记成员变量,使该类对象在序列化和反序列化过程中忽略该成员变量的处理。2. transient序列化和反序列化过程中的处理方式在序列化过程中,transient关键字修饰的成员变量默认处理方式使直接忽略在反序列化过程中,transient关键字修饰的成员变量默认赋值该成员变量类型的默认值,例如int型为0,boolean为false,对象类型为null。3. transient默认处理方式引发的问题反序列化过程中

2020-12-21 16:54:31 1241 2

翻译 libGDX的线程

所有ApplicationListener接口中的方法都会在同个OpenGL的渲染线程中被调用。对于大多数游戏来说,一般在ApplicationListener.render()方法中实现游戏的更新逻辑,这个方法会在渲染线程中执行。任何涉及OpenGL的图形操作都需要在渲染线程上执行。如果在其它线程上执行会导致一些无法预测的结果,这是因为OpenGL Context只有在渲染线程中才处于激活状态,对于大多数Android设备而言,在其它线程中创建OpenGL Context会导致一些问题,因此不支持这

2018-08-26 13:37:49 821

翻译 libGDX的日志

Application接口提供了简单但可以精确控制的日志打印功能。日志消息可以输出为普通信息,或者是带可选异常的错误消息,也可以是调试信息:

2018-08-05 11:55:14 650

翻译 查询libGDX运行时环境的相关信息

Application接口提供了一些列查询libGDX运行时环境参数的方法。

2018-08-05 08:46:41 357

翻译 libGDX的启动类和配置

对于每个目标平台,我们都必须编写对应的启动类。这个类根据特定的底层平台实现`Application`接口,同时也实现提供应用逻辑代码的`ApplicationListener`接口。这个启动类依赖于具体的底层平台,下面让我们来看看启动类在每个底层平台上的实现和配置。

2018-07-22 18:26:50 1240

翻译 libGDX的模块

LibGDX,对应典型游戏设计架构的每个步骤,它都提供了一系列模块来提供相应服务。Input输入模块 - 为所有平台提供了统一的输入和处理模型。它支持键盘、触屏、加速度计和鼠标等可用输入设备。Graphics图形模块 - 它通过OpenGL ES API的方式使用硬件,将图形绘制到屏幕上。Files文件模块 - 它不关心具体操作的媒体文件类型,它为所有平台统一提供了抽象化的,简易的方法来进行媒体文件的读写操作。Audio音频模块 - 提供了有助于在所有平台上录制和播放音频的功能。

2018-07-15 16:36:03 669

翻译 libGDX的生命周期

libGDX应用程序具有明确定义的生命周期,用于处理应用程序的不同的状态,例如应用程序的创建、暂停、恢复、渲染和(销毁)释放等等。

2018-07-01 15:53:00 394

翻译 libGDX的应用框架

作为libGDX的核心(译注:也是libGDX实现跨平台的基础),libGDX提供了6个通用接口来与具体的操作系统进行交互,不同的操作系统对这6个接口有不同的具体实现。

2018-07-01 14:34:08 383

原创 libGDX截取超出屏幕大小的图片

ibGDX截屏的过程,实际上就是读取帧缓冲区的一帧像素数据后封装成图片数据,再输出到图片文件,截屏出来的图片能有大小受限于帧缓冲区的大小。

2017-11-18 23:03:37 1013

原创 DrawerLayout实现多样侧滑菜单效果

改变DrawerLayout的默认侧滑效果,比如实现常见的主内容区域跟随侧滑菜单滑动而滑动,甚至如QQ侧滑菜单等复杂效果。实现的关键在于利用**DrawerLayout.addDrawerListener(DrawerLayout.DrawerListener)**方法,给DrawerLayout添加DrawerListener监听。

2017-06-22 12:35:49 813

原创 Android字符串资源使用格式化占位符的正确姿势

在Android的string.xml文件中,如果定义的字符串资源包含两个或两个以上的格式化占位符,比如: <string name="version_format">v%d - %s</string>。那么你在编译的时候可能编译错误。

2016-12-21 13:32:22 4435

原创 Android的进程优先级

android对于所有进程的处理态度都是尽可能不杀死。然而,资源总共就那么多,要是对所有进程都保持宽容的话,资源总会有消耗殆尽的时候。因此,在内存不足的情况,android系统需要根据一定的策略,选择性的杀死部分进程。这个策略就是对所有的进程标记优先级,优先级低的先杀死。 android将进程的优先级分为5个层次。

2016-06-23 16:35:24 6806

翻译 android的属性动画

属性动画(Property Animation)系统是一个更加强大的框架,它几乎允许你为任何东西设置动画。不管一个对象是否需要绘制到屏幕上面,你都可以定义一个动画让这个对象的属性随着时间推移而改变。一个属性动画可以在规定的时间内改变一个属性值(对象的一个成员变量)。设定动画,你需要指定对象中需要设定动画的属性,例如对象在屏幕上的坐标,动画需要执行的时间,以及动画过程中属性的变化值。

2016-06-20 12:48:17 4518

翻译 Android的定位策略

获取用户的地理位置信息能够让你的应用程序显得更加智能,借此能够分发更合适的信息给用户。为android开发地理位置相关的应用程序,你可以利用GPS或者android的网络定位数据源来获取用户的地理位置。尽管GPS的定位更加精准,但它只适用于户外,并且还会更快的消耗电量,它也不能按用户所期待的及时返回地理位置信息。android的网络定位数据源是通过使用手机信号塔和WiFi信号来获取用户的地理位置信息,不管是在室内还是

2016-06-17 18:15:48 7800

翻译 android权限的最佳运用

app的权限请求很容易让用户反感。当用户觉得一个app用起来很麻烦,或者觉得这个app不知道要拿用户的信息去做什么事情时,用户可能会避免使用甚至是完全卸载掉这个app。下面的权限最佳运用方式能够帮助你避免这些糟糕的用户体验。

2016-06-16 13:22:56 1639 2

翻译 app在android 6.0或以上平台版本运行过程中请求权限

从android 6.0(API 23)开始,安装app时不需要对app的权限申请进行授权,而是在app运行的时候,用户才需要对app进行授权。这种流程精简了app的安装过程,用户不需要在安装或者升级app的时候进行授权操作。这同样也给了用户更多对app功能的控制能力;例如,用户可以选择给一个照相app访问摄像头的权限,但不给它访问设备地理位置的权限。用户也可以通过app的设置界面,随时撤销对app授予的权限。

2016-05-04 14:03:56 4708

翻译 Android的权限声明

每一个android app都运行在一个限制访问的沙盒中。如果一个app需要访问它所在沙盒之外的资源和信息,那么这个app就需要声明适当的权限。这个权限声明要求将你的app需要的权限全部列举在App的manifest文件中。根据权限不同的隐私敏感程度级别,系统可能会自动授予该权限,也有可能需要请求设备用户授权才能获取该权限。例如,如果你的app请求授予打开设备闪光灯的权限,系统将会自动授予这个权限。但是,如果你的a

2016-04-28 16:23:56 3992

原创 Intellij IDEA安装golang插件

支持golang开发的IDE现在已经很多了,如果要讨论出哪一个IDE才是最好的golang IDE,这绝对可以让一群程序猿撕逼上百楼,这里就不讨论了。选择什么样的IDE,主要就是个人喜好的问题而已。我习惯了Android Studio和Intellij IDEA的UI风格,所以这里只讨论IDEA的golang插件配置,别的IDE就不讨论了,因为我很懒。

2015-12-15 20:05:16 40564 4

原创 在U盘上安装ChromiumOS

Google旗下两个重量级操作系统:Android和ChromiumOS。Android就不用说了,ChromiumOS目前主要用于ChromeBook设备上。整个系统基本上就是个Chrome浏览器,可以安装各种Chrome扩展和Chrome App Store上面的各种app。虽然ChromeBook设备很便宜,然而并没什么卵用,因为国内根本没有销售啊!我个人的看法是因为国内大环境所致,ChromeBook如果使用

2015-12-06 14:09:20 13329

翻译 Java语言使用注解处理器生成代码——第三部分:生成源代码

本文是我的“使用Java语言注解处理器生成代码”系列第三部分,也是最后一部分。在第一部分中(请阅读这里),我们介绍了什么是Java语言的注解,以及一些常用的方法。在第二部分中(请阅读这里),我们介绍了注解处理器,以及注解处理器如何创建和运行。现在,在第三部分中,我们要学习如何使用注解处理器来生成源代码。

2015-10-24 19:50:39 3581 2

翻译 Android的屏幕多样性支持

运行Android系统设备的屏幕尺寸和密度千变万化。然而对于应用程序来说,Android系统为所有设备提供了一个统一的开发环境,并且由系统处理了大部分应用程序界面与实际屏幕的适配工作。同时,系统也提供了相应的API允许你在特定的屏幕尺寸或屏幕密度上为你的应用程序UI做特定的调整,以便在不同配置的屏幕上优化你的UI。例如,你可能需要在平板和手机上显示不一样的UI效果。尽管系统能够自动将你的应用程序UI通过缩放或重置

2015-10-20 19:09:12 2431 1

原创 修复Win10任务栏开始菜单等系统图标无法点击问题

升级win10之后,有时会莫名其妙发现任务栏上面包括开始菜单、小娜、日历、系统通知等系统图标都无法点击,并且重启系统之后并没有自动修复。发生这种情况可以尝试以下解决方法:方法一:卸载冲突软件这种情况有可能是存在冲突软件引起的。如果你确定这种情况是在安装某个软件之后出现了,那么可以尝试进入安全模式中把这个软件卸载:按window+R键,弹出运行窗口,输入msconfig调出系统配置窗口:

2015-10-19 14:15:30 44901 11

翻译 Java语言使用注解处理器生成代码——第二部分:注解处理器

本文是我的“关于Java语言使用注解处理器生成代码”系列第二部分。在第一部分中(请阅读这里),我们介绍了什么是Java语言的注解,以及它们的几种常用方式。现在,在这第二部分中,我们将介绍注解处理器。包括如何创建注解处理器,以及如何运行它们。

2015-10-16 19:14:10 6285 2

翻译 Java语言使用注解处理器生成代码 —— 第一部分:注解类型

从本文开始,我将开始写一系列关于Java语言使用注解处理器生成代码的文章,包括这种方法的强大之处。最后还会描述如何确保在编译的时候使用这种方法生成源代码。在这系列文章中,我们将会:介绍Java语言的注解。了解注解的常用方式以及使用范围。了解注解处理器以及它们所代表的角色。学习如何创建注解处理器。学习如何在终端命令行、Eclipse和Maven中运行注解处理器。学习如何使用注解处理器生成源

2015-10-09 14:05:19 3650

原创 捕获TextView超链接

Android的TextView是个很强大的控件,通过Html类处理html文本后可以支持部分html标签。有时候需要捕获TextView中<a>标签的点击事件进行自己的超链接点击处理,下面的代码用于捕获TextView中<a>标签点击后的响应事件: CharSequence charSequence = Html.fromHtml(strHtml); Spannabl

2015-10-03 22:18:17 1355

原创 解决Spring配置文件无法读取properties属性问题

在Spring项目的配置文件中引用properties属性文件中的属性,运行时无法识别properties属性文件中的属性引用,但properties属性文件和属性明明已经存在,例如: 要在Spring中使用外部properties属性文件,需要在Spring配置文件中添加bean后处理器PropertyPlaceholderConfigurer,并指明外部properties属性文件的路径:

2015-09-26 20:30:27 18275

原创 解决Atom中文无法自动换行问题

Atom是Github开发的一个开源编辑器,类似于SublimeText,功能很强大,界面很漂亮,详情可查看官网atom.io。   如题,Atom默认会根据窗口宽度对文本进行自动软换行处理(如果没有的话,可以在File->Settings下将Soft Wrap选项的勾打上),然而在处理中文文本的时候自动换行会失效。这是Atom的一个bug,github的issues上已经有人解决了这个问题,只是

2015-09-09 15:47:35 24762 3

原创 解决Android Studio下Element layer-list must be declared问题

最近将一个项目从Eclipse转到Android Studio。项目中使用了环信demo中的一些xml资源,转换后发现color资源文件夹下诸如layer-list或者shape等标签报Element xxx must be declared错误,大意就是layer-list或者shape这些标签没有定义。layer-list或者shape等这些标签是常用的标签,Android Studio居

2015-07-08 22:44:29 12353 5

原创 树莓派安装node.js

由于树莓派是arm架构,node.js上并没有提供arm架构的二进制包下载。试过使用apt包管理安装和直接node.js源码编译安装(编译了四五个小时。。。),都没有成功,报非法指令错误,估计还是编译的处理器架构错误导致的。不过,google上有些小伙伴成功了,我也不清楚是为什么,可能是编译的版本问题。这里提供一个比较简单的方法,亲测有效。其实就是在官网的历史列表里面找到了个旧版本v0.10.

2015-06-28 09:52:25 2217

原创 ubuntu下buffalo wzr-hp-300nh路由器刷DD-WRT系统

朋友送了个WZR-HP-300NH的buffalo路由器,只是系统被刷成了openwrt,而且还不知道管理员账号密码= =。。。刷了openwrt系统后,buffalo路由器的恢复出厂设置按钮也失效了,估计是openwrt系统的兼容问题,只能是想办法重新刷下系统了。google上找了下tftp刷机的教程,本来以为是很简单的事情,结果还是折腾了好几天。下面是我测试成功的方法:需要准备的工具:

2015-06-14 21:50:39 2843

原创 Volley的使用(一)

Volley是google推荐的Android网络数据访问处理的库,具有简化网络数据访问、多并发、支持缓存、允许取消网络请求、支持自定义复杂网络数据请求等优点。另外,Volley也提供了处理大量网络图片、处理Json数据的工具。不过,Volley也有它的局限性。它不适用于大文件数据的下载,因为Volley在解析网络数据的过程中会将这些数据都放在内存中,处下载大型文件可能会导致内存OOM问题。在开发

2015-05-26 16:33:13 2076

原创 将IDEA maven项目中src源代码下的xml等资源文件编译进classes文件夹

如题,IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉。如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。Hibernate和Spring有时会将配置文件放置在src目录下,编译后要一块打包进classes文件夹,所以存在着需要将xml等资源

2015-05-13 10:56:16 15385 5

原创 建立企业内部maven服务器并使用Android Studio发布公共项目

由于Android Studio使用了Gradle构建工具,在library依赖的处理上是将被依赖的library作为一个module引入(拥有一份完整的library拷贝),而Eclipse的ADT则是直接将library作为外部项目依赖链接进来,两者各有各的优缺点。Android Studio的好处是能时刻保持项目的完整性,每一个项目都包含了整个项目所需要的一切东西,当你把项目共享给别人的时候

2015-03-19 18:46:23 10452 25

原创 go语言的工作空间和GOPATH环境变量

go语言并没有强制一定要使用一定的工作空间和项目结构,对于小型的go程序依靠go run等命令就可以直接编译运行。然而,保持良好的工作空间和文件结构,对于管理源代码和发布程序都是非常有帮助的。对于大型的go语言项目,工作空间则是一定要的。1、go语言的工作空间结构go语言的工作空间其实就是一个文件目录,目录中必须包含src、pkg、bin三个目录。其中src目录用于存放

2015-02-19 15:10:19 8212

原创 二进制包安装golang

之前讲过arm平台上的golang的源代码编译安装,这次补充下golang官方提供的其它平台上二进制包安装方法。

2015-02-12 23:08:43 3186

原创 Ubuntu下迁移MySQL数据库文件目录

用Ubuntu的apt包管理工具安装的mysql数据库,默认将数据库文件保存在/var/lib/mysql目录下,时间久了数据库越来越大,所以准备挂载个新的硬盘专门存放mysql数据库。1、确定mysql数据库文件存放目录一般默认是在/var/lib/mysql目录下。先登录自己的mysql数据库,比如我用root账户登录,然后使用下面查询语句查询:show varia

2015-01-29 16:27:36 8606 4

原创 安装Python的easy_install工具和BeautifulSoup模块

1、esay_installeasy_install是Python的发行包管理工具,类似于linux的apt-get或者yum包管理工具,使用easy_install可以很方便的获取第三方的Python发行模块。安装方法:1.1 Mac OS X 系统可以在终端执行以下命令:curl https://bootstrap.pypa.io/ez_setup.py -o -

2015-01-22 17:31:36 3684 1

原创 在ARM平台上编译安装golang

golang也就是go语言,现在已经发行到1.4.1版本了,语言特性优越性和背后google强大靠山什么的就不多说了。golang的官方提供了多个平台上的二进制安装包,遗憾的是并非没有发布ARM平台的二进制安装包。ARM平台没办法直接从官网下载二进制安装包来安装,好在golang是支持多平台并且开源的语言,因此可以通过直接在ARM平台上编译源代码来安装。整个过程主要包括编译工具配置、获取golan

2015-01-20 16:59:42 12194 2

VNC-Viewer-5.0.3-Windows-32bit.exe

Window平台下用于连接服务器的vnc远程桌面终端。

2014-09-07

putty-0.62-installer.exe

Window平台上SSH协议远程连接终端工具

2014-09-07

Win32DiskImager-0.9.5-binary.zip

Windows平台用于烧录树莓派系统映像工具

2014-09-07

kmplayer2010

kmplayer2010播放器,功能强大,用户可自己调整多种播放效果。

2012-01-02

空空如也

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

TA关注的人

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