- 博客(371)
- 资源 (43)
- 问答 (1)
- 收藏
- 关注

原创 Go语言学习笔记
这里写自定义目录标题1. Go语言开篇1.1 GoLang的学习方向1.2 GoLang应用领域1.2.1 区块链技术(分布式账本技术)1.2.2 服务端应用1.2.3 云计算和云服务2 GoLang概述2.1 go语言发展史功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表
2020-05-15 20:58:30
780
原创 Docker和Dify学习笔记
思路就是利用Dify的echarts渲染的能力(即使是Dify自带的Echarts图表生成工具也是输出了一串echarts的配置字符串,甚至还没有直接写python代码生成来的直接)。这里需要注意, 我的ollama是直接安装在宿主机的。但是Dify是通过docker启动起来的,这里涉及到docker和宿主机之间的通信。默认占用的是80和443端口,如果你本机已经部署了其他的应用,占了该端口,修改.env文件中的下面两个变量。这是因为Dify限制了默认的长度。域名,Docker的DNS可以解析这个域名。
2025-03-20 15:37:31
1518
1
原创 Vue宏观理解
执行该命令最终的效果就是会初始化一个新的项目,配置好必要的文件,并安装所有必要的依赖,包括安装好Vite本身(执行这个命令会自动安装vite,不需要手动安装vite);2、npm是JavaScript依赖包管理工具,可以进行前端项目的打包、依赖下载等,可以理解成java中的maven;注:Node.js已经自带npm,安装Node.js时即已安装了npm,故不需要再安装npm;官网:https://www.npmjs.com/官网:https://cn.vitejs.dev/安装:解压即完成安装;
2024-12-12 18:06:36
1074
原创 NIFI使用
我这里是使用JS脚本进行处理。还有很多其他语言的脚本。注意: 这里只是生成了一个sql字符串,并没有执行sql,因此需要后面的processor来执行sql语句。注意:autocommit要设置为true,否则看不到数据库里面的数据的。
2024-12-10 16:14:32
535
原创 Java应用性能和内存分析
如果出现性能问题,首先需要确认是Netty的问题还是业务逻辑代码的问题。通过jstack命令或者jvisualvm工具打印线程堆栈,按照线程CPU使用情况进行排序(top -Hp命令采集),看线程在忙什么。通常如果采集几次都返现Netty的NIO线程堆栈停留在select操作上面,说明IO比较空闲,性能瓶颈不是Netty。例如,下面我的程序, bossGroup线程个数是0,那么默认就会是两倍的默认核数。可以很明显的看到线程个数。综上说明我的程序没有IO处理不过来的问题,Netty不是性能瓶颈。
2024-12-10 09:48:09
610
原创 搜索引擎相关的一段实习经历
就是跟搜索相关的一段经历。主要工作就是建立倒排索引库相关的一些简单内容。又翻到了以前的工作,权作纪念。就是简单的封装cpp的库供python语言调用。反正就是很多版本问题等等吧各种鬼问题。我感觉这个思路可能还是待考证。跨语言的调用我感觉还是不是很靠谱的样子。可能有靠谱的,但是我工作经历中没有看到这么玩玩的比较好的。
2024-10-04 20:58:59
324
原创 程序员的自我修养——链接、装载和库
段表字符串用来保存段表中用到的字符串,最常见的就是段名(sh_name)。ELF文件有32和64位的版本,相应地,文件头结构有两种,分别是:Elf32_Ehdr和Elf64_Ehdr. 32位和64位的文件头的内容是一样的,有些成员大小不一样。最开始的4个字节是所有的ELF文件都必须相同的标识码。分别为:0x7F(ASCII中的DEL控制字符)、0x45(‘E’)、0x4c(‘L’)和0x46(‘F’)。.rel.text段,其类型(sh_type)为“SHT_REL”,即是一个重定位表。
2024-04-12 19:03:08
887
原创 Debug Monitor中断详细解析
FP_COMP 寄存器的布局有点奇怪,但基本上对于给定的 instr_addr,FP_COMP[31:30] 映射 instr_addr[1:0],FP_COMP[28:2] 映射到 instr_addr[28:2],最低位 FP_COMP[0]控制断点是否启用。此种模式下,在调试的时候核心会处于halted(停止)状态。基于调试监视器(Debug Monitor)模式的调试通过在发生调试事件(Debug Event)时触发称为“DebugMonitor Exception”的异常来进行。
2024-02-18 14:13:02
2163
原创 CoreSight学习笔记
channel中也可以产生ctitrigout信号,可以通过配置【CTI Application Pulse register, CTIAPPPULSE】的值,在指定的channel上产生一个channel Event,会将此event传递给相应的trigger。否则向CTI_CONTROL寄存器中写值的话会失效,即,值写不进去,写了在读出来还是没有变化。在channel 3上面产生channel Event,即可给trigger 2发出ctitrigout信号,触发中断。(2)在相应函数中清除中断。
2024-02-07 15:33:43
3261
原创 PyQt学习笔记
9] 入门课件:https://doc.itprojects.cn/0001.zhishi/python.0008.pyqt5rumen/index.html#/README。[11] PyRcc使用:https://blog.csdn.net/qq_42588821/article/details/104222921。[3] PyQt5安装:https://blog.csdn.net/yfdgbfvd/article/details/122914885。
2024-01-04 14:56:39
1301
原创 STM32基础概念
ST 是意法半导体,为公司名称,是SOC厂商。M 是Microelectronics 的缩写。32 表示32 位。STM32 就是指ST 公司开发的32 位微控制器。
2023-12-28 13:50:23
499
原创 [CustomMessages] section
CustomMessages] section用来定义自定义的一些{cm:}常量.一个定义和使用的例子。CustomMessages是支持带参数的,从1%到9%。支持重排列参数(例如,2%移动到了1%前面),也支持重复的参数(例如,1% …1% 2% )。在有参数的message中, 用两个连续的“%”来嵌入一个“%”,“%n”会创建一个line break。
2023-11-30 15:31:44
978
原创 RFC4493——AES-CMAC
This memo specifies an authentication algorithm based on CMAC with the 128-bit Advanced Encryption Standard (AES). This new authentication algorithm is named AES-CMAC.AES-CMAC可以检测有意图的,未鉴权的数据修改,也包括意外修改。AES比hash函数更容易使用。见原文。如果Message的size是128bit的整数倍,最后一个bl
2023-11-28 15:16:33
3847
1
原创 QT基础学习笔记
跨平台,几乎支持所有的平台接口设计良好,使用简单一定程度上简化了内存回收机制开发效率高,能够快速的构建应用程序。社区氛围良好,市场份额上升支持嵌入式开发定义信号singals后面的函数都可以作为信号,信号只有声明,没有实现。Q_OBJECTpublic:signals:定义槽后面的函数都可以作为slot,slot需要有实现。Q_OBJECTpublic:signals:qDebug()
2023-11-01 20:34:26
365
原创 Effective Cpp
当编写一个copying函数的时候,请确保:(1)复制所有的local成员变量。经验: 只有当class内至少有一个virtual函数的时候,才为这个class声明virtual 析构函数。如果是允许派生的,这回影响类内声明的函数,尤其是析构函数——因为要考虑析构函数是否被设计成virtual的。static_cast:为(*this)添加const,指明调用的是const版本的函数,避免递归不退出。如果是继承某个父类的,会受到父类的设计约束,特别是virtual或者non-virtual的影响。
2023-10-22 20:37:21
163
原创 Java并发编程实战——结构化并发应用程序2
在Java的API或语言规范中,并没有将中断和任何取消语义关联起来,但实际上,如果在取消之外的其他操作中使用中断都是不合适的,并且很难支撑起更大的应用。线程的所有权是不可以传递的:应用程序可以拥有服务,服务也可以拥有工作者线程,但是应用程序并不能拥有工作者线程,因此应用程序不能直接停止工作者线程。对于持有线程的服务,只要服务的存在时间大于创建线程的方法的存在时间,那么就应该提供生命周期方法。由于每个线程拥有各自的中断策略,因此除非你知道中断对该线程的含义,否则就不应该中断这个线程。
2023-08-16 16:09:50
292
原创 Java并发编程实战——结构化并发应用程序
(2)Timer执行所有的定时任务时只会创建一个线程。如果有足够多的线程使所有的CPU保持忙碌状态,那么再创建更多的线程反而会降低性能。在一定范围内,增加线程可以提高系统的吞吐率,但是如果超出了这个范围,再创建更多的线程会降低程序的执行速度。Executor基于生产者-消费者模式,提交任务的操作相当于生产者(生成待完成的工作单元),执行任务的线程相当于消费者(执行完这些工作单元)。只有大量相互独立且同构的任务可以并发进行处理时,才能体现出将程序的工作负载分配到多个任务中带来的真正性能提升。
2023-08-09 17:51:35
913
原创 我的待办待办~
hashmap源码,rehash在并发情况下有什么问题,concurrentHashmap源码,具体segment怎么上锁。hdfs rpc的实现,reactor设计模式在rpc的具体过程。一个进程没反应你要咋办,后来暗示我jstack那些命令,我并不会。wait和notify实现一个具体的情况(忘记具体的)aqs的实现还有多线程里我根本我听过的某些名词实现。编程题:用链表和map实现一个lru处理写的过程。跳表实现细节,建议我去看java封装的跳表。java多线程读锁写锁。linux分析日志命令。
2023-08-03 21:50:22
133
原创 Java并发编程实战——基础知识2
ListHelper只是带来了同步的假象,尽管所有的链表操作都被声明为了synchronized,但是使用了不同的锁,这意味着putIfAbsent相对于List的其他操作来说并不是原子的,因此无法确保putIfAbsent执行时另一个线程不会修改链表。使用私有的锁对象而不是对象的内置锁,有诸多优点:(1)私有的锁对象可以将锁封装起来,使客户代码无法得到锁,但客户代码可以通过公有方法来访问锁,以便参与到它的同步策略中。当一个对象被封装到另一个对象中时,能够访问被封装的对象的所有代码路径都是已知的。
2023-08-01 14:48:53
483
原创 Java并发编程实战——基础知识
当读取一个非volatie类型的long变量的时候,如果对该变量的读写在不同的线程中,那么很可能会读取到某个值的高32位和另一个值的低32位。volatile变量的正确使用方式包括: 确保它们自身状态的可见性,确保它们所引用对象的状态的可见性,以及标识一些重要的程序生命周期事件的发生(例如,初始化或者关闭)。死锁、饥饿和活锁等问题都是活跃性问题。正如“除非需要更高的可见性,否则应将所有的域都声明为私有域”是一个良好的编程习惯,“除非需要某个域是可变的,否则应将其声明为final域”也是一个良好的编程习惯。
2023-08-01 09:16:54
375
原创 JVM之内存与垃圾回收篇3
Object中定义了finalize方法,可以被覆写。永远不要主动调用对象的finalize方法,这个应该交由垃圾收集器调用。理由如下:(1)在finalize时可能会导致对象复活。(2)finalize的执行时刻是没有保障的,完全由GC线程决定。极端情况下,如果不发生GC,那么finalize方法永远不会执行。(3)一个糟糕的finalize方法严重影响GC的性能。虚拟机中的对象存在三种状态:① 可触及的:从根节点开始,可以到达这个对象。
2023-07-21 15:11:29
687
原创 JVM之内存与垃圾回收篇2
基于栈式架构的虚拟机使用的零地址指令更加紧凑,但是完成一项操作的时候必然要使用更多的入栈和出栈指令,这时就意味着将需要更多的指令分派次数(instruction dispatch)和内存读写次数。如果Java虚拟机栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那么Java虚拟机会抛出。动态链接:如果被调用方法在编译期无法确定下来,换言之,只能在程序运行期将调用方法的符号引用转换为直接引用,这种引用转换过程具有动态性,因此也被称为动态链接。
2023-07-15 21:37:41
2343
原创 JVM学习之内存与垃圾回收篇1
隔离类加载器修改类加载方式扩展加载源防止源码泄漏继承抽象类, 建议把自定义的类加载逻辑放在方法中。如果没有特别复杂的需求,可以直接继承URLClassLoader,这样可以避免自己去写findClass方法及其获取字节码流的方式,使自定义类加载器编写更加简洁。
2023-07-14 18:38:45
3050
原创 JUC之ThreadLocal
ThreadLocal实现线程隔离不在于它自己本身,而在于ThreadLocalMap,所以ThreadLocal可以只初始化一次,只分配一次存储空间就可以了。无需作为成员变量多次被初始化。建议把ThreadLocal修饰为static。使用完之后需要显示调用remove。【声明为static】
2023-07-08 12:57:19
324
原创 JUC之CAS和原子操作类
通过一个demo来了解AtomicInteger的使用。以一种线程安全的方式操作非线程安全对象内的某些字段。版本号和戳记流水机制。
2023-06-28 20:23:31
470
原创 JUC之CompletableFuture
就是抛出的异常不一样。join不需要使用方显示地捕获异常。带Async后缀和不带后缀的api的区别。(2) 多个任务前后依赖可以组合处理。结合线程池,可以提升程序的运算效率。(3)选择计算速度最快的那个线程。(1) 缺少完成时的回调通知。(2)isDone通常会轮询。(1) get方法阻塞。
2023-06-19 23:56:10
291
ID3源码分析
2017-05-21
java调用weka
2017-04-27
jsp之一个简单的计算器
2016-11-05
操作系统之作业调度
2016-08-09
死锁预防避免检测处理
2016-08-09
谭浩强C语言对应C语言课程PPT.zip
2020-05-26
c#的套接字编程 System.Net.Sockets.SocketException
2016-10-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人