- 博客(118)
- 收藏
- 关注
原创 多线程注入SPring bean
注解注入Bean的时候一直报空指针,后面查阅了一些文章后发现是因为,多线程每次运行都不在spring容器中,而后则使用了手动获取的方式,手动获取需要实现。在使用ScheduleFuture实现定时任务中,因为可能存在多个定时任务同一时段运行的情况。所以在此使用了多线程,但在使用。可加可不加,因为这个是一个工具类,我这是为了方便别的代码里要用的时候方便注入的。这个工具类写好后在需要注入的时候。
2024-01-18 14:02:53
532
1
原创 JDK1.7和1.8的区别
JDK1.8引入了Lambda表达式和Stream API这两个重要的新特性,使得代码编写更简洁、易读。同时,JDK1.8还引入了接口的默认方法和新的日期和时间API,进一步改进了Java语言的功能。这对于接口的演化来说是一项重大的改进,可以在不破坏现有代码的情况下添加新的方法。3.2 新的日期和时间API JDK1.8引入了一套新的日期和时间API,这个API提供了更好的性能和更丰富的功能。新的日期和时间API使用更直观的命名,更易用,同时还修复了JDK1.7中存在的一些问题。
2023-08-09 17:47:47
5127
原创 redis总结
与select/poll不同,epoll不在是一个单独的调度系统,而是由epoll_create / epoll_ctl / epoll_wait三个系统组成,后面将会看到这样做的好处。epoll_wait的效率也是非常高的,因为调用epoll_wait时,并没有一股脑的向操作系统复制这100W个连接的句柄数据,内核也不需要去遍历全部的连接。I/O多路复用器监听套接字,并关联到相应的事件处理器上面,当被监听的套接字准备好执行链接时候,与之对应的文件事件处理器就会调用相应的事件处理器来处理事件。
2023-04-01 21:07:35
181
原创 unable to access ‘xx.git/‘: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connec
git bash执行下面的命令,就OK了git config --global http.sslVerify false
2021-05-08 17:22:17
219
原创 zookeeper选举详情流程
1.加载配置文件,单节点不牵扯选举,多借点需要选举2.设置IP.PORT,最大连接数等参数3.启动线程,开始节点选举4.looking状态:统计所有的looking的总数,并为每个设置选票为当前节点的myid,当前日志ID zxid和当前的的epoch 构建选票信息。开始选举 1.将自己的选票信息发送给其他所有节点 2.自己的接收队列中获取消息是否为空 1.如果为空,检查自己是否收到消息,没有的话,则发送消息联系其他节点,我没有收到消息 2.否则尝试连接...
2020-08-27 11:08:55
470
原创 Redis设计与实现-01-字符串
一1.会记录保存的SDS字符串的长度,所以获取字符串长度就可以从O(N)降到O(1)2.C语言不记录数据长度,需要自己分配好内存,才可以进行扩展,默认是已经分配好足够的空间。SDS每次修改字符串,都会进行自动分配内存,而不需要程序员进行分配。避免了内存溢出3.进行预分配,避免了每次操作都进行内存分配,减少分配次数,减少性能消耗SDS的数据存储模型未进行内存预分配进行了内存预分配二.1.空间预分配空间预分配用于优化SDS的字符串增长的操作,当SDS的API对一个SDS进行.
2020-08-23 15:03:30
167
原创 翻转链表
public static Node reverse(Node node) { if (node == null || node.next == null) { return node; } Node temp = node.next; Node newNode = reverse(node.next); temp.next = node; node.next = null; ..
2020-08-17 12:22:18
104
转载 索引失效情况
要想分析MySQL查询语句中的相关信息,如是全表查询还是部分查询,就要用到explain.索引的优点大大减少了服务器需要扫描的数据量 可以帮助服务器避免排序或减少使用临时表排序 索引可以随机I/O变为顺序I/O索引的缺点需要占用磁盘空间,因此冗余低效的索引将占用大量的磁盘空间 降低DML性能,对于数据的任意增删改都需要调整对应的索引,甚至出现索引分裂 索引会产生相应的碎片,产生维护开销一、explain用法:explain +查询语句。id:查询语句的序列号,上面图片中只
2020-08-15 20:47:43
211
转载 二分查找
import java.util.Arrays; /** * 测试二分法查找 * 二分法适用于已经排好序的数组 * @author Administrator * */public class TestBinarySearch { public static void main(String[] args) { int[] arr= {30,20,50,10,80,9,7,12,100,40,8}; Arrays.sort(arr); System.out.println(A.
2020-08-05 19:21:19
89
原创 找出链表是否是环状链表,并找出对应的入口
1.定义Node属性package com.example.demo;public class Node1 { // 这仅仅是一个标识,用来标记这是哪一个节点 public int tag; public Node1 next; public Node1(Node1 next, int tag) { this.next = next; this.tag = tag; }}2.构建有环链表 0public
2020-07-28 10:02:48
117
原创 LRU算法
Node节点定义package com.example.demo;public class Node { Object key; Object value; Node pre; Node next; public Node(Object key, Object value) { this.key = key; this.value = value; }}LRU算法package com.example..
2020-07-26 14:15:26
79
原创 算法练习
package com.example.demo;import java.util.Arrays;public class Test20200716 { public static void main(String[] args) { int [] A = {3,2};int [] [] queries = {{4,0},{3,0}}; int[] ints = sumEvenAfterQueries(A, queries); for(i.
2020-07-26 13:56:48
103
原创 算法练习
package com.alibaba.dubbo.examples.validation;import com.alibaba.dubbo.common.utils.Stack;import java.util.*;import java.util.concurrent.CountDownLatch;import java.util.concurrent.Semaphore;public class Test { public static void main(String[] .
2020-07-26 13:45:21
156
原创 leetcode121,122(卖出股票的最佳时机)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。思路。只需要前一天比后一天小就可以前一天卖出,买进,后一天再卖出,计算public static int maxProfit1(int[] prices) { int sum = 0; for(int i=1;i<prices.length;i++) { if (pric...
2020-07-26 13:41:58
118
原创 leetcode-118(杨辉三角)
//给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。 public static List<List<Integer>> generate(int numRows) { List<List<Integer>> lists = new ArrayList<List<Integer>>(); for (int i =0;...
2020-07-26 13:36:59
74
原创 使用栈实现队列
Stack<Integer> stack = new Stack<Integer>(); stack.push(1); stack.push(3); stack.push(2); stack.push(8); stack.push(5); get(stack); while (!stack.isEmpty()){ Syst...
2020-07-26 13:34:35
115
原创 leetcode-88(合并两个有序数组)
public static int[] merge(int[] a, int[] b) { int lena = a.length; int lenb = b.length; int[] c = new int[lena + lenb]; int i = 0, j = 0, k = 0;//分别代表数组a ,b , c 的索引 while (i < lena && j < lenb) { ...
2020-07-26 13:30:36
80
原创 快速排序
快速排序 public static void main(String[] args) { int[] arr = { 49, 38, 65, 97, 23, 22, 76, 1, 5, 8, 2, 0, -1, 22 }; quickSort(arr, 0, arr.length-1); for(int in:arr) { System.out.println(in); } } public s.
2020-07-26 13:27:16
87
转载 项目扩展性设计原则
http://baijiahao.baidu.com/s?id=1589208155817565299&wfr=spider&for=pc
2020-07-02 18:34:16
1622
原创 synchronized
用户态与内核态JDK早期,synchronized 叫做重量级锁, 因为申请锁资源必须通过kernel, 系统调用;hello.asm;write(int fd, const void *buffer, size_t nbytes)section data msg db "Hello", 0xA len equ $ - msgsection .textglobal _start_start: mov edx, len mov ecx, msg
2020-06-12 18:11:04
337
原创 dubbo服务暴露简版总结
dubbo服务导出1.serviceBean实现了ApplicationListener接口,当spring刷新上下文的时候,会回调onApplicationevent事件2.是否延迟导出,执行export方法3.执行父类ServiceConfig的export方法,4.执行doExport5.执行doExportUrl导出服务6.执行doExportUrlForProtocol为每个协议下面导出服务7.执行RegisteyProtocol里面的export方法,将服务者链接包装成invoke
2020-06-02 18:50:14
298
原创 Dubbo调用过程
对于接口方法,我们可以按照需求标注 Adaptive 注解。在获取实现类的过程中,如果某个实现类被 Adaptive 注解修饰了,那么该类就会被赋值给 cachedAdaptiveClass 变量。以 Protocol 接口为例,该接口的 destroy 和 getDefaultPort 未标注 Adaptive 注解,其他方法均标注了 Adaptive 注解。Dubbo 不会为没有标注 Adaptive 注解的方法生成代理逻辑,对于该种类型的方法,仅会生成一句抛出异常的代码。Registry.
2020-05-20 15:21:38
218
原创 Runnable+线程池
1.创建线程池 private ExecutorService executor; /** *启动项目的同时创建线程池 */ @PostConstruct private void initThreadPool() { executor = new ThreadPoolExecutor(5, 10, 1000, TimeUnit.SECONDS, linkedBlockingQueue);.
2020-05-20 10:20:36
715
原创 Callbale+线程池
一创建线程池和Callable任务1.创建线程池//创建线程池public class ThreadExecutors { /** * 初始化线程池 */ static ThreadPoolExecutor pool = initExecutorPool(); public static String ThreadResult(Req req) { String respMsg = null; Future<.
2020-05-20 10:12:51
827
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人