- 博客(23)
- 资源 (8)
- 收藏
- 关注
原创 Spring Building a RESTful Web Service
1.通过spring在线创建一个maven工程 地址:https://start.spring.io/ 2.编写Controller 2.1GreetingController.javapackage com.syh;import java.util.concurrent.atomic.AtomicLong;import org.springframework.stereotype.Con
2017-02-06 12:01:02 407
原创 leakcanary原理分析与AppsFly内存泄漏
leakcanary是一个帮我们分析内存泄漏的工具,非常方便源码和使用说明见github:https://github.com/square/leakcanary现在有了leakcanary,我们能方便的监控activity的内存泄漏了
2016-08-24 00:09:13 2415 2
原创 Ant 打包配置
以下是build.xml name="ToyBattleField_91" basedir="../ChannelActivity" default="release" > name=
2016-08-15 18:41:41 1703
原创 Java Spring 入门
安装Tomcat下载一个tomcat,解压Tomcat的用户帐号信息都保存在tomcat-users.xml的文件中,编辑该文件,添加用户:安装好jdk后,直接到tomcat/bin/startup.sh 启动localhost:8080查看是否启动实时察看tomcat日志:tail -f ./tomcat/logs/cat
2016-08-15 18:34:14 339
原创 content provider程序间数据共享
package testdemo.syh.com.db; public class DBProvider extends ContentProvider {private final static String authorities="a.b.c";private final static String CONTENT_URI="";pub
2016-08-15 18:13:46 283
原创 搞清楚观察者模式
现在看起来,观察者模式非常的常用,且是基础。============观察者模式:被观察者代表数据的话,观察者就代表数据改变后会影响到的对象比如一个数组代表被观察者D,呈现该数组的界面是观察者之一G1观察者得用途:当数组更新了,就要影响所有观察者。既然有共同性,我们就可以重构代码1.被观察者D要有一个方法来通知所有观察者,如notifyG,那么我们可以定义一个
2016-08-15 18:04:22 293
原创 我的第一个android手机应用 android阅读器 android书架
现在来看这个,确实没什么技术,确是我踏上android路上的一块碑,mark一下.=========我的第一个android手机应用 android阅读器 android书架古典书架,炫酷的动态翻页效果,支持读书时划重点。管理本地书籍和在线资源非常方便。希望能给你带来全新的体验。对于开发者,可以和我讨论技术,共同进步免费下载地址:http://www.eoe
2016-08-15 17:52:16 1079
原创 使用ProguardGUI.jar 混淆Jar包
当我们提供jar包形式的sdk时,如果要把jar包混淆一下,但是接口不混淆,那么该怎么办呢:可以使用ProguardGUI.jar 混淆Jar包,步骤如下:下载proguardgui.jar 或者使用android sdk/tools/proguard/lib/ 下的proguardgui.jarjava -jar proguardgui.jar 启动该j
2016-08-15 17:18:16 1043
原创 使用Java Mail发送邮件
/** * 邮件发送类,使用Builder来发送 * 需要使用的jar包javax.mail.jar * https://java.net/downloads/javamail/ * * @author syh * */public class EmailBuilder { String to = "";
2016-08-15 17:14:06 510
原创 Ubuntu14.04 安装
制作U盘安装盘到ubuntu官网下载iso下载ultralso,启动后点击打开,选择iso文件,点击启动->写入硬盘镜像写入方式选择USB HDD或者USB HDD+,点击便捷启动,选择“写入新的硬盘主导引导记录MBR HDD+”然后写入即可安装Win7,Ubuntu双系统先选择“其他选项”,然后手动分区:/,swap,/home
2016-08-15 16:55:31 279
原创 Build Android4.0 Launcher
Android Launcher源码下载:https://android.googlesource.com/进入platform/packages/apps/Launcher2根据提示 git clone https://android.googlesource.com/platform/packages/apps/Launcher2down下来后可以通过git b
2016-08-15 16:37:00 375
原创 崩溃日志反混淆
由于代码混淆后,崩溃日志的堆栈信息可能也是混淆后的方法名等,不便于定位问题可以用以下命令反混淆D:\android_studio_sdk\tools\proguard\bin>retrace.bat -verbose C:\Users\syh\Downloads\proguard\osvideo\build\outputs\mapping\release\mapping.txt C:\Us
2016-08-06 02:29:41 599
原创 检查进程是否在运行
String pid = String.format("/proc/%s", pId);File pidFile = new File(pid);boolean active = pidFile.exists();
2016-06-12 16:15:05 374
原创 在root过的手机中运行java程序
在root过的手机中运行java程序,通过该方式可以用来唤醒服务,或者检查程序是否卸载public static Process newShellProcessWithDeaultEnv() throws IOException { ProcessBuilder builder = new ProcessBuilder("sh").redirectErrorStream(false
2016-06-12 15:57:37 862
原创 Ubuntu 上搭建SVN 服务器
通过参考各种教程终于搭建svn服务器成功,现整理步骤如下:先确定安装了apache,没有安装则用以下命令:sudo apt-get install apache2然后安装subversion及svn-apache连接库:sudo apt-get install subversionsudo apt-get install libapache2-svn
2016-03-28 16:06:16 304
原创 Drawable setBounds方法
setBounds方法,就是设置该Drawable,绘制在canvas的区域,drawable会填充该区域
2015-12-21 17:13:40 1882
原创 获取Throwable信息
String getLog(Context paramContext, Throwable paramThrowable) { StringWriter localStringWriter = new StringWriter(); PrintWriter localPrintWriter = new PrintWriter(localStringWriter); par
2015-09-23 12:38:28 721
原创 下载原理逻辑概要
下载首方法 下载原理 if(data文件存在){ if(不是新任务){ if(cfg可读){ //cfg的优先级高于文件名所包含的意义 if(cfg是多块){ 检查data文件名是否符合要求 开子线程下载 return; }else if(cfg是1块){ 检查data文件名是否符合要求 需要固定块为1; goto下载体(); } }else if(cfg不可读){
2015-09-23 12:37:21 409
原创 Android总结(2012.07.08)
0.不要创建不需要的对象 1.除非创建API,否则使用HashMap而不是map 2.不改变逻辑的情况下能静态的静态 3.避免内部的getter/setter方法 4.Constants中使用static final变量 5.loog要比For循环速度快 6.Consider Package Instead of Private Access with Private Inner Cla
2015-09-23 12:36:25 592
原创 编译Room之各项操作
1.修改文件patch:cd frameworks/baseexecute command: git apply {path_to_}framework_base.patch2.执行mmm准备:$ source build/envsetup.sh 之后就可以使用mmm命令 mmm framework/base/policy3.如果mmm的product名称
2015-09-23 12:34:49 463
原创 SharedPreferences支持多进程
SharedPreferences不支持muti_process了。 为了实现这个,需要用ContentProvider,主要实现文件如下:public class MutiProcessProvider extends ContentProvider { public final static String TAG = "MutiProcessProvider"; private
2015-09-07 18:54:55 1028
原创 Android Studio 使用NDK编程
基本步骤: 1.编写A类,生成A.class 2.生成A.h 3.编写A.cpp 4.配置生成.so 5.loadLibrary,调用native方法Step1:编写A类,生成A.class 示例:public class TestNdk { public native String getStr(String str); static { System.lo
2015-08-25 16:01:17 389
原创 Android的canvas.rotate()与canvas.translate研究
Android Canvas.rotate Canvas.translate
2015-06-27 18:27:12 948
重构与模式
2017-04-10
Android调用后置摄像头录制视频
2012-11-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人