liut

liut 查看完整档案

嘉兴编辑  |  填写毕业院校嘉兴嘉赛信息技术有限公司  |  Android工程师 编辑 liut.xyz 编辑
编辑

liut

个人动态

liut 回答了问题 · 2018-06-04

android如何使jvm主进程(而非仅shell子进程)具有root权限?

dalao,找到解决办法了吗,我遇到了同样的困惑

关注 3 回答 2

liut 提出了问题 · 2017-08-31

一个带有NavigationView的Activity、多个Fragment,AppBar该如何实现?

如题,一个带有NavigationView的Activity,其中有多个Fragment,通过侧边栏按钮切换Fragment。

问题是Appbar(Toolbar+TabLayout)应该写在哪里?

  1. 写在宿主Activity中,遇到的问题是:多个Fragment的需求不太一样,有的需要TabLayout,有的则不需要,而且菜单项也不一样;

  2. 分别在Fragment中写个字需求的AppBar,遇到的问题是:NavigationView需要与多个Toolbar进行绑定,动作不太好控,Activity和Fragment之间的耦合增高(Activity中的NavigationView要与Fragment中的Toolbar进行绑定);

请各路dalao帮忙。

顺便还有一个问题,android.support.design.widget.BottomNavigationView 支持自动隐藏(上拉滚动列表自动隐藏)吗?如果支持要怎么实现?

关注 2 回答 0

liut 赞了文章 · 2017-04-11

利用反射机制破坏单例模式

简介

利用反射机制破坏了单例模式,这里以懒汉单例模式为例子进行操作。
之前利用反射也是改变了类中的private变量。
类中的private变量真的private么?

正常的单例模式的实现

这里采用了懒汉的单例模式,顺带说一句我自己对懒汉饿汉的理解:
懒汉就是在类加载的时候并不创建对象的实例,在你用到的时候才去创建一个实例。
饿汉就是不管你用不用到,这个类加载的时候就创建了一个实例。用到的时候就返回那个已经创建好的实例。
根本的区别在于创建实例的时机不同。

单例模式的类:

public class SingleTest {
    private static SingleTest singleTest;
    private SingleTest(){}
    public static SingleTest getSingleTest()
    {
        if(singleTest==null)
        {
            singleTest = new SingleTest();
        }
        return singleTest;
    }
}

测试类:

import java.lang.reflect.Field;

public class Test 
{
    
    public static void main(String args[])
    {    
        SingleTest s1 = SingleTest.getSingleTest();
        SingleTest s2 = SingleTest.getSingleTest();
        System.out.println("s1 hashCode: "+s1.hashCode());
        System.out.println("s2 hashCode: "+s2.hashCode());
    }
}

这个类中我打印了s1和s2的hashCode用来验证是不是同一个对象。
输出如下:

s1 hashCode: 2943240
s2 hashCode: 2943240

可以看到s1和s2其实是同一个实例。

利用反射机制破坏单例模式

单例模式的类仍然不变。

测试类如下:

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

public class Test 
{
    
    public static void main(String args[])
    {    
        SingleTest s1 = SingleTest.getSingleTest();
        SingleTest s2 = SingleTest.getSingleTest();
        SingleTest s3 = null;
        System.out.println("s1 hashCode: "+s1.hashCode());
        System.out.println("s2 hashCode: "+s2.hashCode());
        
        Class singleClass = s1.getClass();
        try {
            Constructor constructor = singleClass.getDeclaredConstructor();
            constructor.setAccessible(true);
            s3 = (SingleTest) constructor.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        System.out.println("s3 hashCode: "+s3.hashCode());
    }
}

输出结果如下:

s1 hashCode: 18262862
s2 hashCode: 18262862
s3 hashCode: 28420709

可以看到s3和s1s2已经不是同一个实例了。

就这样,成功的破坏了单例模式。

还是一样,希望听到大家对java封装和反射等的理解。

相信能从大家的评论中学会很多。

查看原文

赞 1 收藏 0 评论 0

liut 赞了回答 · 2017-03-29

有root权限,如何管理/data/目录?

chomd 777

关注 6 回答 5

liut 提出了问题 · 2017-03-27

有root权限,如何管理/data/目录?

原问题:

想写个小应用,需要使用root权限管理/data/目录下的任意文件,该怎么实现呢?


3.29补

现在有两个方案

  1. 通过shell命令方式来操作文件。

  2. 设定目标权限,再进行常规File操作

但都有缺点啊

  1. 操作不方便,不好控(如进度、结果等)

  2. 安全性问题,设定权限操作完成后没能把权限改回(擦脚印)

现求一更优雅的实现方式
或者谁知道像rootexplorer这种软件是怎么来做的呢?

关注 6 回答 5

liut 关注了问题 · 2016-11-16

解决请教一个问题,如何判断一个坐标在扇形区域内

有这么一个扇形,请问如何用js判断某个点的坐标在这个扇形坐标内
请输入图片描述

关注 1 回答 4

liut 赞了回答 · 2016-11-03

解决关于socket长连接 新手向

你的代码可以说明线程结束回收了socket连接。不知道你说的server是用什么开发的,如果是原生的socket,好像默认情况下并没有需要心跳包才可以维持连接,如果使用了其他框架并且设置了idle time,才需要心跳包来维持这个连接,服务器认为你空闲了一段时候后可能就不会再连接了,为了避免浪费资源就把你的连接关闭了。(个人理解)

关注 3 回答 2

liut 赞了回答 · 2016-11-03

解决关于socket长连接 新手向

这个应该是main线程退出了,你在后面加一个Thread.sleep(1000000)试一下。

关注 3 回答 2

liut 赞了回答 · 2016-11-03

解决Python中的Socket工作原理时怎样的?

其实是网络知识,更多的是需要了解:
1.什么是TCP,UDP,为啥服务器要绑定端口监听,而客户端不需要
2.网络原理:网路路由和封包等

如果你学习过计算机网络或者看过APUE,对这些概念应该会很清楚。

关注 4 回答 2

liut 提出了问题 · 2016-11-03

解决关于socket长连接 新手向

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,基于TCP的socket应该也是长连接;


   public static void main(String[] args) throws IOException {
       Socket s = new Socket("127.0.0.1", 8081);
   }

我不明白一点,就是运行如上代码,会得到一个socket(假设服务器已开启),可是为什么我运行后程序会自动结束并关闭socket呢?我明明没有调用s.close(),

clipboard.png

请问如何使程序保持长连接,只能用while(true)形式的心跳包吗?如果是,那在心跳期间我怎么能发送有效的数据(假设心跳数据为无效的)呢?

关注 3 回答 2

认证与成就

  • 获得 5 次点赞
  • 获得 31 枚徽章 获得 2 枚金徽章, 获得 11 枚银徽章, 获得 18 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-09-08
个人主页被 487 人浏览