继续阅读记一次NAS丢盘事件硬件坏了,你软件有个屁用~
分类: 问题集锦
SpringBoot扫描注册注解
有个小需求是扫描在SpringBoot 注册的RequestMapping接口地址,可以先扫描所有使用Controller注解的类,然后获取他们的方法,判断使用的RequestMapping注解,再获取value,就能拿到接口地址了。下面为代码片段
/** * 扫描使用注解的类 * @param packageName 扫描包名 * @param annotation 注解类 * @return 扫描到的集合 */ public static List<class> scanClass(String packageName, Class annotation) { List<class> classList = new ArrayList<>(); if (ObjectUtils.isEmpty(packageName)) { return classList; } ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false); TypeFilter includeFilter = (metadataReader, metadataReaderFactory) -> true; provider.addIncludeFilter(includeFilter); Set<beandefinition> beanDefinitionSet = new HashSet<>(); // 指定扫描的包名 Set<beandefinition> candidateComponents = provider.findCandidateComponents(packageName); beanDefinitionSet.addAll(candidateComponents); beanDefinitionSet.forEach(beanDefinition -> { try { Class clazz = Class.forName(beanDefinition.getBeanClassName()); if (!ObjectUtils.isEmpty(annotation)) { if (!ObjectUtils.isEmpty(AnnotationUtils.getAnnotation(clazz, annotation))) { classList.add(clazz); } } else { classList.add(clazz); } } catch (ClassNotFoundException e) { e.printStackTrace(); } // System.out.println(definition.getBeanClassName()); }); return classList; } /** * 获取Url * @param packageName 扫描包名 * @param className 指定类,如无指定类,为null即可 * @return url集合 */ public static List<string> getUrls(String packageName,String className){ List<class> list= scanClass(packageName, Controller.class); List<string> urls=new ArrayList<>(); for (Class aClass : list) { if(className!=null&&!aClass.getSimpleName().equals(className)){ continue; } Method[] methods= aClass.getDeclaredMethods(); for (Method method : methods) { RequestMapping ls=method.getAnnotation(RequestMapping.class); if(ls!=null) { urls.add(ls.value()[0]); } } } return urls; }
AndroidStudio 控制台乱码
双击Shift
,输入vmoption
,选择Edit Custom CM Options
输入-Dfile.encoding=UTF-8
保存后重启即可
Windows下代理端口
由于运营商限制,NAS开放445端口是无法直接访问的,但Windows客户端只允许链接445端口,所以需要在本地做个端口转发功能
- 如果有445端口占用的话,需要先关闭掉Server服务
- 用管理员权限PowerShell或cmd
- 连接:netsh interface portproxy add v4tov4 listenport=本地端口 listenaddress=127.0.0.1 connectport=服务端口connectaddress=服务地址
- 查看全部:netsh interface portproxy show all
- 移除代理:netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445
- 重启电脑生效
可能会用到的正则
从百度上抄的,记录下方便下次使用,正则表达式不就是复制粘贴大法嘛(
1.AndroidStudio 日志过滤多个字符串
^((?!hello|hi).)*$
这样就能过滤掉hello和hi字符串了
2.匹配双引号的内容(含双引号)
\"([^\"]*)\" 替换并包含原文 "\1"\