Java类集框架----动态数组
Collection-----针对对象处理 Map-----针对键值对对象处理(key value) 1. Collection接口 add():向集合中添加元素
iterator():取得集合的迭代器(遍历集合的工具)
例: package www.java.test;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
class Person implements Serializable {
多线程-----同步与死锁
1. 同步问题的引出 为什么会产生同步? 多个线程在同一时刻访问共享资源(临界区)带来的问题。 我们先来看一个同步问题的例子: package www.java.test;
class MyThread implements Runnable{
private int ticket = 10;
@Override
public void run() {
while(this.ticket > 0){
try {
JAVA中---生产者与消费者模型
1.Wait()—痴汉方法 wait()就是使线程停止运行,会释放对象锁。 wait()方法会使当前线程调用该方法后进行等待,并且将该线程置入锁对象的等待队列中,直到接到通知或被中断为止。 wait()方法只能在同步方法或同步代码块中调用,如果调用wait()时没有适当的锁,会抛出异常。 wait()方法执行后,当前线程释放锁,其他线程可以竞争该锁。 例: package www.java.test;
class MyThread implements Runnable{
priva
写两个线程,一个线程打印1~52,另一个线程打印A~Z,打印顺序是12A34B....5152Z
分析: 其中一个线程负责打印数字,另一个线程负责打印字母,但有一个特点就是数字刚好是字母的2倍(字母26,数字52),数字一次打印2个,字母打印一个,并且字母打印线程一定是在数字打印线程之后才打印的。 如何控制字母打印线程一定是在数字打印线程之后,并且数字和字母还是交替出现的? 我们可以考虑用信号量来控制,假若说:当信号量为1的时候告诉打印数组线程执行,当数字是2的时候,让打印字母的线程执行,然后唤醒数字打印线程,又把数字改为1。 我们需要注意以下几点: 在每一次打印完之后要把flag的值改掉
启动3个线程,3个线程的名字分别是A,B,C,每个线程将自己的名称在屏幕上打印5遍,打印顺序的ABCABC.....
分析: 这个题的思路和我的上一篇博客https://blog.csdn.net/huaijiu123/article/details/86370451这个题的思路是相同的,都是利用信号量来解决。 不同的是: 要将notify()换成notifyAll(),这是为什么呢? 万一A打印完之后,你只唤醒了C而没唤醒B,这就会产生死锁,所以要唤醒所有线程。 3个线程同时启动后,如果是C先进,这时flag都是1,但先打印的是C,后边只是控制了打印的顺序。要确保A一定先打印,就必须让A走A方法,B走B方法
Java----抽象类
什么是抽象类? 抽象类只是在普通类的基础上扩充了一些抽象方法而已。用abstract来定义。 抽象方法:指的是只声明而为实现的方法(没有方法体)。也是用abstract来定义。 为什么会存在抽象类呢? 那是因为继承不能强制让子类覆写父类的所有方法,而抽象类可以。 例: package www.java.test;
abstract class Person{
private String name;
public String getName(){
retur
Java-----模板设计模式
模板设计模式是基于抽象类的,它的核心是封装算法 我们可以先用代码实现泡茶和冲咖啡的过程: 泡茶的步骤: 将水煮沸 用沸水浸泡茶叶 把茶倒进杯子 加柠檬 冲咖啡的步骤: 5. 将水煮沸 6. 用沸水冲泡咖啡 7. 将咖啡倒进杯子 8. 加糖和牛奶 代码实现: package www.java.test;
class Coffe{
//咖啡的冲泡方法
void prepareRecipe(){
boilWater();
brewCoffee();
数据库-----事务管理
事务就是一组DML(数据操纵语言)语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。事务还规定不同的客户端看到的数据是不相同的。 事务的一些基本操作 开始一个事务 start transaction;
创建一个保存点 savepoint 保存点名;
回到保存点 rollback to 保存点名;
例: 我们先创建一个测试表: create table account(
-> id int primary key,
->
Java----剖析代码块
我们先来看一道笔试题: 我们可以先猜猜下边这段代码的结果,我第一做这道题的时候也做错了。 package www.java;
class HelloA {
//构造方法
public HelloA(){
System.out.println("Hello A!父类构造方法");
}
//非静态代码块
{
System.out.println("i'm A class.父类非静态代码块");
}
//静态代
PagerSlidingTabStrip介绍及使用
为了让你的app不像另一个 Play Store上面的app,你可以添加这些属性来做出自己独具一格的应用。 pstsIndicatorColor Color of the sliding indicator 滑动条的颜色 pstsUnderlineColor Color of the full-width line on the bottom of the view 滑动条所在的那个全宽线的颜色 pstsDividerColor Color of the dividers between ta
Android 混淆那些事儿
原文:http://mp.weixin.qq.com/s/WmJyiA3fDNriw5qXuoA9MA 本文主要讲述了代码混淆和资源混淆的原理,Studio默认的混淆方案,混淆的参数,以及如何对Apk进行代码混淆(自定义混淆文件)和资源混淆(结合微信混淆和美团混淆两种方案),避免Apk被逆向。 为什么要混淆 我们的apk在打包发布之前,都要进行混淆处理来避免源代码和资源文件被小白用户通过反编译拿到。未混淆代码的反编译操作非常简单,网上有很多教程, 也可以通过使用Android Studio自带
ant的安装和环境配置
一、安装Apache Ant Apache Ant下载地址:http://ant.apache.org. 1、安装前,请确保 一下下载安装Java开放工具包(JDK),并且配置好jdk的环境变量。 2、下载Apache Ant,将下载的文件解压安装软件的目录。如:D:\tools\apache\ 3、配置Apache Ant的环境变量。 a、创建环境变量名字ANT_HOME,环境变量指向Ant的安装文件夹。如:安装目录 D:\tools\apache\apache-ant-1.9.9 b、将%
android 使用ant打包或者生成jar
一、生成build.xml文件 Eclipse 中使用Ant为Android打包并且签名 Android Sdk中自带文件,在{sdkpath}tools/ant目录下的3个文件 其中build.xml和unbuild.xml中定义了大量基础构建方法和构建策略。我们只需要构建我们自己的build.xml并且存放在项目的根目录下,然后引用{sdk}tools/ant即可。 在命令行窗口输入一下命令就可以生成一个build.xml文件。 <sdk>tools\android update proj
Android APK DEX分包总结
因为android热修复需要Dex分包,而Android热修复是现在比较火的技术,所以现在将我这几天学到的相关东西做一个总结,这篇主要从AndroidStudio和Eclipse两个方面总结Dex分包的过程。 为什么要Dex分包 当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方法数量过多,编译时出错,提示: Conversion to Dalvik format
解决Android 应用方法数不能超过65K的问题
作为一名Android开发者,相信你对android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 可能有些同学会说,解决这个问题很简单,我们只需要在Project.proterty中配置一句话就Ok啦, dex.force.jumbo=true 是的,加入了这句
Android 电量变化监听
Intent.ACTION_BATTERY_CHANGED This is a sticky broadcast containing the charging state, level, and other information about the battery. See BatteryManager for documentation on the contents of the Intent. 你不能像组件那样在manifests里声明一个receive ,你只能通过Context.
实现动态获取Android手机CPU架构类型
1、什么是动态库(.so文件)?
.so文件是unix的动态连接库,是二进制文件,作用相当于windows下的.dll文件。
他使用了C/C++代码编写的可以操作硬件比java更高级的
底层代码,执行速度和效率比其他语言要高。
在Android中调用动态库文件(*.so)都是通过jni的方式。
Android中加载so文件的提供的API:
void System.load(String pathName);
说明:pathName:文件名+文件路径;
voi
adb 拷贝手机中的文件到电脑
1、在手机连接电脑时,使用adb logcat>{d:log_18.txt} 2、拷贝应用安装目录下的文件(如数据库,缓存文件)到电脑。 a、需要有root权限的手机或者电视盒子。 b、执行如下命令: c、把相应目录下的文件拷贝到sdcard. cp log.txt /sdcard 这样就把应用安装目录下cache目录下的log.txt文件拷贝到/sdcard下面了。 d、在电脑上另外开启一个命令行窗口,切到E目录(目录可随意),执行如下命令即可将文件拷贝到电脑。 adb pull sdcar
android 7.0适配
Android7.0发布已经有一个多月了,Android7.0在给用户带来一些新的特性的同时,也给开发者带来了新的挑战,这几天我将应用适配到Android7.0,其中也遇到了不少问题也踩了一些坑,在这里就把我在Android7.0适配上的一些心得分享给大家,让大家的应用能早一天跑在Android7.0上。 权限更改 随着Android版本越来越高,Android对隐私的保护力度也越来越大。从Android6.0引入的动态权限控制(Runtime Permissions)到Android7.0的
周排行