- 博客(116)
- 收藏
- 关注
原创 【工具】加密方式
private static String md5(String tmp) { String result=null; try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] buf = md.digest(tmp.getBytes()); if (buf != null && buf.length != 0) { StringB
2021-08-16 16:04:33
139
原创 【工具】文件处理
/** * @Description 按行读文件,每行加入List集合 * @Param String * @return List<String> **/ public static List<String> readFileByLines(String filename) { List<String> result = null; BufferedReader bufferedReader = null; Clas
2021-08-13 15:23:41
134
原创 【工具】时间工具类
/** * @Description 计算某月有多少天 * @Param [year, month] * @return int **/ public static int numOfMonth(int year,int month) { int[] intArray={31,28,31,30,31,30,31,31,30,31,30,31}; if((year % 4 == 0 && year % 100 !=
2021-08-13 15:21:35
144
原创 【工具】excel输出(poi)
@Servicepublic class SaiDaOutFileService { private static final Logger log = LoggerFactory.getLogger(SaiDaOutFileService.class); @Autowired private SaiDaGetInfoService saiDaGetInfoService; /** * @return ByteArrayOutputStream *
2021-08-13 15:18:40
169
原创 【工具】发邮件(javamail)
@Servicepublic class SaiDaEmailService { @Autowired private SaiDaOutFileService saiDaOutFileService; private static final String emailConfigPath= "saiDa_emailConfig.conf"; private static String host;//邮箱服务器 private static String por
2021-07-28 14:21:53
184
原创 【工具】定时器(servlet)
@Componentpublic class SaiDaListener implements ServletContextListener { @Autowired private SaiDaEmailService saiDaEmailService; private static SaiDaListener saiDaListener=new SaiDaListener(); @PostConstruct //通过@PostConstruct实现初始化bean之
2021-07-28 14:13:28
408
原创 Git
git init (初始化)git status (状态)git add (添加)git rm --cache (从缓存区删除)git commit -m “” (从缓存区提
2021-05-12 16:50:29
69
原创 每日刷题【day019】
1、数组中的第K个最大元素public int findKthLargest(int[] nums, int k) { PriorityQueue<Integer> queue=new PriorityQueue<>(Collections.reverseOrder()); for (int num : nums) { queue.add(num); } for (int i = 0; i < k; i++) {
2021-02-25 11:14:53
102
原创 每日刷题【day018】
1、最近的请求次数class RecentCounter { Queue<Integer> queue; public RecentCounter() { queue=new LinkedList<>(); } public int ping(int t) { queue.add(t); while (queue.size()>0&&t-queue.peek()>
2021-02-24 14:03:08
75
原创 每日刷题【day017】
1、爱生气的书店老板public int maxSatisfied(int[] customers, int[] grumpy, int X) { int len=grumpy.length; int sum=0; for (int i = 0; i < len; i++) { if (grumpy[i]==0) sum+=customers[i]; } int l=0,r=l; int maxThree=0; int max
2021-02-23 15:01:21
96
原创 每日刷题【day016】
1、有效的正方形public boolean validSquare(int[] p1, int[] p2, int[] p3, int[] p4) { if (Arrays.equals(p1, p2)|| Arrays.equals(p1,p3)|| Arrays.equals(p1,p4)|| Arrays.equals(p2,p3)|| Arrays.equals(p2,p4)||
2021-02-22 17:17:50
68
原创 每日刷题【day015】
1、删除排序链表中的重复元素 IIpublic ListNode deleteDuplicates(ListNode head) { ListNode dummy=new ListNode(0); dummy.next=head; ListNode cur=dummy; while (cur.next!=null&&cur.next.next!=null){ if (cur.next.val==cur.next.next.val) {
2021-02-21 14:29:45
106
原创 每日刷题【day014】
1、最大连续1的个数public int findMaxConsecutiveOnes(int[] nums) { int count=0; int result=0; for (int num : nums) { if (num == 1) count++; else count = 0; result = Math.max(count, result); } return result;}2、移动零pu
2021-02-15 22:28:33
127
原创 每日刷题【day013】
1、上升下降字符串public String sortString(String s) { int[] arr=new int[26]; char[] sc=s.toCharArray(); for (char c : sc) { arr[c - 'a']++; } StringBuilder sb=new StringBuilder(); while (s.length()>sb.length()){ for (in
2021-02-14 21:26:36
76
原创 每日刷题【day012】
1、字符串的排列public boolean checkInclusion(String s1, String s2) { int s1Len=s1.length(); int s2Len=s2.length(); char[] chars=s2.toCharArray(); for (int i = 0; i < s2Len; i++) { if (s1Len==1&&s2.contains(s1)) return true;
2021-02-10 23:03:19
87
原创 每日刷题【day011】
1、最长湍流子数组public int maxTurbulenceSize(int[] arr) { int len=arr.length; if (len==1||(len==2&&arr[0]==arr[1])) return 1; if (len==2) return 2; int res=1; int left=0,right=1; boolean pre=false; while (right<len){
2021-02-08 22:09:56
101
原创 每日刷题【day010】
1、非递减数列public boolean checkPossibility(int[] nums) { int n=nums.length; for (int i=0;i<n-1;i++){ int x=nums[i],y=nums[i+1]; if (x>y){ nums[i]=y; if (isSorted(nums)) return true; nums[i]=x;
2021-02-07 21:55:55
80
原创 每日刷题【day009】
1、数组形式的整数加法public List<Integer> addToArrayForm(int[] A, int K) { List<Integer> list=new ArrayList<>(); int len=A.length; for(int i=len-1;i>=0;i--){ int sum=A[i]+K%10; K/=10; if (sum>=10){
2021-02-06 08:30:35
76
原创 每日刷题【day008】
1、子数组最大平均数 Ipublic double findMaxAverage(int[] nums, int k) { int sum=0; for (int i=0;i<k;i++){ sum+=nums[i]; } int maxSum=sum; for (int i=k;i<nums.length;i++){ sum=sum-nums[i-k]+nums[i]; maxSum=Math.max(
2021-02-04 22:25:24
100
原创 学习笔记【SpringCloud-第十三节: SpringCloud Alibaba Sentinel实现熔断与限流】
SpringCloud Alibaba Sentinel实现熔断与限流Hystrix的不足需要我们程序员自己手工搭建监控平台没有一套web界面可一个我们进行更加细粒度化的配置流控、速率控制、服务熔断、服务降级Sentinel的优势单独一个组件,可以独立出来直接界面化的细粒度统一配置。https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D下载安装后运行即可启动成功后则是案例创建一个cloudalibaba-sen
2021-02-03 10:06:02
170
原创 每日刷题【day007】
1、替换后的最长重复字符public int characterReplacement(String s, int k) { int len=s.length(); if (len<2) return len; char[] chars = s.toCharArray(); int start=0,end=0,ans=0,res=0; int[] freq=new int[26]; while (end<len){ freq[
2021-02-02 22:43:12
141
原创 学习笔记【SpringCloud-第十三节: SpringCloud Alibaba Nacos服务注册和配置中心】
SpringCloud Alibaba<dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId>
2021-02-02 15:26:33
234
原创 每日刷题【day006】
1、公平的糖果棒交换public int[] fairCandySwap(int[] A, int[] B) { int sumA= Arrays.stream(A).sum(); int sumB= Arrays.stream(B).sum(); int half=(sumA-sumB)>>1; Set<Integer> set=new HashSet<>() ; for (int num : A) { se
2021-02-01 22:06:46
75
原创 学习笔记【SpringCloud-第十二节:SpringCloud Sleuth分布式请求链路跟踪】
SpringCloud Sleuth分布式请求链路跟踪SpringCloudSleuth提供了以探讨完整的服务跟踪解决方案在分布式系统中提供追踪解决方案并兼容支持zipkinzipkin下载完成后输入网址localhost:9411/zipkin/即可访问一条链路通过Trace Id唯一标识,Span标识发起的请求信息,个span通过parent id关联起来Trace:类似于树结构的Span集合,标识一条调用的链路,存在唯一标识span:表示调用链路来源,通俗的理解span就是一次请求信息
2021-02-01 21:00:18
97
原创 学习笔记【SpringCloud-第十一节:SpringCloud Stream消息驱动】
SpringCloud Stream消息驱动一句话:屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型SpringCloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者outputs来与SpringCloudStream中的binder对象交互。通过我们配置类binding(绑定),而SpringCloudStream的binder对象负责与消息中间件交互。所以我们只需要搞清楚如何与SpringCloudStream交互就可以方便使用消息驱动的方式。目前仅支持
2021-02-01 19:19:45
79
原创 学习笔记【SpringCloud-第十节:SpringCloud Bus消息总线】
SpringCloud Bus消息总线分布式自动刷新配置功能Bus支持两种消息代理:RabbitMQ和Kafka在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实力监听和消费,所以称它为消息总线。在总线上的各个势力,都可以方便的广播一些需要让其他连接在该主题上的实例都知道的消息打开RabbitMQ,成功即可SpringCloud Bus动态刷新全局广播再建一个3366,和3355一样,这里巩固一下写p
2021-02-01 17:03:02
64
原创 学习笔记【SpringCloud-第九节:SpringCloud Config分布式配置中心】
SpringCloud Config分布式配置中心微服务意味着要将单体应用中的业务拆分成一个个自服务,每个服务的粒度相对较小,因此系统中会出现大量服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题。SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。分为服务端和客户端两部分。服务端也称为
2021-02-01 14:04:59
68
原创 每日刷题【day005】
1、三数之和public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result=new ArrayList<>(); if (nums==null||nums.length<=2) return result; Arrays.sort(nums); for (int i=0;i<nums.length-2;i++){
2021-01-31 23:30:57
124
原创 学习笔记【SpringCloud-第七节:Hystrix断路器】
Hystrix断路器已停更进维多个微服务之间调用的时候,假设A调用BC,B、C有调用其他,越来越多,这就是所谓的“扇出”。如果扇出中某个微服务响应时间过长或不可用,对A的调用会占用越来越多的系统资源,进而引起系统崩溃。所谓的雪崩效应。Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。断路器本身是一种看管装置,当某个服务单
2021-01-31 21:43:00
109
原创 学习笔记【SpringCloud-第六节:OpenFeign服务接口调用】
OpenFeign服务接口调用Feign是一个声明式WebService客户端。使用Feign能让编写WebService客户端更加简单,只需创建一个接口并在接口上添加注解即可。它的使用方法是定义一个服务接口与然后在上面添加注释。Feign也支持可插拔式编码器和解码器。SpringCloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡openFeign中也整合了Ribbon
2021-01-31 16:24:23
74
原创 学习笔记【SpringCloud-第五节:Ribbon负载均衡服务调用】
RibbonSpring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法与服务调用。简单的说,就是砸死配置文件中列出Load Balancer(简称LB)后面的所有的及其,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些及其。我们很容易使用Ribbon实现自定义的负载均衡算法。LB负载均衡是什么简单的说就是将用户的请求分摊到多个服务上,从而
2021-01-31 12:32:13
131
2
原创 每日刷题【day004】
1、最长公共前缀public String longestCommonPrefix(String[] strs) { if (strs==null||strs.length==0) return ""; String ans=strs[0]; int count=strs.length; for (int i=1;i<count;i++){ ans=longestCommonPrefix(ans,strs[i]); if (ans.l
2021-01-30 21:28:47
79
原创 学习笔记【SpringCloud-第三节:Zookeeper服务注册与发现】
ZookeeperSpringCloud整合Zookeeper代替Eurekazookeeper是一个分布式协调工具,可以实现注册中心功能centos7下安装:https://blog.csdn.net/laogadai/article/details/93797016步骤:建8004module改pom:<dependency> <groupId>org.springframework.cloud</groupId> <artifac
2021-01-30 20:14:12
158
原创 学习笔记【SpringCloud-第二节:Eureka服务注册与发现】
服务注册与发现SpringCloud封装了Netflix公司卡发的Eureka模块来实现服务治理在传统的rpc远程调用框架中,管理每个服务与服务只见依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用,负载均衡、容错等,实现服务注册与发现Eureka采用CS的设计架构,Eureka Server最为服务注册功能的服务器,他是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通
2021-01-30 17:52:07
146
1
原创 学习笔记【SpringCloud-第一节:快速入门 复习搭建】
https://start.spring.io/actuator/infocloud:H-SR9 https://docs.spring.io/spring-cloud/docs/Hoxton.SR9/reference/htmlsingle/boot:2.2.13.RELEASE https://docs.spring.io/spring-boot/docs/2.2.13.RELEASE/reference/htmlsingle/#using-bootcloud alibaba:2.2.1.
2021-01-30 13:59:23
163
原创 每日刷题【day003】
1、字符串转换整数(atoi)public int myAtoi(String s) { s=s.trim(); if (s.length()==0) return 0; if (!Character.isDigit(s.charAt(0))&&s.charAt(0)!='+'&&s.charAt(0)!='-') return 0; boolean flag=true; if (s.charAt(0)=='+') {
2021-01-29 20:54:03
50
原创 每日刷题【day002】
1、N字形变换public String convert2(String s,int numRows){ if (s==null||s.length()==0||numRows==1) return s; StringBuilder[] arr=new StringBuilder[numRows]; for (int i=0;i<arr.length;i++) arr[i]=new StringBuilder(); int temp=
2021-01-28 22:24:25
95
原创 学习笔记【Git&GitHub快速入门】
Git版本管理工具功能:协同修改数据备份版本管理:svn有的是增量式管理的方式,git采用快照的方式权限控制历史记录分支管理集中式版本控制工具:CVS、SVN、VSS分布式版本控制工具:Git、Mercurial、Bazaar、DarcsGit优势:大部分操作在本地完成,不需要联网完整性保证尽可能添加数据而不是删除或修改数据分支操作非常快捷流畅与linux命令全面兼容Git命令行操作本地库初始化命令git add注意:.git目录中存放的是本地库相关的子
2021-01-28 17:25:56
119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人