- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 python继电器控制
python控制继电器源码import serialimport timeportx = "COM3"bps = 9600timex = 10def getRsp(): # 停止、等待数据,这一步非常关键。timeout压根没用 time.sleep(1) count = ser.inWaiting() # 数据的接收 if count > 0: data = ser.read(count) if data
2022-05-06 20:01:18 2386
原创 线段树笔记
public interface Merger<E> { E merge(E a,E b);}public class SegmentTree<E> { private E[] data; private E[] tree; private Merger<E> merger; public SegmentTree(E[] arr, Merger<E> merger) { data = (E[])
2021-06-03 23:42:16 87
原创 Spring自定义数据注入到控制器
# Spring的参数注入到控制器背景 我们经常会有一些上下文的信息需要去系统中获取, 可能多半都是从一些context之类里面去拿(这些数据其实都是在threadlocal中维护), 怎么能让这些参数自动注入到我们的控制器呢控制器的代码: 控制器 @GetMapping("cookie") public void testCookie(HttpServletResponse response, HttpServletRequest reque...
2021-06-03 00:07:10 146
原创 使用CompletableFuture进行并发编程
CompletableFuture并发编程一、前言 函数式编程在java1.8中有一个不得不说的特性,函数式编程,虽然说这个好像违背了java的oop思想,但是终究抵不过真香定律,尤其是各种集合操作,本次主要记录下函数式编程在并发编程中的应用函数式接口先看一段代码public class TestFunction { public static void main(String[] args) { //调用方法 String result = testExecut
2020-08-16 23:06:45 860
原创 从CountDownLatch来进行AbstractQueuedSynchronizer入门
从CountDownLatch来看AQS大背景在java1.5中引入了 CyclicBarrier、Semaphore,CountDownLatch等并发工具类,而此类工具类的实现其实都是基于大名鼎鼎的AbstractQueuedSynchronizer来实现直接来看aqs可能较为抽象,我们可以先看一个简单的实现吧,这里就用countdownlatch来开始入手一、CountDownLatch的概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来
2020-08-02 22:51:37 142
原创 爬虫java版解决方案
背景 最近弄个数据获取的小功能,对于如何从网页来获取数据也算是有了一个初步的了解,一路也是跌跌撞撞,看过的几个方案做个小总结吧 我们浏览网页的本质其实都是获取别人的后台数据展示,当我们需要大量的数据的时候,总不能去一个个点击页面抄数据下来 吧,那么我们就可以通过代码来实现,对于绝大部分网页,页面的结构都是具有规律性的,比如淘宝网上的商品详情页这种,肯定不可能一个商品一个界面是吧,任何涉及到详情页的界面肯定都是有规律的,那么我们就可以使用代码来解析页面获取数据. (搜索引擎的爬
2020-07-26 12:39:05 953
原创 java并发编程世界概略图
并发编程概况图一、我们先用一张概略图来展示一下二、并发编程带来的好处和问题并发编程的本质:一个消耗时间任务我们如何去尽快的完成呢?现实生活中可能就是说给你加个人,两天的活儿一天干完吧程序的世界里面也一样,给你加个线程,尽快搞完吧,**那么区别在哪里呢,**这就是并发编程带来的问题:举个例子,弄五个苹果做个果盘:人是智能的,可以较好的相互沟通来处理好分工,同步,协作分工: 甲洗4个苹果,乙洗完1个苹果之后,然后切完摆盘同步: 乙切苹果摆盘,甲不能参与协作: 甲洗完4个苹果之后将苹果
2020-06-21 17:46:39 142
原创 线程池的参数说明
关于线程池的说明理论基础:由于CPU的速度远远快于内存的速度,为了充分的利用CPU的资源,操作系统会将CPU的计算进行分时复用目前普遍采用的是时间片轮询的方式来调度cpu资源在我们的java语言中,创建线程就像是new一个对象那么简单,但是实际上由于java的多线程是创建的内核级线程,和系统操作的线程一一对应,资源的分配调度都是由操作系统来进行管理,开销很大 (golang的协程是程序会有自己 的资源调度器);如何创建一个线程池ThreadPoolExecutor的创建方式,这么多构造参数是不
2020-06-21 14:14:25 181
原创 java并发编程理论部分
java并发编程理论Chapter1 并发编程的幕后背景1.计算机的发展历程上,电脑的性能一直在提升,但是核心的矛盾一直存在,我们的cpu,内存,磁盘之间的巨大速度差异为了解决这个问题,最大的获取计算机的性能,那么就需要去平衡硬件的性能,方案如下:cpu添加缓存,L1,L2,L3的缓存(电脑任务管理器的CPU栏可以看到),L1,L2是非共享的缓存,L3是共享操作系统添加了进程,线程,用来进行分时复用cpu,用来均衡cpu和io的速度差异编译程序的指令可能会进行优化来更加充分的利用缓存(双循
2020-06-21 12:35:32 98
并发编程(各种脑图资源集合).rar
2020-06-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人