自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (6)
  • 收藏
  • 关注

原创 阿里云ecs curl error 6

curl error 6 curl: (6) could not resolve host按照网上说法 修改dns为 8.8.8.8 和 8.8.4.4 ,仍旧无效 后在阿里云上开工单 把dns改成 100.100.2.138 和 100.100.2.136 ,就可以了...

2018-08-28 10:27:56 1440

原创 折腾wordpress之路

先列举几个目前在用的几个插件OSS Upload把图片等资源存到oss服务器上,很方便 注意设置上传路径和访问链接的时候要对应上就可以WP-UTF8-Excerpt很好用的摘要设置插件,即使不设置也会自动提取摘要XML 站点地图 & 谷歌新闻订阅源自动生成xml,方便百度收录WP Editor.mdmarkdown格式写文章,对于我这种伪md爱好者来说够用了其他的一些小tips文章页去掉工具

2017-09-20 17:26:41 679

原创 laravel学习笔记

安装laravelmac下安装composer brew install composer使用composer安装laravel composer global require “laravel/installer”composet修改为国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.

2017-09-20 17:25:07 720

原创 SiteSucker使用记录

之前有试过用爬虫的方式扒取整个网站,缺点是耗时长,需要做的分析工作比较多,但是也有优点,完整分析后对整个网站的结构比较清晰,修改起来比较方便。最近领导给了个任务,给一天时间扒下来一个段子网站,很头疼,分析网站,写爬虫,再进行正则替换,这一套下来怎么着也得半个星期吧。然后本着轮子还是别人造的好的精神,谷歌(百度)到了这款软件。顺便吐槽下,这款软件网上的攻略都不给力啊,来一篇自己的踩到坑坑记录吧。下载

2017-08-31 18:03:17 5205 1

原创 idea中使用log4j2打印日志

先去下载log4j的jar包,将log4j-api-2.8.2.jar和log4j-core-2.8.2.jar导入到lib目录自定义log4j2.xml文件到src目录下配置文件如下:<?xml version="1.0" encoding="UTF-8"?><!-- status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内

2017-05-24 15:22:51 10512

原创 java自写爬虫中常用方法封装

通过post方式获取cookiepublic static String getCookieByPost(String path, String data, String cookie, String contentType) { URL url = null; try { url = new URL(path); H

2016-12-13 18:45:43 3491 1

原创 Android Studio无法查看源码

错误提示:Sources for ‘Android API 24 Platform’ not found. 原因:目前android-24的sources还出来。 解决方法:网上说修改jdk.table.xml,将API 24 Platform对应的SourcePath改为API 23 Platform对应的SourcePath,试了,没用。 建议:直接将Compile Sdk Version

2016-08-20 12:01:31 1202

原创 Bug吐槽之获取不到后台数据库中的数据

问题描述:电脑上运行Tomcat可以获取本地数据库中的数据,传到服务器就不行 解决方法:Linux上的MySQL区分大小写,而Windows上的则不区分,所以讲变量名和表名改成和数据库中一样的即可。

2016-07-15 00:15:19 1452

原创 使用dex2jar和jd-gui反编译apk得到Java源代码

(注:本文为参考相关教程后的实践记录)仍然以反编译慕课网APP为例简介 dex2jar的作用是将apk反编译成java源码(classes.dex转化成jar文件) jd-gui作用是查看APK中classes.dex转化成出的jar文件,即源码文件step1 首先要下载上述工具 这里是dex2jar+jd-gui的传送门 下载完之后解压。解压完成效果如下: step2 然后将要慕课网的

2016-07-02 01:58:27 3362 2

原创 使用apktool反编译apk获取资源文件

介绍: apktool的主要作用是资源文件获取,可以提取出图片文件和布局文件进行使用查看 使用: 1. 下载新版apktool 这里是传送门 2. 解压得到3个文件:aapt.exe,apktool.bat,apktool.jar 3. 将需要反编译的APK文件放到该目录下 4. 打开命令行界面(运行CMD) ,定位到apktool文件夹,输入以下命令:apktool.bat d -f

2016-07-02 01:03:45 9890

原创 Toolbar中Menu不显示

在Activity中使用如下代码来引入toolbar: @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.base_toolbar_menu,menu);

2016-07-01 16:18:44 1435

原创 Fragment中使用Toast报错

在Fragment中使用Toast时会报错,主要原因是获取不到上下文。 测试了一下,即使是放在onAttach()里面Context也还是null,所以只能在onCreate()里面初始化。代码:Toast.makeText(getActivity(), "测试", Toast.LENGTH_SHORT).show();错误:NullPointerException: Attempt t

2016-06-30 09:55:16 12215 1

原创 引入项目做为module时报错

修改 apply plugin: ‘com.android.application’为 apply plugin: ‘com.android.library’删除 applicationId “xxx.xxx.xxxx”

2016-06-28 10:26:04 918

原创 Android之使用VideoView播放视频

界面效果代码界面代码<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="

2016-06-21 11:09:24 674

原创 Android之Socket简单使用

效果图服务器端代码客户端代码

2016-06-20 15:30:01 565

原创 通过jsp和servlet实现后台界面完成对数据库的增删改查

效果图: jsp代码:Student.jsp<%@page language="java" import="java.util.*" pageEncoding="utf-8"%><%@page import="entity.Students"%><%@page import="dao.StudentsDao"%><%@page import="com.mysql.jdbc.Connectio

2016-06-15 11:16:26 20559 3

原创 ListView使用误区总结

适配器中的List必须是原生的List,否则无法通知适配器去修改列表。也就是适配器使用的List不能重新new,必须在原来的基础上改,可以通过List中的clear()方法清除数据后再重新初始化。 List temp =MyDao.loadAll(); list.clear(); list.addAll(

2016-05-26 13:12:46 392

原创 使用SharedPreferences保存和读取数据

代码很简单tSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SharedPreferences sp=getSharedPreferences("spTest", Context.MODE_PRIVATE); Sh

2016-05-25 11:17:27 750

原创 GsonFormat使用方法详解(一键解决复杂JSON)

点击File–>Settings–>Plugins–>然后搜索GsonFormat,点击下载并安装。自定义个javabean(就是新建一个名字最好带bean的无内容的class文件),然后在该文件处点击–>code–>Generate–>GsonFormat(或者直接按alt+s键[Window]),然后将JSON数据复制到该框框内。点击Format可以查看格式化后的效果(跳过)。直接点击OK即可

2016-05-24 00:50:24 15303

原创 Android开发之使用和风天气API遇到的问题及解决

天气预报的接口也算是用过几个了,听说和风天气API可以免费使用3000次,果断是要尝试一下的。本来打算花半个小时弄完,结果由于和风天气API的各种不人性化的设定,花了足足半天才搞定。在此记录下来,帮大家少走弯路。 前面的步骤依旧很老套,注册,申请key,然后就请求数据,这里我用的是Volley框架中的get方法直接请求的,十分简单,可参考Android-Volley框架中的get和post方式St

2016-05-24 00:39:38 10958 2

原创 bug吐槽JSON格式不兼容

又一次找bug找到怀疑人生 = = 结果发现之前用之前初始化过数据库,而且是用的只包含id其他属性都为空的数据初始化的,导致找来找去找不到为啥无法从数据库中读数据。。

2016-05-23 12:25:26 497

原创 Android之高德地图定位及附近搜索

关于高德地图的基本配置和使用请参看:Android之高德地图SDK配置及简单使用详解效果图功能可以实现对当前位置的定位可以对当前位置附近进行关键字搜索,并可以选择搜索范围代码主函数代码:PoiKeywordSearchActivity.javapublic class PoiKeywordSearchActivity extends FragmentActivity implements

2016-05-18 11:14:51 5409 5

原创 AndroidStudio中删除module

假如我们导错了一个module,在该module上点右键会发现没有删除选项,这会让我们很恼火。不过这是Android Studio对module做了一个保护机制,按照以下方法就可以删除module。1.点击File–>Project Structure,然后在左边那一栏里可以看到一个绿色的加号和一个红色的减号,我们选中要删除的module,然后点击减号,然后点击确定即可。2.右键想删除的module

2016-05-17 23:16:22 435

原创 Android之高德地图SDK配置及简单使用详解

需要用到的东西请去高德地图API官网下载本次教程是对比着高德官网的demo一步步添加东西,所以需要有一份demo就够了。1.打开高德地图的demo(AMap3DDemo),同时新建一个项目2.将demo中的带Amap的三个jar包复制到新建项目的lib目录下,同时添加依赖项3.在app下新建个directory—>jniLibs,然后在下面新建四个目录,如下:4.然后拖到main方法中,在andro

2016-05-17 17:40:10 17940 3

原创 Android之上下文菜单(ContextMenu)

界面效果ContextMenu简介ContextMenu:上下文菜单,也叫快捷菜单,类似于pc端的右键菜单,可以为ListView的每一项设置简单的快捷操作使用步骤1.注册上下文菜单:registerForContextMenu(listview) 2. 重写onCreateContextMenu() @Override public void onCreateContextMenu(C

2016-05-17 10:08:15 1460

原创 Android开发之本地音乐播放器(增强版)

界面部分主界面: 歌曲详情界面: 通知栏界面: 功能介绍使用了广播和服务来完成部分功能可以自动查找本地的mp3文件并显示在列表中主界面和详情界面的seekbar的进度条都可以跟随歌曲播放更新或者拖动主界面和详情界面以及通知栏都可以切歌或暂停并实现同步部分代码主界面:MusicPlayerActivity.javapublic class MusicPlayerActivity ext

2016-05-16 22:37:21 2016 2

原创 Android开发之本地音乐播放器(简单粗暴版)

本程序为直接在Activity中计算并更新后台服务音乐播放进度,没有使用到广播在学习广播之前,艰难的通过这个方法来实现了更新音乐播放进度,不推荐使用,不过感兴趣的可以研究一下。大概的思路就是通过异步任务类来模拟耗时操作,然后计算出开始播放的时间与当前时间的差,然后跟音乐的总时间相比得到ProgressBar的进度,然后每一秒更新一次。暂停时可以将暂停的时间加到开始时间上,实现无断点更新效果图

2016-05-13 16:21:59 13731 8

原创 Android四大组件之BroadcastReceiver(广播)简单总结

1.静态注册广播2.设置开机广播并启动服务3.动态注册广播

2016-05-13 15:55:22 700

原创 通过服务来下载APK,并在通知栏显示下载进度(两种方式)

可以在启动无绑定的服务前给Intent传布尔型的值,如果是true的话就调用系统的下载服务,否则就用自定义的。关于服务的更多介绍,请参考我的上一篇博客:Android之四大组件之Service简单总结关于不使用服务来下载的方法,请参考我之前的博客:下载APk,并在通知栏显示下载进度(两种方式)代码如下

2016-05-12 23:25:10 2533

原创 Android四大组件之Service(服务)简单总结

服务的基本用法服务的基本介绍

2016-05-12 23:08:15 601

原创 Android地图尝试之两行代码调用高德地图来完成位置展示

效果图如下: 这两行代码是:String url="http://m.amap.com/?q=37.4681261,121.4420757"+"&name=杰瑞教育"+"&view=detail"+"&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";wv.loadUrl(url);(其实一行就可以的对不对……wv是WebView组件,请自行添加)当然,前提是需要申请自己的

2016-05-11 17:55:58 1033

原创 Android程序优化之异常终止数据恢复

当Activity异常终止时,系统会默认为我们保存部分数据 ,如果想自定义保存的数据以供恢复,可以重写onSaveInstanceState()来保存数据以及onRestoreInstanceState()来恢复数据。onSaveInstanceState()是使用Bundle来保存数据,可写 如下测试代码: @Override protected void onSaveInstan

2016-05-11 17:38:04 846

原创 Android程序优化之对屏幕旋转的处理总结

正常情况下屏幕旋转会使activity重新销毁重建,即重新走一遍onCreate,所以会导致丢掉一些数据,解决方法如下: - 强制竖屏(不建议) 在activity标签里添加:android:screenOrientation="portrait"使屏幕旋转不销毁重建整个activity 在activity标签里加:android:configChanges="keyboardHi

2016-05-11 17:07:20 898

原创 Android程序优化之监听物理回退键,退出程序

一小段代码,可实现对物理回退键的监听,连续点击两次且间隔不超过两秒时退出应用long firstTime=0; @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK){ //KEYCODE_BACK:回退键

2016-05-11 16:51:20 1296

原创 Android之简易天气预报小应用(xml解析练手)

界面比较简陋。实现后的大致效果如下: 该应用的所有功能主要是通过解析http://www.webxml.com.cn/webservices/weatherwebservice.asmx网站提供的Xml返回数据来实现,Xml解析的方法可参考我的上一篇博客:Android之使用Pull解析Xml数据具体代码如下:(代码中用到的图片可从上面网站上下载)布局代码:activity_weather_te

2016-05-10 23:29:36 3966 7

原创 Android之使用Pull解析Xml数据

1.Xml解析方法有DOM,SAX,DOM4J,PULL解析等方式,PULL解析是Android中为我们提供的XML解析方式2.获取解析器工厂对象: XmlPullParserFactory factory=XmlPullParserFactory.newInstance();获取解析器对象: XmlPullParser xpp=factory.newPullParser();XmlPul

2016-05-10 16:30:20 910

原创 bug吐槽之误解subList

下次找bug找得天昏地暗甚至开始怀疑人生之前,一定要先确认下自己所认为正确的东西是不是真的是正确的。showList=lvList.subList(0,count);我一直把它当成把lvList中的0到count赋值到showList,没想到这个subList()方法也会改变lvList本身啊。于是整整两天都在找这个神奇的bug……心累……

2016-05-09 19:56:17 374

原创 "open failed: EACCES (Permission denied)"权限已加,写入sd卡仍报错的解决办法

不知道大家有没有碰到过这种情况,在运行虚拟机时,或者使用高版本的安卓手机时,即使是在清单文件中加了权限,向sd卡写入数据时还是会报错:open failed: EACCES (Permission denied)。在网上找了好久才找到解决办法,记录下来以免更多人在这个问题上浪费时间。 其实这个问题是由于Android6.0更新了权限机制,在6.0之前,写入sd卡权限只需在清单文件中添加 <us

2016-05-09 19:37:06 17164 1

原创 Android之WebView控件简单使用总结

1.直接通过URL网址打开网页显示内容:loadUrl()首先在布局中写一个WebView的控件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

2016-05-09 17:03:55 1208

原创 Android之ViewPager自动循环播放(轮播)效果实现(超简单)

代码超级简单:private Handler mHandler = new Handler() { public void handleMessage(Message msg) { int count = va.getCount(); int index=viewPager.getCurrentItem();

2016-05-09 00:23:53 3398

dex2jar+jd-gui

源码文件获取和查看工具打包

2016-07-02

新版apktool

修复了之前由于apktool.jar版本过低而导致反编译失败的问题。集成了较新版本的apktool.jar,亲测当前可用。

2016-07-02

Android-Universal-Image-Loader-1.9.4.jar

Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。功能十分强大。

2016-05-09

universal-image-loader-1.9.4.jar

2016-05-08

gson-2.2.4.jar

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

2016-05-08

实训项目:五子棋

#include<graphics.h> #include<conio.h> #include <mmsystem.h> #pragma comment(lib,"winmm.lib") void Beginning(); //开始图片 void Background(); //显示背景 void ShowPlate(); //显示棋盘 void PlayGame(); //玩游戏 void Judgewin(int,int); //判断输赢 void Blackwin(); //黑棋赢 void Whitewin(); //白棋赢 bool flag=true; //走棋顺序 int piece[16][16]; //棋子变量 int ti,tj; int f=1; void main() { for(int i=0;i<16;i++) for(int j=0;j<16;j++) piece[i][j]=0; //初始化棋子变量 initgraph(965,642); //设置窗口大小 mciSendString("play 2.mp3",0,0,0);//播放背景音乐 Background(); //显示背景 PlayGame(); //玩游戏 getch(); //保持窗口开着 } void Background() { IMAGE img; getimage(&img, "2.jpg"); putimage(0,0, &img); //设置背景图片 } void ShowPlate() { setfillstyle(RGB(213,176,146)); bar(270,30,730,490); //棋盘大小 for(int x=290,y=50;x<=710,y<=470;x+=30,y+=30) //画棋盘线 { setcolor(BLACK); line(x,50,x,470); line(290,y,710,y); } setfillstyle(BLACK); bar(284,44,286,476); bar(284,44,716,46); bar(714,44,716,476); bar(284,474,716,476);//棋盘线周围的一圈粗线 fillellipse(380,140,4,4); fillellipse(620,140,4,4); fillellipse(380,380,4,4); fillellipse(620,380,4,4); fillellipse(500,260,4,4);//棋盘的五个小黑点 setcolor(BLACK); setfillstyle(RGB(213,176,146)); bar3d(800,100,900,140,0,0); bar3d(800,200,900,240,0,0); bar3d(800,300,900,340,0,0); setfont(24,0,"华文行楷"); outtextxy(805,110,"重新开始");//重新开始 按钮 outtextxy(827,210,"悔棋");//悔棋按钮 outtextxy(827,310,"投降");//投降按钮 setcolor(RGB(213,176,146)); setfillstyle(WHITE); fillellipse(820,28,20,20); setcolor(RGB(213,176,146)); setfillstyle(BLACK); fillellipse(880,28,20,20); for(int i=0;i<15;i++) { for(int j=0;j<15;j++) { if(piece[i][j]==-1) { setcolor(WHITE); setfillstyle(WHITE); fillellipse(290+j*30,50+i*30,12,12); } else if(piece[i][j]==1) { setcolor(BLACK); setfillstyle(BLACK); fillellipse(290+j*30,50+i*30,12,12); } } } } void PlayGame() { int h=0; int y=0; int Y; int ti=0,tj=0; while(f) { MOUSEMSG msg=GetMouseMsg(); //得到鼠标输入 while(msg.uMsg==WM_LBUTTONUP) { h++; if(h==1) { ShowPlate(); } else break; } if(h>2) { int a,b,c,d; a=(msg.x-290)%30; b=(msg.y-50)%30; c=(msg.x-290)/30+a/15;//落子点的横坐标 d=(msg.y-50)/30+b/15;//落子点的纵坐标 if(msg.x>800&&msg.x<840&&msg.y>8&&msg.y<48&&y==0) flag=false; else if(msg.x>860&&msg.x<900&&msg.y>8&&msg.y<48&&y==0) flag=true; if(a==15||b==15) //判断是否在两格中间 continue; if(msg.uMsg==WM_LBUTTONUP&&piece[d][c]==0&&(c>=0&&c<15&&d>=0&&d<15)) //判断是否在棋盘内且无棋子 { mciSendString("play 3.mp3",0,0,0); if(flag==true) { piece[d][c]=1; setcolor(BLACK); setfillstyle(BLACK); fillellipse(290+c*30,50+d*30,12,12); flag=false; ti=d; tj=c; y++; } else { piece[d][c]=-1; setcolor(WHITE); setfillstyle(WHITE); fillellipse(290+c*30,50+d*30,12,12); flag=true; ti=d; tj=c; y++; } } Judgewin(c,d); if(msg.uMsg==WM_LBUTTONUP) if((msg.x>=800&&msg.x<=900)&&(msg.y>=300&&msg.y<=340)) //投降 { if(flag==true) Whitewin(); else Blackwin(); } if(msg.uMsg==WM_LBUTTONUP) if((msg.x>=800&&msg.x<=900)&&(msg.y>=100&&msg.y<=140)) //中途重新开始 { y=0; for (c=0;c<16;c++) { for (d=0;d<16;d++) { piece[c][d]=0; } } ShowPlate(); } if(msg.uMsg==WM_LBUTTONUP) { if ((msg.x>=800&&msg.x<=900)&&(msg.y>=200&&msg.y<=240)&&(Y!=y)) //悔棋 { Y=y; if(flag==true) flag=false; else flag=true; piece[ti][tj]=0; ShowPlate(); } } } while(!f) //结束后重新开始 { MOUSEMSG msg=GetMouseMsg(); if(msg.uMsg==WM_LBUTTONUP) if((msg.x>=800&&msg.x<=900)&&(msg.y>=100&&msg.y<=140)) { for (int c1=0;c1<16;c1++) { for (int d1=0;d1<16;d1++) { piece[c1][d1]=0; } } ShowPlate(); f=1; PlayGame(); } } } } void Judgewin(int c,int d) { for(int i=0;i<15;i++)//判断是否五子连珠——横向 { int s=0; for(int j=i;j<i+5;j++) { s=s+piece[d][j]; if(s==5) Blackwin(); if(s==-5) Whitewin(); } } for(int m=0;m<15;m++)//判断是否五子连珠——纵向 { int s=0; for(int n=m;n<m+5;n++) { s=s+piece[n][c]; if(s==5) Blackwin(); if(s==-5) Whitewin(); } } for(int p=d-5,q=c-5;p<15;p++,q++)//判断是否五子连珠——左上到右下 { int s=0; for(int t=0;t<5;t++) { s=s+piece[p+t][q+t]; if(s==5) Blackwin(); if(s==-5) Whitewin(); } } for(int P=d+5,Q=c-5;Q<15;P--,Q++)//判断是否五子连珠——左下到右上 { int s=0; for(int t=0;t<5;t++) { s=s+piece[P-t][Q+t]; if(s==5) Blackwin(); if(s==-5) Whitewin(); } } } void Blackwin() { setcolor(WHITE); setfillstyle(BLACK); fillellipse(500,260,70,30); outtextxy(470,250,"黑子赢"); f=0; mciSendString("play 4.mp3",0,0,0); } void Whitewin() { setcolor(BLACK); setfillstyle(WHITE); fillellipse(500,260,70,30); outtextxy(470,250,"白子赢"); f=0; mciSendString("play 4.mp3",0,0,0); }

2013-07-27

空空如也

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

TA关注的人

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