- 博客(372)
- 资源 (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 762
原创 程序员的自我修养——链接、装载和库
段表字符串用来保存段表中用到的字符串,最常见的就是段名(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 749
原创 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 1473
原创 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 2167
原创 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 1189
原创 STM32基础概念
ST 是意法半导体,为公司名称,是SOC厂商。M 是Microelectronics 的缩写。32 表示32 位。STM32 就是指ST 公司开发的32 位微控制器。
2023-12-28 13:50:23 420
原创 [CustomMessages] section
CustomMessages] section用来定义自定义的一些{cm:}常量.一个定义和使用的例子。CustomMessages是支持带参数的,从1%到9%。支持重排列参数(例如,2%移动到了1%前面),也支持重复的参数(例如,1% …1% 2% )。在有参数的message中, 用两个连续的“%”来嵌入一个“%”,“%n”会创建一个line break。
2023-11-30 15:31:44 895
原创 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 2348
原创 QT基础学习笔记
跨平台,几乎支持所有的平台接口设计良好,使用简单一定程度上简化了内存回收机制开发效率高,能够快速的构建应用程序。社区氛围良好,市场份额上升支持嵌入式开发定义信号singals后面的函数都可以作为信号,信号只有声明,没有实现。Q_OBJECTpublic:signals:定义槽后面的函数都可以作为slot,slot需要有实现。Q_OBJECTpublic:signals:qDebug()
2023-11-01 20:34:26 335
原创 Effective Cpp
当编写一个copying函数的时候,请确保:(1)复制所有的local成员变量。经验: 只有当class内至少有一个virtual函数的时候,才为这个class声明virtual 析构函数。如果是允许派生的,这回影响类内声明的函数,尤其是析构函数——因为要考虑析构函数是否被设计成virtual的。static_cast:为(*this)添加const,指明调用的是const版本的函数,避免递归不退出。如果是继承某个父类的,会受到父类的设计约束,特别是virtual或者non-virtual的影响。
2023-10-22 20:37:21 136
原创 Java并发编程实战——结构化并发应用程序2
在Java的API或语言规范中,并没有将中断和任何取消语义关联起来,但实际上,如果在取消之外的其他操作中使用中断都是不合适的,并且很难支撑起更大的应用。线程的所有权是不可以传递的:应用程序可以拥有服务,服务也可以拥有工作者线程,但是应用程序并不能拥有工作者线程,因此应用程序不能直接停止工作者线程。对于持有线程的服务,只要服务的存在时间大于创建线程的方法的存在时间,那么就应该提供生命周期方法。由于每个线程拥有各自的中断策略,因此除非你知道中断对该线程的含义,否则就不应该中断这个线程。
2023-08-16 16:09:50 267
原创 Java并发编程实战——结构化并发应用程序
(2)Timer执行所有的定时任务时只会创建一个线程。如果有足够多的线程使所有的CPU保持忙碌状态,那么再创建更多的线程反而会降低性能。在一定范围内,增加线程可以提高系统的吞吐率,但是如果超出了这个范围,再创建更多的线程会降低程序的执行速度。Executor基于生产者-消费者模式,提交任务的操作相当于生产者(生成待完成的工作单元),执行任务的线程相当于消费者(执行完这些工作单元)。只有大量相互独立且同构的任务可以并发进行处理时,才能体现出将程序的工作负载分配到多个任务中带来的真正性能提升。
2023-08-09 17:51:35 855
原创 我的待办待办~
hashmap源码,rehash在并发情况下有什么问题,concurrentHashmap源码,具体segment怎么上锁。hdfs rpc的实现,reactor设计模式在rpc的具体过程。一个进程没反应你要咋办,后来暗示我jstack那些命令,我并不会。wait和notify实现一个具体的情况(忘记具体的)aqs的实现还有多线程里我根本我听过的某些名词实现。编程题:用链表和map实现一个lru处理写的过程。跳表实现细节,建议我去看java封装的跳表。java多线程读锁写锁。linux分析日志命令。
2023-08-03 21:50:22 110
原创 Java并发编程实战——基础知识2
ListHelper只是带来了同步的假象,尽管所有的链表操作都被声明为了synchronized,但是使用了不同的锁,这意味着putIfAbsent相对于List的其他操作来说并不是原子的,因此无法确保putIfAbsent执行时另一个线程不会修改链表。使用私有的锁对象而不是对象的内置锁,有诸多优点:(1)私有的锁对象可以将锁封装起来,使客户代码无法得到锁,但客户代码可以通过公有方法来访问锁,以便参与到它的同步策略中。当一个对象被封装到另一个对象中时,能够访问被封装的对象的所有代码路径都是已知的。
2023-08-01 14:48:53 438
原创 Java并发编程实战——基础知识
当读取一个非volatie类型的long变量的时候,如果对该变量的读写在不同的线程中,那么很可能会读取到某个值的高32位和另一个值的低32位。volatile变量的正确使用方式包括: 确保它们自身状态的可见性,确保它们所引用对象的状态的可见性,以及标识一些重要的程序生命周期事件的发生(例如,初始化或者关闭)。死锁、饥饿和活锁等问题都是活跃性问题。正如“除非需要更高的可见性,否则应将所有的域都声明为私有域”是一个良好的编程习惯,“除非需要某个域是可变的,否则应将其声明为final域”也是一个良好的编程习惯。
2023-08-01 09:16:54 321
原创 JVM之内存与垃圾回收篇3
Object中定义了finalize方法,可以被覆写。永远不要主动调用对象的finalize方法,这个应该交由垃圾收集器调用。理由如下:(1)在finalize时可能会导致对象复活。(2)finalize的执行时刻是没有保障的,完全由GC线程决定。极端情况下,如果不发生GC,那么finalize方法永远不会执行。(3)一个糟糕的finalize方法严重影响GC的性能。虚拟机中的对象存在三种状态:① 可触及的:从根节点开始,可以到达这个对象。
2023-07-21 15:11:29 672
原创 JVM之内存与垃圾回收篇2
基于栈式架构的虚拟机使用的零地址指令更加紧凑,但是完成一项操作的时候必然要使用更多的入栈和出栈指令,这时就意味着将需要更多的指令分派次数(instruction dispatch)和内存读写次数。如果Java虚拟机栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那么Java虚拟机会抛出。动态链接:如果被调用方法在编译期无法确定下来,换言之,只能在程序运行期将调用方法的符号引用转换为直接引用,这种引用转换过程具有动态性,因此也被称为动态链接。
2023-07-15 21:37:41 2295
原创 JVM学习之内存与垃圾回收篇1
隔离类加载器修改类加载方式扩展加载源防止源码泄漏继承抽象类, 建议把自定义的类加载逻辑放在方法中。如果没有特别复杂的需求,可以直接继承URLClassLoader,这样可以避免自己去写findClass方法及其获取字节码流的方式,使自定义类加载器编写更加简洁。
2023-07-14 18:38:45 3002
原创 JUC之ThreadLocal
ThreadLocal实现线程隔离不在于它自己本身,而在于ThreadLocalMap,所以ThreadLocal可以只初始化一次,只分配一次存储空间就可以了。无需作为成员变量多次被初始化。建议把ThreadLocal修饰为static。使用完之后需要显示调用remove。【声明为static】
2023-07-08 12:57:19 309
原创 JUC之CAS和原子操作类
通过一个demo来了解AtomicInteger的使用。以一种线程安全的方式操作非线程安全对象内的某些字段。版本号和戳记流水机制。
2023-06-28 20:23:31 441
原创 JUC之CompletableFuture
就是抛出的异常不一样。join不需要使用方显示地捕获异常。带Async后缀和不带后缀的api的区别。(2) 多个任务前后依赖可以组合处理。结合线程池,可以提升程序的运算效率。(3)选择计算速度最快的那个线程。(1) 缺少完成时的回调通知。(2)isDone通常会轮询。(1) get方法阻塞。
2023-06-19 23:56:10 242
原创 手写Spring渐进式源码实践
使用模板模式,统一使用核心方法的调用逻辑和标准定义,进而可以很好地实现后续步骤而不用关心某一方法的调用逻辑。按照统一方式执行,类的继承者只需要关心具体方法如何实现即可。
2023-03-12 00:24:51 1132 1
原创 程序设计原则
一个类值应该负责一个职责。客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象。依赖倒置的中心思想就是面向接口编程。依赖倒置基于如下设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构要比以细节为基础搭建的架构要稳定的多。在java中,抽象指的是接口或者抽象类,细节就是具体的实现类。
2022-11-03 22:51:32 418
原创 Effective Java 第二版 第5章 泛型、第6章 枚举和注解、第7章 方法
对于未被导出的方法(unexported method),作为包的创建者,你可以控制这个方法将在哪些情况下被调用。因此你可以,并且你也应该确保只将有效的参数值传递进来。因此,例外情况:在有些情况下,有效性检查非常expensive,或者根本是不切实际的,或者有效性检查已经隐含在计算过程中完成了。例如,Collections.sort(List), 列表中的所有对象都应该是可以相互比较的。排序过程中就会进行比较,提前检查列表中的元素是否可以相互比较是没有多少意义的。
2022-11-01 17:28:38 749
原创 Domain Driven Design 领域驱动设计
常见的应用程序分为presentation、application和infrastructure三层。application会很容变得臃肿庞大。对infrastructure的依赖也很高,如果基础能力想要进行一些升级操作也是比较困难的。比如说数据库升级是比较困难的。对上面的三层架构进行改进。
2022-10-23 20:30:25 591
原创 Effective Java 第二版 第8章 通用程序设计
上述代码的问题就在于suits调用了太多次的next,suits的next应该在外层循环调用。for-each循环就完美的避免了这种问题。值类很少会用多个实现编写,通常也是final的,并且很少有对应的接口。(2)如果对象属于基于类的框架(class-based framework),就应该使用相应的基类来引用这个对象。(1) 产生了太多的运行时错误,如果改为new的方式,那么这些运行时错误就变为了编译时的错误。通过使用标准类库,可以充分利用这些编写标准类库的专家的知识,以及在你之前的其他人的使用经验。
2022-10-08 20:56:12 307
原创 SpringBoot 小结
ControllerAdvice:控制器增强,放在类上面,此类提供了方法可以对controller进行功能增强。@DubboReference:在消费者端使用,应用远程服务,放在属性上面。@ResponseBody:放在方法上面,表示方法的返回值是数据,不是视图。放在启动类上面,指定扫描的包,为这个包中的所有接口都创建代理对象。放在属性上面,也可以放在构造方法上面,推荐放在构造方法上面。放在业务层实现类上面,创建Service对象,注入到容器。放在类上面,创建Controller对象,注入到容器中。
2022-09-13 20:06:32 803
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关注的人