Java
文章平均质量分 62
zhangphil
zhangphil@live.com
展开
-
android注解注入AspectJ面向切面AOP插桩技术改变android原生类对象行为记录View点击事件,Java(3)
android注解注入AspectJ面向切面AOP插桩技术,Java(1)通知注解例如,一个Before:切点匹配规则。android注解注入AspectJ面向切面AOP插桩技术,Java(1)_zhangphil的博客-CSDN博客。android注解注入AspectJ面向切面AOP插桩技术,Java(1)通知注解例如,一个Before:切点匹配规则。android注解注入AspectJ面向切面AOP插桩技术,Java(1)_zhangphil的博客-CSDN博客。Button在每次点击后记录。原创 2023-04-25 23:02:54 · 444 阅读 · 0 评论 -
android注解注入AspectJ面向切面AOP插桩技术,Java(1)
android注解注入AspectJ面向切面AOP插桩技术,Java(1)通知注解例如,一个Before:切点匹配规则原创 2023-04-10 23:27:35 · 416 阅读 · 0 评论 -
android注解注入AspectJ面向切面AOP插桩技术性能监测android原生类函数/方法运行耗时/时长(2)
android注解注入AspectJ面向切面AOP插桩技术,Java(1)通知注解例如,一个Before:切点匹配规则。android注解注入AspectJ面向切面AOP插桩技术,Java(1)_zhangphil的博客-CSDN博客。原创 2023-04-14 23:11:14 · 361 阅读 · 0 评论 -
android Glide CustomViewTarget,java
【代码】android Glide CustomViewTarget,java。原创 2023-06-03 23:03:10 · 527 阅读 · 0 评论 -
android sdk分析工具uiautomatorviewer.bat启动报错
Windows下编写简单.bat文件设置java home,java path批处理命令行控制台启动java。把以上内容写入记事本,保存时候文件后缀写成.bat。Windows下编写简单.bat文件设置java home,java path批处理命令行控制台启动java_zhangphil的博客-CSDN博客。原因是java版本过高导致。降至1.8就正常启动。原创 2023-03-07 23:12:12 · 227 阅读 · 0 评论 -
android implement RecyclerView pinch to zoom by ScaleGestureDetector and GridLayoutManager ,java(1)
Android RecyclerView的StaggeredGridLayoutManager实现交错排列的子元素分组先看实现的结果如图:设计背景:现在的产品对设计的需求越来越多样化,如附录文章2是典型的联系人分组RecyclerView,子元素排列到一个相同的组,但是有些时候,UI要求把这些元素不是垂直方向的,而是像本文开头的图中所示样式排列,这就需要用StaggeredGridLayoutMa。在处理大图的浏览查看动作过程中,往往还有其他额外的事情需要处理,典型的以微信。原创 2023-03-05 23:10:28 · 444 阅读 · 0 评论 -
eclipse内存分析工具导入android内存文件hprof报错:Unknown HPROF Version
在android的sdk目录android-sdk\platform-tools下面,找到hprof-conv.exe文件。原因是android内存文件格式和标准Java内存文件格式不一致导致。原创 2023-03-01 23:10:12 · 595 阅读 · 0 评论 -
ReentrantLock替换synchronized解决多线程并发死锁,Java
Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。Java线程同步锁ReentrantLock和Condition中断等待程序前提条件满足_zhangphil的博客-CSDN博客。原创 2022-11-01 23:20:20 · 477 阅读 · 0 评论 -
Semaphore替换多线程synchronized解决并发环境死锁,Java
新Java线程Semaphore:并行环境下访问竞争资源控制Semaphore是从Java 1.5引入的Java线程新内容。Java并发多线程环境中,造成死锁的最简单的场景是:多线程中的一个线程T_A持有锁L1并且申请试图获得锁L2,而多线程中另外一个线程T_B持有锁L2并且试图申请获得锁L1。线程的锁申请操作是阻塞的,于是造成线程T_A和线程T_B无法正确获得想要的锁,两个线程被阻塞进入死锁状态。新Java线程Semaphore:并行环境下访问竞争资源控制_zhangphil的博客-CSDN博客。原创 2022-10-28 23:41:02 · 562 阅读 · 0 评论 -
spring把resources目录下的文件读取出来装载到String,Java
spring把resources目录下的文件读取出来装载到String,Java。原创 2022-12-07 23:14:18 · 721 阅读 · 0 评论 -
根据process进程id判断进程是否存在,Java
根据process进程id判断进程是否存在,Java。原创 2022-11-26 23:27:01 · 617 阅读 · 0 评论 -
/WEB-INF/views/common/common.jsp (行.: [3], 列: [1]) 文.件[jstl.jsp] 未找到
tomcat服务器报错:/WEB-INF/views/login.jsp (行.: [5], 列: [1]) /WEB-INF/views/common/common.jsp (行.: [3], 列: [1]) 文.件[jstl.jsp] 未找到。出现这种情况是因为开发者写的xxx.jsp中引用另外的yyy.jsp,但在xxx.jsp里面,引用yyy.jsp时候,使用的是相对路径而不是绝对路径。其中的/WEB-INF/views/common/即为补全的路径。原创 2022-11-05 23:34:09 · 299 阅读 · 0 评论 -
spring模板freemarker从项目的resources目录的data下加载文件,Java
有些时候,只是需要一个模板文件,需要在项目中二次定制化配置,不需要把它和标准的spring模板templates混淆在一起,此时可以在resources目录下建立data子目录,然后把模板模板文件放进去,然后通过ClassPathResource加载出来。模板引擎freemarker动态更新生成JSON模板字段值,Java_zhangphil的博客-CSDN博客_java json 模板引擎。java模板引擎freemarker动态更新JSON模板字段值。原创 2022-11-17 23:16:28 · 1234 阅读 · 0 评论 -
spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java
有说法认为需要把@EnableScheduling注解放在主应用Application上,其实不必,只需要把@EnableScheduling添加到使用定时任务的类上,然后在类的内部定时任务函数上添加注解@Scheduled即可。原创 2022-10-25 23:16:07 · 1960 阅读 · 0 评论 -
IDEA报错 java: 错误: 不支持发行版本 5
原因是项目使用的JDK版本太高了。解决方案,选择较低的java版本,一般选择Java11即可。IDEA报错 java: 错误: 不支持发行版本 5。原创 2022-10-20 23:38:14 · 3533 阅读 · 0 评论 -
HttpURLConnection从链接下载数据存放本地临时文件,Java
HttpURLConnection从链接下载数据存放本地临时文件,Java。原创 2022-09-03 23:21:24 · 436 阅读 · 0 评论 -
解压.7z格式压缩文件,Java
解压读写.7z格式的压缩文件,Java。原创 2022-09-16 23:22:02 · 605 阅读 · 0 评论 -
Java正则匹配提取年月日字符串
Java正则匹配提取年月日字符串。原创 2022-09-07 23:23:45 · 1783 阅读 · 0 评论 -
Java输出不换行,在固定位置重复打印
这种场景在下载大文件时候最常见,比如更新下载进度完成了%多少,如果直接System.out.println()则直接换行输出,不是很合适,可以固定在一个位置输出%进度,直到100%完成后换行。Java输出不换行,在固定位置重复打印。......原创 2022-08-29 23:23:24 · 1797 阅读 · 0 评论 -
OkHttp post json数据,Java
OkHttp post json数据,Java。原创 2022-08-25 23:06:18 · 678 阅读 · 0 评论 -
Java File createNewFile创建文件包含多层级目录报错
如果直接使用File的createNewFile("c:\dira\dirb\dirc\file.txt")会抛出错误。比如,需要创建一个包含目录层级结构的文件:c:\dira\dirb\dirc\file.txt。Java File createNewFile创建文件包含多层级目录报错。原创 2022-08-19 23:52:29 · 698 阅读 · 0 评论 -
解压zip压缩文件,Java
解压zip压缩文件,Java传入一个压缩文件(srcPath),然后将压缩文件的内容(文件,目录)递归的解压到目的路径(destPath)下重建文件层次结构。原创 2022-07-08 23:14:04 · 358 阅读 · 0 评论 -
Java的ZipFile报错:Caused by: java.util.zip.ZipException: invalid CEN header (bad entry name)
Windows系统上跑Java的ZipFile报错:Caused by: java.util.zip.ZipException: invalid CEN header (bad entry name)原因是编解码出现错误,加入gbk编码格式解决:原创 2022-07-04 23:01:36 · 4067 阅读 · 1 评论 -
解压特定zip压缩文件中特定文件,Java
解压特定zip压缩文件中指定文件,Java有些时候,zip压缩文件特别大动辄几大GB,但是只想要其中某一个特定文件,此时就完全没必要把全量文件都解压出来,只需解压指定文件即可。原创 2022-06-30 00:12:15 · 1577 阅读 · 0 评论 -
Boyer–Moore Majority Vote Algorithm摩尔投票法,众数算法,Java
摩尔投票法,Boyer–Moore majority vote algorithm,也被称作多数投票法,求解众数的算法(Majority Vote Algorithm)。原创 2022-05-30 23:03:44 · 543 阅读 · 0 评论 -
一个简单的Java测试类型服务器
用Java写的一个极其简单的服务器,该服务器实现一个简单功能:绑定本地端口,等待客户端发起socket套接字连接,接受连接,服务器为该socket连接创建一个线程,在线程中,每隔1秒发送一条简单的时间戳消息:import java.io.DataOutputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class MainClass { pu原创 2022-05-18 23:27:26 · 963 阅读 · 0 评论 -
Java使用jedis连接NoSQL数据库Redis写入数据并读取出来
(1)当然需要先启动Redis数据库,关于启动Redis数据库,参考下面这篇文章:https://zhangphil.blog.csdn.net/article/details/122535147https://zhangphil.blog.csdn.net/article/details/122535147(2)用idea创建一个maven项目工程,在pom.xml添加jedis依赖: <dependency> <groupId>原创 2022-01-26 23:03:49 · 797 阅读 · 0 评论 -
SpringBoot上传文件到后端服务器
定义上传文件的服务:import org.springframework.web.multipart.MultipartFile;import java.nio.file.Path;public interface StorageService { long save(MultipartFile file, String dst) throws Exception; void deleteAll(Path path);}上传服务的接口实现:import or原创 2022-01-18 00:08:53 · 6556 阅读 · 1 评论 -
spring async异步线程任务简例
spring通过一个注解关键字 @Async 表明一段代码将放入异步线程代码块里面运行。import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.scheduling.annotation.Async;import org.springframework.stereotype.Service;import java.util.concurrent.CompletableFuture;原创 2022-01-23 23:59:22 · 530 阅读 · 0 评论 -
Spring security登录授权用户有效期简单例子
在上一个例子基础上:https://zhangphil.blog.csdn.net/article/details/122489213https://zhangphil.blog.csdn.net/article/details/122489213加入一些简单改造,任何登录授权用户会给一个登录后的有效期,超时后,当前用户需要重新登录认证。这种场景就是常见的网页和app的“记住我”(记住用户名和密码)功能,“记住我”的时间可以通过spring的rememberMe()完成。修改的代码: @原创 2022-01-21 23:37:14 · 2071 阅读 · 0 评论 -
Spring security登录授权验证的简单例子
实现一个简单的使用spring security完成的登录验证。登录成功后,自动跳转到index页面。不同的用户,授予不同访问页面路径的权限。权限基于角色管控。admin权限角色最高。user角色为普通角色。import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.authentication.builders.Authentica原创 2022-01-20 23:12:12 · 1663 阅读 · 0 评论 -
spring boot报错:There is no PasswordEncoder mapped for the id “null“
spring boot报错:There is no PasswordEncoder mapped for the id "null"原因:新版spring boot需要在自定义的WebSecurityConfigurerAdapter里面的configure(AuthenticationManagerBuilder auth)函数里面为明文密码实现一个密码加密器。解决方案:在自己继承的WebSecurityConfigurerAdapter的类中的configure(Authenti原创 2022-01-19 23:03:09 · 1206 阅读 · 0 评论 -
MongoDB数据库开发环境搭建与配置,Windows环境下
MongoDB是一种NoSQL数据库。本文以Windows环境为例搭建配置MongoDB。MongoDB下载链接:MongoDB Community Download | MongoDBhttps://www.mongodb.com/try/download/community解压后,可以看到在\bin目录下有两个.exe文件,mongo.exe和mongod.exe。mongo.exe是连接MongoDB数据库的客户端,mongod.exe是服务器端程序。(1)启动MongoDB服务器端。原创 2022-01-12 23:04:39 · 2350 阅读 · 1 评论 -
Java jmap与jcmd命令dump内存heap堆
//获取当前Java程序的进程id long pid = ProcessHandle.current().pid(); //jmap与jcmd两种命令方式效果相同,均为dump内存 String[] cmd1 = {"jmap", "-dump:live,formt=b,file=D:/dump/jmap.hprof", String.valueOf(pid)}; String[] cmd2 = {"jcmd", Strin...原创 2021-10-31 23:25:27 · 2066 阅读 · 0 评论 -
Java函数泛型List参数,操作泛型元素
import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Main { public static void main(String[] args) { new Main().test(); } private class TA { public int id = -1; } private c...原创 2020-09-24 23:58:46 · 3696 阅读 · 0 评论 -
Java给定公历日期计算相应农历/阴历日期
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 注意!此类所得到的农历日期是正确的,但年份是错误的。故,只使用其计算所得的农历日期。 例如: Calendar cal = * Calendar.转载 2015-02-22 16:53:53 · 6302 阅读 · 2 评论 -
Java线程池:ExecutorService,Executors
简单的Java线程池可以从Executors.newFixedThreadPool( int n)获得。此方法返回一个线程容量为n的线程池。然后ExecutorService的execute执行之。现给出一个示例。package zhangphil.executorservice;import java.util.concurrent.ExecutorService;import j原创 2015-02-21 16:06:48 · 3540 阅读 · 1 评论 -
给定公历日期计算12星座(Java代码实现)
给定公历日期,计算返回该日期对应的十二星座。public static String getXingZuoName(int month, int day);注意:参数month和day均为公历月、日。返回的中文星座名如:处女座。import java.util.Map;import java.util.HashMap;import java.util.ArrayList原创 2015-02-22 17:06:18 · 4701 阅读 · 1 评论 -
Java观察者模式 : Observer / Observable
/**Java观察者模式的场景:一个女孩洗澡,被很多男孩偷看。女孩洞察后,搜索坏男孩,然后继续洗澡。三个类:Boy,Girl还有主类MainClass。*//*男孩Boy.java*/import java.util.Observable;import java.util.Observer;public class Boy implements Observer{...原创 2015-02-12 20:05:54 · 1342 阅读 · 0 评论 -
Java从一个输入流每次读取一行:BufferedReader.readLine()
假设该输入流从一个文件中获取,然后每次读取一行输出,直到读取完毕。用Java IO中的BufferedReader的readLine(),“顾名思义,读取一行”实现:import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStre原创 2015-02-24 10:08:10 · 43459 阅读 · 4 评论