- 博客(56)
- 资源 (1)
- 问答 (2)
- 收藏
- 关注
原创 go的参数传递都是值传递,但切片需要注意
根据之前学习python和java的经验,每次学习一门新语言时,一定要搞清楚方法的参数传递是值传递,引用传递还是指针传递。主要原因就是需要知道,某种类型的数据传递给某个方法后,方法里面对它的修改是否会影响到这个数据本身。
2025-03-24 16:44:53
452
原创 Comparator Comparators Comparable Collections排序源码解析
起初,写了一行排序代码,空指针异常。有判空思想但对nullsLast理解是错误的,于是阅读了一下相关源码。
2023-12-07 15:40:30
157
原创 inner join left join 什么情况效果相同
由于左连接的右边表没有满足on条件的记录,所以查询出来的所有字段均为空。此时若加一个右边表筛选条件,就无法满足,导致查询无记录。
2023-11-16 09:57:50
255
原创 多线程并发调用feign,outcome返回NullPointerException
遇到的问题看过我之前的文章能发现我从小就有一个并发梦,并且也是对线程协程纤程异步以及并发包有一些了解。这次的接口正好需要多次查询,并发调用feign请求提上日程。List<Future<CurveLineDataVO>> futureList = Lists.newArrayList();for (CurveDTO curveDTO : curveDTOList) { RequestContextHolder.setRequestAttributes(RequestConte
2022-03-31 17:49:18
3105
原创 工作困难杂记
报警阈值范围标记难点一个规则的阈值有四种:通常时段,分级报警,特殊时段,节假日时段。根据优先级来命中不同时段的阈值:节假日->特殊时段->分级报警->通常时段。时段设置是根据星期加时间的数据结构。需要要判断今天是否是节假日,再要判断今天是星期几。 { "end": "09:29:59", "start": "09:00", "week": 1 },返回给前端的数据需要与横坐标一致。对应不上范围就画不出
2022-03-29 09:53:31
1153
原创 concurrent.locks包阅读
AbstractQueuedSynchronizerJDK中实现并发编程的核心,平时我们工作中经常用到的ReentrantLock,CountDownLatch等都是基于它来实现的。AbstractQueuedSynchronizer的介绍和原理分析深入理解AQS(AbstractQueuedSynchronizer)ReentrantLockReentrantLock是JDK层面的同步控制API,Synchoronized是JVM层面提供同步控制的关键字。面试官:谈谈synchroniz
2022-02-15 16:54:53
213
原创 原子类源码阅读
Unsafe 类提供了硬件级别的原子操作Java并发包(java.util.concurrent)中大量使用了CAS操作(比较并替换操作 compareAndSwap)CAS乐观锁与ABA问题原子类型的使用&Unsafe&CASAtomicIntegerFieldUpdater,主要是原子性地更新对象的int类型属性,该属性无须被声明成AtomicInteger,也不用synchronized进行同步。AtomicIntegerFieldUpdater源码详解A.
2022-02-15 10:45:13
216
原创 白话IO模型的演进
本文只是概括思路,具体概念具体底层机制还请看其他文章。以餐厅点餐为例子。服务员是本例子的主角。客人:IO请求服务员:线程炒菜时:IO未就绪状态炒好菜:IO就绪了上菜:程序处理IO请求的数据后厨:内核客人菜单:IO请求的数据同步阻塞每来一位客人,派一个新服务员把客人菜单送到后厨,炒好菜之前服务员寸步不离。此时的服务员进入阻塞状态让出时间片,相当于神游天地,需要重新进入就绪态才能被cpu调度炒好菜后,服务员亲自上菜。同步非阻塞每来一位客人,派一个新服务员把客人菜单送到后厨,炒
2022-02-10 14:29:33
323
原创 爬取新闻自动摘要合成语音爬取图片生成短视频
毕业设计:《基于自动摘要技术的新闻频道生成系统》实现方式:scrapy爬取新闻textrank4zh自动摘要,并保存到数据库调用讯飞语音合成接口将摘要转化为语音,保存到文件用新闻标题作为关键字爬取百度图片,保存六张与音频放在同一文件。moviepy将语音和图片剪辑成竖屏短视频,配以字幕。django提供web管理界面,对爬取的新闻和生成的音视频进行管理。敬请期待。。。...
2022-02-07 15:34:52
1951
原创 mybatisplus 复杂查询,组合or,lambdaQuery
查询需求多个and组合成一个组合条件,多个组合条件之间用或连接(or).例如:SELECT basic_rule_snapshot_id FROM alarm_info WHERE (status = ? AND ((basic_rule_snapshot_id = ? AND industry_device_id = ?) OR(basic_rule_snapshot_id = ? AND industry_device_id = ?) OR(basic_rule_snapshot_id
2021-11-12 17:33:48
1964
原创 python发送邮件 SMTP socks代理
#!/usr/bin/env python# -*- coding: utf-8 -*-"""SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。"""import smtplibimport socksimport jsonfrom email.mime.text import MIMETextimport r
2021-11-12 17:21:19
3414
3
原创 mybatisplus 分页组件
背景观察mybatis-plus(以下简称MBP)打印的sql语句,使用其分页功能时。发现了一个JsqlParserCountOptimize的分页优化处理类,官方对其未做详细介绍,网上也未找到分析该类逻辑的只言片语,这情况咱也不敢用呀,索性深度剖析一下,也方便他人。原理首先PaginationInterceptor分页拦截器的原理无非是代理,这里不累述(mybatis通用分页封装的实现原理挺简单的,也就那么回事),最终落实到查询上基本是分为2个sql:查count总记录数 + 查真实分页记录。而此类
2021-11-11 10:41:38
973
2
原创 异步编程的解决方案
异步编程的目标提高cpu利用率,减少响应时间。异步编程的解决方案每个编程语言或者某些框架某些包,或多或少都对异步有相应的支持。实现思路无外乎几种,比如回调,监听,非阻塞IO。各语言的解决方案倒是有多种协程-用同步的方式写异步代码async/awaityield 生成器CallbackPromise模式reactor模式发布/订阅模式,观察者模式消息队列(以上概念只是一个简单堆砌,肯定有重复部分)每个语言还有各种异步框架或者工具包。...
2021-10-25 13:48:39
304
原创 Java枚举Enum 与字符串的比较
众所周知Enum类重写了equals方法,使其与“==”判断一致 public final boolean equals(Object other) { return this==other; }但这只针对枚举这个类之间,很多时候我们不直接比较枚举类,而是比较具体的属性。因为几乎前后端交互不会传递枚举这个对象,只会传递里面的属性比如code,name等等。然后有两个思路:getByCode获取对应的枚举对象,比较枚举对象 switch (MathEnum.g
2021-10-22 11:13:21
4677
原创 EasyPoi 下拉以及样式导入导出实战
技术选型查找资料简单搜索github上的excel项目,找到四个候选者:apache poialibaba EasyExcelhutool Excel工具集悟耘信息 EasyPoiapache poi这几个工具底层都是apache poi。它很强大很灵活,灵活的东西都很复杂,业务不需要这么专业的工具。所以排除alibaba EasyExcel这是阿里开源的excel工具,对大数据量优化良好,可以基于注解导入导出,注解功能性不如EasyPoi多。业务数据量不大,所以大可不必。huto
2021-09-28 15:11:33
3474
1
原创 遍历递归类
public class TreeNode<T> implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty private String id; @ApiModelProperty private String name; @ApiModelProperty private String label; @A
2021-09-14 18:09:31
155
原创 java导入导出excel,easypoi和hutool.poi
easypoi和hutool Excel工具的使用ExcelUtil是对easypoi的封装,你们找不到的;万变不离其宗,传入List,解析类是E.class,设置一些参数,比如生成表头,从第几行开始,几行结束等等。String tempStr = "表名"; try { ExcelUtil.exportExcel(basicSnapshotExcels, tempStr, tempStr, BasicSnapshotExc
2021-09-14 18:03:49
723
原创 Java数据校验之分组校验
转载一篇数据校验详解:Java数据校验详解补充一点分组校验@Max注解指明这个数据属于哪个分组它才做验证;那么,一个数据传过来,这个数据怎么知道自己是哪个组? @NotNull @Min(0) //最小值>=0 @Max(10) //最大值<=10 @Max(value=0, message="未发行的游戏版本为0!", groups = BetaGroup.class)//分组校验 private int currentVersion;答案就是,Controller的
2021-08-25 10:41:22
768
原创 Java Lambda返回值问题
有的Lambda表达式没有写return语句却有返回值,这让我很迷惑。于是总结了一下Lambda表达式有无返回值的问题。我的理解是这样的,lambda 表达式的主要形式有三种:( params ) -> expression;//表达式( params ) -> statement;//语句( params ) -> { statements };expression和statement的区别可以看一下其他文章简单说就是表达式(算术,方法调用等)和完整语句的区别其中,对
2021-08-06 11:20:26
3908
原创 nacos单机启动报错
报错信息Logging system failed to initialize using configuration from 'C:\Users\nacos/conf/nacos-logback.xml'java.lang.IllegalStateException: Logback configuration error detected:ERROR in ch.qos.logback.core.rolling.RollingFileAppender[cmdb-main] - openFile(
2021-07-24 12:28:12
3646
3
原创 python自定义可迭代对象
迭代器,可迭代对象,iter,next傻傻分不清?看看实例吧自定义可迭代对象class List(object): #创建一个类,为了创建对应的可迭代对象 def __init__(self): self.items = [ ] #定义一个属性是空列表 def append(self,name): #定义方法可以传参数添加到空列表 self.items.append(name) def __iter__(self):
2021-01-07 16:00:34
357
原创 python和java,值传递和引用传递
不得不提引用是C语言的概念,将它运用在其他语言上面已经是不太合适。如果还要仔细扣概念,那真容易懵逼,所以,请把关注点放在效果上。引出问题不久前有个面试官在笔试题中问我:python的参数传递是值传递还是引用传递?我当时的回答是:引用传递,python中没有明确的值类型和引用类型的概念,一般可以将不可变类型类比为值类型,可变类型类比为引用类型。当时看到这个题,是有一点无从下手的,因为我知道如果将不可变类型的变量如 int、string传入函数,函数里面修改这些变量的值,是不会影响到函数外
2021-01-05 16:50:51
589
3
原创 MySQL索引,有意识优化(没干货)
对于数据库的设计,索引的设计以及SQL语句的写法,都要有意识地优化关键词:聚集索引、非聚集索引组合索引 、覆盖索引、索引命中默认情况下主键是聚集索引,在建立主键的时候可以声明为CLUETERED(聚集)或NONCLUETERED(非聚集)!也就是说主键也可以声明为非聚集索引MySQL一次查询只能使用一个索引,如果要对多个字段使用索引,建立组合索引。使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。聚集索引对于那些经常要搜索范围值的列特别有效不是所有类型的索引都
2020-12-07 16:26:49
205
原创 djangorestframework的路由关键字传参
django FBVurl(r'^xing/(?P<code>\w+)/$', tests.xing.as_view()),def test1(self,request,*args,**kwargs): print(args) print(kwargs) return HttpResponse('ok')########输出############()#{'code': '3'}/(?P<code>\d+)/:定义变量名
2020-12-03 20:54:14
394
转载 Python中的值类型与引用类型
前言最近学Go讲到值类型变量的赋值是将值复制一份存到另一个地址块中name := "赵丽颖"nickname := namename和nickname的值相同,内存地址不同。python不一样,不可变类型的变量互相赋值指向同一个内存,当值改变时才开辟新内存。都不会发生共享内存的情况。转载Python学习系列之值类型与引用类型...
2020-11-22 12:54:07
276
原创 drf和channels的一点源码学习,Authentication,WebsocketConsumer
@api_view()总所周知,drf的cbv的流程是:路由匹配>视图as_view>dispatch,然后对django原生进行扩展。今天,想聊一下fbv。视图函数不用api_view()装饰器就是原生django视图,加了后就是drf的视图,那么,这个装饰器中必然调用了as_view或者dispatch。装饰器 @api_view()里面进入了 drf的as_view()在用 django 自己的路由与函数配合时不享有drf的request封装与验证等功能例如:urlpatte
2020-10-24 15:58:41
1133
4
原创 djangorestframework是如何一步一步封装直到你看不懂?
预告一个成熟的框架往往经过多次的迭代,每一次迭代更新了什么、解决了什么、封装了什么。经过成百上千的迭代就形成了你今天学习的框架,然而你已然不知道他是谁了。低级: 知道如何使用 打败40%的人高级: 知道源码流程 打败75%的人超级: 知道源码始末 打败90%的人所谓始末,就是为什么。为什么要这样做?解决了什么痛点?请听下回分解...
2020-10-16 21:40:01
107
原创 字节小程序服务端解密用户信息encryptedData
小坑根据字节开发文档的AES解密敏感数据的示例代码返回的是二进制,要继续处理才能拿到正确的数据json或字典。结论在最后,不想看我扯的直接看结论。历程拿到该用户的session_key和iv以及加密数据encryptedData后,就可以代入代码解密了。官方代码python版:# pythonimport base64# https://www.pycryptodome.org/# pip install pycryptodomefrom Crypto.Cipher import AES
2020-10-16 16:30:59
1170
2
原创 网红框架FastAPI能否补足python饱受诟病的速度
一、什么是FastAPI作为一个pythoner,一开始听说FastAPI,是有点小激动的,没想到python能这么快。FastAPI是一个现代的,快速(高性能)的python web框架。基于标准的python类型提示,使用python3.6+构建API的Web框架。二、FastAPI有多快性能是Flask的3倍!比PHP7还快!这个Python框架你值得拥有!三、FastApi诞生的缘由FastApi诞生的缘由四、文档文档: https://fastapi.tiangolo.com
2020-10-04 17:40:04
2668
原创 非常大的bug:return 0后面代码继续执行了
环境:python3.7.3,win10源自LeetCode第17题:电话号码的字母组合其中一个递归解法是这样的,这个没问题def letterCombinations(self, digits: str) -> List[str]: #外部循环时间复杂度为O(n),递归时间复杂度O(logN),空间复杂度为O(n) d = {'2':'abc', '3':'def', '4':'ghi', '5':'jkl', '6':'mno', '7':'pqrs', '
2020-08-24 17:15:01
802
原创 没人讲得清?同步、异步、阻塞、非阻塞
前言几个月前就搜过大量这方面的博文,以为自己懂了。经过几个月的沉淀,再次阅读这些内容才发现之前懂的皮毛而已,或许几个月后又有新的理解百度百科另外,百度百科的这一版本真的让人欲哭无泪,先不说这个解释是否得当,起码是有一个明显的错误:非阻塞允许多个线程同时进入临界区学过操作系统的都知道,临界区指的是一段代码,而临界资源的互斥访问是互斥锁信号量这些控制的。假如一个文件同时读写,那肯定乱套。学海无涯,我不敢认定自己绝对正确,但是,上面那句话要么大错特错,要么重点跑偏而这位朋友写这句话的出处也被我找到了
2020-08-22 22:07:50
119
原创 动态规划——解决递归痛点
动态规划与递归的关系递归与动态规划是两个刚好相反但是解题思路相同的过程。两个方法都是通过把一个大的问题化小,小到可以一步解决,递归是采用从顶层 层层递归,知道递归出口之后得到结果。递归的痛点是重复计算重复子问题以斐波那契数列为例,用递归会重复计算左右分支的结点,时间复杂度2^n.递归协助解决动态规划写出大规模问题和子问题的递推关系式找到递归出口设计动态规划数组编写代码示例:相加和为9给一个int型数组arr,选择若干数字,若相加能得到数s,则返回True,否则返回False。
2020-08-19 20:43:28
279
原创 LeetCode刷题之路(python)
1.两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。def twoSum(self, nums: List[int], target: int) -> List[int]: hashmap={} for i,num in enumerate(nums): if hashmap.get(target - num) is not None: return [hashmap.get(t
2020-08-18 11:01:51
625
django和django-rest-framework
2020-07-30
python类没定义成员变量
2020-07-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人