0%

GetX

常用API

GetBuild, GetX, Obx 使用场景

GetBuild: 性能为主使用这个,他的刷新由我们自己通过updata方法更新。
GetX: 项目中只有一个地方使用了Controller时使用,量比较少的时候,因为他的更新时基于流的,每次更新都会刷新所有引用的地方。
Obx: 如果项目中单个的东西比较多,使用Obx,但是Obx是每秒都在执行的,相当于有监听器。

Get-Cli

Get 脚手架工具

阅读全文 »

Android SDK 及环境配置

按照Android环境安装文档来就行。

环境变量

FLUTTER_SDK_ROOT:D:\resource\Flutter\Flutter-SDK
Path:%FLUTTER_SDK_ROOT%\bin;%FLUTTER_SDK_ROOT%\bin\cache\dart-sdk\bin;%FLUTTER_SDK_ROOT%\.pub-cache\bin

环境检测

flutter doctor -v 查看环境详情

阅读全文 »

xx视频是一个在线观看视频的APP, 速度非常快, 清晰度也够看, 就是有点瑟瑟的广告, 今天闲着没事我瞅瞅他的api, 看能不能白嫖一波.

Android HttpCanary 抓包.

配置好 HttpCanary 后直接抓xx视频的包, 可以获取到 API 的请求情况, 但是他的 response 是经过加密的.

阅读全文 »

通过 Spring 核心原理解析已经大致了解了 Bean 的创建过程, 今天来尝试手写实现一下.

实现目标

  1. 可以通过注解注入 Bean
  2. 实现通过容器的 getBean 方法获取 Bean 实例
  3. 单例和多例 bean 的实现
  4. CGLIB动态代理Bean 的实现

创建基本的类和注解

  1. com.spring 包下分别创建 WbAnnotationConfigApplicationContent, @ComponentSacn, @Component, @Autowired 注解

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    package com.spring;

    /**
    * @author wb
    **/

    public class WbAnnotationSpringApplication {

    public WbAnnotationSpringApplication(Class clazz) {

    }

    public Object getBean(String beanName) {
    return null;
    }
    }


    package com.spring;

    /**
    * @author wb
    **/
    public @interface ComponentScan {

    String value() default "";

    }


    package com.spring;

    public @interface Component {

    String value() default "";

    }

    package com.spring;

    public @interface Autowired {

    String value() default "";

    }
  2. con.wb 下创建我们自己代码 AppConfig ,UserInfoService , OrderInfoService, WbTest

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    package com.wb;

    import com.spring.WbAnnotationSpringApplication;

    /**
    * @author wb
    **/

    public class WbTest {

    public static void main(String[] args) {

    WbAnnotationSpringApplication context = new WbAnnotationSpringApplication(AppConfig.class);

    UserInfoService userInfoService = (UserInfoService) context.getBean("userInfoService");
    userInfoService.test();
    }
    }


    package com.wb.service;


    @Component
    public class UserInfoService {

    @Autowired
    private OrderInfoService orderInfoService;

    public void test(){
    System.out.println(orderInfoService);
    }

    }


    package com.wb.service;

    public class OrderInfoService {

    }

    package com.wb;

    /**
    * @author wb
    **/
    @ComponentScan
    public class AppConfig {

    }

项目初始化完毕.

阅读全文 »

家里部署了一台 Ubuntu, 发现 raw.githubusercontent.com 域名 DNS 竟然被污染了… 记录下一下, 20 的配置文件和以前不一样

1. Ubuntu 18.04 LTS 及以上版本

配置文件变更为:/etc/netplan/*.yaml。例如:

1
2
3
4
5
6
7
8
9
10
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
dhcp4: true
nameservers:
addresses:
- 114.114.114.114
- 223.5.5.5
version: 2

2. Ubuntu 18.04 LTS 以下版本

主要修改两个文件。

阅读全文 »

Spring MVC 流程图

通过指定 id 集排序

select * from table_name where id in () 的时候,MySQL 会自动按主键自增排序,要是按IN中给定的顺序来取,必须按 Order by field() 来实现:

1
SELECT * from `models` where `id` in (111,222,333) order by field(id,111,222,333);

但该排序效率较低,可直接在代码中使用 BeanComparatorFixedOrderComparator 来实现对指定 id 集排序

1
2
3
4
5
public List<XXX> getXxxByIds(List<String> ids) {
List<XXX> xXXs = xxxInfoDAO.selectByIds(ids);
xXXs.sort(new BeanComparator("id", new FixedOrderComparator(ids)));
return XXXs;
}

相关笔记

@EnableAspectJAutoProxy(exposeProxy=true) 开启动态代理的暴露,因为在 JDK 动态代理模式下,在方法中调用本类方法是无法再次走代理的,试用该注解可以将动态代理暴露到当前线程当中,在方法内需要再次走代理时通过 (XXXService)AopContext.currentProxy() 即可取出当前线程的动态代理对象,通过它调用本类方法即可再次走代理做增强操作